В процессе эксплуатации 1С:Бухгалтерия предприятия КОРП (редакция 3.0) пользователи и технические специалисты часто сталкиваются с неприятной ситуацией: после очередного обновления конфигурации или платформы «разлетается» развернутое сальдо. Особенно это заметно на счетах расчетов с персоналом и бюджетом — 68, 69, 70, 73. Проблема проявляется в том, что данные в обычной Оборотно-сальдовой ведомости перестают соответствовать данным в отчете Анализ счета или ОСВ по счету.
В данной статье мы подробно разберем причины возникновения таких расхождений, проанализируем технические нюансы работы платформы 1С v8.3 и сформируем пошаговый план восстановления корректности данных.
Самая распространенная причина, по которой «слетают» остатки — это нарушение целостности таблиц итогов. В системе 1С данные хранятся в двух видах таблиц: таблицы движений (каждая проводка) и таблицы итогов (рассчитанные агрегаты на конец каждого месяца). Отчеты могут обращаться к разным таблицам в зависимости от настроек, что и вызывает визуальное расхождение.
Рассмотрим, как исправить эту ситуацию стандартными средствами:
Проанализируем результат: если после пересчета итогов данные в Оборотно-сальдовой ведомости пришли в норму, значит, проблема носила временный характер и была вызвана прерыванием транзакций при обновлении или динамическом обновлении конфигурации.
Разберем более глубокую техническую проблему. Существует задокументированный баг платформы (например, ошибка 000066639), который проявляется при использовании встроенных обработок поиска и замены значений. Проанализируем ситуацию: при замене ссылок в регистрах бухгалтерии система может некорректно записать значение NULL в измерения (например, в Подразделение или Субконто) вместо положенной пустой ссылки.
Визуально в отчете обе записи будут выглядеть как пустые строки, но для базы данных NULL и ПустаяСсылка — это разные сущности. В результате остатки по ним не «схлопываются», и в развернутом сальдо мы видим две строки: одну с дебетовым остатком, другую с кредитовым.
Как выявить наличие NULL в субконто программно:
Для диагностики можно воспользоваться консолью запросов. Рассмотрим пример запроса для проверки счета 70:
ВЫБРАТЬ
ХозрасчетныйОстатки.Субконто1,
ХозрасчетныйОстатки.Субконто2,
ХозрасчетныйОстатки.СуммаОстаток
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПерсоналомПоОплатеТруда), , ) КАК ХозрасчетныйОстатки
ГДЕ
(ХозрасчетныйОстатки.Субконто1 ЕСТЬ NULL
ИЛИ ХозрасчетныйОстатки.Субконто2 ЕСТЬ NULL)
Если запрос возвращает строки, значит, в базе присутствует «технический мусор». Решением в данном случае будет установка патча EF_00_00290685 или ручная программная замена NULL на правильные пустые ссылки соответствующих типов.
В современных версиях платформы 8.3 расчет итогов часто происходит в фоновом режиме. Выясним причину, почему это может привести к ошибкам. Если в базе установлена дата рассчитанных итогов далеко в будущем (например, 3999 год), а реальные данные в таблицах итогов не соответствуют движениям, отчеты начнут показывать неверные цифры.
Посмотрим на алгоритм исправления через управление итогами:
_AccRegTotals (для SQL-версий).Часто «глюки» с отображением оборотов связаны не с самими данными, а с некорректной работой кеша метаданных на стороне сервера или клиента. При обновлении измененной конфигурации структура таблиц может измениться, но старые индексы или временные таблицы в кеше продолжают использоваться.
Проанализируем шаги по очистке системы:
1C:Enterprise Server, удалите содержимое папки snccntx в каталоге расположения данных сервера./ClearCache.На счетах 68 и 69 используется субконто Виды налогов и платежей в бюджет. При обновлении 1С часто актуализирует этот справочник. Если в вашей измененной конфигурации были созданы дублирующие элементы или нарушена логика предопределенных данных, отчеты могут перестать корректно группировать данные.
Рассмотрим, как проверить этот момент. Сформируйте ОСВ по счету (например, 68.01) с максимальной детализацией по всем субконто. Если вы видите, что сумма «висит» на пустом субконто, которое невозможно выбрать в документе, — это признак того, что в базе нарушена типизация данных в регистре бухгалтерии.
Резюме и рекомендации:
Подводя итог, можно сказать, что решение проблемы всегда следует начинать с Тестирования и исправления (пересчета итогов). Если это помогает лишь временно, необходимо переходить к поиску NULL в измерениях регистра бухгалтерии с помощью консоли запросов и проверке корректности установки патчей от фирмы 1С. Для баз на SQL-сервере также крайне полезно провести операцию REINDEX таблиц итогов, так как физическая деградация индексов может приводить к тому, что итоги «слетают» регулярно после массового изменения данных при обновлении.