Ситуация, когда после загрузки данных из другой информационной базы начальные остатки по счету 41 (Товары) отображаются некорректно или становятся «красными» (отрицательными), является классической проблемой для пользователей 1С:Бухгалтерия 3.0. Часто это происходит даже в тех случаях, когда первичные документы заведены верно, а стандартные процедуры, такие как Тестирование и Исправление (ТиИ) или проверка утилитой chdbfl.exe, не выявляют ошибок. В этой статье мы разберем эффективный метод решения данной проблемы через глубокий пересчет итогов.
Стандартное Тестирование и Исправление информационной базы проверяет физическую целостность таблиц и ссылочные связи. Однако проблема «красных» остатков при правильных проводках часто кроется в рассинхронизации таблиц итогов и основной таблицы движений регистра бухгалтерии. В системе 1С данные хранятся в двух видах таблиц: таблица движений (где лежат сами проводки) и таблицы итогов (где хранятся рассчитанные суммы на конец каждого месяца). Если механизм расчета итогов сбился, отчет «Оборотно-сальдовая ведомость» (ОСВ) будет показывать неверные цифры, обращаясь к виртуальным таблицам итогов, хотя сами документы могут быть в порядке.
Проанализируем ситуацию: программный вызов метода рассчитатьИтоги() через встроенный язык также может не дать результата, если платформа считает, что итоги уже актуальны. В таких случаях требуется принудительная «встряска» механизма итогов.
Для решения задачи мы воспользуемся штатной обработкой «Управление итогами» (в некоторых версиях — «Управление итогами и агрегатами»). Рассмотрим подробнее последовательность действий, которая позволяет полностью перестроить индексы и итоги регистра Хозрасчетный.
Если вы предпочитаете программный метод или имеете доступ только к консоли кода, можно выполнить аналогичные действия через объект РегистрыБухгалтерии. Разберем пример кода, который инициирует пересчет:
// Пример программного пересчета итогов для регистра Хозрасчетный
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Ложь);
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеТекущихИтогов(Ложь);
// Установка периода, с которого будет произведен пересчет
ДатаНачала = '20000101';
РегистрыБухгалтерии.Хозрасчетный.УстановитьПериодРассчитанныхИтогов(ДатаНачала);
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеИтогов(Истина);
РегистрыБухгалтерии.Хозрасчетный.УстановитьИспользованиеТекущихИтогов(Истина);
Помните, что выполнение этих операций на большой базе может занять значительное время и требует монопольного режима работы с информационной базой.
Если после пересчета итогов проблема сохраняется или возвращается, проанализируем другие возможные факторы, характерные для версии платформы 8.3.13 и выше:
Postgres) или обновить платформу до актуальных версий (ветки 8.3.22 и выше).Чтобы окончательно убедиться, в чем проблема — в итогах или в самих документах, составим запрос к виртуальной таблице Остатки и физической таблице Движения. Если суммы в них различаются, значит, проблема была именно в итогах. Если же и в физической таблице движений сумма отрицательная — нужно искать ошибку в самих документах Ввод остатков или Поступление товаров и услуг.
Используя предложенный алгоритм управления итогами, мы обеспечиваем чистоту данных в регистрах и корректное отображение бухгалтерской отчетности, что является залогом правильного закрытия месяца и формирования налоговых деклараций.