/db-update - Обновление конфигурации БД
Применяет изменения основной конфигурации к конфигурации базы данных (/UpdateDBCfg). Обязательный шаг после /db-load-cf, /db-load-xml, /db-load-git.
EDT MCP: Если проект открыт в EDT и доступен EDT MCP-сервер - используй
update_databaseчерез MCP вместо этого скила. MCP поддерживает полное и инкрементальное обновление с автоматической реструктуризацией. Используй этот скил только если пользователь явно просит обновление через конфигуратор.
Usage
/db-update [database] /db-update dev /db-update dev -Dynamic+
Параметры подключения
Прочитай .v8-project.json из корня проекта. Возьми v8path (путь к платформе) и разреши базу:
- Если пользователь указал параметры подключения (путь, сервер) - используй напрямую
- Если указал базу по имени - ищи по id / alias / name в
.v8-project.json - Если не указал - сопоставь текущую ветку Git с
databases[].branches - Если ветка не совпала - используй
defaultЕслиv8pathне задан - автоопределение:Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1Если файла нет - предложи/db-list add. Если использованная база не зарегистрирована - после выполнения предложи добавить через/db-list add. База с рольюprodв.v8-project.jsonотказывает изменяющей операции: скрипт завершается кодом 1, пока не передан-AllowProd.
Команда
powershellpowershell.exe -NoProfile -File skills/1c-db-update/scripts/db-update.ps1 <параметры>
Параметры скрипта
| Параметр | Обязательный | Описание |
|---|---|---|
-V8Path <путь> | нет | Каталог bin платформы (или полный путь к 1cv8.exe) |
-InfoBasePath <путь> | * | Файловая база |
-InfoBaseServer <сервер> | * | Сервер 1С (для серверной базы) |
-InfoBaseRef <имя> | * | Имя базы на сервере |
-UserName <имя> | нет | Имя пользователя |
-Password <пароль> | нет | Пароль |
-AllowProd | нет | Разрешить операцию над базой, помеченной боевой (role: prod в .v8-project.json) |
-Extension <имя> | нет | Обновить расширение |
-AllExtensions | нет | Обновить все расширения |
-Dynamic <+/-> | нет | + - динамическое обновление, - - отключить |
-Server | нет | Обновление на стороне сервера |
-WarningsAsErrors | нет | Предупреждения считать ошибками (ключ платформы) |
-StrictLog | нет | Отказ в журнале поднимает код возврата до 1, даже если платформа вернула 0 |
-CheckApplicability | нет | Перед обновлением проверить, применимо ли расширение к этой базе |
*- нужен либо-InfoBasePath, либо пара-InfoBaseServer+-InfoBaseRef
Расширения: проверка применимости и путь отката
-CheckApplicability запускает проверку применимости расширения к конкретной базе до обновления.
Она ловит то, что не видят ни синтаксический контроль, ни проверка XML: перехватчик, который
ссылается на метод, переименованный поставщиком. Исходники при этом корректны, и отказ проявился бы
уже на боевой базе. Проверка не меняет базу; при отказе обновление не выполняется.
Замена расширения необратима сама по себе, поэтому до обновления снимаются два РАЗНЫХ состояния: редактируемая конфигурация расширения и конфигурация базы (то, что исполняют сеансы). Возврат к конфигурации базы отменяет правку, но уничтожает непримененные изменения, которые были до операции - он допустим только тогда, когда редактируемое состояние уже сохранено.
Удаление расширения обратной операцией к замене не является: оно сносит объекты расширения и все его привязки к конфигурации вместе с вашей правкой. Для нового расширения, которого в базе еще не было, точкой восстановления служат исходники.
Фоновое обновление (серверная база)
| Параметр | Описание |
|---|---|
-BackgroundStart | Начать фоновое обновление |
-BackgroundFinish | Дождаться окончания |
-BackgroundCancel | Отменить |
-BackgroundSuspend | Приостановить |
-BackgroundResume | Возобновить |
Коды возврата
| Код | Описание |
|---|---|
| 0 | Успешно |
| 1 | Ошибка (см. лог) |
Предупреждения
- Если обновление не динамическое - потребуется монопольный доступ к базе (все пользователи должны выйти)
- Для серверных баз рекомендуется
-Dynamic+для обновления без остановки - Если структура данных существенно изменилась (удаление реквизитов, изменение типов) - динамическое обновление может быть невозможно
Примеры
powershell# Обычное обновление (файловая база) powershell.exe -NoProfile -File skills/1c-db-update/scripts/db-update.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" # Динамическое обновление (серверная база) powershell.exe -NoProfile -File skills/1c-db-update/scripts/db-update.ps1 -InfoBaseServer "srv01" -InfoBaseRef "MyDB" -UserName "Admin" -Password "secret" -Dynamic "+" # Обновление расширения powershell.exe -NoProfile -File skills/1c-db-update/scripts/db-update.ps1 -InfoBasePath "C:\Bases\MyDB" -UserName "Admin" -Extension "МоеРасширение"


