Почему в требовании-накладной УПП 1.3 не видны проводки и откуда они берутся

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

При сопровождении и доработке конфигурации «1С:Управление производственным предприятием 1.3» разработчики нередко сталкиваются с непонятным поведением документа «Требование-накладная»: документ успешно проведен, в форме списка отображаются бухгалтерские проводки, однако при попытке отладить процедуру ОбработкаПроведения коллекция Движения.Хозрасчетный в конце модуля оказывается абсолютно пустой. Бывают и обратные ситуации: движения по партионным регистрам формируются корректно, а бухгалтерские проводки отсутствуют вовсе. Разберем архитектуру механизма партионного учета в УПП 1.3, выясним причину такого поведения и определим, как правильно локализовать запись проводок.

Архитектура партионного учета и запись движений мимо коллекции документа

В типовой конфигурации УПП 1.3 при традиционном партионном учете списание себестоимости вынесено в отдельный специализированный общий модуль УправлениеЗапасамиПартионныйУчет. В отличие от стандартной схемы платформы 1С, где движения формируются непосредственно в коллекции документа Движения.Хозрасчетный и автоматически записываются платформой по завершении транзакции проведения, партионный механизм работает через явные наборы записей.

Рассмотрим, как именно платформа и типовой код обрабатывают проводки:

  1. В процедуре ОбработкаПроведения документа формируются оперативные движения по регистрам накопления (например, учет затрат, складские остатки).
  2. Далее вызывается алгоритм списания партий из модуля УправлениеЗапасамиПартионныйУчет.
  3. Внутри процедур партионного списания создается отдельный, независимый от контекста документа объект набора записей: РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей().
  4. У этого набора записей устанавливается отбор по текущему регистратору, заполняются строки с проводками и вызывается метод Записать().

Поскольку запись в регистр бухгалтерии выполняется через сторонний экземпляр объекта РегистрБухгалтерииНаборЗаписей.Хозрасчетный, встроенная коллекция объекта документа Движения.Хозрасчетный остается неинициализированной в оперативной памяти текущего сеанса объекта. Если поставить точку останова в самом конце процедуры ОбработкаПроведения, вызов Движения.Хозрасчетный.Количество() закономерно возвращает ноль, хотя физически в базе данных проводки уже зафиксированы.

Посмотрим на пример кода, который иллюстрирует этот механизм в модулях партионного учета:


НаборЗаписейХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписейХозрасчетный.Отбор.Регистратор.Установить(СсылкаНаДокумент);
// Заполнение строк проводками по результатам списания партий...
НаборЗаписейХозрасчетный.Записать();

Как правильно отладить и перехватить формирование бухгалтерских проводок

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

  1. Открываем конфигуратор и находим в дереве метаданных регистр бухгалтерии Хозрасчетный.
  2. Переходим в модуль набора записей регистра.
  3. Находим экспортную процедуру-обработчик ПередЗаписью.
  4. Устанавливаем точку останова с условием, проверяющим тип или конкретную ссылку регистратора, чтобы отладчик не прерывался на других документах системы:

Если ЭтотОбъект.Отбор.Регистратор.Значение = ДокументСсылка Тогда
    // Здесь доступен весь стек вызовов и строки набора записей
    Сообщить("Точка останова перед записью набора");
КонецЕсли;

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

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

Частая проблема пользователей и программистов — ситуация, когда в документе «Требование-накладная» движения по регистрам партий сформированы (например, по регистрам «Партии товаров на складах»), суммы рассчитаны, но в регистре бухгалтерии Хозрасчетный проводок нет совсем.

Выясним причину такого поведения. В процедурах формирования движений заложен жесткий алгоритмический фильтр типовой конфигурации: проводка создается только при условии, что счет дебета не равен счету кредита. В коде проверяется условие вида СчетУчета <> СчетЗатрат.

Если бухгалтер в табличной части документа или на закладке «Материалы» в поле «Счет затрат» указывает тот же самый счет учета ТМЦ, на котором числится номенклатура (например, счет 10.01 списывается на счет 10.01 или 10.08), алгоритм считает такую операцию некорректной для списания на затраты и полностью пропускает генерацию бухгалтерской проводки. При этом движения по регистрам партий могут успешно сформироваться, что порождает опасную рассинхронизацию между бухгалтерскими остатками на счетах и аналитическими остатками в партионных регистрах.

Методология документа «Требование-накладная» рассчитана исключительно на передачу ценностей в производство или на общехозяйственные нужды. В качестве счета затрат должны использоваться расходные счета: 20, 23, 25, 26, 44, 91. Использование счетов учета МПЗ в качестве затратных в типовом функционале документа разработчиками не предусмотрено.

Корректные способы отражения операций

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

  1. Перемещение между складами или перевод на другой субсчет: если необходимо перенести материалы с одного склада на другой либо изменить субсчет учета (например, передать сырье в переработку или перевести полуфабрикат со счета 10.01 на 10.07), следует использовать документ «Перемещение товаров». В нем корректно обрабатываются внутрисчетные проводки по счету 10, а также движение аналитики по субконто «Склады».
  2. Передача в производство и выпуск: если материал входит в состав изготавливаемой продукции, его списание оформляется требованием-накладной на счет 20.01 (с указанием номенклатурной группы и статьи затрат), а оприходование готовой продукции или полуфабриката выполняется документом «Отчет производства за смену».
  3. Исправление ошибок заполнения: если материал действительно расходуется на хозяйственные нужды подразделения, необходимо скорректировать реквизит «Счет затрат», выбрав регламентированный счет учета расходов (например, 25 или 26) вместо счета МПЗ.

Дополнительные факторы отсутствия проводок при партионном учете

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

  1. Флаг «Списывать партии при проведении документов»: в настройках параметров учета может быть отключено оперативное списание партий по бухгалтерскому учету. В этом режиме документ «Требование-накладная» при обычном проведении формирует только количественные остатки, а суммовые проводки появляются лишь после запуска регламентной обработки «Проведение по партиям».
  2. Нарушение партионной последовательности: если на дату и время документа на складе отсутствует свободный остаток партии (например, поступление введено более поздним временем или списано больше, чем числилось по учету), партионный механизм не сможет рассчитать стоимость единицы списания. В результате проводка либо не сформируется вовсе, либо запишется с нулевой суммой. Для устранения проблемы требуется восстановить хронологию документов и перепровести партионный учет.
← На главную