Compare commits

...

2 Commits

Author SHA1 Message Date
32e52069e8 - Добавил вывод эмодзи в пункты меню 2025-05-28 17:14:24 +03:00
0954815c56 - Добавил оформление областей в общих модулях
- Декомпозиция процедур и функций общих модулей
2025-05-28 09:59:26 +03:00
10 changed files with 116 additions and 79 deletions

View File

@@ -17,8 +17,8 @@
ОбработатьКомандуДобавитьКонфигурацию(ОбновлениеТелеграм);
ИначеЕсли ОбновлениеТелеграм.Сообщение.text = "/delete" Тогда
ОбработатьКомандуУдалитьКонфигурацию(ОбновлениеТелеграм);
ИначеЕсли ДанныеПользователя <> Неопределено
И ДанныеПользователя.СтатусДиалога = Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии Тогда
ИначеЕсли ДанныеПользователя <> Неопределено И ДанныеПользователя.СтатусДиалога =
Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии Тогда
ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя);
КонецЕсли;
ИначеЕсли ОбновлениеТелеграм.Свойство("ИдКоллбэка") <> Неопределено Тогда
@@ -29,7 +29,6 @@
УдалитьКонфигурациюИзСпискаОтслеживания(Данные, ОбновлениеТелеграм.ИдЧата);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
@@ -56,9 +55,9 @@
"Для корректного отслеживания обновлений нужно ввести версию конфигурации (четыре группы цифр, разделённых точками):" +
Символы.ПС +
"Например: 3.1.30.197";
РаботаСОбновлениямиВызовСервера.УстановитьСтатусДиалога(ИдЧата, Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии,
РаботаСОбновлениямиВызовСервера.УстановитьДанныеПользователя(ИдЧата, Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии,
ИмяКонфигурации);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета,,);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
КонецЕсли;
КонецПроцедуры
@@ -86,7 +85,7 @@
ТекстОтвета = "При удалении данных возникла ошибка";
КонецПопытки;
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета,,);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
КонецЕсли;
КонецПроцедуры
@@ -108,7 +107,7 @@
Если НЕ Ответ.Успех Тогда
ТекстОтвета = "При получении данных с сервера произошла ошибка";
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета,,);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
Возврат;
КонецЕсли;
@@ -116,7 +115,7 @@
Если АктуальнаяВерсия = Неопределено Тогда
ТекстОтвета = СтрШаблон("Для указанной версии: %1 нет данных по актуальности", Версия);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета,,);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
Возврат;
КонецЕсли;
@@ -127,13 +126,13 @@
МенеджерЗаписи.АктуальнаяВерсия = АктуальнаяВерсия;
Попытка
МенеджерЗаписи.Записать();
РаботаСОбновлениямиВызовСервера.УстановитьСтатусДиалога(ИдЧата, Перечисления.ТелеграмСтатусДиалога.НачальноеСостояние, "");
РаботаСОбновлениямиВызовСервера.УстановитьДанныеПользователя(ИдЧата, Перечисления.ТелеграмСтатусДиалога.НачальноеСостояние, "");
ТекстОтвета = СтрШаблон("Версия: %1 успешно добавлена", Версия);
Исключение
ТекстОтвета = "При сохранении данных возникла ошибка";
КонецПопытки;
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета,,);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
КонецПроцедуры
@@ -148,7 +147,7 @@
Возврат Ложь;
КонецЕсли;
Для Каждого ГруппаЦифрВерсии Из МассивГруппЦифр Цикл
Если Не ТолькоЦифрыВСтроке(ГруппаЦифрВерсии) Тогда
Если Не ОбщегоНазначенияКлиентСервер.ТолькоЦифрыВСтроке(ГруппаЦифрВерсии) Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
@@ -158,30 +157,6 @@
КонецФункции
Функция ТолькоЦифрыВСтроке(Знач Значение, Знач ПробелыЗапрещены = Истина) Экспорт
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
Возврат Ложь;
КонецЕсли;
Если Не ПробелыЗапрещены Тогда
Значение = СтрЗаменить(Значение, " ", "");
КонецЕсли;
Если СтрДлина(Значение) = 0 Тогда
Возврат Истина;
КонецЕсли;
// Если содержит только цифры, то в результате замен должна быть получена пустая строка.
// Проверять при помощи ПустаяСтрока нельзя, так как в исходной строке могут быть пробельные символы.
Возврат СтрДлина(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
Значение, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")) = 0;
КонецФункции
Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм)
ТекстОтвета = "Привет! Я бот, который поможет тебе следить за обновлениями конфигураций 1С." + Символы.ПС +
@@ -191,11 +166,11 @@
"- Присылать уведомления о выходе обновлений" + Символы.ПС +
"- Показывать текущую версию" + Символы.ПС +
Символы.ВК + Символы.ПС +
"/subscribe - Список конфигураций для отслеживания" + Символы.ПС +
"/add - Добавить конфигурацию в список отслеживания" + Символы.ПС +
"/delete - Удалить конфигурацию из списка отслеживания";
"/subscribe - Список конфигураций для отслеживания &#128276" + Символы.ПС +
"/add - Добавить конфигурацию в список отслеживания &#10133" + Символы.ПС +
"/delete - Удалить конфигурацию из списка отслеживания &#10134";
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета,,);
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
КонецПроцедуры
@@ -208,12 +183,12 @@
ТекстОтвета = "Не удалось получить список конфигураций";
Иначе
Для каждого ПунктМенюПодписки Из СписокКонфигураций Цикл
ТекстОтвета = ТекстОтвета + СтрШаблон("%1 %2%3", ?(ПунктМенюПодписки.Подписка, "[X]", "[ ]"),
ТекстОтвета = ТекстОтвета + СтрШаблон("%1 %2%3", ?(ПунктМенюПодписки.Подписка, "✉️", "◼️"),
ПунктМенюПодписки.Наименование,Символы.ПС);
КонецЦикла;
КонецЕсли;
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета,,);
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
КонецПроцедуры
@@ -222,7 +197,7 @@
ИдЧата = ОбновлениеТелеграм.ИдЧата;
Команда = XMLСтрока(Перечисления.ВидыДанныхКоллбэков.AddVersion);
МассивРядов = МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Ложь);
МассивРядов = ТелеграмРаботаСКлавиатурой.МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Ложь);
Если МассивРядов = Неопределено Тогда
ТекстОтвета = "Не удалось получить список конфигураций";
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
@@ -239,7 +214,7 @@
ИдЧата = ОбновлениеТелеграм.ИдЧата;
Команда = XMLстрока(Перечисления.ВидыДанныхКоллбэков.DeleteVersion);
МассивРядов = МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Истина);
МассивРядов = ТелеграмРаботаСКлавиатурой.МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Истина);
Если МассивРядов = Неопределено Тогда
ТекстОтвета = "Не удалось получить список конфигураций";
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
@@ -252,32 +227,4 @@
КонецПроцедуры
Функция МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Подписка = Неопределено)
СписокКонфигураций = РаботаСОбновлениямиВызовСервера.СписокКонфигураций(ИдЧата);
Если СписокКонфигураций.Количество() = 0 Тогда
Возврат Неопределено;
Иначе
МассивРядов = Новый Массив;
Для каждого ПунктМенюПодписки Из СписокКонфигураций Цикл
Если Подписка = Неопределено
ИЛИ (Подписка И ПунктМенюПодписки.Подписка)
ИЛИ (НЕ Подписка И НЕ ПунктМенюПодписки.Подписка) Тогда
МассивКнопок = Новый Массив;
МассивКнопок.Добавить(ТелеграмРаботаСКлавиатурой.КнопкаКлавиатурыВстроенной(
ПунктМенюПодписки.Наименование
,
,
СтрШаблон("%1 %2", Команда, ПунктМенюПодписки.Имя)
));
МассивРядов.Добавить(МассивКнопок);
КонецЕсли;
КонецЦикла;
Возврат МассивРядов;
КонецЕсли;
КонецФункции
#КонецОбласти

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.19">
<CommonModule uuid="6369b63c-3a4f-418b-8ae9-4cf9a6742883">
<Properties>
<Name>ОбщегоНазначенияКлиентСервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Общего назначения клиент сервер</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>true</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -0,0 +1,26 @@
#Область ПрограммныйИнтерфейс
Функция ТолькоЦифрыВСтроке(Знач Значение, Знач ПробелыЗапрещены = Истина) Экспорт
Если ТипЗнч(Значение) <> Тип("Строка") Тогда
Возврат Ложь;
КонецЕсли;
Если Не ПробелыЗапрещены Тогда
Значение = СтрЗаменить(Значение, " ", "");
КонецЕсли;
Если СтрДлина(Значение) = 0 Тогда
Возврат Истина;
КонецЕсли;
// Если содержит только цифры, то в результате замен должна быть получена пустая строка.
// Проверять при помощи ПустаяСтрока нельзя, так как в исходной строке могут быть пробельные символы.
Возврат СтрДлина(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить( СтрЗаменить(
Значение, "0", ""), "1", ""), "2", ""), "3", ""), "4", ""), "5", ""), "6", ""), "7", ""), "8", ""), "9", "")) = 0;
КонецФункции
#КонецОбласти

View File

@@ -170,7 +170,7 @@
КонецФункции
Процедура УстановитьСтатусДиалога(ИдЧата, НовыйСтатус, ДополнительнаяИнформация) Экспорт
Процедура УстановитьДанныеПользователя(ИдЧата, НовыйСтатус, ДополнительнаяИнформация) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =

View File

@@ -1,4 +1,6 @@
Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт
#Область ПрограммныйИнтерфейс
Функция ПолучитьРасширениеИмениФайла(Знач ИмяФайла) Экспорт
РасширениеФайла = "";
МассивСтрок = СтрРазделить(ИмяФайла, ".", Ложь);
@@ -8,3 +10,5 @@
Возврат РасширениеФайла;
КонецФункции
#КонецОбласти

View File

@@ -1,12 +1,15 @@
Функция ТелеграмТокен() Экспорт
#Область ПрограммныйИнтерфейс
Функция ТелеграмТокен() Экспорт
Возврат Константы.ТелеграмТокен.Получить();
КонецФункции
Функция ЛогироватьHttpЗапросы() Экспорт
Возврат Константы.ЛогироватьHttpЗапросы.Получить();
КонецФункции
#КонецОбласти

View File

@@ -1,4 +1,6 @@
Функция КлавиатураОтвета(Клавиатура, Компактная = Ложь, Одноразовая = Ложь) Экспорт
#Область ПрограммныйИнтерфейс
Функция КлавиатураОтвета(Клавиатура, Компактная = Ложь, Одноразовая = Ложь) Экспорт
СоответствиеКлавиатуры = Новый Соответствие();
@@ -26,7 +28,6 @@
КонецФункции
Функция КнопкаКлавиатурыВстроенной(Надпись, Url = Неопределено, CallbackData = Неопределено) Экспорт
СоответствиеКнопка = Новый Соответствие;
@@ -69,5 +70,33 @@
КонецФункции
Функция МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Подписка = Неопределено) Экспорт
СписокКонфигураций = РаботаСОбновлениямиВызовСервера.СписокКонфигураций(ИдЧата);
Если СписокКонфигураций.Количество() = 0 Тогда
Возврат Неопределено;
Иначе
МассивРядов = Новый Массив;
Для каждого ПунктМенюПодписки Из СписокКонфигураций Цикл
Если Подписка = Неопределено
ИЛИ (Подписка И ПунктМенюПодписки.Подписка)
ИЛИ (НЕ Подписка И НЕ ПунктМенюПодписки.Подписка) Тогда
МассивКнопок = Новый Массив;
МассивКнопок.Добавить(ТелеграмРаботаСКлавиатурой.КнопкаКлавиатурыВстроенной(
ПунктМенюПодписки.Наименование
,
,
СтрШаблон("%1 %2", Команда, ПунктМенюПодписки.Имя)
));
МассивРядов.Добавить(МассивКнопок);
КонецЕсли;
КонецЦикла;
Возврат МассивРядов;
КонецЕсли;
КонецФункции
#КонецОбласти

View File

@@ -1,4 +1,6 @@
// Получить обновления и обработать их по расписанию
#Область ПрограммныйИнтерфейс
// Получить обновления и обработать их по расписанию
Процедура ПроверкаОбновленийПоРасписанию() Экспорт
// Проверка установлен ли вебхук
@@ -17,3 +19,5 @@
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@@ -257,6 +257,7 @@
<CommonModule>ТелеграмРаботаСКлавиатурой</CommonModule>
<CommonModule>ТелеграмРегламент</CommonModule>
<CommonModule>БотОбщегоНазначения</CommonModule>
<CommonModule>ОбщегоНазначенияКлиентСервер</CommonModule>
<HTTPService>HTTPСервис_Telegram</HTTPService>
<ScheduledJob>ПроверкаОбновленийТелеграм</ScheduledJob>
<Constant>ТелеграмТокен</Constant>

View File

@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<VERSION>8</VERSION>
<VERSION>10</VERSION>