diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1
index f3063052..7332905b 100644
--- a/.claude/skills/meta-compile/scripts/meta-compile.ps1
+++ b/.claude/skills/meta-compile/scripts/meta-compile.ps1
@@ -1,4 +1,4 @@
-# meta-compile v1.59 — Compile 1C metadata object from JSON
+# meta-compile v1.60 — Compile 1C metadata object from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -349,7 +349,8 @@ $validTypes = @("Catalog","Document","Enum","Constant","InformationRegister","Ac
"Report","DataProcessor","CommonModule","ScheduledJob","EventSubscription",
"HTTPService","WebService","DefinedType","FunctionalOption",
"Sequence","FilterCriterion","DocumentNumerator","SettingsStorage","CommonForm",
- "SessionParameter","CommonCommand","CommandGroup","CommonAttribute","FunctionalOptionsParameter","WSReference")
+ "SessionParameter","CommonCommand","CommandGroup","CommonAttribute","FunctionalOptionsParameter","WSReference",
+ "CommonPicture","CommonTemplate")
if ($objType -notin $validTypes) {
Write-Error "Unsupported type: $objType. Valid: $($validTypes -join ', ')"
exit 1
@@ -2683,6 +2684,25 @@ function Emit-WSReferenceProperties {
if ($url) { X "$i$(Esc-XmlText $url)" } else { X "$i" }
}
+function Emit-CommonPictureProperties {
+ param([string]$indent)
+ $i = $indent
+ X "$i$(Esc-Xml $objName)"
+ Emit-MLText $i "Synonym" $synonym
+ if ($def.comment) { X "$i$(Esc-XmlText $def.comment)" } else { X "$i" }
+ X "$i$(if (Get-BoolProp 'availabilityForChoice' $false) { 'true' } else { 'false' })"
+ X "$i$(if (Get-BoolProp 'availabilityForAppearance' $false) { 'true' } else { 'false' })"
+}
+
+function Emit-CommonTemplateProperties {
+ param([string]$indent)
+ $i = $indent
+ X "$i$(Esc-Xml $objName)"
+ Emit-MLText $i "Synonym" $synonym
+ if ($def.comment) { X "$i$(Esc-XmlText $def.comment)" } else { X "$i" }
+ X "$i$(Get-EnumProp 'TemplateType' 'templateType' 'SpreadsheetDocument')"
+}
+
function Emit-CommandGroupProperties {
param([string]$indent)
$i = $indent
@@ -3901,6 +3921,8 @@ switch ($objType) {
"CommonAttribute" { Emit-CommonAttributeProperties "`t`t`t" }
"FunctionalOptionsParameter" { Emit-FunctionalOptionsParameterProperties "`t`t`t" }
"WSReference" { Emit-WSReferenceProperties "`t`t`t" }
+ "CommonPicture" { Emit-CommonPictureProperties "`t`t`t" }
+ "CommonTemplate" { Emit-CommonTemplateProperties "`t`t`t" }
"CommonModule" { Emit-CommonModuleProperties "`t`t`t" }
"ScheduledJob" { Emit-ScheduledJobProperties "`t`t`t" }
"EventSubscription" { Emit-EventSubscriptionProperties "`t`t`t" }
@@ -4242,6 +4264,8 @@ $script:typePluralMap = @{
"CommonAttribute" = "CommonAttributes"
"FunctionalOptionsParameter" = "FunctionalOptionsParameters"
"WSReference" = "WSReferences"
+ "CommonPicture" = "CommonPictures"
+ "CommonTemplate" = "CommonTemplates"
}
$typePlural = $script:typePluralMap[$objType]
diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py
index f0e92734..7888dbc3 100644
--- a/.claude/skills/meta-compile/scripts/meta-compile.py
+++ b/.claude/skills/meta-compile/scripts/meta-compile.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# meta-compile v1.59 — Compile 1C metadata object from JSON
+# meta-compile v1.60 — Compile 1C metadata object from JSON
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
@@ -465,6 +465,7 @@ valid_types = [
'Sequence', 'FilterCriterion', 'DocumentNumerator', 'SettingsStorage',
'CommonForm',
'SessionParameter', 'CommonCommand', 'CommandGroup', 'CommonAttribute', 'FunctionalOptionsParameter', 'WSReference',
+ 'CommonPicture', 'CommonTemplate',
]
if obj_type not in valid_types:
print(f"Unsupported type: {obj_type}. Valid: {', '.join(valid_types)}", file=sys.stderr)
@@ -2702,6 +2703,21 @@ def emit_ws_reference_properties(indent):
else:
X(f'{i}')
+def emit_common_picture_properties(indent):
+ i = indent
+ X(f'{i}{esc_xml(obj_name)}')
+ emit_mltext(i, 'Synonym', synonym)
+ _emit_comment(i)
+ X(f'{i}{"true" if get_bool_prop("availabilityForChoice", False) else "false"}')
+ X(f'{i}{"true" if get_bool_prop("availabilityForAppearance", False) else "false"}')
+
+def emit_common_template_properties(indent):
+ i = indent
+ X(f'{i}{esc_xml(obj_name)}')
+ emit_mltext(i, 'Synonym', synonym)
+ _emit_comment(i)
+ X(f'{i}{get_enum_prop("TemplateType", "templateType", "SpreadsheetDocument")}')
+
def emit_command_group_properties(indent):
i = indent
X(f'{i}{esc_xml(obj_name)}')
@@ -3801,6 +3817,8 @@ property_emitters = {
'CommonAttribute': emit_common_attribute_properties,
'FunctionalOptionsParameter': emit_functional_options_parameter_properties,
'WSReference': emit_ws_reference_properties,
+ 'CommonPicture': emit_common_picture_properties,
+ 'CommonTemplate': emit_common_template_properties,
'CommonModule': emit_common_module_properties,
'ScheduledJob': emit_scheduled_job_properties,
'EventSubscription': emit_event_subscription_properties,
@@ -4126,6 +4144,8 @@ type_plural_map = {
'CommonAttribute': 'CommonAttributes',
'FunctionalOptionsParameter': 'FunctionalOptionsParameters',
'WSReference': 'WSReferences',
+ 'CommonPicture': 'CommonPictures',
+ 'CommonTemplate': 'CommonTemplates',
}
type_plural = type_plural_map[obj_type]
diff --git a/.claude/skills/meta-decompile/scripts/meta-decompile.ps1 b/.claude/skills/meta-decompile/scripts/meta-decompile.ps1
index d62b3fa8..373236d7 100644
--- a/.claude/skills/meta-decompile/scripts/meta-decompile.ps1
+++ b/.claude/skills/meta-decompile/scripts/meta-decompile.ps1
@@ -1,4 +1,4 @@
-# meta-decompile v0.50 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
+# meta-decompile v0.51 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
#
# Поддержаны: Catalog, ExchangePlan, ChartOfCharacteristicTypes, ChartOfAccounts, ChartOfCalculationTypes, Document,
@@ -92,8 +92,8 @@ foreach ($c in $rootEl.ChildNodes) { if ($c.NodeType -eq 'Element') { $objNode =
if (-not $objNode) { [Console]::Error.WriteLine("meta-decompile: пустой MetaDataObject"); exit 3 }
$objType = $objNode.LocalName
-if ($objType -notin @('Catalog', 'ExchangePlan', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'ChartOfCalculationTypes', 'Document', 'InformationRegister', 'AccumulationRegister', 'AccountingRegister', 'CalculationRegister', 'BusinessProcess', 'Task', 'Enum', 'Report', 'DataProcessor', 'Constant', 'DefinedType', 'FunctionalOption', 'DocumentJournal', 'Sequence', 'FilterCriterion', 'DocumentNumerator', 'SettingsStorage', 'CommonModule', 'EventSubscription', 'ScheduledJob', 'CommonForm', 'SessionParameter', 'CommonCommand', 'CommandGroup', 'CommonAttribute', 'FunctionalOptionsParameter', 'WSReference')) {
- [Console]::Error.WriteLine("meta-decompile: тип '$objType' пока не поддержан (…, SessionParameter, CommonCommand, CommandGroup, CommonAttribute, FunctionalOptionsParameter, WSReference)"); exit 3
+if ($objType -notin @('Catalog', 'ExchangePlan', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'ChartOfCalculationTypes', 'Document', 'InformationRegister', 'AccumulationRegister', 'AccountingRegister', 'CalculationRegister', 'BusinessProcess', 'Task', 'Enum', 'Report', 'DataProcessor', 'Constant', 'DefinedType', 'FunctionalOption', 'DocumentJournal', 'Sequence', 'FilterCriterion', 'DocumentNumerator', 'SettingsStorage', 'CommonModule', 'EventSubscription', 'ScheduledJob', 'CommonForm', 'SessionParameter', 'CommonCommand', 'CommandGroup', 'CommonAttribute', 'FunctionalOptionsParameter', 'WSReference', 'CommonPicture', 'CommonTemplate')) {
+ [Console]::Error.WriteLine("meta-decompile: тип '$objType' пока не поддержан (…, CommonPicture, CommonTemplate)"); exit 3
}
$props = $objNode.SelectSingleNode('md:Properties', $nsm)
@@ -704,6 +704,15 @@ if ($objType -eq 'FunctionalOptionsParameter') {
if ($objType -eq 'WSReference') {
$url = P 'LocationURL'; if ($url) { $dsl['locationURL'] = $url }
}
+# CommonPicture — общая картинка: доступность (содержимое Ext/Picture вне скоупа).
+if ($objType -eq 'CommonPicture') {
+ Add-BoolProp 'availabilityForChoice' 'AvailabilityForChoice' $false
+ Add-BoolProp 'availabilityForAppearance' 'AvailabilityForAppearance' $false
+}
+# CommonTemplate — общий макет: тип макета (содержимое Ext/Template.* вне скоупа).
+if ($objType -eq 'CommonTemplate') {
+ Add-EnumProp 'templateType' 'TemplateType' 'SpreadsheetDocument'
+}
# Общий захват структурного (зеркало Emit-CommandPicture). Пишет в $tgt ключи picture/loadTransparent.
function Get-PictureToDsl { param($propsNode, $tgt)
$refN = $propsNode.SelectSingleNode('md:Picture/xr:Ref', $nsm)
diff --git a/docs/meta-dsl-spec.md b/docs/meta-dsl-spec.md
index 368c98f9..a198b3eb 100644
--- a/docs/meta-dsl-spec.md
+++ b/docs/meta-dsl-spec.md
@@ -1284,6 +1284,19 @@ ChildObjects и модулей.
"autoUse": "Use", "content": ["Документ.РеализацияТоваров", { "metadata": "Документ.ПоступлениеТоваров" }] }
```
+### 7.15g CommonPicture / CommonTemplate (Общие картинки и макеты)
+
+Только метаданные + регистрация; СОДЕРЖИМОЕ (`Ext/Picture*`, `Ext/Template.*` — бинарь/MXL) вне скоупа
+(импортируется отдельно / `/mxl-compile` для SpreadsheetDocument).
+
+- **CommonPicture** — `availabilityForChoice` / `availabilityForAppearance` (bool, дефолт false).
+- **CommonTemplate** — `templateType` (SpreadsheetDocument[дефолт]/TextDocument/HTMLDocument/BinaryData/AddIn/
+ DataCompositionSchema/DataCompositionAppearanceTemplate/GraphicalSchema).
+
+```json
+{ "type": "CommonTemplate", "name": "ПечатьЗаказа", "templateType": "SpreadsheetDocument" }
+```
+
### 7.16 ChartOfAccounts
Полное описание типа (все поля, стандартные реквизиты, грамматика предопределённых счетов) — см. **§7.2c**.
diff --git a/tests/skills/cases/meta-compile/common-picture.json b/tests/skills/cases/meta-compile/common-picture.json
new file mode 100644
index 00000000..76e846d6
--- /dev/null
+++ b/tests/skills/cases/meta-compile/common-picture.json
@@ -0,0 +1 @@
+{ "name": "Общая картинка", "input": { "type": "CommonPicture", "name": "Логотип", "availabilityForChoice": true }, "validatePath": "CommonPictures/Логотип", "skipValidation": true, "expect": { "files": ["CommonPictures/Логотип.xml"] } }
diff --git a/tests/skills/cases/meta-compile/common-template.json b/tests/skills/cases/meta-compile/common-template.json
new file mode 100644
index 00000000..2f7e167b
--- /dev/null
+++ b/tests/skills/cases/meta-compile/common-template.json
@@ -0,0 +1 @@
+{ "name": "Общий макет", "input": { "type": "CommonTemplate", "name": "ПечатьЗаказа", "templateType": "SpreadsheetDocument" }, "validatePath": "CommonTemplates/ПечатьЗаказа", "skipValidation": true, "expect": { "files": ["CommonTemplates/ПечатьЗаказа.xml"] } }
diff --git a/tests/skills/cases/meta-compile/snapshots/common-picture/CommonPictures/Логотип.xml b/tests/skills/cases/meta-compile/snapshots/common-picture/CommonPictures/Логотип.xml
new file mode 100644
index 00000000..62b3a3ba
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/common-picture/CommonPictures/Логотип.xml
@@ -0,0 +1,17 @@
+
+
+
+
+ Логотип
+
+
+ ru
+ Логотип
+
+
+
+ true
+ false
+
+
+
diff --git a/tests/skills/cases/meta-compile/snapshots/common-picture/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/common-picture/Configuration.xml
new file mode 100644
index 00000000..a671d2dc
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/common-picture/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-compile/snapshots/common-picture/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-compile/snapshots/common-picture/Ext/ClientApplicationInterface.xml
new file mode 100644
index 00000000..3c1161b2
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/common-picture/Ext/ClientApplicationInterface.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ UUID-002
+
+
+
+
+ UUID-004
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/common-picture/Languages/Русский.xml b/tests/skills/cases/meta-compile/snapshots/common-picture/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/common-picture/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/common-template/CommonTemplates/ПечатьЗаказа.xml b/tests/skills/cases/meta-compile/snapshots/common-template/CommonTemplates/ПечатьЗаказа.xml
new file mode 100644
index 00000000..00dd1d3e
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/common-template/CommonTemplates/ПечатьЗаказа.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ ПечатьЗаказа
+
+
+ ru
+ Печать заказа
+
+
+
+ SpreadsheetDocument
+
+
+
diff --git a/tests/skills/cases/meta-compile/snapshots/common-template/Configuration.xml b/tests/skills/cases/meta-compile/snapshots/common-template/Configuration.xml
new file mode 100644
index 00000000..240a7864
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/common-template/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-compile/snapshots/common-template/Ext/ClientApplicationInterface.xml b/tests/skills/cases/meta-compile/snapshots/common-template/Ext/ClientApplicationInterface.xml
new file mode 100644
index 00000000..3c1161b2
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/common-template/Ext/ClientApplicationInterface.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ UUID-002
+
+
+
+
+ UUID-004
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/skills/cases/meta-compile/snapshots/common-template/Languages/Русский.xml b/tests/skills/cases/meta-compile/snapshots/common-template/Languages/Русский.xml
new file mode 100644
index 00000000..37c60d78
--- /dev/null
+++ b/tests/skills/cases/meta-compile/snapshots/common-template/Languages/Русский.xml
@@ -0,0 +1,16 @@
+
+
+
+
+ Русский
+
+
+ ru
+ Русский
+
+
+
+ ru
+
+
+
\ No newline at end of file