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