Попытка проведения и записи документа в одной процедуре

builin 102 2 3 2

Процедура проверяет корректность заполнения полей документа, пытается его провести. Если проведение не удается, пытается его записать. В реальной работе располагается в модуле загрузки документов из внешней системы, все документы фиксируются в базе этой процедурой.

Блог Жёлтая тетрадь 📒 http://t.me/yellow_pad

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

См. также

ПровестиДокументы (БСП)

ДоступноПравоПроведения (БСП)

ПроверитьПроведенностьДокументовПроведениеДокументов (БСП)

ПроверитьПроведенностьДокументовДиалогПроведения (БСП)

ПроверитьПроведенностьДокументовЗавершение (БСП)

УдалитьДвиженияУДокумента (БСП)

Программное проведение документа

ЗарегистрироватьОшибкуПроведенияДокумента (БСП)

Модератору