Почему не формируются проводки в документе «Требование-накладная» в 1С:УПП и как правильно доработать их заполнение?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Причины отсутствия проводок при проведении документа

Выясним причину, почему документ не формирует проводки, несмотря на активность флагов «БУ» и «НУ» на форме и в движениях. В УПП с традиционным партионным учетом за это отвечают следующие ключевые факторы:

  1. Режим списания партий в настройках параметров учета. Проверим, включена ли опция «Списывать партии при проведении документов». Если данный флаг снят, система работает в режиме отложенного проведения: при проведении документа фиксируются только количественные движения и регистрируется необходимость проведения по партиям. Сами суммовые проводки (Дт 20 (26) - Кт 10) в таком случае формируются исключительно регламентной обработкой Проведение по партиям.
  2. Отсутствие партионных остатков по данным регламентированного учета. Партионный механизм списывает себестоимость только при наличии положительного остатка в регистре накопления ПартииТоваровНаСкладахБухгалтерскийУчет на момент документа. Если товар оприходован по другой организации, поступил позже по времени или числится только в управленческом учете, движения по счетам БУ и НУ сформированы не будут.
  3. Порядок формирования учетных цен в учетной политике. Если на закладке «Запасы» выбран порядок списания «По плановым ценам», убедимся, что в регистре сведений ЦеныНоменклатуры на дату документа зафиксирована плановая цена номенклатуры по типу цен, указанному в настройках параметров учета. При отсутствии плановой цены сумма проводки будет нулевой либо движение не запишется вовсе.
  4. Нарушение границы последовательности партионного учета. При проведении документов «задним числом» (ранее актуальной точки границы последовательности) регламентированные проводки откладываются до момента восстановления последовательности партий.

Где в конфигурации формируются проводки по партионному учету

Проанализируем структуру программного кода УПП, отвечающую за отражение списания материалов в регламентированном учете. Основные алгоритмы вынесены в специализированные общие модули:

  1. Модуль УправлениеЗапасамиПартионныйУчетФормированиеПроводокРегл содержит процедуры генерации проводок регламентированного учета. В частности, процедура ВыполнитьСвязанныеДвиженияРегл() управляет созданием движений по счетам учета затрат и запасов, а процедура СписаниеНаСчет() формирует корреспонденции списания материальных ценностей на производственные счета.
  2. Общий модуль УправлениеЗапасамиПартионныйУчет выполняет непосредственный расчет стоимости списания по алгоритмам ФИФО или средней стоимости.

Архитектурные риски добавления субконто «Заказ покупателя» на счета учета

Нередко перед программистом ставится задача заполнять аналитику заказа покупателя в проводках по дебету счета 20 («Основное производство») и кредиту счета 10 («Материалы»). Разберем, к каким критическим последствиям в архитектуре УПП приводит такое вмешательство:

  1. Лимит количества субконто на счете 10. В плане счетов Хозрасчетный максимальное число субконто по умолчанию ограничено тремя. На счете 10 уже задействованы аналитики: «Номенклатура», «Склады» и «Партии». Добавление четвертого субконто «Заказ» потребует изменения структуры метаданных конфигурации.
  2. Срыв механизмов закрытия месяца. Регламентный документ Расчет себестоимости закрывает производственные счета (дебет 40, 43, 90 — кредит 20) на основании регистров накопления (Незавершенное производство (бухгалтерский учет) и Затраты (бухгалтерский учет)), а не на основании регистра бухгалтерии. Типовой алгоритм расчета себестоимости не знает о кастомном субконто и не заполнит его по кредиту счета 20. В результате в оборотно-сальдовой ведомости возникнет незакрывающееся сальдо: дебетовый остаток с заполненным заказом и свернутый кредитовый остаток с пустым субконто.
  3. Корректировка стоимости списания (КСС). Регламентные расчеты средневзвешенной стоимости или списания по ФИФО при закрытии периода доначисляют или сторнируют суммовые разницы отдельными проводками, где добавленное субконто также останется пустым без глубокого переписывания всего модуля расчета себестоимости.
  4. Типовая альтернатива: В УПП позаказный учет в производстве изначально реализован через регистры накопления. В документе ТребованиеНакладная в табличной части предусмотрен реквизит «Заказ затрат» («Заказ»), который фиксирует аналитику в регистрах НЗП. Вся позаказная производственная себестоимость анализируется типовыми отчетами («Ведомость по производственным затратам», «Анализ распределения затрат»), не требуя ломки плана счетов.

Точки внедрения для программной модификации проводок

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

Не рекомендуется: модифицировать код напрямую в общем модуле УправлениеЗапасамиПартионныйУчетФормированиеПроводокРегл. При перепроведении документов обработкой Проведение по партиям или при обновлении типовых модулей конфигурации такие правки часто затираются или приводят к расхождениям между партиями и проводками.

Рекомендуемый подход: перехватывать запись движений в модуле набора записей регистра бухгалтерии Хозрасчетный в обработчике события ПередЗаписью. Посмотрим на пример реализации алгоритма:


Процедура ПередЗаписью(Отказ, Замещение)
    
    // Проверяем тип регистратора
    Если ЭтотОбъект.Отбор.Регистратор.Использование 
        И ТипЗнч(ЭтотОбъект.Отбор.Регистратор.Значение) = Тип("ДокументСсылка.ТребованиеНакладная") Тогда
        
        ДокументСсылка = ЭтотОбъект.Отбор.Регистратор.Значение;
        
        Для Каждого Проводка Из ЭтотОбъект Цикл
            
            // Заполнение субконто дебета, если у счета определен вид субконто "Заказы"
            Если Проводка.СчетДт.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ЗаказПокупателя) <> Неопределено Тогда
                // Заполняем значение заказа из соответствующей строки документа или шапки
                // Например, Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ЗаказПокупателя] = НужныйЗаказ;
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЕсли;

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

Разберем по шагам логику этого решения: код не затрагивает громоздкие модули расчета партий и отрабатывает как при оперативном проведении документа пользователем, так и при фоновом перепроведении через регламентную обработку Проведение по партиям. Однако помним: при внедрении этой схемы потребуется аналогично дорабатывать проводки документов Расчет себестоимости и Корректировка НЗП, чтобы исключить зависание остатков на счетах учета.

← На главную