В процессе работы с конфигурацией 1С:Управление торговлей 11.5 (начиная с релизов 11.5.15 и выше) пользователи часто сталкиваются с ситуацией, когда при создании документа Задание на перевозку в список товаров попадает весь состав Заказа клиента, даже если часть позиций уже была отгружена ранее. Чтобы понять, какие именно позиции требуют внимания, часто используется анализ закупки и реализации по заказам клиентов, позволяющий увидеть частичные отгрузки в разрезе документов. Рассмотрим подробно, почему это происходит и как работает типовая логика системы.
Для начала проанализируем, каким образом система понимает, что именно нужно доставить. Основным «источником истины» для рабочего места Доставка является регистр сведений ТоварыКДоставке. Разберем по шагам, как информация попадает в этот регистр и почему возникают излишки:
Заказа клиента с установленным способом доставки (например, «До клиента»), система делает запись в регистр ТоварыКДоставке.ВсеТовары.Истина, система при формировании Задания на перевозку игнорирует фактические остатки к отгрузке и просто копирует весь табличный состав распоряжения.Для более глубокого понимания ситуации полезно изучить движения товаров с резервами, где данные собираются по регистрам «Товары на складах» и «Товары к отгрузке», что наглядно показывает нарастающие итоги по документам.
Разберем фрагмент запроса в общем модуле ДоставкаТоваров, который определяет, будет ли заказ доставляться полностью или по частям:
| ВЫБОР
| КОГДА Склады.ИспользоватьОрдернуюСхемуПриОтгрузке
| И Склады.ДатаНачалаОрдернойСхемыПриОтгрузке < ЗаданиеНаПеревозкуРаспоряжения.Ссылка.Дата
| И НЕ ТоварыПоРасходномуОрдеру.Распоряжение ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ВсеТовары,
Как мы видим из кода, если склад не ордерный, поле ВсеТовары всегда получает значение ИСТИНА. Это и есть причина того, что система «не видит» частичных реализаций, сделанных вне рамок конкретного задания на доставку.
Рассмотрим самый простой способ решения проблемы без изменения программного кода. Если мы переведем склад на ордерную схему при отгрузке, поведение системы изменится. В этом случае кладовщику будет гораздо удобнее использовать рабочее место кладовщика (отгрузка ордерного склада) с дополнительными фильтрами по способу доставки и зонам.
Расходный ордер на товары.Задание на перевозку.Если внедрение ордерного склада невозможно, необходимо разбить строку в Заказе клиента. Для отгруженной части устанавливается способ доставки «Самовывоз», а для оставшейся — «До клиента».
Чтобы менеджерам было проще контролировать этот процесс, можно внедрить колонку "Отгружено" в заказе клиента по строкам. Это позволит прямо в форме заказа видеть, какое количество товара уже уехало к клиенту, и оперативно корректировать способ доставки для остатка.
Если бизнес-процесс требует автоматического вычета отгруженных товаров на неордерном складе, придется выполнить доработку.
Основная задача программной коррекции — заставить систему проверять остатки по регистру накопления ТоварыКОтгрузке. Алгоритм в расширении:
После-обработчик для процедуры формирования списка товаров.ТоварыКОтгрузке.ВсеТовары в значение Ложь, чтобы система перешла к детальному учету строк.Подведем итоги нашего анализа ситуации в УТ 11.5:
Во-первых, типовая логика спроектирована с расчетом на то, что распоряжение доставляется либо целиком, либо в рамках ордерной схемы склада.
Во-вторых, флаг ВсеТовары в регистре ТоварыКДоставке — это главный индикатор, блокирующий детальный расчет остатков.
В-третьих, наиболее «чистым» решением является либо переход на ордерный склад, либо использование механизма разбиения строк заказа. Если же вы решите «пилить» систему, будьте готовы к глубокой работе с запросами в модуле ДоставкаТоваров.