You've already forked OpenIntegrations
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:
16984
service/dictionaries/en.json
vendored
16984
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
36
src/en/OInt/core/Modules/OPI_MSSQL.os
vendored
36
src/en/OInt/core/Modules/OPI_MSSQL.os
vendored
@@ -145,11 +145,6 @@ Function ExecuteSQLQuery(Val QueryText
|
||||
, Val Connection = ""
|
||||
, Val Tls = "") Export
|
||||
|
||||
OPI_TypeConversion.GetLine(QueryText, True);
|
||||
OPI_TypeConversion.GetBoolean(ForceResult);
|
||||
|
||||
Parameters_ = ProcessParameters(Parameters);
|
||||
|
||||
If IsConnector(Connection) Then
|
||||
CloseConnection = False;
|
||||
Connector = Connection;
|
||||
@@ -162,14 +157,16 @@ Function ExecuteSQLQuery(Val QueryText
|
||||
Return Connector;
|
||||
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
|
||||
CloseConnection(Connector);
|
||||
EndIf;
|
||||
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
@@ -581,27 +578,28 @@ EndFunction
|
||||
Function ProcessParameters(Val Parameters)
|
||||
|
||||
If Not ValueIsFilled(Parameters) Then
|
||||
Return "[]";
|
||||
Return New Array;
|
||||
EndIf;
|
||||
|
||||
Parameters_ = New Array;
|
||||
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;
|
||||
|
||||
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
|
||||
|
||||
If StrStartsWith(Parameters_, "NOT JSON") Then
|
||||
Raise "JSON parameter array validation error!";
|
||||
EndIf;
|
||||
|
||||
Return Parameters_;
|
||||
|
||||
EndFunction
|
||||
|
49
src/en/OInt/core/Modules/OPI_PostgreSQL.os
vendored
49
src/en/OInt/core/Modules/OPI_PostgreSQL.os
vendored
@@ -145,14 +145,6 @@ Function ExecuteSQLQuery(Val QueryText
|
||||
, Val Connection = ""
|
||||
, 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
|
||||
CloseConnection = False;
|
||||
Connector = Connection;
|
||||
@@ -165,15 +157,16 @@ Function ExecuteSQLQuery(Val QueryText
|
||||
Return Connector;
|
||||
EndIf;
|
||||
|
||||
Result = Connector.Execute(QueryText, Parameters_, ForceResult);
|
||||
Result = GetStringFromBinaryData(Result);
|
||||
OPI_TypeConversion.GetLine(QueryText, True);
|
||||
OPI_TypeConversion.GetBoolean(ForceResult);
|
||||
|
||||
Parameters_ = ProcessParameters(Parameters);
|
||||
Result = OPI_SQLQueries.ExecuteQueryWithProcessing(Connector, QueryText, ForceResult, Parameters_);
|
||||
|
||||
If CloseConnection Then
|
||||
CloseConnection(Connector);
|
||||
EndIf;
|
||||
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
@@ -575,32 +568,33 @@ EndFunction
|
||||
Function ProcessParameters(Val Parameters)
|
||||
|
||||
If Not ValueIsFilled(Parameters) Then
|
||||
Return "[]";
|
||||
Return New Array;
|
||||
EndIf;
|
||||
|
||||
Parameters_ = New Array;
|
||||
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;
|
||||
|
||||
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
|
||||
|
||||
If StrStartsWith(Parameters_, "NOT JSON") Then
|
||||
Raise "JSON parameter array validation error!";
|
||||
EndIf;
|
||||
|
||||
Return Parameters_;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function ProcessParameter(CurrentParameter)
|
||||
Function ProcessParameter(CurrentParameter, Embedded = False)
|
||||
|
||||
CurrentType = TypeOf(CurrentParameter);
|
||||
|
||||
@@ -611,10 +605,12 @@ Function ProcessParameter(CurrentParameter)
|
||||
ElsIf CurrentType = Type("UUID") Then
|
||||
|
||||
CurrentParameter = String(CurrentParameter);
|
||||
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("UUID", CurrentParameter));
|
||||
|
||||
ElsIf CurrentType = Type("Date") Then
|
||||
|
||||
CurrentParameter = OPI_Tools.DateRFC3339(CurrentParameter);
|
||||
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("TIMESTAMP", CurrentParameter));
|
||||
|
||||
ElsIf OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTEA") Then
|
||||
|
||||
@@ -634,14 +630,17 @@ Function ProcessParameter(CurrentParameter)
|
||||
Continue;
|
||||
EndIf;
|
||||
|
||||
CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue);
|
||||
CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue, True);
|
||||
|
||||
EndDo;
|
||||
|
||||
Else
|
||||
|
||||
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
|
||||
|
||||
OPI_TypeConversion.GetLine(CurrentParameter);
|
||||
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("VARCHAR", CurrentParameter));
|
||||
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
65
src/en/OInt/tools/Modules/OPI_SQLQueries.os
vendored
65
src/en/OInt/tools/Modules/OPI_SQLQueries.os
vendored
@@ -353,6 +353,28 @@ Function GetRecordsFilterStrucutre(Val Clear = False) Export
|
||||
|
||||
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
|
||||
|
||||
#Region Private
|
||||
@@ -1211,6 +1233,45 @@ Function FormTopText(Val Count)
|
||||
|
||||
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)
|
||||
|
||||
ErrorText = "Incorrect data set for updating";
|
||||
@@ -1472,6 +1533,10 @@ Function ПолучитьСтруктуруФильтраЗаписей(Val Пу
|
||||
Return GetRecordsFilterStrucutre(Пустая);
|
||||
EndFunction
|
||||
|
||||
Function ВыполнитьЗапросСОбработкой(Коннектор, Val ТекстЗапроса, Val ФорсироватьРезультат, Val Параметры) Export
|
||||
Return ExecuteQueryWithProcessing(Коннектор, ТекстЗапроса, ФорсироватьРезультат, Параметры);
|
||||
EndFunction
|
||||
|
||||
Procedure ДобавитьКолонку(Схема, Val Имя, Val Тип) Export
|
||||
AddColoumn(Схема, Имя, Тип);
|
||||
EndProcedure
|
||||
|
@@ -145,11 +145,6 @@ Function ExecuteSQLQuery(Val QueryText
|
||||
, Val Connection = ""
|
||||
, Val Tls = "") Export
|
||||
|
||||
OPI_TypeConversion.GetLine(QueryText, True);
|
||||
OPI_TypeConversion.GetBoolean(ForceResult);
|
||||
|
||||
Parameters_ = ProcessParameters(Parameters);
|
||||
|
||||
If IsConnector(Connection) Then
|
||||
CloseConnection = False;
|
||||
Connector = Connection;
|
||||
@@ -162,14 +157,16 @@ Function ExecuteSQLQuery(Val QueryText
|
||||
Return Connector;
|
||||
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
|
||||
CloseConnection(Connector);
|
||||
EndIf;
|
||||
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
@@ -581,27 +578,28 @@ EndFunction
|
||||
Function ProcessParameters(Val Parameters)
|
||||
|
||||
If Not ValueIsFilled(Parameters) Then
|
||||
Return "[]";
|
||||
Return New Array;
|
||||
EndIf;
|
||||
|
||||
Parameters_ = New Array;
|
||||
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;
|
||||
|
||||
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
|
||||
|
||||
If StrStartsWith(Parameters_, "NOT JSON") Then
|
||||
Raise "JSON parameter array validation error!";
|
||||
EndIf;
|
||||
|
||||
Return Parameters_;
|
||||
|
||||
EndFunction
|
||||
|
@@ -145,14 +145,6 @@ Function ExecuteSQLQuery(Val QueryText
|
||||
, Val Connection = ""
|
||||
, 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
|
||||
CloseConnection = False;
|
||||
Connector = Connection;
|
||||
@@ -165,15 +157,16 @@ Function ExecuteSQLQuery(Val QueryText
|
||||
Return Connector;
|
||||
EndIf;
|
||||
|
||||
Result = Connector.Execute(QueryText, Parameters_, ForceResult);
|
||||
Result = GetStringFromBinaryData(Result);
|
||||
OPI_TypeConversion.GetLine(QueryText, True);
|
||||
OPI_TypeConversion.GetBoolean(ForceResult);
|
||||
|
||||
Parameters_ = ProcessParameters(Parameters);
|
||||
Result = OPI_SQLQueries.ExecuteQueryWithProcessing(Connector, QueryText, ForceResult, Parameters_);
|
||||
|
||||
If CloseConnection Then
|
||||
CloseConnection(Connector);
|
||||
EndIf;
|
||||
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
@@ -575,32 +568,33 @@ EndFunction
|
||||
Function ProcessParameters(Val Parameters)
|
||||
|
||||
If Not ValueIsFilled(Parameters) Then
|
||||
Return "[]";
|
||||
Return New Array;
|
||||
EndIf;
|
||||
|
||||
Parameters_ = New Array;
|
||||
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;
|
||||
|
||||
Parameters_ = OPI_Tools.JSONString(Parameters, , False);
|
||||
|
||||
If StrStartsWith(Parameters_, "NOT JSON") Then
|
||||
Raise "JSON parameter array validation error!";
|
||||
EndIf;
|
||||
|
||||
Return Parameters_;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function ProcessParameter(CurrentParameter)
|
||||
Function ProcessParameter(CurrentParameter, Embedded = False)
|
||||
|
||||
CurrentType = TypeOf(CurrentParameter);
|
||||
|
||||
@@ -611,10 +605,12 @@ Function ProcessParameter(CurrentParameter)
|
||||
ElsIf CurrentType = Type("UUID") Then
|
||||
|
||||
CurrentParameter = String(CurrentParameter);
|
||||
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("UUID", CurrentParameter));
|
||||
|
||||
ElsIf CurrentType = Type("Date") Then
|
||||
|
||||
CurrentParameter = OPI_Tools.DateRFC3339(CurrentParameter);
|
||||
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("TIMESTAMP", CurrentParameter));
|
||||
|
||||
ElsIf OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTEA") Then
|
||||
|
||||
@@ -634,14 +630,17 @@ Function ProcessParameter(CurrentParameter)
|
||||
Continue;
|
||||
EndIf;
|
||||
|
||||
CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue);
|
||||
CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue, True);
|
||||
|
||||
EndDo;
|
||||
|
||||
Else
|
||||
|
||||
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
|
||||
|
||||
OPI_TypeConversion.GetLine(CurrentParameter);
|
||||
CurrentParameter = ?(Embedded, CurrentParameter, New Structure("VARCHAR", CurrentParameter));
|
||||
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
@@ -353,6 +353,28 @@ Function GetRecordsFilterStrucutre(Val Clear = False) Export
|
||||
|
||||
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
|
||||
|
||||
#Region Private
|
||||
@@ -1211,6 +1233,45 @@ Function FormTopText(Val Count)
|
||||
|
||||
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)
|
||||
|
||||
ErrorText = "Incorrect data set for updating";
|
||||
|
36
src/ru/OInt/core/Modules/OPI_MSSQL.os
vendored
36
src/ru/OInt/core/Modules/OPI_MSSQL.os
vendored
@@ -145,11 +145,6 @@
|
||||
, Знач Соединение = ""
|
||||
, Знач Tls = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
|
||||
|
||||
Параметры_ = ОбработатьПараметры(Параметры);
|
||||
|
||||
Если ЭтоКоннектор(Соединение) Тогда
|
||||
ЗакрыватьСоединение = Ложь;
|
||||
Коннектор = Соединение;
|
||||
@@ -162,14 +157,16 @@
|
||||
Возврат Коннектор;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
|
||||
|
||||
Параметры_ = ОбработатьПараметры(Параметры);
|
||||
Результат = OPI_ЗапросыSQL.ВыполнитьЗапросСОбработкой(Коннектор, ТекстЗапроса, ФорсироватьРезультат, Параметры_);
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
ЗакрытьСоединение(Коннектор);
|
||||
КонецЕсли;
|
||||
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -581,27 +578,28 @@
|
||||
Функция ОбработатьПараметры(Знач Параметры)
|
||||
|
||||
Если Не ЗначениеЗаполнено(Параметры) Тогда
|
||||
Возврат "[]";
|
||||
Возврат Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
Параметры_ = Новый Массив;
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры);
|
||||
|
||||
Для Н = 0 По Параметры.ВГраница() Цикл
|
||||
Счетчик = 0;
|
||||
Для Каждого Параметр Из Параметры Цикл
|
||||
|
||||
ТекущийПараметр = Параметры[Н];
|
||||
ТекущийПараметр = ОбработатьПараметр(Параметр);
|
||||
ТекущийПараметр = OPI_Инструменты.JSONСтрокой(ТекущийПараметр, , Ложь);
|
||||
|
||||
ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр);
|
||||
Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда
|
||||
ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик);
|
||||
Иначе
|
||||
Параметры_.Добавить(ТекущийПараметр);
|
||||
КонецЕсли;
|
||||
|
||||
Параметры[Н] = ТекущийПараметр;
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь);
|
||||
|
||||
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
|
||||
ВызватьИсключение "Ошибка валидации JSON массива параметров!";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Параметры_;
|
||||
|
||||
КонецФункции
|
||||
|
49
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
49
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
@@ -145,14 +145,6 @@
|
||||
, Знач Соединение = ""
|
||||
, Знач Tls = "") Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
|
||||
|
||||
Параметры_ = ОбработатьПараметры(Параметры);
|
||||
|
||||
ТекстЗапроса = ПолучитьДвоичныеДанныеИзСтроки(ТекстЗапроса);
|
||||
Параметры_ = ПолучитьДвоичныеДанныеИзСтроки(Параметры_);
|
||||
|
||||
Если ЭтоКоннектор(Соединение) Тогда
|
||||
ЗакрыватьСоединение = Ложь;
|
||||
Коннектор = Соединение;
|
||||
@@ -165,15 +157,16 @@
|
||||
Возврат Коннектор;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = Коннектор.Execute(ТекстЗапроса, Параметры_, ФорсироватьРезультат);
|
||||
Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
|
||||
|
||||
Параметры_ = ОбработатьПараметры(Параметры);
|
||||
Результат = OPI_ЗапросыSQL.ВыполнитьЗапросСОбработкой(Коннектор, ТекстЗапроса, ФорсироватьРезультат, Параметры_);
|
||||
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
ЗакрытьСоединение(Коннектор);
|
||||
КонецЕсли;
|
||||
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -575,32 +568,33 @@
|
||||
Функция ОбработатьПараметры(Знач Параметры)
|
||||
|
||||
Если Не ЗначениеЗаполнено(Параметры) Тогда
|
||||
Возврат "[]";
|
||||
Возврат Новый Массив;
|
||||
КонецЕсли;
|
||||
|
||||
Параметры_ = Новый Массив;
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(Параметры);
|
||||
|
||||
Для Н = 0 По Параметры.ВГраница() Цикл
|
||||
Счетчик = 0;
|
||||
Для Каждого Параметр Из Параметры Цикл
|
||||
|
||||
ТекущийПараметр = Параметры[Н];
|
||||
ТекущийПараметр = ОбработатьПараметр(Параметр);
|
||||
ТекущийПараметр = OPI_Инструменты.JSONСтрокой(ТекущийПараметр, , Ложь);
|
||||
|
||||
ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр);
|
||||
Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда
|
||||
ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик);
|
||||
Иначе
|
||||
Параметры_.Добавить(ТекущийПараметр);
|
||||
КонецЕсли;
|
||||
|
||||
Параметры[Н] = ТекущийПараметр;
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь);
|
||||
|
||||
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
|
||||
ВызватьИсключение "Ошибка валидации JSON массива параметров!";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Параметры_;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбработатьПараметр(ТекущийПараметр)
|
||||
Функция ОбработатьПараметр(ТекущийПараметр, Вложенный = Ложь)
|
||||
|
||||
ТекущийТип = ТипЗнч(ТекущийПараметр);
|
||||
|
||||
@@ -611,10 +605,12 @@
|
||||
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
|
||||
|
||||
ТекущийПараметр = Строка(ТекущийПараметр);
|
||||
ТекущийПараметр = ?(Вложенный, ТекущийПараметр, Новый Структура("UUID", ТекущийПараметр));
|
||||
|
||||
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
|
||||
|
||||
ТекущийПараметр = OPI_Инструменты.ДатаRFC3339(ТекущийПараметр);
|
||||
ТекущийПараметр = ?(Вложенный, ТекущийПараметр, Новый Структура("TIMESTAMP", ТекущийПараметр));
|
||||
|
||||
ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда
|
||||
|
||||
@@ -634,14 +630,17 @@
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение);
|
||||
ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение, Истина);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
|
||||
ТекущийПараметр = ?(Вложенный, ТекущийПараметр, Новый Структура("VARCHAR", ТекущийПараметр));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
65
src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os
vendored
65
src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os
vendored
@@ -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);
|
||||
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
|
||||
ДобавитьКолонку(Scheme, Name, Type);
|
||||
EndProcedure
|
||||
|
@@ -156,7 +156,7 @@
|
||||
Если Не ЭтоКоннектор(Коннектор) Тогда
|
||||
Возврат Коннектор;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
|
||||
|
||||
@@ -593,11 +593,11 @@
|
||||
Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда
|
||||
ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик);
|
||||
Иначе
|
||||
Параметры_.Добавить(ТекущийПараметр);
|
||||
Параметры_.Добавить(ТекущийПараметр);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Параметры_;
|
||||
|
@@ -74,7 +74,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
Коннектор.ConnectionString = СтрокаПодключения;
|
||||
|
||||
|
||||
Результат = Коннектор.Connect();
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат, Ложь);
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
Если Не ЭтоКоннектор(Коннектор) Тогда
|
||||
Возврат Коннектор;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекстЗапроса, Истина);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(ФорсироватьРезультат);
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
Если ЗакрыватьСоединение Тогда
|
||||
ЗакрытьСоединение(Коннектор);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -583,11 +583,11 @@
|
||||
Если СтрНачинаетсяС(ТекущийПараметр, "НЕ JSON") Тогда
|
||||
ВызватьИсключение СтрШаблон("Ошибка валидации JSON параметра. Индекс массив %1", Счетчик);
|
||||
Иначе
|
||||
Параметры_.Добавить(ТекущийПараметр);
|
||||
Параметры_.Добавить(ТекущийПараметр);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Параметры_;
|
||||
@@ -637,10 +637,10 @@
|
||||
Иначе
|
||||
|
||||
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
|
||||
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
|
||||
ТекущийПараметр = ?(Вложенный, ТекущийПараметр, Новый Структура("VARCHAR", ТекущийПараметр));
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
@@ -356,23 +356,23 @@
|
||||
Функция ВыполнитьЗапросСОбработкой(Коннектор, Знач ТекстЗапроса, Знач ФорсироватьРезультат, Знач Параметры) Экспорт
|
||||
|
||||
КлючЗапроса = Коннектор.InitQuery(ТекстЗапроса, ФорсироватьРезультат);
|
||||
|
||||
|
||||
Для Каждого Параметр Из Параметры Цикл
|
||||
|
||||
|
||||
Добавление = Коннектор.AddQueryParam(КлючЗапроса, Параметр);
|
||||
Добавление = OPI_Инструменты.JsonВСтруктуру(Добавление);
|
||||
|
||||
Добавление = OPI_Инструменты.JsonВСтруктуру(Добавление);
|
||||
|
||||
Если Не Добавление["result"] Тогда
|
||||
Возврат Добавление;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
Результат = Коннектор.Execute(КлючЗапроса);
|
||||
Результат = ОбработатьРезультатЗапроса(Коннектор, КлючЗапроса, Результат);
|
||||
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -1236,40 +1236,40 @@
|
||||
Функция ОбработатьРезультатЗапроса(Знач Коннектор, Знач КлючЗапроса, Знач Результат)
|
||||
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
|
||||
|
||||
Если Не Результат["data"] Тогда
|
||||
Результат.Удалить("data");
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КоличествоСтрок = Коннектор.GetQueryResultLength(КлючЗапроса);
|
||||
|
||||
Если Не ТипЗнч(КоличествоСтрок) = Тип("Число") Тогда
|
||||
Возврат OPI_Инструменты.JsonВСтруктуру(КоличествоСтрок);
|
||||
|
||||
Если Не ТипЗнч(КоличествоСтрок) = Тип("Число") Тогда
|
||||
Возврат OPI_Инструменты.JsonВСтруктуру(КоличествоСтрок);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
МассивСтрок = Новый Массив;
|
||||
|
||||
|
||||
Для Н = 0 По КоличествоСтрок Цикл
|
||||
|
||||
ТекущаяСтрока = Коннектор.GetQueryResultRow(КлючЗапроса, Н);
|
||||
|
||||
ТекущаяСтрока = Коннектор.GetQueryResultRow(КлючЗапроса, Н);
|
||||
МассивСтрок.Добавить(ТекущаяСтрока);
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
Если МассивСтрок.Количество() > 0 Тогда
|
||||
ТекстJSON = СтрШаблон("[%1]", СтрСоединить(МассивСтрок, "," + Символы.ПС));
|
||||
МассивСтрок = OPI_Инструменты.JSONВСтруктуру(ТекстJSON);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Результат.Вставить("data", МассивСтрок);
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)
|
||||
|
Reference in New Issue
Block a user