diff --git a/src/ru/OPI/src/CommonModules/OPI_MSSQL/Module.bsl b/src/ru/OPI/src/CommonModules/OPI_MSSQL/Module.bsl index b6d7878117..00241a865b 100644 --- a/src/ru/OPI/src/CommonModules/OPI_MSSQL/Module.bsl +++ b/src/ru/OPI/src/CommonModules/OPI_MSSQL/Module.bsl @@ -1,4 +1,4 @@ -// OneScript: ./OInt/core/Modules/OPI_MSSQL.os +// OneScript: ./OInt/core/Modules/OPI_MSSQL.os // Lib: MSSQL // CLI: mssql // Keywords: mssql, ms sql @@ -556,7 +556,7 @@ Особенности.Вставить("НумерацияПараметров", Истина); Особенности.Вставить("МаркерПараметров" , "@P"); Особенности.Вставить("СУБД" , "mssql"); - Особенности.Вставить("ПолеКолонки" , "COLUMN_NAME"); + Особенности.Вставить("ПолеКолонки" , "column_name"); Особенности.Вставить("НачалоТранзакции" , "BEGIN TRAN"); Возврат Особенности; diff --git a/src/ru/OPI/src/CommonModules/OPI_ЗапросыSQL/Module.bsl b/src/ru/OPI/src/CommonModules/OPI_ЗапросыSQL/Module.bsl index c304a1bf46..844b6a9a88 100644 --- a/src/ru/OPI/src/CommonModules/OPI_ЗапросыSQL/Module.bsl +++ b/src/ru/OPI/src/CommonModules/OPI_ЗапросыSQL/Module.bsl @@ -1,4 +1,4 @@ -// OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os +// OneScript: ./OInt/tools/Modules/OPI_ЗапросыSQL.os // MIT License @@ -941,10 +941,12 @@ Таблица = Схема["table"]; Имя = Схема["name"]; + СУБД = Схема["dbms"]; - ШаблонSQL = "ALTER TABLE %1 DROP %2"; - - ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, Имя); + ШаблонSQL = "ALTER TABLE %1 DROP %2 %3"; + Уточнение = ?(СУБД = "mssql", "COLUMN", ""); + + ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, Уточнение, Имя); Возврат ТекстSQL; diff --git a/src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl b/src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl index 08b07faa27..174c5954b0 100644 --- a/src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl +++ b/src/ru/OPI/src/CommonModules/OPI_Тесты/Module.bsl @@ -1,4 +1,4 @@ -// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os +// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os // MIT License @@ -2845,6 +2845,13 @@ MSSQL_ПолучитьЗаписи(ПараметрыТеста); MSSQL_ОбновитьЗаписи(ПараметрыТеста); MSSQL_УдалитьЗаписи(ПараметрыТеста); + MSSQL_ОчиститьТаблицу(ПараметрыТеста); + MSSQL_ПолучитьИнформациюОТаблице(ПараметрыТеста); + MSSQL_ДобавитьКолонкуТаблицы(ПараметрыТеста); + MSSQL_УдалитьКолонкуТаблицы(ПараметрыТеста); + MSSQL_ГарантироватьТаблицу(ПараметрыТеста); + MSSQL_УдалитьТаблицу(ПараметрыТеста); + MSSQL_УдалитьБазуДанных(ПараметрыТеста); КонецПроцедуры @@ -20071,6 +20078,10 @@ СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль); + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() Результат = OPI_MySQL.ДобавитьКолонкуТаблицы(Таблица, Имя, ТипДанных, СтрокаПодключения); // END @@ -20143,6 +20154,10 @@ СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль); + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() Результат = OPI_MySQL.УдалитьКолонкуТаблицы(Таблица, Имя, СтрокаПодключения); // END @@ -20210,6 +20225,10 @@ СтруктураКолонок.Вставить("bigint_field" , "BIGINT"); СтруктураКолонок.Вставить("custom_field" , "TEXT"); + // При использовании строки подключения инициализируется новое соединение, + // которое будет закрыто после выполнения функции. + // В случае выполнения нескольких операций желательно использовать одно соединение, + // заранее созданное функцией ОткрытьСоединение() Результат = OPI_MySQL.ГарантироватьТаблицу(Таблица, СтруктураКолонок, СтрокаПодключения); // END @@ -23787,9 +23806,8 @@ Адрес = ПараметрыФункции["PG_IP"]; Логин = "bayselonarrend"; Пароль = ПараметрыФункции["PG_Password"]; - База = ""; - Результат = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль); + Результат = OPI_MSSQL.СформироватьСтрокуПодключения(Адрес, , Логин, Пароль); // END @@ -24346,6 +24364,304 @@ КонецПроцедуры +Процедура 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"]])); + КонецЦикла; + +КонецПроцедуры + #КонецОбласти #КонецОбласти