Почему в 1С Оборотно-сальдовая ведомость показывает разные данные у разных пользователей и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Ситуация, когда один и тот же отчет (например, Оборотно-сальдовая ведомость) выдает разные цифры у двух сотрудников, работающих в одной базе, — это классический «кошмар» системного администратора и бухгалтера. Кажется, что база «сломалась», но на самом деле проблема чаще всего кроется в механизмах кэширования платформы 1С:Предприятие 8.3. В этой статье мы подробно разберем, почему возникают такие расхождения, как правильно чистить кэш и какие настройки сервера помогут избежать этой проблемы в будущем.

Разберем природу кэша в 1С

Для начала проанализируем, что представляет собой кэш. Платформа 1С использует кэширование для ускорения работы: вместо того чтобы каждый раз запрашивать структуру конфигурации, формы и настройки с сервера, программа сохраняет их локально на компьютере пользователя. Однако иногда этот механизм дает сбой. Данные в информационной базе (SQL) уже обновились, а локальный кэш пользователя продолжает хранить ссылки на старые структуры или промежуточные итоги.

Рассмотрим основные виды кэша, которые могут влиять на корректность ОСВ:

Выясним причину: почему данные «разъезжаются»?

Проанализируем ситуацию, описанную в теме. Пользователи работают в 1С:Комплексная автоматизация на платформе 8.3.21.1775 через RDP. Проблема исчезает после чистки кэша, но возвращается через несколько недель. Выделим три главные причины:

1. Динамическое обновление («Демоническое»)

Это самая частая причина повреждения кэша. Когда администратор вносит изменения в конфигурацию и нажимает «Обновить конфигурацию базы данных», игнорируя предупреждение о работающих пользователях, 1С создает новую версию структуры в таблице Config. При этом у активных пользователей в памяти остается старая версия. Возникает конфликт версий, который приводит к фантомным данным в отчетах.

2. Особенности платформы 8.3.21

Версии платформы ветки 8.3.21 имеют специфические оптимизации работы с временными таблицами. В некоторых случаях, если сеанс пользователя длится слишком долго, внутренние механизмы платформы некорректно пересчитывают итоги «на лету», используя старые кэшированные значения из рабочих процессов сервера.

3. Накопление ошибок в rphost

Серверный процесс rphost также имеет свой кэш. Если рабочие процессы не перезапускаются неделями, в них накапливаются утечки памяти и ошибки кэширования сеансовых данных. Это объясняет, почему утром проблема может исчезнуть «сама собой» — вероятно, сработал регламентный перезапуск службы 1С.

Как правильно очистить кэш: пошаговая инструкция

Если мы столкнулись с тем, что ОСВ врет, выполним следующие действия по очистке пользовательского кэша. Разберем ручной и автоматизированный способы.

Способ 1: Удаление папок вручную

Нам необходимо очистить содержимое двух каталогов на компьютере (или RDP-сервере), где запущен клиент 1С:

  1. %LocalAppData%\1C\1Cv8
  2. %AppData%\1C\1Cv8

Важный нюанс: не удаляйте файл ibases.v8i, так как в нем хранится список ваших баз. Удалять нужно только папки с длинными буквенно-цифровыми именами (GUID), например: 21294827-6f8d-4f1b-....

Способ 2: Параметр запуска ClearCache

Посмотрим на более изящный метод. В настройках конкретной информационной базы в списке баз можно добавить параметр запуска:

/ClearCache

Этот параметр заставляет систему игнорировать кэш запросов при старте. Это помогает именно в тех случаях, когда «плывут» цифры в отчетах, но при этом не удаляет весь интерфейсный кэш, что позволяет программе запускаться быстрее, чем при полной очистке.

Способ 3: Автоматизация через PowerShell (для RDP)

Для системных администраторов, работающих с терминальными серверами, лучше всего использовать скрипт, который будет очищать кэш при входе пользователя. Рассмотрим пример логики такого скрипта:


$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С:Комплексная автоматизация сбиты итоги, разные пользователи могут видеть разные результаты. Проанализируем состояние итогов через меню:

Администрирование -> Обслуживание -> Регламентные операции -> Управление итогами и агрегатами

Убедитесь, что итоги рассчитаны по текущую дату. В случае сомнений выполните операцию «Пересчет итогов» для регистра бухгалтерии. Это гарантирует, что база данных выдает корректные агрегированные значения.

Подведем итоги

Мы выяснили, что расхождение данных в ОСВ — это комплексная проблема. Для её решения мы рекомендуем:

  1. Полностью отказаться от динамического обновления конфигурации в рабочее время.
  2. Настроить автоматическую очистку кэша через скрипты или параметры запуска.
  3. Установить строгий регламент перезапуска рабочих процессов rphost на сервере.
  4. Регулярно проверять и пересчитывать итоги регистров.

Соблюдение этих правил позволит вам и вашим пользователям всегда видеть актуальные и, главное, одинаковые цифры в отчетах.

← На главную