| name | db-repo |
| description | Работа с хранилищем конфигурации 1С. Используй когда нужно захватить объекты, поместить изменения в хранилище конфигурации, получить изменения из него, подключить базу к хранилищу |
| argument-hint | <lock|unlock|commit|update> [database] -Objects "<объекты>" |
| allowed-tools | ["Bash","Read","Glob","AskUserQuestion"] |
/db-repo — Хранилище конфигурации 1С
Захват и помещение объектов, получение изменений, подключение базы, история версий,
администрирование хранилища.
Хранилище конфигурации 1С, а не Git-репозиторий.
Usage
/db-repo lock [database] -Objects "Справочник.Номенклатура"
/db-repo commit [database] -Objects "Справочник.Номенклатура" -Comment "Добавлен Артикул"
/db-repo unlock [database] -Objects "Справочник.Номенклатура"
/db-repo update [database]
Порядок работы
В базу, подключённую к хранилищу, исходники грузятся только частично и только по захваченным
объектам. Выполняй строго по шагам:
0. /db-repo update <база> — начать с актуального состояния
1. /db-repo lock <база> -Objects "Справочник.Номенклатура"
2. если шаг 0 или 1 напечатал «локальная конфигурация изменена, получено объектов из хранилища: N» —
выгрузи названные объекты: /db-dump-xml <база> <каталог> -Mode Partial -ObjectsFile "<файл из вывода>"
3. правки в исходниках: /meta-edit, /form-edit, /skd-edit, /meta-compile и т. д.
4. /db-load-xml <каталог> <база> -Mode Partial -Files "Catalogs/Номенклатура.xml,…" -UpdateDB
5. /db-repo commit <база> -Objects "Справочник.Номенклатура" -Comment "…"
Шаг 0 стоит делать всегда, когда работа не продолжается сразу после предыдущего цикла: правки
должны опираться на актуальное состояние — в том числе тех объектов, которые ты не меняешь, но
используешь.
Шаг 2 пропускать нельзя: захват и обновление подтягивают из хранилища свежие версии, и загрузка
исходников, снятых раньше, откатит чужие изменения — молча, без ошибки.
Что вообще захватывается. Отдельные объекты хранилища — сам объект, а также его формы,
макеты и команды. Реквизиты, табличные части, измерения и ресурсы отдельными объектами не
являются: они правятся в составе владельца.
| Что правишь | Что захватывать |
|---|
| Реквизит, табличную часть, измерение, ресурс, модуль объекта | сам объект: Справочник.Контрагенты |
| Существующую форму, макет, команду | её саму: Справочник.Контрагенты.Форма.ФормаЭлемента |
| Добавляешь новую форму, макет, команду | объект-владельца; при помещении назови и новый объект |
| Добавляешь новый объект конфигурации | только корень: Конфигурация. Самого объекта ещё нет — захватить его нельзя; при помещении назови и его |
Захватывай минимум того, что правишь: чем шире захват, тем больше конфликтов с коллегами.
Захват объекта его формы и макеты не захватывает — для этого есть -WithChildren.
Параметры подключения
Прочитай .v8-project.json из корня проекта. Возьми v8path и разреши базу:
- Если пользователь указал параметры подключения — используй напрямую
- Если указал базу по имени — ищи по id / alias / name
- Если не указал — сопоставь текущую ветку Git с
databases[].branches
- Если ветка не совпала — используй
default
Реквизиты хранилища передавать не нужно: запись базы находится по переданным параметрам
соединения (-InfoBasePath либо -InfoBaseServer + -InfoBaseRef), реквизиты берутся из её
repository. Задать их явно можно параметрами -Repository*.
Команда
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Command <подкоманда> <параметры>
Рабочий цикл
| Подкоманда | Что делает |
|---|
lock | Захватить объекты |
unlock | Отменить захват |
commit | Поместить изменения в хранилище |
update | Получить изменения из хранилища |
Параметры
| Параметр | Обязательный | Описание |
|---|
-InfoBasePath <путь> | * | Файловая база |
-InfoBaseServer <сервер> | * | Сервер 1С |
-InfoBaseRef <имя> | * | Имя базы на сервере |
-UserName <имя> | нет | Пользователь базы |
-Password <пароль> | нет | Пароль пользователя базы |
-Objects <список> | усл. | Объекты через запятую. Для lock, unlock, commit обязателен, если не задан -All |
-ObjectsFile <путь> | нет | Файл со списком объектов, одно имя на строку |
-All | нет | Операция над всей конфигурацией — вместо -Objects, а не вместе с ним |
-WithChildren | нет | Вместе с подчинёнными объектами на полную глубину |
-Comment <текст> | нет | Комментарий к помещению (commit). Многострочный — как есть, с переводами строк |
-KeepLocked | нет | Оставить объекты захваченными после помещения |
-Revised | нет | Получать захваченные объекты, если потребуется |
-Force | нет | Разное по подкомандам — см. ниже |
-Extension <имя> | нет | Работать с хранилищем расширения |
-RepositoryPath <путь> | нет | Хранилище явно, вместо реестра |
|
* — нужен либо -InfoBasePath, либо пара -InfoBaseServer + -InfoBaseRef
-Force
| Подкоманда | Что делает |
|---|
unlock | Теряет локальные правки: объекты перезаписываются версией из хранилища |
commit | Пытается очистить ссылки на удалённые объекты вместо ошибки |
update | Подтверждает добавление и удаление объектов конфигурации |
Имена объектов
Объект — Справочник.Номенклатура. Форма, макет, команда — полным путём:
Документ.ЗаказПокупателя.Форма.ФормаДокумента, Справочник.Номенклатура.Макет.Печать.
Корень конфигурации — Конфигурация.
Если объект «не найден», это не всегда опечатка: он мог появиться в хранилище позже, чем
обновлялась база (/db-repo update), либо это вовсе не объект хранилища — реквизит или
табличная часть.
Результат
Нулевой код не означает, что что-то изменилось. Под нулём приходят «уже захвачено», «обновлять
нечего», «помещать нечего» и частичный захват — когда часть объектов занята другими, а остальное
захвачено и его можно править.
Читай текст вывода, а не только код. Там же приходит список полученных из хранилища объектов,
который требует перевыгрузки перед правкой.
Требуют подтверждения пользователя
Перед этими операциями спроси подтверждение:
| Операция | Почему |
|---|
lock -All | Захватывает всю конфигурацию: на большой базе идёт долго и блокирует работу всей команде |
unlock -Force | Теряются локальные правки захваченных объектов |
disconnect | Теряется подключение базы к хранилищу, в том числе на стороне хранилища |
connect -ForceReplaceCfg | Конфигурация базы заменяется конфигурацией из хранилища |
update не выполнится, если у базы в реестре не объявлено repository, а реквизиты не заданы
явно: на неподключённой к хранилищу базе эта команда заменяет всю конфигурацию его содержимым и
рапортует успех.
Расширения
У расширения своё хранилище со своим путём. Укажи -Extension "<Имя>" — реквизиты возьмутся из
extensions[].repository записи базы. Подкоманды работают одинаково для основной конфигурации и
для расширения.
Остальные задачи
| Файл | Про что |
|---|
| connect.md | Подключение и отключение базы от хранилища |
| history.md | История версий, отчёт, выгрузка версии в CF |
| admin.md | Создание хранилища, пользователи и права |
| service.md | Метки версий, оптимизация, очистка кеша |
Примеры
# Захватить справочник вместе с подчинёнными объектами
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Command lock -InfoBasePath "C:\Bases\MyDB" -Objects "Справочник.Номенклатура" -WithChildren
# Захватить корень — он нужен, чтобы добавить или удалить объект конфигурации
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Command lock -InfoBasePath "C:\Bases\MyDB" -Objects "Конфигурация"
# Поместить новый объект: он уже существует, поэтому называется вместе с корнем
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Command commit -InfoBasePath "C:\Bases\MyDB" -Objects "Конфигурация,Справочник.Склады" -Comment "Добавлен справочник Склады"
# Поместить с комментарием, оставив захват
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Command commit -InfoBasePath "C:\Bases\MyDB" -Objects "Справочник.Номенклатура" -Comment "Добавлен реквизит Артикул" -KeepLocked
# Получить изменения из хранилища
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Command update -InfoBasePath "C:\Bases\MyDB"
# Серверная база, расширение
powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/db-repo.ps1" -Command lock -InfoBaseServer "srv01" -InfoBaseRef "MyApp_Dev" -UserName "Admin" -Extension "МоёРасширение" -Objects "Справочник.Номенклатура"
После выполнения
lock или update сообщил о полученных объектах — выполни /db-dump-xml -Mode Partial с
указанным в выводе файлом, и только потом правь исходники
- после
lock правки идут через /db-load-xml -Mode Partial и /db-update
- изменения готовы — предложи
/db-repo commit с комментарием