Почему в регламентированном учете 1С:КА 2.4 двоится или умножается количество ТМЦ после расчета себестоимости и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Переход на новые релизы крупных ERP-систем от компании 1С часто преподносит сюрпризы техническим специалистам и бухгалтерам. Одной из наиболее резонансных проблем в ветке релизов 1С:Комплексная автоматизация 2.4 (и 1С:ERP 2.4) после обновления на версию 2.4.8.63 стало аномальное поведение регламентированного (бухгалтерского) учета ТМЦ. На счетах 10, 41 и 43 после проведения регламентных операций закрытия месяца внезапно появлялись колоссальные, нереальные количественные и суммовые остатки и обороты, в то время как в управленческом учете (УУ) все цифры оставались абсолютно корректными.

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

Выясняем причину: почему количество умножается на число строк?

Давайте проанализируем поведение системы, чтобы понять физику процесса. Бухгалтеры замечают следующую закономерность: если распровести первичный документ (например, РеализацияТоваровУслуг или ПередачаМатериаловВПроизводство), заново его провести и выполнить отражение в регламентированном учете вручную — проводки формируются правильно. Количество совпадает с управленческим учетом «один в один».

Однако стоит нам запустить процедуру «Закрытие месяца» и выполнить «Расчет себестоимости», как при последующем автоматическом отражении документов в регламентированном учете количество ТМЦ в проводках резко возрастает. Причем увеличивается оно пропорционально количеству однотипных строк в документе. Если в документе присутствует несколько строк с одной и той же номенклатурой, система группирует их, но вместо простого сложения количества происходит математическое умножение на число этих самых строк.

Это связано с масштабной оптимизацией механизмов проведения, которую разработчики 1С предприняли в ветке 2.4.8. Целью оптимизации было сокращение объема проводок в бухгалтерском учете (БУ) за счет их агрегации (сворачивания аналогичных строк по аналитикам учета, таким как склад, группа финансового учета, организация).

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

Официальный статус ошибки в базах 1С

Эта проблема официально признана разработчиками фирмы «1С» и зарегистрирована под кодом 00-00233739 (и рядом смежных кодов ошибок для различных релизов ERP и Комплексной автоматизации).

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

Для исправления этой проблемы в долгосрочной перспективе необходимо обновить систему до исправленных релизов ветки 2.4.8 (начиная с релиза 2.4.8.84 и выше) либо осуществить переход на более новые поддерживаемые ветки, такие как 2.4.11, 2.4.13 или линейку 2.5.

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

Вариант решения №1: Установка официального патча (EF_00233739)

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

  1. Перейдите в раздел Администрирование — Обслуживание — Обновление программы.
  2. Выберите пункт Установка обновлений и исправлений (патчей).
  3. Найдите в списке доступных патчей исправление для вашей версии конфигурации (ищите по коду ошибки 00-00233739 или ключевым словам «себестоимость количество регл»).
  4. Установите патч и перезапустите сеанс работы с базой данных. Патч автоматически применит расширение, корректирующее проблемный общий модуль.

Вариант решения №2: Временное исправление через собственное расширение

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

Суть метода заключается в том, чтобы перехватить выполнение функции, формирующей текст запроса для отражения себестоимости в регламентированном учете, и подменить код этого запроса на корректный вариант (взятый из предыдущего стабильного релиза, например 2.4.7, или исправленный вручную).

Давайте рассмотрим, как это сделать по шагам:

  1. Создайте новое расширение конфигурации в режиме Конфигуратор. Снимите у него флажки «Безопасный режим» и «Защита от опасных действий».
  2. Найдите общий модуль, отвечающий за расчет и проведение проводок по себестоимости в регламентированном учете. В зависимости от точной сборки релиза это может быть общий модуль РегламентированныйУчетПроведениеСервер или специализированный модуль отражения себестоимости.
  3. Добавьте в расширение функцию формирования пакета запросов (например, функцию ПодготовитьТаблицыОтраженияСебестоимости или аналогичную ей, внутри которой собирается дефектный SQL-запрос).
  4. Примените аннотацию &Вместо для замещения оригинального метода.
  5. Замените дефектный текст запроса. Если у вас под рукой есть копия базы более старого релиза (2.4.7), скопируйте функцию построения запроса оттуда. В старом коде группировка и соединения таблиц себестоимости и оперативного учета по аналитикам не вызывали эффекта размножения строк.

Пример схемы замещения метода в расширении выглядит следующим образом:


&Вместо("ПодготовитьТаблицыДляОтраженияСебестоимости")
Функция ИСП_ПодготовитьТаблицыДляОтраженияСебестоимости(ПараметрыПроведения, ТаблицыДокумента)
    // Здесь размещается исправленный текст запроса из стабильной версии 1С:КА
    // ...
    // Запрос соединяет временные таблицы без дублирования записей
    // ...
    Возврат РезультатВыполнения;
КонецФункции

После сохранения расширения и перезапуска службы сервера «1С:Предприятие» новый алгоритм формирования проводок вступит в силу.

Пошаговый план восстановления учета после исправления бага

Просто установить патч или применить расширение недостаточно: уже сформированные неверные движения по счетам БУ сами по себе не исправятся. Нам необходимо принудительно пересчитать себестоимость и обновить проводки. Рассмотрим детальный алгоритм действий для восстановления порядка в учете:

  1. Отмените отражение в регламентированном учете: Перейдите в рабочее место «Отражение документов в регламентированном учете» за проблемный месяц и снимите флаг отражения для документов движения ТМЦ, чтобы очистить старые «адовые» проводки.
  2. Отмените расчет себестоимости: Откройте помощник «Закрытие месяца» за дефектный период. Расшнуруйте (отмените) операцию «Распределение затрат и расчет себестоимости».
  3. Групповое перепроведение первичных документов: Проведите групповое перепроведение первичных документов списания и перемещения ТМЦ (таких как «Реализация товаров и услуг», «Списание товаров», «Передача материалов в производство», «Выпуск продукции»). Это перезапишет их движения в регистрах оперативного учета и очистит некорректно сформированные связи.
  4. Выполните расчет себестоимости заново: Снова запустите процедуру «Закрытие месяца». Система выполнит расчет себестоимости по исправленным алгоритмам без размножения строк.
  5. Отразите документы в регламентированном учете: Запустите автоматическое отражение документов в БУ.
  6. Финальная проверка данных: Сформируйте отчет «Ведомость по товарам на складах» (по данным управленческого учета) и Оборотно-сальдовую ведомость (ОСВ) по счетам 10, 41, 43 (по данным регламентированного учета). Убедитесь, что конечные остатки и обороты по количеству теперь абсолютно идентичны и соответствуют первичным документам.

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

← На главную