Обслуживание информационной базы 1С 8.3: проверка, исправление и ускорение без потери данных

· 10 мин

Содержание

Подтянуть базу 1С — значит прогнать встроенную процедуру Конфигуратор → Администрирование → Тестирование и исправление с реиндексацией таблиц, проверкой целостности, пересчётом итогов и сжатием. Перед запуском нужна резервная копия и монопольный доступ: все пользователи должны выйти из базы.

Процедура лечит медленные отчёты, «распухший» файл базы, ошибки вроде Ошибка формата потока и битые ссылки после аварийного отключения. Для файловой базы есть ещё утилита chdbfl.exe, для клиент-серверной — регламент обслуживания на стороне СУБД.

Признаки, что базу пора подтягивать

Обслуживание не делают «на всякий случай» каждый день. Есть понятные сигналы.

  • 🐢 Отчёты и проведение документов стали заметно медленнее, хотя объём данных почти не вырос.
  • 📈 Файл 1Cv8.1CD растёт быстрее, чем копятся документы. После массового удаления помеченных объектов размер не уменьшился.
  • 💥 База закрывалась аварийно: отключили свет, «упал» сервер, сеть оборвалась во время записи.
  • ❌ Появляются ошибки при открытии документов или справочников: Ошибка формата потока, Объект не найден, сообщения о нарушении целостности.
  • 🔢 Остатки в оборотно-сальдовой ведомости расходятся с отчётами по регистрам, хотя документы проведены правильно. Частый признак сбитых итогов.

Быстрая самодиагностика перед стартом

Прежде чем запускать долгую процедуру, проверьте три вещи. Они отсекают половину ложных тревог.

  1. Размер и место. Посмотрите размер файла 1Cv8.1CD (путь к каталогу базы виден в окне запуска при выборе базы, внизу). Свободного места на диске должно быть хотя бы вдвое больше размера базы: сжатие и реструктуризация пишут временные данные.
  2. Журнал регистрации. В режиме Предприятия откройте Администрирование → Обслуживание → Журнал регистрации и отфильтруйте по уровню «Ошибка». Если там одна и та же ошибка от одного объекта, проблема может быть в данных конкретного документа, а не в базе целиком.
  3. Кэш клиента. Если тормозит только один компьютер, базу трогать рано. Запустите 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С.

  1. Закройте базу у всех пользователей.
  2. Откройте каталог платформы, например C:\Program Files\1cv8\8.3.24.1548\bin\, и запустите chdbfl.exe. Номер версии подставьте свой.
  3. Укажите путь к файлу 1Cv8.1CD.
  4. Сначала запустите без флажка «Исправлять обнаруженные ошибки», потом, если ошибки есть, — с ним.
  5. После успешного прохода запустите тестирование и исправление в Конфигураторе: 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С с правами администратора и ограничьте доступ к папке со скриптом.

Порядок ночного регламента

  1. Резервная копия (выгрузка .dt тем же пакетным запуском с ключом /DumpIB"путь.dt" или бэкап СУБД).
  2. Тестирование и исправление.
  3. Проверка лога на ошибки.
  4. Снятие блокировки сеансов для серверной базы.

Разумная частота: полный набор раз в месяц, реиндексация и пересчёт итогов после закрытия периода или любой аварии. Для серверной базы обновление статистики СУБД — ежедневно ночью.

Перед ночным запуском
Выполнено: 0 / 5

Разбор результатов и что делать, если ошибки не ушли

После прогона Конфигуратор выводит сообщения в окно служебных сообщений, при пакетном запуске — в файл из /Out. Читайте лог целиком, а не только последнюю строку.

Как читать итог

  • ✅ Процедура завершилась без сообщений об ошибках — база в порядке, можно возвращать пользователей.
  • 🔧 Есть сообщения об исправленных ошибках — запустите «Только тестирование» повторно. Чистый второй прогон подтверждает, что исправление сработало.
  • 🔁 Те же ошибки появляются после второго прогона — переходите к тяжёлым мерам.
Диагностика: выберите симптом

Тяжёлый вариант: перенос через .dt

Если ни тестирование, ни chdbfl не помогают, но выгрузка в .dt проходит, создайте новую пустую базу и загрузите в неё файл .dt (Конфигуратор → Администрирование → Загрузить информационную базу). Таблицы создаются с нуля, файл обычно получается заметно меньше старого. Старую базу не удаляйте, пока не убедитесь, что в новой открываются документы и сходятся остатки.

Загрузка .dt полностью заменяет данные базы-приёмника. Загружайте только в новую пустую базу, не в рабочую.

Когда подтягивание базы не поможет

Процедуры обслуживания чинят структуру и индексы, но не исправляют всё подряд. Не тратьте на них ночь, если:

  • тормозит конкретная обработка или внешний отчёт с тяжёлым запросом — ищите узкое место в коде через замер производительности;
  • медленно работает только по сети, а локально всё быстро — проблема в сети или в общей папке файловой базы;
  • база файловая, а пользователей больше 10–15 одновременно — файловый вариант упёрся в свой предел, пора думать о клиент-серверном;
  • ошибки появились сразу после обновления конфигурации — сначала проверьте само обновление и расширения, а не целостность.
Можно ли подтянуть базу, не выгоняя пользователей?
Тестирование и исправление — нет, нужен монопольный доступ. Пересчёт итогов через «Управление итогами» и обслуживание индексов на стороне СУБД можно делать при работающих пользователях, но лучше в часы низкой нагрузки.
Сжатие уменьшит базу в разы?
Только если в файле много пустого места после удаления данных. Если ничего массово не удаляли, выигрыш небольшой. Заметнее эффект даёт перезагрузка базы через .dt.
Как часто запускать реиндексацию?
Для файловой базы с активной работой — раз в месяц и после каждого аварийного отключения. Для клиент-серверной индексы обслуживает СУБД по своему регламенту.
Что безопаснее: создавать объекты или очищать ссылки?
Создавать объекты. Документы сохраняют связь с заглушкой, и её можно потом заменить на правильный элемент. Очистка ссылок теряет информацию безвозвратно.
Можно ли запустить chdbfl.exe для серверной базы?
Нет. Утилита работает только с файлом 1Cv8.1CD файловой базы. Для серверной базы целостность проверяют средствами СУБД и Конфигуратора.