Проверка информационной базы 1С на ошибки: от резервной копии до проверки по расписанию

· 10 мин

Содержание

Протестировать базу 1С 8.3 можно тремя способами. Файловую базу сначала проверяют утилитой chdbfl.exe (физическая целостность файла 1Cv8.1CD), затем в конфигураторе: Администрирование → Тестирование и исправление (логика, ссылки, итоги). Серверную базу проверяют тем же пунктом конфигуратора плюс средствами СУБД: DBCC CHECKDB в MS SQL или pg_amcheck в PostgreSQL.

Все способы требуют монопольного доступа и свежей копии. Режим «только тестирование» базу не меняет, режим «тестирование и исправление» может удалить или заменить данные. Поэтому порядок такой: копия → проверка без исправления → разбор отчёта → исправление.

СпособЧто проверяетДля какой базыКогда выбирать
chdbfl.exeСтруктуру файла 1Cv8.1CD, страницы, индексыТолько файловаяОшибки чтения, Файл базы данных поврежден, база не открывается
Тестирование и исправление в конфигуратореЛогическую и ссылочную целостность, итоги, индексыФайловая и сервернаяБитые ссылки, неверные остатки, ошибки при проведении
Средства СУБДФизическую целостность таблиц и индексов на стороне сервераСервернаяОшибки СУБД в тексте сообщения, сбой диска или сервера
Журнал регистрации и техжурналНе проверяют, а показывают, где и когда падаетЛюбаяОшибка плавающая, непонятно, с какого объекта начать

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

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

Перед проверкой пройдите короткий список:

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

Какую копию делать

  • 📁 Файловая база. Скопируйте целиком папку, где лежит 1Cv8.1CD. Это надёжнее выгрузки: повреждённая база часто не выгружается в .dt, а файл копируется всегда.
  • 🗄️ Серверная база. Полный бэкап в СУБД (BACKUP DATABASE в MS SQL, pg_dump в PostgreSQL). Выгрузка .dt через Администрирование → Выгрузить информационную базу — дополнительная страховка, если база выгружается без ошибок.

Не запускайте «тестирование и исправление» без копии. Если в базе много битых ссылок, исправление может удалить документы или заменить их пустыми объектами, и откатить это можно только из копии.

Как освободить базу

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

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

Тестирование и исправление информационной базы в конфигураторе

Это основной инструмент. Откройте базу в режиме «Конфигуратор» и выберите Администрирование → Тестирование и исправление. Откроется форма с флажками проверок и режимом работы.

Какие проверки отмечать

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

Для первого прохода хватит логической и ссылочной целостности. Реиндексацию и пересчёт итогов добавляйте, если видите конкретные симптомы.

Режим: тестирование или исправление

Внизу формы выберите режим:

  1. Тестирование. Программа только сообщает о найденных ошибках, данные не меняет. С него и начинайте.
  2. Тестирование и исправление. Программа исправляет найденное по правилам, которые вы задаёте ниже.

Для битых ссылок есть три варианта:

  • 🧩 Создавать объекты. Вместо отсутствующего объекта создаётся пустой элемент-заглушка. Документы остаются на месте, заглушку потом можно заполнить или заменить.
  • ✂️ Очищать ссылки. Ссылка в реквизите становится пустой. Документ сохранится, но потеряет связь, например, с контрагентом.
  • ⏸️ Не изменять. Ссылка остаётся битой, ошибка просто попадает в отчёт.

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

Для учётной базы безопаснее «Создавать объекты». Пустые заглушки легко найти фильтром по пустому наименованию и разобрать вручную. Удаление и очистка ссылок теряют связи без следа.

Как читать результат

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

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

Что проверить в режиме 1С:Предприятие

Тестирование в конфигураторе ищет повреждения структуры. Но база может быть целой технически и при этом содержать учётные ошибки. Их ловят в пользовательском режиме.

  • 🗂️ Удаление помеченных объектов. Администрирование → Обслуживание → Корректировка данных → Удаление помеченных объектов. При удалении программа проверяет, есть ли ссылки на объект, и показывает, что мешает удалению. Хороший способ найти «хвосты».
  • 📊 Экспресс-проверка ведения учёта в 1С:Бухгалтерии 3.0, раздел Отчеты. Она ищет учётные ошибки: отрицательные остатки, незакрытые счета, расхождения в НДС.
  • 🔁 Перепроведение документов за период. Ошибки проведения покажут документы с испорченными данными. Перед массовым перепроведением сделайте копию: оно меняет движения.
  • 📜 Журнал регистрации: Администрирование → Обслуживание → Журнал регистрации. Отбор по уровню «Ошибка» за последние дни часто сразу показывает виновника.

Для конфигураций без этих пунктов журнал регистрации открывается и из конфигуратора: Администрирование → Журнал регистрации.

Утилита chdbfl для файловой базы 1С

chdbfl.exe проверяет физическую целостность файла 1Cv8.1CD: страницы, внутренние таблицы, индексы. Конфигуратор до этой проверки может просто не дойти, если файл повреждён на нижнем уровне.

Утилита лежит в папке bin установленной платформы, например C:\Program Files\1cv8\8.3.XX.XXXX\bin\chdbfl.exe. Номер подставьте свой: берите версию платформы, на которой работает база.

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

  1. Закройте все сеансы. Утилита работает с файлом напрямую и не запустится, пока он занят.
  2. Сделайте копию папки с базой.
  3. Запустите chdbfl.exe и укажите путь к файлу 1Cv8.1CD.
  4. Первый запуск — без флажка «Исправлять обнаруженные ошибки». Посмотрите, что найдено.
  5. Если ошибки есть, запустите повторно с флажком исправления.
  6. После 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.

Ошибки при тестировании базы и что с ними делать

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

Очистка кэша не трогает данные базы, но закройте 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С во время тестирования?
Нет. Проверке нужен монопольный доступ, поэтому пользователи не смогут войти, пока она не закончится.
Отличается ли «Проверка конфигурации» от тестирования базы?
Да. Конфигурация → Проверка конфигурации проверяет код и метаданные на ошибки разработки. Данные базы она не трогает.
Помогает ли тестирование, если база просто медленная?
Частично. Реиндексация и сжатие могут ускорить файловую базу. Если медленно работает серверная база, начинайте с обслуживания статистики и индексов в СУБД.
Как часто нужно тестировать базу?
Разумный минимум — тестирование без исправления раз в неделю и обязательно после аварийного отключения питания или сбоя диска.