Как перенести резервы товаров между заказами клиентов в 1С:Управление торговлей 11.5

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

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

Анализ штатной логики распределения запасов

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

  1. Приоритет заказа: Заказы с более высоким приоритетом (например, «Критический») всегда обслуживаются первыми, даже если они созданы позже.
  2. Желаемая дата отгрузки: Если приоритеты равны, система смотрит на дату отгрузки. Как показывает практика и эксперименты пользователей, пустая дата отгрузки считается «самой ранней», а заполненные даты сравниваются между собой, поэтому удобно использовать инструменты для переноса даты отгрузки заказов.
  3. Дата документа: Если и приоритеты, и даты отгрузки совпадают, в расчет идет хронология создания документов.

Проанализируем ситуацию: если у вас есть «Заказ 1» от первого числа и «Заказ 2» от пятого числа, при поступлении товара система автоматически отдаст резерв первому заказу. Чтобы «отдать» товар второму заказу, нам нужно либо изменить параметры очереди, либо вмешаться в работу регистров.

Способ 1. Управление очередью через приоритеты

Это самый «чистый» и штатный метод, не требующий программирования. Если пришел срочный клиент, мы можем временно повысить приоритет его заказа.

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

  1. Откроем срочный ЗаказКлиента.
  2. Установим в поле Приоритет значение выше, чем у остальных заказов (например, «Высокий»).
  3. В табличной части «Товары» для нужной позиции установим вариант обеспечения Резервировать по мере поступления (для удобства можно вывести остатки товаров в документах).
  4. Проведем документ.

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

Способ 2. Использование рабочего места «Управление очередью заказов»

В 1С:УТ 11 существует специализированный инструмент для визуального управления распределением. Рассмотрим, как им пользоваться:

Перейдем в раздел Склад и доставка — Управление очередью заказов. В этом рабочем месте мы увидим список всех заказов, требующих обеспечения. Мы можем вручную перетащить нужный заказ в самый верх списка. После этого система пересчитает распределение запасов, и резерв «перетечет» на выбранный документ. Это гораздо удобнее, чем менять даты или приоритеты в каждом отдельном документе, так как мы видим общую картину дефицита и остатков.

Способ 3. Корректировка назначения товаров (для обособленного учета)

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

Проанализируем шаги по работе с этим документом:

  1. Создаем новый документ Корректировка назначения товаров с видом операции «Снятие резерва и передача другому заказу» (или аналогичным).
  2. В поле Исходное назначение указываем заказ, с которого мы хотим забрать резерв.
  3. В поле Новое назначение указываем заказ, на который нужно перекинуть товар.
  4. Документ автоматически скорректирует записи в регистрах, и товар станет доступен для отгрузки по новому заказу.

Важное преимущество этого способа — наличие «следов» в системе. Мы всегда можем увидеть, кто и когда принял решение о перебросе товара.

Способ 4. Техническое решение через создание документа-обработки

Если типовые средства кажутся клиенту слишком сложными или долгими, программист может реализовать специализированный инструмент. Основная идея заключается в прямой модификации регистра сведений РаспределениеЗапасов. Однако, как отмечают специалисты, прямая правка независимого регистра — рискованный путь, так как система может перезатереть ваши данные при следующем запуске фонового распределения.

Правильный подход при разработке расширения или обработки:

Необходимо создать документ (например, ПереносРезерва), который будет фиксировать волевое решение менеджера. Логика работы кода при проведении такого документа может выглядеть следующим образом:


Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    // Получаем записи регистра РаспределениеЗапасов по старому заказу
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   РаспределениеЗапасов.Номенклатура,
        |   РаспределениеЗапасов.Склад,
        |   РаспределениеЗапасов.ЗаказНаОтгрузку,
        |   РаспределениеЗапасов.Резерв
        |ИЗ
        |   РегистрСведений.РаспределениеЗапасов КАК РаспределениеЗапасов
        |ГДЕ
        |   РаспределениеЗапасов.ЗаказНаОтгрузку = &СтарыйЗаказ";
    
    Запрос.УстановитьПараметр("СтарыйЗаказ", Объект.ЗаказИсточник);
    Результат = Запрос.Выполнить();
    
    // В реальной реализации здесь должен быть механизм записи 
    // в регистр с подменой ЗаказНаОтгрузку на Объект.ЗаказПриемник
    // ВНИМАНИЕ: Нужно учитывать измерения регистра (Номенклатура, Склад, Характеристика)
    
КонецПроцедуры

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

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

Мы рассмотрели несколько вариантов решения проблемы переброса резервов. Подведем итоги:

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

← На главную