Восстановление файловой версии базы данных *.1CD после ошибки динамического обновления.
Разработка - Инструментарий разработчика
Предистория:
Очередное динамическое обновление файловой базы данных ничего не предвещало плохого. Как вдруг выскочило окно "ошибка кэша...". :) или просто завис конфигуратор во время обновления.
На первый взгляд ничего страшного: ну не сохранилась конфигурация в базе данных, снова откроем конфигуратор и обновим базу данных. Но не тут-то было...
В ответ на вопрос хотим ли мы повторить обновление 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" показывает, что нет ошибок
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)
Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.
50000 руб.
10.09.2026 13423 115 0
Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.
24900 руб.
20.08.2024 83260 432 171
Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)
Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.
16500 руб.
02.09.2020 285646 1606 423
Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)
Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.
14000 руб.
17.04.2026 16761 63 62
Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)
Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26
22570 руб.
06.10.2023 44180 122 54
Инструментарий разработчика Нейросети Платные (руб)
Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.
15250 руб.
25.08.2025 76868 147 41
Разработка Инструментарий разработчика Разработчик Руководитель проекта 1С 8.3 Платные (руб)
Pilot 1C превращает задачу, поставленную обычными словами, в техническое задание, код на встроенном языке и сценарии проверки. Прежде чем что-то предложить, он сверяется с устройством вашей конфигурации через граф Analyzer 1C: существует ли объект, из чего он состоит, кто его вызывает, какие роли дают права. Чего найти не удалось – спрашивает, а не выдумывает. Готовый код проходит более полутора сотен проверок по справочнику языка и стандартам разработки, который приезжает вместе с продуктом. Модель – ваша: любой сервер, совместимый с программным интерфейсом OpenAI, в том числе локальный. Правки в конфигурацию Pilot не вносит – их применяет разработчик.
18300 руб.
11.09.2026 3717 5 0
Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
17000 руб.
10.11.2023 28739 103 46
Правда ненадолго - через пару дней от того же динамического обновления опять легла - уже было хуже: "Ошибка считывания вторичной информации". Не восстановил. Так что, лучше юзайте SQL...
Видимо резервной копии то и не было ;)
Она поди надежнее, чем пляска с коробкой динамита!
Резервная копия была, но проблема обнаружилась к концу дня, а было это начало месяца, в базу было столько документов набито, что восстанавливать их уйдет еще день с лишним, а надо сдавать отчеты
(7) GoodZone,
Меняем Идентификатор строки в Config c commit на bommit например, чтобы конфигуратор не нашел этой строки и открылся нормально
После этих изменений думал что с конфигурацией будут какие-нить проблемы - нет все работает, сохраняется и даже изменения сделанные перед сбоем сохранились
(10) bforce,
Тоже думал, что на файловой такое не может случиться - все таки другая система хранения данных (недавно только на SQL-базе восстанавливал). Но 1С решила не делать исключений для файловой версии :)
при данной проблеме не дает зайти в конфигуратор, поэтому обновить ни через cf ни cfu не получится
(6) Воронкин,
пробовал, на компе с другой платформой (посвежее) тож ничего не получалось
(7) GoodZone,
все он знал где и что менять. утилитой Tool_1CD посмотрел битую и рабочую базу из архива и увидел, что секции commit в рабочей базе нет. следовательно это и есть корень зла =)
Но так и не понял такой вариант - это частный (конкретный) случай или универсальный и проходит всегда.
это все круто - написать в 1С, дождаться ответа, сделать...
Особенно можно не спешить, когда сидишь у клиента, отчетность какая-нибудь - да и фиг с ней. Надо делать так: восстанавливаешь из копии и с невозмутимой мордой гришь - у вас база битая, приду, когда из 1С ответят
Испробованных chdbfl.exe и запуск 1С из командной строки с параметрами: /IBCheckAndRepair -Rebuild - тоже не исправили ситуацию.Так как база была копией филиальной- для просмотра, пришлось попросить выслать ее копию.
Но копия покалеченной базы у меня осталась, на ней и воспользовалась вашим советом. сommit нашла и подменила первую букву, а строка dbStruFinal не нашлась. В итоге база запустилась с предложением преобразования на новую платформу))
1)Таблица config размещается всегда в начале файла поэтому первым найдется нужная строка
2)А вы пробовали найти строку с commit в программе Tool_1CD? Кроме как перемещением слайдера больше никак не получиться, поиска и сортировки по Modified - НЕТ.
3)По адресу поподаем чуть раньше этого слова
1) Таблица CONFIG размещается в начале базы как правило, но не всегда. Более того, она может быть фрагментирована, и блок именно с commit может оказаться ближе к концу файла 1CD.
2) Конечно, пробовал. Промотать до конца всех записей, начинающихся на "c" и перед началом записей на "d" - совсем не трудно. Главное, отсортировать по имени, по умолчанию, эта сортировка и включается.
3) Конечно, чуть раньше. Адрес записи указывает на признак удаленности записи, это будет байт 00 (удаленная запись - 01), потом идут 2 байта длины имени (для "commit" это будет 06 00, естественно), и затем уже идут сами байты юникодной строки. Из этого следует, что достаточно поменять по адресу, отображаемому Tool_1CD байт с 00 на 01, чтобы пометить на удаление запись.
>вдруг такая строка найдется в другом месте базы
В теории конечно, но не все так хорошо знают структуру как Вы. Можно использовать смещение адреса. Но на практике я не видел ни одного случая чтобы это имело место. Поэтому как дополнение можно использовать. Но следуя Вашей логике: а почему надо удалять именно строку с "commit"?. Это также было определено практически и это работает. В теории на вопрос: "...произошла ошибка. Повторить обновление?" должна была обновиться база и запуститься. А на практике несколько десятков пользователей сидят без дела и ты думаешь откатываться тебе до резервной копии и потерять день с кучей документов в начале месяца или все таки попробовать восстановить базу....Легко рассуждать сидя за кружкой пива ( :) не в обиду...)
(24) vvr908,
Я думаю это будет не всегда и с последующими релизами они это поправят. А универсального патча на все случаи жизни не придумаешь...
+ за это,
Минус можно ставить , так как не понятно на сколько данный метод безопасен) хоть база уже и "положена" но могут сделать еще хуже))
Не понятно как выбирать эти байты, в слепую удалять тоже не хочеться ))))))
Все равно спасибо автору
Можно было бы сразу использовать его в случае, когда chdbfl не помогает поднять базу, а не заниматься воспоминаниями на тему "блин, где же я видел методику восстановления"... ))
File="1Cv8.1CD"
тут я заменил под commit из картинки, надо сделать еще один скрипт для dbStruFinal
arr =split("00 63 00 6F 00 6D 00 6D 00 69 00 74"," ")
А сюда пихаем то, на что хотим заменить. Учтите, все на нули менять нельзя, можно например на 20 поменять, т.е. в итоге выйдет строка типа 00 20 00 20 00 20 00, что соответствует пустому значению, но без здвига. Так же и удаляют информацию о пользователях, получая полный доступ к базе данных :).
arr2=split("00 62 00 6F 00 6D 00 6D 00 69 00 74"," ")
for each c in arr
r=r & chrb(clng("&H" & c))
next
for each c in arr2
r2=r2 & chrb(clng("&H" & c))
next
set s=createobject("ADODB.Stream")
s.type=2
s.open
s.loadfromfile(File)
ss=s.readtext
s.position=0
s.writetext(replace(ss,r,r2))
s.position=0
s.type=1
s.position=2
ss=s.read
s.close
s.open
s.write(ss)
call s.savetofile(File,2)
Сохраняем как в файл с любым именем и расширением *.vbs, копируем в папку с файловой базой и запускаем.
Не тестировал, ибо не на чем. Кто может - протестите и выложите готовый скрипт
Так что может зря эти танцы с бубном? Хотя на большой базе наверно долше будет.
Удивительно что сам механиз динамического обновления умудрился сделать выгрузку в DT! Подозреваю что он делает это не типовыми средствами - что наводит на подозрительные мысли...
"разлочивание залоченной базы после динамики" - Интересно кто может в поиске такую строку задать?
Повторюсь: когда база не поднимается и над тобой висят пользователи, руководство, телефон обзвонился, клиенты ругаются... то у тебя одна только мысль: "как восстановить базу...".
Согласен с (50). Мне думается так понятнее большинству участников форума.
ТС спасибо.
Восстановил таким образом работоспособность БД.
Размер базы 34 Гб.
Не получалось зайти ни в конфигуратор, ни в пользовательский режим.
Получилось зайти в конфигуратор платформой 8.3.13.1865. В этот момент все пользователи уже вышли. Все дообновилось.
Заметил, что баг возникает когда идет динамическое обновление и при этом заходит в базу какой-нить из пользователей.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 154556
Создание 02.10.12 23:27
Обновление 02.10.12 23:27
Просмотры 58243
Загрузки 0
Рейтинг
206
Комментарии 79
Код открыт Не указано
Рубрики Инструментарий разработчика
Кому
Системный администратор
,
Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)