You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
Main build (Jenkins)
This commit is contained in:
4
docs/en/data/PostgreSQL/GetRecords.json
vendored
Normal file
4
docs/en/data/PostgreSQL/GetRecords.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"Address": "93.125.42.204",
|
||||
"Password": "12we..."
|
||||
}
|
48
docs/en/examples/PostgreSQL/AddRecords.txt
vendored
48
docs/en/examples/PostgreSQL/AddRecords.txt
vendored
@@ -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);
|
||||
|
36
docs/en/examples/PostgreSQL/CreateTable.txt
vendored
36
docs/en/examples/PostgreSQL/CreateTable.txt
vendored
@@ -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);
|
||||
|
36
docs/en/examples/PostgreSQL/GetRecords.txt
vendored
Normal file
36
docs/en/examples/PostgreSQL/GetRecords.txt
vendored
Normal 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);
|
35
docs/en/md/SQLite/Orm/Get-table-column-types.mdx
vendored
35
docs/en/md/SQLite/Orm/Get-table-column-types.mdx
vendored
@@ -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"
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -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 | ✔ | Array of query parameter values |
|
||||
| TypesArray | --types | Array Of String | ✔ | 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"
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
4
docs/ru/data/PostgreSQL/ПолучитьЗаписи.json
vendored
Normal file
4
docs/ru/data/PostgreSQL/ПолучитьЗаписи.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"Адрес": "93.125.42.204",
|
||||
"Пароль": "12we..."
|
||||
}
|
48
docs/ru/examples/PostgreSQL/ДобавитьЗаписи.txt
vendored
48
docs/ru/examples/PostgreSQL/ДобавитьЗаписи.txt
vendored
@@ -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.ДобавитьЗаписи(Таблица, МассивЗаписей, Истина, СтрокаПодключения);
|
||||
|
36
docs/ru/examples/PostgreSQL/ПолучитьЗаписи.txt
vendored
Normal file
36
docs/ru/examples/PostgreSQL/ПолучитьЗаписи.txt
vendored
Normal 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.ПолучитьЗаписи(Таблица, Поля, , , , СтрокаПодключения);
|
36
docs/ru/examples/PostgreSQL/СоздатьТаблицу.txt
vendored
36
docs/ru/examples/PostgreSQL/СоздатьТаблицу.txt
vendored
@@ -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.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);
|
||||
|
35
docs/ru/md/SQLite/Orm/Get-table-column-types.mdx
vendored
35
docs/ru/md/SQLite/Orm/Get-table-column-types.mdx
vendored
@@ -1,35 +0,0 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Получить типы колонок таблицы
|
||||
Получает массив типов колонок таблицы
|
||||
|
||||
|
||||
|
||||
`Функция ПолучитьТипыКолонокТаблицы(Знач Таблица, Знач Соединение = "") Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| Таблица | --table | Строка | ✔ | Имя таблицы |
|
||||
| Соединение | --dbc | Строка, Произвольный | ✖ | Соединение или строка подключения |
|
||||
|
||||
|
||||
Возвращаемое значение: Массив, Соответствие Из КлючИЗначение - Массив типов или информация об ошибке
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -1,35 +0,0 @@
|
||||
---
|
||||
sidebar_position: 12
|
||||
---
|
||||
|
||||
import Tabs from '@theme/Tabs';
|
||||
import TabItem from '@theme/TabItem';
|
||||
|
||||
# Нормализовать набор параметров
|
||||
Преобразует массив значений параметров в массив структур описаний для передачи в запрос
|
||||
|
||||
|
||||
|
||||
`Функция НормализоватьНаборПараметров(Знач МассивЗначений, Знач МассивТипов) Экспорт`
|
||||
|
||||
| Параметр | CLI опция | Тип | Обяз. | Назначение |
|
||||
|-|-|-|-|-|
|
||||
| МассивЗначений | --values | Массив Из Произвольный | ✔ | Массив значений параметров запроса |
|
||||
| МассивТипов | --types | Массив Из Строка | ✔ | Массив типов колонок. См. ПолучитьТипыКолонокТаблицы |
|
||||
|
||||
|
||||
Возвращаемое значение: Массив Из Соответствие - Нормализованный набор параметров для запроса
|
||||
|
||||
<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
```bsl title="Пример использования для 1С:Предприятие/OneScript"
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
12758
service/dictionaries/en.json
vendored
12758
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
160
src/en/OInt/core/Modules/OPI_PostgreSQL.os
vendored
160
src/en/OInt/core/Modules/OPI_PostgreSQL.os
vendored
@@ -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;
|
||||
|
||||
|
140
src/en/OInt/tests/Modules/internal/OPI_Tests.os
vendored
140
src/en/OInt/tests/Modules/internal/OPI_Tests.os
vendored
@@ -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
|
||||
|
@@ -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;
|
||||
|
||||
|
140
src/en/OPI/src/CommonModules/OPI_Tests/Module.bsl
vendored
140
src/en/OPI/src/CommonModules/OPI_Tests/Module.bsl
vendored
@@ -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
|
||||
|
92
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
92
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
@@ -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(Знач Значение)
|
||||
|
36
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
36
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@@ -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_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -2148,9 +2148,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@@ -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(Знач Значение)
|
||||
|
@@ -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_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
Reference in New Issue
Block a user