Программная запись, проведение или отмена проведения документа осуществляется с помощью метода Записать(<РежимЗаписи>, <РежимПроведения>) объекта документа.

В параметр РежимЗаписи передается одно из значений системного перечисления РежимЗаписиДокумента:

  • Запись (Write)
  • Проведение (Posting)
  • ОтменаПроведения (UndoPosting)

Переданное значение определяет, какое действие будет выполнено с документом. Параметр РежимПроведения позволяет указать, будет ли проведение оперативным или нет.

Примеры:

Программная запись документа

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

Если документ проведен, то его статус не поменяется, 

СсылкаНаДокумент = Документы.ЗаказКлиента.НайтиПоНомеру("АП-000000001",ТекущаяДата()); 
Если НЕ СсылкаНаДокумент.Пустая() Тогда
	ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
	ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); 
КонецЕсли;

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

Если документ уже проведен, проведение выполнится повторно, если документ помечен на удаление, перед проведением следует снять пометку удаления, иначе это вызовет ошибку исполнения. Также важно помнить, что у пользователя может не быть прав на запись документа  и добавить соответствующие проверки (в данном пример их нет, чтобы не усложнять код)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СчетНаОплату.Ссылка
|ИЗ
| Документ.СчетНаОплату КАК СчетНаОплату
|ГДЕ
| СчетНаОплату.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
Запрос.УстановитьПараметр("НачалоПериода", НачалоГода(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;

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

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ
| ХозрасчетныйОбороты.Регистратор
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет =&Счет90_01) КАК ХозрасчетныйОбороты";

Запрос.УстановитьПараметр("НачалоПериода", НачалоГода(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("Счет90_01", ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1"));
Для Каждого СтрокаТаблицы Из Запрос.Выполнить().Выгрузить() Цикл
   ДокументОбъект = СтрокаТаблицы.Регистратор.ПолучитьОбъект();
   ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЦикла;

Эти примеры демонстрируют работу с документами различных типов, таких как ЗаказКлиента и СчетНаОплату, а также реализацию операций записи, проведения и отмены проведения.

Половина денег, которые идут на рекламу, выбрасываются впустую; но как узнать, какая именно половина?

— Уильям Гескет Левер