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
+
+ 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..59f32fa3 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 = 'После записи настроек интеграции необходимо нажать на ""Установить соединение с базой данных"" для обновления параметров соединения с внешним источником данных'");
+ пбп_Переадресация.СообщитьПользователю(ТекстСообщения);
+ КонецЕсли;
+ КонецЕсли;
+
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
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..4446ea2d 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,32 @@
КонецПроцедуры
+&НаСервереБезКонтекста
+Функция ПроверитьЭтоИнтеграцияСВнешнимИсточникомДанных(ТипИнтеграции)
+
+ Возврат пбп_ИнтеграцииСлужебный.ПроверитьЭтоИнтеграцияСВнешнимИсточникомДанных(ТипИнтеграции);
+
+КонецФункции
+
+&НаКлиенте
+Функция ПолучитьИмяСУБДВнешнегоИсточникаДанныхПоСтрокеСоединения(СтрокаСоединения)
+
+ Если СтрНайти(СтрокаСоединения, "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..cf141230 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 @@
УстановитьПривилегированныйРежим(Истина);
СтруктураНастроек = пбп_Переадресация.ЗначенияРеквизитовОбъекта(
- НастройкаИнтеграции, "СтрокаПодключения, Порт, ИмяОбъекта");
+ НастройкаИнтеграции, "СтрокаПодключения, Порт, ИмяОбъекта, ТипСУБД");
ДанныеБезопасногоХранилища = пбп_Переадресация.ПрочитатьДанныеИзБезопасногоХранилища(НастройкаИнтеграции);
Для Каждого КлючИЗначение Из ДанныеБезопасногоХранилища Цикл
@@ -260,6 +260,23 @@
#КонецОбласти // РаботаСДанными
+// Проверить это интеграция с внешним источником данных
+//
+// Параметры:
+// ТипИнтеграции - СправочникСсылка.пбп_ТипыИнтеграций - тип интеграции
+//
+// Возвращаемое значение:
+// Булево - Истина, если настройка интеграции с типом интеграция с внешним источником данных
+//
+Функция ПроверитьЭтоИнтеграцияСВнешнимИсточникомДанных(ТипИнтеграции) Экспорт
+
+ ЭлементНаследования = Справочники.пбп_ТипыИнтеграций
+ .ПолучитьПредопределенныйЭлементНаследованияНастроекТипаИнтеграции(ТипИнтеграции);
+
+ Возврат ЭлементНаследования = Справочники.пбп_ТипыИнтеграций.ПрямоеПодключениеКБД;
+
+КонецФункции
+
#КонецОбласти // СлужебныйПрограммныйИнтерфейс
#Область СлужебныеПроцедурыИФункции