Расширил функциональность бота новыми командами
- Периодическая проверка актуальности конфигураций - Автоматическое оповещение о версиях, требующих обновления - Получение статуса указанной конфигурации - Включение и выключение уведомлений о версиях, требующих обновления
This commit is contained in:
@@ -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"];
|
||||
Если АктуальнаяВерсияПлатформы <> Неопределено Тогда
|
||||
АктуальнаяВерсияССервера = ТекущаяВерсия;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
НоваяСтрока = Кэш.Добавить();
|
||||
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтруктураОтбора);
|
||||
НоваяСтрока.АктуальнаяВерсия = АктуальнаяВерсияССервера;
|
||||
Возврат АктуальнаяВерсияССервера;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Неопределено;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
Reference in New Issue
Block a user