Программная запись, проведение или отмена проведения документа осуществляется с помощью метода Записать(<РежимЗаписи>, <РежимПроведения>)
объекта документа.
В параметр РежимЗаписи
передается одно из значений системного перечисления РежимЗаписиДокумента:
Запись
(Write)Проведение
(Posting)ОтменаПроведения
(UndoPosting)
Переданное значение определяет, какое действие будет выполнено с документом. Параметр РежимПроведения
позволяет указать, будет ли проведение оперативным или нет.
Примеры:
Программная запись документа
В данном случае документ запишется в независимости менялись реквизиты или нет, если есть подписки на события, они отработают.
Если документ проведен, то его статус не поменяется,
СсылкаНаДокумент = Документы.ЗаказКлиента.НайтиПоНомеру("АП-000000001",ТекущаяДата()); Если НЕ СсылкаНаДокумент.Пустая() Тогда ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект(); ДокументОбъект.Записать(РежимЗаписиДокумента.Запись); КонецЕсли;
Программное проведение документа
Если документ уже проведен, проведение выполнится повторно, если документ помечен на удаление, перед проведением следует снять пометку удаления, иначе это вызовет ошибку исполнения. Также важно помнить, что у пользователя может не быть прав на запись документа и добавить соответствующие проверки (в данном пример их нет, чтобы не усложнять код)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СчетНаОплату.Ссылка |ИЗ | Документ.СчетНаОплату КАК СчетНаОплату |ГДЕ | СчетНаОплату.Дата МЕЖДУ &НачалоПериода И &КонецПериода"; Запрос.УстановитьПараметр("НачалоПериода", НачалоГода(ТекущаяДата())); Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата())); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект(); ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла;
Программная отмена проведения документа
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ РАЗРЕШЕННЫЕ | ХозрасчетныйОбороты.Регистратор |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет =&Счет90_01) КАК ХозрасчетныйОбороты"; Запрос.УстановитьПараметр("НачалоПериода", НачалоГода(ТекущаяДата())); Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата())); Запрос.УстановитьПараметр("Счет90_01", ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1")); Для Каждого СтрокаТаблицы Из Запрос.Выполнить().Выгрузить() Цикл ДокументОбъект = СтрокаТаблицы.Регистратор.ПолучитьОбъект(); ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); КонецЦикла;
Эти примеры демонстрируют работу с документами различных типов, таких как ЗаказКлиента и СчетНаОплату, а также реализацию операций записи, проведения и отмены проведения.
Половина денег, которые идут на рекламу, выбрасываются впустую; но как узнать, какая именно половина?