Всем привет.
Столкнулся с ситуацией, когда документ не должен проводиться (отказ = истина), но при этом должен программно записаться. Делаю это в процедуре ПередЗаписью. Но документ не записывается.
Что делаю не так?
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ИдентификаторЗамераПроведениеНеНужнаРегистрацияОшибки = ОценкаПроизводительностиКлиент.ЗамерВремени();
ЕстьОшибки = ПроверкаЛимитаОтпусков();
Если ЕстьОшибки Тогда
Отказ = Истина;
ЗаписатьДокумент();
КонецЕсли;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи <> РежимЗаписиДокумента.ОтменаПроведения И Не ПараметрыЗаписи.Свойство("ПроверкаПередЗаписьюВыполнена") Тогда
Отказ = Истина;
ЗаписатьНаКлиенте(Ложь, ПараметрыЗаписи);
КонецЕсли;
Не делай как (2).
Анализируй отказ в коде, инициирующем проведение, но уже после завершения транзакции.
Дополнительно нужно убедиться, что ты не находишься во вложенной транзакции. Если предполагается, что твой код будет выполняться внутри сторонней транзакции, то без персистентной очереди не обойтись. В этом случае пара ненадежных вариантов - пополнять ее через запуск ФЗ, либо писать в ЖР и шерстить его опосля.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан