Как определить и восстановить данные в 1С после исправления базы утилитой chdbfl.exe

Бухгалтер 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

Ситуация, когда после скачка напряжения или аварийного завершения работы файловая база 1С перестает запускаться, знакома многим. Стандартным средством «первой помощи» в таких случаях является утилита chdbfl.exe. Однако часто после её работы пользователь видит тревожное сообщение, например: «Восстановлено 12926 из 12928 записей». Это означает, что две записи были безвозвратно удалены из структуры файла для восстановления его работоспособности. Разберем подробно, как понять, что именно пропало, и как минимизировать последствия для учета.

Что такое таблица _REFERENCE94 и почему ее нет в конфигураторе

Для начала проанализируем, почему мы не можем найти таблицу с названием _REFERENCE94 в обычном режиме работы 1С. Дело в том, что в файловых базах данных (формат .1CD) имена объектов, которые мы видим в конфигураторе (например, справочник «Контрагенты» или «Номенклатура»), не совпадают с именами таблиц на физическом уровне хранения. Система присваивает им внутренние идентификаторы.

Префикс _REFERENCE всегда указывает на то, что это Справочник. Число 94 — это внутренний порядковый номер этого объекта в конкретно вашей базе данных. Чтобы выяснить человеческое название этого справочника, мы можем воспользоваться программными методами.

Рассмотрим, как это сделать с помощью встроенных инструментов платформы. Для этого нам понадобится запустить базу в режиме «1С:Предприятие» и открыть консоль кода (или внешнюю обработку «Консоль запросов» с функцией просмотра структуры). Если вы обладаете навыками программирования, можно выполнить следующую команду:


Структура = ПолучитьСтруктуруХраненияБазыДанных();
Для Каждого СтрокаСтруктуры Из Структура Цикл
    Если СтрокаСтруктуры.ИмяТаблицыХранения = "_Reference94" Тогда
        Сообщить("Имя справочника в конфигураторе: " + СтрокаСтруктуры.ИмяТаблицы);
    КонецЕсли;
КонецЦикла;

После выполнения этого кода система выдаст реальное имя объекта, например: Справочник.Номенклатура или Справочник.СтатьиЗатрат. Теперь мы знаем, в каком именно разделе учета искать пропажу.

Использование механизма «Тестирование и исправление»

После того как утилита chdbfl.exe закончила физическое исправление файла, база начала открываться, но её логическая целостность всё еще под вопросом. Проанализируем ситуацию: если из справочника удалены две записи, то во всех документах, где эти записи использовались, теперь образовались «дыры» — битые ссылки.

Выясним, как нам поможет встроенный механизм «Тестирование и исправление» (ТиИ). Для его запуска необходимо зайти в Конфигуратор, открыть меню Администрирование — Тестирование и исправление. Важно: перед этой процедурой обязательно сделайте копию базы данных!

В открывшемся окне выберем следующие настройки:

  1. Реиндексация таблиц информационной базы — поможет перестроить индексы для корректного поиска и сортировки.
  2. Проверка ссылочной целостности — это самый важный пункт. В поле «При наличии ссылок на несуществующие объекты» обязательно выберите вариант «Создавать объекты».
  3. Пересчет итогов — это позволит системе актуализировать остатки в отчетах, так как удаленные элементы могли влиять на регистры.

Разберем, что произойдет при выборе варианта «Создавать объекты». Вместо удаленных chdbfl.exe записей система создаст новые элементы в соответствующем справочнике. Они будут пустыми, но у них будет сохранен тот же внутренний уникальный идентификатор (GUID). В списках и документах они будут отображаться как <Объект не найден>.... Это позволит вам увидеть, в каких именно документах пропали данные, и заполнить их вручную.

Как найти «Объекты не найдены» в интерфейсе

После завершения тестирования и исправления нам нужно найти те самые два элемента, которые восстановила система. Рассмотрим самый простой бухгалтерский способ. Если мы выяснили через ПолучитьСтруктуруХраненияБазыДанных(), что пострадал, например, справочник «Контрагенты», выполним следующие шаги:

  1. Откроем список справочника «Контрагенты».
  2. Попробуем найти элементы с пустым наименованием или те, где написано <Объект не найден>.
  3. Если список слишком большой, воспользуемся Журналом регистрации. Посмотрим события за последние дни перед сбоем. Нам нужно искать записи о создании или изменении объектов в данном справочнике. Скорее всего, пострадали именно те записи, которые вносились последними.

Проанализируем ситуацию с использованием отчетов. Если пропали записи, это обязательно отразится на оборотно-сальдовой ведомости (ОСВ). Сформируем ОСВ по счету, который связан с пострадавшим справочником (например, 60 или 62 для контрагентов, 10 или 41 для номенклатуры). В отчете появятся строки с пустым субконто или странными кодами в угловых скобках. Сравним этот отчет с данными из старой резервной копии (от 06.07.23). Методом сопоставления остатков вы легко вычислите, каких именно позиций не хватает.

Физическая vs Логическая целостность: почему chdbfl недостаточно

Нужно четко понимать разницу между работой chdbfl.exe и тестированием в конфигураторе. Проанализируем принцип работы утилиты chdbfl.exe: она работает на уровне файловой системы. Её задача — сделать так, чтобы файл .1CD соответствовал формату, чтобы таблицы в нем «читались». Если она встречает заблокированный или битый сектор данных, который невозможно прочитать, она просто удаляет его.

Однако логика 1С гораздо сложнее. Запись в справочнике может быть удалена физически, но в таблице движений по регистрам накопления запись о том, что этот товар поступил на склад, может остаться. Это приводит к тому, что в отчетах вы видите цифры, но не видите, к чему они относятся. Именно поэтому после любого восстановления через chdbfl.exe запуск «Тестирования и исправления» в Конфигураторе является обязательным шагом.

Посмотрим на рекомендации по безопасности, которые помогут избежать подобных проблем в будущем:

Использование утилиты Tool_1CD для продвинутого анализа

Если штатные средства не помогли детально восстановить информацию, рассмотрим использование стороннего инструмента — Tool_1CD. Это бесплатная утилита, которая позволяет открывать файл .1CD напрямую, минуя движок 1С.

С её помощью мы можем:

  1. Открыть поврежденную копию базы (ту, что была до исправления) и попытаться прочитать данные из таблицы _REFERENCE94. Иногда то, что chdbfl.exe считает мусором и удаляет, все еще содержит читаемые текстовые фрагменты.
  2. Сравнить количество записей и их GUID в живой базе и в старом бэкапе.

Подытожим наш план действий. Сначала мы выясняем имя справочника через структуру хранения. Затем запускаем тестирование и исправление с созданием объектов. После этого сравниваем ОСВ с предыдущим бэкапом и журналом регистрации. Этот комплексный подход позволит вам восстановить учет и быть уверенным в достоверности цифр в базе данных.

← На главную