Как правильно очистить кэш 1С на Linux, сохранив пользовательские настройки?

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

При работе с платформой 1С на операционных системах семейства Linux администраторы часто сталкиваются с проблемой некорректного поведения клиента после динамических обновлений конфигурации. Особенно остро это проявляется в устаревших решениях, таких как Управление торговлей 10.3, работающих в режиме совместимости 8.2.13. Стандартный параметр запуска /clearcache в таких случаях часто оказывается бесполезным, так как он предназначен для очистки кэша XDTO и запросов к веб-сервисам, но не затрагивает локальный кэш метаданных конфигурации.

В этой статье мы разберем, как грамотно организовать очистку кэша на Linux-клиентах, автоматизировать этот процесс и при этом не сбросить пользовательские настройки (позиции окон, историю выбора и настройки отчетов).

Почему возникают проблемы с кэшем

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

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

Автоматизация очистки через Bash-скрипт

Выясним, как можно автоматизировать процесс, очищая только проблемные области кэша. На Linux-клиентах файлы кэша обычно располагаются в директории ~/.1cv8/1C/1cv8/. Внутри находятся папки с уникальными идентификаторами информационных баз (GUID).

Проанализируем предложенный способ решения проблемы с помощью скрипта. Мы можем встроить проверку операционной системы прямо в код 1С и вызывать внешний Bash-скрипт для очистки папки Config.

Пример кода на стороне 1С для вызова скрипта:


Инфо = Новый СистемнаяИнформация();
Если Инфо.ТипПлатформы = ТипПлатформы.Linux_x86 ИЛИ 
     Инфо.ТипПлатформы = ТипПлатформы.Linux_x86_64 Тогда
    // Путь к скрипту на сервере или локальной машине
    ЗапуститьПриложение("/bin/bash /mnt/1c/scripts/clear_cache.sh", , Истина);
КонецЕсли;

Теперь разберем содержимое самого Bash-скрипта clear_cache.sh. Его задача — найти папки кэша и удалить из них только содержимое подкаталога Config, не трогая файлы настроек в корне папки базы.


#!/bin/bash
# Скрипт очистки файлов конфигурации в кэше 1С для Linux
# Перебираем папки с GUID-именами в директории кэша
for FILES in $(ls ~/.1cv8/1C/1cv8/ -1UH | grep ........-....-....-....-............)
do
    # Очищаем только содержимое папки Config
    if [ -d "~/.1cv8/1C/1cv8/$FILES/Config" ]; then
        rm -Rf ~/.1cv8/1C/1cv8/$FILES/Config/*
    fi
    # Рекомендуется также очищать папку dbms для устранения проблем с БД
    if [ -d "~/.1cv8/1C/1cv8/$FILES/dbms" ]; then
        rm -Rf ~/.1cv8/1C/1cv8/$FILES/dbms/*
    fi
done

Важные нюансы при очистке в Linux

Посмотрим на технические особенности файловой системы Linux, которые могут помешать очистке:

  1. Удержание дескрипторов: Если процесс 1С (1cv8) не завершен полностью или завис, команда rm -rf удалит имя файла, но физически данные останутся на диске до закрытия процесса. Перед чисткой обязательно нужно завершать работу всех клиентов. Можно использовать команду killall -9 1cv8.
  2. Местоположение кэша: В зависимости от версии платформы и способа установки, кэш может находиться не только в ~/.1cv8, но и в ~/.config/1C/1cv8. Проверьте обе директории.
  3. Сохранение файлов .pfl: Настройки пользователя на Linux хранятся в файлах с расширением .pfl. При выполнении очистки вручную или скриптом старайтесь не удалять файлы в корневой папке GUID, так как именно там лежат настройки связи и персональные предпочтения.

Альтернативный метод: использование tmpfs

Проанализируем более радикальный, но эффективный метод — монтирование папки кэша в оперативную память (tmpfs). Это дает два преимущества:

Для этого в файле /etc/fstab можно прописать монтирование директории ~/.1cv8/1C/1cv8/ в tmpfs. Однако помните, что в этом случае пользовательские настройки будут сбрасываться после каждого выключения ПК. Если их нужно сохранять, этот метод потребует дополнительных скриптов синхронизации .pfl файлов при загрузке и выключении системы.

Рекомендации по обновлению

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

← На главную