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