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 + 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