Переход на новые релизы крупных ERP-систем от компании 1С часто преподносит сюрпризы техническим специалистам и бухгалтерам. Одной из наиболее резонансных проблем в ветке релизов 1С:Комплексная автоматизация 2.4 (и 1С:ERP 2.4) после обновления на версию 2.4.8.63 стало аномальное поведение регламентированного (бухгалтерского) учета ТМЦ. На счетах 10, 41 и 43 после проведения регламентных операций закрытия месяца внезапно появлялись колоссальные, нереальные количественные и суммовые остатки и обороты, в то время как в управленческом учете (УУ) все цифры оставались абсолютно корректными.
В данной статье мы подробно разберем, почему возникает этот сбой, проанализируем его внутренние технические причины, рассмотрим официальные пути решения и покажем, как временно исправить ошибку с помощью механизма расширений конфигурации, не дожидаясь глобального обновления системы.
Давайте проанализируем поведение системы, чтобы понять физику процесса. Бухгалтеры замечают следующую закономерность: если распровести первичный документ (например, РеализацияТоваровУслуг или ПередачаМатериаловВПроизводство), заново его провести и выполнить отражение в регламентированном учете вручную — проводки формируются правильно. Количество совпадает с управленческим учетом «один в один».
Однако стоит нам запустить процедуру «Закрытие месяца» и выполнить «Расчет себестоимости», как при последующем автоматическом отражении документов в регламентированном учете количество ТМЦ в проводках резко возрастает. Причем увеличивается оно пропорционально количеству однотипных строк в документе. Если в документе присутствует несколько строк с одной и той же номенклатурой, система группирует их, но вместо простого сложения количества происходит математическое умножение на число этих самых строк.
Это связано с масштабной оптимизацией механизмов проведения, которую разработчики 1С предприняли в ветке 2.4.8. Целью оптимизации было сокращение объема проводок в бухгалтерском учете (БУ) за счет их агрегации (сворачивания аналогичных строк по аналитикам учета, таким как склад, группа финансового учета, организация).
К сожалению, в алгоритме сборщика запроса для отражения проводок себестоимости была допущена критическая ошибка соединения таблиц (эффект декартова произведения или Cartesian product). При левом или внутреннем соединении временных таблиц оперативного учета с таблицами распределения рассчитанной себестоимости по ключам аналитики происходило дублирование записей. Результат этого некорректного соединения отправлялся в группировку, где агрегатные функции (в данном случае сумма по полю количества) отрабатывали по задублированным строкам. В итоге списанное количество умножалось на количество записей в регистрах себестоимости, а итоговая сумма списания рассчитывалась на базе этого неверного количества, приводя главных бухгалтеров в ужас от «адовых» списаний в бухучете.
Эта проблема официально признана разработчиками фирмы «1С» и зарегистрирована под кодом 00-00233739 (и рядом смежных кодов ошибок для различных релизов ERP и Комплексной автоматизации).
Суть зарегистрированной ошибки формулируется так: «Неверно формируется количество по проводкам при отражении себестоимости в регламентированном учете». Ошибка затрагивает механизмы распределения затрат, расчет себестоимости и последующее формирование проводок по списанию материальных ценностей.
Для исправления этой проблемы в долгосрочной перспективе необходимо обновить систему до исправленных релизов ветки 2.4.8 (начиная с релиза 2.4.8.84 и выше) либо осуществить переход на более новые поддерживаемые ветки, такие как 2.4.11, 2.4.13 или линейку 2.5.
Если же оперативное обновление рабочей базы невозможно по причине сильной кастомизации или жестких сроков сдачи отчетности, нам на помощь придут альтернативные технические решения.
Для конфигураций на управляемых формах фирма «1С» активно использует механизм автоматической загрузки исправлений (патчей). Если ваша база подключена к интернет-поддержке, выполните следующие шаги:
00-00233739 или ключевым словам «себестоимость количество регл»).Если патч недоступен или база работает в закрытом контуре без доступа к интернету, программист может исправить проблему самостоятельно с помощью механизма расширений.
Суть метода заключается в том, чтобы перехватить выполнение функции, формирующей текст запроса для отражения себестоимости в регламентированном учете, и подменить код этого запроса на корректный вариант (взятый из предыдущего стабильного релиза, например 2.4.7, или исправленный вручную).
Давайте рассмотрим, как это сделать по шагам:
РегламентированныйУчетПроведениеСервер или специализированный модуль отражения себестоимости.ПодготовитьТаблицыОтраженияСебестоимости или аналогичную ей, внутри которой собирается дефектный SQL-запрос).&Вместо для замещения оригинального метода.Пример схемы замещения метода в расширении выглядит следующим образом:
&Вместо("ПодготовитьТаблицыДляОтраженияСебестоимости")
Функция ИСП_ПодготовитьТаблицыДляОтраженияСебестоимости(ПараметрыПроведения, ТаблицыДокумента)
// Здесь размещается исправленный текст запроса из стабильной версии 1С:КА
// ...
// Запрос соединяет временные таблицы без дублирования записей
// ...
Возврат РезультатВыполнения;
КонецФункции
После сохранения расширения и перезапуска службы сервера «1С:Предприятие» новый алгоритм формирования проводок вступит в силу.
Просто установить патч или применить расширение недостаточно: уже сформированные неверные движения по счетам БУ сами по себе не исправятся. Нам необходимо принудительно пересчитать себестоимость и обновить проводки. Рассмотрим детальный алгоритм действий для восстановления порядка в учете:
Следуя этой инструкции, вы сможете быстро и безболезненно ликвидировать последствия критического бага релиза 2.4.8.63 и вернуть учет в вашей компании в штатное русло.