Освобождаем место и память в 1С 8.3: от папки кэша до сжатия таблиц

· 9 мин

Содержание

Чтобы почистить память 1С, закройте программу и удалите папки с длинными именами вида a1b2c3d4-… в %APPDATA%\1C\1cv8 и %LOCALAPPDATA%\1C\1cv8. Это кэш конфигураций: 1С пересоздаст его при следующем запуске. Если тормоза из-за распухшей базы, а не кэша, — нужны сжатие таблиц, сокращение журнала регистрации и обслуживание СУБД.

Под словом «память» обычно прячутся четыре разные проблемы: кэш на компьютере пользователя, временные файлы, размер самой базы и оперативная память на сервере. Ниже каждая разобрана отдельно, с путями и командами. Всё описанное относится к платформе 8.3 и не зависит от конфигурации — БП, ЗУП или УТ.

Что у вас происходит?

1. Где хранится кэш 1С и как удалить его вручную

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

  • 🔹 после обновления видна старая форма документа или старое меню;
  • 🔹 ошибки вида Ошибка формата потока или Неверный формат хранилища данных при открытии;
  • 🔹 у одного пользователя база работает, у другого на этом же сервере — нет;
  • 🔹 1С зависает на заставке при запуске.

Пути к папкам кэша

ПапкаЧто внутри
%APPDATA%\1C\1cv8Кэш конфигураций, пользовательские файлы
%LOCALAPPDATA%\1C\1cv8Основная часть кэша, обычно самая тяжёлая
%APPDATA%\1C\1CEStartСписок баз ibases.v8i — не удалять

Наберите путь прямо в адресной строке Проводника или в окне Win+R — переменная раскроется сама.

Порядок очистки

  1. Закройте все окна 1С. Проверьте в диспетчере задач, что нет процессов 1cv8.exe и 1cv8c.exe.
  2. Откройте %LOCALAPPDATA%\1C\1cv8.
  3. Удалите все папки, у которых имя — набор букв и цифр через дефис (GUID). Каждая такая папка — кэш одной базы.
  4. Повторите то же в %APPDATA%\1C\1cv8.
  5. Запустите 1С. Первый вход будет дольше обычного: кэш собирается заново.

Если нужно почистить кэш только одной базы, а баз в списке двадцать, — отсортируйте папки по дате изменения. Нужная обычно та, что менялась при последнем запуске проблемной базы.

Не удаляйте папку 1CEStart и файл ibases.v8i в ней. Иначе пропадёт список информационных баз, и его придётся добавлять заново.

Пользовательские настройки (формы, отборы, варианты отчётов) хранятся в самой информационной базе, а не в этих папках. Поэтому очистка кэша их не трогает.

Очистка кэша параметром /ClearCache

Когда пользователей много, удобнее не ходить по компьютерам, а добавить параметр запуска:

  1. В окне запуска 1С выделите базу и нажмите Изменить.
  2. Пройдите мастер до последней страницы.
  3. В поле Дополнительные параметры запуска впишите /ClearCache.
  4. Нажмите Готово и запустите базу.

Параметр чистит кэш клиентского приложения при каждом запуске. Как только проблема ушла — уберите его, иначе база будет стартовать медленнее всегда. Этот же ключ работает и в командной строке:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Base\Buh" /ClearCache

2. Временные файлы и место на диске

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

  • 📁 %TEMP% — временные файлы клиента: распакованные отчёты, файлы для печати, выгрузки. Имена часто начинаются с v8_.
  • 📁 1Cv8Log в каталоге файловой базы — журнал регистрации. Может весить десятки гигабайт.
  • 📁 Каталог сервера srvinfo (по умолчанию C:\Program Files\1cv8\srvinfo) — данные кластера, журналы серверных баз и временные файлы рабочих процессов.

Папку %TEMP% безопасно чистить, когда 1С закрыта. Файлы, занятые другими программами, Windows просто не даст удалить — пропустите их.

Чтобы найти, что именно занимает место, удобно посмотреть размеры папок любым анализатором диска. Если лидер — 1Cv8Log, переходите к разделу про журнал регистрации ниже. Если 1Cv8.1CD — к сжатию базы.

3. Сжатие и оптимизация базы данных 1С

Файловая база хранится в одном файле 1Cv8.1CD. При удалении данных он не уменьшается: освободившееся место остаётся внутри файла пустым. Бывает, что база с данными на 3 ГБ занимает 12 ГБ.

Перед любыми операциями с базой сделайте резервную копию — выгрузку .dt или копию каталога базы при закрытой 1С.

Сжатие через Конфигуратор

  1. Убедитесь, что все пользователи вышли из базы: для тестирования и исправления нужен монопольный доступ.
  2. Откройте базу в Конфигураторе.
  3. Выберите Администрирование → Тестирование и исправление.
  4. Отметьте флажок Сжатие таблиц информационной базы. Можно добавить Реиндексацию таблиц.
  5. Выберите режим Тестирование и исправление и нажмите Выполнить.

Для базы в 10–20 ГБ процедура занимает от нескольких минут до часа, в зависимости от диска.

Утилита chdbfl.exe

В каталоге bin установленной платформы лежит chdbfl.exe — утилита проверки файловой базы. Её запускают без Конфигуратора: указываете путь к 1Cv8.1CD, ставите флажок исправления ошибок и жмёте Выполнить. Она полезна, когда сама база не открывается. Сжимать таблицы удобнее в Конфигураторе.

Выгрузка и загрузка .dt

Самый надёжный способ «упаковать» базу — выгрузить её в .dt (Администрирование → Выгрузить информационную базу) и загрузить в новую пустую базу. Файл получается компактным, все пустоты уходят.

Удаление помеченных объектов

В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) есть обработка Администрирование → Обслуживание → Удаление помеченных объектов. Она физически удаляет документы и элементы справочников с пометкой удаления. После неё имеет смысл запустить сжатие таблиц — иначе файл базы не уменьшится.

Клиент-серверная база

Для баз на MS SQL или PostgreSQL сжатие делают средствами СУБД:

СУБДЧто делатьКогда
MS SQLРезервная копия журнала, затем DBCC SHRINKFILE для файла _logРастёт файл .ldf
MS SQLМодель восстановления SIMPLE, если не нужен откат на точку во времениБэкап журнала не настроен
PostgreSQLVACUUM регулярно, VACUUM FULL — в окно обслуживанияТаблицы раздуты после массовых удалений
-- MS SQL: сжать файл журнала транзакций до 1 ГБ
USE [buh];
DBCC SHRINKFILE (N'buh_log', 1024);

VACUUM FULL в PostgreSQL блокирует таблицу на время работы. Запускайте его, когда пользователи не работают в базе.

4. Журнал регистрации и история изменений объектов

Сокращение журнала регистрации

Журнал регистрации пишет каждый вход, каждую запись документа и каждую ошибку. За пару лет он легко вырастает больше самой базы.

  1. Откройте базу в Конфигураторе.
  2. Выберите Администрирование → Журнал регистрации.
  3. В меню Действия выберите Сократить.
  4. Укажите дату: записи раньше неё будут удалены.
  5. По желанию задайте файл, куда сохранить удаляемые записи, — пригодится для аудита.

Сокращать журнал можно и без монопольного доступа, но на большом журнале процедура тормозит работу пользователей. Лучше делать это вечером.

Настройка журнала, чтобы он не рос

В Конфигураторе есть пункт Администрирование → Настройка журнала регистрации. Здесь задают:

  • 📝 уровень регистрации — Ошибки, Предупреждения, Информация или Примечания. Для рабочей базы обычно хватает ошибок и предупреждений;
  • 📝 разделение журнала по периодам — по дням, неделям, месяцам или годам. Тогда старые файлы можно архивировать и удалять целиком.

Отключать журнал полностью не стоит: при расследовании, кто удалил документ, он будет единственным источником.

История изменений объектов

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

5. Автоматическая очистка: расписание для администратора

Ручная чистка помогает один раз. Чтобы проблема не возвращалась, её ставят на расписание.

Bat-файл для очистки кэша на рабочих местах

@echo off
rem Закрыть 1С перед запуском. Удаляет только папки-GUID, список баз не трогает.
taskkill /IM 1cv8c.exe /F >nul 2>&1
taskkill /IM 1cv8.exe /F >nul 2>&1
for /d %%D in ("%LOCALAPPDATA%\1C\1cv8\*-*-*-*-*") do rd /s /q "%%D"
for /d %%D in ("%APPDATA%\1C\1cv8\*-*-*-*-*") do rd /s /q "%%D"
del /q /f "%TEMP%\v8_*" >nul 2>&1

Команды taskkill закрывают 1С без сохранения. Запускайте скрипт при входе в систему или ночью, а не днём, когда люди работают в базе.

Скрипт удобно повесить в Планировщик заданий Windows на вход пользователя или раз в неделю. В домене его раздают через групповую политику.

Обслуживание базы по графику

  • 🗓️ MS SQL — план обслуживания: резервная копия базы и журнала, обновление статистик, перестроение индексов.
  • 🗓️ PostgreSQL — включённый autovacuum и ночной VACUUM ANALYZE по расписанию.
  • 🗓️ Файловая база — сжатие таблиц раз в месяц-квартал через командную строку (см. следующий раздел) и Планировщик заданий.
  • 🗓️ Журнал регистрации — разделение по месяцам и перенос старых файлов в архив.

6. Командная строка и сервер 1С: продвинутые способы

Тестирование и сжатие из командной строки

Конфигуратор умеет выполнять тестирование без открытия окна. Это удобно для ночного задания:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Base\Buh" /N"Администратор" /P"пароль" /IBCheckAndRepair -ReIndex -IBCompression /Out"D:\Logs\check.log"

Номер версии в пути подставьте свой. Результат пишется в файл из параметра /Out. Пользователи в момент запуска должны быть отключены.

Кэш сервера 1С

На сервере есть свой кэш — папки snccntx* в каталоге кластера, например C:\Program Files\1cv8\srvinfo\reg_1541. Их чистят, когда после обновления у всех пользователей серверной базы одна и та же странная ошибка, а очистка клиентского кэша не помогла.

  1. Предупредите пользователей: все сеансы оборвутся, несохранённые данные пропадут.
  2. Остановите службу Агент сервера 1С:Предприятия 8.3 (имя службы может включать номер версии).
  3. Удалите папки snccntx* в каталоге reg_1541. Остальное содержимое не трогайте.
  4. Запустите службу.

Делайте это вне рабочего времени. Состав кластера и списки баз эта процедура не меняет.

Оперативная память рабочих процессов

Если «память» — это оперативка сервера, которую съедает rphost.exe, кэш тут ни при чём. В консоли администрирования серверов откройте свойства кластера. Там есть параметры:

ПараметрЧто делает
Интервал перезапускаПлавно перезапускает рабочие процессы раз в N секунд
Допустимый объём памятиПорог памяти для всех рабочих процессов кластера
Интервал превышения допустимого объёма памятиСколько секунд можно держаться выше порога до перезапуска

Перезапуск по этим параметрам идёт мягко: новые соединения уходят в новый процесс, старый завершается, когда сеансы с него переведены. Для проверки, кто сейчас занимает лицензии и сеансы, пригодится rac session list --licenses — полный список команд даст rac help.

7. Ошибки при очистке, которые обходятся дорого

  • ❌ Удалить всю папку %APPDATA%\1C. Вместе с кэшем уходит список баз. Ничего не сломается, но пользователь позвонит с вопросом «куда делись базы».
  • ❌ Чистить кэш при открытой 1С. Часть файлов занята, папка удалится наполовину, и ошибка останется.
  • ❌ Копировать 1Cv8.1CD для бэкапа при работающих пользователях. Копия может оказаться битой. Для живой базы используйте выгрузку .dt.
  • ❌ Сжимать журнал транзакций SQL при полной модели без бэкапа журнала. Файл через день вырастет обратно.
  • ❌ Удалять папку srvinfo целиком. Пропадут настройки кластера и список зарегистрированных баз — придётся восстанавливать вручную.
  • ❌ Оставлять /ClearCache навсегда. Каждый запуск превращается в первый — с полной загрузкой конфигурации.

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

Пропадут ли данные бухгалтерии после очистки кэша?
Нет. Документы, справочники и настройки пользователей хранятся в информационной базе. В кэше только копии служебных данных.
Нужно ли чистить кэш на каждом компьютере при работе через RDP?
Нет, кэш лежит в профиле пользователя на терминальном сервере. Чистить нужно в профиле каждого проблемного пользователя на этом сервере.
Как часто сжимать файловую базу?
Ориентир — раз в месяц-квартал или после массовых удалений: свёртки, удаления помеченных объектов, загрузки и удаления тестовых данных.
Почему после удаления помеченных объектов файл базы не уменьшился?
Удаление освобождает место внутри файла 1Cv8.1CD, но не отдаёт его диску. Нужно сжатие таблиц или выгрузка-загрузка .dt.
Можно ли удалять старые файлы журнала регистрации вручную?
Если журнал разделён по периодам, файлы старых периодов в папке 1Cv8Log удаляют при закрытой базе. Без разделения надёжнее сокращать журнал через Конфигуратор.