В процессе работы с производственными процессами в 1С:ERP Управление предприятием 2.4 часто возникает потребность в гибкой настройке состава материалов. Многие пользователи задаются вопросом: можно ли автоматизировать выбор характеристики материала таким образом, чтобы система проверяла наличие остатков на складе и, в случае отсутствия нужной позиции, автоматически выбирала альтернативную (например, по ширине или иному параметру)? Давайте разберем, как устроены эти механизмы и какие инструменты у нас есть для решения такой задачи.
Прежде всего, важно прояснить, что в типовой конфигурации 1С:ERP существует штатный механизм «Автовыбор» в ресурсной спецификации. Его часто путают с ручным выбором, однако он позволяет настраивать логику подстановки материалов или их характеристик на вкладке «Материалы и работы». Рассмотрим основные способы, которые предлагает платформа:
Важно понимать архитектурную логику системы. Ресурсная спецификация в 1С:ERP является «чертежом» производства. Она должна быть детерминированной, то есть давать предсказуемый результат при расчете плана производства. Если бы система в момент формирования спецификации «на лету» опрашивала регистры остатков, это привело бы к следующим проблемам:
Поэтому проверка остатков и замена материалов — это задачи, которые в 1С:ERP вынесены в подсистемы обеспечения потребностей и планирования.
Если ваша цель — заменить дефицитный материал на доступный, самым правильным с точки зрения методологии 1С будет использование подсистемы «Аналоги материалов». Рассмотрим, как это работает:
1С:ERP предложит использовать аналог, если он настроен в системе.Этот способ позволяет избежать написания кода и полностью опирается на штатную логику обеспечения потребностей.
Если бизнес-процесс требует специфической логики (например, выбор по ширине в строгом порядке, если основного варианта нет), нам потребуется использовать расширение конфигурации. Рассмотрим, из каких этапов будет состоять наша работа:
Для разработки нам необходимо воздействовать на механизм подбора, который вызывается при заполнении спецификации. Для этого используются точки внедрения в код расширения:
Шаг 1. Создаем расширение конфигурации, в которое добавляем обработчик, вызываемый в момент формирования строк спецификации.
Шаг 2. В коде расширения мы должны реализовать функцию поиска остатков. Для этого используем запрос к таблице ТоварыНаСкладахОстатки. Пример логики запроса:
// Пример упрощенного алгоритма выбора
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Остатки.Характеристика КАК Характеристика
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, Номенклатура = &Номенклатура) КАК Остатки
|ГДЕ
| Остатки.ВНаличииОстаток > 0
|УПОРЯДОЧИТЬ ПО
| Остатки.Характеристика.Ширина ВОЗР";
// Далее в коде мы перебираем результат запроса и выбираем подходящую характеристику.
Шаг 3. Интеграция алгоритма. Нам нужно подменить стандартный вызов подбора характеристик своим вызовом, который будет учитывать результат запроса, описанного выше. Это позволит динамически подставлять значение, которое действительно есть на складе.
Анализируя задачу, можно сделать вывод: разработка собственного алгоритма — это мощный, но трудоемкий инструмент. Мы рекомендуем:
1С:ERP.1С обязательно учитывайте производительность запросов к регистрам остатков, чтобы не замедлить проведение документов производства.Таким образом, мы выяснили, что в типовом функционале 1С:ERP прямой настройки «выбрать по остаткам» нет, так как это нарушает логику планирования. Однако, комбинируя механизмы аналогов и возможности расширения конфигурации, вы сможете реализовать любую сложную бизнес-задачу по подбору материалов.