mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-11 00:14:56 +03:00
refactor(skills): unify database and platform resolution across all skills
Replace duplicated "Разрешение базы данных" sections in 8 db-* skills with a compact "Параметры подключения" block referencing .v8-project.json. Add Git branch-based database resolution priority (databases[].branches matched against current branch before falling back to default). Migrate epf-build, epf-dump, erf-build, erf-dump from V8_PATH/V8_BASE environment variables to .v8-project.json — registered databases are now preferred over empty build bases, solving XDTO errors with reference types. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -22,13 +22,10 @@ allowed-tools:
|
||||
/db-create — интерактивно
|
||||
```
|
||||
|
||||
## Разрешение параметров
|
||||
## Параметры подключения
|
||||
|
||||
1. Прочитай `.v8-project.json` для получения `v8path` (если есть)
|
||||
2. Если `v8path` не задан — автоопределение платформы:
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
Прочитай `.v8-project.json` из корня проекта для `v8path` (путь к платформе).
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
|
||||
## Команды
|
||||
|
||||
|
||||
@@ -21,18 +21,14 @@ allowed-tools:
|
||||
/db-dump-cf — база по умолчанию, файл config.cf
|
||||
```
|
||||
|
||||
## Разрешение базы данных
|
||||
## Параметры подключения
|
||||
|
||||
1. Прочитай `.v8-project.json` (в корне проекта или ближайшем родительском каталоге)
|
||||
2. Если пользователь указал базу — найди по id/alias/branch/имени
|
||||
3. Если не указал — используй `default`
|
||||
4. Если не найдено или неоднозначно — спроси пользователя
|
||||
5. Если файл не найден — спроси пользователя параметры подключения и предложи создать `.v8-project.json`
|
||||
|
||||
Автоопределение платформы (если `v8path` не задан):
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу:
|
||||
1. Если пользователь указал — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
Если файла нет — предложи `/db-list add`.
|
||||
|
||||
## Команда
|
||||
|
||||
|
||||
@@ -22,20 +22,15 @@ allowed-tools:
|
||||
/db-dump-xml dev src/config -Mode Partial -Objects "Справочник.Номенклатура,Документ.Заказ"
|
||||
```
|
||||
|
||||
## Разрешение базы данных
|
||||
## Параметры подключения
|
||||
|
||||
1. Прочитай `.v8-project.json` (в корне проекта или ближайшем родительском каталоге)
|
||||
2. Если пользователь указал базу — найди по id/alias/branch/имени
|
||||
3. Если не указал — используй `default`
|
||||
4. Если не найдено или неоднозначно — спроси пользователя
|
||||
5. Если файл не найден — спроси пользователя параметры подключения и предложи создать `.v8-project.json`
|
||||
|
||||
Если в записи базы указан `configSrc` — используй его как каталог выгрузки по умолчанию.
|
||||
|
||||
Автоопределение платформы (если `v8path` не задан):
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу:
|
||||
1. Если пользователь указал — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
Если файла нет — предложи `/db-list add`.
|
||||
Если в записи базы указан `configSrc` — используй как каталог выгрузки по умолчанию.
|
||||
|
||||
## Команда
|
||||
|
||||
|
||||
@@ -22,18 +22,14 @@ allowed-tools:
|
||||
|
||||
> **Внимание**: загрузка CF **полностью заменяет** конфигурацию в базе. Перед выполнением запроси подтверждение у пользователя.
|
||||
|
||||
## Разрешение базы данных
|
||||
## Параметры подключения
|
||||
|
||||
1. Прочитай `.v8-project.json` (в корне проекта или ближайшем родительском каталоге)
|
||||
2. Если пользователь указал базу — найди по id/alias/branch/имени
|
||||
3. Если не указал — используй `default`
|
||||
4. Если не найдено или неоднозначно — спроси пользователя
|
||||
5. Если файл не найден — спроси пользователя параметры подключения и предложи создать `.v8-project.json`
|
||||
|
||||
Автоопределение платформы (если `v8path` не задан):
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу:
|
||||
1. Если пользователь указал — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
Если файла нет — предложи `/db-list add`.
|
||||
|
||||
## Команда
|
||||
|
||||
|
||||
@@ -23,20 +23,15 @@ allowed-tools:
|
||||
/db-load-git dev -DryRun — только показать что будет загружено
|
||||
```
|
||||
|
||||
## Разрешение базы данных
|
||||
## Параметры подключения
|
||||
|
||||
1. Прочитай `.v8-project.json` (в корне проекта или ближайшем родительском каталоге)
|
||||
2. Если пользователь указал базу — найди по id/alias/branch/имени
|
||||
3. Если не указал — используй `default`
|
||||
4. Если не найдено или неоднозначно — спроси пользователя
|
||||
5. Если файл не найден — спроси пользователя параметры подключения и предложи создать `.v8-project.json`
|
||||
|
||||
Если в записи базы указан `configSrc` — используй его как каталог конфигурации.
|
||||
|
||||
Автоопределение платформы (если `v8path` не задан):
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу:
|
||||
1. Если пользователь указал — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
Если файла нет — предложи `/db-list add`.
|
||||
Если в записи базы указан `configSrc` — используй как каталог конфигурации.
|
||||
|
||||
## Команда
|
||||
|
||||
|
||||
@@ -23,20 +23,15 @@ allowed-tools:
|
||||
|
||||
> **Внимание**: полная загрузка **заменяет всю конфигурацию** в базе. Перед выполнением запроси подтверждение у пользователя.
|
||||
|
||||
## Разрешение базы данных
|
||||
## Параметры подключения
|
||||
|
||||
1. Прочитай `.v8-project.json` (в корне проекта или ближайшем родительском каталоге)
|
||||
2. Если пользователь указал базу — найди по id/alias/branch/имени
|
||||
3. Если не указал — используй `default`
|
||||
4. Если не найдено или неоднозначно — спроси пользователя
|
||||
5. Если файл не найден — спроси пользователя параметры подключения и предложи создать `.v8-project.json`
|
||||
|
||||
Если в записи базы указан `configSrc` — используй его как каталог загрузки по умолчанию.
|
||||
|
||||
Автоопределение платформы (если `v8path` не задан):
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу:
|
||||
1. Если пользователь указал — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
Если файла нет — предложи `/db-list add`.
|
||||
Если в записи базы указан `configSrc` — используй как каталог загрузки по умолчанию.
|
||||
|
||||
## Команда
|
||||
|
||||
|
||||
@@ -22,18 +22,14 @@ allowed-tools:
|
||||
/db-run dev /C "параметр запуска"
|
||||
```
|
||||
|
||||
## Разрешение базы данных
|
||||
## Параметры подключения
|
||||
|
||||
1. Прочитай `.v8-project.json` (в корне проекта или ближайшем родительском каталоге)
|
||||
2. Если пользователь указал базу — найди по id/alias/branch/имени
|
||||
3. Если не указал — используй `default`
|
||||
4. Если не найдено или неоднозначно — спроси пользователя
|
||||
5. Если файл не найден — спроси пользователя параметры подключения и предложи создать `.v8-project.json`
|
||||
|
||||
Автоопределение платформы (если `v8path` не задан):
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу:
|
||||
1. Если пользователь указал — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
Если файла нет — предложи `/db-list add`.
|
||||
|
||||
## Команда
|
||||
|
||||
|
||||
@@ -21,18 +21,14 @@ allowed-tools:
|
||||
/db-update dev -Dynamic+
|
||||
```
|
||||
|
||||
## Разрешение базы данных
|
||||
## Параметры подключения
|
||||
|
||||
1. Прочитай `.v8-project.json` (в корне проекта или ближайшем родительском каталоге)
|
||||
2. Если пользователь указал базу — найди по id/alias/branch/имени
|
||||
3. Если не указал — используй `default`
|
||||
4. Если не найдено или неоднозначно — спроси пользователя
|
||||
5. Если файл не найден — спроси пользователя параметры подключения и предложи создать `.v8-project.json`
|
||||
|
||||
Автоопределение платформы (если `v8path` не задан):
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу:
|
||||
1. Если пользователь указал — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
Если файла нет — предложи `/db-list add`.
|
||||
|
||||
## Команда
|
||||
|
||||
|
||||
@@ -25,26 +25,30 @@ allowed-tools:
|
||||
| SrcDir | нет | `src` | Каталог исходников |
|
||||
| OutDir | нет | `build` | Каталог для результата |
|
||||
|
||||
## Переменные окружения
|
||||
## Параметры подключения
|
||||
|
||||
| Переменная | Описание | Пример |
|
||||
|------------|---------------------------------------|-----------------------------------------------|
|
||||
| V8_PATH | Каталог bin платформы 1С | `C:\Program Files\1cv8\8.3.25.1257\bin` |
|
||||
| V8_BASE | Путь к пустой файловой ИБ | `.\base` |
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу для сборки:
|
||||
1. Если пользователь указал базу — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
4. Если `.v8-project.json` нет или баз нет — создай пустую ИБ в `./base`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
|
||||
## Команды
|
||||
|
||||
### 1. Создать пустую ИБ (если нет)
|
||||
### 1. Создать ИБ для сборки (если нет зарегистрированной базы)
|
||||
|
||||
```cmd
|
||||
"%V8_PATH%\1cv8.exe" CREATEINFOBASE File="%V8_BASE%"
|
||||
"<v8path>\1cv8.exe" CREATEINFOBASE File="./base"
|
||||
```
|
||||
|
||||
### 2. Сборка EPF из XML
|
||||
|
||||
Файловая база:
|
||||
```cmd
|
||||
"%V8_PATH%\1cv8.exe" DESIGNER /F "%V8_BASE%" /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "<SrcDir>\<ProcessorName>.xml" "<OutDir>\<ProcessorName>.epf" /Out "<OutDir>\build.log"
|
||||
"<v8path>\1cv8.exe" DESIGNER /F "<база>" /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "<SrcDir>\<ProcessorName>.xml" "<OutDir>\<ProcessorName>.epf" /Out "<OutDir>\build.log"
|
||||
```
|
||||
Серверная база — вместо `/F` используй `/S`, добавь `/N"<user>" /P"<pwd>"` при наличии учётных данных.
|
||||
|
||||
## Коды возврата
|
||||
|
||||
@@ -53,31 +57,17 @@ allowed-tools:
|
||||
| 0 | Успешная сборка |
|
||||
| 1 | Ошибка (см. лог) |
|
||||
|
||||
## Автоопределение платформы (Windows)
|
||||
## Ссылочные типы
|
||||
|
||||
Если `V8_PATH` не задан, можно найти автоматически:
|
||||
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
|
||||
## Ссылочные типы и выбор базы
|
||||
|
||||
Пустая ИБ (`V8_BASE`) подходит для сборки, если формы используют только базовые типы (`xs:string`, `xs:boolean` и т.д.) или тип самой обработки (`ExternalDataProcessorObject.Имя`).
|
||||
|
||||
Если обработка использует ссылочные типы конфигурации (`CatalogRef.XXX`, `DocumentRef.XXX` и т.д.) — в реквизитах объекта, табличных частях или реквизитах форм — **сборка в пустой базе упадёт** с ошибкой XDTO. Платформа не может резолвить типы, отсутствующие в конфигурации базы.
|
||||
|
||||
**Решение**: собирать в базе с целевой конфигурацией. Если конфигурация неизвестна — спросить пользователя путь к базе.
|
||||
Если обработка использует ссылочные типы конфигурации (`CatalogRef.XXX`, `DocumentRef.XXX`) — сборка в пустой базе упадёт с ошибкой XDTO. Зарегистрируй базу с целевой конфигурацией через `/db-list add`.
|
||||
|
||||
## Пример полного цикла
|
||||
|
||||
```powershell
|
||||
$env:V8_PATH = "C:\Program Files\1cv8\8.3.25.1257\bin"
|
||||
$env:V8_BASE = ".\base"
|
||||
# Параметры из .v8-project.json:
|
||||
$v8path = "C:\Program Files\1cv8\8.3.25.1257\bin" # v8path
|
||||
$base = "C:\Bases\MyDB" # databases[].path
|
||||
|
||||
# Создать ИБ
|
||||
& "$env:V8_PATH\1cv8.exe" CREATEINFOBASE "File=$env:V8_BASE"
|
||||
|
||||
# Собрать
|
||||
& "$env:V8_PATH\1cv8.exe" DESIGNER /F $env:V8_BASE /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "src\МояОбработка.xml" "build\МояОбработка.epf" /Out "build\build.log"
|
||||
# Собрать (база с конфигурацией — ссылочные типы резолвятся)
|
||||
& "$v8path\1cv8.exe" DESIGNER /F $base /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "src\МояОбработка.xml" "build\МояОбработка.epf" /Out "build\build.log"
|
||||
```
|
||||
@@ -24,26 +24,30 @@ allowed-tools:
|
||||
| EpfFile | да | — | Путь к EPF-файлу |
|
||||
| OutDir | нет | `src` | Каталог для выгрузки исходников |
|
||||
|
||||
## Переменные окружения
|
||||
## Параметры подключения
|
||||
|
||||
| Переменная | Описание | Пример |
|
||||
|------------|---------------------------------------|-----------------------------------------------|
|
||||
| V8_PATH | Каталог bin платформы 1С | `C:\Program Files\1cv8\8.3.25.1257\bin` |
|
||||
| V8_BASE | Путь к пустой файловой ИБ | `.\base` |
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу:
|
||||
1. Если пользователь указал базу — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
4. Если `.v8-project.json` нет или баз нет — создай пустую ИБ в `./base`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
|
||||
## Команды
|
||||
|
||||
### 1. Создать пустую ИБ (если нет)
|
||||
### 1. Создать ИБ (если нет зарегистрированной базы)
|
||||
|
||||
```cmd
|
||||
"%V8_PATH%\1cv8.exe" CREATEINFOBASE File="%V8_BASE%"
|
||||
"<v8path>\1cv8.exe" CREATEINFOBASE File="./base"
|
||||
```
|
||||
|
||||
### 2. Разборка EPF в XML
|
||||
|
||||
Файловая база:
|
||||
```cmd
|
||||
"%V8_PATH%\1cv8.exe" DESIGNER /F "%V8_BASE%" /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "<OutDir>" "<EpfFile>" -Format Hierarchical /Out "<OutDir>\dump.log"
|
||||
"<v8path>\1cv8.exe" DESIGNER /F "<база>" /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "<OutDir>" "<EpfFile>" -Format Hierarchical /Out "<OutDir>\dump.log"
|
||||
```
|
||||
Серверная база — вместо `/F` используй `/S`, добавь `/N"<user>" /P"<pwd>"` при наличии учётных данных.
|
||||
|
||||
## Коды возврата
|
||||
|
||||
@@ -79,12 +83,10 @@ allowed-tools:
|
||||
## Пример полного цикла
|
||||
|
||||
```powershell
|
||||
$env:V8_PATH = "C:\Program Files\1cv8\8.3.25.1257\bin"
|
||||
$env:V8_BASE = ".\base"
|
||||
|
||||
# Создать ИБ
|
||||
& "$env:V8_PATH\1cv8.exe" CREATEINFOBASE "File=$env:V8_BASE"
|
||||
# Параметры из .v8-project.json:
|
||||
$v8path = "C:\Program Files\1cv8\8.3.25.1257\bin" # v8path
|
||||
$base = "C:\Bases\MyDB" # databases[].path
|
||||
|
||||
# Разобрать
|
||||
& "$env:V8_PATH\1cv8.exe" DESIGNER /F $env:V8_BASE /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "src" "build\МояОбработка.epf" -Format Hierarchical /Out "build\dump.log"
|
||||
& "$v8path\1cv8.exe" DESIGNER /F $base /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "src" "build\МояОбработка.epf" -Format Hierarchical /Out "build\dump.log"
|
||||
```
|
||||
@@ -25,26 +25,30 @@ allowed-tools:
|
||||
| SrcDir | нет | `src` | Каталог исходников |
|
||||
| OutDir | нет | `build` | Каталог для результата |
|
||||
|
||||
## Переменные окружения
|
||||
## Параметры подключения
|
||||
|
||||
| Переменная | Описание | Пример |
|
||||
|------------|---------------------------------------|-----------------------------------------------|
|
||||
| V8_PATH | Каталог bin платформы 1С | `C:\Program Files\1cv8\8.3.25.1257\bin` |
|
||||
| V8_BASE | Путь к пустой файловой ИБ | `.\base` |
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу для сборки:
|
||||
1. Если пользователь указал базу — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
4. Если `.v8-project.json` нет или баз нет — создай пустую ИБ в `./base`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
|
||||
## Команды
|
||||
|
||||
### 1. Создать пустую ИБ (если нет)
|
||||
### 1. Создать ИБ для сборки (если нет зарегистрированной базы)
|
||||
|
||||
```cmd
|
||||
"%V8_PATH%\1cv8.exe" CREATEINFOBASE File="%V8_BASE%"
|
||||
"<v8path>\1cv8.exe" CREATEINFOBASE File="./base"
|
||||
```
|
||||
|
||||
### 2. Сборка ERF из XML
|
||||
|
||||
Файловая база:
|
||||
```cmd
|
||||
"%V8_PATH%\1cv8.exe" DESIGNER /F "%V8_BASE%" /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "<SrcDir>\<ReportName>.xml" "<OutDir>\<ReportName>.erf" /Out "<OutDir>\build.log"
|
||||
"<v8path>\1cv8.exe" DESIGNER /F "<база>" /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "<SrcDir>\<ReportName>.xml" "<OutDir>\<ReportName>.erf" /Out "<OutDir>\build.log"
|
||||
```
|
||||
Серверная база — вместо `/F` используй `/S`, добавь `/N"<user>" /P"<pwd>"` при наличии учётных данных.
|
||||
|
||||
## Коды возврата
|
||||
|
||||
@@ -53,31 +57,17 @@ allowed-tools:
|
||||
| 0 | Успешная сборка |
|
||||
| 1 | Ошибка (см. лог) |
|
||||
|
||||
## Автоопределение платформы (Windows)
|
||||
## Ссылочные типы
|
||||
|
||||
Если `V8_PATH` не задан, можно найти автоматически:
|
||||
|
||||
```powershell
|
||||
$v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1
|
||||
```
|
||||
|
||||
## Ссылочные типы и выбор базы
|
||||
|
||||
Пустая ИБ (`V8_BASE`) подходит для сборки, если формы используют только базовые типы (`xs:string`, `xs:boolean` и т.д.) или тип самого отчёта (`ExternalReportObject.Имя`).
|
||||
|
||||
Если отчёт использует ссылочные типы конфигурации (`CatalogRef.XXX`, `DocumentRef.XXX` и т.д.) — в реквизитах объекта, табличных частях или реквизитах форм — **сборка в пустой базе упадёт** с ошибкой XDTO. Платформа не может резолвить типы, отсутствующие в конфигурации базы.
|
||||
|
||||
**Решение**: собирать в базе с целевой конфигурацией. Если конфигурация неизвестна — спросить пользователя путь к базе.
|
||||
Если отчёт использует ссылочные типы конфигурации (`CatalogRef.XXX`, `DocumentRef.XXX`) — сборка в пустой базе упадёт с ошибкой XDTO. Зарегистрируй базу с целевой конфигурацией через `/db-list add`.
|
||||
|
||||
## Пример полного цикла
|
||||
|
||||
```powershell
|
||||
$env:V8_PATH = "C:\Program Files\1cv8\8.3.25.1257\bin"
|
||||
$env:V8_BASE = ".\base"
|
||||
# Параметры из .v8-project.json:
|
||||
$v8path = "C:\Program Files\1cv8\8.3.25.1257\bin" # v8path
|
||||
$base = "C:\Bases\MyDB" # databases[].path
|
||||
|
||||
# Создать ИБ
|
||||
& "$env:V8_PATH\1cv8.exe" CREATEINFOBASE "File=$env:V8_BASE"
|
||||
|
||||
# Собрать
|
||||
& "$env:V8_PATH\1cv8.exe" DESIGNER /F $env:V8_BASE /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "src\МойОтчёт.xml" "build\МойОтчёт.erf" /Out "build\build.log"
|
||||
# Собрать (база с конфигурацией — ссылочные типы резолвятся)
|
||||
& "$v8path\1cv8.exe" DESIGNER /F $base /DisableStartupDialogs /LoadExternalDataProcessorOrReportFromFiles "src\МойОтчёт.xml" "build\МойОтчёт.erf" /Out "build\build.log"
|
||||
```
|
||||
|
||||
@@ -24,26 +24,30 @@ allowed-tools:
|
||||
| ErfFile | да | — | Путь к ERF-файлу |
|
||||
| OutDir | нет | `src` | Каталог для выгрузки исходников |
|
||||
|
||||
## Переменные окружения
|
||||
## Параметры подключения
|
||||
|
||||
| Переменная | Описание | Пример |
|
||||
|------------|---------------------------------------|-----------------------------------------------|
|
||||
| V8_PATH | Каталог bin платформы 1С | `C:\Program Files\1cv8\8.3.25.1257\bin` |
|
||||
| V8_BASE | Путь к пустой файловой ИБ | `.\base` |
|
||||
Прочитай `.v8-project.json` из корня проекта. Возьми `v8path` (путь к платформе) и разреши базу:
|
||||
1. Если пользователь указал базу — ищи по id / alias / name
|
||||
2. Если не указал — сопоставь текущую ветку Git с `databases[].branches`
|
||||
3. Если ветка не совпала — используй `default`
|
||||
4. Если `.v8-project.json` нет или баз нет — создай пустую ИБ в `./base`
|
||||
Если `v8path` не задан — автоопределение: `Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort -Desc | Select -First 1`
|
||||
|
||||
## Команды
|
||||
|
||||
### 1. Создать пустую ИБ (если нет)
|
||||
### 1. Создать ИБ (если нет зарегистрированной базы)
|
||||
|
||||
```cmd
|
||||
"%V8_PATH%\1cv8.exe" CREATEINFOBASE File="%V8_BASE%"
|
||||
"<v8path>\1cv8.exe" CREATEINFOBASE File="./base"
|
||||
```
|
||||
|
||||
### 2. Разборка ERF в XML
|
||||
|
||||
Файловая база:
|
||||
```cmd
|
||||
"%V8_PATH%\1cv8.exe" DESIGNER /F "%V8_BASE%" /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "<OutDir>" "<ErfFile>" -Format Hierarchical /Out "<OutDir>\dump.log"
|
||||
"<v8path>\1cv8.exe" DESIGNER /F "<база>" /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "<OutDir>" "<ErfFile>" -Format Hierarchical /Out "<OutDir>\dump.log"
|
||||
```
|
||||
Серверная база — вместо `/F` используй `/S`, добавь `/N"<user>" /P"<pwd>"` при наличии учётных данных.
|
||||
|
||||
## Коды возврата
|
||||
|
||||
@@ -79,12 +83,10 @@ allowed-tools:
|
||||
## Пример полного цикла
|
||||
|
||||
```powershell
|
||||
$env:V8_PATH = "C:\Program Files\1cv8\8.3.25.1257\bin"
|
||||
$env:V8_BASE = ".\base"
|
||||
|
||||
# Создать ИБ
|
||||
& "$env:V8_PATH\1cv8.exe" CREATEINFOBASE "File=$env:V8_BASE"
|
||||
# Параметры из .v8-project.json:
|
||||
$v8path = "C:\Program Files\1cv8\8.3.25.1257\bin" # v8path
|
||||
$base = "C:\Bases\MyDB" # databases[].path
|
||||
|
||||
# Разобрать
|
||||
& "$env:V8_PATH\1cv8.exe" DESIGNER /F $env:V8_BASE /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "src" "build\МойОтчёт.erf" -Format Hierarchical /Out "build\dump.log"
|
||||
& "$v8path\1cv8.exe" DESIGNER /F $base /DisableStartupDialogs /DumpExternalDataProcessorOrReportToFiles "src" "build\МойОтчёт.erf" -Format Hierarchical /Out "build\dump.log"
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user