СтатусНевыполненныхОбработчиков (БСП)

Автор: 1С
ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный
1С БСП

Статус невыполненных обработчиков. Проверяет статус отложенных обработчиков обновления.

// Проверяет статус отложенных обработчиков обновления.
//
Функция СтатусНевыполненныхОбработчиков(ПриОбновлении = Ложь) Экспорт
	
	СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы();
	
	Если ПриОбновлении Тогда
		ВерсияДанных = ВерсияИБ(Метаданные.Имя);
		ВерсияДанныхБезНомераСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(ВерсияДанных);
		ВерсияМетаданныхБезНомераСборки = ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки(Метаданные.Версия);
		ПодредакцииРавны = (ВерсияДанныхБезНомераСборки = ВерсияМетаданныхБезНомераСборки);
		
		Если ВерсияДанных = "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 (БСП)

КоличествоНевыполненныхЗадачБизнесПроцессов (БСП)

КоличествоНевыполненныхЗадачБизнесПроцесса (БСП)

СписокСтатусов (БСП)

СтатусДоставки (БСП)

ЗаполнитьПодменюСтатус (БСП)

ПроверитьСтатусОбновления (БСП)

ЗаписатьСтатусОбновления (БСП)

Синтакс-помощник БСП с нейросетевым ассистентом