Compare commits
9 Commits
72df024952
...
lightweigh
| Author | SHA1 | Date | |
|---|---|---|---|
| 8a88dea2b9 | |||
| 78b1198f7a | |||
| 97427fb844 | |||
| 63ad60bdf8 | |||
| 869bd182cb | |||
| ae3fe05e5d | |||
| d904c25ce6 | |||
| 36cea3f0b0 | |||
| ae881c62b7 |
29
README.md
29
README.md
@@ -17,7 +17,7 @@
|
||||
- 1С:Предприятие 8.3
|
||||
- HTTP-сервисы 1С
|
||||
- Telegram Bot API
|
||||
- Интеграция с официальным сайтом обновлений 1С (releases.1c.ru)
|
||||
- Интеграция по REST API с сайтом releases.1c.ru
|
||||
- Проверка качества кода SonarQube
|
||||
- Сборка проекта Jenkins
|
||||
- Отчёты Allure
|
||||
@@ -30,22 +30,19 @@
|
||||
- Создайте новую информационную базу. В режиме конфигуратора выполните команду загрузки конфигурации из файлов.
|
||||
- Укажите путь к источнику: `tg_bot_1c\src\cf`
|
||||
- Зарегистрируйте Telegram-бота через @BotFather и получите токен.
|
||||
- Укажите токен в настройках конфигурации, раздел Администрирование.
|
||||
- Есть возможность получать обновления в двух режимах: long polling и webhook. Режим устанавливается в настройках, раздел Администрирование. В случае использования webhook требуется публикация базы на веб-сервере.
|
||||
- Укажите токен в настройках конфигурации, раздел Администрирование.
|
||||
- Есть возможность получать обновления в двух режимах: `long polling` и `webhook`. Режим устанавливается в настройках, раздел Администрирование. В случае использования `webhook` требуется публикация базы на веб-сервере.
|
||||
- В режиме предприятия выполните начальную инициализацию. Раздел Администрирование - Начальное заполнение данных.
|
||||
|
||||
## Поддерживаемые команды
|
||||
|
||||
Команда Описание
|
||||
|
||||
/start Приветствие и справка
|
||||
|
||||
/add Подписка на отслеживание конфигурации по коду
|
||||
|
||||
/remove Удаление подписки
|
||||
|
||||
/list Просмотр всех текущих подписок
|
||||
|
||||
/check Ручная проверка релизов
|
||||
|
||||
/help Справка по командам
|
||||
| **Команда** | **Описание** |
|
||||
|:----------------- |:------------------------------------------- |
|
||||
| **/start** | Приветствие и справка |
|
||||
| **/subscribe** | Список конфигураций для отслеживания |
|
||||
| **/add** | Добавить конфигурацию в список отслеживания |
|
||||
| **/delete** | Удалить конфигурацию из списка отслеживания |
|
||||
| **/notify_on** | Включить уведомления о новых версиях |
|
||||
| **/notify_off** | Выключить уведомления о новых версиях |
|
||||
| **/status** | Вывести информацию о статусе конфигурации |
|
||||
| **/help** | Вывести список поддерживаемых команд |
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
ТелеграмРегламентВызовСервера.ЗапускПроверкиОбновлений();
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ КэшЗначений.ТелеграмИспользоватьВебХук И ТекущийОбъект.ТелеграмИспользоватьВебХук Тогда
|
||||
Если ТекущийОбъект.ТелеграмИспользоватьВебХук Тогда
|
||||
ТелеграмМетодыВызовСервера.SetWebHook(ТекущийОбъект.ТелеграмВебХук);
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
@@ -41,6 +41,8 @@
|
||||
ОбработатьКомандуВыключитьОповещения(ОбновлениеТелеграм);
|
||||
ИначеЕсли КомандаДляОбработки = "/status" Тогда
|
||||
ОбработатьКомандуСтатусКонфигурации(ОбновлениеТелеграм);
|
||||
ИначеЕсли КомандаДляОбработки = "/help" Тогда
|
||||
ОбработатьКомандуВыводаПодсказки(ОбновлениеТелеграм);
|
||||
ИначеЕсли ДанныеПользователя <> Неопределено И ДанныеПользователя.СтатусДиалога =
|
||||
Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии Тогда
|
||||
ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя);
|
||||
@@ -134,11 +136,29 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстОтвета = СтрШаблон("ℹ %1%2 %3 ➡ %4",
|
||||
РезультатСравненияВерсий = РаботаСОбновлениямиВызовСервера.СравнитьВерсииКонфигураций(
|
||||
ДанныеКонфигурации.ТекущаяВерсия,
|
||||
ДанныеКонфигурации.АктуальнаяВерсия);
|
||||
|
||||
Если РезультатСравненияВерсий <> Неопределено Тогда
|
||||
Если РезультатСравненияВерсий < 0 Тогда
|
||||
Диагностика = "Необходимо обновить текущую версию.";
|
||||
ИначеЕсли РезультатСравненияВерсий > 0 Тогда
|
||||
Диагностика = "Текущая версия не может быть старше актуальной!";
|
||||
Иначе
|
||||
Диагностика = "Обновление текущей версии не требуется.";
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Диагностика = "";
|
||||
КонецЕсли;
|
||||
|
||||
ТекстОтвета = СтрШаблон("ℹ %1%2<code>%3</code> → <code>%4</code>%5%6",
|
||||
ДанныеКонфигурации.Наименование,
|
||||
Символы.ПС,
|
||||
ДанныеКонфигурации.ТекущаяВерсия,
|
||||
ДанныеКонфигурации.АктуальнаяВерсия);
|
||||
ДанныеКонфигурации.АктуальнаяВерсия,
|
||||
Символы.ПС,
|
||||
Диагностика);
|
||||
|
||||
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
|
||||
Иначе
|
||||
@@ -218,19 +238,16 @@
|
||||
|
||||
Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм)
|
||||
|
||||
ТекстОтвета = "Привет! Я бот, который поможет тебе следить за обновлениями конфигураций 1С." + Символы.ПС
|
||||
+ Символы.ВК + Символы.ПС
|
||||
ТекстОтвета = "👋 Привет!"
|
||||
+ Символы.ПС
|
||||
+ "Я - бот, который поможет тебе следить за обновлениями конфигураций 1С."
|
||||
+ Символы.ПС + Символы.ВК + Символы.ПС
|
||||
+ "Что я умею:" + Символы.ПС
|
||||
+ "- Отслеживать новые релизы" + Символы.ПС
|
||||
+ "- Присылать уведомления о выходе обновлений" + Символы.ПС
|
||||
+ "- Показывать текущую информацию о статусе конфигурации" + Символы.ПС
|
||||
+ Символы.ВК + Символы.ПС
|
||||
+ "/subscribe - Список конфигураций для отслеживания" + Символы.ПС
|
||||
+ "/add - Добавить конфигурацию в список отслеживания" + Символы.ПС
|
||||
+ "/delete - Удалить конфигурацию из списка отслеживания" + Символы.ПС
|
||||
+ "/notify_on - Включить уведомления о новых версиях" + Символы.ПС
|
||||
+ "/notify_off - Выключить уведомления о новых версиях" + Символы.ПС
|
||||
+ "/status - Вывести информацию о статусе конфигурации";
|
||||
+ Символы.ПС
|
||||
+ СписокПоддерживаемыхКоманд();
|
||||
|
||||
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета,
|
||||
Перечисления.ТелеграмРежимРазметки.HTML);
|
||||
@@ -330,10 +347,33 @@
|
||||
|
||||
Процедура ОбработатьНеизвестнуюКоманду(ОбновлениеТелеграм)
|
||||
|
||||
ИдЧата = ОбновлениеТелеграм.ИдЧата;
|
||||
ТекстОтвета = "Данная команда не поддерживается.";
|
||||
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета);
|
||||
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработатьКомандуВыводаПодсказки(ОбновлениеТелеграм)
|
||||
|
||||
ТекстОтвета = СписокПоддерживаемыхКоманд();
|
||||
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета,
|
||||
Перечисления.ТелеграмРежимРазметки.HTML);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СписокПоддерживаемыхКоманд()
|
||||
|
||||
ТекстПодсказки = "Список поддерживаемых команд:"
|
||||
+ Символы.ВК + Символы.ПС
|
||||
+ "/subscribe - Список конфигураций для отслеживания" + Символы.ПС
|
||||
+ "/add - Добавить конфигурацию в список отслеживания" + Символы.ПС
|
||||
+ "/delete - Удалить конфигурацию из списка отслеживания" + Символы.ПС
|
||||
+ "/notify_on - Включить уведомления о новых версиях" + Символы.ПС
|
||||
+ "/notify_off - Выключить уведомления о новых версиях" + Символы.ПС
|
||||
+ "/status - Вывести информацию о статусе конфигурации" + Символы.ПС
|
||||
+ "/help - Вывести список поддерживаемых команд";
|
||||
|
||||
Возврат ТекстПодсказки;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -21,18 +21,43 @@
|
||||
|
||||
ТекстСообщения = СтрШаблон("Следующие конфигурации имеют неактуальные версии:%1%2", Символы.ПС, Символы.ПС);
|
||||
|
||||
КонфигурацииСНекорректнымиВерсиями = Новый Массив;
|
||||
|
||||
Для каждого ДанныеКонфигурации Из КонфигурацииДляВывода Цикл
|
||||
ТекстСообщения = ТекстСообщения + СтрШаблон("🔥 %1%2 %3 ➡ %4%5%6",
|
||||
ДанныеКонфигурации.КонфигурацияПредставление,
|
||||
Символы.ПС,
|
||||
ДанныеКонфигурации.ТекущаяВерсия,
|
||||
ДанныеКонфигурации.АктуальнаяВерсия,
|
||||
Символы.ПС,
|
||||
Символы.ПС);
|
||||
Если ДанныеКонфигурации.РезультатСравнения = Неопределено Тогда
|
||||
Продолжить;
|
||||
ИначеЕсли ДанныеКонфигурации.РезультатСравнения > 0 Тогда
|
||||
КонфигурацииСНекорректнымиВерсиями.Добавить(ДанныеКонфигурации);
|
||||
Продолжить;
|
||||
Иначе
|
||||
ТекстСообщения = ТекстСообщения + ФорматСтрокиСообщенияОНеактуальнойВерсии("🔥", ДанныеКонфигурации);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если КонфигурацииСНекорректнымиВерсиями.Количество() > 0 Тогда
|
||||
ТекстСообщения = ТекстСообщения + СтрШаблон("Внимание! Текущая конфигурация старше актуальной:%1%2",
|
||||
Символы.ПС, Символы.ПС);
|
||||
|
||||
Для каждого ДанныеКонфигурации Из КонфигурацииСНекорректнымиВерсиями Цикл
|
||||
ТекстСообщения = ТекстСообщения + ФорматСтрокиСообщенияОНеактуальнойВерсии("🚫", ДанныеКонфигурации);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТекстСообщения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ФорматСтрокиСообщенияОНеактуальнойВерсии(Эмодзи, ДанныеКонфигурации)
|
||||
|
||||
Возврат СтрШаблон("%1 %2%3 <code>%4</code> → <code>%5</code>%6%7",
|
||||
Эмодзи,
|
||||
ДанныеКонфигурации.КонфигурацияПредставление,
|
||||
Символы.ПС,
|
||||
ДанныеКонфигурации.ТекущаяВерсия,
|
||||
ДанныеКонфигурации.АктуальнаяВерсия,
|
||||
Символы.ПС,
|
||||
Символы.ПС);
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
@@ -255,10 +255,14 @@
|
||||
ДанныеВерсийКонфигураций = Новый Массив;
|
||||
|
||||
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
|
||||
ВерсииКонфигурации = Новый Структура("КонфигурацияПредставление, ТекущаяВерсия, АктуальнаяВерсия",
|
||||
ВыборкаДетальныеЗаписи.КонфигурацияПредставление,
|
||||
ВыборкаДетальныеЗаписи.ТекущаяВерсия,
|
||||
ВыборкаДетальныеЗаписи.АктуальнаяВерсия);
|
||||
ВерсииКонфигурации = Новый Структура;
|
||||
ВерсииКонфигурации.Вставить("КонфигурацияПредставление", ВыборкаДетальныеЗаписи.КонфигурацияПредставление);
|
||||
ВерсииКонфигурации.Вставить("ТекущаяВерсия", ВыборкаДетальныеЗаписи.ТекущаяВерсия);
|
||||
ВерсииКонфигурации.Вставить("АктуальнаяВерсия", ВыборкаДетальныеЗаписи.АктуальнаяВерсия);
|
||||
|
||||
РезультатСравнения = СравнитьВерсииКонфигураций(ВыборкаДетальныеЗаписи.ТекущаяВерсия,
|
||||
ВыборкаДетальныеЗаписи.АктуальнаяВерсия);
|
||||
ВерсииКонфигурации.Вставить("РезультатСравнения", РезультатСравнения);
|
||||
ДанныеВерсийКонфигураций.Добавить(ВерсииКонфигурации);
|
||||
КонецЦикла;
|
||||
|
||||
@@ -270,6 +274,43 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращает результат сравнения двух версий конфигураций: текущей и актуальной.
|
||||
//
|
||||
// Параметры:
|
||||
// ТекущаяВерсия - Строка - версия, установленная у пользователя
|
||||
// АктуальнаяВерсия - Строка - версия, полученная с сайта вендора
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Отрицательное число - текущая версия меньше актуальной
|
||||
// Положительное число - актуальная версия меньше текущей
|
||||
// Ноль - номера версий одинаковые
|
||||
//
|
||||
Функция СравнитьВерсииКонфигураций(ТекущаяВерсия, АктуальнаяВерсия) Экспорт
|
||||
|
||||
НаборГруппТекущаяВерсия = СтрРазделить(ТекущаяВерсия, ".");
|
||||
НаборГруппАктуальнаяВерсия = СтрРазделить(АктуальнаяВерсия, ".");
|
||||
|
||||
Если НаборГруппТекущаяВерсия.Количество() = 0 ИЛИ НаборГруппАктуальнаяВерсия.Количество() = 0 Тогда
|
||||
Возврат Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
МаксИндексТекущаяВерсия = НаборГруппТекущаяВерсия.ВГраница();
|
||||
МаксИндексАктуальнаяВерсия = НаборГруппАктуальнаяВерсия.ВГраница();
|
||||
|
||||
Для Индекс = 0 По Макс(МаксИндексТекущаяВерсия, МаксИндексАктуальнаяВерсия) Цикл
|
||||
ГруппаТекущаяВерсия = ?(Индекс <= МаксИндексТекущаяВерсия, Число(НаборГруппТекущаяВерсия[Индекс]), 0);
|
||||
ГруппаАктуальнаяВерсия = ?(Индекс <= МаксИндексАктуальнаяВерсия, Число(НаборГруппАктуальнаяВерсия[Индекс]), 0);
|
||||
|
||||
Компаратор = ГруппаТекущаяВерсия - ГруппаАктуальнаяВерсия;
|
||||
Если Компаратор <> 0 Тогда
|
||||
Возврат Компаратор;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@@ -289,7 +330,7 @@
|
||||
Функция НовоеСоединениеХТТП(Таймаут = 0)
|
||||
|
||||
Возврат Новый HTTPСоединение("update-api.1c.ru", 443, , , , ?(Таймаут > 0, Таймаут, 15),
|
||||
Новый ЗащищенноеСоединениеOpenSSL);
|
||||
Новый ЗащищенноеСоединениеOpenSSL);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<VERSION>40</VERSION>
|
||||
<VERSION>44</VERSION>
|
||||
|
||||
Reference in New Issue
Block a user