При работе в программном продукте «1С:Бухгалтерия предприятия» (особенно редакции КОРП 3.0 на платформе 8.3) пользователи иногда сталкиваются с аномальным behavior отчета «Книга продаж»: при каждом повторном нажатии на кнопку «Сформировать» в отчет попадает случайное количество строк. Например, при первом запуске формируется 450 строк, при повторном — 500, затем снова 450, даже если период давно закрыт и никакие документы в базе не проводятся.
Разберем подробно причины возникновения этой проблемы и рассмотрим пошаговый алгоритм её локализации и устранения.
Прежде чем переходить к техническим процедурам обслуживания базы данных, выполним диагностику и выясним, какие именно записи периодически выпадают из отчета.
НДС Продажи (или НДС Записи Книги Продаж) и проверим документы-регистраторы для «выпадающих» строк. Проверим корректность заполнения реквизитов и дат проведения.ЖурналРегистрации, чтобы убедиться, что над документами не выполняются фоновые регламентные задания или автоматические корректировки.Частой причиной подобного поведения является рассинхронизация таблиц итогов и таблиц движений регистров накопления НДС. В зависимости от структуры запроса система компоновки данных (СКД) может считывать данные из виртуальных таблиц итогов или рассчитывать их из таблиц движений, отдавая разный набор записей.
Выполним процедуру пересчета итогов:
Также пересчет итогов по конкретному регистру можно выполнить программно с помощью метода ПересчитатьИтоги() соответствующего менеджера регистра.
Если база данных работает в клиент-серверном режиме (MS SQL Server или PostgreSQL), причина может крыться в некорректных планах выполнения запросов СУБД due to устаревшей статистики или фрагментации индексов.
Рассмотрим необходимые шаги по обслуживанию СУБД:
UPDATE STATISTICS).tempdb.DBCC FREEPROCCACHE).ragent («1С:Предприятие») или завершим рабочие процессы rphost, чтобы полностью очистить серверный кэш приложений.Если в базе включено ограничение прав доступа на уровне записей (RLS — Record Level Security), сессионные параметры прав могут накладываться на временные таблицы СКД несинхронно.
Проверим эту гипотезу:
В старых релизах платформы ветки 8.3.8 присутствовали зафиксированные ошибки оптимизатора запросов СКД при работе с несколькими наборами данных и виртуальными таблицами. Отсутствие явной сортировки (УПОРЯДОЧИТЬ ПО) во внутренних временных таблицах отчета приводило к тому, что СУБД возвращала строки в произвольном порядке, а СКД по-разному группировала их при повторных запусках.
Для окончательного устранения платформенных ошибок рекомендуем обновить платформу «1С:Предприятие» до актуального стабильного релиза.