Кэш сервера 1С: как очистить кэш и srvinfo безопасно

Дата: 06.10.2026 15:00:00
кэш 1С
сервер 1С
srvinfo
сеансовые данные
администрирование 1С
PowerShell
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

Кэш сервера 1С — это не одна папка. Клиент хранит кэш конфигурации и клиент-серверных вызовов в профиле пользователя Windows, кластер — сеансовые данные в каталоге srvinfo\reg_1541\snccntx…. «Странности после обновления» чаще всего лечатся очисткой кэша клиента, сервер чистят реже и только с остановкой службы. Ниже — что удалять, что трогать нельзя, скрипты для Windows и Linux и код 1С для подготовки к обслуживанию.

Когда очистка кэша помогает, а когда нет

СимптомЧто чиститьПоможет?
После обновления конфигурации у части пользователей старые формы, ошибки при открытии форм, «Ошибка формата потока» при запускеКэш клиента у этих пользователейОбычно да
Та же ошибка у всех сразу, особенно после аварийной остановки сервераСеансовые данные кластера (snccntx) при остановленной службеЧасто да
«Версия хранилища сеансовых данных отличается от версии платформы»snccntx при остановленной службеДа
Диск сервера забит, srvinfo весит десятки гигабайтСначала понять, что растёт: snccntx, журнал регистрации или dumpsЧастично
«Несоответствие версий клиента и сервера 1С:Предприятия»Ничего: поставить клиент версии сервераНет
«Файл базы данных поврежден» в файловой базеНичего: тестирование и исправление, утилита chdbfl.exeНет
1С просто медленно работаетИскать причину: блокировки, запросы, СУБД, память rphostПочти никогда

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

Что лежит на клиенте: %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8

Кэш живёт в профиле Windows, отдельно для каждого пользователя и каждой базы. Имя папки — ID базы из списка баз %APPDATA%\1C\1CEStart\ibases.v8i: строка ID= в разделе с именем базы.

ПутьЧто тамУдалять?
%LOCALAPPDATA%\1C\1cv8\<ID базы>кэш конфигурации (Config, ConfigSave, SICache) и кэш клиент-серверных вызовов (vrs-cache в подпапке пользователя)Да, при закрытой 1С — это и есть кэш
%APPDATA%\1C\1cv8\<ID базы>локальные настройки клиента, файлы *.pflМожно, если не помогла очистка кэша: настройки форм и отчётов хранятся в базе
%APPDATA%\1C\1CEStartсписок баз ibases.v8i и настройки программы запускаНет
%APPDATA%\1C\1cv8\tmpltsшаблоны конфигураций и обновлений, бывают гигабайтыНет, иначе типовую будет нечем обновлять
%APPDATA%\1C\1cv8\ExtCompTвнешние компоненты, установленные в клиентеНет
%LOCALAPPDATA%\1C\1cv8\confпрограммные лицензии, активированные для пользователяНет
%LOCALAPPDATA%\1C\1cv8\appsrvrs.lstсписок серверов в консоли кластераНет
%LOCALAPPDATA%\1C\1cv8\dumpsдампы падений клиентаДа

Папки баз, которые убрали из списка, остаются на диске — их тоже можно удалить.

Очистка кэша 1С на клиенте

Ключ /ClearCache. В окне запуска выделите базу, нажмите «Изменить…» и в поле «Дополнительные параметры запуска» впишите /ClearCache. По справке платформы ключ очищает кэш клиент-серверных вызовов (метаданные форм, модули) и сохранённый индекс поиска по текстам модулей. После проверки ключ уберите, иначе каждый запуск будет начинаться с пустого кэша.

Удаление папки радикальнее: уходит и кэш конфигурации, поэтому первый запуск будет долгим — клиент заново скачает метаданные. Скрипт удаляет только папки с GUID в имени и не трогает лицензии и служебные файлы:

# clear-1c-client-cache.ps1 — очистка кэша 1С на компьютере пользователя. Сначала закройте 1С.
#   .\clear-1c-client-cache.ps1                        кэш всех баз текущего пользователя
#   .\clear-1c-client-cache.ps1 -BaseName "Торговля"   кэш одной базы из списка баз
#   .\clear-1c-client-cache.ps1 -AllUsers              все профили терминального сервера
param(
    [string]$BaseName = '',
    [switch]$AllUsers
)
$guid = '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$'
$homes = if ($AllUsers) { (Get-ChildItem (Split-Path $env:USERPROFILE) -Directory).FullName } else { @($env:USERPROFILE) }

foreach ($userHome in $homes) {
    $cache = Join-Path $userHome 'AppData\Local\1C\1cv8'
    if (-not (Test-Path $cache)) { continue }

    # Папка кэша называется по ID базы — строке ID= в разделе [Имя базы] файла ibases.v8i
    $ids = @()
    if ($BaseName) {
        $list = Join-Path $userHome 'AppData\Roaming\1C\1CEStart\ibases.v8i'
        $section = ''
        foreach ($line in (Get-Content $list -Encoding UTF8 -ErrorAction SilentlyContinue)) {
            if ($line -match '^\[(.+)\]$') { $section = $Matches[1] }
            elseif ($section -eq $BaseName -and $line -match '^ID=(.+)$') { $ids += $Matches[1].Trim() }
        }
    }

    # Только папки с GUID в имени: conf (лицензии), appsrvrs.lst, dumps и logs остаются
    Get-ChildItem $cache -Directory |
        Where-Object { $_.Name -match $guid -and (-not $BaseName -or $ids -contains $_.Name) } |
        ForEach-Object {
            $dir = $_.FullName
            try {
                Remove-Item $dir -Recurse -Force -ErrorAction Stop
                Write-Host "Удалён кэш $dir"
            }
            catch { Write-Warning "Не удалось удалить $dir — у пользователя открыта 1С?" }
        }
}

На терминальном сервере запускайте его с -AllUsers от имени администратора, когда пользователи вышли: кэш лежит в профиле каждого. Если не помогло, удалите и одноимённую папку в %APPDATA%\1C\1cv8.

Кнопка в самой 1С. Команда для пользователей перезапускает клиент с ключом /ClearCache:

// Команда «Перезапустить с очисткой кэша» в форме обработки или общей форме.
// Тонкий и толстый клиент: новый сеанс стартует с ключом /ClearCache.

&НаКлиенте
Процедура ПерезапуститьСОчисткойКэша(Команда)

	Оповещение = Новый ОписаниеОповещения("ПерезапуститьСОчисткойКэшаЗавершение", ЭтотОбъект);
	ПоказатьВопрос(Оповещение, "Программа закроется и сразу запустится снова с очисткой кэша. Продолжить?",
		РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет);

КонецПроцедуры

&НаКлиенте
Процедура ПерезапуститьСОчисткойКэшаЗавершение(Ответ, ДополнительныеПараметры) Экспорт

	Если Ответ <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;
	// Первое Истина — спросить про несохранённые документы, второе — перезапуск.
	// Ключ добавится к параметрам, с которыми запущен текущий сеанс.
	ЗавершитьРаботуСистемы(Истина, Истина, "/ClearCache");

КонецПроцедуры

Каталог srvinfo 1С: что можно удалять

Все файлы сервера 1С лежат в каталоге кластера. На Windows по умолчанию это C:\Program Files\1cv8\srvinfo, а точный путь записан в ключе -d командной строки службы «Агент сервера 1С:Предприятия 8.3 (x86-64)»: свойства службы, поле «Исполняемый файл». На Linux по умолчанию — /home/usr1cv8/.1cv8/1C/1cv8. Внутри — каталог reg_1541, где 1541 — порт главного менеджера кластера. Как устроены служба и порты, разобрано в статье «Установка сервера 1С 8.3».

ЧтоНазначениеУдалять?
1cv8wsrv.lst в корнесписок кластеров центрального сервераНет
reg_1541\1CV8Clst.lst, 1CV8Clsto.lstреестр кластера: базы, параметры подключения к СУБД, рабочие серверы, администраторыНет
reg_1541\<GUID базы>\1Cv8Logжурнал регистрации базыНет
reg_1541\<GUID базы>\1Cv8FTxt, 1Cv8FTxt2индекс полнотекстового поискаНе стоит: индекс придётся строить заново
reg_1541\snccntx<GUID>сеансовые данные: данные форм, временное хранилищеДа, только при остановленной службе
dumps в корнедампы падений rmngr и rphostДа

Папки с GUID в reg_1541 — это базы, а не кэш: в 8.3.27 там лежат журнал и индекс. Чья папка, видно в 1CV8Clst.lst: найдите GUID Блокнотом, сразу за ним идёт имя базы. В том же файле параметры подключения к СУБД — никому его не пересылайте. Служебные каталоги вроде 1Cv8DbDA тоже не трогайте.

Как очистить кэш сервера 1С: порядок действий

Служба одна на все базы кластера: её остановка отключит пользователей всех баз и прервёт фоновые задания. Порядок такой:

  1. Выберите время, когда никто не работает, и предупредите пользователей.
  2. Закройте вход в базы. В типовых на БСП, например в УТ 11.4, это «Администрирование → Обслуживание → Блокировка работы пользователей», в своих конфигурациях — кодом ниже.
  3. Посмотрите, кто ещё в кластере, и завершите сеансы: в консоли кластера «Центральные серверы 1С:Предприятия 8.3 → сервер → Кластеры → кластер → Сеансы» или кодом.
  4. Скопируйте 1cv8wsrv.lst и 1CV8Clst.lst, остановите службу и дождитесь завершения rmngr.exe и rphost.exe.
  5. Перенесите каталоги snccntx* в резервную папку и запустите службу.
  6. Войдите с /UC, проверьте базу и откройте вход. Через пару дней удалите резервную папку.

Блокировка входа. Кто попробует войти, получит «Начало сеанса с информационной базой запрещено.» и ваш текст. Регламентные задания блокировка не останавливает: для них в БСП отдельный флажок «Запретить работу регламентных заданий», в консоли кластера — «Блокировка регламентных заданий включена» (как управлять заданиями из кода — в статье «Регламентное задание 1С»).

// Модуль формы обработки «Обслуживание», команды ЗакрытьВход и ОткрытьВход.
// Нужны административные права. В клиент-серверной базе блокировка хранится
// в кластере и переживает перезапуск службы: после очистки вы входите
// с параметром /UC <код> и проверяете базу, пока пользователи ждут.

&НаКлиенте
Процедура ЗакрытьВход(Команда)

	КодРазрешения = ЗакрытьВходНаСервере(120);
	ПоказатьПредупреждение(, СтрШаблон("Вход закрыт на 2 часа. Свой вход — с параметром запуска /UC %1",
		КодРазрешения));

КонецПроцедуры

&НаКлиенте
Процедура ОткрытьВход(Команда)

	ОткрытьВходНаСервере();
	ПоказатьОповещениеПользователя("Вход в базу открыт");

КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗакрытьВходНаСервере(Знач Минут)

	Генератор = Новый ГенераторСлучайныхЧисел;
	Блокировка = Новый БлокировкаСеансов;
	Блокировка.Установлена = Истина;
	Блокировка.Начало = ТекущаяДатаСеанса();
	Блокировка.Конец = Блокировка.Начало + Минут * 60; // забудете снять — снимется сама
	Блокировка.КодРазрешения = Формат(Генератор.СлучайноеЧисло(100000, 999999), "ЧГ=0");
	Блокировка.Сообщение = "Идёт обслуживание сервера 1С. Вход откроется после проверки.";
	УстановитьБлокировкуСеансов(Блокировка);

	Возврат Блокировка.КодРазрешения;

КонецФункции

&НаСервереБезКонтекста
Процедура ОткрытьВходНаСервере()

	Блокировка = ПолучитьБлокировкуСеансов();
	Блокировка.Установлена = Ложь;
	УстановитьБлокировкуСеансов(Блокировка);

КонецПроцедуры

Сеансы всех баз кластера — через COM-коннектор. Сначала смотрите список: долгий BackgroundJob — повод подождать, а не рубить. Потом завершайте:

// Модуль объекта обработки: код выполняется на сервере 1С под Windows.
// Нужен COM-коннектор версии кластера: regsvr32 "<каталог платформы>\bin\comcntr.dll".
// Пароль администратора кластера в код не пишите — передавайте из формы.
// Пример: Сеансы = СеансыКластера("srv01:1540", 1541, Администратор, Пароль);

Функция СеансыКластера(Знач АдресАгента, Знач ПортКластера, Знач Администратор, Знач Пароль) Экспорт

	Результат = Новый ТаблицаЗначений;
	Результат.Колонки.Добавить("База", Новый ОписаниеТипов("Строка"));
	Результат.Колонки.Добавить("НомерСеанса", Новый ОписаниеТипов("Число"));
	Результат.Колонки.Добавить("Приложение", Новый ОписаниеТипов("Строка"));
	Результат.Колонки.Добавить("Пользователь", Новый ОписаниеТипов("Строка"));
	Результат.Колонки.Добавить("Компьютер", Новый ОписаниеТипов("Строка"));
	Результат.Колонки.Добавить("Начало", Новый ОписаниеТипов("Дата"));

	Подключение = ПодключениеККластеру(АдресАгента, ПортКластера, Администратор, Пароль);
	Для Каждого Сеанс Из Подключение.Агент.GetSessions(Подключение.Кластер) Цикл
		НоваяСтрока = Результат.Добавить();
		НоваяСтрока.База = Сеанс.InfoBase.Name;
		НоваяСтрока.НомерСеанса = Сеанс.SessionID;
		НоваяСтрока.Приложение = Сеанс.AppID; // 1CV8C, WebClient, BackgroundJob, Designer...
		НоваяСтрока.Пользователь = Сеанс.UserName;
		НоваяСтрока.Компьютер = Сеанс.Host;
		НоваяСтрока.Начало = Сеанс.StartedAt;
	КонецЦикла;
	Результат.Сортировать("База, Начало");

	Возврат Результат;

КонецФункции

// Завершает все сеансы кластера, кроме текущего, и возвращает их число.
// Несохранённые данные пользователей пропадут: сначала предупредите и закройте вход.
Функция ЗавершитьСеансыКластера(Знач АдресАгента, Знач ПортКластера, Знач Администратор, Знач Пароль,
	Знач Сообщение = "Сервер 1С перезапускается для обслуживания") Экспорт

	СвояБаза = НРег(ИмяБазыВКластере());
	СвойСеанс = НомерСеансаИнформационнойБазы();
	Завершено = 0;

	Подключение = ПодключениеККластеру(АдресАгента, ПортКластера, Администратор, Пароль);
	Для Каждого Сеанс Из Подключение.Агент.GetSessions(Подключение.Кластер) Цикл
		Если НРег(Сеанс.InfoBase.Name) = СвояБаза И Сеанс.SessionID = СвойСеанс Тогда
			Продолжить; // сеанс, из которого запущен этот код
		КонецЕсли;
		Попытка
			Подключение.Агент.TerminateSession(Подключение.Кластер, Сеанс, Сообщение);
			Завершено = Завершено + 1;
		Исключение
			// Сеанс мог закончиться сам, пока мы шли по списку.
			ЗаписьЖурналаРегистрации("ОбслуживаниеСервера", УровеньЖурналаРегистрации.Предупреждение, , ,
				ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
		КонецПопытки;
	КонецЦикла;

	Возврат Завершено;

КонецФункции

Функция ПодключениеККластеру(АдресАгента, ПортКластера, Администратор, Пароль)

	Коннектор = Новый COMОбъект("V83.COMConnector");
	Агент = Коннектор.ConnectAgent(АдресАгента);
	Для Каждого Кластер Из Агент.GetClusters() Цикл
		Если Кластер.MainPort = ПортКластера Тогда
			Агент.Authenticate(Кластер, Администратор, Пароль);
			Возврат Новый Структура("Агент, Кластер", Агент, Кластер);
		КонецЕсли;
	КонецЦикла;
	ВызватьИсключение СтрШаблон("На сервере %1 нет кластера с портом %2", АдресАгента, Формат(ПортКластера, "ЧГ=0"));

КонецФункции

// Имя базы в кластере — Ref из строки соединения вида Srvr="srv01";Ref="trade";
// При входе через веб-сервер Ref в строке нет, и свой сеанс тоже будет завершён.
Функция ИмяБазыВКластере()

	Для Каждого Часть Из СтрРазделить(СтрокаСоединенияИнформационнойБазы(), ";", Ложь) Цикл
		Позиция = СтрНайти(Часть, "=");
		Если Позиция > 0 И НРег(СокрЛП(Лев(Часть, Позиция - 1))) = "ref" Тогда
			Возврат СтрЗаменить(Сред(Часть, Позиция + 1), """", "");
		КонецЕсли;
	КонецЦикла;
	Возврат "";

КонецФункции

Сама очистка — скрипт PowerShell. Путь к srvinfo и порт он берёт из параметров службы, поэтому работает и при нестандартной установке; другое имя службы передайте в -ServiceName:

# clear-1c-session-data.ps1 — очистка сеансовых данных кластера 1С (каталоги snccntx*).
# Запуск от имени администратора, когда в базах никто не работает:
#   powershell -ExecutionPolicy Bypass -File .\clear-1c-session-data.ps1
# Сохраните файл в UTF-8 с BOM, иначе Windows PowerShell 5.1 исказит русский текст.
param(
    [string]$ServiceName = '1C:Enterprise 8.3 Server Agent (x86-64)'
)
$ErrorActionPreference = 'Stop'

# 1. Каталог кластера и порт берём из командной строки службы:
#    ragent.exe ... -regport 1541 ... -d "C:\Program Files\1cv8\srvinfo"
$cmd = (Get-CimInstance Win32_Service -Filter "Name='$ServiceName'").PathName
if (-not $cmd) { throw "Служба '$ServiceName' не найдена" }
if ($cmd -match '-d\s+"([^"]+)"' -or $cmd -match '-d\s+(\S+)') { $srvinfo = $Matches[1].TrimEnd('\') }
else { throw "В командной строке службы нет ключа -d: $cmd" }
$regPort = if ($cmd -match '-regport\s+(\d+)') { $Matches[1] } else { '1541' }
$reg = Join-Path $srvinfo "reg_$regPort"

# 2. Резервная папка рядом с srvinfo и копия реестра кластера — до любых действий
$backup = Join-Path (Split-Path $srvinfo -Parent) ('srvinfo-backup-' + (Get-Date -Format 'yyyyMMdd-HHmm'))
New-Item -ItemType Directory -Path $backup | Out-Null
Copy-Item -Path (Join-Path $srvinfo '1cv8wsrv.lst'), (Join-Path $reg '1CV8Clst.lst') -Destination $backup

# 3. Останавливаем агент и ждём, пока завершатся rmngr и rphost именно этого кластера
Stop-Service -Name $ServiceName
$deadline = (Get-Date).AddMinutes(3)
do {
    $alive = Get-CimInstance Win32_Process -Filter "Name='rmngr.exe' or Name='rphost.exe'" |
        Where-Object { $_.CommandLine -match "-(reg)?port\s+$regPort\b" }
    if ($alive) { Start-Sleep -Seconds 5 }
} while ($alive -and (Get-Date) -lt $deadline)
if ($alive) { throw "Процессы кластера ещё работают (PID $($alive.ProcessId -join ', ')), файлы не трогаю" }

# 4. Сеансовые данные не удаляем, а переносим: на том же диске это мгновенно
Get-ChildItem -Path $reg -Directory -Filter 'snccntx*' | ForEach-Object {
    Move-Item -Path $_.FullName -Destination $backup
    Write-Host "Перенесён $($_.Name)"
}

# 5. Запускаем службу: каталог snccntx платформа создаст заново
Start-Service -Name $ServiceName
Write-Host "Готово. Реестр кластера и старые сеансовые данные лежат в $backup"

На Linux то же самое делают руками:

# Linux, платформа 8.3.21 и новее (служба systemd). Версию и порт подставьте свои.
V=8.3.27.1786
D=/home/usr1cv8/.1cv8/1C/1cv8                     # каталог кластера по умолчанию
B=/home/usr1cv8/srvinfo-backup-$(date +%Y%m%d-%H%M)
sudo systemctl stop srv1cv8-$V@default
pgrep -l -u usr1cv8 'rmngr|rphost'                # пусто — можно продолжать
sudo -u usr1cv8 mkdir "$B"
sudo -u usr1cv8 cp "$D/1cv8wsrv.lst" "$D/reg_1541/1CV8Clst.lst" "$B/"
sudo sh -c "mv $D/reg_1541/snccntx* $B/"
sudo systemctl start srv1cv8-$V@default

Разбор ключевых строк

  • PathName службы хранит каталог кластера (-d) и порт (-regport): srvinfo часто переносят на другой диск.
  • Фильтр -(reg)?port\s+1541 по командной строке процессов: на сервере бывает несколько агентов разных версий, ждём только свои rmngr и rphost.
  • Move-Item вместо удаления: на том же диске перенос мгновенный, а каталог можно вернуть.
  • GetSessions(Кластер), а не GetInfoBaseSessions: служба останавливается для всех баз, значит, и сеансы нужны все.
  • Третий параметр TerminateSession — текст, который пользователь увидит вместо стандартного «Выполнение текущей операции прервано администратором».
  • Свой сеанс исключаем по паре «имя базы из Ref + НомерСеансаИнформационнойБазы()»: номер сеанса уникален только внутри базы.
  • Блокировка.Конец страхует от забытой блокировки, а КодРазрешения пускает в базу только вас.

Почему растёт snccntx: временное хранилище в коде

Сеансовые данные — key-value хранилище кластера. Туда попадают данные форм и всё, что код кладёт во временное хранилище: ПоместитьВоВременноеХранилище, файлы, загруженные с клиента, результаты фоновых заданий. Если каталог пухнет, ищите код, который держит большие данные в хранилище дольше, чем нужно. Срок жизни значения задаёт второй параметр:

  • уникальный идентификатор формы — значение удалится при закрытии формы;
  • новый УникальныйИдентификатор, не связанный с формой, — проживёт до конца сеанса, а сеанс у бухгалтера длится весь день;
  • без адреса — удалится после следующего серверного вызова.
// Модуль формы загрузки прайса. Файл с клиента попадает во временное хранилище,
// то есть в сеансовые данные сервера (snccntx). Держим его там не дольше, чем нужно.

&НаКлиенте
Асинх Процедура ЗагрузитьПрайс(Команда)

	// Идентификатор формы: файл живёт, пока открыта форма, и удалится при её закрытии,
	// даже если загрузка сорвётся на середине.
	Помещенный = Ждать ПоместитьФайлНаСерверАсинх(, , , Новый ПараметрыДиалогаПомещенияФайлов("Выберите прайс"),
		УникальныйИдентификатор);
	Если Помещенный = Неопределено Или Помещенный.ПомещениеФайлаОтменено Тогда
		Возврат;
	КонецЕсли;

	КоличествоСтрок = ЗагрузитьПрайсНаСервере(Помещенный.Адрес);
	ПоказатьОповещениеПользователя("Прайс загружен", , СтрШаблон("Строк в файле: %1", КоличествоСтрок));

КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗагрузитьПрайсНаСервере(Знач Адрес)

	Данные = ПолучитьИзВременногоХранилища(Адрес);
	УдалитьИзВременногоХранилища(Адрес); // данные уже в переменной, место в хранилище освобождаем

	Текст = ПолучитьСтрокуИзДвоичныхДанных(Данные, КодировкаТекста.UTF8);
	КоличествоСтрок = СтрЧислоСтрок(Текст);
	// Здесь разбор строк и запись цен в базу.

	Возврат КоличествоСтрок;

КонецФункции

Как вернуть результат фонового задания через хранилище и не оставить мусор — в статье «Фоновое задание 1С».

Типичные ошибки

  • Удалили srvinfo целиком или reg_1541 вместе с 1CV8Clst.lst. Кластер стартует пустым, при входе — «Информационная база не обнаружена». Данные в СУБД целы, но базы придётся регистрировать заново, а журналы регистрации пропали. Поэтому скрипт первым делом копирует реестр.
  • Удалили папки баз в reg_1541 «как кэш». Ушли журнал регистрации и полнотекстовый индекс, а ошибка, скорее всего, осталась.
  • Удаляют при работающей службе. Windows отвечает «Процесс не может получить доступ к файлу, так как этот файл занят другим процессом». Не убивайте rphost по одному — остановите службу.
  • Почистили кэш не тому пользователю. На терминальном сервере кэш у каждого свой, а скрипт без -AllUsers чистит только того, кто его запустил.
  • Снесли весь %APPDATA%\1C. Пропали список баз и шаблоны обновлений в tmplts.
  • «Недопустимая строка с указанием класса» на Новый COMОбъект("V83.COMConnector") — COM-коннектор не зарегистрирован: выполните regsvr32 для comcntr.dll той же версии и разрядности, что и кластер. В безопасном режиме COM-объект не создаётся вовсе.

Частые вопросы

Нужно ли останавливать службу, чтобы почистить кэш клиента?

Нет. Клиентский кэш чистят на компьютере пользователя при закрытой 1С. Служба нужна только для сеансовых данных на сервере.

Где кэш 1С у файловой базы?

Там же, в профиле пользователя: %LOCALAPPDATA%\1C\1cv8\<ID базы>, и /ClearCache работает так же. В каталоге самой базы кэша нет: 1Cv8.1CD — данные, 1Cv8Log — журнал регистрации. Файл 1Cv8snc.1CD по смыслу — сеансовые данные файловой базы: если ошибка у всех и чистка клиентов не помогла, выгоните всех из базы и переименуйте его.

Нужно ли чистить кэш сервера по расписанию?

Нет. Платформа сама собирает мусор в сеансовых данных, а регулярная чистка только прячет проблему: нехватку места на диске с srvinfo или код, который забивает временное хранилище. Следите за свободным местом: по методическим материалам 1С сборке мусора нужно около четверти объёма каталога сеансовых данных.

Сбросит ли очистка кэш повторно используемых значений?

Это другой кэш — в памяти сеанса, файлы тут ни при чём. После изменения данных, которые читает общий модуль с повторным использованием, вызовите ОбновитьПовторноИспользуемыеЗначения(): метод очищает сохранённые значения таких функций в текущем сеансе. Остальным пользователям надёжнее перезапустить сеансы.

Когда проще заказать

Если очистка кэша не помогла, а 1С продолжает тормозить, падать или съедать диск, причина глубже: тяжёлые запросы, блокировки, память rphost, настройки СУБД или код, который забивает временное хранилище. Такие задачи разбирают в рамках услуги «1С тормозит». Опишите симптомы и разместите задачу на площадке — оценка бесплатная, ответ в течение рабочего дня.

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.