#Область ПрограммныйИнтерфейс Функция КлавиатураОтвета(Клавиатура, Компактная = Ложь, Одноразовая = Ложь) Экспорт СоответствиеКлавиатуры = Новый Соответствие(); СоответствиеКлавиатуры.Вставить("keyboard", Клавиатура); Если Компактная Тогда СоответствиеКлавиатуры.Вставить("resize_keyboard", Компактная); КонецЕсли; Если Одноразовая Тогда СоответствиеКлавиатуры.Вставить("one_time_keyboard", Одноразовая); КонецЕсли; Возврат СоответствиеКлавиатуры; КонецФункции Функция КлавиатураВстроенная(Клавиатура) Экспорт СоответствиеКлавиатуры = Новый Соответствие(); СоответствиеКлавиатуры.Вставить("inline_keyboard", Клавиатура); Возврат СоответствиеКлавиатуры; КонецФункции Функция КнопкаКлавиатурыВстроенной(Надпись, Url = Неопределено, CallbackData = Неопределено) Экспорт СоответствиеКнопка = Новый Соответствие; СоответствиеКнопка.Вставить("text", ?(НЕ ЗначениеЗаполнено(Надпись), "", Надпись)); Если Url <> Неопределено Тогда СоответствиеКнопка.Вставить("url", Url); КонецЕсли; Если CallbackData <> Неопределено Тогда СоответствиеКнопка.Вставить("callback_data", CallbackData); КонецЕсли; Возврат СоответствиеКнопка; КонецФункции Функция КнопкаКлавиатурыОтвета(Надпись) Экспорт СоответствиеКнопка = Новый Соответствие; СоответствиеКнопка.Вставить("text", ?(НЕ ЗначениеЗаполнено(Надпись), "", Надпись)); Возврат СоответствиеКнопка; КонецФункции Функция РядКнопок(СписокНаименованийКнопокСтрокой) Экспорт Результат = Новый Массив; МассивНаименованийКнопок = СтрРазделить(СписокНаименованийКнопокСтрокой, ";"); Если МассивНаименованийКнопок.Количество() = 0 Тогда Возврат Результат; КонецЕсли; Для каждого НадписьКнопки Из МассивНаименованийКнопок Цикл Результат.Добавить(КнопкаКлавиатурыОтвета(НадписьКнопки)); КонецЦикла; Возврат Результат; КонецФункции Функция МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Подписка = Неопределено) Экспорт СписокКонфигураций = РаботаСОбновлениямиВызовСервера.СписокКонфигураций(ИдЧата); Если СписокКонфигураций.Количество() = 0 Тогда Возврат Неопределено; Иначе МассивРядов = Новый Массив; Для каждого Конфигурация Из СписокКонфигураций Цикл Если НужноДобавитьКнопкуСКонфигурацией(Подписка, Конфигурация) Тогда МассивКнопок = Новый Массив; КнопкаКлавиатурыВстроенной = ТелеграмРаботаСКлавиатурой.КнопкаКлавиатурыВстроенной(Конфигурация.Наименование, , СтрШаблон("%1 %2", Команда, Конфигурация.Имя)); МассивКнопок.Добавить(КнопкаКлавиатурыВстроенной); МассивРядов.Добавить(МассивКнопок); КонецЕсли; КонецЦикла; Возврат МассивРядов; КонецЕсли; КонецФункции Функция МассивРядовСПериодамиОповещения(ИдЧата, Команда) Экспорт МассивРядов = Новый Массив; Для каждого ЗначениеПериода Из Метаданные.Перечисления.ПериодичностьУведомлений.ЗначенияПеречисления Цикл КнопкаКлавиатурыВстроенной = ТелеграмРаботаСКлавиатурой.КнопкаКлавиатурыВстроенной(ЗначениеПериода.Синоним, , СтрШаблон("%1 %2", Команда, ЗначениеПериода.Имя)); Если ЗначениеПериода.Имя <> "НеУведомлять" Тогда МассивКнопок = Новый Массив; МассивКнопок.Добавить(КнопкаКлавиатурыВстроенной); МассивРядов.Добавить(МассивКнопок); КонецЕсли; КонецЦикла; Возврат МассивРядов; КонецФункции #КонецОбласти #Область СлужебныеПроцедурыИФункции Функция НужноДобавитьКнопкуСКонфигурацией(Подписка, Конфигурация) Возврат Подписка = Неопределено ИЛИ (Подписка И Конфигурация.Подписка) ИЛИ (НЕ Подписка И НЕ Конфигурация.Подписка); КонецФункции #КонецОбласти