Как закрыть заказ покупателя и снять резервы в закрытом периоде в 1С:КА 2.4 / ERP 2

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

Переход с конфигураций прошлых поколений (таких как 1С:Управление производственным предприятием, ред. 1.3 или 1С:Комплексная автоматизация, ред. 1.1) на современные ERP-системы часто вызывает у пользователей и аналитиков методические трудности. Типичный пример такой сложности — закрытие зависших заказов клиентов в прошлых (уже закрытых) периодах для освобождения зарезервированных товаров.

В старых редакциях для этой цели существовал отдельный и крайне удобный документ Закрытие заказов покупателей. Он создавался текущей датой в открытом периоде, делал корректирующие движения по регистрам и успешно снимал резервы, никак не затрагивая исторический документ заказа. В новых ERP-архитектурах (1С:Комплексная автоматизация 2.4 / 2.5, 1С:ERP Управление предприятием 2, 1С:Управление торговлей 11) разработчики отказались от отдельного документа закрытия. Теперь отмена неотгруженных позиций и перевод заказа в статус "Закрыт" производятся непосредственно в самом документе Заказ клиента.

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

В чем опасность прямого изменения старого заказа клиента?

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

  1. Нарушение последовательности закрытия месяца. Любое перепроведение документа в закрытом периоде сигнализирует системе о необходимости пересчета себестоимости и финансового результата за этот месяц. В рабочем месте "Закрытие месяца" появится предупреждение, а повторный расчет может изменить финансовые показатели сданного периода.
  2. Сбой в распределении взаиморасчетов. Заказ клиента в современных конфигурациях активно участвует в регистрах расчетов. Перепроведение старого заказа может исказить распределение ранее разнесенных платежей и сдвинуть даты возникновения задолженности.
  3. Технические ошибки партионного учета. В зависимости от настроек системы, проведение старого документа способно по цепочке запустить пересчет партий товаров.

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

Способ 1: Корректировка регистров в открытом периоде (Самый безопасный метод)

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

Давайте разберем по шагам, как выполнить эту операцию:

  1. Перейдем в раздел Администрирование или воспользуемся функциями технического специалиста и создадим документ Корректировка регистров. Дату документа установим текущую (открытый период).
  2. В шапке документа нажмем кнопку Настройка состава регистров и выберем следующие регистры:
    • Регистр накопления "Заказы клиентов" — отвечает за состояние выполнения обязательств по заказам.
    • Регистр накопления "Запасы и потребности" — именно в нем фиксируется резервирование товаров на складах.
    • Регистр сведений "Распределение запасов" (при необходимости детальной корректировки потребностей).
  3. Заполним вкладку Заказы клиентов. Нам необходимо сделать движение с видом Расход (или сторнировать приходное движение), указав наш проблемный заказ клиента, номенклатуру и количество, которое зависло и не было отгружено.
  4. Заполним вкладку Запасы и потребности. Аналогично делаем движение Расход, чтобы уменьшить зарезервированное количество товара на складе под этот заказ.
  5. Запишем и проведем документ корректировки.

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

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

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

Давайте рассмотрим пример программного кода, который решает эту задачу:


// Выбираем ссылку на проблемный заказ клиента
ЗаказСсылка = Документы.ЗаказКлиента.НайтиПоНомеру("НомерЗаказа", '20231231235959');

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

Выясним причину, почему это безопасно: При установке свойства ОбменДанными.Загрузка = Истина платформа 1С отключает выполнение прикладных проверок в модуле объекта и, самое главное, не запускает подписки на события проведения. Документ просто сохраняется в базе данных с новыми реквизитами. Регистры при этом не перезаписываются, а закрытие месяца не "слетает".

Важное примечание: Этот способ необходимо использовать совместно со Способом 1. Так как сам документ не проводился, его старые резервные движения все еще активны. Программное закрытие документа уберет визуальный "висяк" в интерфейсе менеджера, а документ Корректировка регистров в текущем периоде физически снимет резерв с товаров.

Способ 3: Временное открытие периода (Сдвиг даты запрета)

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

Проанализируем этот сценарий по шагам:

  1. Администратор системы временно переносит дату запрета изменения данных назад, открывая доступ к периоду, в котором был создан заказ.
  2. Переходим в нужный Заказ клиента.
  3. В табличной части нажимаем кнопку Заполнить и выбираем пункт Отменить непоставленные строки. Система автоматически проанализирует отгрузку, разобьет строки (если была частичная отгрузка) и установит флаг Отменено на недопоставленное количество.
  4. Переводим общий статус заказа в положение Закрыт.
  5. Проводим документ. При проведении система сама сделает расходные движения по регистрам накопления и высвободит резервы в том самом историческом периоде.
  6. Возвращаем дату запрета изменения данных на исходное место.
  7. Запускаем процедуру Закрытие месяца для актуализации данных по себестоимости и расчетам.

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

Чтобы не сталкиваться с необходимостью редактирования закрытых периодов, рекомендуем настроить автоматический контроль резервов. В 1С:Комплексная автоматизация 2 предусмотрены эффективные инструменты для этого:

Используя эти методы, вы сохраните чистоту складского учета и гарантируете безопасность ведения регламентированного учета в системе 1С. Для регулярного контроля просроченных заказов подойдёт инструмент для автоматического снятия резервов по срокам.

← На главную