Как настроить проведение документов завтрашним числом в 1С:Управление торговлей 10.3?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Почему платформа 1С блокирует проведение будущей датой?

Проанализируем базовый механизм проведения. В платформе 1С существует два режима проведения документов:

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

Если у конкретного вида документа в метаданных свойство Оперативное проведение установлено в значение Разрешить, интерактивное нажатие кнопки ОК или Провести по умолчанию инициирует оперативный режим, что и вызывает блокировку при попытке установить завтрашнюю дату.

Способ 1. Изменение свойства документа в конфигураторе

Рассмотрим самый простой способ настройки на уровне метаданных, если конфигурация находится на поддержке с возможностью внесения изменений:

  1. Откроем Конфигуратор и развернем дерево метаданных.
  2. Найдем необходимый документ (например, РеализацияТоваровУслуг).
  3. Откроем палитру свойств выбранного документа.
  4. Найдем свойство Оперативное проведение и установим его значение в Запретить.
  5. Сохраним и обновим конфигурацию базы данных.

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

Способ 2. Программное проведение без снятия с поддержки

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


Функция Печать() Экспорт
    ДокументОбъект = СсылкаНаОбъект.ПолучитьОбъект();
    
    // Проводим документ принудительно в неоперативном режиме
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
    
    Сообщить("Документ успешно проведен будущим числом.");
    Возврат Неопределено;
КонецФункции

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

Способ 3. Переопределение режима через подписку на событие

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


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

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

Способ 4. Использование типовых средств без изменения конфигурации

Если конфигуратор недоступен, проведем документ типовыми методами интерфейса обычных форм:

  1. Групповая обработка справочников и документов: Запишем документ будущей датой без проведения (кнопка Записать). Откроем обработку Групповая обработка справочников и документов, отберем нужные документы и выполним действие «Изменить: [Провести документ]». Групповая обработка выполняет проведение в неоперативном режиме.
  2. Проведение через дерево подчиненности: В форме сохраненного документа нажмем кнопку Структура подчиненности и выполним проведение документа непосредственно из дерева связей.

Особенности учета и последствия для УТ 10.3

Проанализируем влияние неоперативного проведения будущей датой на систему учета:

  1. Контроль остатков: При неоперативном проведении документов товародвижения типовые механизмы могут отключать оперативный контроль остатков. Это означает, что при последующем проведении документов задним числом могут сформироваться отрицательные остатки.
  2. Партионный учет: Документ с будущей датой сдвигает границу последовательности партионного учета. Для корректного списания себестоимости по методам FIFO/LIFO потребуется регулярно запускать регламентную процедуру Восстановление последовательности партионного учета.

Нюансы синхронизации с «1С:Бухгалтерия предприятия 3.0»

При настроенном обмене данными между УТ 10.3 и БП 3.0 перенос документов с будущими датами имеет несколько важных моментов:

  1. Автоматическое проведение: В БП 3.0 проведение документов будущей датой разрешено платформенно. Однако если при загрузке включен строгий контроль остатков на счете 41 и остатка товара на складе на будущую дату еще нет (например, поступление еще не перенесено), документ запишется, но не проведется.
  2. Дата запрета загрузки: Проверим настройки в БП 3.0: если включена Дата запрета изменения данных или ограничение по отклонению дат от текущей даты, синхронизация выдаст ошибку записи.
  3. Синхронизация системного времени: Важно, чтобы сервер УТ и сервер БП имели согласованное системное время и корректные часовые пояса во избежание коллизий при вычислении моментов времени документов.
← На главную