Проверка базы 1С на ошибки: от встроенного теста до логов сервера
Содержание
Проверить базу 1С на ошибки можно прямо из Конфигуратора: пункт Администрирование → Тестирование и исправление информационной базы. Для файловой базы с повреждённым файлом 1Cv8.1CD есть отдельная утилита chdbfl.exe. Если сбои возникают у пользователей, а не при открытии базы, смотрят журнал регистрации и логи сервера.
Любая проверка в режиме исправления меняет данные. Поэтому порядок всегда один: копия базы, потом диагностика, потом лечение. Ниже методы расставлены от безопасных к радикальным, чтобы вы не начали с того, что может сломать больше.
Что проверить до начала диагностики
Половина «ошибок 1С» оказывается проблемами окружения. Потратьте десять минут на предварительный осмотр.
- 💾 Свободное место на диске с базой и на диске, куда пишутся временные файлы. Меньше 10-15% свободного — уже повод для сбоев.
- 🖥 Версия платформы на клиенте и на сервере. Если они расходятся, часть сообщений об ошибках вызвана именно этим.
- 👥 Кто сейчас в базе. Для тестирования и
chdbflнужен монопольный доступ: все пользователи должны выйти. - 🕒 Когда началось. Если сбои пошли после обновления конфигурации, перезагрузки сервера или установки патча — это сильная подсказка.
- 📄 Точный текст ошибки. Скопируйте его целиком, вместе со стеком вызовов, если он есть. По фразе «что-то не работает » искать нечего.
Сначала сделайте резервную копию. Для файловой базы это копия каталога или файла 1Cv8.1CD при закрытой базе. Для клиент-серверной — выгрузка .dt или бэкап средствами СУБД.
Встроенное тестирование и исправление информационной базы
Это основной метод, и начинать нужно с него. Он проверяет логику хранения данных в самой базе, а не прикладной код.
Как запустить
- Закройте базу у всех пользователей.
- Откройте базу в режиме
Конфигуратор. - Выберите
Администрирование → Тестирование и исправление информационной базы. - Отметьте нужные проверки (таблица ниже).
- Выберите режим:
Тестирование и исправлениеилиТолько тестирование. - Нажмите
Выполнитьи дождитесь окончания. Результат пишется в окно сообщений.
Для первого прогона выбирайте именно Только тестирование. Так вы увидите, есть ли проблемы, и ничего не измените.
Что значат галочки
| Проверка | Что делает | Когда нужна |
|---|---|---|
| Проверка логической целостности | Ищет нарушения в структуре и связях таблиц | Ошибки при открытии форм, «неверный формат потока» |
| Проверка ссылочной целостности | Находит ссылки на несуществующие объекты | В документах «пустые» значения вместо контрагента или номенклатуры |
| Реиндексация таблиц | Пересоздаёт индексы | Медленные списки, странный порядок записей |
| Пересчёт итогов | Заново считает таблицы итогов регистров | Остатки в отчётах не совпадают с данными |
| Сжатие таблиц | Уплотняет данные | Файл базы сильно раздулся |
| Реструктуризация таблиц | Перестраивает таблицы по описанию в конфигурации | Сбой после прерванного обновления |
Для ссылочной целостности есть дополнительные опции: что делать с битой ссылкой — создавать объект, очищать ссылку или не трогать. Очистка ссылок безопаснее создания «заглушек», но потеряет данные в полях, которые ссылались на удалённый объект.
Если тестирование прервалось с сообщением о невозможности прочитать страницу или таблицу, это уже не логика, а повреждение файла. Идём к следующему разделу.
chdbfl на копии файла. Клиент-серверная — проверяйте СУБД и дисковую подсистему.Утилита chdbfl для файловой базы: когда и как применять
chdbfl.exe лежит в каталоге bin установленной платформы, рядом с 1cv8.exe. Она работает с самим файлом 1Cv8.1CD и умеет чинить такие повреждения, которые не берёт встроенное тестирование. Например, когда база вообще не открывается.
Подходит она только для файловых баз. Для клиент-серверных здесь нет файла 1Cv8.1CD, значит, и применять её не к чему.
Порядок работы
- Закройте базу у всех. Проверьте, что в диспетчере задач нет висящих процессов
1cv8. - Скопируйте файл
1Cv8.1CDв безопасное место. - Запустите
chdbfl.exeиз каталогаbin. - Укажите путь к файлу базы.
- Включите опцию исправления, если хотите не только найти проблему, но и устранить её. Без неё утилита только сообщит о найденном.
- Запустите проверку и прочитайте итог.
Утилита выводит найденные нарушения в журнал и по возможности исправляет. Если после неё база открывается, обязательно прогоните ещё и встроенное тестирование: 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С живут на одной машине, они делят оперативную память. Переполнение приведёт к падениям.
Сеть
Типичные симптомы: зависания при записи документов, обрывы сеансов, ошибка «Соединение с сервером потеряно».
Проверьте:
- Доступность сервера:
pingи измерение времени отклика. Скачки задержки важнее среднего значения. - Потери пакетов на маршруте.
- Работу антивируса и брандмауэра. Они любят блокировать файловые базы на сетевых папках и порты кластера.
- Для файловой базы по сети — стабильность самой шары. Работа 1CD через слабый Wi-Fi гарантирует повреждения.
Для оценки общей скорости работы системы пользуются тестом производительности вроде теста Гилёва. Он не ищет ошибки, но показывает, не просела ли машина по сравнению с нормой.
chdbfl на копии. Клиент-серверная — проверка СУБД и восстановление из бэкапа.Как не допускать ошибок: мониторинг и расписание
Разовая проверка решает текущую беду. Чтобы не оказаться снова в аварии, нужен регулярный контроль.
Что автоматизировать
- ⏰ Резервное копирование. Ежедневно, плюс отдельная копия перед обновлением. Раз в месяц проверяйте, что копию вообще можно развернуть.
- 🧪 Тестирование базы. Раз в неделю или месяц запускайте проверку по расписанию из командной строки на копии, а не на рабочей базе.
- 🧹 Обслуживание СУБД. Очистка, обновление статистики, перестроение индексов по плану.
- 📊 Контроль места на дисках. Оповещение при падении ниже порога.
- 📋 Разбор журнала. Раз в день просматривать ошибки уровня
Ошибка— это пять минут, которые экономят часы.
Простые правила
- Обновляйте платформу и конфигурацию по плану, а не «когда сломалось».
- Пользователи выходят из базы корректно, а не выдёргиванием шнура питания.
- Не храните файловую базу на сетевой папке с нестабильным соединением.
- Не работайте с одной базой на нескольких версиях платформы.
- Любое обновление начинается с копии.
Частые вопросы
Можно ли проверять базу, пока в ней работают пользователи?
Как часто нужно тестировать базу?
Чем отличается тестирование базы от проверки конфигурации?
`chdbfl` подойдёт для клиент-серверной базы?
1Cv8.1CD, то есть с файловыми базами.