Почему в РАУЗ документы списывают МПЗ без серий и как исправить ключи аналитики затрат

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

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

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

Архитектурная разница складского контура и контура РАУЗ

Для понимания проблемы проанализируем различия в формировании движений между складскими регистрами и регистрами учета затрат:

  1. Складской количественный учет: регистр накопления ТоварыНаСкладах фиксирует физическое движение номенклатуры. Наличие серии в движениях этого регистра определяется исключительно реквизитом ВестиУчетПоСериям в карточке номенклатуры. Если серия выбрана в табличной части документа, она напрямую записывается в измерение регистра склада.
  2. Финансовый контур РАУЗ: регистры УчетЗатрат и УчетЗатратРегл оперируют не прямыми ссылками на номенклатуру, склады и серии, а ссылками на элементы справочника КлючиАналитикиУчетаЗатрат. Чтобы серия вошла в состав ключа аналитики и зафиксировалась в регистре сведений АналитикаУчетаЗатрат, система проверяет соблюдение параметров учета затрат.

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

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

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

  1. Откроем карточку проблемной номенклатуры.
  2. Проверим наличие флага ВестиУчетПоСериям. Этот флаг отвечает за возможность выбора серии в документах и складской количественный учет.
  3. Проверим флаг Вести партионный учет по сериям. Это ключевая настройка для контура РАУЗ. Если данный флаг снят, система считает, что финансовая себестоимость формируется усредненно по номенклатуре в целом, без деления на серии. При проведении документов РАУЗ алгоритм принудительно направит списание на ключ аналитики без серии.

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

Влияние кэширования и некорректных записей регистров сведений

В типовых конфигурациях за подбор и генерацию ключей отвечает процедура формирования аналитики (вызов метода НайтиИлиСоздатьКлючАналитики()). Этот механизм активно кэширует соответствия измерений в оперативной памяти текущего сеанса пользователя.

Рассмотрим сценарий, когда в базе возникает дублирование или рассинхронизация ключей:

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

Для устранения системных сбоев справочников аналитики выполним регламентную процедуру: откроем меню Операции → Обработка → Тестирование и исправление ключей аналитики. Данная обработка сверяет состав измерений в регистрах сведений с полями справочников ключей и устраняет расхождения в наименованиях и связях.

Проверка признака ручной корректировки движений

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

Посмотрим, как проверить наличие ручной блокировки программно:


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

Если НаборЗаписей.РучнаяКорректировка Тогда
    Сообщить("Движения документа заблокированы ручной корректировкой!");
КонецЕсли;

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

Методика устранения отрицательных остатков без полного перепроведения базы

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

Способ 1. Использование документа «Корректировка записей регистров»

Этот метод является самым безопасным с точки зрения целостности закрытых периодов. Разберем порядок действий:

  1. Создаем новый документ КорректировкаЗаписейРегистров на дату текущего открытого периода.
  2. В настройке состава регистров включаем регистры накопления УчетЗатрат и УчетЗатратРегл.
  3. Заполняем движения переброски:
    • Первая строка: вид движения Расход, указываем проблемный ключ аналитики затрат (без серии), списываем накопившийся зависший положительный остаток или закрываем отрицательный.
    • Вторая строка: вид движения Приход, указываем правильный ключ аналитики (с заполненной серией).
  4. Если переносится только количество для устранения пересортицы, суммовые ресурсы оставляем нулевыми. Если зависли и суммовые хвосты — переносим соответствующую стоимость.
  5. Перезапускаем регламентный документ РасчетСебестоимостиВыпуска за корректируемый месяц. СЛАУ успешно решится без деления на ноль и зависших остатков.

Способ 2. Выравнивание через «Комплектацию номенклатуры»

Если пересортица по сериям затронула не только РАУЗ, но и складские регистры, наиболее корректным типовым инструментом служит документ КомплектацияНоменклатуры с видом операции «Комплектация»:

  1. В шапке документа (результирующая позиция) указываем номенклатуру с правильной серией.
  2. В табличной части «Комплектующие» указываем ту же самую номенклатуру, но без серии (или с ошибочной серией).
  3. Проводим документ в открытом периоде. Данная операция штатно спишет остаток с некорректного ключа аналитики затрат и оприходует его на ключ с требуемой серией, синхронизировав складской и финансовый контуры.

Способ 3. Селективное переформирование движений по регистрам затрат

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


Для Каждого ДокСсылка Из МассивПроблемныхДокументов Цикл
    ДокументОбъект = ДокСсылка.ПолучитьОбъект();
    
    // Очищаем и заново формируем движения только по РАУЗ
    ДокументОбъект.Движения.УчетЗатрат.Очистить();
    ДокументОбъект.Движения.УчетЗатратРегл.Очистить();
    
    // Вызываем типовой механизм формирования движений учета затрат
    ОбработкаТабличныхЧастей.СформироватьДвиженияПоУчетуЗатрат(ДокументОбъект);
    
    ДокументОбъект.Движения.УчетЗатрат.Записать();
    ДокументОбъект.Движения.УчетЗатратРегл.Записать();
КонецЦикла;

Такой подход исключает случайные изменения в регистрах взаиморасчетов с контрагентами, регистрах НДС и остатках взаиморасчетов по накладным.

Организационные меры для предотвращения ошибок РАУЗ

Для предотвращения повторения подобных инцидентов настроим системные ограничения в базе данных:

  1. Запрет прямого изменения регистров: отзовем у роли бухгалтеров право «Интерактивное изменение записей» для регистров накопления и сведений блока учета затрат. Любые ручные правки в обход типовых документов в архитектуре РАУЗ приводят к разрыву СЛАУ.
  2. Установка даты запрета изменения данных: настроим механизм даты запрета редактирования раздельно для регламентированного и управленческого учета. Это заблокирует возможность запуска внешних обработок и правок движений в закрытых периодах.
← На главную