ОбъектОбработан (БСП)

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

Объект обработан. Проверяет, имеются ли отложенные обработчики обновления,

// Проверяет, имеются ли отложенные обработчики обновления,
// которые в данный момент обрабатывают переданный объект Данные.
//
// Параметры:
//  Данные - ЛюбаяСсылка, НаборЗаписей, Объект, ДанныеФормыСтруктура, Строка - ссылка на объект, сам объект, 
//           набор записей или полное имя объекта метаданных, блокировку которого необходимо проверить.
//
// Возвращаемое значение:
//   Структура - с полями:
//     * Обработан       - Булево - признак того, что переданный объект обработан.
//     * ТекстИсключения - Строка - текст исключения, если объект еще не обработан,
//                         содержит список незавершенных обработчиков.
//
// Пример:
//   Проверить, что обновлены все объекты требуемого типа:
//   ВсеЗаказыОбработаны = ОбновлениеИнформационнойБазы.ОбъектОбработан("Документ.ЗаказПокупателя"); 
//
Функция ОбъектОбработан(Данные) Экспорт
	
	Результат = Новый Структура;
	Результат.Вставить("Обработан", Истина);
	Результат.Вставить("ТекстИсключения", "");
	Результат.Вставить("НевыполненныеОбработчикиСтрокой", "");
	
	Если Данные = Неопределено Тогда
		Возврат Результат;
	КонецЕсли;
	
	Если ПолучитьФункциональнуюОпцию("ОтложенноеОбновлениеЗавершеноУспешно") Тогда
		
		ЭтоПодчиненныйУзелРИБ = ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ();
		Если Не ЭтоПодчиненныйУзелРИБ Тогда
			Возврат Результат;
		ИначеЕсли ПолучитьФункциональнуюОпцию("ОтложенноеОбновлениеВГлавномУзлеЗавершеноУспешно") Тогда
			Возврат Результат;
		КонецЕсли;
		
	КонецЕсли;
	
	СведенияОБлокируемыхОбъектах = ОбновлениеИнформационнойБазыСлужебный.СведенияОБлокируемыхОбъектах();
	
	Если ТипЗнч(Данные) = Тип("Строка") Тогда
		ПолноеИмя = Данные;
	Иначе
		МетаданныеИОтбор = МетаданныеИОтборПоДанным(Данные);
		ПолноеИмя = МетаданныеИОтбор.Метаданные.ПолноеИмя();
	КонецЕсли;
	
	ПроверяемыйОбъект = СтрЗаменить(ПолноеИмя, ".", "");
	
	ОбработчикиОбъекта = СведенияОБлокируемыхОбъектах.БлокируемыеОбъекты[ПроверяемыйОбъект];
	Если ОбработчикиОбъекта = Неопределено Тогда
		Возврат Результат;
	КонецЕсли;
	
	Обработан = Истина;
	НезавершенныеОбработчики = Новый Массив;
	Для Каждого Обработчик Из ОбработчикиОбъекта Цикл
		СвойстваОбработчика = СведенияОБлокируемыхОбъектах.Обработчики[Обработчик];
		Если СвойстваОбработчика.Выполнен Тогда
			Обработан = Истина;
		ИначеЕсли ТипЗнч(Данные) = Тип("Строка") Тогда
			Обработан = Ложь;
		Иначе
			Обработан = ОбщегоНазначения.ВычислитьВБезопасномРежиме(
				СвойстваОбработчика.ПроцедураПроверки + "(Параметры)", МетаданныеИОтбор);
		КонецЕсли;
		
		Результат.Обработан = Обработан И Результат.Обработан;
		
		Если Не Обработан Тогда
			НезавершенныеОбработчики.Добавить(Обработчик);
		КонецЕсли;
	КонецЦикла;
	
	Если НезавершенныеОбработчики.Количество() > 0 Тогда
		ТекстИсключения = НСтр("ru = 'Действия с объектом временно запрещены, так как не завершен переход на новую версию программы.
			|Это плановый процесс, который скоро завершится.
			|Остались следующие процедуры обработки данных:'");
		
		НевыполненныеОбработчикиСтрокой = "";
		Для Каждого НезавершенныйОбработчик Из НезавершенныеОбработчики Цикл
			НевыполненныеОбработчикиСтрокой = НевыполненныеОбработчикиСтрокой + Символы.ПС + НезавершенныйОбработчик;
		КонецЦикла;
		Результат.ТекстИсключения = ТекстИсключения + НевыполненныеОбработчикиСтрокой;
		Результат.НевыполненныеОбработчикиСтрокой = НевыполненныеОбработчикиСтрокой;
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПроверитьОбъектОбработан (БСП)

ОбработатьОповещениеОбИзменении (БСП)

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

ПроверитьФайлОбработан (БСП)

ОбработатьПодменюОтборПоТипуВзаимодействий (БСП)

ОбработатьЗапросыНаИспользованиеВнешнихРесурсов (БСП)

ОбработатьИнтерфейсРолей (БСП)

ОбработатьПарольВФорме (БСП)

ОбработатьТекстHTML (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз