Проверка базы 1С на ошибки: от встроенного теста до логов сервера

· 9 мин

Содержание

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

Любая проверка в режиме исправления меняет данные. Поэтому порядок всегда один: копия базы, потом диагностика, потом лечение. Ниже методы расставлены от безопасных к радикальным, чтобы вы не начали с того, что может сломать больше.

Что проверить до начала диагностики

Половина «ошибок 1С» оказывается проблемами окружения. Потратьте десять минут на предварительный осмотр.

  • 💾 Свободное место на диске с базой и на диске, куда пишутся временные файлы. Меньше 10-15% свободного — уже повод для сбоев.
  • 🖥 Версия платформы на клиенте и на сервере. Если они расходятся, часть сообщений об ошибках вызвана именно этим.
  • 👥 Кто сейчас в базе. Для тестирования и chdbfl нужен монопольный доступ: все пользователи должны выйти.
  • 🕒 Когда началось. Если сбои пошли после обновления конфигурации, перезагрузки сервера или установки патча — это сильная подсказка.
  • 📄 Точный текст ошибки. Скопируйте его целиком, вместе со стеком вызовов, если он есть. По фразе «что-то не работает » искать нечего.

Сначала сделайте резервную копию. Для файловой базы это копия каталога или файла 1Cv8.1CD при закрытой базе. Для клиент-серверной — выгрузка .dt или бэкап средствами СУБД.

Встроенное тестирование и исправление информационной базы

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

Как запустить

  1. Закройте базу у всех пользователей.
  2. Откройте базу в режиме Конфигуратор.
  3. Выберите Администрирование → Тестирование и исправление информационной базы.
  4. Отметьте нужные проверки (таблица ниже).
  5. Выберите режим: Тестирование и исправление или Только тестирование.
  6. Нажмите Выполнить и дождитесь окончания. Результат пишется в окно сообщений.

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

Что значат галочки

ПроверкаЧто делаетКогда нужна
Проверка логической целостностиИщет нарушения в структуре и связях таблицОшибки при открытии форм, «неверный формат потока»
Проверка ссылочной целостностиНаходит ссылки на несуществующие объектыВ документах «пустые» значения вместо контрагента или номенклатуры
Реиндексация таблицПересоздаёт индексыМедленные списки, странный порядок записей
Пересчёт итоговЗаново считает таблицы итогов регистровОстатки в отчётах не совпадают с данными
Сжатие таблицУплотняет данныеФайл базы сильно раздулся
Реструктуризация таблицПерестраивает таблицы по описанию в конфигурацииСбой после прерванного обновления

Для ссылочной целостности есть дополнительные опции: что делать с битой ссылкой — создавать объект, очищать ссылку или не трогать. Очистка ссылок безопаснее создания «заглушек», но потеряет данные в полях, которые ссылались на удалённый объект.

Если тестирование прервалось с сообщением о невозможности прочитать страницу или таблицу, это уже не логика, а повреждение файла. Идём к следующему разделу.

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

Утилита chdbfl для файловой базы: когда и как применять

chdbfl.exe лежит в каталоге bin установленной платформы, рядом с 1cv8.exe. Она работает с самим файлом 1Cv8.1CD и умеет чинить такие повреждения, которые не берёт встроенное тестирование. Например, когда база вообще не открывается.

Подходит она только для файловых баз. Для клиент-серверных здесь нет файла 1Cv8.1CD, значит, и применять её не к чему.

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

  1. Закройте базу у всех. Проверьте, что в диспетчере задач нет висящих процессов 1cv8.
  2. Скопируйте файл 1Cv8.1CD в безопасное место.
  3. Запустите chdbfl.exe из каталога bin.
  4. Укажите путь к файлу базы.
  5. Включите опцию исправления, если хотите не только найти проблему, но и устранить её. Без неё утилита только сообщит о найденном.
  6. Запустите проверку и прочитайте итог.

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

Запускайте утилиту только на копии или после резервной копии. Исправление может удалить часть записей, которые не удалось восстановить. Откатить это нельзя.

Если после chdbfl база по-прежнему не открывается, остаются два пути: свежий бэкап или выгрузка данных из последней рабочей копии.

Журнал регистрации и логи сервера

Когда ошибка плавающая, бьёт только некоторых пользователей или только в определённое время, тестирование ничего не покажет. Данные целы, а сбои есть. Тут нужны логи.

Журнал регистрации

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

Что настроить в отборе:

  • Уровень важности. Для поиска проблем ставьте Ошибка и Предупреждение. Уровень Информация завалит вас рутиной.
  • Период. Сузьте до часа, в который случился сбой.
  • Пользователь и компьютер. Если жалуется один человек, фильтруйте по нему.
  • Событие. Например, записи об отказе в доступе или о блокировках.

Двойной щелчок по записи покажет подробности: метаданные, комментарий, иногда текст ошибки. Типичные находки — «Ошибка выполнения транзакции», превышение времени ожидания блокировки, отказ проведения документа.

Технологический журнал

Журнал регистрации видит только прикладной уровень. Всё, что происходит на платформе и сервере (падения процессов, нехватка памяти, долгие запросы), пишет технологический журнал. Он включается файлом logcfg.xml в каталоге conf платформы. В нём вы задаёте, какие события писать и куда складывать файлы.

Хороший тон такой:

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

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

Проверка конфигурации и поиск ошибок в коде

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

Запуск: в Конфигураторе Конфигурация → Проверка конфигурации. Откроется окно с набором проверок. Основные группы такие:

  • 🔹 внутренняя целостность конфигурации;
  • 🔹 некорректные ссылки на объекты метаданных;
  • 🔹 синтаксический контроль модулей на клиенте и на сервере;
  • 🔹 поиск неиспользуемых или недоступных процедур;
  • 🔹 проверка использования прав и ролей.

Ошибка модуля выглядит как строка вида «Процедура или функция с указанным именем не определена», с указанием модуля и номера строки. Двойной щелчок по сообщению переходит прямо к месту.

Конфигурация, которая работала годами, но «рассыпалась» после слияния доработок, чаще всего даёт ошибки именно здесь. Проверьте и основную конфигурацию, и расширения.

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

То же самое запускается без интерфейса. Схема примерно такая:

"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /CheckConfig -ConfigLogIntegrity -IncorrectReferences /Out "C:\logs\check.txt"

Набор ключей зависит от версии платформы, поэтому сверьтесь с встроенной справкой по параметрам запуска. Результат в файле можно разбирать скриптом.

Диагностика проблем с СУБД и сетью

Для клиент-серверной базы часть «ошибок 1С» рождается ниже, в СУБД или на сети. Тесты 1С этого не увидят.

База данных

  • PostgreSQL. Проверьте, работает ли автоочистка (autovacuum), давно ли делали VACUUM и ANALYZE. Устаревшая статистика замедляет запросы до абсурда.
  • MS SQL Server. Для проверки физической целостности запускают DBCC CHECKDB по базе. Следите за планом обслуживания: индексы, статистика, резервные копии.
  • Диск. Ошибки чтения и записи в логах системы — повод немедленно менять накопитель.
  • Память. Если СУБД и сервер 1С живут на одной машине, они делят оперативную память. Переполнение приведёт к падениям.

Сеть

Типичные симптомы: зависания при записи документов, обрывы сеансов, ошибка «Соединение с сервером потеряно».

Проверьте:

  1. Доступность сервера: ping и измерение времени отклика. Скачки задержки важнее среднего значения.
  2. Потери пакетов на маршруте.
  3. Работу антивируса и брандмауэра. Они любят блокировать файловые базы на сетевых папках и порты кластера.
  4. Для файловой базы по сети — стабильность самой шары. Работа 1CD через слабый Wi-Fi гарантирует повреждения.

Для оценки общей скорости работы системы пользуются тестом производительности вроде теста Гилёва. Он не ищет ошибки, но показывает, не просела ли машина по сравнению с нормой.

Где искать проблему?

Как не допускать ошибок: мониторинг и расписание

Разовая проверка решает текущую беду. Чтобы не оказаться снова в аварии, нужен регулярный контроль.

Что автоматизировать

  • ⏰ Резервное копирование. Ежедневно, плюс отдельная копия перед обновлением. Раз в месяц проверяйте, что копию вообще можно развернуть.
  • 🧪 Тестирование базы. Раз в неделю или месяц запускайте проверку по расписанию из командной строки на копии, а не на рабочей базе.
  • 🧹 Обслуживание СУБД. Очистка, обновление статистики, перестроение индексов по плану.
  • 📊 Контроль места на дисках. Оповещение при падении ниже порога.
  • 📋 Разбор журнала. Раз в день просматривать ошибки уровня Ошибка — это пять минут, которые экономят часы.

Простые правила

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

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

Можно ли проверять базу, пока в ней работают пользователи?
Нет. Тестирование и исправление требуют монопольного доступа. Если кто-то остался в базе, запуск не состоится или проверка будет неполной.
Как часто нужно тестировать базу?
Для живой рабочей базы разумно раз в месяц или после любого сбоя питания и аварийного завершения. Не на рабочей копии, а на отдельной.
Чем отличается тестирование базы от проверки конфигурации?
Тестирование ищет повреждения в данных и таблицах. Проверка конфигурации ищет ошибки в метаданных и коде модулей. Это разные уровни, и результат одной проверки ничего не говорит о другой.
`chdbfl` подойдёт для клиент-серверной базы?
Нет. Утилита работает только с файлом 1Cv8.1CD, то есть с файловыми базами.
После исправления базы пропали данные. Это нормально?
Такое случается, когда битые записи удаляются. Именно поэтому исправление запускают на копии и сверяют результат с исходной базой до того, как заменить рабочую.
Тестирование зависло, что делать?
На больших базах оно идёт долго, часы — нормально. Если нагрузка на диск и процессор есть, ждите. Если ничего не происходит, завершайте процесс, проверяйте диск и запускайте заново на копии.