Compare commits

13 Commits

Author SHA1 Message Date
01db185d34 Удалил обработку для тестов 2025-07-14 09:17:19 +03:00
85c6219a8d Добавил обновление даты последней отправки 2025-07-13 22:55:25 +03:00
219fe05b43 Рефакторинг по замечаниям Sonarqube 2025-07-13 22:08:03 +03:00
1f35a110e1 Рефакторинг по замечаниям Sonarqube 2025-07-13 22:05:17 +03:00
2c8c581088 Удалил ресурс, т.к. он больше не используется 2025-07-13 21:55:24 +03:00
5bf73184d2 Добавил возможность задания периодичности уведомлений
- Уведомения можно получать с периодичностью: Каждый час, Каждый день, Каждую неделю
- Также есть вариант Не уведомлять, который отключает отправку уведомлений о новых версиях
2025-07-13 21:53:07 +03:00
8a88dea2b9 Рефакторинг по замечаниям Sonarqube 2025-07-10 12:51:24 +03:00
78b1198f7a Добавил возможность сравнивания версий
- При уведомлении о неактуальных версиях производится сравнение версий
- При получении статуса конфигурации производится сравнение версий
- Вывод диагностики в случае когда текущая версия старше актуальной. Это считается ошибкой.
2025-07-10 12:25:11 +03:00
97427fb844 Отредактировал список команд в README 2025-07-09 18:50:44 +03:00
63ad60bdf8 Отредактировал список команд в README 2025-07-09 18:48:26 +03:00
869bd182cb Отредактировал список команд в README 2025-07-09 18:36:07 +03:00
ae3fe05e5d Отредактировал список команд в README 2025-07-09 18:33:02 +03:00
d904c25ce6 Отредактировал список команд в README 2025-07-09 18:30:29 +03:00
15 changed files with 479 additions and 941 deletions

View File

@@ -36,12 +36,13 @@
## Поддерживаемые команды
Команда     Описание
/start      Приветствие и справка
/subscribe Список конфигураций для отслеживания
/add        Добавить конфигурацию в список отслеживания
/delete     Удалить конфигурацию из списка отслеживания
/notify_on Включить уведомления о новых версиях
/notify_off Выключить уведомления о новых версиях
/help       Вывести список поддерживаемых команд
| **Команда** | **Описание** |
|:----------------- |:------------------------------------------- |
| **/start** | Приветствие и справка |
| **/subscribe** | Список конфигураций для отслеживания |
| **/add** | Добавить конфигурацию в список отслеживания |
| **/delete** | Удалить конфигурацию из списка отслеживания |
| **/notify_on** | Включить уведомления о новых версиях |
| **/notify_off** | Выключить уведомления о новых версиях |
| **/status** | Вывести информацию о статусе конфигурации |
| **/help** | Вывести список поддерживаемых команд |

View File

@@ -36,9 +36,9 @@
ИначеЕсли КомандаДляОбработки = "/delete" Тогда
ОбработатьКомандуУдалитьКонфигурацию(ОбновлениеТелеграм);
ИначеЕсли КомандаДляОбработки = "/notify_on" Тогда
ОбработатьКомандуВключитьОповещения(ОбновлениеТелеграм);
ОбработатьКомандуВключитьУведомления(ОбновлениеТелеграм);
ИначеЕсли КомандаДляОбработки = "/notify_off" Тогда
ОбработатьКомандуВыключитьОповещения(ОбновлениеТелеграм);
ОбработатьКомандуВыключитьУведомления(ОбновлениеТелеграм);
ИначеЕсли КомандаДляОбработки = "/status" Тогда
ОбработатьКомандуСтатусКонфигурации(ОбновлениеТелеграм);
ИначеЕсли КомандаДляОбработки = "/help" Тогда
@@ -61,6 +61,8 @@
УдалитьКонфигурациюИзСпискаОтслеживания(Данные, ОбновлениеТелеграм.ИдЧата);
ИначеЕсли СтрНачинаетсяС(Данные, XMLСтрока(Перечисления.ВидыДанныхОбратныхВызовов.GetStatus)) Тогда
ПолучитьДанныеСтатусаКонфигурации(Данные, ОбновлениеТелеграм.ИдЧата);
ИначеЕсли СтрНачинаетсяС(Данные, XMLСтрока(Перечисления.ВидыДанныхОбратныхВызовов.NotifyOn)) Тогда
УстановитьПериодУведомления(Данные, ОбновлениеТелеграм.ИдЧата);
Иначе
ОбработатьНеизвестнуюКоманду(ОбновлениеТелеграм);
КонецЕсли;
@@ -136,11 +138,29 @@
Возврат;
КонецЕсли;
ТекстОтвета = СтрШаблон("&#8505 %1%2 %3 &#10145 %4",
РезультатСравненияВерсий = РаботаСОбновлениямиВызовСервера.СравнитьВерсииКонфигураций(
ДанныеКонфигурации.ТекущаяВерсия,
ДанныеКонфигурации.АктуальнаяВерсия);
Если РезультатСравненияВерсий <> Неопределено Тогда
Если РезультатСравненияВерсий < 0 Тогда
Диагностика = "Необходимо обновить текущую версию.";
ИначеЕсли РезультатСравненияВерсий > 0 Тогда
Диагностика = "Текущая версия не может быть старше актуальной!";
Иначе
Диагностика = "Обновление текущей версии не требуется.";
КонецЕсли;
Иначе
Диагностика = "";
КонецЕсли;
ТекстОтвета = СтрШаблон("&#8505 %1%2<code>%3</code> &#8594 <code>%4</code>%5%6",
ДанныеКонфигурации.Наименование,
Символы.ПС,
ДанныеКонфигурации.ТекущаяВерсия,
ДанныеКонфигурации.АктуальнаяВерсия);
ДанныеКонфигурации.АктуальнаяВерсия,
Символы.ПС,
Диагностика);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
Иначе
@@ -150,6 +170,20 @@
КонецПроцедуры
Процедура УстановитьПериодУведомления(ТекстСообщения, ИдЧата)
Команда = XMLСтрока(Перечисления.ВидыДанныхОбратныхВызовов.NotifyOn);
Если НЕ СтрНачинаетсяС(ТекстСообщения, Команда) Тогда
Возврат;
КонецЕсли;
ПериодичностьИмя = СокрЛП(Сред(ТекстСообщения, СтрДлина(Команда) + 1));
Периодичность = Перечисления.ПериодичностьУведомлений[ПериодичностьИмя];
УправлениеОповещениями(ИдЧата, Периодичность);
КонецПроцедуры
Процедура ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя)
ИдЧата = ОбновлениеТелеграм.ИдЧата;
@@ -220,8 +254,10 @@
Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм)
ТекстОтвета = "Привет! Я бот, который поможет тебе следить за обновлениями конфигураций 1С." + Символы.ПС
+ Символы.ВК + Символы.ПС
ТекстОтвета = "&#128075 Привет!"
+ Символы.ПС
+ "Я - бот, который поможет тебе следить за обновлениями конфигураций 1С."
+ Символы.ПС + Символы.ВК + Символы.ПС
+ "Что я умею:" + Символы.ПС
+ "- Отслеживать новые релизы" + Символы.ПС
+ "- Присылать уведомления о выходе обновлений" + Символы.ПС
@@ -288,15 +324,34 @@
КонецПроцедуры
Процедура ОбработатьКомандуВключитьОповещения(ОбновлениеТелеграм)
Процедура ОбработатьКомандуВключитьУведомления(ОбновлениеТелеграм)
УправлениеОповещениями(ОбновлениеТелеграм.ИдЧата, Истина);
ИдЧата = ОбновлениеТелеграм.ИдЧата;
Команда = XMLСтрока(Перечисления.ВидыДанныхОбратныхВызовов.NotifyOn);
МассивКнопок = ТелеграмРаботаСКлавиатурой.МассивРядовСПериодамиОповещения(ИдЧата, Команда);
Если МассивКнопок.Количество() = 0 Тогда
ТекстОтвета = "Не удалось получить список периодов оповещения";
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
Возврат;
КонецЕсли;
Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураВстроенная(МассивКнопок);
ТекстОтвета = "Выберите нужную периодичность оповещения";
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, , Клавиатура);
КонецПроцедуры
Процедура ОбработатьКомандуВыключитьОповещения(ОбновлениеТелеграм)
Процедура ОбработатьКомандуВыключитьУведомления(ОбновлениеТелеграм)
УправлениеОповещениями(ОбновлениеТелеграм.ИдЧата, Ложь);
УправлениеОповещениями(ОбновлениеТелеграм.ИдЧата, Перечисления.ПериодичностьУведомлений.НеУведомлять);
КонецПроцедуры
Процедура УправлениеОповещениями(ИдЧата, ПериодичностьУведомлений)
ТекстОтвета = РегистрыСведений.УведомленияОНовыхВерсиях.УправлениеУведомлениями(ИдЧата, ПериодичностьУведомлений);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
КонецПроцедуры
@@ -318,13 +373,6 @@
КонецПроцедуры
Процедура УправлениеОповещениями(ИдЧата, Включить)
ТекстОтвета = РегистрыСведений.УведомленияОНовыхВерсиях.УправлениеОповещениями(ИдЧата, Включить);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
КонецПроцедуры
Процедура ОбработатьНеизвестнуюКоманду(ОбновлениеТелеграм)
ТекстОтвета = "Данная команда не поддерживается.";

View File

@@ -9,6 +9,7 @@
ТекстСообщения = ТекстСообщенияОНеактуальнойВерсии(ПолучательУведомления.Конфигурации);
ТелеграмМетодыВызовСервера.SendMessage(ПолучательУведомления.ИдЧата, ТекстСообщения,
Перечисления.ТелеграмРежимРазметки.HTML);
РегистрыСведений.УведомленияОНовыхВерсиях.ОбновитьДатуОтправкиУведомления(ПолучательУведомления.ИдЧата);
КонецЦикла;
КонецПроцедуры
@@ -21,18 +22,43 @@
ТекстСообщения = СтрШаблон("Следующие конфигурации имеют неактуальные версии:%1%2", Символы.ПС, Символы.ПС);
КонфигурацииСНекорректнымиВерсиями = Новый Массив;
Для каждого ДанныеКонфигурации Из КонфигурацииДляВывода Цикл
ТекстСообщения = ТекстСообщения + СтрШаблон("&#128293 %1%2 %3 &#10145 %4%5%6",
ДанныеКонфигурации.КонфигурацияПредставление,
Символы.ПС,
ДанныеКонфигурации.ТекущаяВерсия,
ДанныеКонфигурации.АктуальнаяВерсия,
Символы.ПС,
Символы.ПС);
Если ДанныеКонфигурации.РезультатСравнения = Неопределено Тогда
Продолжить;
ИначеЕсли ДанныеКонфигурации.РезультатСравнения > 0 Тогда
КонфигурацииСНекорректнымиВерсиями.Добавить(ДанныеКонфигурации);
Продолжить;
Иначе
ТекстСообщения = ТекстСообщения + ФорматСтрокиСообщенияОНеактуальнойВерсии("&#128293", ДанныеКонфигурации);
КонецЕсли;
КонецЦикла;
Если КонфигурацииСНекорректнымиВерсиями.Количество() > 0 Тогда
ТекстСообщения = ТекстСообщения + СтрШаблон("Внимание! Текущая конфигурация старше актуальной:%1%2",
Символы.ПС, Символы.ПС);
Для каждого ДанныеКонфигурации Из КонфигурацииСНекорректнымиВерсиями Цикл
ТекстСообщения = ТекстСообщения + ФорматСтрокиСообщенияОНеактуальнойВерсии("&#128683", ДанныеКонфигурации);
КонецЦикла;
КонецЕсли;
Возврат ТекстСообщения;
КонецФункции
Функция ФорматСтрокиСообщенияОНеактуальнойВерсии(Эмодзи, ДанныеКонфигурации)
Возврат СтрШаблон("%1 %2%3 <code>%4</code> &#8594 <code>%5</code>%6%7",
Эмодзи,
ДанныеКонфигурации.КонфигурацияПредставление,
Символы.ПС,
ДанныеКонфигурации.ТекущаяВерсия,
ДанныеКонфигурации.АктуальнаяВерсия,
Символы.ПС,
Символы.ПС);
КонецФункции
#КонецОбласти

View File

@@ -223,7 +223,19 @@
|ИЗ
| РегистрСведений.УведомленияОНовыхВерсиях КАК УведомленияОНовыхВерсиях
|ГДЕ
| УведомленияОНовыхВерсиях.ОтправлятьУведомления
| УведомленияОНовыхВерсиях.Периодичность <> ЗНАЧЕНИЕ(Перечисление.ПериодичностьУведомлений.НеУведомлять)
| И ВЫБОР
| КОГДА УведомленияОНовыхВерсиях.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьУведомлений.КаждыйЧас)
| И УведомленияОНовыхВерсиях.ПоследняяОтправка <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, ЧАС, -1)
| ТОГДА ИСТИНА
| КОГДА УведомленияОНовыхВерсиях.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьУведомлений.КаждыйДень)
| И УведомленияОНовыхВерсиях.ПоследняяОтправка <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, -1)
| ТОГДА ИСТИНА
| КОГДА УведомленияОНовыхВерсиях.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьУведомлений.КаждуюНеделю)
| И УведомленияОНовыхВерсиях.ПоследняяОтправка <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, НЕДЕЛЯ, -1)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|////////////////////////////////////////////////////////////////////////////////
@@ -244,6 +256,8 @@
|ИТОГИ ПО
| ИдЧата";
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
РезультатЗапроса = Запрос.Выполнить();
ВыборкаИдЧата = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
@@ -255,10 +269,14 @@
ДанныеВерсийКонфигураций = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ВерсииКонфигурации = Новый Структура("КонфигурацияПредставление, ТекущаяВерсия, АктуальнаяВерсия",
ВыборкаДетальныеЗаписи.КонфигурацияПредставление,
ВыборкаДетальныеЗаписи.ТекущаяВерсия,
ВыборкаДетальныеЗаписи.АктуальнаяВерсия);
ВерсииКонфигурации = Новый Структура;
ВерсииКонфигурации.Вставить("КонфигурацияПредставление", ВыборкаДетальныеЗаписи.КонфигурацияПредставление);
ВерсииКонфигурации.Вставить("ТекущаяВерсия", ВыборкаДетальныеЗаписи.ТекущаяВерсия);
ВерсииКонфигурации.Вставить("АктуальнаяВерсия", ВыборкаДетальныеЗаписи.АктуальнаяВерсия);
РезультатСравнения = СравнитьВерсииКонфигураций(ВыборкаДетальныеЗаписи.ТекущаяВерсия,
ВыборкаДетальныеЗаписи.АктуальнаяВерсия);
ВерсииКонфигурации.Вставить("РезультатСравнения", РезультатСравнения);
ДанныеВерсийКонфигураций.Добавить(ВерсииКонфигурации);
КонецЦикла;
@@ -270,6 +288,43 @@
КонецФункции
// Возвращает результат сравнения двух версий конфигураций: текущей и актуальной.
//
// Параметры:
// ТекущаяВерсия - Строка - версия, установленная у пользователя
// АктуальнаяВерсия - Строка - версия, полученная с сайта вендора
//
// Возвращаемое значение:
// Отрицательное число - текущая версия меньше актуальной
// Положительное число - актуальная версия меньше текущей
// Ноль - номера версий одинаковые
//
Функция СравнитьВерсииКонфигураций(ТекущаяВерсия, АктуальнаяВерсия) Экспорт
НаборГруппТекущаяВерсия = СтрРазделить(ТекущаяВерсия, ".");
НаборГруппАктуальнаяВерсия = СтрРазделить(АктуальнаяВерсия, ".");
Если НаборГруппТекущаяВерсия.Количество() = 0 ИЛИ НаборГруппАктуальнаяВерсия.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
МаксИндексТекущаяВерсия = НаборГруппТекущаяВерсия.ВГраница();
МаксИндексАктуальнаяВерсия = НаборГруппАктуальнаяВерсия.ВГраница();
Для Индекс = 0 По Макс(МаксИндексТекущаяВерсия, МаксИндексАктуальнаяВерсия) Цикл
ГруппаТекущаяВерсия = ?(Индекс <= МаксИндексТекущаяВерсия, Число(НаборГруппТекущаяВерсия[Индекс]), 0);
ГруппаАктуальнаяВерсия = ?(Индекс <= МаксИндексАктуальнаяВерсия, Число(НаборГруппАктуальнаяВерсия[Индекс]), 0);
Компаратор = ГруппаТекущаяВерсия - ГруппаАктуальнаяВерсия;
Если Компаратор <> 0 Тогда
Возврат Компаратор;
КонецЕсли;
КонецЦикла;
Возврат 0;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -289,7 +344,7 @@
Функция НовоеСоединениеХТТП(Таймаут = 0)
Возврат Новый HTTPСоединение("update-api.1c.ru", 443, , , , ?(Таймаут > 0, Таймаут, 15),
Новый ЗащищенноеСоединениеOpenSSL);
Новый ЗащищенноеСоединениеOpenSSL);
КонецФункции

View File

@@ -12,4 +12,12 @@
КонецФункции
Функция СинонимПеречисления(ЗначениеПеречисления) Экспорт
ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя;
ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления);
Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Синоним;
КонецФункции
#КонецОбласти

View File

@@ -93,6 +93,24 @@
КонецФункции
Функция МассивРядовСПериодамиОповещения(ИдЧата, Команда) Экспорт
МассивРядов = Новый Массив;
Для каждого ЗначениеПериода Из Метаданные.Перечисления.ПериодичностьУведомлений.ЗначенияПеречисления Цикл
КнопкаКлавиатурыВстроенной = ТелеграмРаботаСКлавиатурой.КнопкаКлавиатурыВстроенной(ЗначениеПериода.Синоним, ,
СтрШаблон("%1 %2", Команда, ЗначениеПериода.Имя));
Если ЗначениеПериода.Имя <> "НеУведомлять" Тогда
МассивКнопок = Новый Массив;
МассивКнопок.Добавить(КнопкаКлавиатурыВстроенной);
МассивРядов.Добавить(МассивКнопок);
КонецЕсли;
КонецЦикла;
Возврат МассивРядов;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции

View File

@@ -282,6 +282,7 @@
<Enum>ТелеграмРежимРазметки</Enum>
<Enum>ТелеграмСтатусДиалога</Enum>
<Enum>ВидыДанныхОбратныхВызовов</Enum>
<Enum>ПериодичностьУведомлений</Enum>
<DataProcessor>НачальноеЗаполнениеДанных</DataProcessor>
<InformationRegister>ТелеграмИсторияСообщений</InformationRegister>
<InformationRegister>ОтслеживаниеВерсийКонфигураций</InformationRegister>

View File

@@ -74,6 +74,18 @@
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="883f782c-4484-4726-bd3c-4418f8547791">
<Properties>
<Name>NotifyOn</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Notify on</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
</ChildObjects>
</Enum>
</MetaDataObject>

View File

@@ -0,0 +1,91 @@
<?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">
<Enum uuid="bcf975e5-286f-4ac9-916e-52d407fcf18e">
<InternalInfo>
<xr:GeneratedType name="EnumRef.ПериодичностьУведомлений" category="Ref">
<xr:TypeId>3e7044ed-0e3a-4541-8a9e-ab9fe7208033</xr:TypeId>
<xr:ValueId>f43d2234-6787-4a01-a802-fcd547f85afa</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="EnumManager.ПериодичностьУведомлений" category="Manager">
<xr:TypeId>a7526e24-f52f-432e-bf90-905ec2225597</xr:TypeId>
<xr:ValueId>56b27172-4b82-4b46-a2a5-bf87b0ece644</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="EnumList.ПериодичностьУведомлений" category="List">
<xr:TypeId>ce3b1cff-eb12-401e-b368-b061a2a83848</xr:TypeId>
<xr:ValueId>94ee4e38-9b48-46e5-8a02-5c76d151b47e</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>ПериодичностьУведомлений</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Периодичность уведомлений</v8:content>
</v8:item>
</Synonym>
<Comment/>
<UseStandardCommands>false</UseStandardCommands>
<Characteristics/>
<QuickChoice>true</QuickChoice>
<ChoiceMode>BothWays</ChoiceMode>
<DefaultListForm/>
<DefaultChoiceForm/>
<AuxiliaryListForm/>
<AuxiliaryChoiceForm/>
<ListPresentation/>
<ExtendedListPresentation/>
<Explanation/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
</Properties>
<ChildObjects>
<EnumValue uuid="d4414838-b4a0-4852-93a4-6fdd71b7b16b">
<Properties>
<Name>КаждыйЧас</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Каждый час</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="0dcec1a9-d267-43f4-ba1f-ed1c5ade39d7">
<Properties>
<Name>КаждыйДень</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Каждый день</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="b9c44b33-0379-4f76-9ca4-6af791787242">
<Properties>
<Name>КаждуюНеделю</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Каждую неделю</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
<EnumValue uuid="57436476-e3bb-4fc8-bcf2-eca06f286cfe">
<Properties>
<Name>НеУведомлять</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Не уведомлять</v8:content>
</v8:item>
</Synonym>
<Comment/>
</Properties>
</EnumValue>
</ChildObjects>
</Enum>
</MetaDataObject>

View File

@@ -64,18 +64,18 @@
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
</Properties>
<ChildObjects>
<Resource uuid="cdc02f8b-b82c-48d9-b936-bb2515c15258">
<Resource uuid="14a9eafe-73cb-4605-b70e-2a6aae888c2c">
<Properties>
<Name>ОтправлятьУведомления</Name>
<Name>Периодичность</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Отправлять уведомления</v8:content>
<v8:content>Периодичность</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:boolean</v8:Type>
<v8:Type>cfg:EnumRef.ПериодичностьУведомлений</v8:Type>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
@@ -103,6 +103,48 @@
<DataHistory>Use</DataHistory>
</Properties>
</Resource>
<Attribute uuid="5294ea35-db35-4f2d-9764-31972faa1063">
<Properties>
<Name>ПоследняяОтправка</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Последняя отправка</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:DateQualifiers>
<v8:DateFractions>DateTime</v8:DateFractions>
</v8:DateQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Dimension uuid="3d0a0b1e-a7f9-4b8d-b95c-6e23973e0896">
<Properties>
<Name>ИдЧата</Name>

View File

@@ -1,22 +1,70 @@
#Область ПрограммныйИнтерфейс
Функция УправлениеОповещениями(ИдЧата, Включить) Экспорт
Функция УправлениеУведомлениями(ИдЧата, Периодичность) Экспорт
МенеджерЗаписи = СоздатьМенеджерЗаписи();
МенеджерЗаписи.ИдЧата = ИдЧата;
МенеджерЗаписи.Прочитать();
Если МенеджерЗаписи.Выбран() Тогда
Если МенеджерЗаписи.ОтправлятьУведомления = Включить Тогда
Возврат СтрШаблон("Оповещения уже %1", ?(Включить, "включены", "выключены"));
Иначе
МенеджерЗаписи.ОтправлятьУведомления = Включить;
МенеджерЗаписи.Записать();
Возврат СтрШаблон("Оповещения %1", ?(Включить, "включены &#128265", "выключены &#128263"));
КонецЕсли;
Менеджер = СоздатьМенеджерЗаписи();
Менеджер.ИдЧата = ИдЧата;
Менеджер.Прочитать();
Если Не Менеджер.Выбран() Тогда
Возврат НеудачнаяСменеПериодичности(Периодичность);
КонецЕсли;
Возврат СтрШаблон("Не удалось %1 оповещения", ?(Включить, "включить", "выключить"));
Если Менеджер.Периодичность = Периодичность Тогда
Возврат ПовторнаяПопыткаУстановки(Периодичность);
КонецЕсли;
Менеджер.Периодичность = Периодичность;
Менеджер.Записать();
Возврат УспешнаяСменаПериодичности(Периодичность);
КонецФункции
Процедура ОбновитьДатуОтправкиУведомления(ИдЧата) Экспорт
Менеджер = СоздатьМенеджерЗаписи();
Менеджер.ИдЧата = ИдЧата;
Менеджер.Прочитать();
Если Менеджер.Выбран() Тогда
Менеджер.ПоследняяОтправка = ТекущаяДатаСеанса();
Менеджер.Записать();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция НеудачнаяСменеПериодичности(Периодичность)
Возврат СтрШаблон("Не удалось %1 уведомления",
?(Периодичность = Перечисления.ПериодичностьУведомлений.НеУведомлять, "выключить", "включить"));
КонецФункции
Функция ПовторнаяПопыткаУстановки(Периодичность)
Если Периодичность = Перечисления.ПериодичностьУведомлений.НеУведомлять Тогда
Возврат "&#128263 Уведомления уже выключены";
Иначе
Возврат СтрШаблон("&#128265 Уведомления уже включены (%1)",
НРег(ТелеграмПовторноеИспользование.СинонимПеречисления(Периодичность)));
КонецЕсли;
КонецФункции
Функция УспешнаяСменаПериодичности(Периодичность)
Если Периодичность = Перечисления.ПериодичностьУведомлений.НеУведомлять Тогда
Возврат "&#128263 Уведомления выключены";
Иначе
Возврат СтрШаблон("&#128265 Уведомления включены (%1)",
НРег(ТелеграмПовторноеИспользование.СинонимПеречисления(Периодичность)));
КонецЕсли;
КонецФункции
#КонецОбласти

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<JobSchedule xmlns="http://v8.1c.ru/8.3/xcf/extrnprops" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.19">
<Schedule BeginDate="0001-01-01" EndDate="0001-01-01" BeginTime="09:00:00" EndTime="18:00:00" CompletionTime="00:00:00" CompletionInterval="0" RepeatPeriodInDay="14400" RepeatPause="0" WeekDayInMonth="0" DayInMonth="0" WeeksPeriod="1" DaysRepeatPeriod="1">
<ent:WeekDays>1 2 3 4 5</ent:WeekDays>
<Schedule BeginDate="0001-01-01" EndDate="0001-01-01" BeginTime="00:00:00" EndTime="00:00:00" CompletionTime="00:00:00" CompletionInterval="0" RepeatPeriodInDay="3600" RepeatPause="0" WeekDayInMonth="0" DayInMonth="0" WeeksPeriod="1" DaysRepeatPeriod="1">
<ent:WeekDays>1 2 3 4 5 6 7</ent:WeekDays>
<ent:Months>1 2 3 4 5 6 7 8 9 10 11 12</ent:Months>
<ent:DetailedDailySchedules BeginDate="0001-01-01" EndDate="0001-01-01" BeginTime="09:00:00" EndTime="18:00:00" CompletionTime="00:00:00" CompletionInterval="0" RepeatPeriodInDay="14400" RepeatPause="0" WeekDayInMonth="0" DayInMonth="0" WeeksPeriod="1" DaysRepeatPeriod="0">
<ent:DetailedDailySchedules BeginDate="0001-01-01" EndDate="0001-01-01" BeginTime="00:00:00" EndTime="00:00:00" CompletionTime="00:00:00" CompletionInterval="0" RepeatPeriodInDay="3600" RepeatPause="0" WeekDayInMonth="0" DayInMonth="0" WeeksPeriod="1" DaysRepeatPeriod="0">
<ent:WeekDays/>
<ent:Months/>
</ent:DetailedDailySchedules>

View File

@@ -16,7 +16,6 @@
<Explanation/>
<Picture/>
<Content>
<xr:Item xsi:type="xr:MDObjectRef">6a6de453-1c7e-4af2-9ed7-b9b7e86af49a</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">InformationRegister.ОтслеживаниеВерсийКонфигураций</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Catalog.Конфигурации</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Enum.ТелеграмСтатусДиалога</xr:Item>
@@ -25,6 +24,8 @@
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.ОбновленияРегламент</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">InformationRegister.УведомленияОНовыхВерсиях</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">CommonModule.РаботаСОбновлениямиВызовСервера</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">Enum.ПериодичностьУведомлений</xr:Item>
<xr:Item xsi:type="xr:MDObjectRef">b86f0a31-b523-4c41-9927-4dde82319197</xr:Item>
</Content>
</Properties>
<ChildObjects/>

View File

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