При ежедневной работе в 1С:Управление торговлей 10.3 нередко возникает практическая потребность заранее подготовить, выписать и провести отгрузочные или складские документы завтрашним (или более поздним) числом. Однако при попытке провести такой документ интерактивно платформа 1С выдает предупреждение о невозможности проведения будущей датой. Разберем механизм работы платформы, выясним причины такого поведения и рассмотрим различные способы реализации данной задачи.
Проанализируем базовый механизм проведения. В платформе 1С существует два режима проведения документов:
Если у конкретного вида документа в метаданных свойство Оперативное проведение установлено в значение Разрешить, интерактивное нажатие кнопки ОК или Провести по умолчанию инициирует оперативный режим, что и вызывает блокировку при попытке установить завтрашнюю дату.
Рассмотрим самый простой способ настройки на уровне метаданных, если конфигурация находится на поддержке с возможностью внесения изменений:
РеализацияТоваровУслуг).Оперативное проведение и установим его значение в Запретить.После этой настройки документ при любых интерактивных действиях пользователя будет проводиться исключительно в неоперативном режиме, что позволит свободно указывать и завтрашнюю, и любую другую будущую дату.
Если вносить изменения в типовую конфигурацию нежелательно, можно решить задачу программным путем — например, через внешнюю печатную форму или внешнюю обработку. Посмотрим на пример кода, который выполняет принудительное проведение в неоперативном режиме:
Функция Печать() Экспорт
ДокументОбъект = СсылкаНаОбъект.ПолучитьОбъект();
// Проводим документ принудительно в неоперативном режиме
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Сообщить("Документ успешно проведен будущим числом.");
Возврат Неопределено;
КонецФункции
Для использования этого приема достаточно записать документ без проведения, а затем запустить внешнюю обработку или команду печати, вызывающую процедуру с неоперативным проведением.
Разберем универсальный программный вариант, позволяющий пользователям работать в стандартном интерфейсе. Создадим подписку на событие ПередЗаписью для требуемых типов документов. В модуле обработчика проверим дату документа:
Процедура ДокументыПередЗаписьюПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
Если Источник.Дата > ТекущаяДата() Тогда
РежимПроведения = РежимПроведенияДокумента.Неоперативный;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
При таком подходе документы с текущей датой сохранят возможность оперативного проведения, а документы с будущей датой автоматически переключатся в неоперативный режим без ошибок для пользователя.
Если конфигуратор недоступен, проведем документ типовыми методами интерфейса обычных форм:
Групповая обработка справочников и документов, отберем нужные документы и выполним действие «Изменить: [Провести документ]». Групповая обработка выполняет проведение в неоперативном режиме.Проанализируем влияние неоперативного проведения будущей датой на систему учета:
Восстановление последовательности партионного учета.При настроенном обмене данными между УТ 10.3 и БП 3.0 перенос документов с будущими датами имеет несколько важных моментов:
Дата запрета изменения данных или ограничение по отклонению дат от текущей даты, синхронизация выдаст ошибку записи.