Как закрыть позиции в Заказе клиента, если период закрыт для редактирования?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет Промышленность, строительство и АПК
← На главную

Ситуация, когда требуется закрыть или отменить позиции в Заказе клиента, который датирован закрытым периодом, является классической задачей для 1С:ERP. Мы часто сталкиваемся с конфликтом между жесткими требованиями бухгалтерского учета и гибкостью оперативного управления производством. Давайте разберем, как решить эту проблему, не нарушая целостность данных и не раздавая административные права всем менеджерам.

Понимание природы проблемы

Механизм Даты запрета изменения данных в 1С работает на уровне записи объекта в базу данных. В типовых конфигурациях при попытке изменить документ Заказ клиента система проверяет, попадает ли дата документа в запрещенный период. Если да — запись блокируется. Это сделано для того, чтобы не исказить финансовые результаты и движения по регистрам, которые уже были зафиксированы в отчетах.

Главная сложность заключается в том, что Заказ клиента — это документ, который участвует в сквозном планировании. Его перепроведение в закрытом периоде может «потянуть» за собой цепочку изменений, чего бухгалтерия категорически не приемлет.

Решение 1: Использование механизмов корректировки

Рассмотрим самый правильный архитектурный путь. Типовые конфигурации 1С, включая ERP и УТ 11, не предполагают правки «задним числом». Вместо того чтобы менять оригинальный документ, мы должны использовать специализированные инструменты:

  1. Документы корректировки: Используйте документ Корректировка заказа клиента. Этот документ создается текущей датой. Он позволяет переопределить состав заказа, изменить количество или отменить позиции. Так как сам документ имеет текущую дату, он не попадает под запрет изменения периода, при этом его движения по регистрам оперативного учета корректно отражают актуальное состояние заказа.
  2. Работа со статусами: Если задача стоит просто «закрыть» заказ, проверьте, настроен ли у вас бизнес-процесс работы со статусами. Перевод строки или заказа в статус Отменено или Закрыт является штатным действием, которое в ряде случаев может не требовать изменения реквизитов документа, затрагивающих закрытый период.

Решение 2: Настройка даты запрета по разделам

Если вам все же необходимо частичное редактирование, разберем настройку Даты запрета. Мы можем дифференцировать запрет:

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

Решение 3: Разработка специализированного механизма «Закрытия заказа»

Если типовые средства не покрывают ваши потребности, а менеджеры вынуждены постоянно обращаться к администраторам, лучшим решением будет доработка системы. Мы рекомендуем создать специализированную обработку или документ Закрытие заказа:

Алгоритм реализации:

  1. Создайте документ или обработку, которая не «правит» старый заказ, а создает запись в новом регистре сведений или документе-регистраторе, который учитывается в отчетах как «признак закрытия позиции».
  2. В процедуре обработки записи используйте программный интерфейс, который будет игнорировать проверку даты запрета, так как действие по закрытию заказа является регламентной операцией, разрешенной менеджерам.

Пример программной логики (псевдокод), которую можно реализовать в расширении для изменения статуса или признака закрытия:


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

Почему не стоит «открывать» доступ в закрытый период

Настоятельно рекомендуем не предоставлять менеджерам полные права администратора. Это приводит к размытию ответственности и ошибкам в отчетности. Любые действия в закрытом периоде должны быть:

Подводя итог, проанализируем нашу ситуацию: если вам нужно закрывать заказы, которые длятся месяцами, архитектурно верным будет внедрение документа Корректировка заказа клиента. Это снимет проблему перепроведения «старых» документов и позволит бухгалтерии спокойно закрывать периоды, не блокируя работу отдела продаж.

← На главную