/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.
Команда
powershell.exe -NoProfile -File skills/1c-db-update/scripts/db-update.ps1 <параметры>
Параметры скрипта
| Параметр | Обязательный | Описание |
|---|---|---|
-V8Path <путь> |
нет | Каталог bin платформы (или полный путь к 1cv8.exe) |
-InfoBasePath <путь> |
* | Файловая база |
-InfoBaseServer <сервер> |
* | Сервер 1С (для серверной базы) |
-InfoBaseRef <имя> |
* | Имя базы на сервере |
-UserName <имя> |
нет | Имя пользователя |
-Password <пароль> |
нет | Пароль |
-Extension <имя> |
нет | Обновить расширение |
-AllExtensions |
нет | Обновить все расширения |
-Dynamic <+/-> |
нет | + - динамическое обновление, - - отключить |
-Server |
нет | Обновление на стороне сервера |
-WarningsAsErrors |
нет | Предупреждения считать ошибками (ключ платформы) |
-StrictLog |
нет | Отказ в журнале поднимает код возврата до 1, даже если платформа вернула 0 |
-CheckApplicability |
нет | Перед обновлением проверить, применимо ли расширение к этой базе |
*- нужен либо-InfoBasePath, либо пара-InfoBaseServer+-InfoBaseRef
Расширения: проверка применимости и путь отката
-CheckApplicability запускает проверку применимости расширения к конкретной базе до обновления.
Она ловит то, что не видят ни синтаксический контроль, ни проверка XML: перехватчик, который
ссылается на метод, переименованный поставщиком. Исходники при этом корректны, и отказ проявился бы
уже на боевой базе. Проверка не меняет базу; при отказе обновление не выполняется.
Замена расширения необратима сама по себе, поэтому до обновления снимаются два РАЗНЫХ состояния: редактируемая конфигурация расширения и конфигурация базы (то, что исполняют сеансы). Возврат к конфигурации базы отменяет правку, но уничтожает непримененные изменения, которые были до операции - он допустим только тогда, когда редактируемое состояние уже сохранено.
Удаление расширения обратной операцией к замене не является: оно сносит объекты расширения и все его привязки к конфигурации вместе с вашей правкой. Для нового расширения, которого в базе еще не было, точкой восстановления служат исходники.
Фоновое обновление (серверная база)
| Параметр | Описание |
|---|---|
-BackgroundStart |
Начать фоновое обновление |
-BackgroundFinish |
Дождаться окончания |
-BackgroundCancel |
Отменить |
-BackgroundSuspend |
Приостановить |
-BackgroundResume |
Возобновить |
Коды возврата
| Код | Описание |
|---|---|
| 0 | Успешно |
| 1 | Ошибка (см. лог) |
Предупреждения
- Если обновление не динамическое - потребуется монопольный доступ к базе (все пользователи должны выйти)
- Для серверных баз рекомендуется
-Dynamic+для обновления без остановки - Если структура данных существенно изменилась (удаление реквизитов, изменение типов) - динамическое обновление может быть невозможно
Примеры
# Обычное обновление (файловая база)
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 "МоеРасширение"