Почему 1С:ERP 2.5.25.63 некорректно закрывает налоговый учет и как исправить ошибки расчета себестоимости?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Налоговый учет Промышленность, строительство и АПК
← На главную

При закрытии месяца в 1С:ERP 2.5.25.63 пользователи часто сталкиваются с проблемами в налоговом учете, проявляющимися в некорректном формировании движений по регистру себестоимости. Мы видим появление лишних записей с ОперацияУчетаСебестоимости = "Списание на другие партии", которые отражают аномальные количества и суммы по постоянным (ПР) и временным (ВР) разницам. Эти суммы могут быть идентичны движениям по "Перемещению" продукции, что приводит к некорректным остаткам, зависшим минусовым ПР и ВР по партиям. В подобных ситуациях может потребоваться исправление ошибки отрицательных остатков товаров, чтобы привести данные в соответствие.

Выясняем причину некорректного закрытия налогового учета

Мы наблюдаем, что основная причина таких ошибок кроется в потере программой суммы налогового учета (НУ) на определенных этапах, например, при передаче продукции из производства на склад. Чтобы своевременно обнаружить подобные расхождения, рекомендуется проводить сравнение остатков и стоимости товаров по оперативному и бухгалтерскому учёту. Как следствие потери данных НУ, возникает завышение временной разницы (ВР), которая рассчитывается по формуле ВР = БУ - НУ - ПР. Когда НУ становится нулевым или существенно заниженным, ВР аномально возрастает.

Эти аномально большие значения ВР могут вызывать ошибки арифметического переполнения. Это происходит, когда в типовом коде системы значения, рассчитанные с высокой точностью (например, ЧИСЛО(31,2)), пытаются быть преобразованы в тип данных с меньшей точностью (например, ЧИСЛО(15,2)), что приводит к ошибке Microsoft OLE DB Driver 19 for SQL Server: Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric.

Мы установили, что корень проблемы часто лежит в некорректной работе платформенного механизма решения Систем Линейных Уравнений (СЛУ), используемого для расчета себестоимости. На платформах 8.3.27.1606 и 8.3.27.1936 наблюдались случаи, когда СЛУ возвращали некорректные или нулевые суммы для НУ, что затем каскадно приводило к искажениям в последующих расчетах.

Детальный анализ процесса расчета себестоимости в ERP

Мы рассмотрим, как формируются стоимости в ERP, чтобы понять, где возникают расхождения.

  1. Формирование движения материалов: Документ "Этап производства" создает РАСХОД материалов в производство, списывая их на незавершенное производство (НЗП). В движениях это отражается как хоз.операция "производственные затраты" с аналитикой номенклатуры потребленного материала, а кор.аналитика номенклатуры указывает на полуфабрикат или готовую продукцию.
  2. Расчет стоимости готовой продукции (ГП) или полуфабрикатов (ПФ) при выпуске: Программа, используя данные о расходах, генерирует ПРИХОД. Она "поворачивает" аналитики и хозяйственные операции: аналитика номенклатуры становится той, куда потратили материалы (ГП или ПФ), а кор.аналитика номенклатуры — потребленным материалом. хоз.операция меняется на "выпуск продукции".
  3. Передача продукции на склад: Документ "Передача из производства" также создает РАСХОД (с хоз.операцией "передача продукции из производства"), который затем "поворачивается" для формирования ПРИХОДА продукции на склад (с хоз.операцией "товары на складах").

Вся эта цепочка расчетов основывается на решении СЛУ, которые оперируют большим количеством "узлов" (свыше 160 000) и "связей" (порядка 2 миллионов). Если СЛУ работает некорректно, суммы, рассчитанные на одном этапе (например, при выпуске продукции), могут не совпадать с суммами, рассчитанными на следующем этапе (при передаче на склад). Именно это расхождение и проявляется в виде зависших отрицательных остатков ПР и ВР по партиям. Нередко это сопровождается такой проблемой, как ошибка ненулевых остатков по суммам при нулевом остатке по количеству в регистре себестоимости.

Способы решения проблемы и обходные пути

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

  1. Использование программного механизма решения СЛУ:
    • Мы можем отключить платформенный механизм СЛУ и активировать программное решение, встроенное в конфигурацию. Этот механизм основан на итерационной схеме Зейделя, которая в цикле выполняет запросы к SQL-серверу для достижения необходимой точности расчетов. Программный метод может быть медленнее, но он продемонстрировал свою эффективность в стабилизации расчетов НУ и предотвращении арифметических переполнений, успешно закрыв период. В критических случаях, когда штатное закрытие невозможно, можно использовать пропуск этапов регламентных операций по закрытию месяца.

  2. Обновление конфигурации и платформы:
    • Обновите конфигурацию 1С:ERP до последней стабильной версии. В частности, в версии 2.5.25.80 было выпущено исправление, которое ограничивает значения, превышающие допустимый диапазон ЧИСЛО(15,2), до максимально возможного (9999999999999,99). Это прямое решение проблемы арифметического переполнения.

      
      // Пример упрощенного кода, демонстрирующий логику исправления
      ВЫРАЗИТЬ(ДД.Количество * ЕСТЬNULL(Цены.ВременнаяРазница, 0) КАК ЧИСЛО(31,2)) КАК ВременнаяРазница;
      // ... далее по тексту запроса ...
      ВЫРАЗИТЬ(МИН(ДС.ВременнаяРазница, 9999999999999.99) КАК ЧИСЛО(15,2)) КАК ВременнаяРазница;
      

      Также, в версии 2.5.25.77 и более поздних версиях включен патч EF_00_00800566, который исправляет проблемы с обработкой РС.ЗаданияКРаспределениюВзаиморасчетов, что может влиять на общую стабильность закрытия месяца.

    • Внимательно выбирайте версию платформы 1С:Предприятие. Мы заметили, что некоторые версии платформы 8.3.27 могут быть нестабильными в работе со СЛУ и другими механизмами (например, с открытием PDF-файлов в ЭДО).

  3. Дополнительные меры и отладка:
    • Создайте минимальную модель: Для эффективного воспроизведения и отладки ошибки рекомендуется создать новую базу с минимальным набором начальных остатков и короткой, типичной цепочкой документов, которая приводит к ошибке. Для поиска узких мест в данных аналитикам могут пригодиться проверочные отчеты для поиска ошибок в учете. Это позволит изолировать проблему и значительно упростить поиск причины.

    • Корректировка запросов: В случаях со сложным горным переделом или оценкой МПЗ в несколько миллиардов, может потребоваться внесение точечных корректировок в запросы выборки данных для себестоимости, чтобы более точно рассчитывать ВР и ПР по БУ и НУ. Полезно также наладить регулярную сверку регистра себестоимости и ОСВ по МПЗ, чтобы контролировать корректность отражения данных в учете.

    • Анализ данных: При возникновении проблем с СЛУ, оперирующими огромными объемами данных, необходим глубокий анализ данных, формирующих "узлы" и "связи" системы. Это поможет выявить некорректные входные данные или специфические условия, которые провоцируют ошибки в расчетах.

Архитектурные особенности налогового учета и ПБУ 18/02 в 1С:ERP

Мы хотим отметить, что в 1С:ERP ресурс налогового учета (НУ) не хранится физически как отдельное поле в регистре себестоимости. Вместо этого, он рассчитывается динамически в отчетах и формах как НУ = БУ - ПР - ВР. Даже при использовании балансового метода ПБУ 18/02, система все равно внутренне выполняет расчеты постоянных (ПР) и временных (ВР) разниц для корректного формирования отложенного налога. Функциональные опции в учетной политике лишь определяют, будут ли эти разницы отображаться явно в документах и отчетах.

Заключение

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

← На главную