При работе в 1С:Управление производственным предприятием (УПП) или 1С:Комплексная автоматизация 1.1 пользователи часто сталкиваются с аномальным поведением документа Расчет себестоимости (РСВ). Ситуация выглядит пугающе: в протоколе расчета отображается огромное среднее отклонение (числа с десятками знаков), а в отчетах после проведения документа появляются миллиардные и триллионные минусы. Разберем подробно, почему это происходит в режиме РАУЗ (Расширенная аналитика учета затрат) и как с этим бороться.
Для начала проанализируем математическую модель РАУЗ. В отличие от традиционного партионного учета, РАУЗ не списывает стоимость последовательно по документам. Он формирует огромную систему линейных уравнений (СЛУ), где переменными являются стоимости видов запасов и затрат. Процесс решения этой системы итерационный. Если система уравнений имеет решение, то с каждой итерацией отклонение уменьшается. Но если в данных есть логическая ошибка, система становится «расходящейся».
Основные причины расходимости:
КлючиАналитикиУчета.Рассмотрим ситуацию, когда суммы в Ведомости по учету затрат увеличиваются ровно в 2, 4 или 8 раз. Это явный признак проблемы с ключами аналитики. Проанализируем механизм: если в регистре УчетЗатрат по одной и той же номенклатуре записи распределились по двум разным (но визуально одинаковым) ключам, система при расчете может учесть приход один раз, а расход — дважды или четырежды, в зависимости от количества дублей.
Выясним причину появления дублей. Часто это происходит при некорректном обмене данными или программном создании записей в регистрах в обход стандартных механизмов. Проверим базу с помощью встроенных инструментов:
Если тестирование ключей не помогло, проанализируем производственные цепочки. Зацикливание — это классическая проблема, при которой Расчет себестоимости не может «схлопнуть» затраты. Разберем по шагам, как найти проблемное место:
Аналитика вида учета, Затрата, Документ-регистратор.СтоимостьКонечныйОстаток (ищем аномально большие значения).Комплектация номенклатуры. Этот документ часто создает петлю, если в состав комплекта входит та же номенклатура, что и на выходе (например, при переупаковке с тем же кодом).Для решения проблем встречного выпуска в УПП предусмотрен специальный регистр. Рассмотрим его настройку:
Перейдем в справочник «Настройки закрытия месяца», найдем раздел «Встречный выпуск». Здесь необходимо явно указать правила распределения для тех позиций, которые участвуют в кольцевых схемах производства. Это позволит алгоритму РАУЗ принудительно разорвать итерационную петлю.
Математика РАУЗ очень чувствительна к отрицательным остаткам в количественном выражении. Проанализируем ситуацию: если в системе зарегистрирован расход без прихода, стоимость списания может принять инвертированное значение. При последующих итерациях расчета эта ошибка множится.
Как выявить и исправить:
Ведомость по учету затрат с детализацией до Номенклатуры и Склада.КоличествоКонечныйОстаток меньше нуля.В некоторых случаях проблема кроется в рассинхронизации таблиц итогов на уровне SQL-сервера. Рассмотрим способ исправления через Конфигуратор:
Расчет себестоимости.Также полезно проверить целостность регистра сведений Аналитика учета партий. Несмотря на название, в режиме РАУЗ он хранит связи между движениями и ключами. Если записи в нем «битые», расчет будет некорректным.
Если мы убедились, что данные чисты, но отклонение всё равно велико, попробуем изменить параметры самого расчета. В документе Расчет себестоимости на закладке «Дополнительно» (или через настройку параметров учета) можно найти параметры решения СЛУ:
Проанализируем техническую деталь: в РАУЗ за расчет отвечает сложный алгоритм в модулях, начинающихся на мгм... (например, мгмЛинейныеУравнения). Если вы программист, вы можете установить точку останова в методе, который выводит сообщение о количестве итераций, и посмотреть на содержимое таблицы ТаблицаУзлов. Это позволит увидеть, по какому именно узлу (ключу аналитики) идет взрывной рост стоимости.
Резюмируем план действий:
Соблюдение этого порядка действий в 99% случаев позволяет вернуть расчет себестоимости в нормальное русло и избавиться от «астрономических» цифр в учете.