Статус невыполненных обработчиков. Проверяет статус отложенных обработчиков обновления.
// Проверяет статус отложенных обработчиков обновления.
//
Функция СтатусНевыполненныхОбработчиков(ПриОбновлении = Ложь) Экспорт
СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
Если ПриОбновлении Тогда
ВерсияДанных = ВерсияИБ(Метаданные.Имя);
ВерсияДанныхБезНомераСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ВерсияДанных);
ВерсияМетаданныхБезНомераСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(Метаданные.Версия);
ПодредакцииРавны = (ВерсияДанныхБезНомераСборки = ВерсияМетаданныхБезНомераСборки);
Если ВерсияДанных = "0.0.0.0" Или ПодредакцииРавны Тогда
// В пределах четвертой цифры можно обновляться при наличии невыполненных
// отложенных обработчиков обновления.
Возврат "";
КонецЕсли;
ВерсияДереваОбработчиков = СведенияОбОбновлении.ВерсияДереваОбработчиков;
Если ВерсияДереваОбработчиков <> "" И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияДереваОбработчиков, ВерсияДанных) > 0 Тогда
// Если в основном цикле обновления произошла ошибка, то при перезапуске не надо
// проверять дерево отложенных обработчиков, т.к. там будут еще невыполненные
// отложенные обработчики на текущую версию.
Возврат "";
КонецЕсли;
КонецЕсли;
ЕстьОбработчикиСОшибкой = Ложь;
ЕстьНевыполненныеОбработчики = Ложь;
ЕстьПриостановленныеОбработчики = Ложь;
Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл
Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл
Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл
Если Обработчик.Статус = "Ошибка" Тогда
// Если найдены обработчики с ошибкой, цикл не прерывается,
// надо убедиться, что нет еще невыполненных обработчиков.
ЕстьОбработчикиСОшибкой = Истина;
ИначеЕсли Обработчик.Статус <> "Выполнено" Тогда
ЕстьНевыполненныеОбработчики = Истина;
Прервать;
ИначеЕсли Обработчик.Статус = "Приостановлен" Тогда
ЕстьПриостановленныеОбработчики = Истина;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если ЕстьНевыполненныеОбработчики Тогда
Возврат "СтатусНеВыполнено";
ИначеЕсли ЕстьОбработчикиСОшибкой Тогда
Возврат "СтатусОшибка";
ИначеЕсли ЕстьПриостановленныеОбработчики Тогда
Возврат "СтатусПриостановлен";
Иначе
Возврат "";
КонецЕсли;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
СтатусОтложенногоОбновления (БСП)
ОбновлениеСтатусовДоставкиSMS (БСП)
КоличествоНевыполненныхЗадачБизнесПроцессов (БСП)
КоличествоНевыполненныхЗадачБизнесПроцесса (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)