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