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

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

Проверить объект обработан. Вызывает исключение или блокирует форму от редактирования, если

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

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

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

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

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

ПроверитьПодписи (БСП)

ПроверитьУстранениеПроблемыОбъектаПриЗаписи (БСП)

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

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

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

ПроверитьСсылкиНаОбъектПослеПодтвержденияПроверки (БСП)

ПроверитьСсылкиНаОбъектПослеПодтвержденияРедактирования (БСП)

ПроверитьУсловияФильтра (БСП)

TurboConf 6 - расширение Конфигуратора 1С