Добавил возможность сравнивания версий

- При уведомлении о неактуальных версиях производится сравнение версий
- При получении статуса конфигурации производится сравнение версий
- Вывод диагностики в случае когда текущая версия старше актуальной. Это считается ошибкой.
This commit is contained in:
2025-07-10 12:25:11 +03:00
parent 97427fb844
commit 78b1198f7a
4 changed files with 91 additions and 17 deletions

View File

@@ -136,11 +136,25 @@
Возврат; Возврат;
КонецЕсли; КонецЕсли;
ТекстОтвета = СтрШаблон("&#8505 %1%2 %3 &#10145 %4", РезультатСравненияВерсий = РаботаСОбновлениямиВызовСервера.СравнитьВерсииКонфигураций(
ДанныеКонфигурации.ТекущаяВерсия,
ДанныеКонфигурации.АктуальнаяВерсия);
Если РезультатСравненияВерсий < 0 Тогда
Диагностика = "Необходимо обновить текущую версию.";
ИначеЕсли РезультатСравненияВерсий > 0 Тогда
Диагностика = "Текущая версия не может быть старше актуальной!";
Иначе
Диагностика = "Обновление текущей версии не требуется.";
КонецЕсли;
ТекстОтвета = СтрШаблон("&#8505 %1%2<code>%3</code> &#8594 <code>%4</code>%5%6",
ДанныеКонфигурации.Наименование, ДанныеКонфигурации.Наименование,
Символы.ПС, Символы.ПС,
ДанныеКонфигурации.ТекущаяВерсия, ДанныеКонфигурации.ТекущаяВерсия,
ДанныеКонфигурации.АктуальнаяВерсия); ДанныеКонфигурации.АктуальнаяВерсия,
Символы.ПС,
Диагностика);
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML); ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
Иначе Иначе
@@ -220,8 +234,10 @@
Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм) Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм)
ТекстОтвета = "Привет! Я бот, который поможет тебе следить за обновлениями конфигураций 1С." + Символы.ПС ТекстОтвета = "&#128075 Привет!"
+ Символы.ВК + Символы.ПС + Символы.ПС
+ "Я - бот, который поможет тебе следить за обновлениями конфигураций 1С."
+ Символы.ПС + Символы.ВК + Символы.ПС
+ "Что я умею:" + Символы.ПС + "Что я умею:" + Символы.ПС
+ "- Отслеживать новые релизы" + Символы.ПС + "- Отслеживать новые релизы" + Символы.ПС
+ "- Присылать уведомления о выходе обновлений" + Символы.ПС + "- Присылать уведомления о выходе обновлений" + Символы.ПС

View File

@@ -21,18 +21,40 @@
ТекстСообщения = СтрШаблон("Следующие конфигурации имеют неактуальные версии:%1%2", Символы.ПС, Символы.ПС); ТекстСообщения = СтрШаблон("Следующие конфигурации имеют неактуальные версии:%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

@@ -255,10 +255,12 @@
ДанныеВерсийКонфигураций = Новый Массив; ДанныеВерсийКонфигураций = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ВерсииКонфигурации = Новый Структура("КонфигурацияПредставление, ТекущаяВерсия, АктуальнаяВерсия", ВерсииКонфигурации = Новый Структура;
ВыборкаДетальныеЗаписи.КонфигурацияПредставление, ВерсииКонфигурации.Вставить("КонфигурацияПредставление", ВыборкаДетальныеЗаписи.КонфигурацияПредставление);
ВыборкаДетальныеЗаписи.ТекущаяВерсия, ВерсииКонфигурации.Вставить("ТекущаяВерсия", ВыборкаДетальныеЗаписи.ТекущаяВерсия);
ВыборкаДетальныеЗаписи.АктуальнаяВерсия); ВерсииКонфигурации.Вставить("АктуальнаяВерсия", ВыборкаДетальныеЗаписи.АктуальнаяВерсия);
ВерсииКонфигурации.Вставить("РезультатСравнения", СравнитьВерсииКонфигураций(ВыборкаДетальныеЗаписи.ТекущаяВерсия,
ВыборкаДетальныеЗаписи.АктуальнаяВерсия));
ДанныеВерсийКонфигураций.Добавить(ВерсииКонфигурации); ДанныеВерсийКонфигураций.Добавить(ВерсииКонфигурации);
КонецЦикла; КонецЦикла;
@@ -270,6 +272,40 @@
КонецФункции КонецФункции
// Возвращает результат сравнения двух версий конфигураций: текущей и актуальной.
//
// Возвращаемое значение:
// Отрицательное число - текущая версия меньше актуальной
// Положительное число - актуальная версия меньше текущей
// Ноль - номера версий одинаковые
//
Функция СравнитьВерсииКонфигураций(ТекущаяВерсия, АктуальнаяВерсия) Экспорт
НаборГруппТекущаяВерсия = СтрРазделить(ТекущаяВерсия,".");
НаборГруппАктуальнаяВерсия = СтрРазделить(АктуальнаяВерсия,".");
Если НаборГруппТекущаяВерсия.Количество() = 0 ИЛИ НаборГруппАктуальнаяВерсия.Количество() = 0 Тогда
Возврат Неопределено;
КонецЕсли;
МаксИндексТекущаяВерсия = НаборГруппТекущаяВерсия.ВГраница();
МаксИндексАктуальнаяВерсия = НаборГруппАктуальнаяВерсия.ВГраница();
Для Индекс = 0 По Макс(МаксИндексТекущаяВерсия, МаксИндексАктуальнаяВерсия) Цикл
ГруппаТекущаяВерсия = ?(Индекс <= МаксИндексТекущаяВерсия, Число(НаборГруппТекущаяВерсия[Индекс]), 0);
ГруппаАктуальнаяВерсия = ?(Индекс <= МаксИндексАктуальнаяВерсия, Число(НаборГруппАктуальнаяВерсия[Индекс]), 0);
Компаратор = ГруппаТекущаяВерсия - ГруппаАктуальнаяВерсия;
Если Компаратор <> 0 Тогда
Возврат Компаратор;
КонецЕсли;
КонецЦикла;
Возврат 0;
КонецФункции
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
@@ -289,7 +325,7 @@
Функция НовоеСоединениеХТТП(Таймаут = 0) Функция НовоеСоединениеХТТП(Таймаут = 0)
Возврат Новый HTTPСоединение("update-api.1c.ru", 443, , , , ?(Таймаут > 0, Таймаут, 15), Возврат Новый HTTPСоединение("update-api.1c.ru", 443, , , , ?(Таймаут > 0, Таймаут, 15),
Новый ЗащищенноеСоединениеOpenSSL); Новый ЗащищенноеСоединениеOpenSSL);
КонецФункции КонецФункции

View File

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