Как заполнить давальческие материалы при выпуске полуфабрикатов в документе реализации услуг по переработке в 1С:УПП?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Промышленность, строительство и АПК
← На главную

Рассмотрим распространенную и сложную задачу в конфигурации «1С:Управление производственным предприятием» (УПП 1.3), возникающую при переработке давальческого сырья в условиях многопередельного производства. Разберем ситуацию, когда готовая продукция заказчика изготавливается не напрямую из исходного сырья, а проходит через промежуточный этап производства собственных полуфабрикатов.

Проанализируем типовую цепочку документов, выясним причину зависания давальческих материалов на счете 003.02 и подробно разберем методически правильные способы решения этой проблемы.

Суть производственной цепочки и возникновение проблемы

Стандартный давальческий цикл в 1С:УПП обычно включает в себя следующие этапы:

  1. Поступление сырья: Оформляется документом Поступление товаров и услуг с видом операции «В переработку». Сырье приходуется на забалансовый счет 003.01 («Материалы на складе»).
  2. Передача в производство: Документом Требование-накладная давальческие материалы передаются в производственные цеха, перемещаясь с кредита счета 003.01 в дебет счета 003.02 («Материалы, переданные в производство»).
  3. Выпуск полуфабрикатов: Документом Отчет производства за смену (ОПЗС) фиксируется выпуск промежуточного полуфабриката (счет 21). На вкладке «Материалы» списываются давальческие материалы с кредита 003.02 в затраты выпуска полуфабриката.
  4. Выпуск готовой продукции: Следующим документом Отчет производства за смену отражается выпуск готовой продукции (счет 20.01.1 или 43), где в качестве материала потребляется ранее выпущенный собственный полуфабрикат (счет 21).
  5. Отгрузка и списание давальческого сырья: Формируется итоговый документ Реализация услуг по переработке. Он выполняет две ключевые функции: признает выручку за оказанные услуги по переработке и одновременно списывает давальческое сырье с кредита счета 003.02 в подотчете заказчика.

Сложность проявляется на последнем шаге: когда мы нажимаем кнопку «Заполнить по спецификации» на закладке «Материалы заказчика» в документе Реализация услуг по переработке, программа заполняет только те материалы, которые вошли в готовую продукцию напрямую на последнем переделе. Сырье, израсходованное на первом переделе для выпуска полуфабрикатов, в табличную часть не попадает и остается «висеть» на забалансовом счете 003.02.

Выясним архитектурную причину поведения 1С:УПП

Проанализируем типовой код и алгоритмы типовой конфигурации. Механизм заполнения табличной части «Материалы заказчика» анализирует только первый уровень вложенности спецификации готовой продукции.

Если в спецификации верхнего уровня в качестве компонента указан полуфабрикат, система воспринимает его как готовую учетную единицу (номенклатуру со счетом учета 21), а не как контейнер для исходных давальческих материалов. В результате типовой алгоритм просто не видит дерево спецификаций глубже одного уровня. Соответственно, в печатные формы (в частности, в отчет об израсходованном давальческом сырье и форму М-15) эти материалы также не попадают, что нарушает отчетность перед давальцем.

Почему опасны суррогатные обходные пути (создание пустых реализаций)

Иногда пользователи пытаются обойти проблему, создавая отдельный документ Реализация услуг по переработке без указания готовой продукции (или с фиктивными строками), чтобы вручную списать остатки со счета 003.02. Разберем, к каким серьезным последствиям это приводит:

  1. Зависание остатков в незавершенном производстве (НЗП): Регламентный документ Расчет себестоимости выпуска при закрытии месяца распределяет прямые затраты strictly по аналитическим разрезам (Подразделение, Номенклатурная группа, Заказ покупателя). Документы без явного сопоставления выпуска и сырья приводят к ошибкам расчета фактической себестоимости переработки и незакрытию счета 20.01.
  2. Рассинхронизация специализированных регистров: Учет давальческого сырья в УПП ведется не только на забалансовых счетах бухгалтерского учета, но и в регистрах накопления (включая учет партий и затрат). Некорректно заполненные документы порождают отрицательные остатки по регистрам, которые крайне сложно выправить в последующих периодах.

Решение 1: Разработка алгоритма разузлования спецификаций (Рекомендуемый метод)

Методически правильный и безопасный путь — дополнить документ Реализация услуг по переработке внешней обработкой табличной части или модификацией модуля, которая рекурсивно разузловывает дерево спецификаций до базовых сырьевых компонентов.

Разберем по шагам алгоритм, который должен выполнять программный код:

  1. Считать перечень готовой продукции и ее количество из табличной части «Продукция (услуги по переработке)».
  2. Для каждой позиции продукции получить используемую спецификацию (справочник СпецификацииНоменклатуры).
  3. Рекурсивно обойти дерево состава спецификации. Если строкой состава является полуфабрикат, необходимо обратиться к его основной спецификации и продолжить разузлование.
  4. На нижнем уровне выделить только те номенклатурные позиции, которые имеют признак давальческого сырья (например, принадлежат к определенной номенклатурной группе или имеют остаток на счете 003.02 по данному давальцу).
  5. Рассчитать суммарное нормативное количество сырья и заполнить им закладку «Материалы заказчика».

Посмотрим на пример рекурсивной функции на встроенном языке 1С, выполняющей обход структуры спецификации:


Процедура РазузлоdistитьСпецификацию(Номенклатура, Спецификация, Количество, ТаблицаРезультат)
    
    Если Не ЗначениеЗаполнено(Спецификация) Тогда
        Спецификация = Номенклатура.ОсновнаяСпецификацияНоменклатуры;
    КонецЕсли;
    
    Если Не ЗначениеЗаполнено(Спецификация) Тогда
        // Если у позиции нет спецификации, считаем ее базовым материалом
        НоваяСтрока = ТаблицаРезультат.Добавить();
        НоваяСтрока.Номенклатура = Номенклатура;
        НоваяСтрока.Количество   = Количество;
        Возврат;
    КонецЕсли;
    
    // Обходим исходные комплектующие спецификации
    Для Каждого СтрокаСостава Из Спецификация.ИсходныеКомплектующие Цикл
        
        КоличествоНаВыпуск = (Количество / Спецификация.Количество) * СтрокаСостава.Количество;
        
        Если СтрокаСостава.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Полуфабрикат Тогда
            // Рекурсивный вызов для следующего уровня передела
            РазузлоdistитьСпецификацию(СтрокаСостава.Номенклатура, СтрокаСостава.Спецификация, КоличествоНаВыпуск, ТаблицаРезультат);
        Иначе
            // Фиксируем исходный материал
            НоваяСтрока = ТаблицаРезультат.Добавить();
            НоваяСтрока.Номенклатура = СтрокаСостава.Номенклатура;
            НоваяСтрока.Количество   = КоличествоНаВыпуск;
        КонецЕсли;
        
    КонецЦикла;

КонецПроцедуры

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

Решение 2: Переход на безполуфабрикатный учет в рамках единого цикла

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

  1. Отказаться от промежуточного выпуска полуфабрикатов на счет 21 через промежуточные документы Отчет производства за смену.
  2. Создать сквозную одноуровневую спецификацию на готовую продукцию, где сразу перечисляются все исходные давальческие материалы (списанные с 003.02) и трудозатраты всех технологических операций.
  3. Собирать все затраты непосредственно на счете 20.01.1. При такой структуре штатная кнопка «Заполнить по спецификации» в документе Реализация услуг по переработке сразу и безошибочно подтянет весь перечень давальческих компонентов.

Решение 3: Заполнение по фактическим остаткам НЗП

В условиях, когда на производстве присутствуют регулярные отклонения от нормативных спецификаций (брак, перерасход, корректировка рецептур), разузлование по нормам может привести к расхождению с фактическим списанием в цехах.

В этом случае на закладке «Материалы заказчика» целесообразно использовать механизм заполнения по фактическим остаткам материалов в незавершенном производстве. Система сопоставляет дебетовые обороты счета 003.02 в разрезе давальца и конкретного заказа, заполняя документ тем количеством сырья, которое было фактически передано в цех и списано на выпуск через Отчет производства за смену. Это гарантирует, что сальдо по счету 003.02 после проведения реализации закроется строго в ноль.

← На главную