Как в 1С:УНФ реализовать корректировку заказа покупателя без изменения документов задним числом?

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

В процессе работы с программой 1С:Управление нашей фирмой (УНФ) многие пользователи и администраторы сталкиваются с серьезной методологической проблемой: в системе отсутствует специализированный документ Корректировка заказа покупателя. В то же время бизнес-процессы требуют постоянных изменений: клиенты отказываются от части позиций, меняют номенклатуру или количество уже после того, как заказ был частично оплачен или зарезервирован. Если позволить менеджерам просто изменять исходный Заказ покупателя задним числом, это неизбежно приведет к хаосу в управленческом учете, «развалу» себестоимости и неверным остаткам в регистрах резервов.

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

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

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

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

Метод 1. Использование штатного документа «Закрытие заказов»

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

Разберем по шагам, как это работает:

  1. Перейдем в раздел Продажи и найдем документ Закрытие заказов.
  2. В документе выберем нужный Заказ покупателя.
  3. На вкладке Заказы покупателей система автоматически заполнит остатки по невыполненным позициям.
  4. При проведении этот документ сделает записи в регистры, которые «обнулят» долги клиента перед нами (или наши перед ним по товару) и снимут все установленные резервы текущей датой.

Важный момент: исходный заказ при этом остается в первоначальном виде, что позволяет сохранить историю: «что клиент хотел изначально» против «что получилось по факту».

Метод 2. Корректировка регистров (для сложных случаев)

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

Выясним, какие регистры нужно корректировать при изменении заказа:

Пример логики корректировки в коде (если вы решите автоматизировать этот процесс):


// Пример создания записи в регистр ЗаказыПокупателей
Движение = РегистрыНакопления.ЗаказыПокупателей.СоздатьНаборЗаписей();
Движение.Отбор.Регистратор.Установить(СсылкаНаДокументКорректировки);

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

Движение.Записать();

Помните, что использование Корректировки регистров — это «последнее дело», так как она не имеет печатной формы и её сложно отследить в стандартных отчетах по документам-основаниям. Для автоматического обнуления зависших остатков в регистрах можно использовать инструмент для закрытия остатков регистров накопления.

Метод 3. Административное ограничение через даты запрета и статусы

Чтобы менеджеры физически не могли «залезть» в старые заказы, проанализируем настройки прав доступа. Рассмотрим два эффективных способа блокировки:

  1. Дата запрета редактирования: В разделе Настройки — Поддержка и обслуживание установите дату запрета. Важно настроить её не только для всей базы, но и персонально для группы «Менеджеры», оставив возможность правки администратору или старшему бухгалтеру.
  2. Настройка состояний (статусов) заказов: В УНФ версии 3.0 и выше можно настроить схему состояний. Для статусов «Выполнен», «Завершен» или «К отгрузке» можно установить флаг Запретить редактирование. Таким образом, как только заказ переходит на стадию исполнения, поля документа блокируются даже в открытом периоде.

Метод 4. Доработка системы через расширение

Если бизнесу жизненно необходим функционал, похожий на Корректировку заказа из УТ 11, лучшим решением будет использование механизма расширений. Это позволит не снимать конфигурацию с поддержки.

Что стоит реализовать в расширении:

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


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

Выводы и рекомендации

Мы проанализировали ситуацию с отсутствием документа корректировки в 1С:УНФ и выяснили, что наиболее безопасным и прозрачным методом является сочетание организационных мер и штатного функционала.

Итоговый алгоритм действий:

  1. Установите жесткую дату запрета редактирования.
  2. Обучите менеджеров использовать документ Закрытие заказов для отмены невыполненных позиций.
  3. Если требуется изменить цену или количество в уже отгруженном заказе — используйте документ Корректировка реализации, который корректно отрабатывает изменения в расчетах и запасах.
  4. Внедрите версионирование, чтобы иметь возможность найти виновного в случае «ручных» правок.

Такой подход позволит вам сохранить чистоту управленческого учета и избежать проблем с расчетом себестоимости в 1С:УНФ.

← На главную