В процессе работы с платформой 1С:Предприятие 8.3 пользователи и администраторы часто сталкиваются с ситуациями, когда программа начинает вести себя некорректно: не отображаются новые реквизиты на формах, возникают ошибки при открытии справочников или «вылетают» неожиданные сообщения о несоответствии типов данных. В большинстве случаев причиной таких проблем является некорректно работающий локальный кэш конфигурации. Мы разберем, как эффективно очистить кэш различными способами, чтобы восстановить стабильную работу системы.
Прежде чем переходить к решению, выясним причину возникновения проблемы. Кэш — это временные файлы, которые платформа сохраняет на локальном компьютере пользователя для ускорения работы. В них хранятся метаданные конфигурации, формы, модули и элементы интерфейса. При обновлении конфигурации или динамическом обновлении («демоническом», как его называют в профессиональной среде) файлы кэша на стороне клиента могут не успеть обновиться или записаться с ошибками. В результате возникает рассинхронизация между данными на сервере и локальными копиями на клиенте.
Рассмотрим подробнее основные методы очистки, начиная от самых простых и заканчивая автоматизированными скриптами.
Самый простой и «безопасный» способ очистки кэша клиентского приложения — использование встроенного параметра запуска. Проанализируем, как это настроить в окне выбора информационных баз.
/ClearCache.Важно понимать, что этот метод очищает только кэш запросов системы к серверу, но не удаляет физические папки с метаданными. Для полной очистки, особенно после серьезных сбоев, этого метода может быть недостаточно.
Разберем ситуацию, когда параметр запуска не помог. В этом случае нам потребуется физически удалить папки, в которых 1С хранит временные данные. Посмотрим, где они располагаются. Обычно это две директории в профиле пользователя Windows:
%AppData%\1C\1cv8%LocalAppData%\1C\1cv8Внутри этих папок находятся подпапки с длинными буквенно-цифровыми названиями (например, 5b73d875-9e60-4787-827d-08b5d3c80a2b). Это и есть кэш конкретных информационных баз. Для полной очистки необходимо закрыть все сеансы 1С и удалить содержимое этих папок. Внимание: не удаляйте файл ibases.v8i, так как в нем хранится список ваших информационных баз.
Если в организации много пользователей, ручная очистка становится трудоемкой задачей. Мы можем создать простой скрипт, который сделает это за нас. Рассмотрим пример кода для .bat файла, который можно разослать пользователям или запускать через групповые политики:
@echo off
taskkill /f /im 1cv8.exe
taskkill /f /im 1cv8c.exe
set "cacheDir1=%AppData%\1C\1cv8"
set "cacheDir2=%LocalAppData%\1C\1cv8"
for /d %%i in ("%cacheDir1%\*") do (
if exist "%%i\config" rd /s /q "%%i"
)
for /d %%i in ("%cacheDir2%\*") do (
if exist "%%i\config" rd /s /q "%%i"
)
echo Кэш успешно очищен!
pause
Разберем, что делает этот скрипт: сначала он принудительно завершает процессы 1С, затем проходит циклом по папкам кэша и удаляет только те, которые содержат папку config, что позволяет избежать удаления пользовательских настроек (например, v8srvr.lst).
Иногда требуется предложить пользователю очистить кэш прямо из интерфейса программы. Хотя сама платформа не предоставляет метода ОчиститьКэш(), мы можем реализовать механизм удаления старых данных при следующем запуске или использовать запуск нового процесса с параметром.
Рассмотрим пример кода, который формирует командную строку для перезапуска текущего сеанса с полной очисткой:
Процедура ПерезапуститьСОчисткойКэша()
ИмяФайла = "1cv8c.exe";
КаталогПрограммы = КаталогПрограммы() + ИмяФайла;
ПараметрыЗапуска = " /IBName """ + СтрокаСоединенияИнформационнойБазы() + """ /ClearCache";
// Запускаем новый процесс
ЗапуститьПриложение(КаталогПрограммы + ПараметрыЗапуска);
// Завершаем текущий сеанс
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры
В данном примере мы используем функцию ЗапуститьПриложение, чтобы инициировать новый сеанс, передав ему имя текущей базы через /IBName и флаг /ClearCache. Это элегантный способ помочь пользователю без привлечения системного администратора.
Выясним еще один «народный» способ, который часто рекомендуют на форумах. При удалении информационной базы из списка и её повторном добавлении, платформа автоматически создает новую папку для кэша с новым идентификатором. Старая папка при этом остается на диске, но перестает использоваться. Это помогает быстро решить проблему «здесь и сейчас», однако со временем может привести к захламлению диска временными файлами.
Для того чтобы минимизировать возникновение ошибок кэширования, проанализируем следующие советы:
Подводя итог, можно сказать, что очистка кэша — это стандартная процедура обслуживания 1С:Предприятия. Понимание механизмов хранения временных файлов позволяет программисту и администратору быстро диагностировать причины странного поведения интерфейса и оперативно их устранять, используя /ClearCache, скрипты автоматизации или программные методы перезапуска сеанса.