fix(xdto-info): рецепты создания по факту вида типа

Рецепт для вложенного объекта учил окольной форме там, где она не нужна.
Именованный тип берётся так же, как корневой — ФабрикаXDTO.Тип(ns, имя);
через Свойства.Получить(...).Тип идут только к анонимному, у которого имени
нет. Теперь строка выдаётся по факту: для именованного одна форма, для
анонимного другая, и обе с настоящими именами из пакета.

Убрано утверждение «Узел = ФабрикаXDTO.Создать(ТипУзла, Значение)» для типа
со значением элемента. По синтакс-помощнику Создать(<Тип>, <Значение>)
принимает ТипЗначенияXDTO, а такой узел — объектный тип, то есть форма была
просто неверной. Вместо неё проверяемый факт: значение лежит в свойстве
__content.

Зато для типа значения эта форма как раз корректна, а рецепта там не было
вовсе — добавлен.

Попутно: строка-заглушка «(раскрыт выше)» создавалась без новых ключей, и
py-порт падал с KeyError там, где PowerShell молча возвращает $null на
отсутствующем свойстве. Ключи добавлены, доступ переведён на .get().

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-26 13:52:52 +03:00
co-authored by Claude Opus 5
parent 6486f433de
commit 817ae0fea7
6 changed files with 66 additions and 22 deletions
@@ -14,4 +14,5 @@
Создание:
Тип = ФабрикаXDTO.Тип("urn:test:uses", "Заявка");
Объект = ФабрикаXDTO.Создать(Тип);
Вложенный = ФабрикаXDTO.Создать(Тип.Свойства.Получить("Вид").Тип);
// вложенный именованный тип — так же, как корневой:
Вид = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("urn:test:common", "Справочник"));
@@ -18,6 +18,8 @@
Создание:
Тип = ФабрикаXDTO.Тип("urn:test:nested", "Документ");
Объект = ФабрикаXDTO.Создать(Тип);
Вложенный = ФабрикаXDTO.Создать(Тип.Свойства.Получить("Реквизиты").Тип);
// тип со значением элемента: значение задаётся при создании
Узел = ФабрикаXDTO.Создать(ТипУзла, Значение);
// вложенный именованный тип — так же, как корневой:
Реквизиты = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("urn:test:nested", "Реквизиты"));
// у анонимного типа нет имени — только через свойство владельца:
Встроенный = ФабрикаXDTO.Создать(Тип.Свойства.Получить("Встроенный").Тип);
// собственное значение узла лежит в свойстве __content
@@ -15,6 +15,8 @@
Создание:
Тип = ФабрикаXDTO.Тип("urn:test:nested", "Документ");
Объект = ФабрикаXDTO.Создать(Тип);
Вложенный = ФабрикаXDTO.Создать(Тип.Свойства.Получить("Реквизиты").Тип);
// тип со значением элемента: значение задаётся при создании
Узел = ФабрикаXDTO.Создать(ТипУзла, Значение);
// вложенный именованный тип — так же, как корневой:
Реквизиты = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("urn:test:nested", "Реквизиты"));
// у анонимного типа нет имени — только через свойство владельца:
Встроенный = ФабрикаXDTO.Создать(Тип.Свойства.Получить("Встроенный").Тип);
// собственное значение узла лежит в свойстве __content
@@ -6,3 +6,6 @@
Допустимые значения (2):
Поручение
Требование
Создание:
Значение = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("urn:test:types", "ВидДокумента"), Значение);