В практике работы с 1С:Предприятие 8.3 встречаются ситуации, когда бухгалтер замечает странное поведение системы: документ Отражение зарплаты в бухучете проведен, проводки в Карточке счета видны, но в Оборотно-сальдовой ведомости (ОСВ) суммы по кредиту отсутствуют или не соответствуют действительности. Еще более тревожным признаком является то, что при попытке выполнить стандартный пересчет итогов база данных начинает выдавать некорректные («миллионные») остатки, а тестирование и исправление (ТиИ) не находит ошибок. Рассмотрим детально, почему это происходит и как решить проблему, если обычные методы бессильны.
Для начала разберем архитектуру хранения данных. В 1С данные бухгалтерского учета хранятся в Регистре бухгалтерии (обычно Хозрасчетный). Этот регистр состоит из нескольких физических таблиц в базе данных:
Проблема возникает, когда нарушается связь между этими таблицами. Проводка в основной таблице есть, а в таблицу итогов она либо не попала, либо попала с «битым» ключом аналитики (субконто). Проанализируем типичные причины такого поведения в современных релизах платформы, таких как 8.3.25.1394.
Обычно для исправления таких ошибок используют обработку Управление итогами или Тестирование и исправление в Конфигураторе с флагом «Пересчет итогов». Однако, как показывает практика, если таблицы итогов серьезно повреждены на уровне индексов СУБД, эти инструменты могут не очищать старые записи, а пытаться «наслоить» на них новые данные. В результате мы получаем «лютый треш» — огромные суммы, возникшие из ниоткуда. Это происходит потому, что система пытается инкрементально обновить итог, основываясь на уже неверном предыдущем значении.
Проанализируем самый эффективный метод, который помог решить проблему в описанном случае. Суть метода заключается в том, чтобы заставить систему полностью уничтожить старые таблицы итогов и создать их заново, опираясь исключительно на первичные проводки.
Стандартная выгрузка в .dt здесь не поможет, так как она переносит структуру таблиц «как есть». Нам нужен формат, который не содержит итогов. Таким форматом является выгрузка для перехода в облачный сервис (DataDump).
Выполним следующие шаги:
Этот метод гарантированно «вычищает» любые логические ошибки в таблицах ИтогиПоСчетам и ИтогиПоСубконто.
Если мы хотим выяснить, на каком этапе происходит сбой, проанализируем ситуацию с помощью консоли запросов. Чтобы увидеть те же «кривые» данные, что и в отчетах, мы должны обратиться не к виртуальным таблицам (которые 1С пытается «подправить» на лету), а к физическим. Рассмотрим пример запроса для поиска расхождений по счету 70:
ВЫБРАТЬ
Итоги.Счет КАК Счет,
Итоги.Субконто1 КАК Работник,
Итоги.СуммаОстаток КАК СуммаПоИтогам,
Движения.СуммаОборот КАК СуммаПоПроводкам
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(ТвояДата, , , ) КАК Итоги
ПОЛНОЕ СОЕДИНЕНИЕ (
ВЫБРАТЬ
СчетДт КАК Счет,
СубконтоДт1 КАК Субконто,
СУММА(Сумма) КАК СуммаОборот
ИЗ
РегистрБухгалтерии.Хозрасчетный
ГДЕ
Период <= ТвояДата
СГРУППИРОВАТЬ ПО
СчетДт, СубконтоДт1
) КАК Движения
ПО Итоги.Счет = Движения.Счет И Итоги.Субконто1 = Движения.Субконто
ГДЕ
ЕСТЬNULL(Итоги.СуммаОстаток, 0) <> ЕСТЬNULL(Движения.СуммаОборот, 0)
Разберем, что мы здесь делаем: мы сравниваем данные из виртуальной таблицы остатков (которая берет данные из таблиц итогов) с физической таблицей регистра (которая суммирует проводки «в лоб»). Любое несовпадение в результате этого запроса — это прямой признак разрушения базы.
Выясним причину, связанную с синхронизацией из ЗУП. Часто в 1С:Бухгалтерии в параметрах учета стоит настройка «Учет расчетов по персоналу — Сводно по всем работникам». В этом случае на счете 70 вообще нет субконто Работники. Если же в ЗУП настроена выгрузка «По каждому работнику», то документ Отражение зарплаты может пытаться записать данные в субконто, которых нет в плане счетов БП. Это приводит к тому, что записи в таблице ExtraDimensions (субконто) создаются некорректно, и 1С перестает «видеть» такие обороты в итоговых отчетах. Для автоматической проверки параметров учета можно использовать обработку для экспресс-диагностики настроек 1С:Бухгалтерии.
Рекомендации для предотвращения проблемы:
Подводя итог, отметим: если стандартное ТиИ не помогает, не тратьте время на многократные попытки пересчета. Используйте метод выгрузки в сервис — это самый быстрый способ получить «здоровую» базу с корректными остатками в ОСВ.