Можно ли в 1С:ERP реализовать автоматический подбор склада-источника по остаткам при формировании заказов по потребностям?

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

В процессе внедрения и эксплуатации 1С:ERP Управление предприятием часто возникает задача оптимизации логистических потоков внутри компании. Одна из наиболее востребованных функций — автоматизация выбора склада-источника. Пользователи часто задаются вопросом: может ли система при формировании заказов по потребностям автоматически анализировать остатки на нескольких складах и выбирать тот, где товара в данный момент больше всего? Рассмотрим текущие возможности системы, её ограничения и способы решения данной задачи.

Анализ типового механизма обеспечения потребностей

Для начала проанализируем, как работает стандартный механизм. В 1С:ERP процесс обеспечения строится на жестких связях, которые задаются в объекте Справочник.СхемыОбеспечения. В этой схеме для каждой номенклатурной позиции (или группы) определяется Способ обеспечения.

Разберем структуру Способа обеспечения:

  1. Тип обеспечения: Перемещение, Покупка, Сборка или Производство.
  2. Источник обеспечения: В случае перемещения здесь указывается конкретный склад-отправитель.
  3. Срок исполнения: Время, необходимое для доставки товара.

Важный момент: типовая конфигурация не позволяет указать в одном способе обеспечения «группу складов» или условие «выбирать склад с максимальным остатком». Система ожидает конкретную ссылку на склад-источник. Это сделано в целях производительности: при расчете потребностей для десятков тысяч позиций динамический поиск «лучшего» склада по остаткам в реальном времени создал бы колоссальную нагрузку на сервер базы данных.

Использование механизма «Распределительный центр»

Одним из штатных способов решения задачи является использование функционала Распределительных центров (РЦ). Рассмотрим, как это работает:

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

Механизм Intercompany и приоритеты

Проанализируем ситуацию, когда склады принадлежат разным организациям. В этом случае используется механизм Intercompany (передачи между организациями). В настройках передачи можно задать определенные приоритеты, но они также являются статичными. Система будет следовать заданному алгоритму (сначала Организация А, потом Организация Б), не опираясь на текущее количество «свободного остатка» в реальном времени.

Решение задачи через расширение (для программистов)

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

Нам необходимо вмешаться в процесс генерации документов на этапе, когда таблица потребностей уже рассчитана, но заказы еще не созданы. Основная логика должна заключаться в следующем:

  1. Определить список складов, которые могут выступать источниками (например, через дополнительный реквизит или вхождение в определенную группу).
  2. Для каждой строки потребности выполнить запрос к регистру накопления РегистрНакопления.СвободныеОстатки.
  3. Выбрать склад с максимальным значением ресурса ВНаличии - Зарезервировано.
  4. Подменить склад-источник в формируемом документе ЗаказНаПеремещение.

Пример логики запроса для поиска подходящего склада:


ВЫБРАТЬ ПЕРВЫЕ 1
    СвободныеОстаткиОстатки.Склад КАК СкладИсточник,
    СвободныеОстаткиОстатки.ВНаличииОстаток - СвободныеОстаткиОстатки.ЗарезервированоОстаток КАК ДоступныйОстаток
ИЗ
    РегистрНакопления.СвободныеОстатки.Остатки(&Период, Номенклатура = &Номенклатура И Склад В (&СписокРазрешенныхСкладов)) КАК СвободныеОстаткиОстатки
УПОРЯДОЧИТЬ ПО
    ДоступныйОстаток УБЫВ

Рассмотрим нюансы реализации: такой запрос внутри цикла обработки потребностей может работать медленно. Поэтому профессиональным подходом будет предварительная выгрузка всех остатков по списку номенклатуры во временную таблицу и последующее соединение в памяти.

Альтернатива: Ручной подбор и видимость остатков

Если полная автоматизация не требуется, выясним, как упростить жизнь пользователю штатными средствами. В последних релизах ERP 2.5 в помощнике формирования заказов по потребностям на этапе «Обеспечение» (шаг 4) можно увидеть текущую ситуацию.

Хотя система подставляет склад по умолчанию из схемы обеспечения, пользователь может вручную изменить склад в строке. При нажатии на выбор склада во многих формах доступен просмотр остатков по другим складам предприятия. Это позволяет оператору принять решение самостоятельно, основываясь на актуальных данных, не прибегая к программированию.

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

Подведем итоги нашего анализа:

Таким образом, внедрение 1С:ERP требует четкого понимания того, где заканчиваются возможности типового функционала и начинается область кастомизации. Задача автоматического подбора склада по остаткам — это классический пример необходимости адаптации системы под специфические требования складской логистики предприятия.

← На главную