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