Обслуживание информационной базы 1С 8.3: проверка, исправление и ускорение без потери данных
Содержание
Подтянуть базу 1С — значит прогнать встроенную процедуру Конфигуратор → Администрирование → Тестирование и исправление с реиндексацией таблиц, проверкой целостности, пересчётом итогов и сжатием. Перед запуском нужна резервная копия и монопольный доступ: все пользователи должны выйти из базы.
Процедура лечит медленные отчёты, «распухший» файл базы, ошибки вроде Ошибка формата потока и битые ссылки после аварийного отключения. Для файловой базы есть ещё утилита chdbfl.exe, для клиент-серверной — регламент обслуживания на стороне СУБД.
Признаки, что базу пора подтягивать
Обслуживание не делают «на всякий случай» каждый день. Есть понятные сигналы.
- 🐢 Отчёты и проведение документов стали заметно медленнее, хотя объём данных почти не вырос.
- 📈 Файл
1Cv8.1CDрастёт быстрее, чем копятся документы. После массового удаления помеченных объектов размер не уменьшился. - 💥 База закрывалась аварийно: отключили свет, «упал» сервер, сеть оборвалась во время записи.
- ❌ Появляются ошибки при открытии документов или справочников:
Ошибка формата потока,Объект не найден, сообщения о нарушении целостности. - 🔢 Остатки в оборотно-сальдовой ведомости расходятся с отчётами по регистрам, хотя документы проведены правильно. Частый признак сбитых итогов.
Быстрая самодиагностика перед стартом
Прежде чем запускать долгую процедуру, проверьте три вещи. Они отсекают половину ложных тревог.
- Размер и место. Посмотрите размер файла
1Cv8.1CD(путь к каталогу базы виден в окне запуска при выборе базы, внизу). Свободного места на диске должно быть хотя бы вдвое больше размера базы: сжатие и реструктуризация пишут временные данные. - Журнал регистрации. В режиме Предприятия откройте
Администрирование → Обслуживание → Журнал регистрациии отфильтруйте по уровню «Ошибка». Если там одна и та же ошибка от одного объекта, проблема может быть в данных конкретного документа, а не в базе целиком. - Кэш клиента. Если тормозит только один компьютер, базу трогать рано. Запустите 1С с параметром
/ClearCacheв строке «Дополнительные параметры запуска» карточки базы. Сеанс этого пользователя перезапустится, другим это не мешает.
Если медленно работает только один отчёт, а остальное летает, дело обычно в настройках самого отчёта (огромный период, детализация по всем субконто). Реиндексация здесь мало что даст.
Подготовка: копия, монопольный режим и время
Без резервной копии тестирование и исправление не запускайте. Процедура в режиме исправления может удалить объекты с повреждёнными данными или очистить битые ссылки. Откатить это можно только из копии.
Как сделать резервную копию
| Способ | Когда подходит | Что учесть |
|---|---|---|
Выгрузка .dt (Конфигуратор → Администрирование → Выгрузить информационную базу) | Любая база | Нужен монопольный доступ; если база сильно повреждена, выгрузка может прерваться с ошибкой |
Копия файла 1Cv8.1CD | Файловая база | Копировать только при закрытой базе, иначе копия будет несогласованной |
| Бэкап средствами СУБД | Клиент-серверная база на MS SQL или PostgreSQL | Самый надёжный вариант для сервера, делает администратор СУБД |
Для файловой базы лучше сделать оба варианта: и .dt, и копию файла. Если выгрузка в .dt падает с ошибкой, это уже диагноз: база повреждена, и копия файла остаётся единственной страховкой.
Монопольный доступ
Тестирование и исправление требует, чтобы в базе никто не работал, включая фоновые и регламентные задания.
- Для файловой базы: попросите всех выйти, проверьте в Конфигураторе
Администрирование → Активные пользователи. - Для клиент-серверной: в консоли администрирования кластера откройте свойства информационной базы, включите «Блокировка начала сеансов» и «Блокировка регламентных заданий», задайте код разрешения. Затем завершите оставшиеся сеансы.
Завершение сеансов из консоли обрывает работу пользователей: несохранённые документы пропадут. Делайте это вечером или после предупреждения в общем чате, а не посреди рабочего дня.
Сколько времени закладывать
Время зависит от размера базы и диска. Ориентир для файловой базы на SSD: база в 2–3 ГБ проходит полный набор проверок за 15–40 минут, база в 10–15 ГБ может занять несколько часов. На HDD умножайте на два–три. Поэтому полный прогон планируют на вечер или выходной.
Тестирование и исправление в Конфигураторе: что отмечать
Это главный инструмент, чтобы подтянуть базу 1С. Запустите Конфигуратор под пользователем с полными правами, откройте Администрирование → Тестирование и исправление.
Галочки проверок
| Пункт | Что делает | Когда нужен |
|---|---|---|
| Реиндексация таблиц информационной базы | Перестраивает индексы всех таблиц | Тормоза, ошибки поиска, после сбоев |
| Проверка логической целостности информационной базы | Ищет противоречия во внутренней структуре данных | После аварийного закрытия, при ошибках чтения |
| Проверка ссылочной целостности информационной базы | Ищет ссылки на несуществующие объекты («битые» ссылки) | Объект не найден, пустые поля с кодом вместо названия |
| Пересчёт итогов | Пересчитывает итоговые таблицы регистров | Расхождения остатков, медленные отчёты по регистрам |
| Сжатие таблиц информационной базы | Убирает пустое место из файла | Большой файл после удаления данных |
| Реструктуризация таблиц информационной базы | Пересоздаёт таблицы целиком | Тяжёлые случаи; самая долгая операция |
Для регулярного профилактического прогона хватает реиндексации, логической целостности и пересчёта итогов. Сжатие имеет смысл в файловой базе. Реструктуризацию включайте, когда без неё не обошлось: ошибки остались после первого прогона.
Режим и реакция на ошибки
Внизу окна выбирается режим: «Тестирование и исправление» или «Только тестирование». Сначала разумно запустить «Только тестирование»: программа покажет, что нашла, и ничего не изменит.
Для ссылок на несуществующие объекты есть три варианта:
- Создавать объекты — программа создаст пустые объекты-заглушки, на которые будут указывать битые ссылки. Данные документов сохраняются, заглушки потом можно найти и заполнить. Самый безопасный вариант для учётной базы.
- Очищать ссылки — поле с битой ссылкой станет пустым. Быстро, но теряется информация о том, что там было.
- Не изменять — только сообщить.
Для частичной потери данных объектов похожий выбор: создавать объекты или удалять их. Удаление в бухгалтерской базе означает, что документ пропадёт вместе с движениями, поэтому сначала выбирайте «Создавать объекты».
После варианта «Создавать объекты» заглушки получают служебные наименования вида «Объект не найден» с идентификатором. Найдите их поиском в соответствующих справочниках и разберите вручную: восстановите из копии нужный элемент или замените ссылки.
Опция «Тестирование с продолжения» пригодится, если процесс прервался: проверка начнётся не с начала. Ограничение по времени позволяет остановить процедуру к утру, чтобы база не осталась занятой.
Файловая база и SQL: в чём разница подходов
Файловая база: утилита chdbfl.exe
Если Конфигуратор не открывает базу или падает на тестировании, начните с chdbfl.exe. Она проверяет физическую структуру файла 1Cv8.1CD без запуска 1С.
- Закройте базу у всех пользователей.
- Откройте каталог платформы, например
C:\Program Files\1cv8\8.3.24.1548\bin\, и запуститеchdbfl.exe. Номер версии подставьте свой. - Укажите путь к файлу
1Cv8.1CD. - Сначала запустите без флажка «Исправлять обнаруженные ошибки», потом, если ошибки есть, — с ним.
- После успешного прохода запустите тестирование и исправление в Конфигураторе:
chdbflчинит файл, но не проверяет логику данных.
Клиент-серверная база: обслуживание на стороне СУБД
В клиент-серверном варианте тестирование и исправление тоже работает, но на большой базе идёт долго и требует остановки работы. Ускорение здесь обычно дают регламентные операции СУБД, а не 1С.
MS SQL Server:
- перестроение или реорганизация индексов (план обслуживания или
ALTER INDEX ... REBUILD); - обновление статистики (
sp_updatestatsили шаг плана обслуживания); - проверка целостности
DBCC CHECKDB; - очистка процедурного кэша после обновления статистики.
PostgreSQL:
VACUUM ANALYZE— убирает «мёртвые» строки и обновляет статистику;REINDEXдля таблиц с раздутыми индексами;- проверка, что autovacuum включён и успевает.
-- MS SQL: обновить статистику в базе 1С (выполнять в окне низкой нагрузки)
USE [buh_base];
EXEC sp_updatestats;
-- PostgreSQL: очистка и сбор статистики
VACUUM ANALYZE;
Перестроение индексов на большой базе грузит диск и может блокировать таблицы. Запускайте в нерабочее время, иначе пользователи получат ошибки блокировок и таймауты.
Пересчёт итогов в клиент-серверной базе удобно делать из Предприятия, без монопольного режима: Все функции → Стандартные → Управление итогами. Если команды «Все функции» нет в меню, включите её в Сервис и настройки → Параметры, флажок «Отображать команду “Все функции”».
Как поставить обслуживание на расписание
Ручной прогон раз в квартал забывается. Пакетный запуск Конфигуратора решает это: bat-файл и задание в Планировщике Windows.
Пакетный запуск тестирования
@echo off
set V8="C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe"
set BASE=D:\Bases\Buh
set LOG=D:\Logs\test_%date:~-4%%date:~3,2%%date:~0,2%.txt
%V8% DESIGNER /F"%BASE%" /N"Администратор" /P"пароль" /DisableStartupMessages ^
/IBCheckAndRepair -ReIndex -LogIntegrity -RecalcTotals -IBCompression -BadRefCreate ^
/Out"%LOG%"
Ключи после /IBCheckAndRepair:
-ReIndex— реиндексация;-LogIntegrity— логическая целостность,-LogAndRefsIntegrity— логическая и ссылочная;-RecalcTotals— пересчёт итогов;-IBCompression— сжатие;-Rebuild— реструктуризация;-TestOnly— только тестирование, без исправления;-BadRefCreate,-BadRefClear,-BadRefNone— что делать с битыми ссылками.
Для клиент-серверной базы вместо /F"путь" пишут /S"сервер\имя_базы". Если сеансы заблокированы с кодом разрешения, добавьте /UC"код".
Пароль в bat-файле лежит открытым текстом. Создайте для обслуживания отдельного пользователя 1С с правами администратора и ограничьте доступ к папке со скриптом.
Порядок ночного регламента
- Резервная копия (выгрузка
.dtтем же пакетным запуском с ключом/DumpIB"путь.dt"или бэкап СУБД). - Тестирование и исправление.
- Проверка лога на ошибки.
- Снятие блокировки сеансов для серверной базы.
Разумная частота: полный набор раз в месяц, реиндексация и пересчёт итогов после закрытия периода или любой аварии. Для серверной базы обновление статистики СУБД — ежедневно ночью.
Разбор результатов и что делать, если ошибки не ушли
После прогона Конфигуратор выводит сообщения в окно служебных сообщений, при пакетном запуске — в файл из /Out. Читайте лог целиком, а не только последнюю строку.
Как читать итог
- ✅ Процедура завершилась без сообщений об ошибках — база в порядке, можно возвращать пользователей.
- 🔧 Есть сообщения об исправленных ошибках — запустите «Только тестирование» повторно. Чистый второй прогон подтверждает, что исправление сработало.
- 🔁 Те же ошибки появляются после второго прогона — переходите к тяжёлым мерам.
Тяжёлый вариант: перенос через .dt
Если ни тестирование, ни chdbfl не помогают, но выгрузка в .dt проходит, создайте новую пустую базу и загрузите в неё файл .dt (Конфигуратор → Администрирование → Загрузить информационную базу). Таблицы создаются с нуля, файл обычно получается заметно меньше старого. Старую базу не удаляйте, пока не убедитесь, что в новой открываются документы и сходятся остатки.
Загрузка .dt полностью заменяет данные базы-приёмника. Загружайте только в новую пустую базу, не в рабочую.
Когда подтягивание базы не поможет
Процедуры обслуживания чинят структуру и индексы, но не исправляют всё подряд. Не тратьте на них ночь, если:
- тормозит конкретная обработка или внешний отчёт с тяжёлым запросом — ищите узкое место в коде через замер производительности;
- медленно работает только по сети, а локально всё быстро — проблема в сети или в общей папке файловой базы;
- база файловая, а пользователей больше 10–15 одновременно — файловый вариант упёрся в свой предел, пора думать о клиент-серверном;
- ошибки появились сразу после обновления конфигурации — сначала проверьте само обновление и расширения, а не целостность.