diff --git a/docs/db-guide.md b/docs/db-guide.md index c1c50337..f86debf2 100644 --- a/docs/db-guide.md +++ b/docs/db-guide.md @@ -123,10 +123,25 @@ Claude вызовет `/db-run dev`. 91807 файлов из 91807). Дампы конфигурации, снятые разными движками, сравнимы напрямую. Это НЕ распространяется на разбор внешних обработок и отчётов (`epf-dump`/`erf-dump`): там результат -определяется не движком, а **базой, в которой идёт разбор**. Если ссылочные типы реквизитов в этой -базе не разрешаются (в конфигурации нет соответствующих объектов), в исходники попадают -идентификаторы вместо имени типа. Поэтому для разбора нужна база с матч-конфигурацией — и при -работе через `ibcmd` за этим надо следить отдельно, чтобы разбор не ушёл в пустую или чужую базу. +определяется **базой, в которой идёт разбор**, а движок начинает влиять, когда база не та. + +Замер на реквизите типа `CatalogRef.Валюты` (платформа 8.3.24): + +| База разбора | Движок | Что попадает в исходники | +|---|---|---| +| с подходящей конфигурацией | `1cv8` и `ibcmd` одинаково | `cfg:CatalogRef.Валюты` | +| без нужного объекта | `ibcmd` | `602d2ea9-…` — идентификатор типа | +| без нужного объекта | `1cv8` | `xs:string` + `StringQualifiers Length=10` | + +Годится только первая строка, и вот почему. Имя типа резолвится **по имени**: такие исходники +собираются в любой конфигурации, где есть одноимённый объект. Идентификатор же привязан к той +конфигурации, из которой получен: сборка в чужой базе проходит **без ошибки**, но uuid остаётся +висячим и ни к чему не привязывается — работать с такими исходниками нельзя. Вариант с `xs:string` +хуже всех: ссылка подменена строкой, и по XML не видно, что там вообще была ссылка. + +Оба деградированных варианта молчаливы — ни при разборе, ни при последующей сборке ошибок нет. +Поэтому разбирать EPF/ERF нужно в базе с подходящей конфигурацией; «разберу в пустой, потом +поправлю» не работает. Ограничения: - только **файловые** базы (для серверных используйте конфигуратор);