1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-10 22:41:43 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot)
2025-08-08 16:37:44 +03:00
parent 0f98576a43
commit ca5e149111
13 changed files with 8844 additions and 8662 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -145,11 +145,6 @@ Function ExecuteSQLQuery(Val QueryText
, Val Connection = "" , Val Connection = ""
, Val Tls = "") Export , Val Tls = "") Export
OPI_TypeConversion.GetLine(QueryText, True);
OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
If IsConnector(Connection) Then If IsConnector(Connection) Then
CloseConnection = False; CloseConnection = False;
Connector = Connection; Connector = Connection;
@@ -162,14 +157,16 @@ Function ExecuteSQLQuery(Val QueryText
Return Connector; Return Connector;
EndIf; EndIf;
Result = Connector.Execute(QueryText, Parameters_, ForceResult); OPI_TypeConversion.GetLine(QueryText, True);
OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
Result = OPI_SQLQueries.ExecuteQueryWithProcessing(Connector, QueryText, ForceResult, Parameters_);
If CloseConnection Then If CloseConnection Then
CloseConnection(Connector); CloseConnection(Connector);
EndIf; EndIf;
Result = OPI_Tools.JsonToStructure(Result);
Return Result; Return Result;
EndFunction EndFunction
@@ -581,27 +578,28 @@ EndFunction
Function ProcessParameters(Val Parameters) Function ProcessParameters(Val Parameters)
If Not ValueIsFilled(Parameters) Then If Not ValueIsFilled(Parameters) Then
Return "[]"; Return New Array;
EndIf; EndIf;
Parameters_ = New Array;
OPI_TypeConversion.GetArray(Parameters); OPI_TypeConversion.GetArray(Parameters);
For N = 0 To Parameters.UBound() Do Counter = 0;
For Each Parameter In Parameters Do
CurrentParameter = Parameters[N]; CurrentParameter = ProcessParameter(Parameter);
CurrentParameter = OPI_Tools.JSONString(CurrentParameter, , False);
CurrentParameter = ProcessParameter(CurrentParameter); If StrStartsWith(CurrentParameter, "NOT JSON") Then
Raise StrTemplate("JSON validation error for parameter. Array position %1", Counter);
Else
Parameters_.Add(CurrentParameter);
EndIf;
Parameters[N] = CurrentParameter; Counter = Counter + 1;
EndDo; EndDo;
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
If StrStartsWith(Parameters_, "NOT JSON") Then
Raise "JSON parameter array validation error!";
EndIf;
Return Parameters_; Return Parameters_;
EndFunction EndFunction

View File

@@ -145,14 +145,6 @@ Function ExecuteSQLQuery(Val QueryText
, Val Connection = "" , Val Connection = ""
, Val Tls = "") Export , Val Tls = "") Export
OPI_TypeConversion.GetLine(QueryText, True);
OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
QueryText = GetBinaryDataFromString(QueryText);
Parameters_ = GetBinaryDataFromString(Parameters_);
If IsConnector(Connection) Then If IsConnector(Connection) Then
CloseConnection = False; CloseConnection = False;
Connector = Connection; Connector = Connection;
@@ -165,15 +157,16 @@ Function ExecuteSQLQuery(Val QueryText
Return Connector; Return Connector;
EndIf; EndIf;
Result = Connector.Execute(QueryText, Parameters_, ForceResult); OPI_TypeConversion.GetLine(QueryText, True);
Result = GetStringFromBinaryData(Result); OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
Result = OPI_SQLQueries.ExecuteQueryWithProcessing(Connector, QueryText, ForceResult, Parameters_);
If CloseConnection Then If CloseConnection Then
CloseConnection(Connector); CloseConnection(Connector);
EndIf; EndIf;
Result = OPI_Tools.JsonToStructure(Result);
Return Result; Return Result;
EndFunction EndFunction
@@ -575,32 +568,33 @@ EndFunction
Function ProcessParameters(Val Parameters) Function ProcessParameters(Val Parameters)
If Not ValueIsFilled(Parameters) Then If Not ValueIsFilled(Parameters) Then
Return "[]"; Return New Array;
EndIf; EndIf;
Parameters_ = New Array;
OPI_TypeConversion.GetArray(Parameters); OPI_TypeConversion.GetArray(Parameters);
For N = 0 To Parameters.UBound() Do Counter = 0;
For Each Parameter In Parameters Do
CurrentParameter = Parameters[N]; CurrentParameter = ProcessParameter(Parameter);
CurrentParameter = OPI_Tools.JSONString(CurrentParameter, , False);
CurrentParameter = ProcessParameter(CurrentParameter); If StrStartsWith(CurrentParameter, "NOT JSON") Then
Raise StrTemplate("JSON validation error for parameter. Array position %1", Counter);
Else
Parameters_.Add(CurrentParameter);
EndIf;
Parameters[N] = CurrentParameter; Counter = Counter + 1;
EndDo; EndDo;
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
If StrStartsWith(Parameters_, "NOT JSON") Then
Raise "JSON parameter array validation error!";
EndIf;
Return Parameters_; Return Parameters_;
EndFunction EndFunction
Function ProcessParameter(CurrentParameter) Function ProcessParameter(CurrentParameter, Embedded = False)
CurrentType = TypeOf(CurrentParameter); CurrentType = TypeOf(CurrentParameter);
@@ -611,10 +605,12 @@ Function ProcessParameter(CurrentParameter)
ElsIf CurrentType = Type("UUID") Then ElsIf CurrentType = Type("UUID") Then
CurrentParameter = String(CurrentParameter); CurrentParameter = String(CurrentParameter);
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("UUID", CurrentParameter));
ElsIf CurrentType = Type("Date") Then ElsIf CurrentType = Type("Date") Then
CurrentParameter = OPI_Tools.DateRFC3339(CurrentParameter); CurrentParameter = OPI_Tools.DateRFC3339(CurrentParameter);
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("TIMESTAMP", CurrentParameter));
ElsIf OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTEA") Then ElsIf OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTEA") Then
@@ -634,14 +630,17 @@ Function ProcessParameter(CurrentParameter)
Continue; Continue;
EndIf; EndIf;
CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue); CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue, True);
EndDo; EndDo;
Else Else
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
OPI_TypeConversion.GetLine(CurrentParameter); OPI_TypeConversion.GetLine(CurrentParameter);
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("VARCHAR", CurrentParameter));
EndIf; EndIf;
EndIf; EndIf;

View File

@@ -353,6 +353,28 @@ Function GetRecordsFilterStrucutre(Val Clear = False) Export
EndFunction EndFunction
Function ExecuteQueryWithProcessing(Connector, Val QueryText, Val ForceResult, Val Parameters) Export
QueryKey = Connector.InitQuery(QueryText, ForceResult);
For Each Parameter In Parameters Do
Adding = Connector.AddQueryParam(QueryKey, Parameter);
Adding = OPI_Tools.JsonToStructure(Adding);
If Not Adding["result"] Then
Return Adding;
EndIf;
EndDo;
Result = Connector.Execute(QueryKey);
Result = ProcessQueryResult(Connector, QueryKey, Result);
Return Result;
EndFunction
#EndRegion #EndRegion
#Region Private #Region Private
@@ -1211,6 +1233,45 @@ Function FormTopText(Val Count)
EndFunction EndFunction
Function ProcessQueryResult(Val Connector, Val QueryKey, Val Result)
Result = OPI_Tools.JsonToStructure(Result);
If Result["result"] Then
If Not Result["data"] Then
Result.Delete("data");
Return Result;
EndIf;
RowsAmount = Connector.GetQueryResultLength(QueryKey);
If Not TypeOf(RowsAmount) = Type("Number") Then
Return OPI_Tools.JsonToStructure(RowsAmount);
EndIf;
StingsArray = New Array;
For N = 0 To RowsAmount Do
CurrentRow = Connector.GetQueryResultRow(QueryKey, N);
StingsArray.Add(CurrentRow);
EndDo;
If StingsArray.Count() > 0 Then
TextJSON = StrTemplate("[%1]", StrConcat(StingsArray, "," + Chars.LF));
StingsArray = OPI_Tools.JSONToStructure(TextJSON);
EndIf;
Result.Insert("data", StingsArray);
EndIf;
Return Result;
EndFunction
Procedure SplitDataCollection(Val Record, FieldArray, ValuesArray) Procedure SplitDataCollection(Val Record, FieldArray, ValuesArray)
ErrorText = "Incorrect data set for updating"; ErrorText = "Incorrect data set for updating";
@@ -1472,6 +1533,10 @@ Function ПолучитьСтруктуруФильтраЗаписей(Val Пу
Return GetRecordsFilterStrucutre(Пустая); Return GetRecordsFilterStrucutre(Пустая);
EndFunction EndFunction
Function ВыполнитьЗапросСОбработкой(Коннектор, Val ТекстЗапроса, Val ФорсироватьРезультат, Val Параметры) Export
Return ExecuteQueryWithProcessing(Коннектор, ТекстЗапроса, ФорсироватьРезультат, Параметры);
EndFunction
Procedure ДобавитьКолонку(Схема, Val Имя, Val Тип) Export Procedure ДобавитьКолонку(Схема, Val Имя, Val Тип) Export
AddColoumn(Схема, Имя, Тип); AddColoumn(Схема, Имя, Тип);
EndProcedure EndProcedure

View File

@@ -145,11 +145,6 @@ Function ExecuteSQLQuery(Val QueryText
, Val Connection = "" , Val Connection = ""
, Val Tls = "") Export , Val Tls = "") Export
OPI_TypeConversion.GetLine(QueryText, True);
OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
If IsConnector(Connection) Then If IsConnector(Connection) Then
CloseConnection = False; CloseConnection = False;
Connector = Connection; Connector = Connection;
@@ -162,14 +157,16 @@ Function ExecuteSQLQuery(Val QueryText
Return Connector; Return Connector;
EndIf; EndIf;
Result = Connector.Execute(QueryText, Parameters_, ForceResult); OPI_TypeConversion.GetLine(QueryText, True);
OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
Result = OPI_SQLQueries.ExecuteQueryWithProcessing(Connector, QueryText, ForceResult, Parameters_);
If CloseConnection Then If CloseConnection Then
CloseConnection(Connector); CloseConnection(Connector);
EndIf; EndIf;
Result = OPI_Tools.JsonToStructure(Result);
Return Result; Return Result;
EndFunction EndFunction
@@ -581,27 +578,28 @@ EndFunction
Function ProcessParameters(Val Parameters) Function ProcessParameters(Val Parameters)
If Not ValueIsFilled(Parameters) Then If Not ValueIsFilled(Parameters) Then
Return "[]"; Return New Array;
EndIf; EndIf;
Parameters_ = New Array;
OPI_TypeConversion.GetArray(Parameters); OPI_TypeConversion.GetArray(Parameters);
For N = 0 To Parameters.UBound() Do Counter = 0;
For Each Parameter In Parameters Do
CurrentParameter = Parameters[N]; CurrentParameter = ProcessParameter(Parameter);
CurrentParameter = OPI_Tools.JSONString(CurrentParameter, , False);
CurrentParameter = ProcessParameter(CurrentParameter); If StrStartsWith(CurrentParameter, "NOT JSON") Then
Raise StrTemplate("JSON validation error for parameter. Array position %1", Counter);
Else
Parameters_.Add(CurrentParameter);
EndIf;
Parameters[N] = CurrentParameter; Counter = Counter + 1;
EndDo; EndDo;
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
If StrStartsWith(Parameters_, "NOT JSON") Then
Raise "JSON parameter array validation error!";
EndIf;
Return Parameters_; Return Parameters_;
EndFunction EndFunction

View File

@@ -145,14 +145,6 @@ Function ExecuteSQLQuery(Val QueryText
, Val Connection = "" , Val Connection = ""
, Val Tls = "") Export , Val Tls = "") Export
OPI_TypeConversion.GetLine(QueryText, True);
OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
QueryText = GetBinaryDataFromString(QueryText);
Parameters_ = GetBinaryDataFromString(Parameters_);
If IsConnector(Connection) Then If IsConnector(Connection) Then
CloseConnection = False; CloseConnection = False;
Connector = Connection; Connector = Connection;
@@ -165,15 +157,16 @@ Function ExecuteSQLQuery(Val QueryText
Return Connector; Return Connector;
EndIf; EndIf;
Result = Connector.Execute(QueryText, Parameters_, ForceResult); OPI_TypeConversion.GetLine(QueryText, True);
Result = GetStringFromBinaryData(Result); OPI_TypeConversion.GetBoolean(ForceResult);
Parameters_ = ProcessParameters(Parameters);
Result = OPI_SQLQueries.ExecuteQueryWithProcessing(Connector, QueryText, ForceResult, Parameters_);
If CloseConnection Then If CloseConnection Then
CloseConnection(Connector); CloseConnection(Connector);
EndIf; EndIf;
Result = OPI_Tools.JsonToStructure(Result);
Return Result; Return Result;
EndFunction EndFunction
@@ -575,32 +568,33 @@ EndFunction
Function ProcessParameters(Val Parameters) Function ProcessParameters(Val Parameters)
If Not ValueIsFilled(Parameters) Then If Not ValueIsFilled(Parameters) Then
Return "[]"; Return New Array;
EndIf; EndIf;
Parameters_ = New Array;
OPI_TypeConversion.GetArray(Parameters); OPI_TypeConversion.GetArray(Parameters);
For N = 0 To Parameters.UBound() Do Counter = 0;
For Each Parameter In Parameters Do
CurrentParameter = Parameters[N]; CurrentParameter = ProcessParameter(Parameter);
CurrentParameter = OPI_Tools.JSONString(CurrentParameter, , False);
CurrentParameter = ProcessParameter(CurrentParameter); If StrStartsWith(CurrentParameter, "NOT JSON") Then
Raise StrTemplate("JSON validation error for parameter. Array position %1", Counter);
Else
Parameters_.Add(CurrentParameter);
EndIf;
Parameters[N] = CurrentParameter; Counter = Counter + 1;
EndDo; EndDo;
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
If StrStartsWith(Parameters_, "NOT JSON") Then
Raise "JSON parameter array validation error!";
EndIf;
Return Parameters_; Return Parameters_;
EndFunction EndFunction
Function ProcessParameter(CurrentParameter) Function ProcessParameter(CurrentParameter, Embedded = False)
CurrentType = TypeOf(CurrentParameter); CurrentType = TypeOf(CurrentParameter);
@@ -611,10 +605,12 @@ Function ProcessParameter(CurrentParameter)
ElsIf CurrentType = Type("UUID") Then ElsIf CurrentType = Type("UUID") Then
CurrentParameter = String(CurrentParameter); CurrentParameter = String(CurrentParameter);
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("UUID", CurrentParameter));
ElsIf CurrentType = Type("Date") Then ElsIf CurrentType = Type("Date") Then
CurrentParameter = OPI_Tools.DateRFC3339(CurrentParameter); CurrentParameter = OPI_Tools.DateRFC3339(CurrentParameter);
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("TIMESTAMP", CurrentParameter));
ElsIf OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTEA") Then ElsIf OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTEA") Then
@@ -634,14 +630,17 @@ Function ProcessParameter(CurrentParameter)
Continue; Continue;
EndIf; EndIf;
CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue); CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue, True);
EndDo; EndDo;
Else Else
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
OPI_TypeConversion.GetLine(CurrentParameter); OPI_TypeConversion.GetLine(CurrentParameter);
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("VARCHAR", CurrentParameter));
EndIf; EndIf;
EndIf; EndIf;

View File

@@ -353,6 +353,28 @@ Function GetRecordsFilterStrucutre(Val Clear = False) Export
EndFunction EndFunction
Function ExecuteQueryWithProcessing(Connector, Val QueryText, Val ForceResult, Val Parameters) Export
QueryKey = Connector.InitQuery(QueryText, ForceResult);
For Each Parameter In Parameters Do
Adding = Connector.AddQueryParam(QueryKey, Parameter);
Adding = OPI_Tools.JsonToStructure(Adding);
If Not Adding["result"] Then
Return Adding;
EndIf;
EndDo;
Result = Connector.Execute(QueryKey);
Result = ProcessQueryResult(Connector, QueryKey, Result);
Return Result;
EndFunction
#EndRegion #EndRegion
#Region Private #Region Private
@@ -1211,6 +1233,45 @@ Function FormTopText(Val Count)
EndFunction EndFunction
Function ProcessQueryResult(Val Connector, Val QueryKey, Val Result)
Result = OPI_Tools.JsonToStructure(Result);
If Result["result"] Then
If Not Result["data"] Then
Result.Delete("data");
Return Result;
EndIf;
RowsAmount = Connector.GetQueryResultLength(QueryKey);
If Not TypeOf(RowsAmount) = Type("Number") Then
Return OPI_Tools.JsonToStructure(RowsAmount);
EndIf;
StingsArray = New Array;
For N = 0 To RowsAmount Do
CurrentRow = Connector.GetQueryResultRow(QueryKey, N);
StingsArray.Add(CurrentRow);
EndDo;
If StingsArray.Count() > 0 Then
TextJSON = StrTemplate("[%1]", StrConcat(StingsArray, "," + Chars.LF));
StingsArray = OPI_Tools.JSONToStructure(TextJSON);
EndIf;
Result.Insert("data", StingsArray);
EndIf;
Return Result;
EndFunction
Procedure SplitDataCollection(Val Record, FieldArray, ValuesArray) Procedure SplitDataCollection(Val Record, FieldArray, ValuesArray)
ErrorText = "Incorrect data set for updating"; ErrorText = "Incorrect data set for updating";

View File

@@ -145,11 +145,6 @@
, Знач Соединение = "" , Знач Соединение = ""
, Знач Tls = "") Экспорт , Знач Tls = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
Параметры_ = ОбработатьПараметры(Параметры);
Если ЭтоКоннектор(Соединение) Тогда Если ЭтоКоннектор(Соединение) Тогда
ЗакрыватьСоединение = Ложь; ЗакрыватьСоединение = Ложь;
Коннектор = Соединение; Коннектор = Соединение;
@@ -162,14 +157,16 @@
Возврат Коннектор; Возврат Коннектор;
КонецЕсли; КонецЕсли;
Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат); OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
Параметры_ = ОбработатьПараметры(Параметры);
Результат = OPI_ЗапросыSQL.ВыполнитьЗапросСОбработкой(Коннектор, ТекстЗапроса, ФорсироватьРезультат, Параметры_);
Если ЗакрыватьСоединение Тогда Если ЗакрыватьСоединение Тогда
ЗакрытьСоединение(Коннектор); ЗакрытьСоединение(Коннектор);
КонецЕсли; КонецЕсли;
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
@@ -581,27 +578,28 @@
Функция ОбработатьПараметры(Знач Параметры) Функция ОбработатьПараметры(Знач Параметры)
Если Не ЗначениеЗаполнено(Параметры) Тогда Если Не ЗначениеЗаполнено(Параметры) Тогда
Возврат "[]"; Возврат Новый Массив;
КонецЕсли; КонецЕсли;
Параметры_ = Новый Массив;
OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры); OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры);
Для Н = 0 По Параметры.ВГраница() Цикл Счетчик = 0;
Для Каждого Параметр Из Параметры Цикл
ТекущийПараметр = Параметры[Н]; ТекущийПараметр = ОбработатьПараметр(Параметр);
ТекущийПараметр = OPI_Инструменты.JSONСтрокой(ТекущийПараметр, , Ложь);
ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр); Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда
ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик);
Иначе
Параметры_.Добавить(ТекущийПараметр);
КонецЕсли;
Параметры[Н] = ТекущийПараметр; Счетчик = Счетчик + 1;
КонецЦикла; КонецЦикла;
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь);
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
ВызватьИсключение "Ошибка валидации JSON массива параметров!";
КонецЕсли;
Возврат Параметры_; Возврат Параметры_;
КонецФункции КонецФункции

View File

@@ -145,14 +145,6 @@
, Знач Соединение = "" , Знач Соединение = ""
, Знач Tls = "") Экспорт , Знач Tls = "") Экспорт
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
Параметры_ = ОбработатьПараметры(Параметры);
ТекстЗапроса = ПолучитьДвоичныеДанныеИзСтроки(ТекстЗапроса);
Параметры_ = ПолучитьДвоичныеДанныеИзСтроки(Параметры_);
Если ЭтоКоннектор(Соединение) Тогда Если ЭтоКоннектор(Соединение) Тогда
ЗакрыватьСоединение = Ложь; ЗакрыватьСоединение = Ложь;
Коннектор = Соединение; Коннектор = Соединение;
@@ -165,15 +157,16 @@
Возврат Коннектор; Возврат Коннектор;
КонецЕсли; КонецЕсли;
Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат); OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат); OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
Параметры_ = ОбработатьПараметры(Параметры);
Результат = OPI_ЗапросыSQL.ВыполнитьЗапросСОбработкой(Коннектор, ТекстЗапроса, ФорсироватьРезультат, Параметры_);
Если ЗакрыватьСоединение Тогда Если ЗакрыватьСоединение Тогда
ЗакрытьСоединение(Коннектор); ЗакрытьСоединение(Коннектор);
КонецЕсли; КонецЕсли;
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
@@ -575,32 +568,33 @@
Функция ОбработатьПараметры(Знач Параметры) Функция ОбработатьПараметры(Знач Параметры)
Если Не ЗначениеЗаполнено(Параметры) Тогда Если Не ЗначениеЗаполнено(Параметры) Тогда
Возврат "[]"; Возврат Новый Массив;
КонецЕсли; КонецЕсли;
Параметры_ = Новый Массив;
OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры); OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры);
Для Н = 0 По Параметры.ВГраница() Цикл Счетчик = 0;
Для Каждого Параметр Из Параметры Цикл
ТекущийПараметр = Параметры[Н]; ТекущийПараметр = ОбработатьПараметр(Параметр);
ТекущийПараметр = OPI_Инструменты.JSONСтрокой(ТекущийПараметр, , Ложь);
ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр); Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда
ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик);
Иначе
Параметры_.Добавить(ТекущийПараметр);
КонецЕсли;
Параметры[Н] = ТекущийПараметр; Счетчик = Счетчик + 1;
КонецЦикла; КонецЦикла;
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь);
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
ВызватьИсключение "Ошибка валидации JSON массива параметров!";
КонецЕсли;
Возврат Параметры_; Возврат Параметры_;
КонецФункции КонецФункции
Функция ОбработатьПараметр(ТекущийПараметр) Функция ОбработатьПараметр(ТекущийПараметр, Вложенный = Ложь)
ТекущийТип = ТипЗнч(ТекущийПараметр); ТекущийТип = ТипЗнч(ТекущийПараметр);
@@ -611,10 +605,12 @@
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
ТекущийПараметр = Строка(ТекущийПараметр); ТекущийПараметр = Строка(ТекущийПараметр);
ТекущийПараметр = ?(Вложенный, ТекущийПараметр, Новый Структура("UUID", ТекущийПараметр));
ИначеЕсли ТекущийТип = Тип("Дата") Тогда ИначеЕсли ТекущийТип = Тип("Дата") Тогда
ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр); ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр);
ТекущийПараметр = ?(Вложенный, ТекущийПараметр, Новый Структура("TIMESTAMP", ТекущийПараметр));
ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда
@@ -634,14 +630,17 @@
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение); ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение, Истина);
КонецЦикла; КонецЦикла;
Иначе Иначе
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр); OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
ТекущийПараметр = ?(Вложенный, ТекущийПараметр, Новый Структура("VARCHAR", ТекущийПараметр));
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;

View File

@@ -353,6 +353,28 @@
КонецФункции КонецФункции
Функция ВыполнитьЗапросСОбработкой(Коннектор, Знач ТекстЗапроса, Знач ФорсироватьРезультат, Знач Параметры) Экспорт
КлючЗапроса = Коннектор.InitQuery(ТекстЗапроса, ФорсироватьРезультат);
Для Каждого Параметр Из Параметры Цикл
Добавление = Коннектор.AddQueryParam(КлючЗапроса, Параметр);
Добавление = OPI_Инструменты.JsonВСтруктуру(Добавление);
Если Не Добавление["result"] Тогда
Возврат Добавление;
КонецЕсли;
КонецЦикла;
Результат = Коннектор.Execute(КлючЗапроса);
Результат = ОбработатьРезультатЗапроса(Коннектор, КлючЗапроса, Результат);
Возврат Результат;
КонецФункции
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -1211,6 +1233,45 @@
КонецФункции КонецФункции
Функция ОбработатьРезультатЗапроса(Знач Коннектор, Знач КлючЗапроса, Знач Результат)
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Если Результат["result"] Тогда
Если Не Результат["data"] Тогда
Результат.Удалить("data");
Возврат Результат;
КонецЕсли;
КоличествоСтрок = Коннектор.GetQueryResultLength(КлючЗапроса);
Если Не ТипЗнч(КоличествоСтрок) = Тип("Число") Тогда
Возврат OPI_Инструменты.JsonВСтруктуру(КоличествоСтрок);
КонецЕсли;
МассивСтрок = Новый Массив;
Для Н = 0 По КоличествоСтрок Цикл
ТекущаяСтрока = Коннектор.GetQueryResultRow(КлючЗапроса, Н);
МассивСтрок.Добавить(ТекущаяСтрока);
КонецЦикла;
Если МассивСтрок.Количество() > 0 Тогда
ТекстJSON = СтрШаблон("[%1]", СтрСоединить(МассивСтрок, "," + Символы.ПС));
МассивСтрок = OPI_Инструменты.JSONВСтруктуру(ТекстJSON);
КонецЕсли;
Результат.Вставить("data", МассивСтрок);
КонецЕсли;
Возврат Результат;
КонецФункции
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений) Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)
ТекстОшибки = "Некорректный набор данных для обновления"; ТекстОшибки = "Некорректный набор данных для обновления";
@@ -1472,6 +1533,10 @@ Function GetRecordsFilterStrucutre(Val Clear = False) Export
Return ПолучитьСтруктуруФильтраЗаписей(Clear); Return ПолучитьСтруктуруФильтраЗаписей(Clear);
EndFunction EndFunction
Function ExecuteQueryWithProcessing(Connector, Val QueryText, Val ForceResult, Val Parameters) Export
Return ВыполнитьЗапросСОбработкой(Connector, QueryText, ForceResult, Parameters);
EndFunction
Procedure AddColoumn(Scheme, Val Name, Val Type) Export Procedure AddColoumn(Scheme, Val Name, Val Type) Export
ДобавитьКолонку(Scheme, Name, Type); ДобавитьКолонку(Scheme, Name, Type);
EndProcedure EndProcedure

View File

@@ -156,7 +156,7 @@
Если Не ЭтоКоннектор(Коннектор) Тогда Если Не ЭтоКоннектор(Коннектор) Тогда
Возврат Коннектор; Возврат Коннектор;
КонецЕсли; КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина); OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат); OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
@@ -593,11 +593,11 @@
Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда
ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик); ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик);
Иначе Иначе
Параметры_.Добавить(ТекущийПараметр); Параметры_.Добавить(ТекущийПараметр);
КонецЕсли; КонецЕсли;
Счетчик = Счетчик + 1; Счетчик = Счетчик + 1;
КонецЦикла; КонецЦикла;
Возврат Параметры_; Возврат Параметры_;

View File

@@ -74,7 +74,7 @@
КонецЕсли; КонецЕсли;
Коннектор.ConnectionString = СтрокаПодключения; Коннектор.ConnectionString = СтрокаПодключения;
Результат = Коннектор.Connect(); Результат = Коннектор.Connect();
Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь); Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь);
@@ -156,7 +156,7 @@
Если Не ЭтоКоннектор(Коннектор) Тогда Если Не ЭтоКоннектор(Коннектор) Тогда
Возврат Коннектор; Возврат Коннектор;
КонецЕсли; КонецЕсли;
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина); OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат); OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
@@ -166,7 +166,7 @@
Если ЗакрыватьСоединение Тогда Если ЗакрыватьСоединение Тогда
ЗакрытьСоединение(Коннектор); ЗакрытьСоединение(Коннектор);
КонецЕсли; КонецЕсли;
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
@@ -583,11 +583,11 @@
Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда
ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик); ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик);
Иначе Иначе
Параметры_.Добавить(ТекущийПараметр); Параметры_.Добавить(ТекущийПараметр);
КонецЕсли; КонецЕсли;
Счетчик = Счетчик + 1; Счетчик = Счетчик + 1;
КонецЦикла; КонецЦикла;
Возврат Параметры_; Возврат Параметры_;
@@ -637,10 +637,10 @@
Иначе Иначе
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр); OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
ТекущийПараметр = ?(Вложенный, ТекущийПараметр, Новый Структура("VARCHAR", ТекущийПараметр)); ТекущийПараметр = ?(Вложенный, ТекущийПараметр, Новый Структура("VARCHAR", ТекущийПараметр));
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;

View File

@@ -356,23 +356,23 @@
Функция ВыполнитьЗапросСОбработкой(Коннектор, Знач ТекстЗапроса, Знач ФорсироватьРезультат, Знач Параметры) Экспорт Функция ВыполнитьЗапросСОбработкой(Коннектор, Знач ТекстЗапроса, Знач ФорсироватьРезультат, Знач Параметры) Экспорт
КлючЗапроса = Коннектор.InitQuery(ТекстЗапроса, ФорсироватьРезультат); КлючЗапроса = Коннектор.InitQuery(ТекстЗапроса, ФорсироватьРезультат);
Для Каждого Параметр Из Параметры Цикл Для Каждого Параметр Из Параметры Цикл
Добавление = Коннектор.AddQueryParam(КлючЗапроса, Параметр); Добавление = Коннектор.AddQueryParam(КлючЗапроса, Параметр);
Добавление = OPI_Инструменты.JsonВСтруктуру(Добавление); Добавление = OPI_Инструменты.JsonВСтруктуру(Добавление);
Если Не Добавление["result"] Тогда Если Не Добавление["result"] Тогда
Возврат Добавление; Возврат Добавление;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
Результат = Коннектор.Execute(КлючЗапроса); Результат = Коннектор.Execute(КлючЗапроса);
Результат = ОбработатьРезультатЗапроса(Коннектор, КлючЗапроса, Результат); Результат = ОбработатьРезультатЗапроса(Коннектор, КлючЗапроса, Результат);
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
#КонецОбласти #КонецОбласти
@@ -1236,40 +1236,40 @@
Функция ОбработатьРезультатЗапроса(Знач Коннектор, Знач КлючЗапроса, Знач Результат) Функция ОбработатьРезультатЗапроса(Знач Коннектор, Знач КлючЗапроса, Знач Результат)
Результат = OPI_Инструменты.JsonВСтруктуру(Результат); Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Если Результат["result"] Тогда Если Результат["result"] Тогда
Если Не Результат["data"] Тогда Если Не Результат["data"] Тогда
Результат.Удалить("data"); Результат.Удалить("data");
Возврат Результат; Возврат Результат;
КонецЕсли; КонецЕсли;
КоличествоСтрок = Коннектор.GetQueryResultLength(КлючЗапроса); КоличествоСтрок = Коннектор.GetQueryResultLength(КлючЗапроса);
Если Не ТипЗнч(КоличествоСтрок) = Тип("Число") Тогда Если Не ТипЗнч(КоличествоСтрок) = Тип("Число") Тогда
Возврат OPI_Инструменты.JsonВСтруктуру(КоличествоСтрок); Возврат OPI_Инструменты.JsonВСтруктуру(КоличествоСтрок);
КонецЕсли; КонецЕсли;
МассивСтрок = Новый Массив; МассивСтрок = Новый Массив;
Для Н = 0 По КоличествоСтрок Цикл Для Н = 0 По КоличествоСтрок Цикл
ТекущаяСтрока = Коннектор.GetQueryResultRow(КлючЗапроса, Н); ТекущаяСтрока = Коннектор.GetQueryResultRow(КлючЗапроса, Н);
МассивСтрок.Добавить(ТекущаяСтрока); МассивСтрок.Добавить(ТекущаяСтрока);
КонецЦикла; КонецЦикла;
Если МассивСтрок.Количество() > 0 Тогда Если МассивСтрок.Количество() > 0 Тогда
ТекстJSON = СтрШаблон("[%1]", СтрСоединить(МассивСтрок, "," + Символы.ПС)); ТекстJSON = СтрШаблон("[%1]", СтрСоединить(МассивСтрок, "," + Символы.ПС));
МассивСтрок = OPI_Инструменты.JSONВСтруктуру(ТекстJSON); МассивСтрок = OPI_Инструменты.JSONВСтруктуру(ТекстJSON);
КонецЕсли; КонецЕсли;
Результат.Вставить("data", МассивСтрок); Результат.Вставить("data", МассивСтрок);
КонецЕсли; КонецЕсли;
Возврат Результат; Возврат Результат;
КонецФункции КонецФункции
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений) Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)