Тестирование и исправление базы 1С: от копии до проверки результата
Содержание
Тестировать базу 1С нужно не «когда всё сломалось», а до того, как сломается. Распространённое заблуждение: запустил проверку с галочкой «исправлять ошибки» — и база здорова. На деле исправление может удалить повреждённые записи, поэтому порядок такой: копия, проверка без исправлений, чтение результата, и только потом исправление.
Для файловой базы есть два инструмента: утилита chdbfl.exe и встроенное в Конфигуратор «Тестирование и исправление». Для клиент-серверной базы работает второе и проверка средствами СУБД. Ниже — полный порядок действий и что делать с результатом.
Что сделать до проверки: копия, монопольный доступ, место на диске
Проверка с исправлением меняет файл базы. Ошибиться здесь нельзя, поэтому подготовка занимает больше времени, чем сама проверка.
Минимальный набор перед стартом
- Выгнать всех пользователей. Список сеансов — в консоли кластера (серверная база) или в окне «Активные пользователи» (файловая).
- Сделать копию. Для файловой — скопировать каталог с файлом
1Cv8.1CDцеликом. Для серверной — выгрузка в.dtили бэкап СУБД. - Проверить свободное место: нужен запас не меньше размера базы. Сжатие и реиндексация создают временные данные.
- Закрыть всё, что держит файл: антивирус с проверкой «на лету», резервное копирование , открытые Конфигураторы.
- Запомнить версию платформы. Тестировать лучше той версией, под которой база работала последней.
Если копии нет, тестировать с исправлением нельзя. Сначала копия, потом галочка «Исправлять».
Когда тестировать не нужно
- База просто «тормозит». Это обычно не повреждение, а блокировки, фрагментация в СУБД или слабый диск.
- Ошибка воспроизводится у одного пользователя. Сначала очистите его локальный кэш, а не базу.
- Копии нет, а база нужна завтра. Сделайте копию, даже если придётся ждать.
Утилита chdbfl для файловой базы: запуск и режимы
chdbfl.exe лежит в каталоге bin установленной платформы. Работает только с файловым вариантом (файл 1Cv8.1CD). Для серверных баз она не подходит.
Порядок работы
- Закройте базу везде, где она открыта.
- Запустите
chdbfl.exeиз каталогаbinнужной версии платформы. - Укажите путь к файлу
1Cv8.1CD. - Первый проход — только проверка: галочку исправления не ставьте.
- Дождитесь окончания. На базе в десятки гигабайт это может занять часы.
- Прочитайте сообщения. Если ошибок нет, на этом всё.
- Если ошибки есть, вернитесь к копии, ещё раз убедитесь, что она читается, и запустите повторно с исправлением.
Размер базы и скорость диска сильно влияют на время. Ориентир: база на 5 ГБ на SSD проверяется за десятки минут, на старом HDD — заметно дольше.
Что умеет утилита и чем она отличается от Конфигуратора
| Инструмент | Для каких баз | Когда брать |
|---|---|---|
chdbfl.exe | Только файловые | База не открывается в Конфигураторе, платформа падает при входе |
| Тестирование и исправление в Конфигураторе | Файловые и серверные | База запускается, нужна плановая проверка |
| Инструменты СУБД | Серверные | Подозрение на повреждение на уровне СУБД |
Если база не открывается в Конфигураторе вообще, chdbfl — первый кандидат. Если открывается, удобнее встроенная проверка: в ней больше режимов.
Тестирование и исправление в Конфигураторе
Запустите Конфигуратор с монопольным доступом к базе. В меню Администрирование выберите Тестирование и исправление информационной базы.
Что стоит в окне настроек
Окно содержит набор флагов. Названия могут слегка отличаться по версиям платформы, суть такая:
- Реиндексация таблиц. Перестраивает индексы. Безопасна, нужна после сбоев.
- Проверка логической целостности. Ищет повреждения в самих структурах таблиц.
- Проверка ссылочной целостности. Ищет ссылки на объекты, которых уже нет.
- Пересчёт итогов. Пересобирает таблицы итогов регистров.
- Сжатие таблиц. Уменьшает файл, но требует места и времени.
- Реструктуризация таблиц. Нужна редко, после проблем с обновлением конфигурации.
Ниже — режим: «Только тестирование» либо «Тестирование и исправление». Всегда начинайте с первого.
Три запуска вместо одного
| Запуск | Режим | Что включить |
|---|---|---|
| 1 | Только тестирование | Логическая и ссылочная целостность |
| 2 | Тестирование и исправление | Те же флаги, если в первом нашлись ошибки |
| 3 | Тестирование и исправление | Реиндексация, пересчёт итогов, при необходимости сжатие |
Разделение даёт вам контрольную точку. После запуска 1 вы знаете, что именно сломано. После запуска 2 видите, помогло ли.
Тестирование занимает базу монопольно. На рабочем сервере планируйте окно вечером или в выходные.
Режим «Предприятие»: проверка глазами пользователя
Тест в Конфигураторе проверяет таблицы, но не отвечает на вопрос «работает ли база для людей». Эту проверку делают отдельно: запускают 1С:Предприятие под администратором и проходят типовые операции.
Минимальный набор проверок
- Открыть списки основных справочников и документов. Прокрутить до конца: сбои часто вылезают на старых записях.
- Провести и отменить проведение двух-трёх документов разных видов.
- Сформировать оборотно-сальдовую ведомость за длинный период.
- Открыть форму, на которой раньше падало, и повторить действие.
- Запустить регламентные задания вручную, если они есть.
Если в списке есть «битая» строка, 1С сообщает об ошибке при чтении записи. Запомните объект: он пригодится при разборе журнала.
Журнал регистрации и логи: где искать причину
Результат тестирования говорит, что повреждено. Журнал регистрации помогает понять, как это случилось и кто последним работал с объектом.
Как читать журнал
Откройте журнал регистрации из раздела администрирования (в типовых конфигурациях — в разделе настроек и администрирования, поиск по форме со словом «журнал» найдёт быстро). Настройте отбор:
- по времени: за час-два до первого сообщения об ошибке;
- по уровню: «Ошибка» и «Предупреждение»;
- по событию: фоновые задания, проведение, сеансы;
- по пользователю, если сбой связан с конкретным человеком.
Дальше действуйте так:
- Найдите первое событие с ошибкой, а не последнее. Последующие — следствие.
- Посмотрите комментарий и «метаданные»: там видно объект, на котором упало.
- Сопоставьте с моментом аварийного завершения, сбоя питания или обрыва сети.
- Проверьте события «Сеанс — завершение» с необычной причиной: аварийный выход оставляет повреждённые записи.
Что нужно собрать для разбора
Если проблема повторяется, сохраните: текст ошибки как есть, время, пользователя, версию платформы и конфигурации, результат тестирования. По такому набору проблему разбирают за минуты, без него — часами.
Ссылки и итоги: что проверять после тестирования
Тест может пройти без ошибок, а данные при этом останутся с «хвостами»: ссылки на удалённое и итоги, которые не сходятся с движениями.
Ссылочная целостность
Флаг проверки ссылок находит ссылки на несуществующие объекты. Исправление предлагает варианты действий для таких ссылок: очистить ссылку, создать объект-заглушку или удалить частично потерянные данные. Какой вариант выбирать:
| Вариант | Что произойдёт | Когда уместен |
|---|---|---|
| Очистить ссылки | Реквизит станет пустым | Ссылка на уже ненужный элемент справочника |
| Создать объекты | Появится заглушка вместо потерянного | Нужно сохранить документ в проведённом виде |
| Удалить частично потерянные | Объект с обрывом данных удаляется | Мусорные записи без значения |
Для первичных документов с суммами выбирайте создание объекта. Удаление затронет учёт.
Итоги регистров
Итоги — хранимые суммы по регистрам. Если они разошлись с движениями, отчёт покажет одно, а карточка — другое. Признаки:
- остаток в оборотно-сальдовой ведомости не совпадает с карточкой счёта;
- документ проводится с ошибкой «не хватает остатка», хотя товар есть;
- отчёт по регистру считается дольше обычного.
Лечится пересчётом итогов. Он идёт в том же окне тестирования, а у отдельных регистров есть и свой режим пересчёта в разделе администрирования.
После пересчёта сверьте контрольные цифры: остаток на складе, сальдо по ключевому счёту. Запишите их до пересчёта.
Клиент-серверная база: чем проверка отличается
Здесь файла 1Cv8.1CD нет, данные лежат в СУБД. Тестирование из Конфигуратора работает так же, но вокруг него появляются свои шаги.
Что добавить к обычному порядку
- Заблокировать подключения к базе в консоли кластера, а не просто попросить людей выйти. Иначе фоновые задания вернут сеансы.
- Остановить регламентные задания на время проверки. Запущенное в середине теста задание создаёт ложные расхождения.
- Сделать бэкап средствами СУБД и отдельно выгрузку в
.dt. Бэкап быстрее разворачивается,.dtпереносится между версиями. - После тестирования проверить журнал самой СУБД: ошибки ввода-вывода и нехватка места видны там раньше, чем в 1С.
- Снять блокировку подключений и убедиться, что регламентные задания снова включены.
Перед проверкой на рабочем сервере разверните копию на тестовой базе и прогоните весь порядок там. Так вы узнаете реальное время и поймаете неожиданности без риска.
Как оценить время заранее
Точной формулы нет, но есть рабочий способ. Развернуть копию, запустить проверку на ней и замерить время. Для рабочей базы заложите это время с запасом в полтора раза: на живом сервере диск и память делятся с другими задачами.
Мини-кейс: база не открывается после отключения света
Бухгалтерия на файловой базе около 3 ГБ. После отключения питания 1С выдаёт ошибку при запуске, Конфигуратор открывается с задержкой.
Что делали:
- Все вышли, каталог базы скопировали на другой диск и проверили, что копия открывается.
- В Конфигураторе запустили «Только тестирование» с логической и ссылочной целостностью. Нашлись ошибки в нескольких таблицах.
- Включили исправление. После него повторная проверка прошла чисто.
- Сделали реиндексацию и пересчёт итогов, затем сверили остатки по ключевым счетам с контрольными цифрами за вчерашний день.
- Запустили режим Предприятия и провели два тестовых документа.
На всё ушло около двух часов, из них проверка — меньше получаса. Остальное время заняли копия и сверка. Именно в таком соотношении и стоит планировать работу.
После исправления: оптимизация и контроль
Проверку нельзя считать законченной, пока не проверено, что стало лучше, а не хуже.
Что сделать сразу
- Повторить тестирование «только проверка». Должно быть чисто.
- Сравнить размер файла базы до и после. Если после сжатия он уменьшился заметно, это нормально.
- Пройти тот же набор операций из режима Предприятия.
- Сверить контрольные цифры, записанные до начала.
- Хранить копию, сделанную перед проверкой, ещё минимум неделю.
Профилактика
- Резервная копия по расписанию и проверка, что она восстанавливается.
- Источник бесперебойного питания для сервера и рабочего места с файловой базой.
- Файловую базу не хранить на сетевой папке с нестабильным соединением.
- Плановое тестирование раз в квартал, а на активно растущих базах — чаще.
- Не открывать одну файловую базу с десятков рабочих мест. После определённой нагрузки переходите на клиент-серверный вариант.
Частые вопросы
Можно ли тестировать базу, пока в ней работают люди?
chdbfl требуют монопольного доступа. Выведите пользователей и закройте сеансы.Исправление удалило данные. Можно ли вернуть?
Как часто проверять базу?
Подойдёт ли `chdbfl` для серверной базы?
1Cv8.1CD. Для серверной базы используйте тестирование в Конфигураторе и средства СУБД.