Проверка информационной базы 1С на ошибки: от резервной копии до проверки по расписанию
Содержание
Протестировать базу 1С 8.3 можно тремя способами. Файловую базу
сначала проверяют утилитой chdbfl.exe (физическая целостность файла 1Cv8.1CD), затем в конфигураторе: Администрирование → Тестирование и исправление (логика, ссылки, итоги). Серверную базу
проверяют тем же пунктом конфигуратора плюс средствами СУБД: DBCC CHECKDB в MS SQL или pg_amcheck в PostgreSQL.
Все способы требуют монопольного доступа и свежей копии. Режим «только тестирование» базу не меняет, режим «тестирование и исправление» может удалить или заменить данные. Поэтому порядок такой: копия → проверка без исправления → разбор отчёта → исправление.
| Способ | Что проверяет | Для какой базы | Когда выбирать |
|---|---|---|---|
chdbfl.exe | Структуру файла 1Cv8.1CD, страницы, индексы | Только файловая | Ошибки чтения, Файл базы данных поврежден, база не открывается |
| Тестирование и исправление в конфигураторе | Логическую и ссылочную целостность, итоги, индексы | Файловая и серверная | Битые ссылки, неверные остатки, ошибки при проведении |
| Средства СУБД | Физическую целостность таблиц и индексов на стороне сервера | Серверная | Ошибки СУБД в тексте сообщения, сбой диска или сервера |
| Журнал регистрации и техжурнал | Не проверяют, а показывают, где и когда падает | Любая | Ошибка плавающая, непонятно, с какого объекта начать |
Подготовка базы 1С к тестированию
Тестирование и исправление — одна из немногих операций, которым нужен монопольный доступ. Пока в базе есть хотя бы один сеанс, конфигуратор её не запустит.
Перед проверкой пройдите короткий список:
Какую копию делать
- 📁 Файловая база. Скопируйте целиком папку, где лежит
1Cv8.1CD. Это надёжнее выгрузки: повреждённая база часто не выгружается в.dt, а файл копируется всегда. - 🗄️ Серверная база. Полный бэкап в СУБД (
BACKUP DATABASEв MS SQL,pg_dumpв PostgreSQL). Выгрузка.dtчерезАдминистрирование → Выгрузить информационную базу— дополнительная страховка, если база выгружается без ошибок.
Не запускайте «тестирование и исправление» без копии. Если в базе много битых ссылок, исправление может удалить документы или заменить их пустыми объектами, и откатить это можно только из копии.
Как освободить базу
В файловой базе подключённых пользователей видно в режиме предприятия. В конфигурациях на БСП есть Администрирование → Обслуживание → Активные пользователи, оттуда сеансы можно завершить.
В серверной базе сеансы видны в консоли администрирования кластера. Принудительное завершение оборвёт работу пользователей без сохранения, поэтому делайте его только после предупреждения.
Тестирование и исправление информационной базы в конфигураторе
Это основной инструмент. Откройте базу в режиме «Конфигуратор» и выберите Администрирование → Тестирование и исправление. Откроется форма с флажками проверок и режимом работы.
Какие проверки отмечать
| Флажок | Что делает | Когда нужен |
|---|---|---|
| Реиндексация таблиц информационной базы | Перестраивает индексы | Медленные запросы, ошибки сортировки и поиска |
| Проверка логической целостности | Ищет нарушения внутренней структуры данных | Всегда при первой проверке |
| Проверка ссылочной целостности | Ищет ссылки на несуществующие объекты | Записи <Объект не найден> в документах и справочниках |
| Пересчёт итогов | Пересчитывает итоги регистров | Остатки в отчётах не сходятся с движениями |
| Сжатие таблиц информационной базы | Убирает пустые страницы | Файловая база сильно выросла после удаления данных |
| Реструктуризация таблиц | Пересоздаёт таблицы | Только по прямой рекомендации после ошибки, это самый долгий пункт |
Для первого прохода хватит логической и ссылочной целостности. Реиндексацию и пересчёт итогов добавляйте, если видите конкретные симптомы.
Режим: тестирование или исправление
Внизу формы выберите режим:
- Тестирование. Программа только сообщает о найденных ошибках, данные не меняет. С него и начинайте.
- Тестирование и исправление. Программа исправляет найденное по правилам, которые вы задаёте ниже.
Для битых ссылок есть три варианта:
- 🧩 Создавать объекты. Вместо отсутствующего объекта создаётся пустой элемент-заглушка. Документы остаются на месте, заглушку потом можно заполнить или заменить.
- ✂️ Очищать ссылки. Ссылка в реквизите становится пустой. Документ сохранится, но потеряет связь, например, с контрагентом.
- ⏸️ Не изменять. Ссылка остаётся битой, ошибка просто попадает в отчёт.
Для объектов с частичной потерей данных варианты похожие: создать объект с тем, что уцелело, или удалить его.
Для учётной базы безопаснее «Создавать объекты». Пустые заглушки легко найти фильтром по пустому наименованию и разобрать вручную. Удаление и очистка ссылок теряют связи без следа.
Как читать результат
Сообщения выводятся в окно служебных сообщений конфигуратора. Сохраните их в текстовый файл до закрытия окна: по ним вы будете решать, что исправлять.
Если ошибок нет, в конце будет сообщение о завершении тестирования. Если их сотни и все об одном типе объектов, например об одном регистре, проблема обычно локальная: неудачный обмен, сбой при загрузке или прерванная запись.
Что проверить в режиме 1С:Предприятие
Тестирование в конфигураторе ищет повреждения структуры. Но база может быть целой технически и при этом содержать учётные ошибки. Их ловят в пользовательском режиме.
- 🗂️ Удаление помеченных объектов.
Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов. При удалении программа проверяет, есть ли ссылки на объект, и показывает, что мешает удалению. Хороший способ найти «хвосты». - 📊 Экспресс-проверка ведения учёта в 1С:Бухгалтерии 3.0, раздел
Отчеты. Она ищет учётные ошибки: отрицательные остатки, незакрытые счета, расхождения в НДС. - 🔁 Перепроведение документов за период. Ошибки проведения покажут документы с испорченными данными. Перед массовым перепроведением сделайте копию: оно меняет движения.
- 📜 Журнал регистрации:
Администрирование → Обслуживание → Журнал регистрации. Отбор по уровню «Ошибка» за последние дни часто сразу показывает виновника.
Для конфигураций без этих пунктов журнал регистрации открывается и из конфигуратора: Администрирование → Журнал регистрации.
Утилита chdbfl для файловой базы 1С
chdbfl.exe проверяет физическую целостность файла 1Cv8.1CD: страницы, внутренние таблицы, индексы. Конфигуратор до этой проверки может просто не дойти, если файл повреждён на нижнем уровне.
Утилита лежит в папке bin установленной платформы, например C:\Program Files\1cv8\8.3.XX.XXXX\bin\chdbfl.exe. Номер подставьте свой: берите версию платформы, на которой работает база.
Порядок работы
- Закройте все сеансы. Утилита работает с файлом напрямую и не запустится, пока он занят.
- Сделайте копию папки с базой.
- Запустите
chdbfl.exeи укажите путь к файлу1Cv8.1CD. - Первый запуск — без флажка «Исправлять обнаруженные ошибки». Посмотрите, что найдено.
- Если ошибки есть, запустите повторно с флажком исправления.
- После
chdbflоткройте базу в конфигураторе и выполните тестирование с проверкой логической и ссылочной целостности.
Исправление в chdbfl может удалить повреждённые записи. Если в отчёте упоминаются таблицы документов или регистров, после исправления проверьте остатки и обороты за последние периоды.
Для серверной базы chdbfl бесполезна: данные лежат в СУБД, файла 1Cv8.1CD там нет.
Как протестировать серверную базу 1С
В клиент-серверном варианте проверка идёт на двух уровнях: данные 1С (конфигуратор) и сами таблицы в СУБД.
Уровень 1С
Администрирование → Тестирование и исправление работает и для серверной базы. Конфигуратор подключается к кластеру, всю работу выполняют рабочие процессы сервера. На время проверки установите блокировку начала сеансов в консоли кластера, чтобы пользователи и регламентные задания не заходили в базу.
Блокировка не завершает уже открытые сеансы. Их придётся завершить вручную в консоли, и работа пользователей оборвётся. Делайте это вне рабочего времени.
Уровень СУБД
Если в тексте ошибки 1С есть фрагмент Ошибка СУБД, проверяйте и саму базу на сервере.
MS SQL Server:
DBCC CHECKDB ('buh') WITH NO_INFOMSGS;
Команда без параметров исправления ничего не меняет, только сообщает об ошибках. Варианты с исправлением запускайте только после полного бэкапа и в однопользовательском режиме базы.
PostgreSQL (версия 14 и выше):
pg_amcheck -d buh --heapallindexed
Утилита проверяет таблицы и B-tree-индексы. Для более старых версий есть расширение amcheck с функциями проверки индексов. Регулярное обслуживание в PostgreSQL — VACUUM ANALYZE: оно не ищет повреждения, но держит статистику и таблицы в порядке.
| Где ошибка | Что запускать |
|---|---|
<Объект не найден>, итоги не сходятся | Конфигуратор: ссылочная целостность, пересчёт итогов |
Ошибка СУБД с упоминанием страницы или индекса | DBCC CHECKDB / pg_amcheck |
| Запросы стали медленными без сбоев | Реиндексация, обслуживание статистики в СУБД |
Журнал регистрации и технологический журнал 1С
Журналы не исправляют базу, но показывают, с чего начать. Это экономит прогоны тестирования вслепую.
Журнал регистрации
Хранится в папке 1Cv8Log: у файловой базы — рядом с 1Cv8.1CD, у серверной — в каталоге кластера на сервере. В новых версиях платформы это файл .lgd, в старом формате — пара .lgf и .lgp.
Что искать:
- 🔴 События с уровнем «Ошибка» за период, когда началась проблема.
- 👤 Пользователя и компьютер: часто это один обмен или одна обработка.
- 📄 Данные события: ссылка на документ, на котором упала запись.
Если журнал сам по себе огромный и открывается минутами, сократите его: в конфигураторе Администрирование → Настройка журнала регистрации позволяет сократить журнал и выбрать уровень событий.
Технологический журнал
Нужен, когда ошибка не видна в журнале регистрации: падения процессов, исключения платформы, проблемы с СУБД. Включается файлом logcfg.xml в папке conf платформы.
Минимальная настройка, которая пишет только исключения:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
history="24" — хранить логи 24 часа. Папка D:\techlog должна существовать, и у пользователя, от имени которого работает 1С, должны быть права на запись.
Не оставляйте подробный техжурнал включённым надолго: с событиями запросов к СУБД он может занять десятки гигабайт за день. Соберите данные и удалите logcfg.xml.
Ошибки при тестировании базы и что с ними делать
chdbfl.exe с исправлением, затем тестирование в конфигураторе. Перед этим — копия файла 1Cv8.1CD.Очистка кэша не трогает данные базы, но закройте 1С на этом компьютере перед удалением папок. При следующем запуске список баз и настройки клиента подтянутся заново, первый вход будет дольше.
Автоматическая проверка базы по расписанию
Регулярное тестирование вручную быстро бросают. Проверку можно запускать пакетно из командной строки и повесить на планировщик Windows.
Пример .bat для ночной проверки файловой базы без исправления:
@echo off
set V8="C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe"
%V8% DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" ^
/IBCheckAndRepair -LogAndRefsIntegrity -TestOnly ^
/Out "D:\Logs\check_buh.log" /DisableStartupDialogs
Для серверной базы вместо /F "путь" укажите /S "сервер\имя_базы". Ключ -TestOnly оставляет базу без изменений, отчёт попадает в файл из /Out.
Как построить регламент
| Что | Как часто | Чем |
|---|---|---|
| Резервная копия | Ежедневно | Копирование файла / бэкап СУБД |
| Тестирование без исправления | Раз в неделю, ночью | .bat с /IBCheckAndRepair -TestOnly |
| Проверка таблиц в СУБД | Раз в неделю | План обслуживания MS SQL, pg_amcheck по cron |
| Просмотр журнала регистрации | Раз в неделю | Отбор по уровню «Ошибка» |
| Сжатие файловой базы | По необходимости, после крупных удалений | Флажок «Сжатие таблиц» в конфигураторе |
Пароль в .bat лежит открытым текстом. Создайте для регламента отдельного пользователя базы, дайте права на файл только учётной записи планировщика и не держите скрипт в общей папке.
Пакетный запуск тоже требует монопольного доступа. Если в базе ночью работают обмены или регламентные задания, сдвиньте проверку на окно, когда их нет, иначе в логе будет ошибка монопольного режима.
Частые вопросы
Сколько длится тестирование базы 1С?
Можно ли работать в 1С во время тестирования?
Отличается ли «Проверка конфигурации» от тестирования базы?
Конфигурация → Проверка конфигурации проверяет код и метаданные на ошибки разработки. Данные базы она не трогает.