Почему не сходится строка 040 декларации по прибыли с обороткой и как исправить расхождения в расшифровке

Программист 1С v8.3 (Управляемые формы) Налоговый учет
← На главную

В практике работы с крупными конфигурациями, такими как 1С:Управление холдингом или 1С:ERP, часто возникает ситуация, когда сумма в строке 040 (косвенные расходы) декларации по налогу на прибыль не совпадает с данными оборотно-сальдовой ведомости (ОСВ) по счету 90.08. Ситуация осложняется тем, что при расшифровке строки 040 система выдает одну сумму, а стандартные отчеты — другую. Разберем детально, почему это происходит и как найти «потерянные» миллионы.

Анализ механизмов получения данных в 1С

Первым делом проанализируем, как система формирует данные для декларации. В типовых решениях расшифровка строки 040 строится на основе запроса к виртуальной таблице РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто. В то же время оборотно-сальдовая ведомость чаще всего использует таблицу ОборотыДтКт или Обороты.

Рассмотрим пример запроса, который используется системой для получения цифр по косвенным расходам:


ВЫБРАТЬ
    Движения.СчетДт КАК Счет,
    Движения.СубконтоКт1 КАК СтатьяЗатрат,
    СУММА(Движения.СуммаНУДт) КАК СуммаНУ
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
        &НачалоПериода,
        &КонецПериода,
        Организация В (&Организации) И Активность И СчетДт В ИЕРАРХИИ (&Счет),
        ,
    ) КАК Движения
СГРУППИРОВАТЬ ПО
    Движения.СчетДт,
    Движения.СубконтоКт1
ИТОГИ ПО
    ОБЩИЕ

Если при выполнении этого запроса вы видите сумму меньше, чем в ОСВ, а при замене таблицы на ОборотыДтКт данные выравниваются — мы имеем дело с техническим расхождением в регистрах. Выясним основные причины такого поведения.

Причина 1: Ошибки платформы и итоги

Одной из наиболее вероятных причин является версия платформы. Например, в релизах ветки 8.3.16 (в частности 8.3.16.1063) зафиксированы ошибки работы с виртуальными таблицами. Характерный признак: если формировать запрос за каждый месяц отдельно — суммы сходятся, а если за квартал целиком — возникает разница.

Это происходит из-за некорректного обращения системы к таблицам итогов. Для диагностики выполним следующие шаги:

  1. Проверим наличие неактивных записей в регистре.
  2. Выполним пересчет итогов через «Тестирование и исправление».
  3. Попробуем запустить базу на более актуальной версии платформы (например, 8.3.22 и выше).

Посмотрим на диагностический запрос, который поможет определить, есть ли проблемы с активностью записей:


ВЫБРАТЬ
    Хозрасчетный.Активность КАК Активность,
    Хозрасчетный.СчетКт КАК СчетКт,
    СУММА(Хозрасчетный.СуммаНУДт) КАК СуммаНУДт
ИЗ
    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
ГДЕ
    Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода
    И Хозрасчетный.Организация = &Организации
    И Хозрасчетный.СчетДт В ИЕРАРХИИ (&Счет)
СГРУППИРОВАТЬ ПО
    Хозрасчетный.Активность,
    Хозрасчетный.СчетКт

Причина 2: Пустые или некорректные субконто

Виртуальная таблица ДвиженияССубконто работает по принципу внутреннего соединения (INNER JOIN) основной таблицы движений с таблицами значений субконто. Если в проводке (особенно при корреспонденции 90.08 с 20.01) не заполнено обязательное субконто, такая запись может просто не попасть в выборку ДвиженияССубконто, хотя в Оборотах она будет присутствовать.

Проанализируем ситуацию: если убрать из запроса группировку по СубконтоКт1, и сумма становится верной — проблема именно в данных по кредитовому счету. Проверьте настройки плана счетов: установлена ли галочка «Только обороты» для субконто «Статьи затрат» или «Номенклатурные группы».

Рассмотрим запрос для детальной проверки видов субконто в корреспонденции:


ВЫБРАТЬ
    Движения.СчетКт КАК Счет,
    Движения.ВидСубконтоКт1 КАК ВидСубконтоКт1,
    Движения.СубконтоКт1 КАК СубконтоКт1,
    СУММА(Движения.СуммаНУДт) КАК СуммаНУ
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
        &НачалоПериода,
        &КонецПериода,
        Организация В (&Организации) И Активность И СчетДт В ИЕРАРХИИ (&Счет),
        ,
    ) КАК Движения
СГРУППИРОВАТЬ ПО
    Движения.СчетКт,
    Движения.СубконтоКт1,
    Движения.ВидСубконтоКт1

Причина 3: Настройка методов определения прямых расходов

Строка 040 декларации — это косвенные расходы. В 1С их состав определяется методом исключения. Программа берет все затраты и вычитает из них те, что указаны в регистре сведений «Методы определения прямых расходов».

Выясним причину расхождения через настройки учета:

  1. Перейдем в «Налоги и отчеты» — «Налог на прибыль» — «Перечень прямых расходов».
  2. Проверим, нет ли там правил, которые ошибочно относят обороты счета 20.01 в дебет 90.08 к прямым расходам.
  3. Если по 20 счету была регламентная операция (например, закрытие месяца за март), которая «не дотягивается» в отчет, убедитесь, что в этой операции корректно заполнены все аналитики НУ.

Технологические рекомендации по решению

Если стандартные средства (перезакрытие месяца, ТИИ) не помогают, выполним следующие действия:

1. Использование утилиты chdbfl.exe. Если база файловая, возможно повреждение физической целостности таблиц итогов. Проверка утилитой может восстановить потерянные связи между записями регистра и таблицами субконто.

2. Очистка кэша и пересчет итогов. Иногда система «залипает» на старых итогах. Рекомендуется полностью отключить использование итогов в консоли запросов или через код, а затем включить их заново:


РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Ложь);
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Истина);

3. Проверка ручных операций. Если в периоде есть ручные корректировки по счету 90.08.1, в которых заполнены не все субконто, предусмотренные планом счетов, это приведет к тому, что ДвиженияССубконто проигнорирует эти записи. Проанализируем обороты в разрезе регистраторов, чтобы найти конкретный документ, создающий разницу.

Резюме: В большинстве случаев проблема кроется либо в специфическом баге платформы (лечится обновлением), либо в отсутствии аналитики (субконто) в корреспонденциях со счетом 20, из-за чего виртуальная таблица «теряет» записи при попытке разыменовать поля субконто.

← На главную