При обновлении крупных производственных систем, таких как 1С:Комплексная автоматизация 2 или 1С:ERP Управление предприятием 2, с редакции 2.2 на ветку 2.4 (в частности, на релизы 2.4.3.х и 2.4.4.х), пользователи и аналитики часто сталкиваются с неприятной проблемой. Отчет "Анализ себестоимости выпущенной продукции" внезапно перестает выводить количество выпущенной продукции и, как следствие, не рассчитывает показатель себестоимости единицы. При этом стоимостные показатели затрат в отчете присутствуют, но они "висят" без привязки к объему выпуска.
В данной статье мы подробно разберем, почему возникает эта ошибка, проанализируем логику работы регистров накопления под капотом системы и рассмотрим два практических варианта решения проблемы: быстрое исправление через схему компоновки данных (СКД) и методологически верный обходной путь без программирования.
Для того чтобы понять корень проблемы, нам необходимо обратиться к движениям документов по регистрам накопления. Проанализируем ситуацию, когда выпуск продукции оформляется по давальческой схеме с привлечением стороннего переработчика.
В редакции 2.2 документ Поступление от переработчика при проведении делал записи в регистр накопления Выпуск продукции. При этом, если выпуск происходил без явного указания спецификации или заказа, поле Заказ (которое в системе выступает в роли аналитики "Заказ на производство") оставалось пустым, то есть принимало значение Неопределено.
Начиная с редакции 2.4, разработчики изменили эту логику для обеспечения более глубокой сквозной аналитики закрытия затрат. Теперь, если документ Поступление от переработчика проводится без привязки к исходному документу Заказ переработчику, система принудительно записывает ссылку на сам документ Поступление от переработчика в поле Заказ регистра Выпуск продукции.
В то же время, параллельный процесс распределения расходов и расчета партий записывает информацию в регистр Партии незавершенного производства. В этом регистре по-прежнему в поле Заказ на производство фиксируется значение Неопределено, так как фактического заказа на производство в системе создано не было.
В результате мы получаем расхождение в двух ключевых регистрах:
Выпуск продукции поле Заказ содержит ссылку на документ Поступление от переработчика.Партии незавершенного производства поле Заказ на производство содержит значение Неопределено.Когда мы открываем отчет "Анализ себестоимости выпущенной продукции", система запускает сложный запрос СКД. В этом запросе происходит левое соединение (LEFT JOIN) таблицы выпуска продукции с таблицей партий незавершенного производства. Соединение выполняется по набору ключевых полей, среди которых обязательным является аналитика Заказ на производство. Из-за несовпадения значений (ссылка на документ против Неопределено) левое соединение не может сопоставить данные выпуска с данными затрат. Количественные показатели выпуска теряются, ломая всю структуру отчета.
Если вам необходимо оперативно вернуть работоспособность отчета без изменения документооборота компании, мы можем скорректировать запрос в схеме компоновки данных отчета. Наша задача — принудительно приводить поле Заказ к значению Неопределено в тех случаях, когда в роли заказа выступает документ переработки.
Рассмотрим, как выглядел проблемный участок запроса СКД в исходном варианте конфигурации:
ВЫБОР
КОГДА Выпуск.Заказ = НЕОПРЕДЕЛЕНО
ТОГДА НЕОПРЕДЕЛЕНО
ИНАЧЕ Выпуск.Заказ
КОНЕЦ
Для исправления этой логики мы добавим дополнительную проверку на тип документа с помощью оператора ССЫЛКА. Модифицируем запрос следующим образом:
ВЫБОР
КОГДА Выпуск.Заказ = НЕОПРЕДЕЛЕНО
ТОГДА НЕОПРЕДЕЛЕНО
ИНАЧЕ ВЫБОР
КОГДА Выпуск.Заказ ССЫЛКА Документ.ПоступлениеОтПереработчика
ТОГДА НЕОПРЕДЕЛЕНО
ИНАЧЕ Выпуск.Заказ
КОНЕЦ
КОНЕЦ
Этот простой прием позволяет "обнулить" аналитику заказа для документов переработки непосредственно в момент формирования отчета. После этого левое соединение успешно отрабатывает по значению Неопределено, восстанавливая вывод количества выпуска и расчет себестоимости единицы изделия.
Важно: Не редактируйте типовой отчет напрямую в основной конфигурации, чтобы не снимать ее с поддержки и не усложнять будущие обновления. Настоятельно рекомендуется реализовать это изменение через механизм Расширений конфигурации. Для этого выполните следующие шаги:
АнализСебестоимостиВыпущеннойПродукции.Выпуск продукции.Если ваша компания не планирует вносить изменения в программный код системы или использовать расширения, исправить проблему можно организационным путем. Описанный сбой в регистрах возникает только тогда, когда пользователи нарушают полноценную цепочку документооборота по давальческой схеме и вводят документы выпуска обособленно.
Для того чтобы все регистры заполнялись согласованно, мы рекомендуем строго придерживаться следующей методологической цепочки при работе с переработчиками:
При таком подходе во всех регистрах (как в Выпуск продукции, так и в Партии незавершенного производства) в поле аналитики заказа будет записана ссылка на один и тот же документ — Заказ переработчику. Конфликт сопоставления данных в СКД исчезнет сам собой, и отчет сформируется корректно.
Описанная проблема была признана разработчиками фирмы "1С" как зарегистрированная ошибка и впоследствии была исправлена в минорных обновлениях ветки 2.4. В актуальных релизах запрос СКД типового отчета уже содержит встроенные проверки типов документов.
Если же ваша компания планирует или уже осуществляет переход на современную редакцию 1С:ERP / КА 2.5 (начиная с версии 2.5.8), вы столкнетесь с тем, что архитектура учета производства на стороне была кардинально переработана. В рамках новой концепции "Производство на стороне 2.5" взаимосвязи между передачей материалов, выпуском и распределением затрат контролируются новыми регистрами, что полностью исключает возникновение подобных архитектурных нестыковок при расчете себестоимости.