fix(meta-compile,meta-decompile): Characteristics edge-кейсы filterValue/-1/0 (v1.26/v0.17)

Досверка на всех 212 объектах корпуса вскрыла 3 недочёта первой версии
(category-objects по «Characteristics» их не ловил — листы отдельные owner'ы):

  • TypesFilterValue: в корпусе доминирует xs:string с ГОЛЫМ именем (315),
    а не DesignTimeRef с полным путём (62); +2 xs:boolean. Захардкоженный DTR
    ломал 315. Теперь через Normalize-ChoiceValue: голое→xs:string, полный
    путь→DTR, bool→xs:boolean, null→xsi:nil.
  • «Пустая» характеристика: поля = -1 → эмитим -1 verbatim (не разворачиваем).
  • DataPathField/MultipleValues* не всегда -1 (иногда 0) → опциональные ключи
    dataPathField/multipleValues*Field, дефолт -1.

remaining ВСЕХ листовых категорий Characteristics = 0 на 212 объектах (match
4→22). Кейс покрывает обе формы filterValue. Регресс 44/44 ps1+py, ps1↔py
identical. spec §7.1.4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-04 12:26:57 +03:00
parent e2f019d872
commit 8b01d7a6bd
6 changed files with 64 additions and 46 deletions
@@ -5,7 +5,7 @@
"name": "Организации",
"characteristics": [
{ "types": { "from": "Справочник.НаборыДопРеквИСвед.ДополнительныеРеквизиты",
"key": "Свойство", "filterField": "Ссылка", "filterValue": "Справочник_Организации" },
"key": "Свойство", "filterField": "Ссылка", "filterValue": "Catalog.НаборыДопРеквИСвед.Справочник_Организации" },
"values": { "from": "Catalog.Организации.TabularSection.ДополнительныеРеквизиты",
"object": "Ссылка", "type": "Свойство", "value": "Значение" } },
{ "types": { "from": "Catalog.НаборыДопРеквИСвед.TabularSection.ДополнительныеСведения",
@@ -69,7 +69,7 @@
<xr:CharacteristicTypes from="Catalog.НаборыДопРеквИСвед.TabularSection.ДополнительныеСведения">
<xr:KeyField>Catalog.НаборыДопРеквИСвед.TabularSection.ДополнительныеСведения.Attribute.Свойство</xr:KeyField>
<xr:TypesFilterField>Catalog.НаборыДопРеквИСвед.TabularSection.ДополнительныеСведения.StandardAttribute.Ref</xr:TypesFilterField>
<xr:TypesFilterValue xsi:type="xr:DesignTimeRef">Catalog.НаборыДопРеквИСвед.Справочник_Организации</xr:TypesFilterValue>
<xr:TypesFilterValue xsi:type="xs:string">Справочник_Организации</xr:TypesFilterValue>
<xr:DataPathField>-1</xr:DataPathField>
<xr:MultipleValuesUseField>-1</xr:MultipleValuesUseField>
</xr:CharacteristicTypes>