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

Администрирование · 9 мин

Оперативное проведение в 1С: как определить и настроить режим

Что такое оперативное проведение документов в 1С, как проверить текущий режим, определить его в запросе и модуле, а также включить или отключить.

Оперативное проведение — это режим, при котором документ в 1С записывает свои движения по регистрам «здесь и сейчас», с контролем остатков на момент времени документа. Классический пример — расходная накладная, которая при проведении проверяет, хватает ли товара на складе, и отказывает в проведении, если остатка недостаточно. От того, включён ли оперативный режим, зависит поведение проверок, скорость работы и способ восстановления последовательности документов.

Путаница возникает из-за того, что у одного вида документов режим задаётся в конфигураторе, а у конкретного проведённого документа его можно определить программно — через свойства объекта, запрос или анализ движений. Ниже разобраны все практические способы: от просмотра настройки в конфигураторе до определения режима в коде и типичных ошибок при смене режима.

Что такое оперативное проведение и чем оно отличается от неоперативного

В конфигураторе у каждого документа есть свойство «Оперативное проведение» с тремя значениями: «Разрешить», «Запретить» и «Использовать» (унаследованный вариант в старых конфигурациях). Если оперативное проведение разрешено, дата документа устанавливается равной текущей дате сеанса при проведении, а движения формируются с контролем актуальных остатков. Это позволяет системе отвечать на вопрос «можно ли списать товар прямо сейчас».

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

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

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

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

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

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

В модуле или во внешней обработке режим определяется через объект метаданных. Достаточно одной строки: сравнить свойство с системным перечислением. Это работает и на сервере, и в толстом клиенте, и в фоновых заданиях.

Если Метаданные.Документы.РасходнаяНакладная.ОперативноеПроведение

= Метаданные.СвойстваОбъектов.ОперативноеПроведение.Разрешить Тогда

// документ оперативный

КонецЕсли;

Если у вас есть ссылка на документ, но неизвестен его вид, сначала получите метаданные через метод Метаданные() у ссылки, а затем читайте то же свойство. Это универсальный приём для обработок, работающих с произвольными документами, например для массового перепроведения.

bsl
Функция ЭтоОперативныйДокумент(ДокументСсылка)
    Мета = ДокументСсылка.Метаданные();
    Возврат Мета.ОперативноеПроведение = Метаданные.СвойстваОбъектов.ОперативноеПроведение.Разрешить;
КонецФункции

Как определить режим в запросе и по движениям

Напрямую в тексте запроса свойство метаданных недоступно — запрос работает только с данными таблиц. Поэтому на практике используют два обходных подхода. Первый: передать признак оперативности в запрос параметром, вычислив его заранее через метаданные. Это самый быстрый и предсказуемый вариант.

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

Как включить или отключить оперативное проведение

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

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

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

Частая ошибка — попытка провести оперативный документ прошлой датой и удивление, почему система «сама» меняет время. Это штатное поведение: оперативный документ привязан к текущему моменту. Если бизнес-процесс требует проведения задним числом, нужен неоперативный режим или отдельный корректировочный документ.

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

Типичные ошибки
01
Проверка оперативности по косвенным признакам в запросе вместо чтения метаданных — логика ломается при доработках
02
Смена режима в рабочей базе без копии — риск отрицательных остатков и остановки работы пользователей
03
Ожидание, что старые документы перепроведутся сами после смены режима — их нужно перепроводить отдельно
04
Попытка провести оперативный документ задним числом вместо использования корректировочного документа

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

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

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

Как проверить результат

Свойство в конфигураторе
Норма

Установлено нужное значение и конфигурация БД обновлена

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

Свойство изменено, но обновление БД не выполнено

Проведение текущей датой
Норма

Документ проводится, движения записываются

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

Ошибки проведения или пустые движения

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

Для оперативного режима дата корректируется или выдаётся сообщение

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

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

Контроль остатков
Норма

При нехватке товара проведение отклоняется

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

Отрицательные остатки формируются без сообщений

Итог

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

Режим оперативного проведения задаётся в свойствах документа в конфигураторе и определяется программно через метаданные. В запросе его передают параметром. Любую смену режима выполняйте на копии базы и завершайте проверкой контроля остатков и поведения дат.

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

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

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

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

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

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

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

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

Через встроенный язык: любая внешняя обработка или консоль кода может прочитать Метаданные.Документы.ИмяДокумента.ОперативноеПроведение. Если и это недоступно, ориентируйтесь на поведение: попытка провести документ прошлой датой на копии базы покажет, корректируется ли дата автоматически.

Нужно ли перепроводить документы после смены режима?

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

Что выбрать для документа инвентаризации?

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