В статье рассматривается, что такое кэш, зачем он нужен, и в каких случаях его приходится очищать. Также предлагается три рабочих способа как очистить кэш.
Содержание
Что такое кэш 1С и зачем он нужен?
Простыми словами – кэш это служебные файлы и папки, которые содержат данные, к которым наиболее часто обращается платформа в процессе работы. Это необходимо для повышения быстродействия программы, чтобы не извлекать одни и те же данные из базы и уменьшить количество обращений к СУБД.
Платформа кэширует пользовательские настройки, настройки торгового оборудования, файлы конфигурации, и другие часто используемые программой данные.
Кэш 1С делится на две части – клиентский и серверный. В случае, если используется файловая база данных, сервер, а соответственно и серверный кэш, будет отсутствовать.
Ложка меда в бочке дегтя
Механизм кэширования не всегда работает корректно. При динамических обновлениях, аварийных завершениях работы, сбоях работы сети, кэш может повреждаться или рассинхронизироваться.
Это может привести к самым разным ошибкам – от достаточно “невинной” – например, на форму добавили кнопку, но она не отображается в пользовательском режиме, так как платформа использует форму из кэша, так и к гораздо более серьезным, таким как “Ошибка формата потока”, “Ошибка разбора XML” и др. В этом случае база с поврежденным кэшем вовсе может не запускаться.
Причем сбой может быть трудно диагностируемым – например, на одном из компьютеров отчет работает с ошибкой, а на остальных – корректно. Или сбой может проявляться под конкретным пользователем ОС на одном и том же компьютере, а под другими учетными записями ошибка не будет воспроизводиться.
Что делать?
В одном из двух извечных вопросов “Кто виноват?” и “Что делать?” мы уже разобрались – случается так, что виноват кэш 1С. Теперь разберемся со вторым вопросом – что со всем этим делать?
Чаще всего выручает очистка этого самого кэша для сбойной базы. И сделать это можно несколькими способами
1. Удаление базы из списка и повторное добавление
С пользовательской точки зрения – это самый простой способ очистить кэш 1С. Достаточно просто удалить базу из списка баз в окне запуска программы, и добавить ее заново. В этом случае создастся новый идентификатор базы, а следовательно, новые папки и файлы кэша.
Недостаток этого метода проявляется со временем – старые папки и файлы никуда не деваются, а продолжают занимать место на диске, но уже не привязанные к базе. По сути это файловый мусор, который со временем будет накапливаться, и рано или поздно придется его удалять. А в этом как раз поможет следующий метод. э
2. Удаление файлов и папок кэша 1С
Следующий способ очистки кэша в 1С 8. Предварительно нужно закрыть программу 1С. Далее в проводнике или в файловом менеджере следует открыть рабочий каталог пользователя:
- в операционных системах начиная с Windows 7 и выше –C:\Users\<ИмяПользователя>\AppData\Roaming\1C и C:\Users\<ИмяПользователя>\AppData\Local\1C в папках, начинающихся с «1cv8»
- В Windows XP, в каталоге пользователя по адресу Local Settings\Application Data\1C\
Следует учесть, что по умолчанию эти папки могут быть скрыты, и необходимо включить отображение скрытых папок.
В папке “1cv8” вы увидите папки с нечитаемыми названиями – 32-битными идентификаторами баз. Каждой базе, которая была когда-либо прописана у пользователя в списке баз, будет соответствовать отдельная папка кэша. Т.е. даже если у вас в списке баз всего одна база, но ранее вы неоднократно добавляли / удаляли ее, то каталогов кэша 1С может быть много (см. первый пункт).
Если вы пользуетесь несколькими базами, и кэш нужно удалить только у одной из них – вам может помочь отображение папки в виде таблицы – так вы сможете по времени изменения папки определить нужный каталог.
Но в целом эти каталоги можно безболезненно удалять, вреда не будет.
3. Запуск с параметром "/ClearCache"
Это тоже достаточно простой метод очистки кэша 1С. В списке баз в окне запуска 1С выбираем базу, в которой хотим очистить кэш. Жмем кнопку “Изменить”, жмем “Далее”, и в последнем окне мастера редактирования информационной базы в поле “Дополнительные параметры запуска” пишем параметр “/ClearCache”.
Минус у этого способа тоже есть – кэш будет очищаться, и каждый раз создаваться заново при каждом запуске. А это может привести к довольно ощутимым тормозам, если база достаточно тяжелая.
Кроме того, этот способ работает только при запуске тонкого клиента.
Немного автоматизации
Чтобы не переходить по папкам и не удалять их вручную, можно написать скрипт и сохранить в .bat файле
Самый простой и грубый способ “грохнуть кэш 1С” – всего четыре строчки
del “%AppData%\1C\1cv8\*.*” /S /Q
del “%LocalAppData%\1C\1cv8\*.*” /S /Q
rmdir “%AppData%\1C\1cv8” /S /Q
rmdir “%LocalAppData%\1C\1cv8” /S /Q
Есть более “точечные” способы очистки кэша, в интернете можно отыскать множество скриптов, которые удаляют кэш выборочно, оставляя настройки пользователей.
Серверный кэш 1С
В случае, если используется клиент-серверный вариант работы, очистка кэша на клиентском компьютере не всегда устраняет ошибку. В этом случае можно попробовать остановить службу сервера 1С и вручную очистить ряд файлов серверного кэша.
Серверный кэш 1С находится на центральном сервере кластера в папке
<рабочий каталог кластера> / <идентификатор информационной базы> / reg_1541/SNCCNTX
Удалять в этой папке можно далеко не все, поэтому будьте внимательны. Ниже – список файлов, которые можно удалять безболезненно:
- 1CV8Reg.lst — реестр кластера (в нем хранятся список зарегистрированных ИБ, рабочие сервера и процессы, соответствие кластера и доп. менеджера, список администраторов.)
- srvribrg.lst — список кластеров (зарегистрированные кластеры и администраторы центрального сервера)
- 1cv8ftxt — данные полнотекстового поиска. Они лежат на центральном сервере 1с: рабочий каталог кластера-идентификатор информационной базы
- 1Cv8Log — журнал регистрации базы, файлы *.lgp и *.lgf
На этом все. Удачи в работе!
Пингбэк: Переустановка платформы 1С. Развенчиваем мифы 🙂 - Alexcode