1C-Code → Как сделать → Как программно провести документ в 1С
Получить объект по ссылке и записать его в режиме проведения. Отдельного метода «Провести» у документа нет — проведение это режим записи.
ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект();
Попытка
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить("Не удалось провести " + СсылкаНаДокумент
+ ": " + ОписаниеОшибки());
КонецПопытки;
Записать() без параметра просто сохранит документ, не вызвав обработку проведения и не сформировав движений. Проведение — это РежимЗаписиДокумента.Проведение, отмена проведения — РежимЗаписиДокумента.ОтменаПроведения.
Если обработка проведения поставила Отказ = Истина, Записать вызовет исключение. Поэтому запись оборачивают в Попытка: иначе первый же непроведённый документ оборвёт всю обработку на середине.
Перед получением объекта убедитесь, что ссылка не пустая и документ не помечен на удаление. ПолучитьОбъект() у пустой ссылки вернёт Неопределено, и следующая же строка упадёт.
В цикле по многим документам ПолучитьОбъект() каждый раз идёт в базу за полной копией — это дорого. Если задача массовая, отбирайте документы запросом, обрабатывайте порциями и не держите всё в одной транзакции: одна ошибка на тысячном документе откатит девятьсот девяносто девять предыдущих.
Задача на это. Прочитать приём и применить его — разные умения. В тренажёре есть задача «Отменить проведение по списку номеров»: массовая операция над документами — с отбором запросом, а не перебором, и с честным отчётом о том, что не получилось. Решение проверяется скрытыми тестами, в том числе на краевых случаях, о которых в условии не сказано.