From be216cd064474d74be45bb945083f54bb8ff26f0 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Tue, 10 Feb 2026 14:09:42 +0300 Subject: [PATCH] Document CatalogRef XDTO build failure in empty database Verified experimentally: EPF build with CatalogRef/DocumentRef types fails with XDTO exception in empty database (not silent UUID substitution as previously documented). Updated epf-build, form-compile, and build-spec accordingly. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/epf-build/SKILL.md | 8 ++++++++ .claude/skills/form-compile/SKILL.md | 2 +- docs/build-spec.md | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.claude/skills/epf-build/SKILL.md b/.claude/skills/epf-build/SKILL.md index 183268e6..7f21d638 100644 --- a/.claude/skills/epf-build/SKILL.md +++ b/.claude/skills/epf-build/SKILL.md @@ -61,6 +61,14 @@ allowed-tools: $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. Платформа не может резолвить типы, отсутствующие в конфигурации базы. + +**Решение**: собирать в базе с целевой конфигурацией. Если конфигурация неизвестна — спросить пользователя путь к базе. + ## Пример полного цикла ```powershell diff --git a/.claude/skills/form-compile/SKILL.md b/.claude/skills/form-compile/SKILL.md index f443a40d..b0b25b1a 100644 --- a/.claude/skills/form-compile/SKILL.md +++ b/.claude/skills/form-compile/SKILL.md @@ -406,4 +406,4 @@ powershell.exe -NoProfile -File .claude\skills\form-compile\scripts\form-compile - **Тип главного реквизита**: `ExternalDataProcessorObject.ИмяОбработки` (не `DataProcessorObject`) - **DataPath**: используйте реквизиты формы (`ИмяРеквизита`), а не `Объект.ИмяРеквизита` — у внешних обработок нет реквизитов объекта в метаданных -- **Ссылочные типы**: `CatalogRef.XXX`, `DocumentRef.XXX` и т.д. могут не собраться в пустой базе — используйте `string` или базовые типы для автономной сборки +- **Ссылочные типы**: `CatalogRef.XXX`, `DocumentRef.XXX` допустимы в XML, но для сборки EPF потребуется база с целевой конфигурацией (см. `/epf-build`) diff --git a/docs/build-spec.md b/docs/build-spec.md index 2c5c124f..ebcb1c5c 100644 --- a/docs/build-spec.md +++ b/docs/build-spec.md @@ -58,7 +58,7 @@ ## Примечания - Пустая ИБ достаточна для сборки, если обработка не ссылается на объекты конфигурации. -- Если обработка использует ссылочные типы конфигурации (`СправочникСсылка.*` и т.п.), при выгрузке/загрузке нужна база с соответствующей конфигурацией — иначе типы сохраняются как UUID. +- Если обработка использует ссылочные типы конфигурации (`CatalogRef.*`, `DocumentRef.*` и т.п.) — в реквизитах объекта, табличных частях или реквизитах форм — **сборка в пустой базе упадёт** с ошибкой XDTO. Платформа не может резолвить типы, отсутствующие в конфигурации. Необходима база с целевой конфигурацией. - Путь к `1cv8.exe` зависит от установленной версии платформы (например, `C:\Program Files\1cv8\8.3.27.1859\bin\1cv8.exe`). - `/DisableStartupDialogs` — подавляет интерактивные диалоги (например, «ИБ не обнаружена»), без него конфигуратор может зависнуть в ожидании пользовательского ввода. - Первый аргумент `/LoadExternalDataProcessorOrReportFromFiles` — путь к корневому XML-файлу, а **не** к каталогу.