← На главную
Иногда разработчики сталкиваются с парадоксальной ситуацией: созданный ранее объект метаданных (документ, справочник или регистр) исчезает из дерева в Конфигураторе. При этом в режиме 1С:Предприятие данный объект по-прежнему отображается в интерфейсе, корректно открывается, записывается и проводит движения. При попытке найти объект через дерево метаданных или глобальный поиск Конфигуратор ничего не находит, а платформа может даже не показывать значок различия конфигураций <!>.
Проанализируем природу этой ошибки, выясним технические причины подобного поведения платформы и подробно разберем пошаговые варианты восстановления потерянных данных.
Причины рассинхронизации метаданных
В платформе 1С:Предприятие 8 структура конфигурации физически разделена на две составляющие:
- Конфигурация базы данных (внутренняя таблица
Config) — рабочая структура, с которой взаимодействуют пользователи в режиме 1С:Предприятие. - Основная конфигурация (внутренняя таблица
ConfigSave) — редактируемая версия метаданных, которую программист видит и изменяет в дереве метаданных Конфигуратора.
Когда мы нажимаем клавишу F7 (Обновить конфигурацию базы данных), платформа переносит изменения из таблицы ConfigSave в таблицу Config. Однако в ряде случаев возникает сбой:
- Аварийное завершение работы Конфигуратора или сбой связи с базой данных в процессе редактирования. Изменения уже были применены к конфигурации базы данных, но при очередном сохранении таблица
ConfigSave была повреждена или перезаписана устаревшим снимком. - Последствия динамического обновления (обновление конфигурации БД «на лету»). Данный механизм часто приводит к накоплению некорректных версий в служебных таблицах, из-за чего нарушается целостность редактируемой ветки.
- Сбой фиксации хеша в таблице
PARAMS. Платформа определяет наличие расхождений между конфигурациями по специальным идентификаторам версий. Если эти метаданные повреждены, Конфигуратор считает, что основная конфигурация и конфигурация БД полностью идентичны, и не сигнализирует о различиях.
Способ 1. Возврат к конфигурации базы данных
Если объект остался в работающей базе данных, самым быстрым способом решения проблемы является откат редактируемой конфигурации к состоянию конфигурации базы данных. Разберем по шагам:
- Откроем информационную базу в режиме Конфигуратор.
- В главном меню перейдем в пункт Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД.
- Подтвердим выполнение операции. Платформа полностью перезапишет таблицу
ConfigSave данными из таблицы Config, после чего исчезнувший объект снова появится в дереве метаданных.
Способ 2. Выгрузка конфигурации БД в файл и сравнение
Если команда отката недоступна или дерево метаданных по-прежнему не обновляется, выполним извлечение рабочей конфигурации через файл поставки:
- В главном меню Конфигуратора выберем пункт Конфигурация → Конфигурация базы данных → Сохранить конфигурацию БД в файл... и укажем путь для сохранения файла с расширением
.cf. - Выполним сравнение основной конфигурации с выгруженным файлом через меню Конфигурация → Сравнить, объединить с конфигурацией из файла....
- В открывшемся окне сравнения найдем ветку с пропавшим объектом, отметим его флагом и выполним объединение.
- После объединения обязательно сохраним конфигурацию и выполним обновление конфигурации базы данных клавишей
F7.
Способ 3. Проверка целостности и исправление ошибок
Если сбой произошел в файловой информационной базе (файл 1Cv8.1CD), необходимо проверить физическую целостность таблиц базы данных:
- Создадим резервную копию файла информационной базы
1Cv8.1CD. - Закроем все сеансы работы с базой и завершим процессы
1cv8.exe. - Перейдем в каталог установленной платформы 1С (папка
bin) и запустим утилиту chdbfl.exe. - Выберем файл базы данных, установим флаг Исправлять обнаруженные ошибки и нажмем кнопку Выполнить.
- После успешной проверки запустим Конфигуратор и выполним Тестирование и исправление информационной базы через меню Администрирование → Тестирование и исправление... с включенными проверками логической и ссылочной целостности.
Способ 4. Принудительная очистка таблицы ConfigSave (для серверных баз)
В клиент-серверном варианте работы (на базе СУБД Microsoft SQL Server или PostgreSQL) при сильном повреждении таблицы редактируемой конфигурации можно принудительно удалить временное состояние:
- Обязательно создадим полную резервную копию базы данных средствами СУБД.
- Остановим службу Агент сервера 1С:Предприятия.
- В консоли управления СУБД выполним команду очистки таблицы:
DELETE FROM ConfigSave. - Запустим службу сервера 1С и откроем Конфигуратор. При открытии платформа обнаружит пустую таблицу
ConfigSave и автоматически восстановит редактируемую конфигурацию напрямую из рабочей таблицы Config.
Рекомендации для предотвращения подобных сбоев
Чтобы исключить потерю данных и рассинхронизацию служебных таблиц в будущем, соблюдаем следующие правила разработки:
- Отказ от динамического обновления при изменении метаданных. Любые добавления документов, реквизитов, справочников или регистров следует сохранять монопольно с перезапуском сеансов пользователей.
- Использование Хранилища конфигурации. При подключении к Хранилищу версионность контролируется сервером хранилища, что минимизирует риск потери локальных изменений при сбоях.
- Регулярная выгрузка метаданных. Перед масштабными доработками рекомендуется выгружать конфигурацию в файл
.cf или использовать встроенный механизм Конфигурация → Выгрузить конфигурацию в файлы... для версионирования в системах контроля версий.