Почему 1С пишет, что конфигурация базы отличается от сохранённой, и что с этим делать
Содержание
Сообщение Конфигурация базы данных не соответствует сохраненной конфигурации. Продолжить? означает, что в базе лежат две разные версии программы: изменённая (основная) и та, по которой реально работают данные. Ошибка исправляется в Конфигураторе: Конфигурация → Обновить конфигурацию базы данных (клавиша F7) или, если изменения не нужны, откатом к конфигурации базы данных.
Данные при этом не повреждены. Если нажать «Да», 1С запустится на старой конфигурации базы, и работать можно как раньше. Нажатие «Нет» просто закрывает запуск. Проблема в другом: пока расхождение висит, обновление или доработка не применены, и база не та, какой её ждут.
Откуда в базе берутся две конфигурации
В каждой информационной базе 1С 8.3 хранится не одна конфигурация, а две:
- 🧩 основная конфигурация — та, которую видно и редактируют в Конфигураторе;
- 🗄️ конфигурация базы данных — та, по которой построены таблицы и с которой работает режим 1С:Предприятие.
Любое изменение в Конфигураторе — правка формы, загрузка обновления .cfu, объединение с .cf — сначала попадает только в основную конфигурацию. В рабочую базу оно переходит лишь после команды «Обновить конфигурацию
базы данных». Пока этого не сделали, платформа видит разницу и предупреждает при каждом запуске.
Типичные причины расхождения
- 🔄 Прерванное обновление релиза. Администратор загрузил обновление, но на этапе обновления базы получил отказ (в базе были пользователи) и закрыл Конфигуратор.
- ❌ «Отмена» в окне реорганизации. После обновления 1С показывает список изменений структуры с кнопкой «Принять». Если нажать «Отмена» или закрыть окно, основная конфигурация уже новая, а база — старая.
- ✏️ Незаконченная доработка. Программист поправил модуль или макет, нажал «Сохранить», но не выполнил
F7. - 📦 Получение объектов из хранилища. После команды получения изменений из хранилища основная конфигурация меняется, а база — нет, пока её не обновят.
- 🤖 Сбой автоматического обновления. Если обновление запускалось из режима 1С:Предприятие или скриптом по расписанию и прервалось (нет места на диске, обрыв связи с сервером СУБД, не удалось завершить сеансы), база остаётся в промежуточном состоянии.
- ⏸️ Незавершённое фоновое обновление на сервере в клиент-серверной базе: процесс запустили, но не довели до финального этапа.
Как понять, что именно изменилось
Не жмите сразу F7. Сначала стоит выяснить, чьи это изменения и нужны ли они. Иначе можно «закатить» в рабочую базу чужую недоделанную правку.
Шаг 1. Спросите тех, кто работал с базой
Кто последним заходил в Конфигуратор: администратор, программист, обслуживающая организация? Чаще всего ответ находится за минуту: «ставил обновление вчера вечером, не дождался».
Шаг 2. Сравните основную конфигурацию с конфигурацией базы
- Откройте базу в режиме Конфигуратор.
- Выберите
Конфигурация → Сравнить конфигурации. - В первом поле укажите «Основная конфигурация», во втором — «Конфигурация базы данных».
- Нажмите «Выполнить» и посмотрите отчёт.
По отчёту видно, какие объекты затронуты. Если меняется номер версии в свойствах корня конфигурации и задеты сотни объектов — это обновление релиза. Если отличаются два-три модуля или формы — это ручная доработка.
Шаг 3. Проверьте, кто сейчас в базе
Обновление структуры требует монопольного доступа. Если в базе работают люди, команда либо не выполнится, либо 1С предложит динамическое обновление (о нём ниже). Список сеансов виден прямо в Конфигураторе: Администрирование → Активные пользователи. В клиент-серверной базе его же показывает консоль кластера.
Сохраните основную конфигурацию в файл до любых действий: Конфигурация → Сохранить конфигурацию в файл. Получится .cf, к которому можно вернуться, если решение окажется неверным.
Способы устранить ошибку: от мягкого к жёсткому
Способ 1. Обновить конфигурацию базы данных
Это штатное решение, если изменения нужны.
- Сделайте резервную копию базы
: для файловой —
Администрирование → Выгрузить информационную базув Конфигураторе (файл.dt) или копию каталога с1Cv8.1CDпри закрытой базе; для клиент-серверной — бэкап средствами СУБД. - Попросите пользователей выйти из программы.
- В Конфигураторе выберите
Конфигурация → Обновить конфигурацию базы данныхили нажмитеF7. - Если появилось окно «Реорганизация информации» со списком изменений — прочитайте его и нажмите «Принять».
- Дождитесь окончания. На большой базе реструктуризация занимает от нескольких минут до нескольких часов.
- Запустите 1С:Предприятие. Для типовых конфигураций после обновления релиза запустится обработчик обновления данных — дайте ему закончить.
Не прерывайте реорганизацию: не закрывайте Конфигуратор через диспетчер задач и не перезагружайте сервер, пока процесс идёт. Прерванная реструктуризация — уже не расхождение конфигураций, а повод для восстановления из копии.
Способ 2. Откатиться к конфигурации базы данных
Подходит, когда правка в основной конфигурации не нужна.
- Сохраните основную конфигурацию в
.cf(совет выше). - Выберите
Конфигурация → Конфигурация базы данных → Вернуться к конфигурации БД. - Подтвердите действие.
Основная конфигурация станет точной копией той, что работает с данными. Сообщение при запуске исчезнет. Монопольный доступ для этого не нужен: структура таблиц не меняется.
Способ 3. Динамическое обновление
Если пользователей выгнать нельзя, при выполнении F7 1С может предложить обновить конфигурацию динамически. Новые сеансы получат новую версию, текущие продолжат работать на старой до перезапуска.
Ограничения у этого способа серьёзные:
- работает, только если изменения не затрагивают структуру хранения (новые реквизиты, регистры, табличные части требуют реструктуризации и монопольного режима);
- у пользователей, не вышедших из программы, появится сообщение об изменении конфигурации и требование перезапуска;
- для обновлений релиза типовых конфигураций он почти всегда не подходит.
Способ 4. Обновление из командной строки
Удобно для ночного окна или когда Конфигуратор на рабочем месте ведёт себя нестабильно. Ключ /UpdateDBCfg выполняет то же, что F7:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /UpdateDBCfg /Out"D:\Logs\update.log"
Для клиент-серверной базы вместо /F указывают /S"сервер\имя_базы". Путь к 1cv8.exe подставьте свой — номер каталога совпадает с установленной версией платформы. Результат и текст ошибки, если она будет, окажутся в файле, указанном в /Out.
Сравнение способов
| Способ | Когда применять | Риски |
|---|---|---|
Обновить конфигурацию БД (F7) | Изменения нужны, можно выгнать пользователей | Долгая реструктуризация на больших базах |
| Вернуться к конфигурации БД | Изменения случайные или ошибочные | Потеря несохранённых в .cf правок |
| Динамическое обновление | Мелкие правки без изменения структуры | Требование перезапуска у пользователей, не подходит для релизов |
Командная строка /UpdateDBCfg | Ночное окно, автоматизация | Ошибки видны только в логе |
Если сообщение возвращается снова и снова
Бывает, что F7 вроде бы выполнили, а через день предупреждение опять на месте. Здесь ищут не способ, а источник повторов.
«Тестирование и исправление» тоже требует монопольного доступа и может удалить битые записи. Запускайте его только после резервной копии и в нерабочее время.
Клиент-серверная база: что меняется
На сервере 1С с СУБД (MS SQL Server, PostgreSQL) порядок тот же, но добавляется несколько деталей.
Как освободить базу от сеансов
- Откройте консоль администрирования серверов 1С:Предприятия.
- Найдите информационную базу в списке кластера.
- В свойствах базы включите блокировку начала сеансов, задайте время и сообщение для пользователей. Там же есть поле «Код разрешения» — с ним администратор сможет зайти в заблокированную базу.
- Завершите оставшиеся сеансы в ветке «Сеансы» информационной базы.
Принудительное завершение сеанса обрывает работу пользователя без сохранения. Делайте это в согласованное окно, а не посреди рабочего дня.
Код разрешения передают при запуске Конфигуратора ключом /UC:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /N"Администратор" /P"пароль" /UC"12345" /UpdateDBCfg /Out"D:\Logs\update.log"
После обновления не забудьте снять блокировку начала сеансов, иначе утром никто не войдёт.
Фоновое обновление на сервере
Для клиент-серверных баз Конфигуратор умеет выполнять обновление конфигурации базы данных на сервере в фоне: основная часть реструктуризации идёт, пока пользователи работают, а короткий монопольный этап выполняется в конце. Если процесс начали и не завершили, база остаётся с расхождением.
Проверьте, нет ли незавершённого фонового обновления: Конфигуратор при открытии такой базы сообщает о нём и предлагает продолжить или отменить. Доведите процесс до конца в окно, когда можно на минуту получить монопольный доступ, либо отмените и выполните обычное F7.
Права и ресурсы
- 🔑 Пользователь, под которым выполняют обновление, должен иметь административные права в самой базе.
- 💽 Реструктуризация больших таблиц временно увеличивает размер базы и журнала транзакций СУБД. Запас свободного места — не меньше размера самых крупных таблиц.
- 🧮 Версия платформы на клиенте, с которого запускают Конфигуратор, должна совпадать с версией сервера 1С.
Как не попадать в эту ситуацию
- 🗓️ Ставьте обновления в заранее согласованное окно, когда в базе никого нет.
- 🧪 Сначала обновляйте копию базы, проверяйте, потом — рабочую.
- 📝 Доводите процесс до конца в одной сессии: загрузили релиз — сразу обновили базу и дождались обработчиков.
- 👤 Ограничьте доступ в Конфигуратор рабочей базы: правом администрирования должны обладать один-два человека.
- 📂 Храните
.cfи.dtперед каждым обновлением хотя бы до следующего релиза. - 📋 Для скриптов автообновления включайте ключ
/Outи читайте лог — сбой будет виден сразу, а не через неделю.