При работе в программе 1С:Бухгалтерия государственного учреждения 2.0 (БГУ 2.0) бухгалтеры нередко сталкиваются со странным поведением отчетов. Оборотно-сальдовая ведомость (ОСВ) по счетам расчетов (например, 205.00 или 302.00) без отборов показывает абсолютно корректные данные за все месяцы. Однако стоит только установить отбор по конкретному контрагенту, как документы за предыдущие периоды просто «исчезают» из отчета, оставляя данные, к примеру, только за декабрь. При этом в Карточке счета все проводки по этому контрагенту за все месяцы отображаются правильно.
В этой статье мы подробно разберем, почему возникает эта техническая коллизия, как устроены механизмы хранения данных в платформе «1С:Предприятие» и по шагам восстановим корректную работу отчетов в вашей базе данных.
Для того чтобы понять природу этой ошибки, проанализируем разницу в механизмах формирования двух основных отчетов — «Карточки счета» и «Оборотно-сальдовой ведомости».
Отчет Карточка счета обращается напрямую к физической таблице проводок регистра бухгалтерии. Он последовательно считывает каждую запись (каждую проводку) из базы данных. Если в проводке указан нужный контрагент, документ обязательно попадет в отчет, независимо от заполненности остальных аналитических разрезов.
Отчет Оборотно-сальдовая ведомость устроен иначе. Для обеспечения высокой скорости работы он обращается к виртуальным таблицам остатков и оборотов, которые платформа 1С рассчитывает и хранит отдельно. При наложении отбора по субконто или при группировке данных платформа выполняет сложный поисковый SQL-запрос к этим виртуальным таблицам.
Проблема возникает после очередного обновления конфигурации БГУ 2.0. В одном из релизов разработчики изменили состав аналитики (субконто) для счетов расчетов с контрагентами (таких как 205.00 и 302.00) — к ним добавили новое субконто Договоры. В результате произошли следующие изменения:
NULL (абсолютное отсутствие данных), а не стандартная «пустая ссылка» на справочник договоров.NULL в полях субконто СУБД некорректно обрабатывает такие строки и просто отсекает исторические записи из итоговой выборки. Документы за прошлые периоды «выпадают» из отчета, хотя физически проводки существуют.Посмотрим на упрощенный пример того, как СУБД «видит» эту выборку на уровне SQL-запроса при соединении таблиц остатков и субконто:
ВЫБРАТЬ
РегистрБухгалтерии.Субконто1 КАК Контрагент,
РегистрБухгалтерии.Субконто2 КАК Договор, // Здесь возвращается NULL для старых периодов
РегистрБухгалтерии.СуммаОборотДт
ИЗ
РегистрБухгалтерии.ОборотыДтКт КАК РегистрБухгалтерии
ГДЕ
РегистрБухгалтерии.Субконто1 = &ОтборКонтрагент
И РегистрБухгалтерии.Субконто2 <> НЕОПРЕДЕЛЕНО // Строки с NULL отсекаются
Выяснив причину сбоя, перейдем к его устранению. Обычное групповое перепроведение документов за прошлые годы — это трудоемкий и опасный процесс, который может изменить показатели прошлых закрытых периодов. Мы применим методически верный и безопасный способ, рекомендуемый методистами фирмы 1С.
Рассмотрим по шагам комплекс мер для исправления отображения данных в ОСВ.
Шаг 1. Создание резервной копии базы данных
Перед выполнением любых массовых корректировок данных и расчетов итогов обязательно создайте архивную копию вашей информационной базы. В случае возникновения непредвиденных сбоев вы всегда сможете вернуться к исходному состоянию.
Шаг 2. Пересчет бухгалтерских итогов
Для начала нам необходимо обновить таблицы итогов в системе. Это можно сделать как в режиме Конфигуратора, так и непосредственно в пользовательском режиме 1С:Предприятие:
Шаг 3. Запуск корректировки незаполненных субконто
Теперь выполним главную процедуру, которая заменит значения NULL в проводках на правильные пустые ссылки типа Договор. Для этого в программе предусмотрена специальная сервисная обработка:
205.00 и 302.00, по которым ведется расчет с контрагентами).Договоры.Шаг 4. Повторное тестирование и пересчет итогов
После завершения работы обработки необходимо повторно пересчитать итоги, чтобы платформа «1С» заново построила виртуальные таблицы с учетом исправленных пустых субконто. После этого сформируйте ОСВ по счету с отбором по контрагенту — документы за прошлые периоды должны вернуться на свои места.
Параллельно пользователи часто замечают другую проблему в ОСВ: «разъезжаются» расчеты по счету 302.62 (или другим субсчетам счета 302) по физлицам. Начисление компенсации и ее выплата равны по суммам, но в ОСВ по конкретному сотруднику или физлицу «висит» развернутое дебетовое и кредитовое сальдо (минус и плюс одновременно).
Проанализируем основные причины этой проблемы и способы их локализации:
Чтобы быстро выявить, из-за какого именно аналитического разреза произошло расхождение на счетах расчетов, рекомендуем использовать отчет Анализ субконто:
Контрагенты и Договоры.Этот отчет наглядно покажет вам структуру расхождений: вы сразу увидите строки, где суммы начисления и выплаты разошлись по разным договорам или разным КПС. Для исправления достаточно открыть некорректный документ выплаты или начисления и привести аналитику к единому значению.