Ситуация, когда один и тот же отчет (например, Оборотно-сальдовая ведомость) выдает разные цифры у двух сотрудников, работающих в одной базе, — это классический «кошмар» системного администратора и бухгалтера. Кажется, что база «сломалась», но на самом деле проблема чаще всего кроется в механизмах кэширования платформы 1С:Предприятие 8.3. В этой статье мы подробно разберем, почему возникают такие расхождения, как правильно чистить кэш и какие настройки сервера помогут избежать этой проблемы в будущем.
Для начала проанализируем, что представляет собой кэш. Платформа 1С использует кэширование для ускорения работы: вместо того чтобы каждый раз запрашивать структуру конфигурации, формы и настройки с сервера, программа сохраняет их локально на компьютере пользователя. Однако иногда этот механизм дает сбой. Данные в информационной базе (SQL) уже обновились, а локальный кэш пользователя продолжает хранить ссылки на старые структуры или промежуточные итоги.
Рассмотрим основные виды кэша, которые могут влиять на корректность ОСВ:
Проанализируем ситуацию, описанную в теме. Пользователи работают в 1С:Комплексная автоматизация на платформе 8.3.21.1775 через RDP. Проблема исчезает после чистки кэша, но возвращается через несколько недель. Выделим три главные причины:
1. Динамическое обновление («Демоническое»)
Это самая частая причина повреждения кэша. Когда администратор вносит изменения в конфигурацию и нажимает «Обновить конфигурацию базы данных», игнорируя предупреждение о работающих пользователях, 1С создает новую версию структуры в таблице Config. При этом у активных пользователей в памяти остается старая версия. Возникает конфликт версий, который приводит к фантомным данным в отчетах.
2. Особенности платформы 8.3.21
Версии платформы ветки 8.3.21 имеют специфические оптимизации работы с временными таблицами. В некоторых случаях, если сеанс пользователя длится слишком долго, внутренние механизмы платформы некорректно пересчитывают итоги «на лету», используя старые кэшированные значения из рабочих процессов сервера.
3. Накопление ошибок в rphost
Серверный процесс rphost также имеет свой кэш. Если рабочие процессы не перезапускаются неделями, в них накапливаются утечки памяти и ошибки кэширования сеансовых данных. Это объясняет, почему утром проблема может исчезнуть «сама собой» — вероятно, сработал регламентный перезапуск службы 1С.
Если мы столкнулись с тем, что ОСВ врет, выполним следующие действия по очистке пользовательского кэша. Разберем ручной и автоматизированный способы.
Нам необходимо очистить содержимое двух каталогов на компьютере (или RDP-сервере), где запущен клиент 1С:
%LocalAppData%\1C\1Cv8%AppData%\1C\1Cv8Важный нюанс: не удаляйте файл ibases.v8i, так как в нем хранится список ваших баз. Удалять нужно только папки с длинными буквенно-цифровыми именами (GUID), например: 21294827-6f8d-4f1b-....
Посмотрим на более изящный метод. В настройках конкретной информационной базы в списке баз можно добавить параметр запуска:
/ClearCache
Этот параметр заставляет систему игнорировать кэш запросов при старте. Это помогает именно в тех случаях, когда «плывут» цифры в отчетах, но при этом не удаляет весь интерфейсный кэш, что позволяет программе запускаться быстрее, чем при полной очистке.
Для системных администраторов, работающих с терминальными серверами, лучше всего использовать скрипт, который будет очищать кэш при входе пользователя. Рассмотрим пример логики такого скрипта:
$1C_Path_Local = "$env:LOCALAPPDATA\1C\1Cv8\"
$1C_Path_Roaming = "$env:APPDATA\1C\1Cv8\"
Get-ChildItem $1C_Path_Local | Where-Object { $_.PSIsContainer -and $_.Name -match "^[a-f0-9]{8}-" } | Remove-Item -Recurse -Force
Get-ChildItem $1C_Path_Roaming | Where-Object { $_.PSIsContainer -and $_.Name -match "^[a-f0-9]{8}-" } | Remove-Item -Recurse -Force
Чтобы проблема не повторялась каждые три недели, необходимо настроить сервер 1С. Рассмотрим, какие параметры в консоли администрирования кластера серверов 1С влияют на стабильность данных.
Рекомендуем установить регламентный перезапуск процессов rphost. Это позволит сбрасывать серверный кэш и освобождать память. Выполним следующие настройки в свойствах рабочего сервера:
Иногда проблема кроется не в кэше, а в самих данных. Если в базе 1С:Комплексная автоматизация сбиты итоги, разные пользователи могут видеть разные результаты. Проанализируем состояние итогов через меню:
Администрирование -> Обслуживание -> Регламентные операции -> Управление итогами и агрегатами
Убедитесь, что итоги рассчитаны по текущую дату. В случае сомнений выполните операцию «Пересчет итогов» для регистра бухгалтерии. Это гарантирует, что база данных выдает корректные агрегированные значения.
Мы выяснили, что расхождение данных в ОСВ — это комплексная проблема. Для её решения мы рекомендуем:
rphost на сервере.Соблюдение этих правил позволит вам и вашим пользователям всегда видеть актуальные и, главное, одинаковые цифры в отчетах.