К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как узнать режим записи документа в 1С

Как определить режим записи документа 1С: оперативное и неоперативное проведение, просмотр свойств в конфигураторе, проверка встроенным языком и типичные ошибки.

Режим записи документа в 1С определяет, как система обрабатывает проведение: оперативное проведение фиксирует документ текущей датой и временем и контролирует остатки «на сейчас», а неоперативное позволяет проводить документы любой датой без жёсткой привязки к текущему моменту. Узнать режим можно тремя способами: через свойства объекта в конфигураторе, программно встроенным языком и косвенно — по поведению документа в пользовательском режиме.

Чаще всего вопрос возникает у разработчиков и внедренцев, когда документ «не даёт» провестись задним числом или, наоборот, проводится в прошлом периоде и ломает отчётность. Причина почти всегда кроется в свойстве «Оперативное проведение» и в режиме записи, который передаётся при вызове метода Записать(). Ниже разобраны все способы проверки и условия их применения.

Что такое режим записи и проведения документа

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

Оперативное проведение означает, что документ проводится «точкой актуальности»: система автоматически устанавливает дату документа равной текущей, если пользователь пытается провести его прошлым временем, и контролирует остатки на момент проведения. Неоперативное проведение снимает эти ограничения: документ можно провести любой датой, контроль остатков выполняется только если он явно запрограммирован в модуле.

Как узнать режим через конфигуратор

Самый надёжный способ — открыть конфигуратор и посмотреть свойства объекта. Это работает для любой конфигурации, включая типовые «Бухгалтерию», «Управление торговлей» и «ERP», и не требует прав на изменение.

Просмотр режима в конфигураторе
  1. 1
    Откройте конфигуратор и в дереве конфигурации разверните ветку «Документы».
  2. 2
    Найдите нужный документ, кликните правой кнопкой и выберите «Свойства» (или нажмите кнопку «Палитра свойств»).
  3. 3
    Найдите свойство «Оперативное проведение»: значение «Использовать» означает оперативный режим, «Не использовать» — неоперативный.
  4. 4
    Проверьте также вкладку «Движения»: у оперативно проводимых документов обычно включён контроль остатков регистров накопления.

Если свойство «Оперативное проведение» установлено в «Использовать», документ всегда будет стремиться провестись текущей датой. При попытке провести его задним числом в пользовательском режиме система либо выдаст предупреждение, либо молча перенесёт дату — поведение зависит от настроек и кода обработчиков. Документы с выключенным оперативным проведением свободно проводятся любой датой, но контроль остатков по регистрам придётся обеспечивать программно.

Как определить режим программно

Когда нужно узнать режим из кода — например, в обработчике перед записью или во внешней обработке — используется объект метаданных. Свойство доступно только на чтение и показывает именно настройку конфигурации, а не режим конкретного вызова Записать().

bsl
Если Метаданные.Документы.РасходнаяНакладная.ОперативноеПроведение = Метаданные.СвойстваОбъектов.ОперативноеПроведение.Использовать Тогда
    Сообщить("Документ проводится оперативно");
Иначе
    Сообщить("Документ проводится неоперативно");
КонецЕсли;

Отдельно можно проверить, каким режимом документ записывается прямо сейчас. В обработчике ПередЗаписью и ПриЗаписи доступны параметры РежимЗаписи и РежимПроведения — они показывают фактический режим текущей операции записи, который может отличаться от настройки метаданных, если проведение вызвано программно с явным параметром.

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

Как определить режим в пользовательском режиме без конфигуратора

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

Второй признак — колонка времени в журнале документов. У оперативных документов время внутри дня имеет значение для последовательности проведения, и система строго упорядочивает их по моменту времени. Также в типовых конфигурациях оперативные документы часто входят в последовательности, и при проведении задним числом появляется предупреждение о необходимости перепроведения последовательности.

Контрольные точки

Признаки оперативного режима в 1С:Предприятии

Проведение документа прошлой датой
Норма

Дата автоматически меняется на текущую или появляется запрет — режим оперативный

Тревожный признак

Документ спокойно проводится любой датой — режим неоперативный

Свойство «Оперативное проведение» в конфигураторе
Норма

«Использовать» — оперативный режим

Тревожный признак

«Не использовать» — неоперативный режим

Параметр РежимПроведения в обработчике ПередЗаписью
Норма

Значение «Оперативный» при стандартном проведении

Тревожный признак

Значение «Неоперативный» — проверьте, не переопределён ли вызов Записать()

Различия режимов и когда какой используется

Выбор режима закладывается на этапе проектирования конфигурации и менять его в типовых решениях без необходимости не стоит. Оперативный режим подходит документам, отражающим факты «здесь и сейчас»: розничные продажи, кассовые операции, отгрузки со склада в реальном времени. Неоперативный — документам, которые вводятся задним числом по первичке: банковские выписки, акты сверок, корректировки прошлых периодов.

Сравнение режимов проведения

Оперативное проведение

Дата ставится текущей, контроль остатков на момент проведения встроен в платформу. Ограничение: нельзя провести задним числом без переноса даты.

Неоперативное проведение

Документ проводится любой датой, удобно для ввода первички задним числом. Ограничение: контроль остатков нужно программировать вручную, иначе возможны отрицательные остатки.

Простая запись без проведения

Документ сохраняется, но движений по регистрам нет. Подходит для черновиков; в отчёты по регистрам такой документ не попадает.

Типичные ошибки и ограничения

Самая частая ошибка — попытка программно провести оперативный документ неоперативно или наоборот. Если в метаданных включено оперативное проведение, вызов Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный) завершится ошибкой: платформа не позволяет провести такой документ неоперативно. Обратная ситуация (оперативное проведение документа без соответствующего свойства) тоже вызовет исключение.

Типичные ошибки при работе с режимом записи
01
Проведение оперативного документа с параметром «Неоперативный» — платформа выдаёт ошибку, документ не записывается.
02
Смена свойства «Оперативное проведение» в рабочей базе без анализа — уже проведённые документы могут оказаться в противоречии с новым режимом, отчёты «поедут».
03
Путаница между РежимЗаписиДокумента и РежимПроведенияДокумента — это разные перечисления, подстановка одного вместо другого приводит к ошибке компиляции.
04
Попытка определить режим по коду Записать() в одном месте — режим может переопределяться в других процедурах, подписках на события и бизнес-процессах.

Проверка результата после изменений

Если режим был изменён или вы настраивали программное проведение, результат проверяется в три шага. Сначала убедитесь, что документ проводится в ожидаемом режиме: для оперативного — дата подтягивается к текущей, для неоперативного — сохраняется заданная пользователем. Затем проверьте движения по регистрам: откройте проведённый документ и посмотрите вкладку с движениями — записи должны соответствовать дате документа.

Наконец, сверьте отчёты по затронутым регистрам до и после изменения режима на копии базы. Расхождения в остатках — признак того, что контроль остатков перестал работать (типично при переходе на неоперативный режим без доработки модуля проведения) или что последовательности требуют восстановления.

Частые вопросы

Можно ли провести оперативный документ задним числом?

Штатно — нет: платформа при проведении перенесёт дату на текущий момент. Обходные пути (смена даты сеанса, отключение оперативного проведения) нарушают логику контроля остатков и применяются только в тестовых целях на копии базы.

Где посмотреть режим записи, если нет доступа к конфигуратору?

Создайте тестовый документ и проведите его прошлой датой: перенос даты на текущую или запрет означают оперативный режим. Также можно открыть обработчик документа через внешнюю обработку и прочитать свойство метаданных, если доступны средства разработки в режиме предприятия.

Чем отличается РежимЗаписиДокумента от РежимПроведенияДокумента?

Первое перечисление определяет действие: запись, проведение или отмена проведения. Второе уточняет способ проведения: оперативный или неоперативный. Это независимые параметры, и в методе Записать() они передаются отдельно.

Почему программное проведение падает с ошибкой, хотя из формы документ проводится?

Обычно причина в несоответствии режима: при вызове Записать() передан режим проведения, не поддерживаемый свойством документа. Проверьте, что для оперативного документа используется РежимПроведенияДокумента.Оперативный, и наоборот.

Влияет ли режим проведения на скорость работы?

Да, косвенно. Оперативное проведение с контролем остатков требует чтения текущих итогов регистров и при высокой конкуренции пользователей может приводить к блокировкам. Неоперативное проведение легче, но переносит ответственность за корректность остатков на код конфигурации.

Итог

Что важно запомнить

Режим записи документа определяется свойством «Оперативное проведение» в конфигураторе и параметром РежимПроведения при вызове Записать(). Проверить его можно через палитру свойств, программно через метаданные или по поведению документа при проведении задним числом. Менять режим в рабочей базе следует только после тестирования на копии.