From 78b1198f7ae432c7dd28c76d586f42989e749fb5 Mon Sep 17 00:00:00 2001 From: kashey Date: Thu, 10 Jul 2025 12:25:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D1=81=D1=80=D0=B0=D0=B2=D0=BD=D0=B8=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - При уведомлении о неактуальных версиях производится сравнение версий - При получении статуса конфигурации производится сравнение версий - Вывод диагностики в случае когда текущая версия старше актуальной. Это считается ошибкой. --- .../БотОбщегоНазначения/Ext/Module.bsl | 24 ++++++++-- .../ОбновленияРегламент/Ext/Module.bsl | 36 ++++++++++++--- .../Ext/Module.bsl | 46 +++++++++++++++++-- src/cf/VERSION | 2 +- 4 files changed, 91 insertions(+), 17 deletions(-) diff --git a/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl b/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl index 9932948..e8c070a 100644 --- a/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl +++ b/src/cf/CommonModules/БотОбщегоНазначения/Ext/Module.bsl @@ -136,11 +136,25 @@ Возврат; КонецЕсли; - ТекстОтвета = СтрШаблон("ℹ %1%2 %3 ➡ %4", + РезультатСравненияВерсий = РаботаСОбновлениямиВызовСервера.СравнитьВерсииКонфигураций( + ДанныеКонфигурации.ТекущаяВерсия, + ДанныеКонфигурации.АктуальнаяВерсия); + + Если РезультатСравненияВерсий < 0 Тогда + Диагностика = "Необходимо обновить текущую версию."; + ИначеЕсли РезультатСравненияВерсий > 0 Тогда + Диагностика = "Текущая версия не может быть старше актуальной!"; + Иначе + Диагностика = "Обновление текущей версии не требуется."; + КонецЕсли; + + ТекстОтвета = СтрШаблон("ℹ %1%2%3%4%5%6", ДанныеКонфигурации.Наименование, Символы.ПС, ДанныеКонфигурации.ТекущаяВерсия, - ДанныеКонфигурации.АктуальнаяВерсия); + ДанныеКонфигурации.АктуальнаяВерсия, + Символы.ПС, + Диагностика); ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML); Иначе @@ -220,8 +234,10 @@ Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм) - ТекстОтвета = "Привет! Я бот, который поможет тебе следить за обновлениями конфигураций 1С." + Символы.ПС - + Символы.ВК + Символы.ПС + ТекстОтвета = "👋 Привет!" + + Символы.ПС + + "Я - бот, который поможет тебе следить за обновлениями конфигураций 1С." + + Символы.ПС + Символы.ВК + Символы.ПС + "Что я умею:" + Символы.ПС + "- Отслеживать новые релизы" + Символы.ПС + "- Присылать уведомления о выходе обновлений" + Символы.ПС diff --git a/src/cf/CommonModules/ОбновленияРегламент/Ext/Module.bsl b/src/cf/CommonModules/ОбновленияРегламент/Ext/Module.bsl index c083278..f7ee816 100644 --- a/src/cf/CommonModules/ОбновленияРегламент/Ext/Module.bsl +++ b/src/cf/CommonModules/ОбновленияРегламент/Ext/Module.bsl @@ -21,18 +21,40 @@ ТекстСообщения = СтрШаблон("Следующие конфигурации имеют неактуальные версии:%1%2", Символы.ПС, Символы.ПС); + КонфигурацииСНекорректнымиВерсиями = Новый Массив; + Для каждого ДанныеКонфигурации Из КонфигурацииДляВывода Цикл - ТекстСообщения = ТекстСообщения + СтрШаблон("🔥 %1%2 %3 ➡ %4%5%6", - ДанныеКонфигурации.КонфигурацияПредставление, - Символы.ПС, - ДанныеКонфигурации.ТекущаяВерсия, - ДанныеКонфигурации.АктуальнаяВерсия, - Символы.ПС, - Символы.ПС); + Если ДанныеКонфигурации.РезультатСравнения > 0 Тогда + КонфигурацииСНекорректнымиВерсиями.Добавить(ДанныеКонфигурации); + Продолжить; + КонецЕсли; + + ТекстСообщения = ТекстСообщения + ФорматСтрокиСообщенияОНеактуальнойВерсии("🔥", ДанныеКонфигурации); КонецЦикла; + Если КонфигурацииСНекорректнымиВерсиями.Количество() > 0 Тогда + ТекстСообщения = ТекстСообщения + СтрШаблон("Внимание! Текущая конфигурация старше актуальной:%1%2", Символы.ПС, Символы.ПС); + + Для каждого ДанныеКонфигурации Из КонфигурацииСНекорректнымиВерсиями Цикл + ТекстСообщения = ТекстСообщения + ФорматСтрокиСообщенияОНеактуальнойВерсии("🚫", ДанныеКонфигурации); + КонецЦикла; + КонецЕсли; + Возврат ТекстСообщения; + +КонецФункции +Функция ФорматСтрокиСообщенияОНеактуальнойВерсии(Эмодзи, ДанныеКонфигурации) + + Возврат СтрШаблон("%1 %2%3 %4%5%6%7", + Эмодзи, + ДанныеКонфигурации.КонфигурацияПредставление, + Символы.ПС, + ДанныеКонфигурации.ТекущаяВерсия, + ДанныеКонфигурации.АктуальнаяВерсия, + Символы.ПС, + Символы.ПС); + КонецФункции #КонецОбласти \ No newline at end of file diff --git a/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl b/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl index 5ad8e9f..f6e82c9 100644 --- a/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl +++ b/src/cf/CommonModules/РаботаСОбновлениямиВызовСервера/Ext/Module.bsl @@ -255,10 +255,12 @@ ДанныеВерсийКонфигураций = Новый Массив; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл - ВерсииКонфигурации = Новый Структура("КонфигурацияПредставление, ТекущаяВерсия, АктуальнаяВерсия", - ВыборкаДетальныеЗаписи.КонфигурацияПредставление, - ВыборкаДетальныеЗаписи.ТекущаяВерсия, - ВыборкаДетальныеЗаписи.АктуальнаяВерсия); + ВерсииКонфигурации = Новый Структура; + ВерсииКонфигурации.Вставить("КонфигурацияПредставление", ВыборкаДетальныеЗаписи.КонфигурацияПредставление); + ВерсииКонфигурации.Вставить("ТекущаяВерсия", ВыборкаДетальныеЗаписи.ТекущаяВерсия); + ВерсииКонфигурации.Вставить("АктуальнаяВерсия", ВыборкаДетальныеЗаписи.АктуальнаяВерсия); + ВерсииКонфигурации.Вставить("РезультатСравнения", СравнитьВерсииКонфигураций(ВыборкаДетальныеЗаписи.ТекущаяВерсия, + ВыборкаДетальныеЗаписи.АктуальнаяВерсия)); ДанныеВерсийКонфигураций.Добавить(ВерсииКонфигурации); КонецЦикла; @@ -270,6 +272,40 @@ КонецФункции + +// Возвращает результат сравнения двух версий конфигураций: текущей и актуальной. +// +// Возвращаемое значение: +// Отрицательное число - текущая версия меньше актуальной +// Положительное число - актуальная версия меньше текущей +// Ноль - номера версий одинаковые +// +Функция СравнитьВерсииКонфигураций(ТекущаяВерсия, АктуальнаяВерсия) Экспорт + + НаборГруппТекущаяВерсия = СтрРазделить(ТекущаяВерсия,"."); + НаборГруппАктуальнаяВерсия = СтрРазделить(АктуальнаяВерсия,"."); + + Если НаборГруппТекущаяВерсия.Количество() = 0 ИЛИ НаборГруппАктуальнаяВерсия.Количество() = 0 Тогда + Возврат Неопределено; + КонецЕсли; + + МаксИндексТекущаяВерсия = НаборГруппТекущаяВерсия.ВГраница(); + МаксИндексАктуальнаяВерсия = НаборГруппАктуальнаяВерсия.ВГраница(); + + Для Индекс = 0 По Макс(МаксИндексТекущаяВерсия, МаксИндексАктуальнаяВерсия) Цикл + ГруппаТекущаяВерсия = ?(Индекс <= МаксИндексТекущаяВерсия, Число(НаборГруппТекущаяВерсия[Индекс]), 0); + ГруппаАктуальнаяВерсия = ?(Индекс <= МаксИндексАктуальнаяВерсия, Число(НаборГруппАктуальнаяВерсия[Индекс]), 0); + + Компаратор = ГруппаТекущаяВерсия - ГруппаАктуальнаяВерсия; + Если Компаратор <> 0 Тогда + Возврат Компаратор; + КонецЕсли; + КонецЦикла; + + Возврат 0; + +КонецФункции + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -289,7 +325,7 @@ Функция НовоеСоединениеХТТП(Таймаут = 0) Возврат Новый HTTPСоединение("update-api.1c.ru", 443, , , , ?(Таймаут > 0, Таймаут, 15), - Новый ЗащищенноеСоединениеOpenSSL); + Новый ЗащищенноеСоединениеOpenSSL); КонецФункции diff --git a/src/cf/VERSION b/src/cf/VERSION index 7e51577..bdd3681 100644 --- a/src/cf/VERSION +++ b/src/cf/VERSION @@ -1,2 +1,2 @@  -42 +43