Представьте ситуацию: вы выполняете плановое обновление конфигурации или платформы 1С. Процесс проходит без видимых ошибок, вы запускаете базу, формируете общую Оборотно-сальдовую ведомость (ОСВ) и видите пугающую картину. По счетам 60, 62 и другим появились астрономические цифры — миллиарды рублей, которых в учете быть не может. При этом, если расшифровать конкретный счет и открыть карточку счета, сальдо отображается абсолютно правильно. Разберем эту аномалию подробно и выясним причину такого поведения системы, а затем по шагам устраним проблему.
Ситуация с миллиардными остатками в ОСВ напрямую связана с масштабным сбоем в релизах платформы 1С, выпущенных в середине ноября 2022 года (например, релиз 8.3.21.1622). Эти версии выпускались экстренно для устранения другой критической ошибки (самопроизвольного закрытия программы), и в спешке в код закрался серьезный баг, ломающий работу с базой данных.
Рассмотрим, как устроена архитектура регистров бухгалтерии в 1С. Для того чтобы общая ОСВ формировалась быстро, система не высчитывает сальдо каждый раз заново на основе каждой отдельной проводки. Вместо этого программа берет готовые данные из специальной системной структуры — таблицы итогов.
Сбойный релиз платформы нарушал механизм записи в эту таблицу. Вместо корректных сумм туда попадали пустые значения NULL или некорректный мусор. Когда вы формируете отчет, программа пытается математически сложить эти битые значения, и из-за ошибки интерпретации данных выводит гигантские цифры.
Почему же в карточке счета все верно? Посмотрим на механизм детализации: когда вы проваливаетесь внутрь счета (например, формируете анализ счета или карточку), платформа обращается уже не к таблице итогов, а к таблице реальных движений (самим проводкам). Физические проводки при этом баге не повреждались, поэтому внутри счета вы видите реальные, корректные суммы.
Дополнительно в этих «сломанных» релизах наблюдалось искажение аналитики: если в проводке счет дебета совпадал со счетом кредита, платформа могла затирать субконто. Из-за этого ОСВ «рвалась» еще сильнее, выдавая необоснованное развернутое сальдо (красноту) по контрагентам.
Простое обновление сбойной платформы на новую версию (например, на 8.3.22.1750 и выше) остановит генерацию новых ошибок, но не исправит уже записанные в базу искаженные итоги. Нам необходимо физически очистить сломанную таблицу и заставить систему пересчитать ее заново на основе правильных проводок. Выполним следующие действия:
.dt или бэкап средствами СУБД (SQL).8.3.21.1622, обновитесь до актуальной версии.В открывшемся окне настроек ТИИ нам необходимо выбрать параметры, которые затронут индексы и таблицы итогов. Отметьте следующие пункты:
В настройках действий при наличии ссылок на несуществующие объекты выберите Создавать объекты, а при частичной потере данных — Удалять объекты. Запустите процесс.
Учтите, что процесс пересчета итогов в больших базах может занимать продолжительное время (до нескольких часов). В процессе тестирования система найдет поврежденные записи в регистрах бухгалтерии, заменит NULL на корректные значения и заново соберет таблицу итогов, опираясь на неповрежденные проводки.
Если полное тестирование базы занимает слишком много времени, можно попытаться пересчитать итоги локально через режим 1С:Предприятие. Посмотрим, как это сделать:
Примечание: Практика показывает, что в случае тяжелых повреждений от бага 8.3.21.1622 локальное управление итогами может не сработать с первого раза, и системе требуется именно жесткая реиндексация и пересчет через Конфигуратор (ТИИ).
Проанализируем результат. После завершения процедуры ТИИ на стабильной версии платформы, запустите систему в пользовательском режиме и сформируйте ОСВ. Миллиарды должны полностью исчезнуть, а сальдо на начало и конец периода — выровняться в соответствии с реальными первичными документами.