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