В системе 1С:Управление производственным предприятием (УПП) 1.3 механизмы обеспечения потребностей (резервирование и размещение) являются одними из самых сложных для понимания. Часто возникают ситуации, когда при автоматическом заполнении Заказа поставщику программа подтягивает странное количество товара, которое не совпадает с реальным дефицитом. Рассмотрим на практическом примере, почему так происходит и как работает внутренняя логика программы.
Представим типичную ситуацию: в Заказе покупателя числится 20 единиц товара. Менеджер создает Заказ поставщику №1 на эти 20 единиц, чтобы обеспечить потребность. Однако позже выясняется, что условия поставки меняются, и менеджер решает «переиграть» ситуацию: он создает документ Резервирование товаров, чтобы снять размещение с этого заказа, а затем просто помечает Заказ поставщику №1 на удаление. После этого количество в Заказе покупателя уменьшается до 15 единиц, и создается новый Заказ поставщику №2. Ожидается, что система предложит заказать 15 штук, но в документ попадает 35.
Выясним причину такого поведения системы, проанализировав работу регистров накопления.
Основным «виновником» ситуации является регистр накопления Размещение заказов. Этот регистр отвечает за связь между потребностью (кто заказал) и источником ее обеспечения (у кого купим или где возьмем). Каждая запись в нем имеет два ключевых измерения:
Заказ покупателя).Заказ поставщику, Внутренний заказ или Заказ на производство).Когда мы создаем документ Резервирование товаров с видом операции «по заказам», мы фактически перебрасываем остатки из одного источника в другой. В нашем примере менеджер указал «Исходное размещение» — Заказ поставщику №1, а «Новое размещение» оставил пустым. В этот момент система делает движение по регистру:
Приход: Заказ покупателя | Заказ поставщику №1 | -20 шт.
Важный нюанс: в УПП пометка документа на удаление (в данном случае Заказа поставщику №1) не очищает автоматически движения в связанных документах, таких как Резервирование товаров. В итоге в регистре «зависает» отрицательный остаток обеспечения, ссылающийся на удаленный документ.
Проанализируем алгоритм, который срабатывает при нажатии кнопки «Заполнить -> По заказам покупателей» в Заказе поставщику. Программа не просто берет количество из табличной части заказа покупателя, она рассчитывает свободный остаток потребности по формуле:
[Количество к заказу] = [Потребность по Заказу покупателя] — [Текущее размещение в других заказах]
В нашем примере расчет выглядел следующим образом:
Заказу покупателя: 15 шт.Система видит отрицательное размещение как «сверхдефицит». С точки зрения программы, вы не только должны обеспечить текущие 15 штук, но и перекрыть ту «дыру» в 20 штук, которая образовалась из-за документа резервирования. Поэтому она предлагает заказать 35 единиц, чтобы вывести итоговый остаток размещения в плюс 15.
Для предотвращения подобных ошибок придерживайтесь следующих правил работы с заказами:
Если количество в Заказе покупателя изменилось, не нужно удалять связанные документы или вручную править размещения через резервирование. Правильный метод — использовать документ Корректировка заказа покупателя. Он корректно пересчитывает все движения по регистрам остатков и размещений.
Рассмотрим «правило обратной последовательности». Если вы создали цепочку: Заказ покупателя -> Заказ поставщику -> Резервирование, то отменять действия нужно строго в обратном порядке:
Резервирование.Заказ поставщику.Заказ покупателя.Если Заказ поставщику стал неактуален (например, это был технический заказ для проверки цен), его нельзя просто удалять. Используйте специализированный документ Закрытие заказов поставщику. Он «схлопывает» все невыполненные обязательства и чистит регистры размещений, не оставляя битых ссылок.
Чтобы понять, почему цифры в заказе «поползли», рекомендуем использовать следующие отчеты:
Заказу покупателя и Заказу-размещению. Если вы увидите в колонке «Размещено» отрицательное число или пустую/битую ссылку на документ — это и есть причина вашей ошибки.Размещение заказов, чтобы увидеть детальные движения документа-регистратора Резервирование товаров.Появление 35 деталей вместо 15 — это классическое следствие нарушения логической целостности данных в 1С:УПП. Отрицательных остатков в регистре Размещение заказов быть не должно. Всегда проверяйте, чтобы документы Резервирование товаров не ссылались на удаленные или помеченные на удаление заказы, и используйте штатные механизмы корректировки и закрытия заказов.