Как в 1С 8.1 сделать документ непроведенным программно (1С: 8.1: Программисту)

Вопрос: Как программным путем отменить проведение документа в 1С v8?
Ответ
Для этого используется метод записи с параметром «РежимЗаписиДокумента.ОтменаПроведения»
Пример: Рассмотрим на примере отмены проведения всех документов «ПриходныйОрдерНаТовары», на основании которых (в структуре подчиненности) нет ни одного проведенного документа.
Для получения структуры подчиненных документов используется метод «ПолучитьСписокДокументовПоКритериюОтбора», подробно описанный в статье Как программно получить список документов, подчиненных текущему.
Текст процедуры, решающей такую задачу отмены проведения таких документов:

Процедура ОтменаБесплодныхПриходныхОрдеров(Кнопка)

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

        Отпенять = Истина;
        ТаблицаПодчиненных = ПолныеПрава.ПолучитьСписокДокументовПоКритериюОтбора("СвязанныеДокументы", Выборка.Ссылка);
        Если ТаблицаПодчиненных.Количество() > 0 Тогда // подчиненные документы есть, значит, есть что проверять
            Для каждого СтрокаТП Из ТаблицаПодчиненных Цикл
                Если СтрокаТП.Ссылка.Проведен Тогда // если все подчиенные не проведены, то можно будет распровести, а иначе - нельзя
                    Отпенять = Ложь;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;

        Если Отпенять Тогда
            ДокОбъект = Выборка.Ссылка.ПолучитьОбъект();
            ДокОбъект.Комментарий = ДокОбъект.Комментарий + "Отменено проведение, т.к. нет проведенных подчиненных документов";
            ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); // собственно отмена проведения
        КонецЕсли;

    КонецЦикла;

КонецПроцедуры


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.