Рассмотрим распространенную и сложную задачу в конфигурации «1С:Управление производственным предприятием» (УПП 1.3), возникающую при переработке давальческого сырья в условиях многопередельного производства. Разберем ситуацию, когда готовая продукция заказчика изготавливается не напрямую из исходного сырья, а проходит через промежуточный этап производства собственных полуфабрикатов.
Проанализируем типовую цепочку документов, выясним причину зависания давальческих материалов на счете 003.02 и подробно разберем методически правильные способы решения этой проблемы.
Стандартный давальческий цикл в 1С:УПП обычно включает в себя следующие этапы:
Поступление товаров и услуг с видом операции «В переработку». Сырье приходуется на забалансовый счет 003.01 («Материалы на складе»).Требование-накладная давальческие материалы передаются в производственные цеха, перемещаясь с кредита счета 003.01 в дебет счета 003.02 («Материалы, переданные в производство»).Отчет производства за смену (ОПЗС) фиксируется выпуск промежуточного полуфабриката (счет 21). На вкладке «Материалы» списываются давальческие материалы с кредита 003.02 в затраты выпуска полуфабриката.Отчет производства за смену отражается выпуск готовой продукции (счет 20.01.1 или 43), где в качестве материала потребляется ранее выпущенный собственный полуфабрикат (счет 21).Реализация услуг по переработке. Он выполняет две ключевые функции: признает выручку за оказанные услуги по переработке и одновременно списывает давальческое сырье с кредита счета 003.02 в подотчете заказчика.Сложность проявляется на последнем шаге: когда мы нажимаем кнопку «Заполнить по спецификации» на закладке «Материалы заказчика» в документе Реализация услуг по переработке, программа заполняет только те материалы, которые вошли в готовую продукцию напрямую на последнем переделе. Сырье, израсходованное на первом переделе для выпуска полуфабрикатов, в табличную часть не попадает и остается «висеть» на забалансовом счете 003.02.
Проанализируем типовой код и алгоритмы типовой конфигурации. Механизм заполнения табличной части «Материалы заказчика» анализирует только первый уровень вложенности спецификации готовой продукции.
Если в спецификации верхнего уровня в качестве компонента указан полуфабрикат, система воспринимает его как готовую учетную единицу (номенклатуру со счетом учета 21), а не как контейнер для исходных давальческих материалов. В результате типовой алгоритм просто не видит дерево спецификаций глубже одного уровня. Соответственно, в печатные формы (в частности, в отчет об израсходованном давальческом сырье и форму М-15) эти материалы также не попадают, что нарушает отчетность перед давальцем.
Иногда пользователи пытаются обойти проблему, создавая отдельный документ Реализация услуг по переработке без указания готовой продукции (или с фиктивными строками), чтобы вручную списать остатки со счета 003.02. Разберем, к каким серьезным последствиям это приводит:
Расчет себестоимости выпуска при закрытии месяца распределяет прямые затраты strictly по аналитическим разрезам (Подразделение, Номенклатурная группа, Заказ покупателя). Документы без явного сопоставления выпуска и сырья приводят к ошибкам расчета фактической себестоимости переработки и незакрытию счета 20.01.Методически правильный и безопасный путь — дополнить документ Реализация услуг по переработке внешней обработкой табличной части или модификацией модуля, которая рекурсивно разузловывает дерево спецификаций до базовых сырьевых компонентов.
Разберем по шагам алгоритм, который должен выполнять программный код:
СпецификацииНоменклатуры).003.02 по данному давальцу).Посмотрим на пример рекурсивной функции на встроенном языке 1С, выполняющей обход структуры спецификации:
Процедура РазузлоdistитьСпецификацию(Номенклатура, Спецификация, Количество, ТаблицаРезультат)
Если Не ЗначениеЗаполнено(Спецификация) Тогда
Спецификация = Номенклатура.ОсновнаяСпецификацияНоменклатуры;
КонецЕсли;
Если Не ЗначениеЗаполнено(Спецификация) Тогда
// Если у позиции нет спецификации, считаем ее базовым материалом
НоваяСтрока = ТаблицаРезультат.Добавить();
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Количество = Количество;
Возврат;
КонецЕсли;
// Обходим исходные комплектующие спецификации
Для Каждого СтрокаСостава Из Спецификация.ИсходныеКомплектующие Цикл
КоличествоНаВыпуск = (Количество / Спецификация.Количество) * СтрокаСостава.Количество;
Если СтрокаСостава.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Полуфабрикат Тогда
// Рекурсивный вызов для следующего уровня передела
РазузлоdistитьСпецификацию(СтрокаСостава.Номенклатура, СтрокаСостава.Спецификация, КоличествоНаВыпуск, ТаблицаРезультат);
Иначе
// Фиксируем исходный материал
НоваяСтрока = ТаблицаРезультат.Добавить();
НоваяСтрока.Номенклатура = СтрокаСостава.Номенклатура;
НоваяСтрока.Количество = КоличествоНаВыпуск;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Использование внешней обработки заполнения табличной части позволяет внедрить этот функционал без внесения изменений в типовую конфигурацию, сохраняя систему на полной поддержке.
Если специфика вашего производства не требует длительного складского хранения полуфабрикатов, а переделы осуществляются непрерывно в рамках одной рабочей смены, проанализируем организационное решение задачи:
21 через промежуточные документы Отчет производства за смену.003.02) и трудозатраты всех технологических операций.20.01.1. При такой структуре штатная кнопка «Заполнить по спецификации» в документе Реализация услуг по переработке сразу и безошибочно подтянет весь перечень давальческих компонентов.В условиях, когда на производстве присутствуют регулярные отклонения от нормативных спецификаций (брак, перерасход, корректировка рецептур), разузлование по нормам может привести к расхождению с фактическим списанием в цехах.
В этом случае на закладке «Материалы заказчика» целесообразно использовать механизм заполнения по фактическим остаткам материалов в незавершенном производстве. Система сопоставляет дебетовые обороты счета 003.02 в разрезе давальца и конкретного заказа, заполняя документ тем количеством сырья, которое было фактически передано в цех и списано на выпуск через Отчет производства за смену. Это гарантирует, что сальдо по счету 003.02 после проведения реализации закроется строго в ноль.