В практике работы с крупными конфигурациями, такими как 1С:Управление холдингом или 1С:ERP, часто возникает ситуация, когда сумма в строке 040 (косвенные расходы) декларации по налогу на прибыль не совпадает с данными оборотно-сальдовой ведомости (ОСВ) по счету 90.08. Ситуация осложняется тем, что при расшифровке строки 040 система выдает одну сумму, а стандартные отчеты — другую. Разберем детально, почему это происходит и как найти «потерянные» миллионы.
Первым делом проанализируем, как система формирует данные для декларации. В типовых решениях расшифровка строки 040 строится на основе запроса к виртуальной таблице РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто. В то же время оборотно-сальдовая ведомость чаще всего использует таблицу ОборотыДтКт или Обороты.
Рассмотрим пример запроса, который используется системой для получения цифр по косвенным расходам:
ВЫБРАТЬ
Движения.СчетДт КАК Счет,
Движения.СубконтоКт1 КАК СтатьяЗатрат,
СУММА(Движения.СуммаНУДт) КАК СуммаНУ
ИЗ
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
&НачалоПериода,
&КонецПериода,
Организация В (&Организации) И Активность И СчетДт В ИЕРАРХИИ (&Счет),
,
) КАК Движения
СГРУППИРОВАТЬ ПО
Движения.СчетДт,
Движения.СубконтоКт1
ИТОГИ ПО
ОБЩИЕ
Если при выполнении этого запроса вы видите сумму меньше, чем в ОСВ, а при замене таблицы на ОборотыДтКт данные выравниваются — мы имеем дело с техническим расхождением в регистрах. Выясним основные причины такого поведения.
Одной из наиболее вероятных причин является версия платформы. Например, в релизах ветки 8.3.16 (в частности 8.3.16.1063) зафиксированы ошибки работы с виртуальными таблицами. Характерный признак: если формировать запрос за каждый месяц отдельно — суммы сходятся, а если за квартал целиком — возникает разница.
Это происходит из-за некорректного обращения системы к таблицам итогов. Для диагностики выполним следующие шаги:
Посмотрим на диагностический запрос, который поможет определить, есть ли проблемы с активностью записей:
ВЫБРАТЬ
Хозрасчетный.Активность КАК Активность,
Хозрасчетный.СчетКт КАК СчетКт,
СУММА(Хозрасчетный.СуммаНУДт) КАК СуммаНУДт
ИЗ
РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
ГДЕ
Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода
И Хозрасчетный.Организация = &Организации
И Хозрасчетный.СчетДт В ИЕРАРХИИ (&Счет)
СГРУППИРОВАТЬ ПО
Хозрасчетный.Активность,
Хозрасчетный.СчетКт
Виртуальная таблица ДвиженияССубконто работает по принципу внутреннего соединения (INNER JOIN) основной таблицы движений с таблицами значений субконто. Если в проводке (особенно при корреспонденции 90.08 с 20.01) не заполнено обязательное субконто, такая запись может просто не попасть в выборку ДвиженияССубконто, хотя в Оборотах она будет присутствовать.
Проанализируем ситуацию: если убрать из запроса группировку по СубконтоКт1, и сумма становится верной — проблема именно в данных по кредитовому счету. Проверьте настройки плана счетов: установлена ли галочка «Только обороты» для субконто «Статьи затрат» или «Номенклатурные группы».
Рассмотрим запрос для детальной проверки видов субконто в корреспонденции:
ВЫБРАТЬ
Движения.СчетКт КАК Счет,
Движения.ВидСубконтоКт1 КАК ВидСубконтоКт1,
Движения.СубконтоКт1 КАК СубконтоКт1,
СУММА(Движения.СуммаНУДт) КАК СуммаНУ
ИЗ
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
&НачалоПериода,
&КонецПериода,
Организация В (&Организации) И Активность И СчетДт В ИЕРАРХИИ (&Счет),
,
) КАК Движения
СГРУППИРОВАТЬ ПО
Движения.СчетКт,
Движения.СубконтоКт1,
Движения.ВидСубконтоКт1
Строка 040 декларации — это косвенные расходы. В 1С их состав определяется методом исключения. Программа берет все затраты и вычитает из них те, что указаны в регистре сведений «Методы определения прямых расходов».
Выясним причину расхождения через настройки учета:
20.01 в дебет 90.08 к прямым расходам.Если стандартные средства (перезакрытие месяца, ТИИ) не помогают, выполним следующие действия:
1. Использование утилиты chdbfl.exe. Если база файловая, возможно повреждение физической целостности таблиц итогов. Проверка утилитой может восстановить потерянные связи между записями регистра и таблицами субконто.
2. Очистка кэша и пересчет итогов. Иногда система «залипает» на старых итогах. Рекомендуется полностью отключить использование итогов в консоли запросов или через код, а затем включить их заново:
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Ложь);
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Истина);
3. Проверка ручных операций. Если в периоде есть ручные корректировки по счету 90.08.1, в которых заполнены не все субконто, предусмотренные планом счетов, это приведет к тому, что ДвиженияССубконто проигнорирует эти записи. Проанализируем обороты в разрезе регистраторов, чтобы найти конкретный документ, создающий разницу.
Резюме: В большинстве случаев проблема кроется либо в специфическом баге платформы (лечится обновлением), либо в отсутствии аналитики (субконто) в корреспонденциях со счетом 20, из-за чего виртуальная таблица «теряет» записи при попытке разыменовать поля субконто.