You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2026-06-16 04:03:20 +02:00
Main build (Jenkins)
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@
|
||||
PictureFile = GetTempFileName("png");
|
||||
Image.Write(PictureFile); // PictureFile - File to disk
|
||||
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
DataArray = New Array;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
Name = "new_col";
|
||||
DataType = "TEXT";
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Result = OPI_SQLite.ClearTable(Table, Base);
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
Extension = "https://hut.openintegrations.dev/test_data/uuid.so"; // URL, Path or Binary Data
|
||||
EndIf;
|
||||
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
EntryPoint = "sqlite3_uuid_init";
|
||||
|
||||
Connection = OPI_SQLite.CreateConnection(Base);
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Filters = New Array;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Result = OPI_SQLite.DeleteTable(Table, Base);
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
Name = "new_col";
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
|
||||
Table = "test";
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Fields = New Array;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Result = OPI_SQLite.GetTableInformation(Table, Base);
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
FieldsStructure = New Structure;
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@ Parameters with Binary data type can also accept file paths on disk and URLs
|
||||
Extension = "https://hut.openintegrations.dev/test_data/uuid.so"; // URL, Path or Binary Data
|
||||
EndIf;
|
||||
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
EntryPoint = "sqlite3_uuid_init";
|
||||
|
||||
Connection = OPI_SQLite.CreateConnection(Base);
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ Binary data can also be transferred as a structure `{'blob':File path}`
|
||||
PictureFile = GetTempFileName("png");
|
||||
Image.Write(PictureFile); // PictureFile - File to disk
|
||||
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
DataArray = New Array;
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
Name = "new_col";
|
||||
DataType = "TEXT";
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Result = OPI_SQLite.ClearTable(Table, Base);
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
ColoumnsStruct = New Structure;
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Filters = New Array;
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
Name = "new_col";
|
||||
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Result = OPI_SQLite.DeleteTable(Table, Base);
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ This function does not update the data type of existing columns
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
|
||||
Table = "test";
|
||||
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ Values of the Binary data type (BLOB) are returned as `{'blob':Base64 string}`
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Fields = New Array;
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
Result = OPI_SQLite.GetTableInformation(Table, Base);
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="1C:Enterprise/OneScript code example"
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
Base = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Table = "test";
|
||||
|
||||
FieldsStructure = New Structure;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
|
||||
Таблица = "test";
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
ФайлКартинки = ПолучитьИмяВременногоФайла("png");
|
||||
Картинка.Записать(ФайлКартинки); // ФайлКартинки - Файл на диске
|
||||
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
МассивДанных = Новый Массив;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
Имя = "new_col";
|
||||
ТипДанных = "TEXT";
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
СтруктураПолей = Новый Структура;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.ОчиститьТаблицу(Таблица, База);
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
Расширение = "https://hut.openintegrations.dev/test_data/uuid.so"; // URL, Путь или Двоичные данные
|
||||
КонецЕсли;
|
||||
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
ТочкаВхода = "sqlite3_uuid_init";
|
||||
|
||||
Соединение = OPI_SQLite.ОткрытьСоединение(База);
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Поля = Новый Массив;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.ПолучитьИнформациюОТаблице(Таблица, База);
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Фильтры = Новый Массив;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
Имя = "new_col";
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.УдалитьТаблицу(Таблица, База);
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@ import TabItem from '@theme/TabItem';
|
||||
Расширение = "https://hut.openintegrations.dev/test_data/uuid.so"; // URL, Путь или Двоичные данные
|
||||
КонецЕсли;
|
||||
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
ТочкаВхода = "sqlite3_uuid_init";
|
||||
|
||||
Соединение = OPI_SQLite.ОткрытьСоединение(База);
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ import TabItem from '@theme/TabItem';
|
||||
ФайлКартинки = ПолучитьИмяВременногоФайла("png");
|
||||
Картинка.Записать(ФайлКартинки); // ФайлКартинки - Файл на диске
|
||||
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
МассивДанных = Новый Массив;
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
Имя = "new_col";
|
||||
ТипДанных = "TEXT";
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.ОчиститьТаблицу(Таблица, База);
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
СтруктураКолонок = Новый Структура;
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Фильтры = Новый Массив;
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
Имя = "new_col";
|
||||
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.УдалитьТаблицу(Таблица, База);
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
|
||||
Таблица = "test";
|
||||
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Поля = Новый Массив;
|
||||
|
||||
+1
-1
@@ -28,7 +28,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.ПолучитьИнформациюОТаблице(Таблица, База);
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem';
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_42C7_51c.sqlite";
|
||||
База = "C:\Users\bayse\AppData\Local\Temp\v8_1212_2fd.sqlite";
|
||||
Таблица = "test";
|
||||
|
||||
СтруктураПолей = Новый Структура;
|
||||
|
||||
Vendored
+8433
-8433
File diff suppressed because it is too large
Load Diff
+165
-63
@@ -981,44 +981,182 @@ EndFunction
|
||||
|
||||
Function ProcessRecords(Val Module, Val Table, Val DataArray, Val Transaction, Val Connection)
|
||||
|
||||
ErrorsArray = New Array;
|
||||
CollectionError = "Invalid data";
|
||||
Counter = 0;
|
||||
SuccessCount = 0;
|
||||
If OPI_AddIns.FileTransferRequired() Then
|
||||
Result = AddRecordsBatch(Module, Table, DataArray, Transaction, Connection);
|
||||
Else
|
||||
Result = AddRecordsSeparately(Module, Table, DataArray, Transaction, Connection);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function AddRecordsSeparately(Val Module, Val Table, Val DataArray, Val Transaction, Val Connection)
|
||||
|
||||
ErrorsArray = New Array;
|
||||
Counter = 0;
|
||||
SuccessCount = 0;
|
||||
|
||||
For Each Record In DataArray Do
|
||||
|
||||
Counter = Counter + 1;
|
||||
|
||||
Try
|
||||
OPI_TypeConversion.GetKeyValueCollection(Record, CollectionError);
|
||||
Except
|
||||
|
||||
ErrorsArray.Add(New Structure("row,error", Counter, CollectionError));
|
||||
|
||||
If Not CheckRecordCorrectness(Record, ErrorsArray, Counter) Then
|
||||
If Transaction Then
|
||||
Break;
|
||||
Else
|
||||
Continue;
|
||||
EndIf;
|
||||
|
||||
EndTry;
|
||||
EndIf;
|
||||
|
||||
Result = AddRow(Module, Table, Record, Connection);
|
||||
|
||||
If Result["result"] Then
|
||||
|
||||
SuccessCount = SuccessCount + 1;
|
||||
|
||||
Else
|
||||
|
||||
ErrorsArray.Add(New Structure("row,error", Counter, Result["error"]));
|
||||
|
||||
If Transaction Then
|
||||
Break;
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
EndDo;
|
||||
|
||||
Result = New Structure("ErrorsArray,SuccessCount", ErrorsArray, SuccessCount);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function AddRecordsBatch(Val Module, Val Table, Val DataArray, Val Transaction, Val Connection)
|
||||
|
||||
BlanksArray = New Array;
|
||||
ErrorsArray = New Array;
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
BlanksPath = GetTempFileName();
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
KeysPath = GetTempFileName();
|
||||
|
||||
Counter = 0;
|
||||
SuccessCount = 0;
|
||||
|
||||
For Each Record In DataArray Do
|
||||
|
||||
Counter = Counter + 1;
|
||||
|
||||
If Not CheckRecordCorrectness(Record, ErrorsArray, Counter) Then
|
||||
If Transaction Then
|
||||
Break;
|
||||
Else
|
||||
Continue;
|
||||
EndIf;
|
||||
EndIf;
|
||||
|
||||
Result = AddRow(Module, Table, Record, Connection, False);
|
||||
BlanksArray.Add(Result);
|
||||
|
||||
EndDo;
|
||||
|
||||
Try
|
||||
|
||||
OPI_Tools.WriteJSONFile(BlanksPath, BlanksArray);
|
||||
|
||||
Initialization = Connection.BatchQuery(BlanksPath, KeysPath);
|
||||
Initialization = OPI_Tools.JsonToStructure(Initialization);
|
||||
|
||||
OPI_Tools.RemoveFileWithTry(BlanksPath, "Failed to delete query package file after installation");
|
||||
|
||||
If Not Initialization["result"] Then
|
||||
Raise Initialization["error"];
|
||||
EndIf;
|
||||
|
||||
Keys = OPI_Tools.ReadJSONFile(KeysPath, True);
|
||||
|
||||
OPI_Tools.RemoveFileWithTry(KeysPath, "Failed to delete key file after initialization");
|
||||
|
||||
Except
|
||||
|
||||
Error = StrTemplate("Batch query error: %1", ErrorDescription());
|
||||
ErrorsArray.Add(New Structure("row,error", -1, Error));
|
||||
|
||||
Return New Structure("ErrorsArray,SuccessCount", ErrorsArray, 0);
|
||||
|
||||
EndTry;
|
||||
|
||||
For Each Key In Keys Do
|
||||
|
||||
Result = Connection.Execute(Key);
|
||||
Result = ProcessQueryResult(Connection, Key, Result);
|
||||
|
||||
If Result["result"] Then
|
||||
SuccessCount = SuccessCount + 1;
|
||||
Else
|
||||
|
||||
ErrorsArray.Add(New Structure("row,error", Counter, Result["error"]));
|
||||
|
||||
If Transaction Then
|
||||
Break;
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
EndDo;
|
||||
|
||||
Result = New Structure("ErrorsArray,SuccessCount", ErrorsArray, SuccessCount);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function CheckRecordCorrectness(Record, ErrorsArray, Val Counter)
|
||||
|
||||
CollectionError = "Invalid data";
|
||||
Correct = True;
|
||||
|
||||
Try
|
||||
OPI_TypeConversion.GetKeyValueCollection(Record, CollectionError);
|
||||
Except
|
||||
ErrorsArray.Add(New Structure("row,error", Counter, CollectionError));
|
||||
Correct = False;
|
||||
EndTry;
|
||||
|
||||
Return Correct;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function AddRow(Val Module, Val Table, Val Record, Val Connection, Val ExecuteNow = True)
|
||||
|
||||
FieldArray = New Array;
|
||||
ValuesArray = New Array;
|
||||
|
||||
Scheme = NewSQLScheme("INSERT", Module);
|
||||
SetTableName(Scheme, Table);
|
||||
|
||||
SplitDataCollection(Record, FieldArray, ValuesArray);
|
||||
|
||||
For Each Field In FieldArray Do
|
||||
AddField(Scheme, Field);
|
||||
EndDo;
|
||||
|
||||
Request = FormSQLText(Scheme);
|
||||
|
||||
If ExecuteNow Then
|
||||
Result = Module.ExecuteSQLQuery(Request, ValuesArray, , Connection);
|
||||
Else
|
||||
|
||||
Parameters = ProcessParameters(ValuesArray, Module.GetTypesStructure());
|
||||
|
||||
Result = New Map;
|
||||
Result.Insert("text" , Request);
|
||||
Result.Insert("params" , Parameters);
|
||||
Result.Insert("force_result", False);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
@@ -1075,28 +1213,6 @@ Function ProcessRecordsEnd(Val ProcessedStructure, Val Module, Val Transaction,
|
||||
|
||||
EndFunction
|
||||
|
||||
Function AddRow(Val Module, Val Table, Val Record, Val Connection)
|
||||
|
||||
FieldArray = New Array;
|
||||
ValuesArray = New Array;
|
||||
|
||||
Scheme = NewSQLScheme("INSERT", Module);
|
||||
SetTableName(Scheme, Table);
|
||||
|
||||
SplitDataCollection(Record, FieldArray, ValuesArray);
|
||||
|
||||
For Each Field In FieldArray Do
|
||||
AddField(Scheme, Field);
|
||||
EndDo;
|
||||
|
||||
Request = FormSQLText(Scheme);
|
||||
|
||||
Result = Module.ExecuteSQLQuery(Request, ValuesArray, , Connection);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function NormalizeTable(Val Module
|
||||
, Val Table
|
||||
, Val ColoumnsStruct
|
||||
@@ -1461,20 +1577,16 @@ EndProcedure
|
||||
|
||||
Function InitializeQuery(Val Connector, Val QueryText, Val ForceResult)
|
||||
|
||||
If OPI_AddIns.FileTransferRequired() Then
|
||||
If OPI_AddIns.FileTransferRequired() And StrLen(QueryText) > 1000 Then
|
||||
|
||||
TFN = GetTempFileName();
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
TFN = GetTempFileName();
|
||||
TextBD = GetBinaryDataFromString(QueryText);
|
||||
TextBD.Write(TFN);
|
||||
|
||||
Key = Connector.InitQuery(TFN, ForceResult, True);
|
||||
|
||||
Try
|
||||
DeleteFiles(TFN);
|
||||
Except
|
||||
//@skip-check use-non-recommended-method
|
||||
Message("Failed to delete query file after execution");
|
||||
EndTry;
|
||||
OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete query file after execution");
|
||||
|
||||
Else
|
||||
Key = Connector.InitQuery(QueryText, ForceResult, False);
|
||||
@@ -1488,29 +1600,22 @@ EndFunction
|
||||
|
||||
Function SetQueryParams(Val Connector, Val QueryKey, Val Parameters)
|
||||
|
||||
If OPI_AddIns.FileTransferRequired() Then
|
||||
If OPI_AddIns.FileTransferRequired() And ValueIsFilled(Parameters) Then
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
TFN = GetTempFileName();
|
||||
|
||||
Try
|
||||
JSONWriter = New JSONWriter();
|
||||
JSONWriter.OpenFile(TFN, , False);
|
||||
WriteJSON(JSONWriter, Parameters);
|
||||
JSONWriter.Close();
|
||||
OPI_Tools.WriteJSONFile(TFN, Parameters);
|
||||
Except
|
||||
ErrInfo = ErrorDescription();
|
||||
ErrInfo = ErrorDescription();
|
||||
Raise StrTemplate("JSON parameter array validation error: %1", ErrInfo);
|
||||
EndTry;
|
||||
|
||||
JSONWriter = Undefined;
|
||||
Adding = Connector.SetParamsFromFile(QueryKey, TFN);
|
||||
|
||||
Try
|
||||
DeleteFiles(TFN);
|
||||
Except
|
||||
//@skip-check use-non-recommended-method
|
||||
Message("Failed to delete query parameters file after execution");
|
||||
EndTry;
|
||||
OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete query parameters file after execution");
|
||||
|
||||
Else
|
||||
Parameters_ = OPI_Tools.JSONString(Parameters);
|
||||
@@ -1540,7 +1645,8 @@ Function ProcessQueryResult(Val Connector, Val QueryKey, Val ExecutionResult)
|
||||
|
||||
If OPI_AddIns.FileTransferRequired() Then
|
||||
|
||||
TFN = GetTempFileName();
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
TFN = GetTempFileName();
|
||||
Result = Connector.GetResultAsFile(QueryKey, TFN);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
@@ -1548,12 +1654,8 @@ Function ProcessQueryResult(Val Connector, Val QueryKey, Val ExecutionResult)
|
||||
Result = OPI_Tools.ReadJSONFile(TFN, True);
|
||||
EndIf;
|
||||
|
||||
Try
|
||||
DeleteFiles(TFN);
|
||||
Except
|
||||
//@skip-check use-non-recommended-method
|
||||
Message("Failed to delete result file after execution");
|
||||
EndTry;
|
||||
OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete result file after execution");
|
||||
|
||||
|
||||
Else
|
||||
Result = Connector.GetResultAsString(QueryKey);
|
||||
|
||||
@@ -274,6 +274,15 @@ Function ReadJSONFile(Val Path, Val ToMap = False) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
Procedure WriteJSONFile(Val Path, Val Data) Export
|
||||
|
||||
JSONWriter = New JSONWriter();
|
||||
JSONWriter.OpenFile(Path, , False);
|
||||
WriteJSON(JSONWriter, Data);
|
||||
JSONWriter.Close();
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region XML
|
||||
@@ -837,6 +846,17 @@ Procedure StreamToStart(CurrentStream) Export
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure RemoveFileWithTry(Val Path, Val MessageText) Export
|
||||
|
||||
Try
|
||||
DeleteFiles(Path);
|
||||
Except
|
||||
//@skip-check use-non-recommended-method
|
||||
Message(MessageText);
|
||||
EndTry;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Function NumberToString(Val Value) Export
|
||||
|
||||
If TypeOf(Value) = Type("Number") Then
|
||||
@@ -1185,6 +1205,10 @@ Function ПрочитатьJSONФайл(Val Путь, Val ВСоответств
|
||||
Return ReadJSONFile(Путь, ВСоответствие);
|
||||
EndFunction
|
||||
|
||||
Procedure ЗаписатьJSONФайл(Val Путь, Val Данные) Export
|
||||
WriteJSONFile(Путь, Данные);
|
||||
EndProcedure
|
||||
|
||||
Function ОбработатьXML(XML) Export
|
||||
Return ProcessXML(XML);
|
||||
EndFunction
|
||||
@@ -1261,6 +1285,10 @@ Procedure ПотокВНачало(ТекущийПоток) Export
|
||||
StreamToStart(ТекущийПоток);
|
||||
EndProcedure
|
||||
|
||||
Procedure УдалитьФайлВПопытке(Val Путь, Val ТекстСообщения) Export
|
||||
RemoveFileWithTry(Путь, ТекстСообщения);
|
||||
EndProcedure
|
||||
|
||||
Function ЧислоВСтроку(Val Значение) Export
|
||||
Return NumberToString(Значение);
|
||||
EndFunction
|
||||
|
||||
+165
-63
@@ -981,44 +981,182 @@ EndFunction
|
||||
|
||||
Function ProcessRecords(Val Module, Val Table, Val DataArray, Val Transaction, Val Connection)
|
||||
|
||||
ErrorsArray = New Array;
|
||||
CollectionError = "Invalid data";
|
||||
Counter = 0;
|
||||
SuccessCount = 0;
|
||||
If OPI_AddIns.FileTransferRequired() Then
|
||||
Result = AddRecordsBatch(Module, Table, DataArray, Transaction, Connection);
|
||||
Else
|
||||
Result = AddRecordsSeparately(Module, Table, DataArray, Transaction, Connection);
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function AddRecordsSeparately(Val Module, Val Table, Val DataArray, Val Transaction, Val Connection)
|
||||
|
||||
ErrorsArray = New Array;
|
||||
Counter = 0;
|
||||
SuccessCount = 0;
|
||||
|
||||
For Each Record In DataArray Do
|
||||
|
||||
Counter = Counter + 1;
|
||||
|
||||
Try
|
||||
OPI_TypeConversion.GetKeyValueCollection(Record, CollectionError);
|
||||
Except
|
||||
|
||||
ErrorsArray.Add(New Structure("row,error", Counter, CollectionError));
|
||||
|
||||
If Not CheckRecordCorrectness(Record, ErrorsArray, Counter) Then
|
||||
If Transaction Then
|
||||
Break;
|
||||
Else
|
||||
Continue;
|
||||
EndIf;
|
||||
|
||||
EndTry;
|
||||
EndIf;
|
||||
|
||||
Result = AddRow(Module, Table, Record, Connection);
|
||||
|
||||
If Result["result"] Then
|
||||
|
||||
SuccessCount = SuccessCount + 1;
|
||||
|
||||
Else
|
||||
|
||||
ErrorsArray.Add(New Structure("row,error", Counter, Result["error"]));
|
||||
|
||||
If Transaction Then
|
||||
Break;
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
EndDo;
|
||||
|
||||
Result = New Structure("ErrorsArray,SuccessCount", ErrorsArray, SuccessCount);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function AddRecordsBatch(Val Module, Val Table, Val DataArray, Val Transaction, Val Connection)
|
||||
|
||||
BlanksArray = New Array;
|
||||
ErrorsArray = New Array;
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
BlanksPath = GetTempFileName();
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
KeysPath = GetTempFileName();
|
||||
|
||||
Counter = 0;
|
||||
SuccessCount = 0;
|
||||
|
||||
For Each Record In DataArray Do
|
||||
|
||||
Counter = Counter + 1;
|
||||
|
||||
If Not CheckRecordCorrectness(Record, ErrorsArray, Counter) Then
|
||||
If Transaction Then
|
||||
Break;
|
||||
Else
|
||||
Continue;
|
||||
EndIf;
|
||||
EndIf;
|
||||
|
||||
Result = AddRow(Module, Table, Record, Connection, False);
|
||||
BlanksArray.Add(Result);
|
||||
|
||||
EndDo;
|
||||
|
||||
Try
|
||||
|
||||
OPI_Tools.WriteJSONFile(BlanksPath, BlanksArray);
|
||||
|
||||
Initialization = Connection.BatchQuery(BlanksPath, KeysPath);
|
||||
Initialization = OPI_Tools.JsonToStructure(Initialization);
|
||||
|
||||
OPI_Tools.RemoveFileWithTry(BlanksPath, "Failed to delete query package file after installation");
|
||||
|
||||
If Not Initialization["result"] Then
|
||||
Raise Initialization["error"];
|
||||
EndIf;
|
||||
|
||||
Keys = OPI_Tools.ReadJSONFile(KeysPath, True);
|
||||
|
||||
OPI_Tools.RemoveFileWithTry(KeysPath, "Failed to delete key file after initialization");
|
||||
|
||||
Except
|
||||
|
||||
Error = StrTemplate("Batch query error: %1", ErrorDescription());
|
||||
ErrorsArray.Add(New Structure("row,error", -1, Error));
|
||||
|
||||
Return New Structure("ErrorsArray,SuccessCount", ErrorsArray, 0);
|
||||
|
||||
EndTry;
|
||||
|
||||
For Each Key In Keys Do
|
||||
|
||||
Result = Connection.Execute(Key);
|
||||
Result = ProcessQueryResult(Connection, Key, Result);
|
||||
|
||||
If Result["result"] Then
|
||||
SuccessCount = SuccessCount + 1;
|
||||
Else
|
||||
|
||||
ErrorsArray.Add(New Structure("row,error", Counter, Result["error"]));
|
||||
|
||||
If Transaction Then
|
||||
Break;
|
||||
EndIf;
|
||||
|
||||
EndIf;
|
||||
|
||||
EndDo;
|
||||
|
||||
Result = New Structure("ErrorsArray,SuccessCount", ErrorsArray, SuccessCount);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function CheckRecordCorrectness(Record, ErrorsArray, Val Counter)
|
||||
|
||||
CollectionError = "Invalid data";
|
||||
Correct = True;
|
||||
|
||||
Try
|
||||
OPI_TypeConversion.GetKeyValueCollection(Record, CollectionError);
|
||||
Except
|
||||
ErrorsArray.Add(New Structure("row,error", Counter, CollectionError));
|
||||
Correct = False;
|
||||
EndTry;
|
||||
|
||||
Return Correct;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function AddRow(Val Module, Val Table, Val Record, Val Connection, Val ExecuteNow = True)
|
||||
|
||||
FieldArray = New Array;
|
||||
ValuesArray = New Array;
|
||||
|
||||
Scheme = NewSQLScheme("INSERT", Module);
|
||||
SetTableName(Scheme, Table);
|
||||
|
||||
SplitDataCollection(Record, FieldArray, ValuesArray);
|
||||
|
||||
For Each Field In FieldArray Do
|
||||
AddField(Scheme, Field);
|
||||
EndDo;
|
||||
|
||||
Request = FormSQLText(Scheme);
|
||||
|
||||
If ExecuteNow Then
|
||||
Result = Module.ExecuteSQLQuery(Request, ValuesArray, , Connection);
|
||||
Else
|
||||
|
||||
Parameters = ProcessParameters(ValuesArray, Module.GetTypesStructure());
|
||||
|
||||
Result = New Map;
|
||||
Result.Insert("text" , Request);
|
||||
Result.Insert("params" , Parameters);
|
||||
Result.Insert("force_result", False);
|
||||
|
||||
EndIf;
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
@@ -1075,28 +1213,6 @@ Function ProcessRecordsEnd(Val ProcessedStructure, Val Module, Val Transaction,
|
||||
|
||||
EndFunction
|
||||
|
||||
Function AddRow(Val Module, Val Table, Val Record, Val Connection)
|
||||
|
||||
FieldArray = New Array;
|
||||
ValuesArray = New Array;
|
||||
|
||||
Scheme = NewSQLScheme("INSERT", Module);
|
||||
SetTableName(Scheme, Table);
|
||||
|
||||
SplitDataCollection(Record, FieldArray, ValuesArray);
|
||||
|
||||
For Each Field In FieldArray Do
|
||||
AddField(Scheme, Field);
|
||||
EndDo;
|
||||
|
||||
Request = FormSQLText(Scheme);
|
||||
|
||||
Result = Module.ExecuteSQLQuery(Request, ValuesArray, , Connection);
|
||||
|
||||
Return Result;
|
||||
|
||||
EndFunction
|
||||
|
||||
Function NormalizeTable(Val Module
|
||||
, Val Table
|
||||
, Val ColoumnsStruct
|
||||
@@ -1461,20 +1577,16 @@ EndProcedure
|
||||
|
||||
Function InitializeQuery(Val Connector, Val QueryText, Val ForceResult)
|
||||
|
||||
If OPI_AddIns.FileTransferRequired() Then
|
||||
If OPI_AddIns.FileTransferRequired() And StrLen(QueryText) > 1000 Then
|
||||
|
||||
TFN = GetTempFileName();
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
TFN = GetTempFileName();
|
||||
TextBD = GetBinaryDataFromString(QueryText);
|
||||
TextBD.Write(TFN);
|
||||
|
||||
Key = Connector.InitQuery(TFN, ForceResult, True);
|
||||
|
||||
Try
|
||||
DeleteFiles(TFN);
|
||||
Except
|
||||
//@skip-check use-non-recommended-method
|
||||
Message("Failed to delete query file after execution");
|
||||
EndTry;
|
||||
OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete query file after execution");
|
||||
|
||||
Else
|
||||
Key = Connector.InitQuery(QueryText, ForceResult, False);
|
||||
@@ -1488,29 +1600,22 @@ EndFunction
|
||||
|
||||
Function SetQueryParams(Val Connector, Val QueryKey, Val Parameters)
|
||||
|
||||
If OPI_AddIns.FileTransferRequired() Then
|
||||
If OPI_AddIns.FileTransferRequired() And ValueIsFilled(Parameters) Then
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
TFN = GetTempFileName();
|
||||
|
||||
Try
|
||||
JSONWriter = New JSONWriter();
|
||||
JSONWriter.OpenFile(TFN, , False);
|
||||
WriteJSON(JSONWriter, Parameters);
|
||||
JSONWriter.Close();
|
||||
OPI_Tools.WriteJSONFile(TFN, Parameters);
|
||||
Except
|
||||
ErrInfo = ErrorDescription();
|
||||
ErrInfo = ErrorDescription();
|
||||
Raise StrTemplate("JSON parameter array validation error: %1", ErrInfo);
|
||||
EndTry;
|
||||
|
||||
JSONWriter = Undefined;
|
||||
Adding = Connector.SetParamsFromFile(QueryKey, TFN);
|
||||
|
||||
Try
|
||||
DeleteFiles(TFN);
|
||||
Except
|
||||
//@skip-check use-non-recommended-method
|
||||
Message("Failed to delete query parameters file after execution");
|
||||
EndTry;
|
||||
OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete query parameters file after execution");
|
||||
|
||||
Else
|
||||
Parameters_ = OPI_Tools.JSONString(Parameters);
|
||||
@@ -1540,7 +1645,8 @@ Function ProcessQueryResult(Val Connector, Val QueryKey, Val ExecutionResult)
|
||||
|
||||
If OPI_AddIns.FileTransferRequired() Then
|
||||
|
||||
TFN = GetTempFileName();
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
TFN = GetTempFileName();
|
||||
Result = Connector.GetResultAsFile(QueryKey, TFN);
|
||||
Result = OPI_Tools.JsonToStructure(Result);
|
||||
|
||||
@@ -1548,12 +1654,8 @@ Function ProcessQueryResult(Val Connector, Val QueryKey, Val ExecutionResult)
|
||||
Result = OPI_Tools.ReadJSONFile(TFN, True);
|
||||
EndIf;
|
||||
|
||||
Try
|
||||
DeleteFiles(TFN);
|
||||
Except
|
||||
//@skip-check use-non-recommended-method
|
||||
Message("Failed to delete result file after execution");
|
||||
EndTry;
|
||||
OPI_Tools.RemoveFileWithTry(TFN, "Failed to delete result file after execution");
|
||||
|
||||
|
||||
Else
|
||||
Result = Connector.GetResultAsString(QueryKey);
|
||||
|
||||
@@ -274,6 +274,15 @@ Function ReadJSONFile(Val Path, Val ToMap = False) Export
|
||||
|
||||
EndFunction
|
||||
|
||||
Procedure WriteJSONFile(Val Path, Val Data) Export
|
||||
|
||||
JSONWriter = New JSONWriter();
|
||||
JSONWriter.OpenFile(Path, , False);
|
||||
WriteJSON(JSONWriter, Data);
|
||||
JSONWriter.Close();
|
||||
|
||||
EndProcedure
|
||||
|
||||
#EndRegion
|
||||
|
||||
#Region XML
|
||||
@@ -837,6 +846,17 @@ Procedure StreamToStart(CurrentStream) Export
|
||||
|
||||
EndProcedure
|
||||
|
||||
Procedure RemoveFileWithTry(Val Path, Val MessageText) Export
|
||||
|
||||
Try
|
||||
DeleteFiles(Path);
|
||||
Except
|
||||
//@skip-check use-non-recommended-method
|
||||
Message(MessageText);
|
||||
EndTry;
|
||||
|
||||
EndProcedure
|
||||
|
||||
Function NumberToString(Val Value) Export
|
||||
|
||||
If TypeOf(Value) = Type("Number") Then
|
||||
|
||||
+160
-58
@@ -981,8 +981,19 @@
|
||||
|
||||
Функция ОбработатьЗаписи(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение)
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() Тогда
|
||||
Результат = ДобавитьЗаписиПакетом(Модуль, Таблица, МассивДанных, Транзакция, Соединение);
|
||||
Иначе
|
||||
Результат = ДобавитьЗаписиРаздельно(Модуль, Таблица, МассивДанных, Транзакция, Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьЗаписиРаздельно(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение)
|
||||
|
||||
МассивОшибок = Новый Массив;
|
||||
ОшибкаКоллекции = "Invalid data";
|
||||
Счетчик = 0;
|
||||
СчетчикУспешных = 0;
|
||||
|
||||
@@ -990,35 +1001,162 @@
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
Попытка
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции);
|
||||
Исключение
|
||||
|
||||
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции));
|
||||
|
||||
Если Не ПроверитьКорректностьЗаписи(Запись, МассивОшибок, Счетчик) Тогда
|
||||
Если Транзакция Тогда
|
||||
Прервать;
|
||||
Иначе
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
|
||||
СчетчикУспешных = СчетчикУспешных + 1;
|
||||
|
||||
Иначе
|
||||
|
||||
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"]));
|
||||
|
||||
Если Транзакция Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Результат = Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, СчетчикУспешных);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьЗаписиПакетом(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение)
|
||||
|
||||
МассивЗаготовок = Новый Массив;
|
||||
МассивОшибок = Новый Массив;
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ПутьЗаготовок = ПолучитьИмяВременногоФайла();
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ПутьКлючей = ПолучитьИмяВременногоФайла();
|
||||
|
||||
Счетчик = 0;
|
||||
СчетчикУспешных = 0;
|
||||
|
||||
Для Каждого Запись Из МассивДанных Цикл
|
||||
|
||||
Счетчик = Счетчик + 1;
|
||||
|
||||
Если Не ПроверитьКорректностьЗаписи(Запись, МассивОшибок, Счетчик) Тогда
|
||||
Если Транзакция Тогда
|
||||
Прервать;
|
||||
Иначе
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение, Ложь);
|
||||
МассивЗаготовок.Добавить(Результат);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Попытка
|
||||
|
||||
OPI_Инструменты.ЗаписатьJSONФайл(ПутьЗаготовок, МассивЗаготовок);
|
||||
|
||||
Инициализация = Соединение.BatchQuery(ПутьЗаготовок, ПутьКлючей);
|
||||
Инициализация = OPI_Инструменты.JsonВСтруктуру(Инициализация);
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ПутьЗаготовок, "Не удалось удалить файл пакета запросов после установки");
|
||||
|
||||
Если Не Инициализация["result"] Тогда
|
||||
ВызватьИсключение Инициализация["error"];
|
||||
КонецЕсли;
|
||||
|
||||
Ключи = OPI_Инструменты.ПрочитатьJSONФайл(ПутьКлючей, Истина);
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ПутьКлючей, "Не удалось удалить файл ключей после инициализации");
|
||||
|
||||
Исключение
|
||||
|
||||
Ошибка = СтрШаблон("Batch query error: %1", ОписаниеОшибки());
|
||||
МассивОшибок.Добавить(Новый Структура("row,error", -1, Ошибка));
|
||||
|
||||
Возврат Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, 0);
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
Для Каждого Ключ Из Ключи Цикл
|
||||
|
||||
Результат = Соединение.Execute(Ключ);
|
||||
Результат = ОбработатьРезультатЗапроса(Соединение, Ключ, Результат);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
СчетчикУспешных = СчетчикУспешных + 1;
|
||||
Иначе
|
||||
|
||||
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"]));
|
||||
|
||||
Если Транзакция Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Результат = Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, СчетчикУспешных);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьКорректностьЗаписи(Запись, МассивОшибок, Знач Счетчик)
|
||||
|
||||
ОшибкаКоллекции = "Invalid data";
|
||||
Корректна = Истина;
|
||||
|
||||
Попытка
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции);
|
||||
Исключение
|
||||
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции));
|
||||
Корректна = Ложь;
|
||||
КонецПопытки;
|
||||
|
||||
Возврат Корректна;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение, Знач ВыполнятьСразу = Истина)
|
||||
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
Схема = ПустаяСхемаSQL("INSERT", Модуль);
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
РазделитьКоллекциюДанных(Запись, МассивПолей, МассивЗначений);
|
||||
|
||||
Для Каждого Поле Из МассивПолей Цикл
|
||||
ДобавитьПоле(Схема, Поле);
|
||||
КонецЦикла;
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
Если ВыполнятьСразу Тогда
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение);
|
||||
Иначе
|
||||
|
||||
Параметры = ОбработатьПараметры(МассивЗначений, Модуль.ПолучитьСтруктуруТипов());
|
||||
|
||||
Результат = Новый Соответствие;
|
||||
Результат.Вставить("text" , Запрос);
|
||||
Результат.Вставить("params" , Параметры);
|
||||
Результат.Вставить("force_result", Ложь);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -1075,28 +1213,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение)
|
||||
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
Схема = ПустаяСхемаSQL("INSERT", Модуль);
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
РазделитьКоллекциюДанных(Запись, МассивПолей, МассивЗначений);
|
||||
|
||||
Для Каждого Поле Из МассивПолей Цикл
|
||||
ДобавитьПоле(Схема, Поле);
|
||||
КонецЦикла;
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НормализоватьТаблицу(Знач Модуль
|
||||
, Знач Таблица
|
||||
, Знач СтруктураКолонок
|
||||
@@ -1461,20 +1577,16 @@
|
||||
|
||||
Функция ИнициализироватьЗапрос(Знач Коннектор, Знач ТекстЗапроса, Знач ФорсироватьРезультат)
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() Тогда
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() И СтрДлина(ТекстЗапроса) > 1000 Тогда
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ИВФ = ПолучитьИмяВременногоФайла();
|
||||
ТекстДД = ПолучитьДвоичныеДанныеИзСтроки(ТекстЗапроса);
|
||||
ТекстДД.Записать(ИВФ);
|
||||
|
||||
Ключ = Коннектор.InitQuery(ИВФ, ФорсироватьРезультат, Истина);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
//@skip-check use-non-recommended-method
|
||||
Сообщить("Не удалось удалить файл запроса после установки");
|
||||
КонецПопытки;
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить файл запроса после установки");
|
||||
|
||||
Иначе
|
||||
Ключ = Коннектор.InitQuery(ТекстЗапроса, ФорсироватьРезультат, Ложь);
|
||||
@@ -1488,29 +1600,22 @@
|
||||
|
||||
Функция УстановитьПараметрыЗапроса(Знач Коннектор, Знач КлючЗапроса, Знач Параметры)
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() Тогда
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() И ЗначениеЗаполнено(Параметры) Тогда
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ИВФ = ПолучитьИмяВременногоФайла();
|
||||
|
||||
Попытка
|
||||
ЗаписьJSON = Новый ЗаписьJSON();
|
||||
ЗаписьJSON.ОткрытьФайл(ИВФ, , Ложь);
|
||||
ЗаписатьJSON(ЗаписьJSON, Параметры);
|
||||
ЗаписьJSON.Закрыть();
|
||||
OPI_Инструменты.ЗаписатьJSONФайл(ИВФ, Параметры);
|
||||
Исключение
|
||||
ООп = ОписаниеОшибки();
|
||||
ООп = ОписаниеОшибки();
|
||||
ВызватьИсключение СтрШаблон("Ошибка валидации JSON массива параметров: %1", ООп);
|
||||
КонецПопытки;
|
||||
|
||||
ЗаписьJSON = Неопределено;
|
||||
Добавление = Коннектор.SetParamsFromFile(КлючЗапроса, ИВФ);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
//@skip-check use-non-recommended-method
|
||||
Сообщить("Не удалось удалить файл параметров запроса после установки");
|
||||
КонецПопытки;
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить файл параметров запроса после установки");
|
||||
|
||||
Иначе
|
||||
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры);
|
||||
@@ -1540,6 +1645,7 @@
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() Тогда
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ИВФ = ПолучитьИмяВременногоФайла();
|
||||
Результат = Коннектор.GetResultAsFile(КлючЗапроса, ИВФ);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
@@ -1548,12 +1654,8 @@
|
||||
Результат = OPI_Инструменты.ПрочитатьJSONФайл(ИВФ, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(ИВФ);
|
||||
Исключение
|
||||
//@skip-check use-non-recommended-method
|
||||
Сообщить("Не удалось удалить файл результата запроса после установки");
|
||||
КонецПопытки;
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить файл результата запроса после установки");
|
||||
|
||||
|
||||
Иначе
|
||||
Результат = Коннектор.GetResultAsString(КлючЗапроса);
|
||||
|
||||
@@ -274,6 +274,15 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаписатьJSONФайл(Знач Путь, Знач Данные) Экспорт
|
||||
|
||||
ЗаписьJSON = Новый ЗаписьJSON();
|
||||
ЗаписьJSON.ОткрытьФайл(Путь, , Ложь);
|
||||
ЗаписатьJSON(ЗаписьJSON, Данные);
|
||||
ЗаписьJSON.Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область XML
|
||||
@@ -837,6 +846,17 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УдалитьФайлВПопытке(Знач Путь, Знач ТекстСообщения) Экспорт
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(Путь);
|
||||
Исключение
|
||||
//@skip-check use-non-recommended-method
|
||||
Сообщить(ТекстСообщения);
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЧислоВСтроку(Знач Значение) Экспорт
|
||||
|
||||
Если ТипЗнч(Значение) = Тип("Число") Тогда
|
||||
@@ -1185,6 +1205,10 @@ Function ReadJSONFile(Val Path, Val ToMap = False) Export
|
||||
Return ПрочитатьJSONФайл(Path, ToMap);
|
||||
EndFunction
|
||||
|
||||
Procedure WriteJSONFile(Val Path, Val Data) Export
|
||||
ЗаписатьJSONФайл(Path, Data);
|
||||
EndProcedure
|
||||
|
||||
Function ProcessXML(XML) Export
|
||||
Return ОбработатьXML(XML);
|
||||
EndFunction
|
||||
@@ -1261,6 +1285,10 @@ Procedure StreamToStart(CurrentStream) Export
|
||||
ПотокВНачало(CurrentStream);
|
||||
EndProcedure
|
||||
|
||||
Procedure RemoveFileWithTry(Val Path, Val MessageText) Export
|
||||
УдалитьФайлВПопытке(Path, MessageText);
|
||||
EndProcedure
|
||||
|
||||
Function NumberToString(Val Value) Export
|
||||
Return ЧислоВСтроку(Value);
|
||||
EndFunction
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os
|
||||
// OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@@ -356,7 +356,7 @@
|
||||
Функция ВыполнитьЗапросСОбработкой(Коннектор, Знач ТекстЗапроса, Знач ФорсироватьРезультат, Знач Параметры) Экспорт
|
||||
|
||||
КлючЗапроса = ИнициализироватьЗапрос(Коннектор, ТекстЗапроса, ФорсироватьРезультат);
|
||||
|
||||
|
||||
Если Не КлючЗапроса["result"] Тогда
|
||||
Возврат КлючЗапроса;
|
||||
Иначе
|
||||
@@ -982,17 +982,17 @@
|
||||
Функция ОбработатьЗаписи(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение)
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() Тогда
|
||||
Результат = ДобавитьЗаписиПакетом(Модуль, Таблица, МассивДанных, Транзакция, Соединение);
|
||||
Результат = ДобавитьЗаписиПакетом(Модуль, Таблица, МассивДанных, Транзакция, Соединение);
|
||||
Иначе
|
||||
Результат = ДобавитьЗаписиРаздельно(Модуль, Таблица, МассивДанных, Транзакция, Соединение);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьЗаписиРаздельно(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение)
|
||||
|
||||
|
||||
МассивОшибок = Новый Массив;
|
||||
Счетчик = 0;
|
||||
СчетчикУспешных = 0;
|
||||
@@ -1014,33 +1014,33 @@
|
||||
Если Результат["result"] Тогда
|
||||
СчетчикУспешных = СчетчикУспешных + 1;
|
||||
Иначе
|
||||
|
||||
|
||||
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"]));
|
||||
|
||||
|
||||
Если Транзакция Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Результат = Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, СчетчикУспешных);
|
||||
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьЗаписиПакетом(Знач Модуль, Знач Таблица, Знач МассивДанных, Знач Транзакция, Знач Соединение)
|
||||
|
||||
МассивЗаготовок = Новый Массив;
|
||||
МассивОшибок = Новый Массив;
|
||||
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ПутьЗаготовок = ПолучитьИмяВременногоФайла();
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ПутьКлючей = ПолучитьИмяВременногоФайла();
|
||||
|
||||
|
||||
Счетчик = 0;
|
||||
СчетчикУспешных = 0;
|
||||
|
||||
@@ -1058,74 +1058,74 @@
|
||||
|
||||
Результат = ДобавитьЗапись(Модуль, Таблица, Запись, Соединение, Ложь);
|
||||
МассивЗаготовок.Добавить(Результат);
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
Попытка
|
||||
|
||||
|
||||
OPI_Инструменты.ЗаписатьJSONФайл(ПутьЗаготовок, МассивЗаготовок);
|
||||
|
||||
|
||||
Инициализация = Соединение.BatchQuery(ПутьЗаготовок, ПутьКлючей);
|
||||
Инициализация = OPI_Инструменты.JsonВСтруктуру(Инициализация);
|
||||
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ПутьЗаготовок, "Не удалось удалить файл пакета запросов после установки");
|
||||
|
||||
|
||||
Если Не Инициализация["result"] Тогда
|
||||
ВызватьИсключение Инициализация["error"];
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Ключи = OPI_Инструменты.ПрочитатьJSONФайл(ПутьКлючей, Истина);
|
||||
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ПутьКлючей, "Не удалось удалить файл ключей после инициализации");
|
||||
|
||||
|
||||
Исключение
|
||||
|
||||
|
||||
Ошибка = СтрШаблон("Batch query error: %1", ОписаниеОшибки());
|
||||
МассивОшибок.Добавить(Новый Структура("row,error", -1, Ошибка));
|
||||
|
||||
|
||||
Возврат Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, 0);
|
||||
|
||||
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
Для Каждого Ключ Из Ключи Цикл
|
||||
|
||||
|
||||
Результат = Соединение.Execute(Ключ);
|
||||
Результат = ОбработатьРезультатЗапроса(Соединение, Ключ, Результат);
|
||||
Результат = ОбработатьРезультатЗапроса(Соединение, Ключ, Результат);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
СчетчикУспешных = СчетчикУспешных + 1;
|
||||
Иначе
|
||||
|
||||
|
||||
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, Результат["error"]));
|
||||
|
||||
|
||||
Если Транзакция Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
|
||||
Результат = Новый Структура("МассивОшибок,СчетчикУспешных", МассивОшибок, СчетчикУспешных);
|
||||
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПроверитьКорректностьЗаписи(Запись, МассивОшибок, Знач Счетчик)
|
||||
|
||||
|
||||
ОшибкаКоллекции = "Invalid data";
|
||||
Корректна = Истина;
|
||||
|
||||
|
||||
Попытка
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ОшибкаКоллекции);
|
||||
Исключение
|
||||
МассивОшибок.Добавить(Новый Структура("row,error", Счетчик, ОшибкаКоллекции));
|
||||
Корректна = Ложь;
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
Возврат Корректна;
|
||||
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение, Знач ВыполнятьСразу = Истина)
|
||||
@@ -1146,17 +1146,17 @@
|
||||
|
||||
Если ВыполнятьСразу Тогда
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение);
|
||||
Иначе
|
||||
|
||||
Параметры = ОбработатьПараметры(МассивЗначений, Модуль.ПолучитьСтруктуруТипов());
|
||||
Иначе
|
||||
|
||||
Параметры = ОбработатьПараметры(МассивЗначений, Модуль.ПолучитьСтруктуруТипов());
|
||||
|
||||
Результат = Новый Соответствие;
|
||||
Результат.Вставить("text", Запрос);
|
||||
Результат.Вставить("params", Параметры);
|
||||
Результат.Вставить("text" , Запрос);
|
||||
Результат.Вставить("params" , Параметры);
|
||||
Результат.Вставить("force_result", Ложь);
|
||||
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -1577,95 +1577,95 @@
|
||||
|
||||
Функция ИнициализироватьЗапрос(Знач Коннектор, Знач ТекстЗапроса, Знач ФорсироватьРезультат)
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() И СтрДлина(ТекстЗапроса) > 1000 Тогда
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() И СтрДлина(ТекстЗапроса) > 1000 Тогда
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ИВФ = ПолучитьИмяВременногоФайла();
|
||||
ТекстДД = ПолучитьДвоичныеДанныеИзСтроки(ТекстЗапроса);
|
||||
ТекстДД.Записать(ИВФ);
|
||||
|
||||
|
||||
Ключ = Коннектор.InitQuery(ИВФ, ФорсироватьРезультат, Истина);
|
||||
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить файл запроса после установки");
|
||||
|
||||
|
||||
Иначе
|
||||
Ключ = Коннектор.InitQuery(ТекстЗапроса, ФорсироватьРезультат, Ложь);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Ключ = OPI_Инструменты.JSONВСтруктуру(Ключ);
|
||||
|
||||
Возврат Ключ;
|
||||
|
||||
|
||||
Возврат Ключ;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УстановитьПараметрыЗапроса(Знач Коннектор, Знач КлючЗапроса, Знач Параметры)
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() И ЗначениеЗаполнено(Параметры) Тогда
|
||||
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ИВФ = ПолучитьИмяВременногоФайла();
|
||||
|
||||
Попытка
|
||||
|
||||
Попытка
|
||||
OPI_Инструменты.ЗаписатьJSONФайл(ИВФ, Параметры);
|
||||
Исключение
|
||||
ООп = ОписаниеОшибки();
|
||||
ВызватьИсключение СтрШаблон("Ошибка валидации JSON массива параметров: %1", ООп);
|
||||
КонецПопытки;
|
||||
|
||||
ЗаписьJSON = Неопределено;
|
||||
Исключение
|
||||
ООп = ОписаниеОшибки();
|
||||
ВызватьИсключение СтрШаблон("Ошибка валидации JSON массива параметров: %1", ООп);
|
||||
КонецПопытки;
|
||||
|
||||
ЗаписьJSON = Неопределено;
|
||||
Добавление = Коннектор.SetParamsFromFile(КлючЗапроса, ИВФ);
|
||||
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить файл параметров запроса после установки");
|
||||
|
||||
|
||||
Иначе
|
||||
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры);
|
||||
Добавление = Коннектор.SetParamsFromString(КлючЗапроса, Параметры_);
|
||||
КонецЕсли;
|
||||
|
||||
Добавление = OPI_Инструменты.JsonВСтруктуру(Добавление);
|
||||
|
||||
Возврат Добавление;
|
||||
|
||||
|
||||
Добавление = OPI_Инструменты.JsonВСтруктуру(Добавление);
|
||||
|
||||
Возврат Добавление;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбработатьРезультатЗапроса(Знач Коннектор, Знач КлючЗапроса, Знач РезультатВыполнения)
|
||||
|
||||
РезультатВыполнения = OPI_Инструменты.JsonВСтруктуру(РезультатВыполнения);
|
||||
|
||||
Если Не РезультатВыполнения["result"] Тогда
|
||||
|
||||
Возврат РезультатВыполнения;
|
||||
|
||||
ИначеЕсли РезультатВыполнения["data"] = Ложь Тогда
|
||||
|
||||
РезультатВыполнения.Удалить("data");
|
||||
Возврат РезультатВыполнения;
|
||||
|
||||
Иначе
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() Тогда
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ИВФ = ПолучитьИмяВременногоФайла();
|
||||
Результат = Коннектор.GetResultAsFile(КлючЗапроса, ИВФ);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
Результат = OPI_Инструменты.ПрочитатьJSONФайл(ИВФ, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить файл результата запроса после установки");
|
||||
РезультатВыполнения = OPI_Инструменты.JsonВСтруктуру(РезультатВыполнения);
|
||||
|
||||
|
||||
Иначе
|
||||
Результат = Коннектор.GetResultAsString(КлючЗапроса);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
КонецЕсли;
|
||||
Если Не РезультатВыполнения["result"] Тогда
|
||||
|
||||
Возврат РезультатВыполнения;
|
||||
|
||||
ИначеЕсли РезультатВыполнения["data"] = Ложь Тогда
|
||||
|
||||
РезультатВыполнения.Удалить("data");
|
||||
Возврат РезультатВыполнения;
|
||||
|
||||
Иначе
|
||||
|
||||
Если OPI_Компоненты.ТребуетсяПередачаЧерезФайл() Тогда
|
||||
|
||||
//@skip-check missing-temporary-file-deletion
|
||||
ИВФ = ПолучитьИмяВременногоФайла();
|
||||
Результат = Коннектор.GetResultAsFile(КлючЗапроса, ИВФ);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
Результат = OPI_Инструменты.ПрочитатьJSONФайл(ИВФ, Истина);
|
||||
КонецЕсли;
|
||||
|
||||
OPI_Инструменты.УдалитьФайлВПопытке(ИВФ, "Не удалось удалить файл результата запроса после установки");
|
||||
|
||||
|
||||
Иначе
|
||||
Результат = Коннектор.GetResultAsString(КлючЗапроса);
|
||||
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбработатьПараметр(ТекущийПараметр, СтруктураТипов, КакОбъект = Истина)
|
||||
|
||||
@@ -275,12 +275,12 @@
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаписатьJSONФайл(Знач Путь, Знач Данные) Экспорт
|
||||
|
||||
|
||||
ЗаписьJSON = Новый ЗаписьJSON();
|
||||
ЗаписьJSON.ОткрытьФайл(Путь, , Ложь);
|
||||
ЗаписатьJSON(ЗаписьJSON, Данные);
|
||||
ЗаписьJSON.Закрыть();
|
||||
|
||||
ЗаписьJSON.Закрыть();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
@@ -854,7 +854,7 @@
|
||||
//@skip-check use-non-recommended-method
|
||||
Сообщить(ТекстСообщения);
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ЧислоВСтроку(Знач Значение) Экспорт
|
||||
|
||||
Reference in New Issue
Block a user