Где найти описание проводок документа Требование-накладная в 1С:УПП при использовании РАУЗ и как программно заполнить субконто

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

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

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

Почему в модуле документа нет текста проводок?

В конфигурации УПП при использовании РАУЗ документ Требование-накладная не формирует проводки напрямую в процедуре ОбработкаПроведения через перебор строк табличной части. Если мы заглянем в модуль объекта, то увидим вызов процедуры ДвиженияПоРегистрам, где код выглядит примерно так:


Если СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете Тогда
    Движения.Хозрасчетный.Записать();
КонецЕсли;

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

Где искать алгоритм формирования проводок в режиме РАУЗ

Основная точка входа для формирования движений в РАУЗ — это подписки на события. Нам необходимо обратить внимание на подписку ПриПроведенииРасширеннаяАналитикаЗапасовИзменениеСостояния. Именно она перехватывает проведение документа и запускает механизм отражения в учете затрат.

Эта подписка вызывает процедуру в общем модуле УправлениеЗапасамиРасширеннаяАналитика. Основной рабочий метод здесь — РасширеннаяАналитикаЗапасовИзменениеСостояния. Выясним по шагам, что происходит внутри:

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

Проблема программного заполнения субконто

Рассмотрим ситуацию, когда нам необходимо добавить новое субконто (например, Основные средства) на счет 23.03 и заполнять его программно при проведении документа Требование-накладная. Многие разработчики пытаются сделать это привычным способом в ОбработкеПроведения:


Для каждого стр Из ТаблицаПоТоварам Цикл
    Если стр.СчетЗатрат = ПланыСчетов.Хозрасчетный.НайтиПоКоду("23.03") Тогда        
        Стр.Субконто3 = стр.ОС; // Пытаемся заполнить субконто напрямую
    КонецЕсли;        
КонецЦикла;

Проанализируем, почему это не работает. В режиме РАУЗ алгоритм формирования проводок игнорирует напрямую значения из табличной части в момент записи регистра, если они не сопоставлены в механизме «трансляции» аналитик. Система использует Ключи аналитики учета затрат.

Чтобы ваше новое субконто попало в проводку, оно должно присутствовать в измерениях регистра Учет затрат (регламентированный учет). В типовой УПП набор аналитик затрат жестко ограничен (Номенклатура, Склад, Подразделение, Статья затрат и т.д.). Субконто Основные средства не входит в стандартный ключ аналитики для производственных счетов.

Как правильно модифицировать проводки в РАУЗ

Если нам все же требуется заполнять специфическое субконто, у нас есть два пути:

  1. Использование дополнительных свойств: В процедуре подписки на событие данные передаются через структуру СтруктураИсточника. Мы можем добавить туда свои данные, но нам придется вмешаться в общий модуль УправлениеЗапасамиРасширеннаяАналитика, в те процедуры, которые отвечают за подготовку таблицы проводок (например, ПодготовитьТаблицуПроводок).
  2. Ручная корректировка набора записей: Мы можем подписаться на событие ПриЗаписи регистра накопления УчетЗатратРегламентированныйУчет или регистра бухгалтерии Хозрасчетный. Однако это менее предпочтительный путь, так как он может замедлить проведение документов и создать сложности при перепроведении.

Советы по отладке в УПП с РАУЗ

Чтобы увидеть, в какой именно момент заполняется набор записей Хозрасчетный, выполните следующие действия:

  1. Убедитесь, что отладка на сервере включена, так как большинство процедур РАУЗ выполняется в серверном контексте.
  2. Ставьте точку останова в модуле набора записей регистра Хозрасчетный в процедуре ПередЗаписью.
  3. Чтобы пропустить технические моменты очистки движений (когда Количество() = 0), используйте условие в точке останова: ЭтотОбъект.Количество() > 0.
  4. Когда отладчик остановится на записи, проанализируйте Стек вызовов. Вы увидите длинную цепочку процедур из общего модуля УправлениеЗапасамиРасширеннаяАналитика, которая привела к записи. Именно там происходит сопоставление аналитик затрат со счетами БУ.

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

← На главную