Ситуация, когда после скачка напряжения или аварийного завершения работы файловая база 1С перестает запускаться, знакома многим. Стандартным средством «первой помощи» в таких случаях является утилита chdbfl.exe. Однако часто после её работы пользователь видит тревожное сообщение, например: «Восстановлено 12926 из 12928 записей». Это означает, что две записи были безвозвратно удалены из структуры файла для восстановления его работоспособности. Разберем подробно, как понять, что именно пропало, и как минимизировать последствия для учета.
Для начала проанализируем, почему мы не можем найти таблицу с названием _REFERENCE94 в обычном режиме работы 1С. Дело в том, что в файловых базах данных (формат .1CD) имена объектов, которые мы видим в конфигураторе (например, справочник «Контрагенты» или «Номенклатура»), не совпадают с именами таблиц на физическом уровне хранения. Система присваивает им внутренние идентификаторы.
Префикс _REFERENCE всегда указывает на то, что это Справочник. Число 94 — это внутренний порядковый номер этого объекта в конкретно вашей базе данных. Чтобы выяснить человеческое название этого справочника, мы можем воспользоваться программными методами.
Рассмотрим, как это сделать с помощью встроенных инструментов платформы. Для этого нам понадобится запустить базу в режиме «1С:Предприятие» и открыть консоль кода (или внешнюю обработку «Консоль запросов» с функцией просмотра структуры). Если вы обладаете навыками программирования, можно выполнить следующую команду:
Структура = ПолучитьСтруктуруХраненияБазыДанных();
Для Каждого СтрокаСтруктуры Из Структура Цикл
Если СтрокаСтруктуры.ИмяТаблицыХранения = "_Reference94" Тогда
Сообщить("Имя справочника в конфигураторе: " + СтрокаСтруктуры.ИмяТаблицы);
КонецЕсли;
КонецЦикла;
После выполнения этого кода система выдаст реальное имя объекта, например: Справочник.Номенклатура или Справочник.СтатьиЗатрат. Теперь мы знаем, в каком именно разделе учета искать пропажу.
После того как утилита chdbfl.exe закончила физическое исправление файла, база начала открываться, но её логическая целостность всё еще под вопросом. Проанализируем ситуацию: если из справочника удалены две записи, то во всех документах, где эти записи использовались, теперь образовались «дыры» — битые ссылки.
Выясним, как нам поможет встроенный механизм «Тестирование и исправление» (ТиИ). Для его запуска необходимо зайти в Конфигуратор, открыть меню Администрирование — Тестирование и исправление. Важно: перед этой процедурой обязательно сделайте копию базы данных!
В открывшемся окне выберем следующие настройки:
Разберем, что произойдет при выборе варианта «Создавать объекты». Вместо удаленных chdbfl.exe записей система создаст новые элементы в соответствующем справочнике. Они будут пустыми, но у них будет сохранен тот же внутренний уникальный идентификатор (GUID). В списках и документах они будут отображаться как <Объект не найден>.... Это позволит вам увидеть, в каких именно документах пропали данные, и заполнить их вручную.
После завершения тестирования и исправления нам нужно найти те самые два элемента, которые восстановила система. Рассмотрим самый простой бухгалтерский способ. Если мы выяснили через ПолучитьСтруктуруХраненияБазыДанных(), что пострадал, например, справочник «Контрагенты», выполним следующие шаги:
<Объект не найден>.Проанализируем ситуацию с использованием отчетов. Если пропали записи, это обязательно отразится на оборотно-сальдовой ведомости (ОСВ). Сформируем ОСВ по счету, который связан с пострадавшим справочником (например, 60 или 62 для контрагентов, 10 или 41 для номенклатуры). В отчете появятся строки с пустым субконто или странными кодами в угловых скобках. Сравним этот отчет с данными из старой резервной копии (от 06.07.23). Методом сопоставления остатков вы легко вычислите, каких именно позиций не хватает.
Нужно четко понимать разницу между работой chdbfl.exe и тестированием в конфигураторе. Проанализируем принцип работы утилиты chdbfl.exe: она работает на уровне файловой системы. Её задача — сделать так, чтобы файл .1CD соответствовал формату, чтобы таблицы в нем «читались». Если она встречает заблокированный или битый сектор данных, который невозможно прочитать, она просто удаляет его.
Однако логика 1С гораздо сложнее. Запись в справочнике может быть удалена физически, но в таблице движений по регистрам накопления запись о том, что этот товар поступил на склад, может остаться. Это приводит к тому, что в отчетах вы видите цифры, но не видите, к чему они относятся. Именно поэтому после любого восстановления через chdbfl.exe запуск «Тестирования и исправления» в Конфигураторе является обязательным шагом.
Посмотрим на рекомендации по безопасности, которые помогут избежать подобных проблем в будущем:
Если штатные средства не помогли детально восстановить информацию, рассмотрим использование стороннего инструмента — Tool_1CD. Это бесплатная утилита, которая позволяет открывать файл .1CD напрямую, минуя движок 1С.
С её помощью мы можем:
_REFERENCE94. Иногда то, что chdbfl.exe считает мусором и удаляет, все еще содержит читаемые текстовые фрагменты.Подытожим наш план действий. Сначала мы выясняем имя справочника через структуру хранения. Затем запускаем тестирование и исправление с созданием объектов. После этого сравниваем ОСВ с предыдущим бэкапом и журналом регистрации. Этот комплексный подход позволит вам восстановить учет и быть уверенным в достоверности цифр в базе данных.