В процессе внедрения и эксплуатации 1С:ERP Управление предприятием часто возникает задача оптимизации логистических потоков внутри компании. Одна из наиболее востребованных функций — автоматизация выбора склада-источника. Пользователи часто задаются вопросом: может ли система при формировании заказов по потребностям автоматически анализировать остатки на нескольких складах и выбирать тот, где товара в данный момент больше всего? Рассмотрим текущие возможности системы, её ограничения и способы решения данной задачи.
Для начала проанализируем, как работает стандартный механизм. В 1С:ERP процесс обеспечения строится на жестких связях, которые задаются в объекте Справочник.СхемыОбеспечения. В этой схеме для каждой номенклатурной позиции (или группы) определяется Способ обеспечения.
Разберем структуру Способа обеспечения:
Важный момент: типовая конфигурация не позволяет указать в одном способе обеспечения «группу складов» или условие «выбирать склад с максимальным остатком». Система ожидает конкретную ссылку на склад-источник. Это сделано в целях производительности: при расчете потребностей для десятков тысяч позиций динамический поиск «лучшего» склада по остаткам в реальном времени создал бы колоссальную нагрузку на сервер базы данных.
Одним из штатных способов решения задачи является использование функционала Распределительных центров (РЦ). Рассмотрим, как это работает:
В настройках способа обеспечения можно указать склад-источник, который сам обеспечивается по своей схеме. Таким образом выстраивается иерархия. Если у вас есть центральный склад и несколько региональных, система будет всегда пытаться забрать товар с РЦ. Однако это не решает задачу динамического выбора из нескольких равнозначных складов. Если на основном РЦ товара нет, система сформирует потребность именно на него, а не «пойдет искать» на соседний склад, если это не прописано в жесткой цепочке.
Проанализируем ситуацию, когда склады принадлежат разным организациям. В этом случае используется механизм Intercompany (передачи между организациями). В настройках передачи можно задать определенные приоритеты, но они также являются статичными. Система будет следовать заданному алгоритму (сначала Организация А, потом Организация Б), не опираясь на текущее количество «свободного остатка» в реальном времени.
Поскольку типового функционала для динамического подбора по максимальному остатку нет, наиболее эффективным путем является создание расширения конфигурации. Рассмотрим алгоритм, который можно реализовать для обработки ФормированиеЗаказовПоПотребностям.
Нам необходимо вмешаться в процесс генерации документов на этапе, когда таблица потребностей уже рассчитана, но заказы еще не созданы. Основная логика должна заключаться в следующем:
РегистрНакопления.СвободныеОстатки.ВНаличии - Зарезервировано.ЗаказНаПеремещение.Пример логики запроса для поиска подходящего склада:
ВЫБРАТЬ ПЕРВЫЕ 1
СвободныеОстаткиОстатки.Склад КАК СкладИсточник,
СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ЗарезервированоОстаток КАК ДоступныйОстаток
ИЗ
РегистрНакопления.СвободныеОстатки.Остатки(&Период, Номенклатура = &Номенклатура И Склад В (&СписокРазрешенныхСкладов)) КАК СвободныеОстаткиОстатки
УПОРЯДОЧИТЬ ПО
ДоступныйОстаток УБЫВ
Рассмотрим нюансы реализации: такой запрос внутри цикла обработки потребностей может работать медленно. Поэтому профессиональным подходом будет предварительная выгрузка всех остатков по списку номенклатуры во временную таблицу и последующее соединение в памяти.
Если полная автоматизация не требуется, выясним, как упростить жизнь пользователю штатными средствами. В последних релизах ERP 2.5 в помощнике формирования заказов по потребностям на этапе «Обеспечение» (шаг 4) можно увидеть текущую ситуацию.
Хотя система подставляет склад по умолчанию из схемы обеспечения, пользователь может вручную изменить склад в строке. При нажатии на выбор склада во многих формах доступен просмотр остатков по другим складам предприятия. Это позволяет оператору принять решение самостоятельно, основываясь на актуальных данных, не прибегая к программированию.
Подведем итоги нашего анализа:
СвободныеОстатки, чтобы избежать замедления работы помощника обеспечения.Таким образом, внедрение 1С:ERP требует четкого понимания того, где заканчиваются возможности типового функционала и начинается область кастомизации. Задача автоматического подбора склада по остаткам — это классический пример необходимости адаптации системы под специфические требования складской логистики предприятия.