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

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

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

Анализ механизма планирования доставки

Для начала проанализируем, каким образом система понимает, что именно нужно доставить. Основным «источником истины» для рабочего места Доставка является регистр сведений ТоварыКДоставке. Разберем по шагам, как информация попадает в этот регистр и почему возникают излишки:

  1. При проведении Заказа клиента с установленным способом доставки (например, «До клиента»), система делает запись в регистр ТоварыКДоставке.
  2. В этом регистре существует критически важный реквизит — ВсеТовары.
  3. Если для этого реквизита установлено значение Истина, система при формировании Задания на перевозку игнорирует фактические остатки к отгрузке и просто копирует весь табличный состав распоряжения.

Для более глубокого понимания ситуации полезно изучить движения товаров с резервами, где данные собираются по регистрам «Товары на складах» и «Товары к отгрузке», что наглядно показывает нарастающие итоги по документам.

Исследование программного кода и логики флага ВсеТовары

Разберем фрагмент запроса в общем модуле ДоставкаТоваров, который определяет, будет ли заказ доставляться полностью или по частям:


|    ВЫБОР
|        КОГДА Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
|                И Склады.ДатаНачалаОрдернойСхемыПриОтгрузке < ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Дата
|                И НЕ ТоварыПоРасходномуОрдеру.Распоряжение ЕСТЬ NULL
|            ТОГДА ЛОЖЬ
|        ИНАЧЕ ИСТИНА 
|    КОНЕЦ КАК ВсеТовары,

Как мы видим из кода, если склад не ордерный, поле ВсеТовары всегда получает значение ИСТИНА. Это и есть причина того, что система «не видит» частичных реализаций, сделанных вне рамок конкретного задания на доставку.

Вариант решения №1: Использование ордерной схемы

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

  1. Распоряжением на доставку может выступать Расходный ордер на товары.
  2. Когда менеджер формирует ордер только на часть товаров, именно они и попадут в Задание на перевозку.

Вариант решения №2: Организационное разделение заказов

Если внедрение ордерного склада невозможно, необходимо разбить строку в Заказе клиента. Для отгруженной части устанавливается способ доставки «Самовывоз», а для оставшейся — «До клиента».

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

Вариант решения №3: Программная доработка (для разработчиков)

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

Основная задача программной коррекции — заставить систему проверять остатки по регистру накопления ТоварыКОтгрузке. Алгоритм в расширении:

  1. Создать После-обработчик для процедуры формирования списка товаров.
  2. В запросе добавить левое соединение с остатками регистра ТоварыКОтгрузке.
  3. Установить флаг ВсеТовары в значение Ложь, чтобы система перешла к детальному учету строк.

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

Подведем итоги нашего анализа ситуации в УТ 11.5:

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

Во-вторых, флаг ВсеТовары в регистре ТоварыКДоставке — это главный индикатор, блокирующий детальный расчет остатков.

В-третьих, наиболее «чистым» решением является либо переход на ордерный склад, либо использование механизма разбиения строк заказа. Если же вы решите «пилить» систему, будьте готовы к глубокой работе с запросами в модуле ДоставкаТоваров.

← На главную