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-02-12 19:21:41 +03:00
parent 78324f4271
commit 4395476fef
22 changed files with 7037 additions and 6969 deletions

View File

@@ -0,0 +1,4 @@
{
"Address": "93.125.42.204",
"Password": "12we..."
}

View File

@@ -5,23 +5,41 @@
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
Table = "testtable";
RecordsArray = New Array;
Image = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
RecordStructure = New Structure;
RecordStructure.Insert("bool_field" , New Structure("BOOL" , True));
RecordStructure.Insert("char_field" , New Structure("OLDCHAR" , 1));
RecordStructure.Insert("smallint_field", New Structure("SMALLINT" , 5));
RecordStructure.Insert("int_field" , New Structure("INT" , 100));
RecordStructure.Insert("oid_field" , New Structure("OID" , 24576));
RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999));
RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2));
RecordStructure.Insert("dp_field" , New Structure("DOUBLE_PRECISION", 1.0000000000000002));
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image));
RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP" , 1739207915));
RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1"));
CasualStructure = New Structure("key,value", "ItsKey", 10);
CurrentDate = OPI_Tools.GetCurrentDate();
Result = OPI_PostgreSQL.AddRecords(Table, RecordStructure, False, ConnectionString);
RecordStructure = New Structure;
RecordStructure.Insert("bool_field" , New Structure("BOOL" , True));
RecordStructure.Insert("oldchar_field" , New Structure("OLDCHAR" , 1)); // or "char"
RecordStructure.Insert("smallint_field" , New Structure("SMALLINT" , 5));
RecordStructure.Insert("smallserial_field", New Structure("SMALLSERIAL" , 6));
RecordStructure.Insert("int_field" , New Structure("INT" , 100));
RecordStructure.Insert("serial_field" , New Structure("SERIAL" , 100));
RecordStructure.Insert("oid_field" , New Structure("OID" , 24576));
RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999));
RecordStructure.Insert("bigserial_field" , New Structure("BIGSERIAL" , 9999999));
RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2));
RecordStructure.Insert("dp_field" , New Structure("DOUBLE_PRECISION" , 1.0000000000000002)); // or DOUBLE PRECISION
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
RecordStructure.Insert("varchar_field" , New Structure("VARCHAR" , "Some varchar"));
RecordStructure.Insert("char_field" , New Structure("CHAR" , "A"));
RecordStructure.Insert("name_field" , New Structure("NAME" , "Vitaly"));
RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image));
RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP" , 1739207915));
RecordStructure.Insert("tswtz_field" , New Structure("TIMESTAMP_WITH_TIME_ZONE", 1739207915)); // or TIMESTAMP WITH TIME ZONE
RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1"));
RecordStructure.Insert("json_field" , New Structure("JSON" , CasualStructure));
RecordStructure.Insert("jsonb_field" , New Structure("JSONB" , CasualStructure));
RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate));
RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate));
RecordStructure.Insert("uuid_field" , New Structure("UUID" , New UUID()));
RecordsArray.Add(RecordStructure);
Result = OPI_PostgreSQL.AddRecords(Table, RecordsArray, True, ConnectionString);

View File

@@ -8,17 +8,29 @@
Table = "testtable";
ColoumnsStruct = New Structure;
ColoumnsStruct.Insert("bool_field" , "BOOL");
ColoumnsStruct.Insert("char_field" , """char""");
ColoumnsStruct.Insert("smallint_field", "SMALLINT");
ColoumnsStruct.Insert("int_field" , "INT");
ColoumnsStruct.Insert("oid_field" , "OID");
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
ColoumnsStruct.Insert("real_field" , "REAL");
ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION");
ColoumnsStruct.Insert("text_field" , "TEXT");
ColoumnsStruct.Insert("bytea_field" , "BYTEA");
ColoumnsStruct.Insert("ts_field" , "TIMESTAMP");
ColoumnsStruct.Insert("ip_field" , "INET");
ColoumnsStruct.Insert("bool_field" , "BOOL");
ColoumnsStruct.Insert("oldchar_field" , """char""");
ColoumnsStruct.Insert("smallint_field" , "SMALLINT");
ColoumnsStruct.Insert("smallserial_field", "SMALLSERIAL");
ColoumnsStruct.Insert("int_field" , "INT");
ColoumnsStruct.Insert("serial_field" , "SERIAL");
ColoumnsStruct.Insert("oid_field" , "OID");
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
ColoumnsStruct.Insert("bigserial_field" , "BIGSERIAL");
ColoumnsStruct.Insert("real_field" , "REAL");
ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION");
ColoumnsStruct.Insert("text_field" , "TEXT");
ColoumnsStruct.Insert("varchar_field" , "VARCHAR");
ColoumnsStruct.Insert("char_field" , "CHAR(1)");
ColoumnsStruct.Insert("name_field" , "NAME");
ColoumnsStruct.Insert("bytea_field" , "BYTEA");
ColoumnsStruct.Insert("ts_field" , "TIMESTAMP");
ColoumnsStruct.Insert("tswtz_field" , "TIMESTAMP WITH TIME ZONE");
ColoumnsStruct.Insert("ip_field" , "INET");
ColoumnsStruct.Insert("json_field" , "JSON");
ColoumnsStruct.Insert("jsonb_field" , "JSONB");
ColoumnsStruct.Insert("date_field" , "DATE");
ColoumnsStruct.Insert("time_field" , "TIME");
ColoumnsStruct.Insert("uuid_field" , "UUID");
Result = OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString);

View File

@@ -0,0 +1,36 @@
 Address = "93.125.42.204";
Login = "bayselonarrend";
Password = "12we...";
Base = "testbase1";
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
Fields = New Array;
Fields.Add("bool_field");
Fields.Add("oldchar_field");
Fields.Add("smallint_field");
Fields.Add("smallserial_field");
Fields.Add("int_field");
Fields.Add("serial_field");
Fields.Add("oid_field");
Fields.Add("bigint_field");
Fields.Add("bigserial_field");
Fields.Add("real_field");
Fields.Add("dp_field");
Fields.Add("text_field");
Fields.Add("varchar_field");
Fields.Add("char_field");
Fields.Add("name_field");
Fields.Add("bytea_field");
Fields.Add("ts_field");
Fields.Add("tswtz_field");
Fields.Add("ip_field");
Fields.Add("json_field");
Fields.Add("jsonb_field");
Fields.Add("date_field");
Fields.Add("time_field");
Fields.Add("uuid_field");
Result = OPI_PostgreSQL.GetRecords(Table, Fields, , , , ConnectionString);

View File

@@ -1,35 +0,0 @@
---
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Get table column types
Gets an array of table column types
`Function GetTableColumnTypes(Val Table, Val Connection = "") Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| Table | --table | String | ✔ | Table name |
| Connection | --dbc | String, Arbitrary | ✖ | Connection or connection string |
Returns: Array, Map Of KeyAndValue - Array of types or error information
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -1,35 +0,0 @@
---
sidebar_position: 12
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Normalise parameter set
Converts an array of parameter values into an array of description structures to be passed to the query
`Function NormaliseParameterSet(Val ValuesArray, Val TypesArray) Export`
| Parameter | CLI option | Type | Required | Description |
|-|-|-|-|-|
| ValuesArray | --values | Array Of Arbitrary | &#x2714; | Array of query parameter values |
| TypesArray | --types | Array Of String | &#x2714; | Array of column types. See GetTableColumnTypes |
Returns: Array Of Map - Normalised set of parameters for a query
<br/>
```bsl title="1C:Enterprise/OneScript code example"
```

View File

@@ -0,0 +1,4 @@
{
"Адрес": "93.125.42.204",
"Пароль": "12we..."
}

View File

@@ -5,23 +5,41 @@
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
Таблица = "testtable";
МассивЗаписей = Новый Массив;
Картинка = "https://api.athenaeum.digital/test_data/picture.jpg";
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина));
СтруктураЗаписи.Вставить("char_field" , Новый Структура("OLDCHAR" , 1));
СтруктураЗаписи.Вставить("smallint_field", Новый Структура("SMALLINT" , 5));
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100));
СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576));
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999));
СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2));
СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION", 1.0000000000000002));
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text"));
СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , Картинка));
СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP" , 1739207915));
СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1"));
СлучайнаяСтруктура = Новый Структура("key,value", "ItsKey", 10);
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
Результат = OPI_PostgreSQL.ДобавитьЗаписи(Таблица, СтруктураЗаписи, Ложь, СтрокаПодключения);
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина));
СтруктураЗаписи.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 1)); // или "char"
СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 5));
СтруктураЗаписи.Вставить("smallserial_field", Новый Структура("SMALLSERIAL" , 6));
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 100));
СтруктураЗаписи.Вставить("serial_field" , Новый Структура("SERIAL" , 100));
СтруктураЗаписи.Вставить("oid_field" , Новый Структура("OID" , 24576));
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999));
СтруктураЗаписи.Вставить("bigserial_field" , Новый Структура("BIGSERIAL" , 9999999));
СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2));
СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0000000000000002)); // или DOUBLE PRECISION
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text"));
СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("VARCHAR" , "Some varchar"));
СтруктураЗаписи.Вставить("char_field" , Новый Структура("CHAR" , "A"));
СтруктураЗаписи.Вставить("name_field" , Новый Структура("NAME" , "Vitaly"));
СтруктураЗаписи.Вставить("bytea_field" , Новый Структура("BYTEA" , Картинка));
СтруктураЗаписи.Вставить("ts_field" , Новый Структура("TIMESTAMP" , 1739207915));
СтруктураЗаписи.Вставить("tswtz_field" , Новый Структура("TIMESTAMP_WITH_TIME_ZONE", 1739207915)); // или TIMESTAMP WITH TIME ZONE
СтруктураЗаписи.Вставить("ip_field" , Новый Структура("INET" , "127.0.0.1"));
СтруктураЗаписи.Вставить("json_field" , Новый Структура("JSON" , СлучайнаяСтруктура));
СтруктураЗаписи.Вставить("jsonb_field" , Новый Структура("JSONB" , СлучайнаяСтруктура));
СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата));
СтруктураЗаписи.Вставить("uuid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор()));
МассивЗаписей.Добавить(СтруктураЗаписи);
Результат = OPI_PostgreSQL.ДобавитьЗаписи(Таблица, МассивЗаписей, Истина, СтрокаПодключения);

View File

@@ -0,0 +1,36 @@
 Адрес = "93.125.42.204";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
Поля = Новый Массив;
Поля.Добавить("bool_field");
Поля.Добавить("oldchar_field");
Поля.Добавить("smallint_field");
Поля.Добавить("smallserial_field");
Поля.Добавить("int_field");
Поля.Добавить("serial_field");
Поля.Добавить("oid_field");
Поля.Добавить("bigint_field");
Поля.Добавить("bigserial_field");
Поля.Добавить("real_field");
Поля.Добавить("dp_field");
Поля.Добавить("text_field");
Поля.Добавить("varchar_field");
Поля.Добавить("char_field");
Поля.Добавить("name_field");
Поля.Добавить("bytea_field");
Поля.Добавить("ts_field");
Поля.Добавить("tswtz_field");
Поля.Добавить("ip_field");
Поля.Добавить("json_field");
Поля.Добавить("jsonb_field");
Поля.Добавить("date_field");
Поля.Добавить("time_field");
Поля.Добавить("uuid_field");
Результат = OPI_PostgreSQL.ПолучитьЗаписи(Таблица, Поля, , , , СтрокаПодключения);

View File

@@ -8,17 +8,29 @@
Таблица = "testtable";
СтруктураКолонок = Новый Структура;
СтруктураКолонок.Вставить("bool_field" , "BOOL");
СтруктураКолонок.Вставить("char_field" , """char""");
СтруктураКолонок.Вставить("smallint_field", "SMALLINT");
СтруктураКолонок.Вставить("int_field" , "INT");
СтруктураКолонок.Вставить("oid_field" , "OID");
СтруктураКолонок.Вставить("bigint_field" , "BIGINT");
СтруктураКолонок.Вставить("real_field" , "REAL");
СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION");
СтруктураКолонок.Вставить("text_field" , "TEXT");
СтруктураКолонок.Вставить("bytea_field" , "BYTEA");
СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP");
СтруктураКолонок.Вставить("ip_field" , "INET");
СтруктураКолонок.Вставить("bool_field" , "BOOL");
СтруктураКолонок.Вставить("oldchar_field" , """char""");
СтруктураКолонок.Вставить("smallint_field" , "SMALLINT");
СтруктураКолонок.Вставить("smallserial_field", "SMALLSERIAL");
СтруктураКолонок.Вставить("int_field" , "INT");
СтруктураКолонок.Вставить("serial_field" , "SERIAL");
СтруктураКолонок.Вставить("oid_field" , "OID");
СтруктураКолонок.Вставить("bigint_field" , "BIGINT");
СтруктураКолонок.Вставить("bigserial_field" , "BIGSERIAL");
СтруктураКолонок.Вставить("real_field" , "REAL");
СтруктураКолонок.Вставить("dp_field" , "DOUBLE PRECISION");
СтруктураКолонок.Вставить("text_field" , "TEXT");
СтруктураКолонок.Вставить("varchar_field" , "VARCHAR");
СтруктураКолонок.Вставить("char_field" , "CHAR(1)");
СтруктураКолонок.Вставить("name_field" , "NAME");
СтруктураКолонок.Вставить("bytea_field" , "BYTEA");
СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP");
СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE");
СтруктураКолонок.Вставить("ip_field" , "INET");
СтруктураКолонок.Вставить("json_field" , "JSON");
СтруктураКолонок.Вставить("jsonb_field" , "JSONB");
СтруктураКолонок.Вставить("date_field" , "DATE");
СтруктураКолонок.Вставить("time_field" , "TIME");
СтруктураКолонок.Вставить("uuid_field" , "UUID");
Результат = OPI_PostgreSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);

View File

@@ -1,35 +0,0 @@
---
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Получить типы колонок таблицы
Получает массив типов колонок таблицы
`Функция ПолучитьТипыКолонокТаблицы(Знач Таблица, Знач Соединение = "") Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| Таблица | --table | Строка | &#x2714; | Имя таблицы |
| Соединение | --dbc | Строка, Произвольный | &#x2716; | Соединение или строка подключения |
Возвращаемое значение: Массив, Соответствие Из КлючИЗначение - Массив типов или информация об ошибке
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

View File

@@ -1,35 +0,0 @@
---
sidebar_position: 12
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# Нормализовать набор параметров
Преобразует массив значений параметров в массив структур описаний для передачи в запрос
`Функция НормализоватьНаборПараметров(Знач МассивЗначений, Знач МассивТипов) Экспорт`
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|-|-|-|-|-|
| МассивЗначений | --values | Массив Из Произвольный | &#x2714; | Массив значений параметров запроса |
| МассивТипов | --types | Массив Из Строка | &#x2714; | Массив типов колонок. См. ПолучитьТипыКолонокТаблицы |
Возвращаемое значение: Массив Из Соответствие - Нормализованный набор параметров для запроса
<br/>
```bsl title="Пример использования для 1С:Предприятие/OneScript"
```

File diff suppressed because it is too large Load Diff

View File

@@ -245,44 +245,6 @@ Function GetTableInformation(Val Table, Val Connection = "") Export
EndFunction
// Get table column types
// Gets an array of table column types
//
// Parameters:
// Table - String - Table name - table
// Connection - String, Arbitrary - Connection or connection string - dbc
//
// Returns:
// Array, Map Of KeyAndValue - Array of types or error information
Function GetTableColumnTypes(Val Table, Val Connection = "") Export
TableInformation = GetTableInformation(Table, Connection);
If Not TableInformation["result"] Then
Return TableInformation;
EndIf;
TypesArray = New Array;
For Each Coloumn In TableInformation Do
CurrentType = Coloumn["data_type"];
CurrentType = String(Upper(CurrentType));
CurrentType = StrReplace(CurrentType, " " , "_");
CurrentType = StrReplace(CurrentType, """CHAR""", "OLDCHAR");
If StrStartsWith(CurrentType, "CHAR") Then
CurrentType = "CHAR";
EndIf;
TypesArray.Add(CurrentType);
EndDo;
Return TypesArray;
EndFunction
// Create table
// Creates an empty table in the database
//
@@ -416,49 +378,6 @@ Function ClearTable(Val Table, Val Connection = "") Export
EndFunction
// Normalise parameter set
// Converts an array of parameter values into an array of description structures to be passed to the query
//
// Parameters:
// ValuesArray - Array Of Arbitrary - Array of query parameter values - values
// TypesArray - Array Of String - Array of column types. See GetTableColumnTypes - types
//
// Returns:
// Array Of Map - Normalised set of parameters for a query
Function NormaliseParameterSet(Val ValuesArray, Val TypesArray) Export
OPI_TypeConversion.GetArray(ValuesArray);
OPI_TypeConversion.GetArray(TypesArray);
TypesMap = GetTypesMap();
ResultingArray = New Array;
TypesBound = TypesArray.UBound();
For N = 0 To ValuesArray.UBound() Do
If N > TypesBound Then
Break;
EndIf;
CurrentType = Upper(TypesArray[N]);
CurrentValue = ValuesArray[N];
TypeDescription = TypesMap.Get(CurrentType);
If TypeDescription <> Undefined Then
CurrentValue = TypeDescription.AdjustValue(CurrentValue);
EndIf;
CurrentDescription = New Map;
CurrentDescription.Insert(CurrentType, CurrentValue);
ResultingArray.Add(CurrentDescription);
EndDo;
Return ResultingArray;
EndFunction
// Get records filter strucutre
// Gets the template structure for filtering records in ORM queries
//
@@ -530,29 +449,7 @@ Function ProcessParameters(Val Parameters)
CurrentParameter = Parameters[N];
If TypeOf(CurrentParameter) = Type("BinaryData") Then
CurrentParameter = New Structure("BYTEA", Base64String(CurrentParameter));
ElsIf OPI_Tools.CollectionFieldExist(CurrentParameter, "BYTEA") Then
CurrentParameter = ProcessBlobStructure(CurrentParameter);
ElsIf TypeOf(CurrentParameter) = Type("Date") Then
CurrentParameter = Format(CurrentParameter, "DF='yyyy-MM-dd HH:MM:ss");
ElsIf TypeOf(CurrentParameter) = Type("Structure") Or TypeOf(CurrentParameter) = Type("Map") Then
Continue;
Else
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
OPI_TypeConversion.GetLine(CurrentParameter);
EndIf;
EndIf;
CurrentParameter = ProcessParameter(CurrentParameter);
Parameters[N] = CurrentParameter;
@@ -560,10 +457,64 @@ Function ProcessParameters(Val Parameters)
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, Embedded = False)
CurrentType = TypeOf(CurrentParameter);
If CurrentType = Type("BinaryData") Then
CurrentParameter = New Structure("BYTEA", Base64String(CurrentParameter));
ElsIf CurrentType = Type("UUID") Then
CurrentParameter = String(CurrentParameter);
ElsIf CurrentType = Type("Date") Then
CurrentParameter = XMLString(CurrentParameter);
ElsIf OPI_Tools.CollectionFieldExist(CurrentParameter, "BYTEA") Then
CurrentParameter = ProcessBlobStructure(CurrentParameter);
ElsIf CurrentType = Type("Structure")
Or CurrentType = Type("Map") Then
For Each ParamElement In CurrentParameter Do
CurrentKey = Upper(ParamElement.Key);
CurrentValue = ParamElement.Value;
If CurrentKey = "JSONB"
Or CurrentKey = "JSON"
Or CurrentKey = "HSTORE" Then
Continue;
EndIf;
CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue, True);
EndDo;
Else
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
OPI_TypeConversion.GetLine(CurrentParameter);
EndIf;
EndIf;
Return CurrentParameter;
EndFunction
Function ProcessBlobStructure(Val Value)
DataValue = Value["BYTEA"];
@@ -622,6 +573,7 @@ Function GetTypesMap()
TypesMap.Insert("LQUERY" , DescriptionString);
TypesMap.Insert("LTXTQUERY" , DescriptionString);
TypesMap.Insert("INET" , DescriptionString);
TypesMap.Insert("UUID" , DescriptionString);
Return TypesMap;

View File

@@ -2324,7 +2324,8 @@ Procedure Postgres_ORM() Export
PostgreSQL_CreateTable(TestParameters);
PostgreSQL_GetTableInformation(TestParameters);
PostgreSQL_AddRecords(TestParameters);
PostgreSQL_DropDatabase(TestParameters);
PostgreSQL_GetRecords(TestParameters);
//PostgreSQL_DropDatabase(TestParameters);
EndProcedure
@@ -17306,7 +17307,8 @@ Procedure PostgreSQL_CreateDatabase(FunctionParameters)
Base = "testbase1";
OPI_PostgreSQL.DropDatabase(Base, ConnectionString); // SKIP
Deletion = OPI_PostgreSQL.DropDatabase(Base, ConnectionString); // SKIP
OPI_TestDataRetrieval.WriteLog(Deletion, "CreateDatabase (deleting)", "PostgreSQL"); // SKIP
Result = OPI_PostgreSQL.CreateDatabase(Base, ConnectionString);
@@ -17349,18 +17351,30 @@ Procedure PostgreSQL_CreateTable(FunctionParameters)
Table = "testtable";
ColoumnsStruct = New Structure;
ColoumnsStruct.Insert("bool_field" , "BOOL");
ColoumnsStruct.Insert("char_field" , """char""");
ColoumnsStruct.Insert("smallint_field", "SMALLINT");
ColoumnsStruct.Insert("int_field" , "INT");
ColoumnsStruct.Insert("oid_field" , "OID");
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
ColoumnsStruct.Insert("real_field" , "REAL");
ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION");
ColoumnsStruct.Insert("text_field" , "TEXT");
ColoumnsStruct.Insert("bytea_field" , "BYTEA");
ColoumnsStruct.Insert("ts_field" , "TIMESTAMP");
ColoumnsStruct.Insert("ip_field" , "INET");
ColoumnsStruct.Insert("bool_field" , "BOOL");
ColoumnsStruct.Insert("oldchar_field" , """char""");
ColoumnsStruct.Insert("smallint_field" , "SMALLINT");
ColoumnsStruct.Insert("smallserial_field", "SMALLSERIAL");
ColoumnsStruct.Insert("int_field" , "INT");
ColoumnsStruct.Insert("serial_field" , "SERIAL");
ColoumnsStruct.Insert("oid_field" , "OID");
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
ColoumnsStruct.Insert("bigserial_field" , "BIGSERIAL");
ColoumnsStruct.Insert("real_field" , "REAL");
ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION");
ColoumnsStruct.Insert("text_field" , "TEXT");
ColoumnsStruct.Insert("varchar_field" , "VARCHAR");
ColoumnsStruct.Insert("char_field" , "CHAR(1)");
ColoumnsStruct.Insert("name_field" , "NAME");
ColoumnsStruct.Insert("bytea_field" , "BYTEA");
ColoumnsStruct.Insert("ts_field" , "TIMESTAMP");
ColoumnsStruct.Insert("tswtz_field" , "TIMESTAMP WITH TIME ZONE");
ColoumnsStruct.Insert("ip_field" , "INET");
ColoumnsStruct.Insert("json_field" , "JSON");
ColoumnsStruct.Insert("jsonb_field" , "JSONB");
ColoumnsStruct.Insert("date_field" , "DATE");
ColoumnsStruct.Insert("time_field" , "TIME");
ColoumnsStruct.Insert("uuid_field" , "UUID");
Result = OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString);
@@ -17400,26 +17414,44 @@ Procedure PostgreSQL_AddRecords(FunctionParameters)
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
Table = "testtable";
RecordsArray = New Array;
Image = FunctionParameters["Picture"];
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
RecordStructure = New Structure;
RecordStructure.Insert("bool_field" , New Structure("BOOL" , True));
RecordStructure.Insert("char_field" , New Structure("OLDCHAR" , 1));
RecordStructure.Insert("smallint_field", New Structure("SMALLINT" , 5));
RecordStructure.Insert("int_field" , New Structure("INT" , 100));
RecordStructure.Insert("oid_field" , New Structure("OID" , 24576));
RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999));
RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2));
RecordStructure.Insert("dp_field" , New Structure("DOUBLE_PRECISION", 1.0000000000000002));
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image));
RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP" , 1739207915));
RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1"));
CasualStructure = New Structure("key,value", "ItsKey", 10);
CurrentDate = OPI_Tools.GetCurrentDate();
Result = OPI_PostgreSQL.AddRecords(Table, RecordStructure, False, ConnectionString);
RecordStructure = New Structure;
RecordStructure.Insert("bool_field" , New Structure("BOOL" , True));
RecordStructure.Insert("oldchar_field" , New Structure("OLDCHAR" , 1)); // or "char"
RecordStructure.Insert("smallint_field" , New Structure("SMALLINT" , 5));
RecordStructure.Insert("smallserial_field", New Structure("SMALLSERIAL" , 6));
RecordStructure.Insert("int_field" , New Structure("INT" , 100));
RecordStructure.Insert("serial_field" , New Structure("SERIAL" , 100));
RecordStructure.Insert("oid_field" , New Structure("OID" , 24576));
RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999));
RecordStructure.Insert("bigserial_field" , New Structure("BIGSERIAL" , 9999999));
RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2));
RecordStructure.Insert("dp_field" , New Structure("DOUBLE_PRECISION" , 1.0000000000000002)); // or DOUBLE PRECISION
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
RecordStructure.Insert("varchar_field" , New Structure("VARCHAR" , "Some varchar"));
RecordStructure.Insert("char_field" , New Structure("CHAR" , "A"));
RecordStructure.Insert("name_field" , New Structure("NAME" , "Vitaly"));
RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image));
RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP" , 1739207915));
RecordStructure.Insert("tswtz_field" , New Structure("TIMESTAMP_WITH_TIME_ZONE", 1739207915)); // or TIMESTAMP WITH TIME ZONE
RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1"));
RecordStructure.Insert("json_field" , New Structure("JSON" , CasualStructure));
RecordStructure.Insert("jsonb_field" , New Structure("JSONB" , CasualStructure));
RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate));
RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate));
RecordStructure.Insert("uuid_field" , New Structure("UUID" , New UUID()));
RecordsArray.Add(RecordStructure);
Result = OPI_PostgreSQL.AddRecords(Table, RecordsArray, True, ConnectionString);
// END
@@ -17428,6 +17460,56 @@ Procedure PostgreSQL_AddRecords(FunctionParameters)
EndProcedure
Procedure PostgreSQL_GetRecords(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "testbase1";
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
Fields = New Array;
Fields.Add("bool_field");
Fields.Add("oldchar_field");
Fields.Add("smallint_field");
Fields.Add("smallserial_field");
Fields.Add("int_field");
Fields.Add("serial_field");
Fields.Add("oid_field");
Fields.Add("bigint_field");
Fields.Add("bigserial_field");
Fields.Add("real_field");
Fields.Add("dp_field");
Fields.Add("text_field");
Fields.Add("varchar_field");
Fields.Add("char_field");
Fields.Add("name_field");
Fields.Add("bytea_field");
Fields.Add("ts_field");
Fields.Add("tswtz_field");
Fields.Add("ip_field");
Fields.Add("json_field");
Fields.Add("jsonb_field");
Fields.Add("date_field");
Fields.Add("time_field");
Fields.Add("uuid_field");
Result = OPI_PostgreSQL.GetRecords(Table, Fields, , , , ConnectionString);
// END
If ValueIsFilled(Result["data"]) Then
Result["data"][0]["bytea_field"]["BYTEA"] = Left(Result["data"][0]["bytea_field"]["BYTEA"], 10) + "...";
EndIf;
OPI_TestDataRetrieval.WriteLog(Result, "AddRecords", "PostgreSQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@@ -245,44 +245,6 @@ Function GetTableInformation(Val Table, Val Connection = "") Export
EndFunction
// Get table column types
// Gets an array of table column types
//
// Parameters:
// Table - String - Table name - table
// Connection - String, Arbitrary - Connection or connection string - dbc
//
// Returns:
// Array, Map Of KeyAndValue - Array of types or error information
Function GetTableColumnTypes(Val Table, Val Connection = "") Export
TableInformation = GetTableInformation(Table, Connection);
If Not TableInformation["result"] Then
Return TableInformation;
EndIf;
TypesArray = New Array;
For Each Coloumn In TableInformation Do
CurrentType = Coloumn["data_type"];
CurrentType = String(Upper(CurrentType));
CurrentType = StrReplace(CurrentType, " " , "_");
CurrentType = StrReplace(CurrentType, """CHAR""", "OLDCHAR");
If StrStartsWith(CurrentType, "CHAR") Then
CurrentType = "CHAR";
EndIf;
TypesArray.Add(CurrentType);
EndDo;
Return TypesArray;
EndFunction
// Create table
// Creates an empty table in the database
//
@@ -416,49 +378,6 @@ Function ClearTable(Val Table, Val Connection = "") Export
EndFunction
// Normalise parameter set
// Converts an array of parameter values into an array of description structures to be passed to the query
//
// Parameters:
// ValuesArray - Array Of Arbitrary - Array of query parameter values - values
// TypesArray - Array Of String - Array of column types. See GetTableColumnTypes - types
//
// Returns:
// Array Of Map - Normalised set of parameters for a query
Function NormaliseParameterSet(Val ValuesArray, Val TypesArray) Export
OPI_TypeConversion.GetArray(ValuesArray);
OPI_TypeConversion.GetArray(TypesArray);
TypesMap = GetTypesMap();
ResultingArray = New Array;
TypesBound = TypesArray.UBound();
For N = 0 To ValuesArray.UBound() Do
If N > TypesBound Then
Break;
EndIf;
CurrentType = Upper(TypesArray[N]);
CurrentValue = ValuesArray[N];
TypeDescription = TypesMap.Get(CurrentType);
If TypeDescription <> Undefined Then
CurrentValue = TypeDescription.AdjustValue(CurrentValue);
EndIf;
CurrentDescription = New Map;
CurrentDescription.Insert(CurrentType, CurrentValue);
ResultingArray.Add(CurrentDescription);
EndDo;
Return ResultingArray;
EndFunction
// Get records filter strucutre
// Gets the template structure for filtering records in ORM queries
//
@@ -530,29 +449,7 @@ Function ProcessParameters(Val Parameters)
CurrentParameter = Parameters[N];
If TypeOf(CurrentParameter) = Type("BinaryData") Then
CurrentParameter = New Structure("BYTEA", Base64String(CurrentParameter));
ElsIf OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTEA") Then
CurrentParameter = ProcessBlobStructure(CurrentParameter);
ElsIf TypeOf(CurrentParameter) = Type("Date") Then
CurrentParameter = Format(CurrentParameter, "DF='yyyy-MM-dd HH:MM:ss");
ElsIf TypeOf(CurrentParameter) = Type("Structure") Or TypeOf(CurrentParameter) = Type("Map") Then
Continue;
Else
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
OPI_TypeConversion.GetLine(CurrentParameter);
EndIf;
EndIf;
CurrentParameter = ProcessParameter(CurrentParameter);
Parameters[N] = CurrentParameter;
@@ -560,10 +457,64 @@ Function ProcessParameters(Val Parameters)
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, Embedded = False)
CurrentType = TypeOf(CurrentParameter);
If CurrentType = Type("BinaryData") Then
CurrentParameter = New Structure("BYTEA", Base64String(CurrentParameter));
ElsIf CurrentType = Type("UUID") Then
CurrentParameter = String(CurrentParameter);
ElsIf CurrentType = Type("Date") Then
CurrentParameter = XMLString(CurrentParameter);
ElsIf OPI_Tools.CollectionFieldExists(CurrentParameter, "BYTEA") Then
CurrentParameter = ProcessBlobStructure(CurrentParameter);
ElsIf CurrentType = Type("Structure")
Or CurrentType = Type("Map") Then
For Each ParamElement In CurrentParameter Do
CurrentKey = Upper(ParamElement.Key);
CurrentValue = ParamElement.Value;
If CurrentKey = "JSONB"
Or CurrentKey = "JSON"
Or CurrentKey = "HSTORE" Then
Continue;
EndIf;
CurrentParameter[ParamElement.Key] = ProcessParameter(CurrentValue, True);
EndDo;
Else
If Not OPI_Tools.IsPrimitiveType(CurrentParameter) Then
OPI_TypeConversion.GetLine(CurrentParameter);
EndIf;
EndIf;
Return CurrentParameter;
EndFunction
Function ProcessBlobStructure(Val Value)
DataValue = Value["BYTEA"];
@@ -622,6 +573,7 @@ Function GetTypesMap()
TypesMap.Insert("LQUERY" , DescriptionString);
TypesMap.Insert("LTXTQUERY" , DescriptionString);
TypesMap.Insert("INET" , DescriptionString);
TypesMap.Insert("UUID" , DescriptionString);
Return TypesMap;

View File

@@ -2324,7 +2324,8 @@ Procedure Postgres_ORM() Export
PostgreSQL_CreateTable(TestParameters);
PostgreSQL_GetTableInformation(TestParameters);
PostgreSQL_AddRecords(TestParameters);
PostgreSQL_DropDatabase(TestParameters);
PostgreSQL_GetRecords(TestParameters);
//PostgreSQL_DropDatabase(TestParameters);
EndProcedure
@@ -17306,7 +17307,8 @@ Procedure PostgreSQL_CreateDatabase(FunctionParameters)
Base = "testbase1";
OPI_PostgreSQL.DropDatabase(Base, ConnectionString); // SKIP
Deletion = OPI_PostgreSQL.DropDatabase(Base, ConnectionString); // SKIP
OPI_TestDataRetrieval.WriteLog(Deletion, "CreateDatabase (deleting)", "PostgreSQL"); // SKIP
Result = OPI_PostgreSQL.CreateDatabase(Base, ConnectionString);
@@ -17349,18 +17351,30 @@ Procedure PostgreSQL_CreateTable(FunctionParameters)
Table = "testtable";
ColoumnsStruct = New Structure;
ColoumnsStruct.Insert("bool_field" , "BOOL");
ColoumnsStruct.Insert("char_field" , """char""");
ColoumnsStruct.Insert("smallint_field", "SMALLINT");
ColoumnsStruct.Insert("int_field" , "INT");
ColoumnsStruct.Insert("oid_field" , "OID");
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
ColoumnsStruct.Insert("real_field" , "REAL");
ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION");
ColoumnsStruct.Insert("text_field" , "TEXT");
ColoumnsStruct.Insert("bytea_field" , "BYTEA");
ColoumnsStruct.Insert("ts_field" , "TIMESTAMP");
ColoumnsStruct.Insert("ip_field" , "INET");
ColoumnsStruct.Insert("bool_field" , "BOOL");
ColoumnsStruct.Insert("oldchar_field" , """char""");
ColoumnsStruct.Insert("smallint_field" , "SMALLINT");
ColoumnsStruct.Insert("smallserial_field", "SMALLSERIAL");
ColoumnsStruct.Insert("int_field" , "INT");
ColoumnsStruct.Insert("serial_field" , "SERIAL");
ColoumnsStruct.Insert("oid_field" , "OID");
ColoumnsStruct.Insert("bigint_field" , "BIGINT");
ColoumnsStruct.Insert("bigserial_field" , "BIGSERIAL");
ColoumnsStruct.Insert("real_field" , "REAL");
ColoumnsStruct.Insert("dp_field" , "DOUBLE PRECISION");
ColoumnsStruct.Insert("text_field" , "TEXT");
ColoumnsStruct.Insert("varchar_field" , "VARCHAR");
ColoumnsStruct.Insert("char_field" , "CHAR(1)");
ColoumnsStruct.Insert("name_field" , "NAME");
ColoumnsStruct.Insert("bytea_field" , "BYTEA");
ColoumnsStruct.Insert("ts_field" , "TIMESTAMP");
ColoumnsStruct.Insert("tswtz_field" , "TIMESTAMP WITH TIME ZONE");
ColoumnsStruct.Insert("ip_field" , "INET");
ColoumnsStruct.Insert("json_field" , "JSON");
ColoumnsStruct.Insert("jsonb_field" , "JSONB");
ColoumnsStruct.Insert("date_field" , "DATE");
ColoumnsStruct.Insert("time_field" , "TIME");
ColoumnsStruct.Insert("uuid_field" , "UUID");
Result = OPI_PostgreSQL.CreateTable(Table, ColoumnsStruct, ConnectionString);
@@ -17400,26 +17414,44 @@ Procedure PostgreSQL_AddRecords(FunctionParameters)
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
Table = "testtable";
RecordsArray = New Array;
Image = FunctionParameters["Picture"];
OPI_TypeConversion.GetBinaryData(Image); // Image - Type: BinaryData
RecordStructure = New Structure;
RecordStructure.Insert("bool_field" , New Structure("BOOL" , True));
RecordStructure.Insert("char_field" , New Structure("OLDCHAR" , 1));
RecordStructure.Insert("smallint_field", New Structure("SMALLINT" , 5));
RecordStructure.Insert("int_field" , New Structure("INT" , 100));
RecordStructure.Insert("oid_field" , New Structure("OID" , 24576));
RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999));
RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2));
RecordStructure.Insert("dp_field" , New Structure("DOUBLE_PRECISION", 1.0000000000000002));
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image));
RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP" , 1739207915));
RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1"));
CasualStructure = New Structure("key,value", "ItsKey", 10);
CurrentDate = OPI_Tools.GetCurrentDate();
Result = OPI_PostgreSQL.AddRecords(Table, RecordStructure, False, ConnectionString);
RecordStructure = New Structure;
RecordStructure.Insert("bool_field" , New Structure("BOOL" , True));
RecordStructure.Insert("oldchar_field" , New Structure("OLDCHAR" , 1)); // or "char"
RecordStructure.Insert("smallint_field" , New Structure("SMALLINT" , 5));
RecordStructure.Insert("smallserial_field", New Structure("SMALLSERIAL" , 6));
RecordStructure.Insert("int_field" , New Structure("INT" , 100));
RecordStructure.Insert("serial_field" , New Structure("SERIAL" , 100));
RecordStructure.Insert("oid_field" , New Structure("OID" , 24576));
RecordStructure.Insert("bigint_field" , New Structure("BIGINT" , 9999999));
RecordStructure.Insert("bigserial_field" , New Structure("BIGSERIAL" , 9999999));
RecordStructure.Insert("real_field" , New Structure("REAL" , 15.2));
RecordStructure.Insert("dp_field" , New Structure("DOUBLE_PRECISION" , 1.0000000000000002)); // or DOUBLE PRECISION
RecordStructure.Insert("text_field" , New Structure("TEXT" , "Some text"));
RecordStructure.Insert("varchar_field" , New Structure("VARCHAR" , "Some varchar"));
RecordStructure.Insert("char_field" , New Structure("CHAR" , "A"));
RecordStructure.Insert("name_field" , New Structure("NAME" , "Vitaly"));
RecordStructure.Insert("bytea_field" , New Structure("BYTEA" , Image));
RecordStructure.Insert("ts_field" , New Structure("TIMESTAMP" , 1739207915));
RecordStructure.Insert("tswtz_field" , New Structure("TIMESTAMP_WITH_TIME_ZONE", 1739207915)); // or TIMESTAMP WITH TIME ZONE
RecordStructure.Insert("ip_field" , New Structure("INET" , "127.0.0.1"));
RecordStructure.Insert("json_field" , New Structure("JSON" , CasualStructure));
RecordStructure.Insert("jsonb_field" , New Structure("JSONB" , CasualStructure));
RecordStructure.Insert("date_field" , New Structure("DATE" , CurrentDate));
RecordStructure.Insert("time_field" , New Structure("TIME" , CurrentDate));
RecordStructure.Insert("uuid_field" , New Structure("UUID" , New UUID()));
RecordsArray.Add(RecordStructure);
Result = OPI_PostgreSQL.AddRecords(Table, RecordsArray, True, ConnectionString);
// END
@@ -17428,6 +17460,56 @@ Procedure PostgreSQL_AddRecords(FunctionParameters)
EndProcedure
Procedure PostgreSQL_GetRecords(FunctionParameters)
Address = FunctionParameters["PG_IP"];
Login = "bayselonarrend";
Password = FunctionParameters["PG_Password"];
Base = "testbase1";
ConnectionString = OPI_PostgreSQL.GenerateConnectionString(Address, Base, Login, Password);
Table = "testtable";
Fields = New Array;
Fields.Add("bool_field");
Fields.Add("oldchar_field");
Fields.Add("smallint_field");
Fields.Add("smallserial_field");
Fields.Add("int_field");
Fields.Add("serial_field");
Fields.Add("oid_field");
Fields.Add("bigint_field");
Fields.Add("bigserial_field");
Fields.Add("real_field");
Fields.Add("dp_field");
Fields.Add("text_field");
Fields.Add("varchar_field");
Fields.Add("char_field");
Fields.Add("name_field");
Fields.Add("bytea_field");
Fields.Add("ts_field");
Fields.Add("tswtz_field");
Fields.Add("ip_field");
Fields.Add("json_field");
Fields.Add("jsonb_field");
Fields.Add("date_field");
Fields.Add("time_field");
Fields.Add("uuid_field");
Result = OPI_PostgreSQL.GetRecords(Table, Fields, , , , ConnectionString);
// END
If ValueIsFilled(Result["data"]) Then
Result["data"][0]["bytea_field"]["BYTEA"] = Left(Result["data"][0]["bytea_field"]["BYTEA"], 10) + "...";
EndIf;
OPI_TestDataRetrieval.WriteLog(Result, "AddRecords", "PostgreSQL");
OPI_TestDataRetrieval.Check_ResultTrue(Result);
EndProcedure
#EndRegion
#EndRegion

View File

@@ -449,70 +449,70 @@
ТекущийПараметр = Параметры[Н];
ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр);
ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр);
Параметры[Н] = ТекущийПараметр;
КонецЦикла;
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь);
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
ВызватьИсключение "Ошибка валидации JSON массив параметров!";
КонецЕсли;
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
ВызватьИсключение "Ошибка валидации JSON массива параметров!";
КонецЕсли;
Возврат Параметры_;
КонецФункции
Функция ОбработатьПараметр(ТекущийПараметр, Вложенный = Ложь)
ТекущийТип = ТипЗнч(ТекущийПараметр);
Если ТекущийТип = Тип("ДвоичныеДанные") Тогда
ТекущийПараметр = Новый Структура("BYTEA", Base64Строка(ТекущийПараметр));
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
ТекущийПараметр = Строка(ТекущийПараметр);
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
ТекущийПараметр = XMLСтрока(ТекущийПараметр);
ТекущийТип = ТипЗнч(ТекущийПараметр);
ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда
Если ТекущийТип = Тип("ДвоичныеДанные") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ИначеЕсли ТекущийТип = Тип("Структура")
Или ТекущийТип = Тип("Соответствие") Тогда
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
ТекущееЗначение = ЭлементПараметра.Значение;
Если ТекущийКлюч = "JSONB"
Или ТекущийКлюч = "JSON"
Или ТекущийКлюч = "HSTORE" Тогда
Продолжить;
КонецЕсли;
ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение, Истина);
КонецЦикла;
ТекущийПараметр = Новый Структура("BYTEA", Base64Строка(ТекущийПараметр));
Иначе
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
КонецЕсли;
ТекущийПараметр = Строка(ТекущийПараметр);
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
ТекущийПараметр = XMLСтрока(ТекущийПараметр);
ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ИначеЕсли ТекущийТип = Тип("Структура")
Или ТекущийТип = Тип("Соответствие") Тогда
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
ТекущееЗначение = ЭлементПараметра.Значение;
Если ТекущийКлюч = "JSONB"
Или ТекущийКлюч = "JSON"
Или ТекущийКлюч = "HSTORE" Тогда
Продолжить;
КонецЕсли;
ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение, Истина);
КонецЦикла;
Иначе
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
КонецЕсли;
КонецЕсли;
Возврат ТекущийПараметр;
КонецЕсли;
Возврат ТекущийПараметр;
КонецФункции
Функция ОбработатьСтруктуруBlob(Знач Значение)

View File

@@ -17308,8 +17308,8 @@
База = "testbase1";
Удаление = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); // SKIP
Результат = OPI_PostgreSQL.СоздатьБазуДанных(База, СтрокаПодключения);
// END
@@ -17368,7 +17368,7 @@
СтруктураКолонок.Вставить("name_field" , "NAME");
СтруктураКолонок.Вставить("bytea_field" , "BYTEA");
СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP");
СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE");
СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE");
СтруктураКолонок.Вставить("ip_field" , "INET");
СтруктураКолонок.Вставить("json_field" , "JSON");
СтруктураКолонок.Вставить("jsonb_field" , "JSONB");
@@ -17419,10 +17419,10 @@
Картинка = ПараметрыФункции["Picture"];
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
СлучайнаяСтруктура = Новый Структура("key,value", "ItsKey", 10);
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина));
СтруктураЗаписи.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 1)); // или "char"
@@ -17434,7 +17434,7 @@
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999));
СтруктураЗаписи.Вставить("bigserial_field" , Новый Структура("BIGSERIAL" , 9999999));
СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2));
СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0000000000000002)); // или DOUBLE PRECISION
СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0000000000000002)); // или DOUBLE PRECISION
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text"));
СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("VARCHAR" , "Some varchar"));
СтруктураЗаписи.Вставить("char_field" , Новый Структура("CHAR" , "A"));
@@ -17448,9 +17448,9 @@
СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата));
СтруктураЗаписи.Вставить("uuid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор()));
МассивЗаписей.Добавить(СтруктураЗаписи);
Результат = OPI_PostgreSQL.ДобавитьЗаписи(Таблица, МассивЗаписей, Истина, СтрокаПодключения);
// END
@@ -17461,7 +17461,7 @@
КонецПроцедуры
Процедура PostgreSQL_ПолучитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
@@ -17470,7 +17470,7 @@
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
Поля = Новый Массив;
Поля.Добавить("bool_field");
Поля.Добавить("oldchar_field");
@@ -17496,18 +17496,18 @@
Поля.Добавить("date_field");
Поля.Добавить("time_field");
Поля.Добавить("uuid_field");
Результат = OPI_PostgreSQL.ПолучитьЗаписи(Таблица, Поля, , , , СтрокаПодключения);
// END
Если ЗначениеЗаполнено(Результат["data"]) Тогда
Результат["data"][0]["bytea_field"]["BYTEA"] = Лев(Результат["data"][0]["bytea_field"]["BYTEA"], 10) + "...";
КонецЕсли;
Результат["data"][0]["bytea_field"]["BYTEA"] = Лев(Результат["data"][0]["bytea_field"]["BYTEA"], 10) + "...";
КонецЕсли;
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
#КонецОбласти

View File

@@ -2148,9 +2148,9 @@
КонецФункции
Функция ПолучитьОбщийМодуль(Знач Имя)
Модуль = Вычислить(Имя);
Возврат Модуль;
КонецФункции

View File

@@ -449,70 +449,70 @@
ТекущийПараметр = Параметры[Н];
ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр);
ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр);
Параметры[Н] = ТекущийПараметр;
КонецЦикла;
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь);
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
ВызватьИсключение "Ошибка валидации JSON массива параметров!";
КонецЕсли;
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
ВызватьИсключение "Ошибка валидации JSON массива параметров!";
КонецЕсли;
Возврат Параметры_;
КонецФункции
Функция ОбработатьПараметр(ТекущийПараметр, Вложенный = Ложь)
ТекущийТип = ТипЗнч(ТекущийПараметр);
Если ТекущийТип = Тип("ДвоичныеДанные") Тогда
ТекущийПараметр = Новый Структура("BYTEA", Base64Строка(ТекущийПараметр));
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
ТекущийПараметр = Строка(ТекущийПараметр);
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
ТекущийПараметр = XMLСтрока(ТекущийПараметр);
ТекущийТип = ТипЗнч(ТекущийПараметр);
ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда
Если ТекущийТип = Тип("ДвоичныеДанные") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ИначеЕсли ТекущийТип = Тип("Структура")
Или ТекущийТип = Тип("Соответствие") Тогда
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
ТекущееЗначение = ЭлементПараметра.Значение;
Если ТекущийКлюч = "JSONB"
Или ТекущийКлюч = "JSON"
Или ТекущийКлюч = "HSTORE" Тогда
Продолжить;
КонецЕсли;
ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение, Истина);
КонецЦикла;
ТекущийПараметр = Новый Структура("BYTEA", Base64Строка(ТекущийПараметр));
Иначе
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
КонецЕсли;
ТекущийПараметр = Строка(ТекущийПараметр);
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
ТекущийПараметр = XMLСтрока(ТекущийПараметр);
ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
ИначеЕсли ТекущийТип = Тип("Структура")
Или ТекущийТип = Тип("Соответствие") Тогда
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
ТекущееЗначение = ЭлементПараметра.Значение;
Если ТекущийКлюч = "JSONB"
Или ТекущийКлюч = "JSON"
Или ТекущийКлюч = "HSTORE" Тогда
Продолжить;
КонецЕсли;
ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение, Истина);
КонецЦикла;
Иначе
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
КонецЕсли;
КонецЕсли;
Возврат ТекущийПараметр;
КонецЕсли;
Возврат ТекущийПараметр;
КонецФункции
Функция ОбработатьСтруктуруBlob(Знач Значение)

View File

@@ -17308,8 +17308,8 @@
База = "testbase1";
Удаление = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); // SKIP
Результат = OPI_PostgreSQL.СоздатьБазуДанных(База, СтрокаПодключения);
// END
@@ -17368,7 +17368,7 @@
СтруктураКолонок.Вставить("name_field" , "NAME");
СтруктураКолонок.Вставить("bytea_field" , "BYTEA");
СтруктураКолонок.Вставить("ts_field" , "TIMESTAMP");
СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE");
СтруктураКолонок.Вставить("tswtz_field" , "TIMESTAMP WITH TIME ZONE");
СтруктураКолонок.Вставить("ip_field" , "INET");
СтруктураКолонок.Вставить("json_field" , "JSON");
СтруктураКолонок.Вставить("jsonb_field" , "JSONB");
@@ -17419,10 +17419,10 @@
Картинка = ПараметрыФункции["Picture"];
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
СлучайнаяСтруктура = Новый Структура("key,value", "ItsKey", 10);
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("bool_field" , Новый Структура("BOOL" , Истина));
СтруктураЗаписи.Вставить("oldchar_field" , Новый Структура("OLDCHAR" , 1)); // или "char"
@@ -17434,7 +17434,7 @@
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 9999999));
СтруктураЗаписи.Вставить("bigserial_field" , Новый Структура("BIGSERIAL" , 9999999));
СтруктураЗаписи.Вставить("real_field" , Новый Структура("REAL" , 15.2));
СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0000000000000002)); // или DOUBLE PRECISION
СтруктураЗаписи.Вставить("dp_field" , Новый Структура("DOUBLE_PRECISION" , 1.0000000000000002)); // или DOUBLE PRECISION
СтруктураЗаписи.Вставить("text_field" , Новый Структура("TEXT" , "Some text"));
СтруктураЗаписи.Вставить("varchar_field" , Новый Структура("VARCHAR" , "Some varchar"));
СтруктураЗаписи.Вставить("char_field" , Новый Структура("CHAR" , "A"));
@@ -17448,9 +17448,9 @@
СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата));
СтруктураЗаписи.Вставить("uuid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор()));
МассивЗаписей.Добавить(СтруктураЗаписи);
Результат = OPI_PostgreSQL.ДобавитьЗаписи(Таблица, МассивЗаписей, Истина, СтрокаПодключения);
// END
@@ -17461,7 +17461,7 @@
КонецПроцедуры
Процедура PostgreSQL_ПолучитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "bayselonarrend";
Пароль = ПараметрыФункции["PG_Password"];
@@ -17470,7 +17470,7 @@
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
Поля = Новый Массив;
Поля.Добавить("bool_field");
Поля.Добавить("oldchar_field");
@@ -17496,18 +17496,18 @@
Поля.Добавить("date_field");
Поля.Добавить("time_field");
Поля.Добавить("uuid_field");
Результат = OPI_PostgreSQL.ПолучитьЗаписи(Таблица, Поля, , , , СтрокаПодключения);
// END
Если ЗначениеЗаполнено(Результат["data"]) Тогда
Результат["data"][0]["bytea_field"]["BYTEA"] = Лев(Результат["data"][0]["bytea_field"]["BYTEA"], 10) + "...";
КонецЕсли;
Результат["data"][0]["bytea_field"]["BYTEA"] = Лев(Результат["data"][0]["bytea_field"]["BYTEA"], 10) + "...";
КонецЕсли;
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "PostgreSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
#КонецОбласти