test(meta-compile,verify-snapshots): ПВХ chart-of-characteristic-types — валидный справочник доп.значений (cert-фикс)

Кейс был семантически невалиден и не грузился в 1С (падал db-load-xml на чистом HEAD):
предопределённый «Цвет» имел тип CatalogRef.ЗначенияСвойств, которого НЕТ в типе значения ПВХ,
а стаб-справочник был плоский (не подчинён ПВХ, не указан в CharacteristicExtValues).

Фикс (по образцу реального ВидыСубконтоХозрасчетные→Catalog.Субконто):
- getStructuralDeps: ветка ChartOfCharacteristicTypes — справочник CharacteristicExtValues стабится
  ПОДЧИНЁННЫМ ПВХ (owners=[ChartOfCharacteristicTypes.X]), а не плоским.
- Кейс: +CatalogRef.ЗначенияСвойств в valueTypes (тип предопределённого входит в тип значения ПВХ),
  +characteristicExtValues: "Catalog.ЗначенияСвойств".

Cert ✓ (db-load-xml + db-update). Регресс 49/49 ps1+py.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-06 19:04:20 +03:00
parent 9a6a93b945
commit cdba298e86
3 changed files with 18 additions and 2 deletions
@@ -5,7 +5,8 @@
"name": "ДополнительныеРеквизитыИСведения",
"descriptionLength": 100,
"hierarchical": true,
"valueTypes": ["String(200)", "Number(15,2)", "Boolean", "Date"],
"valueTypes": ["String(200)", "Number(15,2)", "Boolean", "Date", "CatalogRef.ЗначенияСвойств"],
"characteristicExtValues": "Catalog.ЗначенияСвойств",
"standardAttributes": { "Description": { "synonym": "Свойство" } },
"attributes": ["НаборСвойств: String(100)"],
"predefined": [
@@ -38,7 +38,7 @@
<Comment/>
<UseStandardCommands>true</UseStandardCommands>
<IncludeHelpInContents>false</IncludeHelpInContents>
<CharacteristicExtValues/>
<CharacteristicExtValues>Catalog.ЗначенияСвойств</CharacteristicExtValues>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
@@ -56,6 +56,7 @@
<v8:DateQualifiers>
<v8:DateFractions>Date</v8:DateFractions>
</v8:DateQualifiers>
<v8:Type xmlns:d5p1="http://v8.1c.ru/8.1/data/enterprise/current-config">d5p1:CatalogRef.ЗначенияСвойств</v8:Type>
</Type>
<Hierarchical>true</Hierarchical>
<FoldersOnTop>true</FoldersOnTop>
+14
View File
@@ -184,6 +184,20 @@ function getStructuralDeps(input) {
}
}
break;
case 'ChartOfCharacteristicTypes':
// Доп. значения характеристик (CharacteristicExtValues) — ссылка на справочник, ПОДЧИНЁННЫЙ этому ПВХ
// (Owner = ChartOfCharacteristicTypes.X). 1С требует такой справочник для целостности; плоский стаб не годится
// (тип предопределённых должен входить в тип значения ПВХ, а справочник — быть подчинён). Стабим с Owner.
if (inp.characteristicExtValues) {
const ref = String(inp.characteristicExtValues);
const dot = ref.indexOf('.');
const cn = dot >= 0 ? ref.substring(dot + 1) : ref;
deps.push({
type: 'Catalog', name: cn,
dsl: { type: 'Catalog', name: cn, owners: [`ChartOfCharacteristicTypes.${inp.name}`] },
});
}
break;
case 'DocumentJournal':
if (inp.registeredDocuments) {
for (const docRef of inp.registeredDocuments) {