Проблема некорректной работы кэша в «1С:Предприятии» знакома каждому техническому специалисту. Она проявляется по-разному: у пользователей могут перестать приходить системные сообщения, формы отображаются «криво», возникают странные ошибки при выполнении кода, который на других компьютерах работает идеально. В этой статье мы разберем детально, как решить задачу массовой очистки кэша, даже если у вас нет прав администратора на сервере.
Прежде чем приступать к активным действиям, проанализируем ситуацию. Кэш 1С — это локальные файлы на компьютере пользователя, в которых платформа сохраняет метаданные конфигурации, формы, настройки интерфейса и другие временные данные. Это нужно для ускорения работы, чтобы не скачивать всю конфигурацию с сервера при каждом запуске.
Однако при обновлении конфигурации или сбоях в сети данные в кэше могут рассинхронизироваться с реальным состоянием базы. В результате пользователь видит устаревшую или поврежденную информацию. В случае, описанном автором темы, именно кэш блокировал доставку оповещений внутри системы. Рассмотрим способы исправления ситуации по шагам.
Это самый простой и доступный метод, который не требует прав администратора сервера или специальных навыков программирования. Разберем, как это работает:
Что происходит внутри: Платформа 1С привязывает папку кэша к уникальному идентификатору (GUID) записи в списке баз. Когда мы удаляем запись и создаем новую, создается новый GUID, и 1С начинает использовать абсолютно чистую, новую директорию для кэша. Старый кэш остается «мусором» на диске, но он больше не влияет на работу. Это «дешево и сердито», но эффективно, если пользователей немного.
Если нам нужно решение чуть более автоматизированное, проанализируем возможности ключей запуска. Существует специальный параметр /ClearCache. Рассмотрим подробнее его применение:
В дополнительных параметрах запуска информационной базы (кнопка «Изменить» — далее — далее) можно прописать:
/ClearCache
Однако стоит учитывать важный нюанс: этот ключ очищает далеко не все. Он сбрасывает только кэш запросов к серверу и кэш метаданных форм. В некоторых случаях этого достаточно, чтобы сообщения начали приходить, но если проблема глубже — в файлах конфигурации — этот метод может не помочь. Кроме того, этот ключ замедляет каждый запуск программы, так как часть данных перекачивается заново.
Если мы хотим решить проблему для всех пользователей сразу, не обходя каждый компьютер, мы можем создать внешнюю обработку. Проанализируем логику ее работы. Нам нужно программно удалить папки, находящиеся по путям:
%AppData%\1C\1cv8%LocalAppData%\1C\1cv8Внутри этих директорий находятся папки с именами типа eb721342-a63b-4654-972a-609804c4054a. Это и есть кэш. Посмотрим на пример кода, который можно использовать в обработке для генерации bat-файла, очищающего кэш при перезапуске:
ТекстСкрипта = "
|@echo off
|taskkill /f /im 1cv8.exe
|taskkill /f /im 1cv8c.exe
|timeout /t 3
|del /q /s /f ""%LocalAppData%\1C\1cv8\*.*""
|for /d %%i in (""%LocalAppData%\1C\1cv8\????????-????-????-????-????????????"") do rd /s /q ""%%i""
|start """" ""C:\Program Files\1cv8\common\1cestart.exe""
|";
Этот скрипт завершает работу 1С, удаляет папки с GUID-именами и снова запускает программу. Такую обработку можно разослать пользователям или настроить ее запуск при определенных условиях в коде конфигурации (например, при критической ошибке).
Рассмотрим более продвинутый метод, который часто используют системные администраторы. Список баз всех пользователей обычно хранится в файле ibases.v8i. Если вы измените параметр ID у базы в этом файле, 1С воспримет ее как совершенно новую.
Посмотрим на пример структуры файла:
[Название_Вашей_Базы]
Connect=Srvr="ServerName";Ref="BaseName";
ID=12345678-1234-1234-1234-1234567890ab
...
Если изменить хотя бы один символ в строке ID, при следующем входе у всех пользователей создастся новый кэш. Это отличный способ «массового поражения» проблемы, но он требует доступа к общему файлу со списком баз, если он используется в вашей организации.
Если в компании используется стороннее ПО для управления 1С, например «Обновлятор 1С», то задача упрощается в разы. В таких утилитах функция «Очистить кэш у всех» встроена штатно. Рассмотрим, как это работает через административную консоль 1С:
Существует утилита администрирования (расширенная консоль), которая позволяет управлять сеансами. Хотя сама консоль напрямую не чистит файлы на дисках пользователей, она позволяет выполнить «Выгрузку параметров пользователя», что иногда сбрасывает настройки интерфейса, хранящиеся в базе, которые тоже могут быть причиной «глюков», ошибочно принимаемых за проблемы кэша.
Чтобы сообщения в 1С всегда доходили до адресатов, а кэш не «протухал», рекомендуем следовать правилам:
C:\Users\*.Подводя итог, отметим: даже при отсутствии прав администратора на сервере, у программиста 1С есть достаточно инструментов для решения проблемы. Самый быстрый и безопасный для новичка — это переподключение базы в списке, а для профессионала — автоматизированный скрипт очистки или манипуляции с файлом .v8i.