Тестирование и исправление базы 1С: от копии до проверки результата

· 9 мин

Содержание

Тестировать базу 1С нужно не «когда всё сломалось», а до того, как сломается. Распространённое заблуждение: запустил проверку с галочкой «исправлять ошибки» — и база здорова. На деле исправление может удалить повреждённые записи, поэтому порядок такой: копия, проверка без исправлений, чтение результата, и только потом исправление.

Для файловой базы есть два инструмента: утилита chdbfl.exe и встроенное в Конфигуратор «Тестирование и исправление». Для клиент-серверной базы работает второе и проверка средствами СУБД. Ниже — полный порядок действий и что делать с результатом.

Что сделать до проверки: копия, монопольный доступ, место на диске

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

Минимальный набор перед стартом

  1. Выгнать всех пользователей. Список сеансов — в консоли кластера (серверная база) или в окне «Активные пользователи» (файловая).
  2. Сделать копию. Для файловой — скопировать каталог с файлом 1Cv8.1CD целиком. Для серверной — выгрузка в .dt или бэкап СУБД.
  3. Проверить свободное место: нужен запас не меньше размера базы. Сжатие и реиндексация создают временные данные.
  4. Закрыть всё, что держит файл: антивирус с проверкой «на лету», резервное копирование , открытые Конфигураторы.
  5. Запомнить версию платформы. Тестировать лучше той версией, под которой база работала последней.

Если копии нет, тестировать с исправлением нельзя. Сначала копия, потом галочка «Исправлять».

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

Когда тестировать не нужно

  • База просто «тормозит». Это обычно не повреждение, а блокировки, фрагментация в СУБД или слабый диск.
  • Ошибка воспроизводится у одного пользователя. Сначала очистите его локальный кэш, а не базу.
  • Копии нет, а база нужна завтра. Сделайте копию, даже если придётся ждать.

Утилита chdbfl для файловой базы: запуск и режимы

chdbfl.exe лежит в каталоге bin установленной платформы. Работает только с файловым вариантом (файл 1Cv8.1CD). Для серверных баз она не подходит.

Порядок работы

  1. Закройте базу везде, где она открыта.
  2. Запустите chdbfl.exe из каталога bin нужной версии платформы.
  3. Укажите путь к файлу 1Cv8.1CD.
  4. Первый проход — только проверка: галочку исправления не ставьте.
  5. Дождитесь окончания. На базе в десятки гигабайт это может занять часы.
  6. Прочитайте сообщения. Если ошибок нет, на этом всё.
  7. Если ошибки есть, вернитесь к копии, ещё раз убедитесь, что она читается, и запустите повторно с исправлением.

Размер базы и скорость диска сильно влияют на время. Ориентир: база на 5 ГБ на SSD проверяется за десятки минут, на старом HDD — заметно дольше.

Что умеет утилита и чем она отличается от Конфигуратора

ИнструментДля каких базКогда брать
chdbfl.exeТолько файловыеБаза не открывается в Конфигураторе, платформа падает при входе
Тестирование и исправление в КонфигуратореФайловые и серверныеБаза запускается, нужна плановая проверка
Инструменты СУБДСерверныеПодозрение на повреждение на уровне СУБД

Если база не открывается в Конфигураторе вообще, chdbfl — первый кандидат. Если открывается, удобнее встроенная проверка: в ней больше режимов.

Тестирование и исправление в Конфигураторе

Запустите Конфигуратор с монопольным доступом к базе. В меню Администрирование выберите Тестирование и исправление информационной базы.

Что стоит в окне настроек

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

  • Реиндексация таблиц. Перестраивает индексы. Безопасна, нужна после сбоев.
  • Проверка логической целостности. Ищет повреждения в самих структурах таблиц.
  • Проверка ссылочной целостности. Ищет ссылки на объекты, которых уже нет.
  • Пересчёт итогов. Пересобирает таблицы итогов регистров.
  • Сжатие таблиц. Уменьшает файл, но требует места и времени.
  • Реструктуризация таблиц. Нужна редко, после проблем с обновлением конфигурации.

Ниже — режим: «Только тестирование» либо «Тестирование и исправление». Всегда начинайте с первого.

Три запуска вместо одного

ЗапускРежимЧто включить
1Только тестированиеЛогическая и ссылочная целостность
2Тестирование и исправлениеТе же флаги, если в первом нашлись ошибки
3Тестирование и исправлениеРеиндексация, пересчёт итогов, при необходимости сжатие

Разделение даёт вам контрольную точку. После запуска 1 вы знаете, что именно сломано. После запуска 2 видите, помогло ли.

Тестирование занимает базу монопольно. На рабочем сервере планируйте окно вечером или в выходные.

Режим «Предприятие»: проверка глазами пользователя

Тест в Конфигураторе проверяет таблицы, но не отвечает на вопрос «работает ли база для людей». Эту проверку делают отдельно: запускают 1С:Предприятие под администратором и проходят типовые операции.

Минимальный набор проверок

  1. Открыть списки основных справочников и документов. Прокрутить до конца: сбои часто вылезают на старых записях.
  2. Провести и отменить проведение двух-трёх документов разных видов.
  3. Сформировать оборотно-сальдовую ведомость за длинный период.
  4. Открыть форму, на которой раньше падало, и повторить действие.
  5. Запустить регламентные задания вручную, если они есть.

Если в списке есть «битая» строка, 1С сообщает об ошибке при чтении записи. Запомните объект: он пригодится при разборе журнала.

Диагностика: выберите симптом

Журнал регистрации и логи: где искать причину

Результат тестирования говорит, что повреждено. Журнал регистрации помогает понять, как это случилось и кто последним работал с объектом.

Как читать журнал

Откройте журнал регистрации из раздела администрирования (в типовых конфигурациях — в разделе настроек и администрирования, поиск по форме со словом «журнал» найдёт быстро). Настройте отбор:

  • по времени: за час-два до первого сообщения об ошибке;
  • по уровню: «Ошибка» и «Предупреждение»;
  • по событию: фоновые задания, проведение, сеансы;
  • по пользователю, если сбой связан с конкретным человеком.

Дальше действуйте так:

  1. Найдите первое событие с ошибкой, а не последнее. Последующие — следствие.
  2. Посмотрите комментарий и «метаданные»: там видно объект, на котором упало.
  3. Сопоставьте с моментом аварийного завершения, сбоя питания или обрыва сети.
  4. Проверьте события «Сеанс — завершение» с необычной причиной: аварийный выход оставляет повреждённые записи.

Что нужно собрать для разбора

Если проблема повторяется, сохраните: текст ошибки как есть, время, пользователя, версию платформы и конфигурации, результат тестирования. По такому набору проблему разбирают за минуты, без него — часами.

Ссылки и итоги: что проверять после тестирования

Тест может пройти без ошибок, а данные при этом останутся с «хвостами»: ссылки на удалённое и итоги, которые не сходятся с движениями.

Ссылочная целостность

Флаг проверки ссылок находит ссылки на несуществующие объекты. Исправление предлагает варианты действий для таких ссылок: очистить ссылку, создать объект-заглушку или удалить частично потерянные данные. Какой вариант выбирать:

ВариантЧто произойдётКогда уместен
Очистить ссылкиРеквизит станет пустымСсылка на уже ненужный элемент справочника
Создать объектыПоявится заглушка вместо потерянногоНужно сохранить документ в проведённом виде
Удалить частично потерянныеОбъект с обрывом данных удаляетсяМусорные записи без значения

Для первичных документов с суммами выбирайте создание объекта. Удаление затронет учёт.

Итоги регистров

Итоги — хранимые суммы по регистрам. Если они разошлись с движениями, отчёт покажет одно, а карточка — другое. Признаки:

  • остаток в оборотно-сальдовой ведомости не совпадает с карточкой счёта;
  • документ проводится с ошибкой «не хватает остатка», хотя товар есть;
  • отчёт по регистру считается дольше обычного.

Лечится пересчётом итогов. Он идёт в том же окне тестирования, а у отдельных регистров есть и свой режим пересчёта в разделе администрирования.

После пересчёта сверьте контрольные цифры: остаток на складе, сальдо по ключевому счёту. Запишите их до пересчёта.

Клиент-серверная база: чем проверка отличается

Здесь файла 1Cv8.1CD нет, данные лежат в СУБД. Тестирование из Конфигуратора работает так же, но вокруг него появляются свои шаги.

Что добавить к обычному порядку

  1. Заблокировать подключения к базе в консоли кластера, а не просто попросить людей выйти. Иначе фоновые задания вернут сеансы.
  2. Остановить регламентные задания на время проверки. Запущенное в середине теста задание создаёт ложные расхождения.
  3. Сделать бэкап средствами СУБД и отдельно выгрузку в .dt. Бэкап быстрее разворачивается, .dt переносится между версиями.
  4. После тестирования проверить журнал самой СУБД: ошибки ввода-вывода и нехватка места видны там раньше, чем в 1С.
  5. Снять блокировку подключений и убедиться, что регламентные задания снова включены.

Перед проверкой на рабочем сервере разверните копию на тестовой базе и прогоните весь порядок там. Так вы узнаете реальное время и поймаете неожиданности без риска.

Как оценить время заранее

Точной формулы нет, но есть рабочий способ. Развернуть копию, запустить проверку на ней и замерить время. Для рабочей базы заложите это время с запасом в полтора раза: на живом сервере диск и память делятся с другими задачами.

Мини-кейс: база не открывается после отключения света

Бухгалтерия на файловой базе около 3 ГБ. После отключения питания 1С выдаёт ошибку при запуске, Конфигуратор открывается с задержкой.

Что делали:

  1. Все вышли, каталог базы скопировали на другой диск и проверили, что копия открывается.
  2. В Конфигураторе запустили «Только тестирование» с логической и ссылочной целостностью. Нашлись ошибки в нескольких таблицах.
  3. Включили исправление. После него повторная проверка прошла чисто.
  4. Сделали реиндексацию и пересчёт итогов, затем сверили остатки по ключевым счетам с контрольными цифрами за вчерашний день.
  5. Запустили режим Предприятия и провели два тестовых документа.

На всё ушло около двух часов, из них проверка — меньше получаса. Остальное время заняли копия и сверка. Именно в таком соотношении и стоит планировать работу.

После исправления: оптимизация и контроль

Проверку нельзя считать законченной, пока не проверено, что стало лучше, а не хуже.

Что сделать сразу

  1. Повторить тестирование «только проверка». Должно быть чисто.
  2. Сравнить размер файла базы до и после. Если после сжатия он уменьшился заметно, это нормально.
  3. Пройти тот же набор операций из режима Предприятия.
  4. Сверить контрольные цифры, записанные до начала.
  5. Хранить копию, сделанную перед проверкой, ещё минимум неделю.

Профилактика

  • Резервная копия по расписанию и проверка, что она восстанавливается.
  • Источник бесперебойного питания для сервера и рабочего места с файловой базой.
  • Файловую базу не хранить на сетевой папке с нестабильным соединением.
  • Плановое тестирование раз в квартал, а на активно растущих базах — чаще.
  • Не открывать одну файловую базу с десятков рабочих мест. После определённой нагрузки переходите на клиент-серверный вариант.

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

Можно ли тестировать базу, пока в ней работают люди?
Нет. Тестирование и chdbfl требуют монопольного доступа. Выведите пользователей и закройте сеансы.
Исправление удалило данные. Можно ли вернуть?
Только из копии, сделанной до запуска. Поэтому копия обязательна, а исправление запускают после чистой проверки без него.
Как часто проверять базу?
Файловую — раз в квартал и после каждого аварийного отключения. Серверную — по тому же графику плюс проверка бэкапов СУБД.
Подойдёт ли `chdbfl` для серверной базы?
Нет, утилита работает только с файлом 1Cv8.1CD. Для серверной базы используйте тестирование в Конфигураторе и средства СУБД.
Сколько идёт проверка?
Зависит от размера и диска. Для баз в десятки гигабайт закладывайте ночь и не прерывайте процесс: прерванное исправление хуже, чем его отсутствие.