diff --git a/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl b/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl
index d31a282..8f3d012 100644
--- a/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl
+++ b/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl
@@ -36,9 +36,9 @@
ИначеЕсли КомандаДляОбработки = "/delete" Тогда
ОбработатьКомандуУдалитьКонфигурацию(ОбновлениеТелеграм);
ИначеЕсли КомандаДляОбработки = "/notify_on" Тогда
- ОбработатьКомандуВключитьОповещения(ОбновлениеТелеграм);
+ ОбработатьКомандуВключитьУведомления(ОбновлениеТелеграм);
ИначеЕсли КомандаДляОбработки = "/notify_off" Тогда
- ОбработатьКомандуВыключитьОповещения(ОбновлениеТелеграм);
+ ОбработатьКомандуВыключитьУведомления(ОбновлениеТелеграм);
ИначеЕсли КомандаДляОбработки = "/status" Тогда
ОбработатьКомандуСтатусКонфигурации(ОбновлениеТелеграм);
ИначеЕсли КомандаДляОбработки = "/help" Тогда
@@ -61,6 +61,8 @@
УдалитьКонфигурациюИзСпискаОтслеживания(Данные, ОбновлениеТелеграм.ИдЧата);
ИначеЕсли СтрНачинаетсяС(Данные, XMLСтрока(Перечисления.ВидыДанныхОбратныхВызовов.GetStatus)) Тогда
ПолучитьДанныеСтатусаКонфигурации(Данные, ОбновлениеТелеграм.ИдЧата);
+ ИначеЕсли СтрНачинаетсяС(Данные, XMLСтрока(Перечисления.ВидыДанныхОбратныхВызовов.NotifyOn)) Тогда
+ УстановитьПериодУведомления(Данные, ОбновлениеТелеграм.ИдЧата);
Иначе
ОбработатьНеизвестнуюКоманду(ОбновлениеТелеграм);
КонецЕсли;
@@ -168,6 +170,22 @@
КонецПроцедуры
+
+Процедура УстановитьПериодУведомления(ТекстСообщения, ИдЧата)
+
+ Команда = XMLСтрока(Перечисления.ВидыДанныхОбратныхВызовов.NotifyOn);
+
+ Если НЕ СтрНачинаетсяС(ТекстСообщения, Команда) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ПериодичностьИмя = СокрЛП(Сред(ТекстСообщения, СтрДлина(Команда) + 1));
+ Периодичность = Перечисления.ПериодичностьУведомлений[ПериодичностьИмя];
+ УправлениеОповещениями(ИдЧата, Периодичность);
+
+КонецПроцедуры
+
+
Процедура ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя)
ИдЧата = ОбновлениеТелеграм.ИдЧата;
@@ -308,15 +326,34 @@
КонецПроцедуры
-Процедура ОбработатьКомандуВключитьОповещения(ОбновлениеТелеграм)
+Процедура ОбработатьКомандуВключитьУведомления(ОбновлениеТелеграм)
- УправлениеОповещениями(ОбновлениеТелеграм.ИдЧата, Истина);
+ ИдЧата = ОбновлениеТелеграм.ИдЧата;
+ Команда = XMLСтрока(Перечисления.ВидыДанныхОбратныхВызовов.NotifyOn);
+
+ МассивКнопок = ТелеграмРаботаСКлавиатурой.МассивРядовСПериодамиОповещения(ИдЧата, Команда);
+ Если МассивКнопок.Количество() = 0 Тогда
+ ТекстОтвета = "Не удалось получить список периодов оповещения";
+ ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
+ Возврат;
+ КонецЕсли;
+
+ Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураВстроенная(МассивКнопок);
+ ТекстОтвета = "Выберите нужную периодичность оповещения";
+ ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, , Клавиатура);
КонецПроцедуры
-Процедура ОбработатьКомандуВыключитьОповещения(ОбновлениеТелеграм)
+Процедура ОбработатьКомандуВыключитьУведомления(ОбновлениеТелеграм)
- УправлениеОповещениями(ОбновлениеТелеграм.ИдЧата, Ложь);
+ УправлениеОповещениями(ОбновлениеТелеграм.ИдЧата, Перечисления.ПериодичностьУведомлений.НеУведомлять);
+
+КонецПроцедуры
+
+Процедура УправлениеОповещениями(ИдЧата, ПериодичностьУведомлений)
+
+ ТекстОтвета = РегистрыСведений.УведомленияОНовыхВерсиях.УправлениеУведомлениями(ИдЧата, ПериодичностьУведомлений);
+ ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
КонецПроцедуры
@@ -338,13 +375,6 @@
КонецПроцедуры
-Процедура УправлениеОповещениями(ИдЧата, Включить)
-
- ТекстОтвета = РегистрыСведений.УведомленияОНовыхВерсиях.УправлениеОповещениями(ИдЧата, Включить);
- ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
-
-КонецПроцедуры
-
Процедура ОбработатьНеизвестнуюКоманду(ОбновлениеТелеграм)
ТекстОтвета = "Данная команда не поддерживается.";
diff --git a/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl b/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl
index 37e2180..294ea36 100644
--- a/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl
+++ b/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl
@@ -223,7 +223,19 @@
|ИЗ
| РегистрСведений.УведомленияОНовыхВерсиях КАК УведомленияОНовыхВерсиях
|ГДЕ
- | УведомленияОНовыхВерсиях.ОтправлятьУведомления
+ | УведомленияОНовыхВерсиях.Периодичность <> ЗНАЧЕНИЕ(Перечисление.ПериодичностьУведомлений.НеУведомлять)
+ | И ВЫБОР
+ | КОГДА УведомленияОНовыхВерсиях.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьУведомлений.КаждыйЧас)
+ | И УведомленияОНовыхВерсиях.ПоследняяОтправка <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, ЧАС, -1)
+ | ТОГДА ИСТИНА
+ | КОГДА УведомленияОНовыхВерсиях.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьУведомлений.КаждыйДень)
+ | И УведомленияОНовыхВерсиях.ПоследняяОтправка <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, ДЕНЬ, -1)
+ | ТОГДА ИСТИНА
+ | КОГДА УведомленияОНовыхВерсиях.Периодичность = ЗНАЧЕНИЕ(Перечисление.ПериодичностьУведомлений.КаждуюНеделю)
+ | И УведомленияОНовыхВерсиях.ПоследняяОтправка <= ДОБАВИТЬКДАТЕ(&ТекущаяДата, НЕДЕЛЯ, -1)
+ | ТОГДА ИСТИНА
+ | ИНАЧЕ ЛОЖЬ
+ | КОНЕЦ
|;
|
|////////////////////////////////////////////////////////////////////////////////
@@ -244,6 +256,8 @@
|ИТОГИ ПО
| ИдЧата";
+ Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
+
РезультатЗапроса = Запрос.Выполнить();
ВыборкаИдЧата = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
diff --git a/src/cf/CommonModules/ТелеграмПовторноеИспользование/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмПовторноеИспользование/Ext/Module.bsl
index 83c0c30..8d01306 100644
--- a/src/cf/CommonModules/ТелеграмПовторноеИспользование/Ext/Module.bsl
+++ b/src/cf/CommonModules/ТелеграмПовторноеИспользование/Ext/Module.bsl
@@ -12,4 +12,12 @@
КонецФункции
+Функция СинонимПеречисления(ЗначениеПеречисления) Экспорт
+
+ ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя;
+ ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления);
+ Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Синоним;
+
+КонецФункции
+
#КонецОбласти
diff --git a/src/cf/CommonModules/ТелеграмРаботаСКлавиатурой/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмРаботаСКлавиатурой/Ext/Module.bsl
index 1657ee4..00994c3 100644
--- a/src/cf/CommonModules/ТелеграмРаботаСКлавиатурой/Ext/Module.bsl
+++ b/src/cf/CommonModules/ТелеграмРаботаСКлавиатурой/Ext/Module.bsl
@@ -93,6 +93,24 @@
КонецФункции
+Функция МассивРядовСПериодамиОповещения(ИдЧата, Команда) Экспорт
+
+ МассивРядов = Новый Массив;
+
+ Для каждого ЗначениеПериода из Метаданные.Перечисления.ПериодичностьУведомлений.ЗначенияПеречисления Цикл
+ КнопкаКлавиатурыВстроенной = ТелеграмРаботаСКлавиатурой.КнопкаКлавиатурыВстроенной(ЗначениеПериода.Синоним, ,
+ СтрШаблон("%1 %2", Команда, ЗначениеПериода.Имя));
+ Если ЗначениеПериода.Имя <> "НеУведомлять" Тогда
+ МассивКнопок = Новый Массив;
+ МассивКнопок.Добавить(КнопкаКлавиатурыВстроенной);
+ МассивРядов.Добавить(МассивКнопок);
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат МассивРядов;
+
+КонецФункции
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml
index caf68e2..40fd71b 100644
--- a/src/cf/Configuration.xml
+++ b/src/cf/Configuration.xml
@@ -282,7 +282,9 @@
ТелеграмРежимРазметки
ТелеграмСтатусДиалога
ВидыДанныхОбратныхВызовов
+ ПериодичностьУведомлений
НачальноеЗаполнениеДанных
+ Тест_Удалить
ТелеграмИсторияСообщений
ОтслеживаниеВерсийКонфигураций
УведомленияОНовыхВерсиях
diff --git a/src/cf/DataProcessors/Тест_Удалить.xml b/src/cf/DataProcessors/Тест_Удалить.xml
new file mode 100644
index 0000000..7d32bc4
--- /dev/null
+++ b/src/cf/DataProcessors/Тест_Удалить.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+ 8794d5d5-b819-491c-a031-56d53e7d8a5f
+ b128426e-d9e5-4b0e-a516-1d23bd5b8e81
+
+
+ 80877c77-fa14-4b57-a545-33245b3f7993
+ 81d4dfa1-1e97-4cd1-a0e6-869af166b6d5
+
+
+
+ Тест_Удалить
+
+
+ ru
+ Тест удалить
+
+
+
+ true
+ DataProcessor.Тест_Удалить.Form.Форма
+
+ false
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/DataProcessors/Тест_Удалить/Forms/Форма.xml b/src/cf/DataProcessors/Тест_Удалить/Forms/Форма.xml
new file mode 100644
index 0000000..d41a6fb
--- /dev/null
+++ b/src/cf/DataProcessors/Тест_Удалить/Forms/Форма.xml
@@ -0,0 +1,22 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/DataProcessors/Тест_Удалить/Forms/Форма/Ext/Form.xml b/src/cf/DataProcessors/Тест_Удалить/Forms/Форма/Ext/Form.xml
new file mode 100644
index 0000000..0915760
--- /dev/null
+++ b/src/cf/DataProcessors/Тест_Удалить/Forms/Форма/Ext/Form.xml
@@ -0,0 +1,24 @@
+
+
\ No newline at end of file
diff --git a/src/cf/DataProcessors/Тест_Удалить/Forms/Форма/Ext/Form/Module.bsl b/src/cf/DataProcessors/Тест_Удалить/Forms/Форма/Ext/Form/Module.bsl
new file mode 100644
index 0000000..044859f
--- /dev/null
+++ b/src/cf/DataProcessors/Тест_Удалить/Forms/Форма/Ext/Form/Module.bsl
@@ -0,0 +1,12 @@
+
+&НаКлиенте
+Процедура Команда1(Команда)
+ Команда1НаСервере();
+КонецПроцедуры
+
+&НаСервере
+Процедура Команда1НаСервере()
+
+ ОбновленияРегламент.ПроверкаНеактуальныхВерсийКонфигураций();
+
+КонецПроцедуры
diff --git a/src/cf/Enums/ВидыДанныхОбратныхВызовов.xml b/src/cf/Enums/ВидыДанныхОбратныхВызовов.xml
index 5e8291c..b8a3d13 100644
--- a/src/cf/Enums/ВидыДанныхОбратныхВызовов.xml
+++ b/src/cf/Enums/ВидыДанныхОбратныхВызовов.xml
@@ -74,6 +74,18 @@
+
+
+ NotifyOn
+
+
+ ru
+ Notify on
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/Enums/ПериодичностьУведомлений.xml b/src/cf/Enums/ПериодичностьУведомлений.xml
new file mode 100644
index 0000000..43caa63
--- /dev/null
+++ b/src/cf/Enums/ПериодичностьУведомлений.xml
@@ -0,0 +1,91 @@
+
+
+
+
+
+ 3e7044ed-0e3a-4541-8a9e-ab9fe7208033
+ f43d2234-6787-4a01-a802-fcd547f85afa
+
+
+ a7526e24-f52f-432e-bf90-905ec2225597
+ 56b27172-4b82-4b46-a2a5-bf87b0ece644
+
+
+ ce3b1cff-eb12-401e-b368-b061a2a83848
+ 94ee4e38-9b48-46e5-8a02-5c76d151b47e
+
+
+
+ ПериодичностьУведомлений
+
+
+ ru
+ Периодичность уведомлений
+
+
+
+ false
+
+ true
+ BothWays
+
+
+
+
+
+
+
+ Auto
+
+
+
+
+ КаждыйЧас
+
+
+ ru
+ Каждый час
+
+
+
+
+
+
+
+ КаждыйДень
+
+
+ ru
+ Каждый день
+
+
+
+
+
+
+
+ КаждуюНеделю
+
+
+ ru
+ Каждую неделю
+
+
+
+
+
+
+
+ НеУведомлять
+
+
+ ru
+ Не уведомлять
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/InformationRegisters/УведомленияОНовыхВерсиях.xml b/src/cf/InformationRegisters/УведомленияОНовыхВерсиях.xml
index 64e594e..d845b23 100644
--- a/src/cf/InformationRegisters/УведомленияОНовыхВерсиях.xml
+++ b/src/cf/InformationRegisters/УведомленияОНовыхВерсиях.xml
@@ -103,6 +103,87 @@
Use
+
+
+ Периодичность
+
+
+ ru
+ Периодичность
+
+
+
+
+ cfg:EnumRef.ПериодичностьУведомлений
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+ Use
+
+
+
+
+ ПоследняяОтправка
+
+
+ ru
+ Последняя отправка
+
+
+
+
+ xs:dateTime
+
+ DateTime
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+ Use
+
+
ИдЧата
diff --git a/src/cf/InformationRegisters/УведомленияОНовыхВерсиях/Ext/ManagerModule.bsl b/src/cf/InformationRegisters/УведомленияОНовыхВерсиях/Ext/ManagerModule.bsl
index b5a403b..85934ac 100644
--- a/src/cf/InformationRegisters/УведомленияОНовыхВерсиях/Ext/ManagerModule.bsl
+++ b/src/cf/InformationRegisters/УведомленияОНовыхВерсиях/Ext/ManagerModule.bsl
@@ -1,22 +1,53 @@
#Область ПрограммныйИнтерфейс
-Функция УправлениеОповещениями(ИдЧата, Включить) Экспорт
+Функция УправлениеУведомлениями(ИдЧата, Периодичность) Экспорт
- МенеджерЗаписи = СоздатьМенеджерЗаписи();
- МенеджерЗаписи.ИдЧата = ИдЧата;
- МенеджерЗаписи.Прочитать();
- Если МенеджерЗаписи.Выбран() Тогда
- Если МенеджерЗаписи.ОтправлятьУведомления = Включить Тогда
- Возврат СтрШаблон("Оповещения уже %1", ?(Включить, "включены", "выключены"));
- Иначе
- МенеджерЗаписи.ОтправлятьУведомления = Включить;
- МенеджерЗаписи.Записать();
- Возврат СтрШаблон("Оповещения %1", ?(Включить, "включены 🔉", "выключены 🔇"));
- КонецЕсли;
+ Менеджер = СоздатьМенеджерЗаписи();
+ Менеджер.ИдЧата = ИдЧата;
+ Менеджер.Прочитать();
+
+ Если Не Менеджер.Выбран() Тогда
+ Возврат СообщениеНеудача(Периодичность);
КонецЕсли;
- Возврат СтрШаблон("Не удалось %1 оповещения", ?(Включить, "включить", "выключить"));
+ Если Менеджер.Периодичность = Периодичность Тогда
+ Возврат СообщениеДублирование(Периодичность);
+ КонецЕсли;
+
+ Менеджер.Периодичность = Периодичность;
+ Менеджер.Записать();
+
+ Возврат СообщениеУспех(Периодичность);
+
+КонецФункции
+Функция СообщениеНеудача(Периодичность)
+
+ Возврат СтрШаблон("Не удалось %1 уведомления",
+ ?(Периодичность = Перечисления.ПериодичностьУведомлений.НеУведомлять, "выключить", "включить"));
+
+КонецФункции
+
+Функция СообщениеДублирование(Периодичность)
+
+ Если Периодичность = Перечисления.ПериодичностьУведомлений.НеУведомлять Тогда
+ Возврат "🔇 Уведомления уже выключены";
+ Иначе
+ Возврат СтрШаблон("🔉 Уведомления уже включены (%1)",
+ НРег(ТелеграмПовторноеИспользование.СинонимПеречисления(Периодичность)));
+ КонецЕсли;
+
+КонецФункции
+
+Функция СообщениеУспех(Периодичность)
+
+ Если Периодичность = Перечисления.ПериодичностьУведомлений.НеУведомлять Тогда
+ Возврат "🔇 Уведомления выключены";
+ Иначе
+ Возврат СтрШаблон("🔉 Уведомления включены (%1)",
+ НРег(ТелеграмПовторноеИспользование.СинонимПеречисления(Периодичность)));
+ КонецЕсли;
+
КонецФункции
#КонецОбласти
\ No newline at end of file
diff --git a/src/cf/Roles/ПолныеПрава/Ext/Rights.xml b/src/cf/Roles/ПолныеПрава/Ext/Rights.xml
index cdfc948..159ec74 100644
--- a/src/cf/Roles/ПолныеПрава/Ext/Rights.xml
+++ b/src/cf/Roles/ПолныеПрава/Ext/Rights.xml
@@ -1,969 +1,156 @@
- false
+ true
true
false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций/Ext/Schedule.xml b/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций/Ext/Schedule.xml
index 3197922..8a26dae 100644
--- a/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций/Ext/Schedule.xml
+++ b/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций/Ext/Schedule.xml
@@ -1,9 +1,9 @@
-
- 1 2 3 4 5
+
+ 1 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9 10 11 12
-
+
diff --git a/src/cf/Subsystems/Обновления.xml b/src/cf/Subsystems/Обновления.xml
index fbe0ca8..5f15c38 100644
--- a/src/cf/Subsystems/Обновления.xml
+++ b/src/cf/Subsystems/Обновления.xml
@@ -16,7 +16,6 @@
- 6a6de453-1c7e-4af2-9ed7-b9b7e86af49a
InformationRegister.ОтслеживаниеВерсийКонфигураций
Catalog.Конфигурации
Enum.ТелеграмСтатусДиалога
@@ -25,6 +24,8 @@
CommonModule.ОбновленияРегламент
InformationRegister.УведомленияОНовыхВерсиях
CommonModule.РаботаСОбновлениямиВызовСервера
+ Enum.ПериодичностьУведомлений
+ DataProcessor.Тест_Удалить
diff --git a/src/cf/VERSION b/src/cf/VERSION
index eac1670..2ab6fd4 100644
--- a/src/cf/VERSION
+++ b/src/cf/VERSION
@@ -1,2 +1,2 @@
-44
+45