You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
Дополнение словаря
This commit is contained in:
12942
service/dictionaries/en.json
vendored
12942
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
160
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
160
src/ru/OInt/core/Modules/OPI_PostgreSQL.os
vendored
@@ -245,44 +245,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить типы колонок таблицы
|
||||
// Получает массив типов колонок таблицы
|
||||
//
|
||||
// Параметры:
|
||||
// Таблица - Строка - Имя таблицы - table
|
||||
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив, Соответствие Из КлючИЗначение - Массив типов или информация об ошибке
|
||||
Функция ПолучитьТипыКолонокТаблицы(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
ИнформацияОТаблице = ПолучитьИнформациюОТаблице(Таблица, Соединение);
|
||||
|
||||
Если Не ИнформацияОТаблице["result"] Тогда
|
||||
Возврат ИнформацияОТаблице;
|
||||
КонецЕсли;
|
||||
|
||||
МассивТипов = Новый Массив;
|
||||
|
||||
Для Каждого Колонка Из ИнформацияОТаблице Цикл
|
||||
|
||||
ТекущийТип = Колонка["data_type"];
|
||||
ТекущийТип = Строка(вРег(ТекущийТип));
|
||||
ТекущийТип = СтрЗаменить(ТекущийТип, " " , "_");
|
||||
ТекущийТип = СтрЗаменить(ТекущийТип, """CHAR""", "OLDCHAR");
|
||||
|
||||
Если СтрНачинаетсяС(ТекущийТип, "CHAR") Тогда
|
||||
ТекущийТип = "CHAR";
|
||||
КонецЕсли;
|
||||
|
||||
МассивТипов.Добавить(ТекущийТип);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МассивТипов;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создать таблицу
|
||||
// Создает пустую таблицу в базе
|
||||
//
|
||||
@@ -416,49 +378,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Нормализовать набор параметров
|
||||
// Преобразует массив значений параметров в массив структур описаний для передачи в запрос
|
||||
//
|
||||
// Параметры:
|
||||
// МассивЗначений - Массив Из Произвольный - Массив значений параметров запроса - values
|
||||
// МассивТипов - Массив Из Строка - Массив типов колонок. См. ПолучитьТипыКолонокТаблицы - types
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив Из Соответствие - Нормализованный набор параметров для запроса
|
||||
Функция НормализоватьНаборПараметров(Знач МассивЗначений, Знач МассивТипов) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(МассивЗначений);
|
||||
OPI_ПреобразованиеТипов.ПолучитьМассив(МассивТипов);
|
||||
|
||||
СоответствиеТипов = ПолучитьСоответствиеТипов();
|
||||
ИтоговыйМассив = Новый Массив;
|
||||
ГраницаТипов = МассивТипов.ВГраница();
|
||||
|
||||
Для Н = 0 По МассивЗначений.ВГраница() Цикл
|
||||
|
||||
Если Н > ГраницаТипов Тогда
|
||||
Прервать;
|
||||
Конецесли;
|
||||
|
||||
ТекущийТип = вРег(МассивТипов[Н]);
|
||||
ТекущееЗначение = МассивЗначений[Н];
|
||||
ОписаниеТипа = СоответствиеТипов.Получить(ТекущийТип);
|
||||
|
||||
Если ОписаниеТипа <> Неопределено Тогда
|
||||
ТекущееЗначение = ОписаниеТипа.ПривестиЗначение(ТекущееЗначение);
|
||||
КонецЕсли;
|
||||
|
||||
ТекущееОписание = Новый Соответствие;
|
||||
ТекущееОписание.Вставить(ТекущийТип, ТекущееЗначение);
|
||||
|
||||
ИтоговыйМассив.Добавить(ТекущееОписание);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ИтоговыйМассив;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить структуру фильтра записей
|
||||
// Получает структуру шаблон для фильтрации записей в запросах ORM
|
||||
//
|
||||
@@ -530,40 +449,72 @@
|
||||
|
||||
ТекущийПараметр = Параметры[Н];
|
||||
|
||||
Если ТипЗнч(ТекущийПараметр) = Тип("ДвоичныеДанные") Тогда
|
||||
|
||||
ТекущийПараметр = Новый Структура("BYTEA", Base64Строка(ТекущийПараметр));
|
||||
|
||||
ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда
|
||||
|
||||
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
|
||||
|
||||
ИначеЕсли ТипЗнч(ТекущийПараметр) = Тип("Дата") Тогда
|
||||
|
||||
ТекущийПараметр = Формат(ТекущийПараметр, "ДФ='yyyy-MM-dd HH:MM:ss'");
|
||||
|
||||
ИначеЕсли ТипЗнч(ТекущийПараметр) = Тип("Структура") Или ТипЗнч(ТекущийПараметр) = Тип("Соответствие") Тогда
|
||||
|
||||
Продолжить;
|
||||
|
||||
Иначе
|
||||
|
||||
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
ТекущийПараметр = ОбработатьПараметр(ТекущийПараметр);
|
||||
|
||||
Параметры[Н] = ТекущийПараметр;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь);
|
||||
|
||||
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
|
||||
ВызватьИсключение "Ошибка валидации JSON массив параметров!";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Параметры_;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбработатьПараметр(ТекущийПараметр, Вложенный = Ложь)
|
||||
|
||||
ТекущийТип = ТипЗнч(ТекущийПараметр);
|
||||
|
||||
Если ТекущийТип = Тип("ДвоичныеДанные") Тогда
|
||||
|
||||
ТекущийПараметр = Новый Структура("BYTEA", Base64Строка(ТекущийПараметр));
|
||||
|
||||
ИначеЕсли ТекущийТип = Тип("УникальныйИдентификатор") Тогда
|
||||
|
||||
ТекущийПараметр = Строка(ТекущийПараметр);
|
||||
|
||||
ИначеЕсли ТекущийТип = Тип("Дата") Тогда
|
||||
|
||||
ТекущийПараметр = XMLСтрока(ТекущийПараметр);
|
||||
|
||||
ИначеЕсли OPI_Инструменты.ПолеКоллекцииСуществует(ТекущийПараметр, "BYTEA") Тогда
|
||||
|
||||
ТекущийПараметр = ОбработатьСтруктуруBlob(ТекущийПараметр);
|
||||
|
||||
ИначеЕсли ТекущийТип = Тип("Структура")
|
||||
Или ТекущийТип = Тип("Соответствие") Тогда
|
||||
|
||||
Для Каждого ЭлементПараметра Из ТекущийПараметр Цикл
|
||||
|
||||
ТекущийКлюч = вРег(ЭлементПараметра.Ключ);
|
||||
ТекущееЗначение = ЭлементПараметра.Значение;
|
||||
|
||||
Если ТекущийКлюч = "JSONB"
|
||||
Или ТекущийКлюч = "JSON"
|
||||
Или ТекущийКлюч = "HSTORE" Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ТекущийПараметр[ЭлементПараметра.Ключ] = ОбработатьПараметр(ТекущееЗначение, Истина);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
Если Не OPI_Инструменты.ЭтоПримитивныйТип(ТекущийПараметр) Тогда
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(ТекущийПараметр);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТекущийПараметр;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОбработатьСтруктуруBlob(Знач Значение)
|
||||
|
||||
ЗначениеДанных = Значение["BYTEA"];
|
||||
@@ -622,6 +573,7 @@
|
||||
СоответствиеТипов.Вставить("LQUERY" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("LTXTQUERY" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("INET" , ОписаниеString);
|
||||
СоответствиеТипов.Вставить("UUID" , ОписаниеString);
|
||||
|
||||
Возврат СоответствиеТипов;
|
||||
|
||||
|
144
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
144
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@@ -2324,7 +2324,8 @@
|
||||
PostgreSQL_СоздатьТаблицу(ПараметрыТеста);
|
||||
PostgreSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста);
|
||||
PostgreSQL_ДобавитьЗаписи(ПараметрыТеста);
|
||||
PostgreSQL_УдалитьБазуДанных(ПараметрыТеста);
|
||||
PostgreSQL_ПолучитьЗаписи(ПараметрыТеста);
|
||||
//PostgreSQL_УдалитьБазуДанных(ПараметрыТеста);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@@ -17306,8 +17307,9 @@
|
||||
|
||||
База = "testbase1";
|
||||
|
||||
OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения); // SKIP
|
||||
|
||||
Удаление = OPI_PostgreSQL.УдалитьБазуДанных(База, СтрокаПодключения); // SKIP
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Удаление, "СоздатьБазуДанных (удаление)", "PostgreSQL"); // SKIP
|
||||
|
||||
Результат = OPI_PostgreSQL.СоздатьБазуДанных(База, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
@@ -17349,18 +17351,30 @@
|
||||
Таблица = "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.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения);
|
||||
|
||||
@@ -17400,26 +17414,44 @@
|
||||
|
||||
СтрокаПодключения = OPI_PostgreSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
|
||||
|
||||
Таблица = "testtable";
|
||||
Таблица = "testtable";
|
||||
МассивЗаписей = Новый Массив;
|
||||
|
||||
Картинка = ПараметрыФункции["Picture"];
|
||||
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
|
||||
|
||||
|
||||
СлучайнаяСтруктура = Новый Структура("key,value", "ItsKey", 10);
|
||||
ТекущаяДата = 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"));
|
||||
|
||||
Результат = 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.ДобавитьЗаписи(Таблица, МассивЗаписей, Истина, СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
@@ -17428,6 +17460,56 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура PostgreSQL_ПолучитьЗаписи(ПараметрыФункции)
|
||||
|
||||
Адрес = ПараметрыФункции["PG_IP"];
|
||||
Логин = "bayselonarrend";
|
||||
Пароль = ПараметрыФункции["PG_Password"];
|
||||
База = "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.ПолучитьЗаписи(Таблица, Поля, , , , СтрокаПодключения);
|
||||
|
||||
// END
|
||||
|
||||
Если ЗначениеЗаполнено(Результат["data"]) Тогда
|
||||
Результат["data"][0]["bytea_field"]["BYTEA"] = Лев(Результат["data"][0]["bytea_field"]["BYTEA"], 10) + "...";
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "PostgreSQL");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -2148,9 +2148,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@@ -458,7 +458,7 @@
|
||||
Параметры_ = OPI_Инструменты.JSONСтрокой(Параметры, , Ложь);
|
||||
|
||||
Если СтрНачинаетсяС(Параметры_, "НЕ JSON") Тогда
|
||||
ВызватьИсключение "Ошибка валидации JSON массив параметров!";
|
||||
ВызватьИсключение "Ошибка валидации JSON массива параметров!";
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Параметры_;
|
||||
|
Reference in New Issue
Block a user