- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
Попытка
ДокументВозврата.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
Исключение
Попытка
ДокументВозврата.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный);
Исключение
Сообщить("Не удалось записать/провести документ возврата в ИБ " + ДокументВозврата, СтатусСообщения.ОченьВажное);
КонецПопытки;
ДокументВозврата.Записать(РежимЗаписиДокумента.Запись);
КонецПопытки;
Что делать, если не получилось провести документ? Правильно! Попробовать еще раз!
А потом еще и записать.
Для надежности.
А код - треш конечно.
Личное сообщение zfilin'у :) Личка в гк такая личка.
Что не так?
Но к коду он отношения не имеет.
Легко.
1. Записать изменения в таблицу документов и таблицу табличных частей документов. Проверить по контрольным функциям, можно ли записать данные в таблицы регистров и сделать это, если контроль положительный при установленном параметре ОперативноеПроведение.
2. В случае отказа в п.1, то же самое с параметром Неоперативное проведение.
3. В случае отказа записи просто записать данные в таблицу документов и табличных частей документов.
Провести документ оперативно.
Если не получилось, неоперативно.
Как последняя попытка - записать без проведения.
1С под боком нет.
Если ошибка типа runtime, то общего обработчика нет, только так вот через попытку-исключение.
Вложенные транзакции в 1С поддерживаются (а запись документа будет во вложенной транзакции), но при любой неудаче родительская транзакция помечается как бэдовая и любая попытка ее зафиксировать провалится. Так что смысла не будет иметь ни вложенная Попытка, ни запись просто без проведения.