diff --git a/.claude/skills/meta-info/scripts/meta-info.ps1 b/.claude/skills/meta-info/scripts/meta-info.ps1
index a154ae03..e7bc30ad 100644
--- a/.claude/skills/meta-info/scripts/meta-info.ps1
+++ b/.claude/skills/meta-info/scripts/meta-info.ps1
@@ -1,4 +1,4 @@
-# meta-info v1.7 — Compact summary of 1C metadata object
+# meta-info v1.8 — Compact summary of 1C metadata object
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory=$true)][Alias('Path')][string]$ObjectPath,
@@ -1097,24 +1097,26 @@ if (-not $drillDone) {
if ($parts.Count -gt 0) { Out ($parts -join " | ") }
}
- # Catalog-specific header properties
- if ($mdType -eq "Catalog") {
- $parts = @()
- $hier = $props.SelectSingleNode("md:Hierarchical", $ns)
- if ($hier -and $hier.InnerText -eq "true") {
- $ht = $props.SelectSingleNode("md:HierarchyType", $ns)
- $htText = if ($ht -and $ht.InnerText -eq "HierarchyFoldersAndItems") { "группы и элементы" } else { "элементы" }
- $limitNode = $props.SelectSingleNode("md:LimitLevelCount", $ns)
- $levelNode = $props.SelectSingleNode("md:LevelCount", $ns)
- if ($limitNode -and $limitNode.InnerText -eq "true" -and $levelNode) {
- $htText += ", уровней: $($levelNode.InnerText)"
- } else {
- $htText += ", без ограничения уровней"
- }
- $parts += "Иерархический: $htText"
+ # Свойства иерархии и подчинения. Иерархия — не только у справочников: свойство
+ # Hierarchical есть и у ПВХ (в корпусе acc/erp/ut/unf их 13), а без этой строки
+ # в full появлялся Родитель, происхождение которого было ниоткуда не видно.
+ $parts = @()
+ $hier = $props.SelectSingleNode("md:Hierarchical", $ns)
+ if ($hier -and $hier.InnerText -eq "true") {
+ $ht = $props.SelectSingleNode("md:HierarchyType", $ns)
+ $htText = if ($ht -and $ht.InnerText -eq "HierarchyFoldersAndItems") { "группы и элементы" } else { "элементы" }
+ $limitNode = $props.SelectSingleNode("md:LimitLevelCount", $ns)
+ $levelNode = $props.SelectSingleNode("md:LevelCount", $ns)
+ if ($limitNode -and $limitNode.InnerText -eq "true" -and $levelNode) {
+ $htText += ", уровней: $($levelNode.InnerText)"
+ } else {
+ $htText += ", без ограничения уровней"
}
- # Код и Наименование уехали в блок стандартных реквизитов — здесь только свойства объекта.
- # Подчинение печатаем лишь когда оно отличается от дефолта ToItems.
+ $parts += "Иерархический: $htText"
+ }
+ # Код и Наименование уехали в блок стандартных реквизитов — здесь только свойства объекта.
+ # Подчинение печатаем лишь когда оно отличается от дефолта ToItems.
+ if ($mdType -eq "Catalog") {
$sub = $props.SelectSingleNode("md:SubordinationUse", $ns)
if ($sub -and $sub.InnerText -ne "ToItems") {
$subRu = switch ($sub.InnerText) {
@@ -1124,8 +1126,8 @@ if (-not $drillDone) {
}
$parts += "Подчинение: $subRu"
}
- if ($parts.Count -gt 0) { Out ($parts -join " | ") }
}
+ if ($parts.Count -gt 0) { Out ($parts -join " | ") }
# Register-specific header properties
if ($mdType -match "Register$") {
diff --git a/.claude/skills/meta-info/scripts/meta-info.py b/.claude/skills/meta-info/scripts/meta-info.py
index f84a5404..02ef735c 100644
--- a/.claude/skills/meta-info/scripts/meta-info.py
+++ b/.claude/skills/meta-info/scripts/meta-info.py
@@ -1,4 +1,4 @@
-# meta-info v1.7 — Compact summary of 1C metadata object (Python port)
+# meta-info v1.8 — Compact summary of 1C metadata object (Python port)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import os
@@ -1125,29 +1125,31 @@ if not drill_done:
if parts:
out(" | ".join(parts))
- # Catalog-specific header
+ # Свойства иерархии и подчинения. Иерархия — не только у справочников: свойство
+ # Hierarchical есть и у ПВХ (в корпусе acc/erp/ut/unf их 13), а без этой строки
+ # в full появлялся Родитель, происхождение которого было ниоткуда не видно.
+ parts = []
+ hier = find(props, "md:Hierarchical")
+ if hier is not None and inner_text(hier) == "true":
+ ht = find(props, "md:HierarchyType")
+ ht_text = "группы и элементы" if ht is not None and inner_text(ht) == "HierarchyFoldersAndItems" else "элементы"
+ limit_node = find(props, "md:LimitLevelCount")
+ level_node = find(props, "md:LevelCount")
+ if limit_node is not None and inner_text(limit_node) == "true" and level_node is not None:
+ ht_text += f", уровней: {inner_text(level_node)}"
+ else:
+ ht_text += ", без ограничения уровней"
+ parts.append(f"Иерархический: {ht_text}")
+ # Код и Наименование уехали в блок стандартных реквизитов — здесь только свойства объекта.
+ # Подчинение печатаем лишь когда оно отличается от дефолта ToItems.
if md_type == "Catalog":
- parts = []
- hier = find(props, "md:Hierarchical")
- if hier is not None and inner_text(hier) == "true":
- ht = find(props, "md:HierarchyType")
- ht_text = "группы и элементы" if ht is not None and inner_text(ht) == "HierarchyFoldersAndItems" else "элементы"
- limit_node = find(props, "md:LimitLevelCount")
- level_node = find(props, "md:LevelCount")
- if limit_node is not None and inner_text(limit_node) == "true" and level_node is not None:
- ht_text += f", уровней: {inner_text(level_node)}"
- else:
- ht_text += ", без ограничения уровней"
- parts.append(f"Иерархический: {ht_text}")
- # Код и Наименование уехали в блок стандартных реквизитов — здесь только свойства объекта.
- # Подчинение печатаем лишь когда оно отличается от дефолта ToItems.
sub = find(props, "md:SubordinationUse")
if sub is not None and inner_text(sub) != "ToItems":
sub_ru = {"ToFolders": "группам", "ToFoldersAndItems": "группам и элементам"}.get(
inner_text(sub), inner_text(sub))
parts.append(f"Подчинение: {sub_ru}")
- if parts:
- out(" | ".join(parts))
+ if parts:
+ out(" | ".join(parts))
# Register-specific header
if md_type.endswith("Register"):
diff --git a/tests/skills/cases/meta-info/cct-hierarchical.json b/tests/skills/cases/meta-info/cct-hierarchical.json
new file mode 100644
index 00000000..6b3e193f
--- /dev/null
+++ b/tests/skills/cases/meta-info/cct-hierarchical.json
@@ -0,0 +1,26 @@
+{
+ "name": "Иерархия выводится не только у справочника, но и у ПВХ",
+ "setup": "empty-config",
+ "preRun": [
+ {
+ "script": "meta-compile/scripts/meta-compile",
+ "input": {
+ "type": "ChartOfCharacteristicTypes",
+ "name": "ВидыСубконто",
+ "hierarchical": true,
+ "valueType": "String(100)"
+ },
+ "args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
+ }
+ ],
+ "params": { "objectPath": "ChartsOfCharacteristicTypes/ВидыСубконто" },
+ "args_extra": ["-Mode", "full"],
+ "expect": {
+ "stdoutContains": [
+ "Иерархический:",
+ "Стандартные реквизиты:",
+ "Родитель",
+ "ПВХСсылка.ВидыСубконто"
+ ]
+ }
+}
diff --git a/tests/skills/cases/meta-info/snapshots/cct-hierarchical/ChartsOfCharacteristicTypes/ВидыСубконто.xml b/tests/skills/cases/meta-info/snapshots/cct-hierarchical/ChartsOfCharacteristicTypes/ВидыСубконто.xml
new file mode 100644
index 00000000..56002c59
--- /dev/null
+++ b/tests/skills/cases/meta-info/snapshots/cct-hierarchical/ChartsOfCharacteristicTypes/ВидыСубконто.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+
+ ВидыСубконто
+
+
+ ru
+ Виды субконто
+
+
+
+ true
+ false
+
+
+ xs:string
+
+ 100
+ Variable
+
+
+ true
+ true
+ 9
+ Variable
+ 100
+ WholeCharacteristicKind
+ true
+ true
+ AsDescription
+
+ Auto
+ InDialog
+ false
+ BothWays
+
+ ChartOfCharacteristicTypes.ВидыСубконто.StandardAttribute.Description
+ ChartOfCharacteristicTypes.ВидыСубконто.StandardAttribute.Code
+
+ DontUse
+ Begin
+ Directly
+ DontUse
+ Auto
+
+
+
+
+
+
+
+
+
+
+
+
+ Managed
+ Use
+
+
+
+
+
+ DontUse
+ false
+ false
+
+
+
+
diff --git a/tests/skills/cases/meta-info/snapshots/cct-hierarchical/ChartsOfCharacteristicTypes/ВидыСубконто/Ext/ObjectModule.bsl b/tests/skills/cases/meta-info/snapshots/cct-hierarchical/ChartsOfCharacteristicTypes/ВидыСубконто/Ext/ObjectModule.bsl
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/skills/cases/meta-info/snapshots/cct-hierarchical/Configuration.xml b/tests/skills/cases/meta-info/snapshots/cct-hierarchical/Configuration.xml
new file mode 100644
index 00000000..f7387717
--- /dev/null
+++ b/tests/skills/cases/meta-info/snapshots/cct-hierarchical/Configuration.xml
@@ -0,0 +1,252 @@
+
+
+
+
+
+ UUID-002
+ UUID-003
+
+
+ UUID-004
+ UUID-005
+
+
+ UUID-006
+ UUID-007
+
+
+ UUID-008
+ UUID-009
+
+
+ UUID-010
+ UUID-011
+
+
+ UUID-012
+ UUID-013
+
+
+ UUID-014
+ UUID-015
+
+
+
+ TestConfig
+
+
+ ru
+ TestConfig
+
+
+
+
+ Version8_3_24
+ ManagedApplication
+
+ PlatformApplication
+
+ Russian
+
+
+
+
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Biometrics
+ true
+
+
+ Location
+ false
+
+
+ BackgroundLocation
+ false
+
+
+ BluetoothPrinters
+ false
+
+
+ WiFiPrinters
+ false
+
+
+ Contacts
+ false
+
+
+ Calendars
+ false
+
+
+ PushNotifications
+ false
+
+
+ LocalNotifications
+ false
+
+
+ InAppPurchases
+ false
+
+
+ PersonalComputerFileExchange
+ false
+
+
+ Ads
+ false
+
+
+ NumberDialing
+ false
+
+
+ CallProcessing
+ false
+
+
+ CallLog
+ false
+
+
+ AutoSendSMS
+ false
+
+
+ ReceiveSMS
+ false
+
+
+ SMSLog
+ false
+
+
+ Camera
+ false
+
+
+ Microphone
+ false
+
+
+ MusicLibrary
+ false
+
+
+ PictureAndVideoLibraries
+ false
+
+
+ AudioPlaybackAndVibration
+ false
+
+
+ BackgroundAudioPlaybackAndVibration
+ false
+
+
+ InstallPackages
+ false
+
+
+ OSBackup
+ true
+
+
+ ApplicationUsageStatistics
+ false
+
+
+ BarcodeScanning
+ false
+
+
+ BackgroundAudioRecording
+ false
+
+
+ AllFilesAccess
+ false
+
+
+ Videoconferences
+ false
+
+
+ NFC
+ false
+
+
+ DocumentScanning
+ false
+
+
+ SpeechToText
+ false
+
+
+ Geofences
+ false
+
+
+ IncomingShareRequests
+ false
+
+
+ AllIncomingShareRequestsTypesProcessing
+ false
+
+
+
+
+
+ Normal
+
+
+ Language.Русский
+
+
+
+
+
+ Managed
+ NotAutoFree
+ DontUse
+ DontUse
+ TaxiEnableVersion8_2
+ DontUse
+ Version8_3_24
+
+
+
+ Русский
+ ВидыСубконто
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-info/snapshots/cct-hierarchical/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-info/snapshots/cct-hierarchical/Ext/ClientApplicationInterface.xml
new file mode 100644
index 00000000..3c1161b2
--- /dev/null
+++ b/tests/skills/cases/meta-info/snapshots/cct-hierarchical/Ext/ClientApplicationInterface.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ UUID-002
+
+
+
+
+ UUID-004
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-info/snapshots/cct-hierarchical/Languages/Русский.xml b/tests/skills/cases/meta-info/snapshots/cct-hierarchical/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/meta-info/snapshots/cct-hierarchical/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file