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
|
- 1С:Предприятие 8.3
|
||||||
- HTTP-сервисы 1С
|
- HTTP-сервисы 1С
|
||||||
- Telegram Bot API
|
- Telegram Bot API
|
||||||
- Интеграция с официальным сайтом обновлений 1С (releases.1c.ru)
|
- Интеграция по REST API с сайтом releases.1c.ru
|
||||||
- Проверка качества кода SonarQube
|
- Проверка качества кода SonarQube
|
||||||
- Сборка проекта Jenkins
|
- Сборка проекта Jenkins
|
||||||
- Отчёты Allure
|
- Отчёты Allure
|
||||||
@@ -30,22 +30,19 @@
|
|||||||
- Создайте новую информационную базу. В режиме конфигуратора выполните команду загрузки конфигурации из файлов.
|
- Создайте новую информационную базу. В режиме конфигуратора выполните команду загрузки конфигурации из файлов.
|
||||||
- Укажите путь к источнику: `tg_bot_1c\src\cf`
|
- Укажите путь к источнику: `tg_bot_1c\src\cf`
|
||||||
- Зарегистрируйте Telegram-бота через @BotFather и получите токен.
|
- Зарегистрируйте Telegram-бота через @BotFather и получите токен.
|
||||||
- Укажите токен в настройках конфигурации, раздел Администрирование.
|
- Укажите токен в настройках конфигурации, раздел Администрирование.
|
||||||
- Есть возможность получать обновления в двух режимах: long polling и webhook. Режим устанавливается в настройках, раздел Администрирование. В случае использования webhook требуется публикация базы на веб-сервере.
|
- Есть возможность получать обновления в двух режимах: `long polling` и `webhook`. Режим устанавливается в настройках, раздел Администрирование. В случае использования `webhook` требуется публикация базы на веб-сервере.
|
||||||
- В режиме предприятия выполните начальную инициализацию. Раздел Администрирование - Начальное заполнение данных.
|
- В режиме предприятия выполните начальную инициализацию. Раздел Администрирование - Начальное заполнение данных.
|
||||||
|
|
||||||
## Поддерживаемые команды
|
## Поддерживаемые команды
|
||||||
|
|
||||||
Команда Описание
|
| **Команда** | **Описание** |
|
||||||
|
|:----------------- |:------------------------------------------- |
|
||||||
/start Приветствие и справка
|
| **/start** | Приветствие и справка |
|
||||||
|
| **/subscribe** | Список конфигураций для отслеживания |
|
||||||
/add Подписка на отслеживание конфигурации по коду
|
| **/add** | Добавить конфигурацию в список отслеживания |
|
||||||
|
| **/delete** | Удалить конфигурацию из списка отслеживания |
|
||||||
/remove Удаление подписки
|
| **/notify_on** | Включить уведомления о новых версиях |
|
||||||
|
| **/notify_off** | Выключить уведомления о новых версиях |
|
||||||
/list Просмотр всех текущих подписок
|
| **/status** | Вывести информацию о статусе конфигурации |
|
||||||
|
| **/help** | Вывести список поддерживаемых команд |
|
||||||
/check Ручная проверка релизов
|
|
||||||
|
|
||||||
/help Справка по командам
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
ТелеграмРегламентВызовСервера.ЗапускПроверкиОбновлений();
|
ТелеграмРегламентВызовСервера.ЗапускПроверкиОбновлений();
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если НЕ КэшЗначений.ТелеграмИспользоватьВебХук И ТекущийОбъект.ТелеграмИспользоватьВебХук Тогда
|
Если ТекущийОбъект.ТелеграмИспользоватьВебХук Тогда
|
||||||
ТелеграмМетодыВызовСервера.SetWebHook(ТекущийОбъект.ТелеграмВебХук);
|
ТелеграмМетодыВызовСервера.SetWebHook(ТекущийОбъект.ТелеграмВебХук);
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,8 @@
|
|||||||
ОбработатьКомандуВыключитьОповещения(ОбновлениеТелеграм);
|
ОбработатьКомандуВыключитьОповещения(ОбновлениеТелеграм);
|
||||||
ИначеЕсли КомандаДляОбработки = "/status" Тогда
|
ИначеЕсли КомандаДляОбработки = "/status" Тогда
|
||||||
ОбработатьКомандуСтатусКонфигурации(ОбновлениеТелеграм);
|
ОбработатьКомандуСтатусКонфигурации(ОбновлениеТелеграм);
|
||||||
|
ИначеЕсли КомандаДляОбработки = "/help" Тогда
|
||||||
|
ОбработатьКомандуВыводаПодсказки(ОбновлениеТелеграм);
|
||||||
ИначеЕсли ДанныеПользователя <> Неопределено И ДанныеПользователя.СтатусДиалога =
|
ИначеЕсли ДанныеПользователя <> Неопределено И ДанныеПользователя.СтатусДиалога =
|
||||||
Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии Тогда
|
Перечисления.ТелеграмСтатусДиалога.ОжиданиеВводаВерсии Тогда
|
||||||
ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя);
|
ОбработатьВводВерсииКонфигурации(ОбновлениеТелеграм, ДанныеПользователя);
|
||||||
@@ -134,11 +136,29 @@
|
|||||||
Возврат;
|
Возврат;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
ТекстОтвета = СтрШаблон("ℹ %1%2 %3 ➡ %4",
|
РезультатСравненияВерсий = РаботаСОбновлениямиВызовСервера.СравнитьВерсииКонфигураций(
|
||||||
|
ДанныеКонфигурации.ТекущаяВерсия,
|
||||||
|
ДанныеКонфигурации.АктуальнаяВерсия);
|
||||||
|
|
||||||
|
Если РезультатСравненияВерсий <> Неопределено Тогда
|
||||||
|
Если РезультатСравненияВерсий < 0 Тогда
|
||||||
|
Диагностика = "Необходимо обновить текущую версию.";
|
||||||
|
ИначеЕсли РезультатСравненияВерсий > 0 Тогда
|
||||||
|
Диагностика = "Текущая версия не может быть старше актуальной!";
|
||||||
|
Иначе
|
||||||
|
Диагностика = "Обновление текущей версии не требуется.";
|
||||||
|
КонецЕсли;
|
||||||
|
Иначе
|
||||||
|
Диагностика = "";
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
|
ТекстОтвета = СтрШаблон("ℹ %1%2<code>%3</code> → <code>%4</code>%5%6",
|
||||||
ДанныеКонфигурации.Наименование,
|
ДанныеКонфигурации.Наименование,
|
||||||
Символы.ПС,
|
Символы.ПС,
|
||||||
ДанныеКонфигурации.ТекущаяВерсия,
|
ДанныеКонфигурации.ТекущаяВерсия,
|
||||||
ДанныеКонфигурации.АктуальнаяВерсия);
|
ДанныеКонфигурации.АктуальнаяВерсия,
|
||||||
|
Символы.ПС,
|
||||||
|
Диагностика);
|
||||||
|
|
||||||
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
|
ТелеграмМетодыВызовСервера.SendMessage(ИдЧата, ТекстОтвета, Перечисления.ТелеграмРежимРазметки.HTML);
|
||||||
Иначе
|
Иначе
|
||||||
@@ -218,19 +238,16 @@
|
|||||||
|
|
||||||
Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм)
|
Процедура ОбработатьКомандуСтарт(ОбновлениеТелеграм)
|
||||||
|
|
||||||
ТекстОтвета = "Привет! Я бот, который поможет тебе следить за обновлениями конфигураций 1С." + Символы.ПС
|
ТекстОтвета = "👋 Привет!"
|
||||||
+ Символы.ВК + Символы.ПС
|
+ Символы.ПС
|
||||||
|
+ "Я - бот, который поможет тебе следить за обновлениями конфигураций 1С."
|
||||||
|
+ Символы.ПС + Символы.ВК + Символы.ПС
|
||||||
+ "Что я умею:" + Символы.ПС
|
+ "Что я умею:" + Символы.ПС
|
||||||
+ "- Отслеживать новые релизы" + Символы.ПС
|
+ "- Отслеживать новые релизы" + Символы.ПС
|
||||||
+ "- Присылать уведомления о выходе обновлений" + Символы.ПС
|
+ "- Присылать уведомления о выходе обновлений" + Символы.ПС
|
||||||
+ "- Показывать текущую информацию о статусе конфигурации" + Символы.ПС
|
+ "- Показывать текущую информацию о статусе конфигурации" + Символы.ПС
|
||||||
+ Символы.ВК + Символы.ПС
|
+ Символы.ПС
|
||||||
+ "/subscribe - Список конфигураций для отслеживания" + Символы.ПС
|
+ СписокПоддерживаемыхКоманд();
|
||||||
+ "/add - Добавить конфигурацию в список отслеживания" + Символы.ПС
|
|
||||||
+ "/delete - Удалить конфигурацию из списка отслеживания" + Символы.ПС
|
|
||||||
+ "/notify_on - Включить уведомления о новых версиях" + Символы.ПС
|
|
||||||
+ "/notify_off - Выключить уведомления о новых версиях" + Символы.ПС
|
|
||||||
+ "/status - Вывести информацию о статусе конфигурации";
|
|
||||||
|
|
||||||
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета,
|
ТелеграмМетодыВызовСервера.SendMessage(ОбновлениеТелеграм.ИдЧата, ТекстОтвета,
|
||||||
Перечисления.ТелеграмРежимРазметки.HTML);
|
Перечисления.ТелеграмРежимРазметки.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", Символы.ПС, Символы.ПС);
|
||||||
|
|
||||||
|
КонфигурацииСНекорректнымиВерсиями = Новый Массив;
|
||||||
|
|
||||||
Для каждого ДанныеКонфигурации Из КонфигурацииДляВывода Цикл
|
Для каждого ДанныеКонфигурации Из КонфигурацииДляВывода Цикл
|
||||||
ТекстСообщения = ТекстСообщения + СтрШаблон("🔥 %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)
|
Функция НовоеСоединениеХТТП(Таймаут = 0)
|
||||||
|
|
||||||
Возврат Новый HTTPСоединение("update-api.1c.ru", 443, , , , ?(Таймаут > 0, Таймаут, 15),
|
Возврат Новый HTTPСоединение("update-api.1c.ru", 443, , , , ?(Таймаут > 0, Таймаут, 15),
|
||||||
Новый ЗащищенноеСоединениеOpenSSL);
|
Новый ЗащищенноеСоединениеOpenSSL);
|
||||||
|
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<VERSION>40</VERSION>
|
<VERSION>44</VERSION>
|
||||||
|
|||||||
Reference in New Issue
Block a user