From 0585c6ebb40be20b049e082bf3bb49f8034b0ac9 Mon Sep 17 00:00:00 2001 From: vladislav permichev Date: Sat, 28 Dec 2024 16:04:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=D0=B0=20?= =?UTF-8?q?=D1=82=D0=B8=D0=BF=D0=B0=20=D0=A1=D0=A3=D0=91=D0=94=20=D0=B2?= =?UTF-8?q?=D1=80=D1=83=D1=87=D0=BD=D1=83=D1=8E=20=D0=BD=D0=B0=20=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B5=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #159 --- ...1\200\320\260\321\206\320\270\320\270.xml" | 44 +++++++++++ .../Ext/ObjectModule.bsl" | 34 ++++++++ .../Ext/Form.xml" | 77 +++++++++++++++++++ .../Ext/Form/Module.bsl" | 46 +++++++++++ .../Ext/Module.bsl" | 31 +------- .../Ext/Module.bsl" | 2 +- 6 files changed, 204 insertions(+), 30 deletions(-) diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270.xml" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270.xml" index b04aa8fd..ed3b36bb 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270.xml" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270.xml" @@ -853,6 +853,50 @@ Use + + + ТипСУБД + + + ru + Тип СУБД + + + + + xs:string + + 30 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + ForItem + DontIndex + Use + Use + +
ФормаЭлемента
ФормаСписка
ФормаЗагрузкиВнешнейКомпоненты
diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" index 3bb5c0b6..dc7f3f4f 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Ext/ObjectModule.bsl" @@ -64,6 +64,31 @@ ДополнительныеСвойства.Вставить("ЭтоНовый", ЭтоНовый()); + Если Не ЭтоНовый() И ПроверитьЭтоИнтеграцияСВнешнимИсточникомДанных() Тогда + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.Текст = "ВЫБРАТЬ + | пбп_НастройкиИнтеграции.СтрокаПодключения КАК СтрокаПодключения, + | пбп_НастройкиИнтеграции.Порт КАК Порт, + | пбп_НастройкиИнтеграции.ИмяОбъекта КАК ИмяОбъекта, + | пбп_НастройкиИнтеграции.ТипСУБД КАК ТипСУБД + |ИЗ + | Справочник.пбп_НастройкиИнтеграции КАК пбп_НастройкиИнтеграции + |ГДЕ + | пбп_НастройкиИнтеграции.Ссылка = &Ссылка"; + + ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать(); + ВыборкаРезультатаЗапроса.Следующий(); + + Если ИмяОбъекта <> ВыборкаРезультатаЗапроса.ИмяОбъекта + Или СтрокаПодключения <> ВыборкаРезультатаЗапроса.СтрокаПодключения + Или Порт <> ВыборкаРезультатаЗапроса.Порт + Или ТипСУБД <> ВыборкаРезультатаЗапроса.ТипСУБД Тогда + ТекстСообщения = НСтр("ru = 'После записи настроек интеграции необходимо нажать на ""Установить соединение с базой данных для обновления параметров соединения с внешним источником данных""'"); + пбп_Переадресация.СообщитьПользователю(ТекстСообщения); + КонецЕсли; + КонецЕсли; + КонецПроцедуры Процедура ПриЗаписи(Отказ) @@ -141,6 +166,15 @@ КонецПроцедуры +Функция ПроверитьЭтоИнтеграцияСВнешнимИсточникомДанных() + + ЭлементНаследования = Справочники.пбп_ТипыИнтеграций + .ПолучитьПредопределенныйЭлементНаследованияНастроекТипаИнтеграции(ТипИнтеграции); + + Возврат ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ПрямоеПодключениеКБД; + +КонецФункции + #КонецОбласти #Иначе diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form.xml" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form.xml" index 76b95cdf..797f1234 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form.xml" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form.xml" @@ -136,6 +136,83 @@ true + + СтрокаПодключенияМногострочнаяПриИзменении + + + + Объект.ТипСУБД + true + true + + + + 0 + + + + ru + Microsoft SQL Server + + + MSSQLServer + + + + + 0 + + + + ru + Postgre SQL + + + PostgreSQL + + + + + 0 + + + + ru + IDM Db2 + + + IBMDB2 + + + + + 0 + + + + ru + Oracle Database + + + OracleDatabase + + + + + 0 + + + + ru + MySQL + + + MySQL + + + + + diff --git "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" index 01f5ace1..51522f06 100644 --- "a/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" +++ "b/src/cf/Catalogs/\320\277\320\261\320\277_\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\272\320\270\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270/Forms/\320\244\320\276\321\200\320\274\320\260\320\255\320\273\320\265\320\274\320\265\320\275\321\202\320\260/Ext/Form/Module.bsl" @@ -124,6 +124,15 @@ КонецПроцедуры +&НаКлиенте +Процедура СтрокаПодключенияМногострочнаяПриИзменении(Элемент) + + Если ПроверитьЭтоИнтеграцияСВнешнимИсточникомДанных(Объект.ТипИнтеграции) Тогда + Объект.ТипСУБД = ПолучитьИмяСУБДВнешнегоИсточникаДанныхПоСтрокеСоединения(Объект.СтрокаПодключения); + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура СписокНастроекПриИзменении(Элемент) @@ -202,6 +211,7 @@ ГруппаСтрокаПорт = "ГруппаСтрокаПорт"; СтрокаПодключенияМногострочная = "СтрокаПодключенияМногострочная"; УстановитьСоединениеСБазойДанных = "УстановитьСоединениеСБазойДанных"; + ТипСУБДСтрокой = "ТипСУБД"; УстанавливаемоеСвойство = "Видимость"; @@ -211,6 +221,8 @@ Элементы, ГруппаСтрокаПорт, УстанавливаемоеСвойство, Истина); пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, УстановитьСоединениеСБазойДанных, УстанавливаемоеСвойство, Ложь); + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Элементы, ТипСУБДСтрокой, УстанавливаемоеСвойство, Ложь); Если Не ЗначениеЗаполнено(Объект.ТипИнтеграции) Тогда Элементы.СтрокаПодключения.Заголовок = НСтр("ru = 'Каталог'"); @@ -252,6 +264,7 @@ ПодключитьВнешнююКомпоненту = "ПодключитьВнешнююКомпоненту"; СтрокаПодключенияМногострочная = "СтрокаПодключенияМногострочная"; УстановитьСоединениеСБазойДанных = "УстановитьСоединениеСБазойДанных"; + ТипСУБДСтрокой = "ТипСУБД"; СерверСтрока = НСтр("ru = 'Сервер'"); @@ -312,6 +325,8 @@ пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( Элементы, УстановитьСоединениеСБазойДанных, УстанавливаемоеСвойство, Истина); + пбп_ПереадресацияКлиентСервер.УстановитьСвойствоЭлементаФормы( + Элементы, ТипСУБДСтрокой, УстанавливаемоеСвойство, Истина); ИначеЕсли ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.COM Тогда Элементы.СтрокаПодключенияМногострочная.Заголовок = НСтр("ru = 'Строка подключения'"); Элементы.ИмяОбъекта.Заголовок = НСтр("ru = 'Имя COM-объекта'"); @@ -587,4 +602,35 @@ КонецПроцедуры +&НаСервереБезКонтекста +Функция ПроверитьЭтоИнтеграцияСВнешнимИсточникомДанных(ТипИнтеграции) + + ЭлементНаследования = Справочники.пбп_ТипыИнтеграций + .ПолучитьПредопределенныйЭлементНаследованияНастроекТипаИнтеграции(ТипИнтеграции); + + Возврат ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ПрямоеПодключениеКБД; + +КонецФункции + +&НаКлиенте +Функция ПолучитьИмяСУБДВнешнегоИсточникаДанныхПоСтрокеСоединения(СтрокаСоединения) + + Если СтрНайти(СтрокаСоединения, "SQL Server") > 0 Тогда + ИмяСУБД = "MSSQLServer"; + ИначеЕсли СтрНайти(СтрокаСоединения, "PostgreSQL") > 0 Тогда + ИмяСУБД = "PostgreSQL"; + ИначеЕсли СтрНайти(СтрокаСоединения, "IBM DB2") > 0 Тогда + ИмяСУБД = "IBMDB2"; + ИначеЕсли СтрНайти(СтрокаСоединения, "Oracle") > 0 Тогда + ИмяСУБД = "OracleDatabase"; + ИначеЕсли СтрНайти(СтрокаСоединения, "MySQL") > 0 Тогда + ИмяСУБД = "MySQL"; + Иначе + ИмяСУБД = ""; + КонецЕсли; + + Возврат ИмяСУБД; + +КонецФункции + #КонецОбласти // СлужебныеПроцедурыИФункции \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" index 766bea68..7c40274d 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -127,8 +127,7 @@ ПараметрыСоединения.АутентификацияОС = Ложь; ПараметрыСоединения.АутентификацияСтандартная = Истина; ПараметрыСоединения.СтрокаСоединения = СтруктураНастроек.СтрокаПодключения; - ПараметрыСоединения.СУБД = ПолучитьИмяСУБДВнешнегоИсточникаДанныхПоСтрокеСоединения( - СтруктураНастроек.СтрокаПодключения); + ПараметрыСоединения.СУБД = СтруктураНастроек.ТипСУБД; Если СтруктураНастроек.Свойство("Логин") Тогда ПараметрыСоединения.ИмяПользователя = СтруктураНастроек.Логин.Значение; @@ -678,32 +677,6 @@ #Область СлужебныеПроцедурыИФункции -// Получить имя СУБД внешнего источника данных по строке соединения -// -// Параметры: -// СтрокаСоединения - Строка - строка соединения с базой данных -// -// Возвращаемое значение: -// Строка - тип СУБД (см. ПараметрыСоединенияВнешнегоИсточникаДанных) -// -Функция ПолучитьИмяСУБДВнешнегоИсточникаДанныхПоСтрокеСоединения(СтрокаСоединения) - - Если СтрНайти(СтрокаСоединения, "SQL Server") > 0 Тогда - ИмяСУБД = "MSSQLServer"; - ИначеЕсли СтрНайти(СтрокаСоединения, "PostgreSQL") > 0 Тогда - ИмяСУБД = "PostgreSQL"; - ИначеЕсли СтрНайти(СтрокаСоединения, "IBM DB2") > 0 Тогда - ИмяСУБД = "IBMDB2"; - ИначеЕсли СтрНайти(СтрокаСоединения, "Oracle") > 0 Тогда - ИмяСУБД = "OracleDatabase"; - ИначеЕсли СтрНайти(СтрокаСоединения, "MySQL") > 0 Тогда - ИмяСУБД = "MySQL"; - Иначе - ИмяСУБД = Неопределено; - КонецЕсли; - - Возврат ИмяСУБД; - -КонецФункции + #КонецОбласти // СлужебныеПроцедурыИФункции \ No newline at end of file diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" index b572ba60..5bade97c 100644 --- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" +++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\230\320\275\321\202\320\265\320\263\321\200\320\260\321\206\320\270\320\270\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Ext/Module.bsl" @@ -169,7 +169,7 @@ УстановитьПривилегированныйРежим(Истина); СтруктураНастроек = пбп_Переадресация.ЗначенияРеквизитовОбъекта( - НастройкаИнтеграции, "СтрокаПодключения, Порт, ИмяОбъекта"); + НастройкаИнтеграции, "СтрокаПодключения, Порт, ИмяОбъекта, ТипСУБД"); ДанныеБезопасногоХранилища = пбп_Переадресация.ПрочитатьДанныеИзБезопасногоХранилища(НастройкаИнтеграции); Для Каждого КлючИЗначение Из ДанныеБезопасногоХранилища Цикл