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

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

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

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

Выясняем истинную причину: коварное динамическое обновление

Описанная ситуация — классический пример сбоя системы после так называемого динамического обновления (которое в профессиональной среде разработчиков часто называют «демоническим»).

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

В результате возникает конфликт:

  1. Администратор, который инициировал обновление конфигурации базы данных и перезапустил свой сеанс, работает с новой, актуальной версией метаданных. У него все функции выполняются корректно.
  2. Обычные пользователи продолжают использовать старые схемы данных, сохраненные в их локальных кэш-файлах на жестком диске.
  3. При попытке провести документ, обратиться к новому реквизиту или записать движение по новому регистру платформа пытается сопоставить новые физические таблицы СУБД со старыми локальными схемами кэша. Происходит сбой адресации метаданных, и система выдает критическую ошибку.

Единственный надежный способ вернуть систему в работоспособное состояние для всех пользователей — это полная очистка кэша метаданных. Рассмотрим, как это сделать правильно.

Способ 1. Переподключение базы данных в стартере 1С (Метод для пользователей)

Это самый простой и доступный способ, который под силу выполнить любому пользователю. При удалении информационной базы из списка запуска и ее повторном добавлении платформа 1С генерирует для нее новый уникальный идентификатор (GUID). В результате папка со старым забагованным кэшем просто перестает использоваться, а для базы создается абсолютно чистый кэш-каталог.

Рассмотрим этот процесс по шагам:

  1. Откройте стартер «1С:Предприятие».
  2. Выберите проблемную базу в списке и нажмите кнопку «Изменить».
  3. Скопируйте или запомните путь к информационной базе (для файловой версии это путь к папке, для клиент-серверной — имя сервера и имя базы данных).
  4. Закройте окно редактирования, выберите базу в списке и нажмите кнопку «Удалить».
  5. Нажмите кнопку «Добавить», выберите пункт «Добавление в список существующей информационной базы» и укажите сохраненные ранее параметры подключения.

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

Способ 2. Использование параметра запуска /ClearCache

Если мы хотим очистить кэш более элегантно и без удаления базы из списка, можно воспользоваться встроенным ключом запуска платформы. Параметр /ClearCache указывает системе очистить кэш метаданных (но не удаляет пользовательские настройки окон).

Разберем, как его настроить:

  1. В окне запуска 1С выделите нужную базу и нажмите кнопку «Изменить».
  2. Нажимайте кнопку «Далее», пока не дойдете до последнего экрана настроек.
  3. В поле «Дополнительные параметры запуска» введите команду /ClearCache (обязательно с косой чертой).
  4. Нажмите кнопку «Готово» и запустите базу.

После успешного запуска и проведения документов данный параметр рекомендуется убрать из настроек, так как постоянное использование ключа /ClearCache может незначительно замедлить время запуска программы из-за регулярного перестроения таблиц локального кэша.

Способ 3. Ручное удаление папок кэша на компьютере

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

Локальный кэш каждого пользователя хранится в двух скрытых системных директориях:

  1. C:\Users\<Имя_Пользователя>\AppData\Local\1C\1Cv8
  2. C:\Users\<Имя_Пользователя>\AppData\Roaming\1C\1Cv8

Внутри этих директорий располагаются папки с длинными именами из букв и цифр (например, 8a7e584f-e1c9-4672-87ad-d34e6f47702a). Внутри них находятся рабочие кэш-файлы конфигурации, такие как Config, ConfigSave, DBNameCache и SICache.

Для очистки кэша выполните следующие действия:

  1. Полностью закройте программу «1С:Предприятие» у данного пользователя.
  2. Перейдите по указанным выше путям (предварительно включив отображение скрытых папок в панели управления Windows).
  3. Удалите все папки с длинными буквенно-цифровыми GUID-именами. Обратите внимание, что файл ibases.v8i (хранящий список баз) удалять не нужно.

Способ 4. Автоматизация очистки кэша на RDP-сервере (для системных администраторов)

В условиях работы через терминальный сервер (RDP) ручная очистка кэша у каждого пользователя превращается в трудоемкую рутину. Для решения этой задачи системные администраторы используют специальные скрипты автоматизации.

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


@echo off
taskkill /f /im 1cv8.exe
taskkill /f /im 1cv8c.exe
echo Очистка временных файлов 1С у всех пользователей...
for /d %%i in ("C:\Users\*") do (
    if exist "%%i\AppData\Local\1C\1Cv8" (
        for /d %%j in ("%%i\AppData\Local\1C\1Cv8\*") do (
            rd /s /q "%%j"
        )
    )
    if exist "%%i\AppData\Roaming\1C\1Cv8" (
        for /d %%j in ("%%i\AppData\Roaming\1C\1Cv8\*") do (
            if not "%%~nxj"=="ibases.v8i" (
                rd /s /q "%%j"
            )
        )
    )
)
echo Очистка кэша успешно выполнена!
pause

Способ 5. Очистка серверного кэша 1С:Предприятие

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

Для его принудительного сброса выполните следующие шаги:

  1. Остановите службу сервера 1С (в диспетчере служб Windows найдите 1C:Enterprise 8.3 Server Agent и нажмите «Остановить»).
  2. Перейдите в каталог хранения данных сервера. По умолчанию это папка C:\Program Files\1cv8\srvinfo.
  3. Найдите каталог вашего кластера (например, reg_1541). Внутри него будут находиться папки баз данных с их внутренними идентификаторами.
  4. Удалите временные файлы кэша конфигураций (обычно это вложенные папки с временными сессиями), не затрагивая файлы настроек самого кластера (такие как 1CV8Reg.lst).
  5. Запустите службу сервера 1С заново.

Как предотвратить появление этой проблемы в будущем?

Чтобы избежать подобных аварийных ситуаций и минимизировать простои пользователей, рекомендуем придерживаться простых правил администрирования:

← На главную