diff --git a/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl b/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl
index ef7770c..208991e 100644
--- a/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl
+++ b/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl
@@ -7,7 +7,7 @@
Для каждого ОбновлениеТелеграм Из МассивОбновленийТелеграм Цикл
ТелеграмОбщегоНазначения.СохранитьСообщениеВБазу(ОбновлениеТелеграм);
- ДанныеПользователя = РаботаСОбновлениямиВызовСервера.ПолучитьДанныеПользователя(ОбновлениеТелеграм.ИдЧата);
+ ДанныеПользователя = РаботаСОбновлениямиВызовСервера.ДанныеПользователя(ОбновлениеТелеграм.ИдЧата);
Если ОбновлениеТелеграм.Свойство("ИдСообщения") Тогда
Если ОбновлениеТелеграм.Сообщение.text = "/start" Тогда
@@ -18,6 +18,12 @@
ОбработатьКомандуДобавитьКонфигурацию(ОбновлениеТелеграм);
ИначеЕсли ОбновлениеТелеграм.Сообщение.text = "/delete" Тогда
ОбработатьКомандуУдалитьКонфигурацию(ОбновлениеТелеграм);
+ ИначеЕсли ОбновлениеТелеграм.Сообщение.text = "/notify_on" Тогда
+ ОбработатьКомандуВключитьОповещения(ОбновлениеТелеграм);
+ ИначеЕсли ОбновлениеТелеграм.Сообщение.text = "/notify_off" Тогда
+ ОбработатьКомандуВыключитьОповещения(ОбновлениеТелеграм);
+ ИначеЕсли ОбновлениеТелеграм.Сообщение.text = "/status" Тогда
+ ОбработатьКомандуСтатусКонфигурации(ОбновлениеТелеграм);
ИначеЕсли ДанныеПользователя <> Неопределено И ДанныеПользователя.СтатусДиалога =
Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии Тогда
ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя);
@@ -28,6 +34,8 @@
ДобавитьКонфигурациюВСписокОтслеживания(Данные, ОбновлениеТелеграм.ИдЧата);
ИначеЕсли СтрНачинаетсяС(Данные, XMLСтрока(Перечисления.ВидыДанныхКоллбэков.DeleteVersion)) Тогда
УдалитьКонфигурациюИзСпискаОтслеживания(Данные, ОбновлениеТелеграм.ИдЧата);
+ ИначеЕсли СтрНачинаетсяС(Данные, XMLСтрока(Перечисления.ВидыДанныхКоллбэков.GetStatus)) Тогда
+ ПолучитьДанныеСтатусаКонфигурации(Данные, ОбновлениеТелеграм.ИдЧата);
КонецЕсли;
КонецЕсли;
КонецЦикла;
@@ -57,7 +65,7 @@
Символы.ПС +
"Например: 3.1.30.197";
РаботаСОбновлениямиВызовСервера.УстановитьДанныеПользователя(ИдЧата, Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии,
- ИмяКонфигурации);
+ ИмяКонфигурации);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
КонецЕсли;
@@ -91,6 +99,34 @@
КонецПроцедуры
+Процедура ПолучитьДанныеСтатусаКонфигурации(ТекстСообщения, ИдЧата)
+
+ Команда = XMLСтрока(Перечисления.ВидыДанныхКоллбэков.GetStatus);
+ Если НЕ СтрНачинаетсяС(ТекстСообщения, Команда) Тогда
+ Возврат;
+ КонецЕсли;
+
+ ИмяКонфигурации = СокрЛП(Сред(ТекстСообщения, СтрДлина(Команда) + 1));
+
+ Конфигурация = РаботаСОбновлениямиВызовСервера.КонфигурацияПоИмени(ИмяКонфигурации);
+
+ Если Конфигурация <> Неопределено Тогда
+ ДанныеКонфигурации = РаботаСОбновлениямиВызовСервера.СтатусКонфигурацииИзПодписки(ИдЧата, Конфигурация);
+
+ ТекстОтвета = СтрШаблон("ℹ %1%2 %3 ➡ %4",
+ ДанныеКонфигурации.Наименование,
+ Символы.ПС,
+ ДанныеКонфигурации.ТекущаяВерсия,
+ ДанныеКонфигурации.АктуальнаяВерсия);
+
+ ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
+ Иначе
+ ТекстОтвета = "По данной конфигурации информация отсутствует.";
+ ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
+ КонецЕсли;
+
+КонецПроцедуры
+
Процедура ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя)
ИдЧата = ОбновлениеТелеграм.ИдЧата;
@@ -165,11 +201,14 @@
"Что я умею:" + Символы.ПС +
"- Отслеживать новые релизы" + Символы.ПС +
"- Присылать уведомления о выходе обновлений" + Символы.ПС +
- "- Показывать текущую версию" + Символы.ПС +
+ "- Показывать текущую информацию о статусе конфигурации" + Символы.ПС +
Символы.ВК + Символы.ПС +
- "/subscribe - Список конфигураций для отслеживания 🔔" + Символы.ПС +
- "/add - Добавить конфигурацию в список отслеживания ➕" + Символы.ПС +
- "/delete - Удалить конфигурацию из списка отслеживания ➖";
+ "/subscribe - Список конфигураций для отслеживания" + Символы.ПС +
+ "/add - Добавить конфигурацию в список отслеживания" + Символы.ПС +
+ "/delete - Удалить конфигурацию из списка отслеживания" + Символы.ПС +
+ "/notify_on - Включить уведомления о новых версиях" + Символы.ПС +
+ "/notify_off - Выключить уведомления о новых версиях" + Символы.ПС +
+ "/status - Вывести информацию о статусе конфигурации";
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
@@ -184,7 +223,7 @@
ТекстОтвета = "Не удалось получить список конфигураций";
Иначе
Для каждого ПунктМенюПодписки Из СписокКонфигураций Цикл
- ТекстОтвета = ТекстОтвета + СтрШаблон("%1 %2%3", ?(ПунктМенюПодписки.Подписка, "✉️", "◼️"),
+ ТекстОтвета = ТекстОтвета + СтрШаблон("%1 %2%3", ?(ПунктМенюПодписки.Подписка, "✅", "◼️"),
ПунктМенюПодписки.Наименование,Символы.ПС);
КонецЦикла;
КонецЕсли;
@@ -228,4 +267,41 @@
КонецПроцедуры
+Процедура ОбработатьКомандуВключитьОповещения(ОбновлениеТелеграм)
+
+ УправлениеОповещениями(ОбновлениеТелеграм.ИдЧата, Истина);
+
+КонецПроцедуры
+
+Процедура ОбработатьКомандуВыключитьОповещения(ОбновлениеТелеграм)
+
+ УправлениеОповещениями(ОбновлениеТелеграм.ИдЧата, Ложь);
+
+КонецПроцедуры
+
+Процедура ОбработатьКомандуСтатусКонфигурации(ОбновлениеТелеграм)
+
+ ИдЧата = ОбновлениеТелеграм.ИдЧата;
+ Команда = XMLстрока(Перечисления.ВидыДанныхКоллбэков.GetStatus);
+
+ МассивРядов = ТелеграмРаботаСКлавиатурой.МассивРядовСоСпискомКонфигураций(ИдЧата, Команда, Истина);
+ Если МассивРядов = Неопределено Тогда
+ ТекстОтвета = "Не удалось получить список конфигураций";
+ ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
+ КонецЕсли;
+
+ Клавиатура = ТелеграмРаботаСКлавиатурой.КлавиатураВстроенная(МассивРядов);
+
+ ТекстОтвета = "Выберите нужную конфигурацию для получения ее статуса";
+ ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета,, Клавиатура);
+
+КонецПроцедуры
+
+Процедура УправлениеОповещениями(ИдЧата, Включить)
+
+ ТекстОтвета = РегистрыСведений.УведомленияОНовыхВерсиях.УправлениеОповещениями(ИдЧата, Включить);
+ ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
+
+КонецПроцедуры
+
#КонецОбласти
\ No newline at end of file
diff --git a/src/cf/CommonModules/ОбновленияРегламент.xml b/src/cf/CommonModules/ОбновленияРегламент.xml
new file mode 100644
index 0000000..0f72ffe
--- /dev/null
+++ b/src/cf/CommonModules/ОбновленияРегламент.xml
@@ -0,0 +1,23 @@
+
+
+
+
+ ОбновленияРегламент
+
+
+ ru
+ Обновления регламент
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ DontUse
+
+
+
\ No newline at end of file
diff --git a/src/cf/CommonModules/ОбновленияРегламент/Ext/Module.bsl b/src/cf/CommonModules/ОбновленияРегламент/Ext/Module.bsl
new file mode 100644
index 0000000..c6658ac
--- /dev/null
+++ b/src/cf/CommonModules/ОбновленияРегламент/Ext/Module.bsl
@@ -0,0 +1,38 @@
+#Область ПрограммныйИнтерфейс
+
+Процедура ПроверкаНеактуальныхВерсийКонфигураций() Экспорт
+
+ РегистрыСведений.ОтслеживаниеВерсийКонфигураций.АктуализироватьВерсииКонфигураций();
+ СписокДляРассылкиУведомлений = РаботаСОбновлениямиВызовСервера.СписокНеактуальныхКонфигурацийДляУведомления();
+
+ Для Каждого ПолучательУведомления из СписокДляРассылкиУведомлений Цикл
+ ТекстСообщения = СообщениеОНеактуальнойВерсии(ПолучательУведомления.Конфигурации);
+ ТелеграмМетодыВызовСервера.SendMessage(ПолучательУведомления.ИдЧата, ТекстСообщения,
+ Перечисления.ТелеграмРежимРазметки.HTML);
+ КонецЦикла;
+
+КонецПроцедуры
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Функция СообщениеОНеактуальнойВерсии(КонфигурацииДляВывода)
+
+ ТекстСообщения = СтрШаблон("Следующие конфигурации имеют неактуальные версии:%1%2", Символы.ПС, Символы.ПС);
+
+ Для каждого ДанныеКонфигурации Из КонфигурацииДляВывода Цикл
+ ТекстСообщения = ТекстСообщения + СтрШаблон("🔥 %1%2 %3 ➡ %4%5%6",
+ ДанныеКонфигурации.КонфигурацияПредставление,
+ Символы.ПС,
+ ДанныеКонфигурации.ТекущаяВерсия,
+ ДанныеКонфигурации.АктуальнаяВерсия,
+ Символы.ПС,
+ Символы.ПС);
+ КонецЦикла;
+
+ Возврат ТекстСообщения;
+
+КонецФункции
+
+#КонецОбласти
\ No newline at end of file
diff --git a/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl b/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl
index d7fb2be..aa0e37b 100644
--- a/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl
+++ b/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl
@@ -52,6 +52,39 @@
КонецФункции
+Функция СтатусКонфигурацииИзПодписки(ИдЧата, Конфигурация) Экспорт
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ОтслеживаниеВерсийКонфигураций.Конфигурация.Наименование КАК Наименование,
+ | ОтслеживаниеВерсийКонфигураций.ТекущаяВерсия КАК ТекущаяВерсия,
+ | ОтслеживаниеВерсийКонфигураций.АктуальнаяВерсия КАК АктуальнаяВерсия
+ |ИЗ
+ | РегистрСведений.ОтслеживаниеВерсийКонфигураций КАК ОтслеживаниеВерсийКонфигураций
+ |ГДЕ
+ | ОтслеживаниеВерсийКонфигураций.ИдЧата = &ИдЧата
+ | И ОтслеживаниеВерсийКонфигураций.Конфигурация = &Конфигурация";
+
+ Запрос.УстановитьПараметр("ИдЧата", ИдЧата);
+ Запрос.УстановитьПараметр("Конфигурация", Конфигурация);
+
+ РезультатЗапроса = Запрос.Выполнить();
+
+ ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
+
+ Если ВыборкаДетальныеЗаписи.Следующий() Тогда
+ Результат = Новый Структура("Наименование, ТекущаяВерсия, АктуальнаяВерсия",
+ ВыборкаДетальныеЗаписи.Наименование,
+ ВыборкаДетальныеЗаписи.ТекущаяВерсия,
+ ВыборкаДетальныеЗаписи.АктуальнаяВерсия);
+ Возврат Результат;
+ КонецЕсли;
+
+ Возврат Неопределено;
+
+КонецФункции
+
Функция СписокКонфигураций(ИдЧата) Экспорт
Запрос = Новый Запрос;
@@ -97,54 +130,6 @@
КонецФункции
-Функция АктуализироватьВерсииКонфигураций()Экспорт
-
- Запрос = Новый Запрос;
- Запрос.Текст =
- "ВЫБРАТЬ
- | ОтслеживаниеВерсийКонфигураций.Конфигурация КАК Конфигурация,
- | ОтслеживаниеВерсийКонфигураций.ИдЧата КАК ИдЧата,
- | ОтслеживаниеВерсийКонфигураций.ТекущаяВерсия КАК ТекущаяВерсия,
- | ОтслеживаниеВерсийКонфигураций.АктуальнаяВерсия КАК АктуальнаяВерсия
- |ИЗ
- | РегистрСведений.ОтслеживаниеВерсийКонфигураций КАК ОтслеживаниеВерсийКонфигураций";
-
- РезультатЗапроса = Запрос.Выполнить();
-
- ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
-
- КэшАктуальныхВерсий = РезультатЗапроса.Выгрузить().СкопироватьКолонки();
- КэшАктуальныхВерсий.Колонки.Удалить("ИдЧата");
- ОбработаноЗаписей = 0;
- Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
- Конфигурация = ВыборкаДетальныеЗаписи.Конфигурация;
- ТекущаяВерсия = ВыборкаДетальныеЗаписи.ТекущаяВерсия;
- ИдЧата = ВыборкаДетальныеЗаписи.ИдЧата;
-
- АктуальнаяВерсия = ПолучитьИзКэшаАктуальнуюВерсию(КэшАктуальныхВерсий, Конфигурация, ТекущаяВерсия);
-
- Если АктуальнаяВерсия = Неопределено Тогда
- Продолжить;
- КонецЕсли;
-
- Если АктуальнаяВерсия = ВыборкаДетальныеЗаписи.АктуальнаяВерсия Тогда
- Продолжить;
- КонецЕсли;
-
- МенеджерЗаписи = РегистрыСведений.ОтслеживаниеВерсийКонфигураций.СоздатьМенеджерЗаписи();
- МенеджерЗаписи.Конфигурация = Конфигурация;
- МенеджерЗаписи.ИдЧата = ИдЧата;
- МенеджерЗаписи.ТекущаяВерсия = ТекущаяВерсия;
- МенеджерЗаписи.АктуальнаяВерсия = АктуальнаяВерсия;
-
- МенеджерЗаписи.Записать();
- ОбработаноЗаписей = ОбработаноЗаписей + 1;
- КонецЦикла;
-
- Возврат ОбработаноЗаписей;
-
-КонецФункции
-
Функция КонфигурацияПоИмени(ИмяКонфигурации) Экспорт
Запрос = Новый Запрос;
@@ -189,17 +174,17 @@
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
- ПользовательОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
- Если ПользовательОбъект <> Неопределено Тогда
- ПользовательОбъект.СтатусДиалога = НовыйСтатус;
- ПользовательОбъект.ДополнительнаяИнформация = ДополнительнаяИнформация;
- ПользовательОбъект.Записать();
- КонецЕсли;
+ ПользовательОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
+ Если ПользовательОбъект <> Неопределено Тогда
+ ПользовательОбъект.СтатусДиалога = НовыйСтатус;
+ ПользовательОбъект.ДополнительнаяИнформация = ДополнительнаяИнформация;
+ ПользовательОбъект.Записать();
+ КонецЕсли;
КонецЕсли;
КонецПроцедуры
-Функция ПолучитьДанныеПользователя(ИдЧата) Экспорт
+Функция ДанныеПользователя(ИдЧата) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
@@ -226,6 +211,61 @@
КонецФункции
+Функция СписокНеактуальныхКонфигурацийДляУведомления() Экспорт
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | УведомленияОНовыхВерсиях.ИдЧата КАК ИдЧата
+ |ПОМЕСТИТЬ ВТ_ЧатыПолучающиеУведомления
+ |ИЗ
+ | РегистрСведений.УведомленияОНовыхВерсиях КАК УведомленияОНовыхВерсиях
+ |ГДЕ
+ | УведомленияОНовыхВерсиях.ОтправлятьУведомления
+ |;
+ |
+ |////////////////////////////////////////////////////////////////////////////////
+ |ВЫБРАТЬ
+ | ОтслеживаниеВерсийКонфигураций.ИдЧата КАК ИдЧата,
+ | ПРЕДСТАВЛЕНИЕССЫЛКИ(ОтслеживаниеВерсийКонфигураций.Конфигурация) КАК КонфигурацияПредставление,
+ | ОтслеживаниеВерсийКонфигураций.ТекущаяВерсия КАК ТекущаяВерсия,
+ | ОтслеживаниеВерсийКонфигураций.АктуальнаяВерсия КАК АктуальнаяВерсия
+ |ИЗ
+ | РегистрСведений.ОтслеживаниеВерсийКонфигураций КАК ОтслеживаниеВерсийКонфигураций
+ |ГДЕ
+ | ОтслеживаниеВерсийКонфигураций.ТекущаяВерсия <> ОтслеживаниеВерсийКонфигураций.АктуальнаяВерсия
+ | И ОтслеживаниеВерсийКонфигураций.ИдЧата В
+ | (ВЫБРАТЬ
+ | Т.ИдЧата
+ | ИЗ
+ | ВТ_ЧатыПолучающиеУведомления КАК Т)
+ |ИТОГИ ПО
+ | ИдЧата";
+
+ РезультатЗапроса = Запрос.Выполнить();
+
+ ВыборкаИдЧата = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
+
+ ДанныеДляУведомлений = Новый Массив;
+
+ Пока ВыборкаИдЧата.Следующий() Цикл
+ ВыборкаДетальныеЗаписи = ВыборкаИдЧата.Выбрать();
+ ДанныеВерсийКонфигураций = Новый Массив;
+
+ Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
+ ДанныеВерсийКонфигураций.Добавить(Новый Структура("КонфигурацияПредставление, ТекущаяВерсия, АктуальнаяВерсия",
+ ВыборкаДетальныеЗаписи.КонфигурацияПредставление,
+ ВыборкаДетальныеЗаписи.ТекущаяВерсия,
+ ВыборкаДетальныеЗаписи.АктуальнаяВерсия));
+ КонецЦикла;
+
+ ДанныеДляУведомлений.Добавить(Новый Структура("ИдЧата, Конфигурации", ВыборкаИдЧата.ИдЧата, ДанныеВерсийКонфигураций));
+ КонецЦикла;
+
+ Возврат ДанныеДляУведомлений;
+
+КонецФункции
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -242,35 +282,4 @@
КонецФункции
-Функция ПолучитьИзКэшаАктуальнуюВерсию(Кэш, Конфигурация, ТекущаяВерсия)
-
- СтруктураОтбора = Новый Структура("Конфигурация, ТекущаяВерсия", Конфигурация, ТекущаяВерсия);
- МассивСтрок = Кэш.НайтиСтроки(СтруктураОтбора);
- Если МассивСтрок.Количество() <> 0 Тогда
- Возврат МассивСтрок[0].АктуальнаяВерсия;
- КонецЕсли;
-
- Ответ = АктуальнаяВерсияКонфигурации(Конфигурация, ТекущаяВерсия);
-
- Если Ответ.Успех Тогда
- АктуальнаяВерсияССервера = Ответ["Тело"]["configurationUpdateResponse"]["configurationVersion"];
- Если АктуальнаяВерсияССервера = Неопределено Тогда
- //Если запрос выполнен без ошибок и в запросе была передана актуальная версия - с сервера обновлений приходит null.
- // Дополнительно проверим версию платформы, если что-то пришло, значит текущая версия существует
- // и её назначаем актуальной. Таким образом отличаем некорректную версию текущей конфигурации от совпадения текущей и актуальной.
- АктуальнаяВерсияПлатформы = Ответ["Тело"]["platformUpdateResponse"]["platformVersion"];
- Если АктуальнаяВерсияПлатформы <> Неопределено Тогда
- АктуальнаяВерсияССервера = ТекущаяВерсия;
- КонецЕсли;
- КонецЕсли;
- НоваяСтрока = Кэш.Добавить();
- ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураОтбора);
- НоваяСтрока.АктуальнаяВерсия = АктуальнаяВерсияССервера;
- Возврат АктуальнаяВерсияССервера;
- КонецЕсли;
-
- Возврат Неопределено;
-
-КонецФункции
-
#КонецОбласти
\ No newline at end of file
diff --git a/src/cf/CommonModules/ТелеграмРаботаСКлавиатурой/Ext/Module.bsl b/src/cf/CommonModules/ТелеграмРаботаСКлавиатурой/Ext/Module.bsl
index cc07202..7d4cec8 100644
--- a/src/cf/CommonModules/ТелеграмРаботаСКлавиатурой/Ext/Module.bsl
+++ b/src/cf/CommonModules/ТелеграмРаботаСКлавиатурой/Ext/Module.bsl
@@ -79,16 +79,16 @@
Возврат Неопределено;
Иначе
МассивРядов = Новый Массив;
- Для каждого ПунктМенюПодписки Из СписокКонфигураций Цикл
+ Для каждого Конфигурация Из СписокКонфигураций Цикл
Если Подписка = Неопределено
- ИЛИ (Подписка И ПунктМенюПодписки.Подписка)
- ИЛИ (НЕ Подписка И НЕ ПунктМенюПодписки.Подписка) Тогда
+ ИЛИ (Подписка И Конфигурация.Подписка)
+ ИЛИ (НЕ Подписка И НЕ Конфигурация.Подписка) Тогда
МассивКнопок = Новый Массив;
МассивКнопок.Добавить(ТелеграмРаботаСКлавиатурой.КнопкаКлавиатурыВстроенной(
- ПунктМенюПодписки.Наименование
+ Конфигурация.Наименование
,
,
- СтрШаблон("%1 %2", Команда, ПунктМенюПодписки.Имя)
+ СтрШаблон("%1 %2", Команда, Конфигурация.Имя)
));
МассивРядов.Добавить(МассивКнопок);
КонецЕсли;
diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml
index 1260cc7..4d3d7d9 100644
--- a/src/cf/Configuration.xml
+++ b/src/cf/Configuration.xml
@@ -258,8 +258,10 @@
ТелеграмРегламент
БотОбщегоНазначения
ОбщегоНазначенияКлиентСервер
+ ОбновленияРегламент
HTTPСервис_Telegram
ПроверкаОбновленийТелеграм
+ ПроверкаАктуальностиКонфигураций
ТелеграмТокен
ТелеграмВебХук
ЛогироватьHttpЗапросы
@@ -277,6 +279,7 @@
РаботаСОбновлениями
ТелеграмСообщения
ОтслеживаниеВерсийКонфигураций
+ УведомленияОНовыхВерсиях
\ 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
index ae3ec99..cb12d02 100644
--- a/src/cf/DataProcessors/РаботаСОбновлениями/Forms/Форма/Ext/Form/Module.bsl
+++ b/src/cf/DataProcessors/РаботаСОбновлениями/Forms/Форма/Ext/Form/Module.bsl
@@ -40,6 +40,6 @@
&НаСервереБезКонтекста
Функция АктуализироватьВерсииНаСервере(ИдЧата)
- Возврат РаботаСОбновлениямиВызовСервера.АктуализироватьВерсииКонфигураций();
+ Возврат РегистрыСведений.ОтслеживаниеВерсийКонфигураций.АктуализироватьВерсииКонфигураций();
КонецФункции
diff --git a/src/cf/Enums/ВидыДанныхКоллбэков.xml b/src/cf/Enums/ВидыДанныхКоллбэков.xml
index 2d2a1aa..7b24029 100644
--- a/src/cf/Enums/ВидыДанныхКоллбэков.xml
+++ b/src/cf/Enums/ВидыДанныхКоллбэков.xml
@@ -62,6 +62,18 @@
+
+
+ GetStatus
+
+
+ ru
+ Get status
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/InformationRegisters/ОтслеживаниеВерсийКонфигураций/Ext/ManagerModule.bsl b/src/cf/InformationRegisters/ОтслеживаниеВерсийКонфигураций/Ext/ManagerModule.bsl
new file mode 100644
index 0000000..3cc11c5
--- /dev/null
+++ b/src/cf/InformationRegisters/ОтслеживаниеВерсийКонфигураций/Ext/ManagerModule.bsl
@@ -0,0 +1,86 @@
+#Область ПрограммныйИнтерфейс
+
+Функция АктуализироватьВерсииКонфигураций()Экспорт
+
+ Запрос = Новый Запрос;
+ Запрос.Текст =
+ "ВЫБРАТЬ
+ | ОтслеживаниеВерсийКонфигураций.Конфигурация КАК Конфигурация,
+ | ОтслеживаниеВерсийКонфигураций.ИдЧата КАК ИдЧата,
+ | ОтслеживаниеВерсийКонфигураций.ТекущаяВерсия КАК ТекущаяВерсия,
+ | ОтслеживаниеВерсийКонфигураций.АктуальнаяВерсия КАК АктуальнаяВерсия
+ |ИЗ
+ | РегистрСведений.ОтслеживаниеВерсийКонфигураций КАК ОтслеживаниеВерсийКонфигураций";
+
+ РезультатЗапроса = Запрос.Выполнить();
+
+ ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
+
+ КэшАктуальныхВерсий = РезультатЗапроса.Выгрузить().СкопироватьКолонки();
+ КэшАктуальныхВерсий.Колонки.Удалить("ИдЧата");
+ ОбработаноЗаписей = 0;
+ Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
+ Конфигурация = ВыборкаДетальныеЗаписи.Конфигурация;
+ ТекущаяВерсия = ВыборкаДетальныеЗаписи.ТекущаяВерсия;
+ ИдЧата = ВыборкаДетальныеЗаписи.ИдЧата;
+
+ АктуальнаяВерсия = ПолучитьИзКэшаАктуальнуюВерсию(КэшАктуальныхВерсий, Конфигурация, ТекущаяВерсия);
+
+ Если АктуальнаяВерсия = Неопределено Тогда
+ Продолжить;
+ КонецЕсли;
+
+ Если АктуальнаяВерсия = ВыборкаДетальныеЗаписи.АктуальнаяВерсия Тогда
+ Продолжить;
+ КонецЕсли;
+
+ МенеджерЗаписи = РегистрыСведений.ОтслеживаниеВерсийКонфигураций.СоздатьМенеджерЗаписи();
+ МенеджерЗаписи.Конфигурация = Конфигурация;
+ МенеджерЗаписи.ИдЧата = ИдЧата;
+ МенеджерЗаписи.ТекущаяВерсия = ТекущаяВерсия;
+ МенеджерЗаписи.АктуальнаяВерсия = АктуальнаяВерсия;
+
+ МенеджерЗаписи.Записать();
+ ОбработаноЗаписей = ОбработаноЗаписей + 1;
+ КонецЦикла;
+
+ Возврат ОбработаноЗаписей;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Функция ПолучитьИзКэшаАктуальнуюВерсию(Кэш, Конфигурация, ТекущаяВерсия)
+
+ СтруктураОтбора = Новый Структура("Конфигурация, ТекущаяВерсия", Конфигурация, ТекущаяВерсия);
+ МассивСтрок = Кэш.НайтиСтроки(СтруктураОтбора);
+ Если МассивСтрок.Количество() <> 0 Тогда
+ Возврат МассивСтрок[0].АктуальнаяВерсия;
+ КонецЕсли;
+
+ Ответ = РаботаСОбновлениямиВызовСервера.АктуальнаяВерсияКонфигурации(Конфигурация, ТекущаяВерсия);
+
+ Если Ответ.Успех Тогда
+ АктуальнаяВерсияССервера = Ответ["Тело"]["configurationUpdateResponse"]["configurationVersion"];
+ Если АктуальнаяВерсияССервера = Неопределено Тогда
+ //Если запрос выполнен без ошибок и в запросе была передана актуальная версия - с сервера обновлений приходит null.
+ // Дополнительно проверим версию платформы, если что-то пришло, значит текущая версия существует
+ // и её назначаем актуальной. Таким образом отличаем некорректную версию текущей конфигурации от совпадения текущей и актуальной.
+ АктуальнаяВерсияПлатформы = Ответ["Тело"]["platformUpdateResponse"]["platformVersion"];
+ Если АктуальнаяВерсияПлатформы <> Неопределено Тогда
+ АктуальнаяВерсияССервера = ТекущаяВерсия;
+ КонецЕсли;
+ КонецЕсли;
+ НоваяСтрока = Кэш.Добавить();
+ ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураОтбора);
+ НоваяСтрока.АктуальнаяВерсия = АктуальнаяВерсияССервера;
+ Возврат АктуальнаяВерсияССервера;
+ КонецЕсли;
+
+ Возврат Неопределено;
+
+КонецФункции
+
+#КонецОбласти
diff --git a/src/cf/InformationRegisters/УведомленияОНовыхВерсиях.xml b/src/cf/InformationRegisters/УведомленияОНовыхВерсиях.xml
new file mode 100644
index 0000000..64e594e
--- /dev/null
+++ b/src/cf/InformationRegisters/УведомленияОНовыхВерсиях.xml
@@ -0,0 +1,156 @@
+
+
+
+
+
+ 1ddf54a2-3a5d-4946-b427-506bcd95309c
+ cdb2e881-03b3-48c3-9ec7-36462b294999
+
+
+ eb27fce8-427d-4986-b690-8b604cfb6e06
+ dd7778d0-3d88-4d72-9401-ad365a283424
+
+
+ 163d29b8-7d9a-4c51-8145-21104edd9cf0
+ 1b5d9f41-7c3f-4236-a370-49896e8aaa4f
+
+
+ 9af2c819-a19b-4b90-b979-ee6c3b018789
+ fa5f217a-afc0-4b7a-aa11-60b18156061b
+
+
+ e63c7fa6-bac4-472c-a645-8e7eb0d5a1a4
+ 71240200-3f61-4922-8563-3eb04bb4f15a
+
+
+ 3c8868ef-6bbc-4fb2-a0e6-6dcf2ad2e4fe
+ 161d890d-6e0f-49ac-a1d3-b12797973f7d
+
+
+ c75317f4-5fca-4b82-859c-adcce2cdcd0f
+ 0c55617c-1757-49b7-a647-f6b027904fcb
+
+
+
+ УведомленияОНовыхВерсиях
+
+
+ ru
+ Уведомления о новых версиях
+
+
+
+ true
+ InDialog
+
+
+
+
+ Nonperiodical
+ Independent
+ false
+ false
+ Managed
+ DontUse
+ false
+ false
+
+
+
+
+
+ DontUse
+ false
+ false
+
+
+
+
+ ОтправлятьУведомления
+
+
+ ru
+ Отправлять уведомления
+
+
+
+
+ xs:boolean
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ DontIndex
+ Use
+ Use
+
+
+
+
+ ИдЧата
+
+
+ ru
+ Ид чата
+
+
+
+
+ xs:decimal
+
+ 15
+ 0
+ Any
+
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+ false
+ true
+ false
+ DontIndex
+ Use
+ Use
+ TransformValues
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/InformationRegisters/УведомленияОНовыхВерсиях/Ext/ManagerModule.bsl b/src/cf/InformationRegisters/УведомленияОНовыхВерсиях/Ext/ManagerModule.bsl
new file mode 100644
index 0000000..b5a403b
--- /dev/null
+++ b/src/cf/InformationRegisters/УведомленияОНовыхВерсиях/Ext/ManagerModule.bsl
@@ -0,0 +1,22 @@
+#Область ПрограммныйИнтерфейс
+
+Функция УправлениеОповещениями(ИдЧата, Включить) Экспорт
+
+ МенеджерЗаписи = СоздатьМенеджерЗаписи();
+ МенеджерЗаписи.ИдЧата = ИдЧата;
+ МенеджерЗаписи.Прочитать();
+ Если МенеджерЗаписи.Выбран() Тогда
+ Если МенеджерЗаписи.ОтправлятьУведомления = Включить Тогда
+ Возврат СтрШаблон("Оповещения уже %1", ?(Включить, "включены", "выключены"));
+ Иначе
+ МенеджерЗаписи.ОтправлятьУведомления = Включить;
+ МенеджерЗаписи.Записать();
+ Возврат СтрШаблон("Оповещения %1", ?(Включить, "включены 🔉", "выключены 🔇"));
+ КонецЕсли;
+ КонецЕсли;
+
+ Возврат СтрШаблон("Не удалось %1 оповещения", ?(Включить, "включить", "выключить"));
+
+КонецФункции
+
+#КонецОбласти
\ No newline at end of file
diff --git a/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций.xml b/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций.xml
new file mode 100644
index 0000000..12d2057
--- /dev/null
+++ b/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций.xml
@@ -0,0 +1,22 @@
+
+
+
+
+ ПроверкаАктуальностиКонфигураций
+
+
+ ru
+ Проверка актуальности конфигураций
+
+
+
+ CommonModule.ОбновленияРегламент.ПроверкаНеактуальныхВерсийКонфигураций
+
+
+
+ true
+ 3
+ 10
+
+
+
\ No newline at end of file
diff --git a/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций/Ext/Schedule.xml b/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций/Ext/Schedule.xml
new file mode 100644
index 0000000..9280b1f
--- /dev/null
+++ b/src/cf/ScheduledJobs/ПроверкаАктуальностиКонфигураций/Ext/Schedule.xml
@@ -0,0 +1,11 @@
+
+
+
+ 1 2 3 4 5 6 7
+ 1 2 3 4 5 6 7 8 9 10 11 12
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/cf/Subsystems/Обновления.xml b/src/cf/Subsystems/Обновления.xml
index b52c1fc..bc14b62 100644
--- a/src/cf/Subsystems/Обновления.xml
+++ b/src/cf/Subsystems/Обновления.xml
@@ -21,6 +21,10 @@
Catalog.Конфигурации
Enum.ТелеграмСтатусДиалога
Enum.ВидыДанныхКоллбэков
+ ScheduledJob.ПроверкаАктуальностиКонфигураций
+ CommonModule.ОбновленияРегламент
+ InformationRegister.УведомленияОНовыхВерсиях
+ CommonModule.РаботаСОбновлениямиВызовСервера
diff --git a/src/cf/Subsystems/ТелеграмБот.xml b/src/cf/Subsystems/ТелеграмБот.xml
index d272472..d74462a 100644
--- a/src/cf/Subsystems/ТелеграмБот.xml
+++ b/src/cf/Subsystems/ТелеграмБот.xml
@@ -31,6 +31,8 @@
Enum.ТелеграмРежимРазметки
Enum.ТелеграмСтатусДиалога
Enum.ВидыДанныхКоллбэков
+ CommonModule.БотОбщегоНазначения
+ CommonModule.ТелеграмРаботаСКлавиатурой
diff --git a/src/cf/VERSION b/src/cf/VERSION
index 28fc9bd..e1c4ee9 100644
--- a/src/cf/VERSION
+++ b/src/cf/VERSION
@@ -1,2 +1,2 @@
-19
+20