#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТипыВнешнихСистем = ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем();
ДоступныеИнтеграции = ОбсужденияСлужебный.ДоступныеИнтеграции();
ДоступныеКомандыСоздания = Новый Соответствие;
ТипВнешнейСистемы = ТипыВнешнихСистем.Telegram;
ИнтеграцияДоступна = ДоступныеИнтеграции.Найти(ТипВнешнейСистемы) <> Неопределено;
ДоступныеКомандыСоздания["СоздатьБотаTelegram"] = ИнтеграцияДоступна;
Если ИнтеграцияДоступна Тогда
Подключение = СписокПодключений.ПолучитьЭлементы().Добавить();
Подключение.Наименование = НСтр("ru='Чаты Telegram'");
Подключение.Активно = -1;
Подключение.Тип = ТипВнешнейСистемы;
КонецЕсли;
ТипВнешнейСистемы = ТипыВнешнихСистем.ВКонтакте;
ИнтеграцияДоступна = ДоступныеИнтеграции.Найти(ТипВнешнейСистемы) <> Неопределено;
ДоступныеКомандыСоздания["СоздатьБотаВКонтакте"] = ИнтеграцияДоступна;
Если ИнтеграцияДоступна Тогда
Подключение = СписокПодключений.ПолучитьЭлементы().Добавить();
Подключение.Наименование = НСтр("ru='Чаты ВКонтакте'");
Подключение.Активно = -1;
Подключение.Тип = ТипВнешнейСистемы;
КонецЕсли;
ТипВнешнейСистемы = ТипыВнешнихСистем.WhatsApp;
ИнтеграцияДоступна = ДоступныеИнтеграции.Найти(ТипВнешнейСистемы) <> Неопределено;
ДоступныеКомандыСоздания["СоздатьБотаWhatsApp"] = ИнтеграцияДоступна;
Если ИнтеграцияДоступна Тогда
Подключение = СписокПодключений.ПолучитьЭлементы().Добавить();
Подключение.Наименование = НСтр("ru='Чаты WhatsApp'");
Подключение.Активно = -1;
Подключение.Тип = ТипВнешнейСистемы;
КонецЕсли;
ТипВнешнейСистемы = ТипыВнешнихСистем.ВебЧат;
ИнтеграцияДоступна = ДоступныеИнтеграции.Найти(ТипВнешнейСистемы) <> Неопределено;
ДоступныеКомандыСоздания["СоздатьВебЧат"] = ИнтеграцияДоступна;
Если ИнтеграцияДоступна Тогда
Подключение = СписокПодключений.ПолучитьЭлементы().Добавить();
Подключение.Наименование = НСтр("ru='Чаты на сайте'");
Подключение.Активно = -1;
Подключение.Тип = ТипВнешнейСистемы;
КонецЕсли;
ТипВнешнейСистемы = ТипыВнешнихСистем.Webhook;
ИнтеграцияДоступна = ДоступныеИнтеграции.Найти(ТипВнешнейСистемы) <> Неопределено;
ДоступныеКомандыСоздания["СоздатьБотаWebhook"] = ИнтеграцияДоступна;
Если ИнтеграцияДоступна Тогда
Подключение = СписокПодключений.ПолучитьЭлементы().Добавить();
Подключение.Наименование = НСтр("ru='Интеграция Webhook'");
Подключение.Активно = -1;
Подключение.Тип = ТипВнешнейСистемы;
КонецЕсли;
ОбновитьСписокИнтеграций(ДоступныеИнтеграции);
УстановитьВидимостьКомандСоздания(ДоступныеКомандыСоздания);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура СоздатьБотаTelegram(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеИзмененияИнтеграции", ЭтотОбъект);
ОбсужденияСлужебныйКлиент.ПоказатьИнформациюОбИнтеграции(ЭтотОбъект,
Новый Структура("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().Telegram),
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьБотаВКонтакте(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеИзмененияИнтеграции", ЭтотОбъект);
ОбсужденияСлужебныйКлиент.ПоказатьИнформациюОбИнтеграции(ЭтотОбъект,
Новый Структура("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().ВКонтакте),
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьБотаWhatsApp(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеИзмененияИнтеграции", ЭтотОбъект);
ОбсужденияСлужебныйКлиент.ПоказатьИнформациюОбИнтеграции(ЭтотОбъект,
Новый Структура("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().WhatsApp),
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьВебЧат(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеИзмененияИнтеграции", ЭтотОбъект);
ОбсужденияСлужебныйКлиент.ПоказатьИнформациюОбИнтеграции(ЭтотОбъект,
Новый Структура("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().ВебЧат),
Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьБотаWebhook(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеИзмененияИнтеграции", ЭтотОбъект);
ОбсужденияСлужебныйКлиент.ПоказатьИнформациюОбИнтеграции(ЭтотОбъект,
Новый Структура("Тип", ОбсужденияСлужебныйКлиентСервер.ТипыВнешнихСистем().Webhook),
Оповещение);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьВидимостьКомандСоздания(ДоступныеКомандыСоздания)
Для Каждого ЭлементСоздания Из Элементы.ПодменюСоздать.ПодчиненныеЭлементы Цикл
ЭлементСоздания.Видимость = (ДоступныеКомандыСоздания[ЭлементСоздания.ИмяКоманды] = Истина);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПослеИзмененияИнтеграции(Результат, ДополнительныеПараметры) Экспорт
ОбновитьСписокИнтеграций();
КонецПроцедуры
&НаСервере
Процедура ОбновитьСписокИнтеграций(Знач ДоступныеИнтеграции = Неопределено)
Если Не Обсуждения.ОбсужденияДоступны() Тогда
Возврат;
КонецЕсли;
ТипыИнтеграции = Новый Соответствие;
Для каждого ТипИнтеграции Из СписокПодключений.ПолучитьЭлементы() Цикл
ТипИнтеграции.ПолучитьЭлементы().Очистить();
ТипыИнтеграции.Вставить(ТипИнтеграции.Тип, ТипИнтеграции);
КонецЦикла;
ТаблицаИнтеграций = Новый ТаблицаЗначений;
ТаблицаИнтеграций.Колонки.Добавить("Использование");
ТаблицаИнтеграций.Колонки.Добавить("Представление");
ТаблицаИнтеграций.Колонки.Добавить("Идентификатор");
ТаблицаИнтеграций.Колонки.Добавить("ТипВнешнейСистемы");
Интеграции = СистемаВзаимодействия.ПолучитьИнтеграции();
Если ДоступныеИнтеграции = Неопределено Тогда
ДоступныеИнтеграции = ОбсужденияСлужебный.ДоступныеИнтеграции();
КонецЕсли;
Для Каждого Интеграция Из Интеграции Цикл
Если ДоступныеИнтеграции.Найти(Интеграция.ТипВнешнейСистемы) <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(ТаблицаИнтеграций.Добавить(), Интеграция);
КонецЕсли;
КонецЦикла;
ТаблицаИнтеграций.Сортировать("Представление Возр");
Для Каждого Интеграция Из ТаблицаИнтеграций Цикл
Категория = ТипыИнтеграции[Интеграция.ТипВнешнейСистемы];
Если Категория <> Неопределено Тогда
НоваяИнтеграция = Категория.ПолучитьЭлементы().Добавить();
ИнтеграцияВДанныеФормы(Интеграция, НоваяИнтеграция);
Иначе
ЗаписьЖурналаРегистрации(ОбсужденияСлужебный.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Ошибка,,,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Неподдерживаемый тип внешней интеграции %1.'"), Интеграция.ТипВнешнейСистемы));
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ИнтеграцияВДанныеФормы(Знач Интеграция, Знач ДанныеФормы)
ДанныеФормы.Активно = ?(Интеграция.Использование, 0, 2);
ДанныеФормы.Наименование = Интеграция.Представление;
ДанныеФормы.Идентификатор = Интеграция.Идентификатор;
ДанныеФормы.Тип = Интеграция.ТипВнешнейСистемы;
КонецПроцедуры
&НаКлиенте
Процедура СписокПодключенийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Интеграция = СписокПодключений.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если Интеграция.Идентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПослеИзмененияИнтеграции", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Тип", Интеграция.Тип);
ПараметрыФормы.Вставить("Идентификатор", Интеграция.Идентификатор);
ОбсужденияСлужебныйКлиент.ПоказатьИнформациюОбИнтеграции(ЭтотОбъект, ПараметрыФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
ОбновитьНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОбновитьНаСервере()
ОбновитьСписокИнтеграций();
КонецПроцедуры
#КонецОбласти