1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-10 22:41:43 +02:00

MSSQL: Тесты CLI

This commit is contained in:
Anton Titovets
2025-07-11 23:47:24 +03:00
parent 59215e0a9f
commit 394e2798c8
3 changed files with 864 additions and 2 deletions

View File

@@ -463,7 +463,7 @@ li > a.menu__link {
transform: translateY(-30px) ;
opacity: 0.3;
}
31% {
28% {
opacity: 0;
}
100% {

View File

@@ -23922,7 +23922,7 @@
OPI_MSSQL.УдалитьТаблицу("users" , Соединение); // SKIP
OPI_MSSQL.УдалитьТаблицу("test_data", Соединение); // SKIP
Удаление = OPI_MSSQL.УдалитьТаблицу("test_table", Соединение); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Соединение, "ВыполнитьЗапросSQL (удаление 1)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Удаление, "ВыполнитьЗапросSQL (удаление 1)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Соединение, "ВыполнитьЗапросSQL (соединение)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Соединение, "AddIn.OPI_MSSQL.Main"); // SKIP

View File

@@ -2728,6 +2728,10 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("SQL2" , ПараметрыТеста);
CLI_MSSQL_СформироватьСтрокуПодключения(ПараметрыТеста);
CLI_MSSQL_ВыполнитьЗапросSQL(ПараметрыТеста);
CLI_MSSQL_ПолучитьНастройкиTls(ПараметрыТеста);
КонецПроцедуры
@@ -2737,6 +2741,8 @@
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_IP" , ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("PG_Password", ПараметрыТеста);
OPI_ПолучениеДанныхТестов.ПараметрВКоллекцию("Picture" , ПараметрыТеста);
CLI_MSSQL_СоздатьБазуДанных(ПараметрыТеста);
КонецПроцедуры
@@ -25065,6 +25071,862 @@
#КонецОбласти
#Область MSSQL
Процедура CLI_MSSQL_СформироватьСтрокуПодключения(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
Опции = Новый Структура;
Опции.Вставить("addr" , Адрес);
Опции.Вставить("login", Логин);
Опции.Вставить("pass" , Пароль);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции);
Результат = ПолучитьСтрокуИзДвоичныхДанных(Результат);
Результат = СтрЗаменить(Результат, Пароль, "***");
Результат = СтрЗаменить(Результат, Адрес , "127.0.0.1");
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СформироватьСтрокуПодключения", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Строка(Результат);
КонецПроцедуры
Процедура CLI_MSSQL_ВыполнитьЗапросSQL(ПараметрыФункции)
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
Картинка = ПараметрыФункции["Picture"];
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
ИВФ = ПолучитьИмяВременногоФайла();
Картинка.Записать(ИВФ);
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "test_data";
Опции = Новый Структура;
Опции.Вставить("addr" , Адрес);
Опции.Вставить("db" , База);
Опции.Вставить("login", Логин);
Опции.Вставить("pass" , Пароль);
СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции, Ложь);
СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения);
Опции = Новый Структура;
Опции.Вставить("trust", Истина);
НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTls", Опции, Ложь);
Опции = Новый Структура;
Опции.Вставить("table", "users");
Опции.Вставить("dbc" , СтрокаПодключения);
Опции.Вставить("tls" , НастройкиTLS);
OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции, Ложь);
Опции.Вставить("table", "test_data");
Удаление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Удаление, "ВыполнитьЗапросSQL (удаление 1)", "MSSQL");
Опции.Вставить("table", "test_table");
Удаление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Удаление, "ВыполнитьЗапросSQL (удаление 2)", "MSSQL");
// CREATE
ТекстЗапроса = "
|CREATE TABLE test_table (
| ID INT PRIMARY KEY,
| FirstName NVARCHAR(50),
| LastName NVARCHAR(50),
| BirthDate DATE,
| IsEmployed BIT,
| Salary DECIMAL(10, 2),
| CreatedAt DATETIME,
| Age SMALLINT,
| RowGuid UNIQUEIDENTIFIER,
| Data VARBINARY(MAX)
|);";
Опции = Новый Структура;
Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, "\n"));
Опции.Вставить("dbc" , СтрокаПодключения);
Опции.Вставить("tls" , НастройкиTLS);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Create)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
// INSERT с параметрами
ТекстЗапроса = "
|INSERT INTO test_table (ID, FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data)
|VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10);";
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Новый Структура("INT" , 1));
МассивПараметров.Добавить(Новый Структура("NVARCHAR", "Vitaly"));
МассивПараметров.Добавить(Новый Структура("NVARCHAR", "Alpaca"));
МассивПараметров.Добавить(Новый Структура("DATE" , ТекущаяДата));
МассивПараметров.Добавить(Новый Структура("BIT" , Истина));
МассивПараметров.Добавить(Новый Структура("DECIMAL" , 10.30));
МассивПараметров.Добавить(Новый Структура("DATETIME", ТекущаяДата));
МассивПараметров.Добавить(Новый Структура("SMALLINT", 20));
МассивПараметров.Добавить(Новый Структура("UUID" , Строка(Новый УникальныйИдентификатор)));
МассивПараметров.Добавить(Новый Структура("BYTES" , ИВФ));
Опции = Новый Структура;
Опции.Вставить("sql" , СтрЗаменить(ТекстЗапроса, Символы.ПС, "\n"));
Опции.Вставить("params", МассивПараметров);
Опции.Вставить("dbc" , СтрокаПодключения);
Опции.Вставить("tls" , НастройкиTLS);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (Insert)", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
// SELECT (Результат этого запроса приведен в следующем блоке)
ТекстЗапроса = "SELECT FirstName, LastName, BirthDate, IsEmployed, Salary, CreatedAt, Age, RowGuid, Data FROM test_table;";
Опции = Новый Структура;
Опции.Вставить("sql" , ТекстЗапроса);
Опции.Вставить("dbc" , СтрокаПодключения);
Опции.Вставить("tls" , НастройкиTLS);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции);
Blob = Результат["data"][0]["Data"]["BYTES"]; // SKIP
Результат["data"][0]["Data"]["BYTES"] = "Base64"; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Base64Значение(Blob).Размер(), Картинка.Размер()); // SKIP
ТекстЗапроса = "create table test_data (id INT,first_name NVARCHAR(50),last_name NVARCHAR(50),email NVARCHAR(50),gender NVARCHAR(50),ip_address NVARCHAR(20));";
Опции = Новый Структура;
Опции.Вставить("sql" , ТекстЗапроса);
Опции.Вставить("dbc" , СтрокаПодключения);
Опции.Вставить("tls" , НастройкиTLS);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (test_data)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
// SQL запрос из файла
ФайлSQL = ПараметрыФункции["SQL2"]; // Двоичные данные, URL или путь к файлу
Опции = Новый Структура;
Опции.Вставить("sql" , ФайлSQL);
Опции.Вставить("dbc" , СтрокаПодключения);
Опции.Вставить("tls" , НастройкиTLS);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ВыполнитьЗапросSQL", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ВыполнитьЗапросSQL (файл)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Попытка
УдалитьФайлы(ИВФ);
Исключение
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(ОписаниеОшибки(), "Ошибка удаления файла картинки", "MySQL");
КонецПопытки;
КонецПроцедуры
Процедура CLI_MSSQL_ПолучитьНастройкиTls(ПараметрыФункции)
Опции = Новый Структура;
Опции.Вставить("trust", Истина);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTls", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ПолучитьНастройкиTls", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Соответствие(Результат);
КонецПроцедуры
Процедура CLI_MSSQL_СоздатьБазуДанных(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
Опции = Новый Структура;
Опции.Вставить("addr" , Адрес);
Опции.Вставить("login", Логин);
Опции.Вставить("pass" , Пароль);
СтрокаПодключения = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СформироватьСтрокуПодключения", Опции, Ложь);
СтрокаПодключения = ПолучитьСтрокуИзДвоичныхДанных(СтрокаПодключения);
Опции = Новый Структура;
Опции.Вставить("trust", Истина);
НастройкиTLS = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "ПолучитьНастройкиTls", Опции, Ложь);
База = "testbase1";
Опции = Новый Структура;
Опции.Вставить("base", База);
Опции.Вставить("dbc" , СтрокаПодключения);
Опции.Вставить("tls" , НастройкиTLS);
Удаление = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "УдалитьТаблицу", Опции, Ложь);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Удаление, "СоздатьБазуДанных (удаление)", "MSSQL");
Опции = Новый Структура;
Опции.Вставить("base", База);
Опции.Вставить("dbc" , СтрокаПодключения);
Опции.Вставить("tls" , НастройкиTLS);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "СоздатьБазуДанных", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("mssql", "СоздатьБазуДанных", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьБазуДанных (существующая)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
КонецПроцедуры
Процедура MSSQL_СоздатьТаблицу(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
СтруктураКолонок = Новый Структура;
СтруктураКолонок.Вставить("tinyint_field" , "tinyint");
СтруктураКолонок.Вставить("smallint_field" , "smallint");
СтруктураКолонок.Вставить("int_field" , "int");
СтруктураКолонок.Вставить("bigint_field" , "bigint");
СтруктураКолонок.Вставить("float24_field" , "float(24)");
СтруктураКолонок.Вставить("float53_field" , "float(53)");
СтруктураКолонок.Вставить("bit_field" , "bit");
СтруктураКолонок.Вставить("nvarchar_field" , "nvarchar(4000)");
СтруктураКолонок.Вставить("varbinary_field", "varbinary(max)");
СтруктураКолонок.Вставить("uid_field" , "uniqueidentifier");
СтруктураКолонок.Вставить("numeric_field" , "numeric(5,3)"); // Или decimal
СтруктураКолонок.Вставить("xml_field" , "xml");
СтруктураКолонок.Вставить("date_field" , "date");
СтруктураКолонок.Вставить("time_field" , "time");
СтруктураКолонок.Вставить("dto_field" , "datetimeoffset");
СтруктураКолонок.Вставить("datetime_field" , "datetime");
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Таблица = "АБВ ГДЕ";
Результат = OPI_MSSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу (ошибка имени)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
Таблица = "somename";
СтруктураКолонок.Вставить("wtf_field", "WTF");
Результат = OPI_MSSQL.СоздатьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "СоздатьТаблицу (ошибка типа)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
КонецПроцедуры
Процедура MSSQL_ДобавитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
МассивЗаписей = Новый Массив;
Картинка = ПараметрыФункции["Picture"];
OPI_ПреобразованиеТипов.ПолучитьДвоичныеДанные(Картинка); // Картинка - Тип: ДвоичныеДанные
XML = "<?xml version=""1.0""?>
|<root>
| <element>
| <name>Пример</name>
| <value>123</value>
| </element>
| <element>
| <name>Тест</name>
| <value>456</value>
| </element>
|</root>";
ТекущаяДата = OPI_Инструменты.ПолучитьТекущуюДату();
ТекущаяДатаЧП = OPI_Инструменты.ДатаRFC3339(ТекущаяДата, "+05:00");
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("tinyint_field" , Новый Структура("TINYINT" , 5));
СтруктураЗаписи.Вставить("smallint_field" , Новый Структура("SMALLINT" , 2000));
СтруктураЗаписи.Вставить("int_field" , Новый Структура("INT" , 200000));
СтруктураЗаписи.Вставить("bigint_field" , Новый Структура("BIGINT" , 20000000000));
СтруктураЗаписи.Вставить("float24_field" , Новый Структура("FLOAT24" , 10.1234567));
СтруктураЗаписи.Вставить("float53_field" , Новый Структура("FLOAT53" , 10.123456789123456));
СтруктураЗаписи.Вставить("bit_field" , Новый Структура("BIT" , Истина));
СтруктураЗаписи.Вставить("nvarchar_field" , Новый Структура("NVARCHAR" , "Some text"));
СтруктураЗаписи.Вставить("varbinary_field", Новый Структура("BYTES" , Картинка));
СтруктураЗаписи.Вставить("uid_field" , Новый Структура("UUID" , Новый УникальныйИдентификатор));
СтруктураЗаписи.Вставить("numeric_field" , Новый Структура("NUMERIC" , 5.333));
СтруктураЗаписи.Вставить("xml_field" , Новый Структура("XML" , XML));
СтруктураЗаписи.Вставить("date_field" , Новый Структура("DATE" , ТекущаяДата));
СтруктураЗаписи.Вставить("time_field" , Новый Структура("TIME" , ТекущаяДата));
СтруктураЗаписи.Вставить("dto_field" , Новый Структура("DATETIMEOFFSET", ТекущаяДатаЧП));
СтруктураЗаписи.Вставить("datetime_field" , Новый Структура("DATETIME" , ТекущаяДата));
МассивЗаписей.Добавить(СтруктураЗаписи);
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.ДобавитьЗаписи(Таблица, МассивЗаписей, Истина, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьЗаписи", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура MSSQL_ПолучитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
// Все записи без отборов
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключения, НастройкиTLS);
Если ЗначениеЗаполнено(Результат["data"]) Тогда // SKIP
Результат["data"][0]["varbinary_field"]["BYTES"] = Лев(Результат["data"][0]["varbinary_field"]["BYTES"], 10) + "..."; // SKIP
КонецЕсли; // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаписи", "MSSQL"); // SKIP
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат); // SKIP
// Отборы, выбранные поля, количество и сортировка
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, "test_data", Логин, Пароль);
Таблица = "test_data";
Поля = Новый Массив;
Поля.Добавить("first_name");
Поля.Добавить("last_name");
Поля.Добавить("email");
Фильтры = Новый Массив;
СтруктураФильтра1 = Новый Структура;
СтруктураФильтра1.Вставить("field", "gender");
СтруктураФильтра1.Вставить("type" , "=");
СтруктураФильтра1.Вставить("value", "Male");
СтруктураФильтра1.Вставить("union", "AND");
СтруктураФильтра1.Вставить("raw" , Ложь);
СтруктураФильтра2 = Новый Структура;
СтруктураФильтра2.Вставить("field", "id");
СтруктураФильтра2.Вставить("type" , "BETWEEN");
СтруктураФильтра2.Вставить("value", "20 AND 50");
СтруктураФильтра2.Вставить("raw" , Истина);
Фильтры.Добавить(СтруктураФильтра1);
Фильтры.Добавить(СтруктураФильтра2);
Сортировка = Новый Структура("ip_address", "DESC");
Количество = 5;
Результат = OPI_MSSQL.ПолучитьЗаписи(Таблица, Поля, Фильтры, Сортировка, Количество, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьЗаписи (отборы)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 5);
КонецПроцедуры
Процедура MSSQL_ОбновитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "test_data";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "test_data";
СтруктураПолей = Новый Структура;
СтруктураПолей.Вставить("ip_address", Новый Структура("VARCHAR", "127.0.0.1"));
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "gender");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "Male"));
СтруктураФильтра.Вставить("raw" , Ложь);
Фильтры.Добавить(СтруктураФильтра);
Количество = OPI_MSSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTLS); // SKIP
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Количество, "ОбновитьЗаписи (количество)", "MSSQL"); // SKIP
Количество = Количество["data"].Количество(); // SKIP
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.ОбновитьЗаписи(Таблица, СтруктураПолей, СтруктураФильтра, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОбновитьЗаписи", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Проверка = OPI_MSSQL.ПолучитьЗаписи(Таблица, "['ip_address']", Фильтры, , , СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "ОбновитьЗаписи (проверка)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], Количество);
Для Н = 0 По Проверка["data"].ВГраница() Цикл
OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][Н], СтруктураПолей);
КонецЦикла;
КонецПроцедуры
Процедура MSSQL_УдалитьЗаписи(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "test_data";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "test_data";
Фильтры = Новый Массив;
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "gender");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "Male"));
СтруктураФильтра.Вставить("raw" , Ложь);
СтруктураФильтра.Вставить("union", "AND");
Фильтры.Добавить(СтруктураФильтра);
СтруктураФильтра = Новый Структура;
СтруктураФильтра.Вставить("field", "ip_address");
СтруктураФильтра.Вставить("type" , "=");
СтруктураФильтра.Вставить("value", Новый Структура("NVARCHAR", "127.0.0.1"));
СтруктураФильтра.Вставить("raw" , Ложь);
Получение = OPI_MSSQL.ПолучитьЗаписи(Таблица, , Фильтры, , , СтрокаПодключения, НастройкиTls); // SKIP
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.УдалитьЗаписи(Таблица, Фильтры, СтрокаПодключения, НастройкиTls);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Получение, "УдалитьЗаписи (получение)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Количество = Получение["data"].Количество();
Остаток = 100 - Количество;
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_MSSQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьЗаписи (проверка)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], Остаток);
КонецПроцедуры
Процедура MSSQL_УдалитьТаблицу(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТаблицу", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
База = "test_data";
Таблица = "test_data";
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Результат = OPI_MSSQL.УдалитьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТаблицу (тест)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
КонецПроцедуры
Процедура MSSQL_УдалитьБазуДанных(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль);
База = "testbase1";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.УдалитьБазуДанных(База, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
База = "testbase2";
Подключение = OPI_MSSQL.ОткрытьСоединение(СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Подключение, "УдалитьБазуДанных (открытие)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Компонента(Подключение, "AddIn.OPI_MSSQL.Main");
Результат = OPI_MSSQL.УдалитьБазуДанных(База, Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных (подключение)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_MSSQL.УдалитьБазуДанных(База, Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных (ошибка)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
Закрытие = OPI_MSSQL.ЗакрытьСоединение(Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Закрытие, "УдалитьБазуДанных (закрытие)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Закрытие);
Результат = OPI_MSSQL.УдалитьБазуДанных(База, Подключение);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьБазуДанных (ошибка подключения)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатЛожь(Результат);
КонецПроцедуры
Процедура MSSQL_ОчиститьТаблицу(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.ОчиститьТаблицу(Таблица, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьТаблицу", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_MSSQL.ПолучитьЗаписи(Таблица, , , , , СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьТаблицу (проверка)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0);
КонецПроцедуры
Процедура MSSQL_ПолучитьИнформациюОТаблице(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
Таблица = "testtable";
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.ПолучитьИнформациюОТаблице(Таблица, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИнформациюОТаблице", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 16);
Таблица = "heyho";
Результат = OPI_MSSQL.ПолучитьИнформациюОТаблице(Таблица, СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьИнформациюОТаблице (ошибка)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Массив(Результат["data"], 0);
КонецПроцедуры
Процедура MSSQL_ДобавитьКолонкуТаблицы(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
Таблица = "testtable";
Имя = "new_field";
ТипДанных = "bigint";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.ДобавитьКолонкуТаблицы(Таблица, Имя, ТипДанных, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьКолонкуТаблицы", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_MSSQL.ПолучитьИнформациюОТаблице(Таблица, СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьКолонкуТаблицы (проверка)", "MSSQL");
Найдена = Ложь;
Для Каждого Колонка Из Результат["data"] Цикл
Если Колонка["column_name"] = Имя Тогда
OPI_ПолучениеДанныхТестов.Проверка_Равенство(нРег(ТипДанных), нРег(Колонка["data_type"]));
Найдена = Истина;
КонецЕсли;
КонецЦикла;
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Найдена, Истина);
КонецПроцедуры
Процедура MSSQL_УдалитьКолонкуТаблицы(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
Таблица = "testtable";
Имя = "new_field";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.УдалитьКолонкуТаблицы(Таблица, Имя, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКолонкуТаблицы", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
Результат = OPI_MSSQL.ПолучитьИнформациюОТаблице(Таблица, СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКолонкуТаблицы (проверка)", "MSSQL");
Найдена = Ложь;
Для Каждого Колонка Из Результат["data"] Цикл
Если Колонка["column_name"] = Имя Тогда
Найдена = Истина;
КонецЕсли;
КонецЦикла;
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Найдена, Ложь);
КонецПроцедуры
Процедура MSSQL_ГарантироватьТаблицу(ПараметрыФункции)
Адрес = ПараметрыФункции["PG_IP"];
Логин = "SA";
Пароль = ПараметрыФункции["PG_Password"];
База = "testbase1";
Таблица = "testtable";
НастройкиTLS = OPI_MSSQL.ПолучитьНастройкиTls(Истина);
СтрокаПодключения = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль);
СтруктураКолонок = Новый Структура;
СтруктураКолонок.Вставить("smallint_field" , "smallint");
СтруктураКолонок.Вставить("double_field" , "real");
СтруктураКолонок.Вставить("bigint_field" , "bigint");
СтруктураКолонок.Вставить("custom_field" , "nvarchar");
// При использовании строки подключения инициализируется новое соединение,
// которое будет закрыто после выполнения функции.
// В случае выполнения нескольких операций желательно использовать одно соединение,
// заранее созданное функцией ОткрытьСоединение()
Результат = OPI_MSSQL.ГарантироватьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ГарантироватьТаблицу", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Истина(Результат["commit"]["result"]);
Проверка = OPI_MSSQL.ПолучитьИнформациюОТаблице(Таблица, СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "ГарантироватьТаблицу (проверка)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], СтруктураКолонок.Количество());
Для Каждого Колонка Из Проверка["data"] Цикл
ТекущийТип = Колонка["data_type"];
OPI_ПолучениеДанныхТестов.Проверка_Равенство(нРег(ТекущийТип), нРег(СтруктураКолонок[Колонка["column_name"]]));
КонецЦикла;
Таблица = "test_new";
Результат = OPI_MSSQL.ГарантироватьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ГарантироватьТаблицу (новая)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Результат);
OPI_ПолучениеДанныхТестов.Проверка_Истина(Результат["commit"]["result"]);
Проверка = OPI_MSSQL.ПолучитьИнформациюОТаблице(Таблица, СтрокаПодключения, НастройкиTLS);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "ГарантироватьТаблицу (новая, проверка)", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_РезультатИстина(Проверка);
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], СтруктураКолонок.Количество());
Для Каждого Колонка Из Проверка["data"] Цикл
ТекущийТип = Колонка["data_type"];
OPI_ПолучениеДанныхТестов.Проверка_Равенство(нРег(ТекущийТип), нРег(СтруктураКолонок[Колонка["column_name"]]));
КонецЦикла;
КонецПроцедуры
Процедура MSSQL_ПолучитьСтруктуруФильтраЗаписей(ПараметрыФункции)
Результат = OPI_MSSQL.ПолучитьСтруктуруФильтраЗаписей();
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруФильтраЗаписей", "MSSQL");
OPI_ПолучениеДанныхТестов.Проверка_Структура(Результат);
Результат = OPI_MSSQL.ПолучитьСтруктуруФильтраЗаписей(Истина);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ПолучитьСтруктуруФильтраЗаписей (пустая)", "MSSQL");
Для Каждого Элемент Из Результат Цикл
OPI_ПолучениеДанныхТестов.Проверка_Пусто(Элемент.Значение);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецОбласти