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