Предистория:
Очередное динамическое обновление файловой базы данных ничего не предвещало плохого. Как вдруг выскочило окно "ошибка кэша...". :) или просто завис конфигуратор во время обновления.
На первый взгляд ничего страшного: ну не сохранилась конфигурация в базе данных, снова откроем конфигуратор и обновим базу данных. Но не тут-то было...
В ответ на вопрос хотим ли мы повторить обновление 1С благополучно падает и не поднимается. Вот здесь начинаешь подозревать что-то неладное. Пробуешь еще раза три...тоже самое. Хуже того пользователи тоже не могут входит в базу данных с сообщением "Завершить" или "Перезапустить".
Тут включается мозг и вспоминаешь: есть же еще утилита для проверки файловой версии "chdbfl.exe", но как ни странно утилита сообщает что ни одной ошибки нет, но база все равно не открывается. Запуск 1С из коммандной строки с параметрами: /UpdateDBCfg, /RollbackCfg или /IBCheckAndRepair -Rebuild - тоже не исправляют ситуацию...
Поиском по интернету и по сайту infostart нашел решения только для клиент-серверной (SQL) версии базы данных:
Смысл в котором заключается в удалении пары строчек из таблицы Config, но как удалить в файле *.1CD???
Решение:
С помощью программы Tool_1CD, которая позволяет просмотреть структуру и содержимое таблиц 1CD, нашел, что в таблице "Config" присутствуют строки со следующими значениями в колонке "FileName":
сommit
dbStruFinal
DynamicallyUpdated
dynamicCommit
Опытным путем, было установлено что важными являются строки: "сommit" и "dbStruFinal" - их нам и надо удалить.
Если бы программа Tool_1CD еще бы позволяла редактировать - цены бы ей не было... А так пришлось экспериментировать...
Можно воспользоваться либо любым Unicode-редактором, либо HEX-редактором с поиском по Unicode.
Я использовал программу HxD (т.к. она позволяет быстро работать с файлами большого объема). Открываем файл *.1CD. В меню выбираем поиск, ставим обязательно галку "Юникодовая строка" и вводим в поле "Искать" слово "сommit".
Программа находит нужную строку. Но удалять нельзя, т.к. измениться смещения всех других объектов в файле. Тогда заменим первую букву этого слова на любую другую, например, "b"("63" заменить на "62").
То же самое проделать со словом "dbStruFinal".
Закрываем и сохраняем файл, запускаем 1С и, ура, база начала открываться.
Буду рад, если кому-нибудь сэкономил нервы и время...
P.S.: все это применимо только для после ошибки динамического обновления и если утилита "chdbfl.exe" показывает, что нет ошибок