Запись, проведение и отмена проведения документа 1С

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

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

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

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

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

СсылкаНаДокумент = Документы.АвансовыйОтчет.НайтиПоНомеру("00000000001");

Если НЕ СсылкаНаДокумент = Неопределено Тогда
    ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();

    ДокументОбъект.Дата = ТекущаяДата();
    ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;

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

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода" , КонецМесяца(ТекущаяДата()));

Запрос.Текст = "ВЫБРАТЬ
               |    ВозвратТоваровОтПокупателя.Ссылка
               |ИЗ
               |    Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
               |ГДЕ
               |    ВозвратТоваровОтПокупателя.Дата МЕЖДУ &НачалоПериода И &КонецПериода";

Результат = Запрос.Выполнить().Выгрузить();

Для Каждого ЭлементРезультата из Результат Цикл
    ДокументОбъект = ЭлементРезультата.Ссылка.ПолучитьОбъект();

    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;

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

Запрос = Новый Запрос;

Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода" , КонецМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("Счет90"       , ПланыСчетов.Хозрасчетный.НайтиПоКоду("90"));

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

Результат = Запрос.Выполнить().Выгрузить();

Для Каждого ЭлементРезультата из Результат Цикл
    ДокументОбъект = ЭлементРезультата.Регистратор.ПолучитьОбъект();

    ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЦикла;