From c1f07f96ada63394d5ee184b3096cad1da6c4c57 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 5 Sep 2026 20:21:47 +0300 Subject: [PATCH] =?UTF-8?q?feat(spec):=20=D0=B8=D0=B7=D0=BC=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B7=D0=B8=D1=86=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B5=D0=B3=D0=BE=20=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D1=87=D0=BD=D0=B8=D0=BA=D0=B0=20=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B2=20=D0=BF=D0=BE=D1=80=D1=8F?= =?UTF-8?q?=D0=B4=D0=BA=D0=B5=20ChildObjects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В корпусе выгрузок внешних источников нет ни одного, поэтому позиция вида в порядке ChildObjects была неизвестна, а check-type-maps держал ExternalDataSource исключением с причиной «позиция в порядке не измерена». Измерено на платформе 8.3.24.1691: в конфигурацию с объектами-маркерами семи видов (CommonModule … Task) и настоящим сервисом интеграции загружен внешний источник, выгрузка показала порядок Task → ExternalDataSource → IntegrationService. Независимо подтверждено рабочей конфигурацией с внешними источниками. Спека: ExternalDataSource = 46, IntegrationService сдвинут на 47; добавлены наборы GeneratedType источника (3 категории) и его таблицы (8 категорий, имя элемента трёхчастное: префикс.Источник.Таблица). Вид внесён в 52 карты одиннадцати навыков — без этого cf-validate считал бы каталог ExternalDataSources/ неизвестным, а порядок в ChildObjects навыки-создатели ставили бы в конец блока, откуда платформа переставила бы группу при первой же выгрузке. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01NBsZA5cr2WFThtgp7i5WVi --- .claude/skills/cf-edit/scripts/cf-edit.ps1 | 6 +++--- .claude/skills/cf-edit/scripts/cf-edit.py | 6 +++--- .claude/skills/cf-info/scripts/cf-info.ps1 | 6 +++--- .claude/skills/cf-info/scripts/cf-info.py | 6 +++--- .claude/skills/cf-validate/scripts/cf-validate.ps1 | 6 +++--- .claude/skills/cf-validate/scripts/cf-validate.py | 5 +++-- .claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 | 11 ++++++++--- .claude/skills/cfe-borrow/scripts/cfe-borrow.py | 11 ++++++++--- .claude/skills/cfe-diff/scripts/cfe-diff.ps1 | 4 ++-- .claude/skills/cfe-diff/scripts/cfe-diff.py | 3 ++- .claude/skills/cfe-validate/scripts/cfe-validate.ps1 | 7 ++++--- .claude/skills/cfe-validate/scripts/cfe-validate.py | 6 ++++-- .claude/skills/meta-compile/scripts/meta-compile.ps1 | 9 +++++++-- .claude/skills/meta-compile/scripts/meta-compile.py | 9 +++++++-- .../skills/meta-validate/scripts/meta-validate.ps1 | 3 ++- .claude/skills/meta-validate/scripts/meta-validate.py | 3 ++- .claude/skills/role-compile/scripts/role-compile.ps1 | 4 ++-- .claude/skills/role-compile/scripts/role-compile.py | 4 ++-- .../subsystem-compile/scripts/subsystem-compile.ps1 | 4 ++-- .../subsystem-compile/scripts/subsystem-compile.py | 4 ++-- .claude/skills/xdto-compile/scripts/xdto-compile.ps1 | 4 ++-- .claude/skills/xdto-compile/scripts/xdto-compile.py | 4 ++-- docs/1c-configuration-spec.md | 11 ++++++++++- tests/skills/check-type-maps.mjs | 4 +--- 24 files changed, 87 insertions(+), 53 deletions(-) diff --git a/.claude/skills/cf-edit/scripts/cf-edit.ps1 b/.claude/skills/cf-edit/scripts/cf-edit.ps1 index 9104e399f..c8c2eab29 100644 --- a/.claude/skills/cf-edit/scripts/cf-edit.ps1 +++ b/.claude/skills/cf-edit/scripts/cf-edit.ps1 @@ -1,4 +1,4 @@ -# cf-edit v1.28 — Edit 1C configuration root (Configuration.xml) +# cf-edit v1.29 — Edit 1C configuration root (Configuration.xml) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -290,7 +290,7 @@ $script:typeOrder = @( "Report","DataProcessor","InformationRegister","AccumulationRegister", "ChartOfCharacteristicTypes","ChartOfAccounts","AccountingRegister", "ChartOfCalculationTypes","CalculationRegister", - "BusinessProcess","Task","IntegrationService" + "BusinessProcess","Task","ExternalDataSource","IntegrationService" ) # --- Type → on-disk directory name (plural) --- @@ -306,7 +306,7 @@ $script:typeToDir = @{ "Report"="Reports"; "DataProcessor"="DataProcessors"; "InformationRegister"="InformationRegisters"; "AccumulationRegister"="AccumulationRegisters" "ChartOfCharacteristicTypes"="ChartsOfCharacteristicTypes"; "ChartOfAccounts"="ChartsOfAccounts"; "AccountingRegister"="AccountingRegisters" "ChartOfCalculationTypes"="ChartsOfCalculationTypes"; "CalculationRegister"="CalculationRegisters" - "BusinessProcess"="BusinessProcesses"; "Task"="Tasks"; "IntegrationService"="IntegrationServices" + "BusinessProcess"="BusinessProcesses"; "Task"="Tasks"; "ExternalDataSource"="ExternalDataSources"; "IntegrationService"="IntegrationServices" } # --- XML manipulation helpers (from subsystem-edit pattern) --- diff --git a/.claude/skills/cf-edit/scripts/cf-edit.py b/.claude/skills/cf-edit/scripts/cf-edit.py index a19dd19b0..31ea19910 100644 --- a/.claude/skills/cf-edit/scripts/cf-edit.py +++ b/.claude/skills/cf-edit/scripts/cf-edit.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cf-edit v1.28 — Edit 1C configuration root (Configuration.xml) +# cf-edit v1.29 — Edit 1C configuration root (Configuration.xml) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -330,7 +330,7 @@ TYPE_ORDER = [ "Report", "DataProcessor", "InformationRegister", "AccumulationRegister", "ChartOfCharacteristicTypes", "ChartOfAccounts", "AccountingRegister", "ChartOfCalculationTypes", "CalculationRegister", - "BusinessProcess", "Task", "IntegrationService", + "BusinessProcess", "Task", "ExternalDataSource", "IntegrationService", ] # Type → on-disk directory name (plural) @@ -346,7 +346,7 @@ TYPE_TO_DIR = { "Report": "Reports", "DataProcessor": "DataProcessors", "InformationRegister": "InformationRegisters", "AccumulationRegister": "AccumulationRegisters", "ChartOfCharacteristicTypes": "ChartsOfCharacteristicTypes", "ChartOfAccounts": "ChartsOfAccounts", "AccountingRegister": "AccountingRegisters", "ChartOfCalculationTypes": "ChartsOfCalculationTypes", "CalculationRegister": "CalculationRegisters", - "BusinessProcess": "BusinessProcesses", "Task": "Tasks", "IntegrationService": "IntegrationServices", + "BusinessProcess": "BusinessProcesses", "Task": "Tasks", "ExternalDataSource": "ExternalDataSources", "IntegrationService": "IntegrationServices", } ML_PROPS = ["Synonym", "BriefInformation", "DetailedInformation", "Copyright", "VendorInformationAddress", "ConfigurationInformationAddress"] diff --git a/.claude/skills/cf-info/scripts/cf-info.ps1 b/.claude/skills/cf-info/scripts/cf-info.ps1 index b50a25252..26ef7c35c 100644 --- a/.claude/skills/cf-info/scripts/cf-info.ps1 +++ b/.claude/skills/cf-info/scripts/cf-info.ps1 @@ -1,4 +1,4 @@ -# cf-info v1.8 — Compact summary of 1C configuration root +# cf-info v1.9 — Compact summary of 1C configuration root # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -99,7 +99,7 @@ $typeOrder = @( "Report","DataProcessor","InformationRegister","AccumulationRegister", "ChartOfCharacteristicTypes","ChartOfAccounts","AccountingRegister", "ChartOfCalculationTypes","CalculationRegister", - "BusinessProcess","Task","IntegrationService" + "BusinessProcess","Task","ExternalDataSource","IntegrationService" ) $typeRuNames = @{ @@ -120,7 +120,7 @@ $typeRuNames = @{ "ChartOfCharacteristicTypes"="ПВХ"; "ChartOfAccounts"="Планы счетов" "AccountingRegister"="Регистры бухгалтерии"; "ChartOfCalculationTypes"="ПВР" "CalculationRegister"="Регистры расчёта"; "BusinessProcess"="Бизнес-процессы" - "Task"="Задачи"; "IntegrationService"="Сервисы интеграции" + "Task"="Задачи"; "ExternalDataSource"="Внешние источники данных"; "IntegrationService"="Сервисы интеграции" } # --- Read panel layout (Ext/ClientApplicationInterface.xml) --- diff --git a/.claude/skills/cf-info/scripts/cf-info.py b/.claude/skills/cf-info/scripts/cf-info.py index 1fa6a003e..428f63243 100644 --- a/.claude/skills/cf-info/scripts/cf-info.py +++ b/.claude/skills/cf-info/scripts/cf-info.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cf-info v1.8 — Compact summary of 1C configuration root +# cf-info v1.9 — Compact summary of 1C configuration root # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -126,7 +126,7 @@ type_order = [ "Report", "DataProcessor", "InformationRegister", "AccumulationRegister", "ChartOfCharacteristicTypes", "ChartOfAccounts", "AccountingRegister", "ChartOfCalculationTypes", "CalculationRegister", - "BusinessProcess", "Task", "IntegrationService", + "BusinessProcess", "Task", "ExternalDataSource", "IntegrationService", ] type_ru_names = { @@ -147,7 +147,7 @@ type_ru_names = { "ChartOfCharacteristicTypes": "ПВХ", "ChartOfAccounts": "Планы счетов", "AccountingRegister": "Регистры бухгалтерии", "ChartOfCalculationTypes": "ПВР", "CalculationRegister": "Регистры расчёта", "BusinessProcess": "Бизнес-процессы", - "Task": "Задачи", "IntegrationService": "Сервисы интеграции", + "Task": "Задачи", "ExternalDataSource": "Внешние источники данных", "IntegrationService": "Сервисы интеграции", } # --- Read panel layout (Ext/ClientApplicationInterface.xml) --- diff --git a/.claude/skills/cf-validate/scripts/cf-validate.ps1 b/.claude/skills/cf-validate/scripts/cf-validate.ps1 index 7ed1f5b5f..6e903ab6d 100644 --- a/.claude/skills/cf-validate/scripts/cf-validate.ps1 +++ b/.claude/skills/cf-validate/scripts/cf-validate.ps1 @@ -1,4 +1,4 @@ -# cf-validate v1.9 — Validate 1C configuration root structure +# cf-validate v1.10 — Validate 1C configuration root structure # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -131,7 +131,7 @@ $childObjectTypes = @( "Report","DataProcessor","InformationRegister","AccumulationRegister", "ChartOfCharacteristicTypes","ChartOfAccounts","AccountingRegister", "ChartOfCalculationTypes","CalculationRegister", - "BusinessProcess","Task","IntegrationService" + "BusinessProcess","Task","ExternalDataSource","IntegrationService" ) # Type -> directory mapping @@ -157,7 +157,7 @@ $childTypeDirMap = @{ "ChartOfCalculationTypes"="ChartsOfCalculationTypes" "CalculationRegister"="CalculationRegisters" "BusinessProcess"="BusinessProcesses"; "Task"="Tasks" - "IntegrationService"="IntegrationServices" + "ExternalDataSource"="ExternalDataSources"; "IntegrationService"="IntegrationServices" } # Valid enum values for Configuration properties diff --git a/.claude/skills/cf-validate/scripts/cf-validate.py b/.claude/skills/cf-validate/scripts/cf-validate.py index 893c4b947..04c71dfef 100644 --- a/.claude/skills/cf-validate/scripts/cf-validate.py +++ b/.claude/skills/cf-validate/scripts/cf-validate.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cf-validate v1.9 — Validate 1C configuration XML structure +# cf-validate v1.10 — Validate 1C configuration XML structure # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Validates Configuration.xml: root structure, InternalInfo, properties, ChildObjects, languages.""" import sys, os, argparse, re @@ -68,7 +68,7 @@ CHILD_OBJECT_TYPES = [ 'Report', 'DataProcessor', 'InformationRegister', 'AccumulationRegister', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'AccountingRegister', 'ChartOfCalculationTypes', 'CalculationRegister', - 'BusinessProcess', 'Task', 'IntegrationService', + 'BusinessProcess', 'Task', 'ExternalDataSource', 'IntegrationService', ] # Type -> directory mapping @@ -93,6 +93,7 @@ CHILD_TYPE_DIR_MAP = { 'ChartOfCalculationTypes': 'ChartsOfCalculationTypes', 'CalculationRegister': 'CalculationRegisters', 'BusinessProcess': 'BusinessProcesses', 'Task': 'Tasks', + 'ExternalDataSource': 'ExternalDataSources', 'IntegrationService': 'IntegrationServices', } diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 index 358c763e9..43ac8b90b 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.ps1 @@ -1,4 +1,4 @@ -# cfe-borrow v1.36 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.37 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -257,7 +257,7 @@ $childTypeDirMap = @{ "EventSubscription"="EventSubscriptions"; "ScheduledJob"="ScheduledJobs" "SettingsStorage"="SettingsStorages"; "FilterCriterion"="FilterCriteria" "CommandGroup"="CommandGroups"; "DocumentNumerator"="DocumentNumerators" - "Sequence"="Sequences"; "IntegrationService"="IntegrationServices" + "Sequence"="Sequences"; "ExternalDataSource"="ExternalDataSources"; "IntegrationService"="IntegrationServices" "XDTOPackage"="XDTOPackages"; "WebService"="WebServices" "HTTPService"="HTTPServices"; "WSReference"="WSReferences" "CommonAttribute"="CommonAttributes"; "Style"="Styles"; "Bot"="Bots"; "PaletteColor"="PaletteColors"; "Language"="Languages" @@ -323,7 +323,7 @@ $script:typeOrder = @( "Report","DataProcessor","InformationRegister","AccumulationRegister", "ChartOfCharacteristicTypes","ChartOfAccounts","AccountingRegister", "ChartOfCalculationTypes","CalculationRegister", - "BusinessProcess","Task","IntegrationService" + "BusinessProcess","Task","ExternalDataSource","IntegrationService" ) # --- 6. GeneratedType patterns per type --- @@ -455,6 +455,11 @@ $script:generatedTypes = @{ "DefinedType" = @( @{ prefix = "DefinedType"; category = "DefinedType" } ) + "ExternalDataSource" = @( + @{ prefix = "ExternalDataSourceManager"; category = "Manager" } + @{ prefix = "ExternalDataSourceTablesManager"; category = "TablesManager" } + @{ prefix = "ExternalDataSourceCubesManager"; category = "CubesManager" } + ) "Sequence" = @( @{ prefix = "SequenceRecord"; category = "Record" } @{ prefix = "SequenceManager"; category = "Manager" } diff --git a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py index d8f5d209d..08b5033ef 100644 --- a/.claude/skills/cfe-borrow/scripts/cfe-borrow.py +++ b/.claude/skills/cfe-borrow/scripts/cfe-borrow.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cfe-borrow v1.36 — Borrow objects from configuration into extension (CFE) +# cfe-borrow v1.37 — Borrow objects from configuration into extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -325,7 +325,7 @@ CHILD_TYPE_DIR_MAP = { "EventSubscription": "EventSubscriptions", "ScheduledJob": "ScheduledJobs", "SettingsStorage": "SettingsStorages", "FilterCriterion": "FilterCriteria", "CommandGroup": "CommandGroups", "DocumentNumerator": "DocumentNumerators", - "Sequence": "Sequences", "IntegrationService": "IntegrationServices", + "Sequence": "Sequences", "ExternalDataSource": "ExternalDataSources", "IntegrationService": "IntegrationServices", "XDTOPackage": "XDTOPackages", "WebService": "WebServices", "HTTPService": "HTTPServices", "WSReference": "WSReferences", "CommonAttribute": "CommonAttributes", "Style": "Styles", @@ -408,7 +408,7 @@ TYPE_ORDER = [ "Report", "DataProcessor", "InformationRegister", "AccumulationRegister", "ChartOfCharacteristicTypes", "ChartOfAccounts", "AccountingRegister", "ChartOfCalculationTypes", "CalculationRegister", - "BusinessProcess", "Task", "IntegrationService", + "BusinessProcess", "Task", "ExternalDataSource", "IntegrationService", ] GENERATED_TYPES = { @@ -539,6 +539,11 @@ GENERATED_TYPES = { "DefinedType": [ {"prefix": "DefinedType", "category": "DefinedType"}, ], + "ExternalDataSource": [ + {"prefix": "ExternalDataSourceManager", "category": "Manager"}, + {"prefix": "ExternalDataSourceTablesManager", "category": "TablesManager"}, + {"prefix": "ExternalDataSourceCubesManager", "category": "CubesManager"}, + ], "Sequence": [ {"prefix": "SequenceRecord", "category": "Record"}, {"prefix": "SequenceManager", "category": "Manager"}, diff --git a/.claude/skills/cfe-diff/scripts/cfe-diff.ps1 b/.claude/skills/cfe-diff/scripts/cfe-diff.ps1 index 7e0ee7996..bc3820db1 100644 --- a/.claude/skills/cfe-diff/scripts/cfe-diff.ps1 +++ b/.claude/skills/cfe-diff/scripts/cfe-diff.ps1 @@ -1,4 +1,4 @@ -# cfe-diff v1.4 — Analyze and compare 1C configuration extension (CFE) +# cfe-diff v1.5 — Analyze and compare 1C configuration extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -49,7 +49,7 @@ $childTypeDirMap = @{ "EventSubscription"="EventSubscriptions"; "ScheduledJob"="ScheduledJobs" "SettingsStorage"="SettingsStorages"; "FilterCriterion"="FilterCriteria" "CommandGroup"="CommandGroups"; "DocumentNumerator"="DocumentNumerators" - "Sequence"="Sequences"; "IntegrationService"="IntegrationServices" + "Sequence"="Sequences"; "ExternalDataSource"="ExternalDataSources"; "IntegrationService"="IntegrationServices" "CommonAttribute"="CommonAttributes"; "Style"="Styles"; "XDTOPackage"="XDTOPackages" "WebService"="WebServices"; "HTTPService"="HTTPServices"; "WSReference"="WSReferences" "Bot"="Bots" diff --git a/.claude/skills/cfe-diff/scripts/cfe-diff.py b/.claude/skills/cfe-diff/scripts/cfe-diff.py index b583ba74e..869b554c4 100644 --- a/.claude/skills/cfe-diff/scripts/cfe-diff.py +++ b/.claude/skills/cfe-diff/scripts/cfe-diff.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cfe-diff v1.4 — Analyze and compare 1C configuration extension (CFE) +# cfe-diff v1.5 — Analyze and compare 1C configuration extension (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -80,6 +80,7 @@ CHILD_TYPE_DIR_MAP = { "CommandGroup": "CommandGroups", "DocumentNumerator": "DocumentNumerators", "Sequence": "Sequences", + "ExternalDataSource": "ExternalDataSources", "IntegrationService": "IntegrationServices", "CommonAttribute": "CommonAttributes", "Style": "Styles", diff --git a/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 b/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 index 74a8420a1..610660964 100644 --- a/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 +++ b/.claude/skills/cfe-validate/scripts/cfe-validate.ps1 @@ -1,4 +1,4 @@ -# cfe-validate v1.15 — Validate 1C configuration extension structure (CFE) +# cfe-validate v1.16 — Validate 1C configuration extension structure (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -156,7 +156,7 @@ $childObjectTypes = @( "Report","DataProcessor","InformationRegister","AccumulationRegister", "ChartOfCharacteristicTypes","ChartOfAccounts","AccountingRegister", "ChartOfCalculationTypes","CalculationRegister", - "BusinessProcess","Task","IntegrationService" + "BusinessProcess","Task","ExternalDataSource","IntegrationService" ) # Type -> directory mapping @@ -180,7 +180,7 @@ $childTypeDirMap = @{ "ChartOfCalculationTypes"="ChartsOfCalculationTypes" "CalculationRegister"="CalculationRegisters" "BusinessProcess"="BusinessProcesses"; "Task"="Tasks" - "IntegrationService"="IntegrationServices" + "ExternalDataSource"="ExternalDataSources"; "IntegrationService"="IntegrationServices" } # Наборы GeneratedType по типу объекта (эталон — таблица §2.5 спецификации конфигурации). @@ -208,6 +208,7 @@ $generatedTypeCategories = @{ "Sequence" = @("Record","Manager","RecordSet") "FilterCriterion" = @("Manager","List") "SettingsStorage" = @("Manager") + "ExternalDataSource" = @("Manager","TablesManager","CubesManager") "IntegrationService" = @("Manager") "WSReference" = @("Manager") "DefinedType" = @("DefinedType") diff --git a/.claude/skills/cfe-validate/scripts/cfe-validate.py b/.claude/skills/cfe-validate/scripts/cfe-validate.py index 836688b5c..46e0a9415 100644 --- a/.claude/skills/cfe-validate/scripts/cfe-validate.py +++ b/.claude/skills/cfe-validate/scripts/cfe-validate.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# cfe-validate v1.15 — Validate 1C configuration extension XML structure (CFE) +# cfe-validate v1.16 — Validate 1C configuration extension XML structure (CFE) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills """Validates extension Configuration.xml: root, InternalInfo, extension properties, ChildObjects, borrowed objects.""" import sys, os, argparse, re @@ -68,7 +68,7 @@ CHILD_OBJECT_TYPES = [ 'Report', 'DataProcessor', 'InformationRegister', 'AccumulationRegister', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'AccountingRegister', 'ChartOfCalculationTypes', 'CalculationRegister', - 'BusinessProcess', 'Task', 'IntegrationService', + 'BusinessProcess', 'Task', 'ExternalDataSource', 'IntegrationService', ] # Модули заимствованных объектов: тип → виды модулей. Имя свойства в @@ -114,6 +114,7 @@ CHILD_TYPE_DIR_MAP = { 'ChartOfCalculationTypes': 'ChartsOfCalculationTypes', 'CalculationRegister': 'CalculationRegisters', 'BusinessProcess': 'BusinessProcesses', 'Task': 'Tasks', + 'ExternalDataSource': 'ExternalDataSources', 'IntegrationService': 'IntegrationServices', } @@ -142,6 +143,7 @@ GENERATED_TYPE_CATEGORIES = { 'Sequence': ['Record', 'Manager', 'RecordSet'], 'FilterCriterion': ['Manager', 'List'], 'SettingsStorage': ['Manager'], + 'ExternalDataSource': ['Manager', 'TablesManager', 'CubesManager'], 'IntegrationService': ['Manager'], 'WSReference': ['Manager'], 'DefinedType': ['DefinedType'], diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1 index 882af8783..52eaa45c0 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.103 — Compile 1C metadata object from JSON +# meta-compile v1.104 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -1326,6 +1326,11 @@ $script:generatedTypes = @{ "DefinedType" = @( @{ prefix = "DefinedType"; category = "DefinedType" } ) + "ExternalDataSource" = @( + @{ prefix = "ExternalDataSourceManager"; category = "Manager" } + @{ prefix = "ExternalDataSourceTablesManager"; category = "TablesManager" } + @{ prefix = "ExternalDataSourceCubesManager"; category = "CubesManager" } + ) "DocumentJournal" = @( @{ prefix = "DocumentJournalSelection"; category = "Selection" } @{ prefix = "DocumentJournalList"; category = "List" } @@ -5329,7 +5334,7 @@ $childObjectTypes = @( "Report","DataProcessor","InformationRegister","AccumulationRegister", "ChartOfCharacteristicTypes","ChartOfAccounts","AccountingRegister", "ChartOfCalculationTypes","CalculationRegister", - "BusinessProcess","Task","IntegrationService" + "BusinessProcess","Task","ExternalDataSource","IntegrationService" ) function Register-InChildObjects([string]$ParentXmlPath, [string]$ParentTag, [string]$ChildTag, [string]$ChildName) { diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py index e26599c47..7533a7f18 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.103 — Compile 1C metadata object from JSON +# meta-compile v1.104 — Compile 1C metadata object from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse @@ -1429,6 +1429,11 @@ generated_types = { 'DefinedType': [ {'prefix': 'DefinedType', 'category': 'DefinedType'}, ], + 'ExternalDataSource': [ + {'prefix': 'ExternalDataSourceManager', 'category': 'Manager'}, + {'prefix': 'ExternalDataSourceTablesManager', 'category': 'TablesManager'}, + {'prefix': 'ExternalDataSourceCubesManager', 'category': 'CubesManager'}, + ], 'DocumentJournal': [ {'prefix': 'DocumentJournalSelection', 'category': 'Selection'}, {'prefix': 'DocumentJournalList', 'category': 'List'}, @@ -5302,7 +5307,7 @@ CHILD_OBJECT_TYPES = [ 'Report', 'DataProcessor', 'InformationRegister', 'AccumulationRegister', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'AccountingRegister', 'ChartOfCalculationTypes', 'CalculationRegister', - 'BusinessProcess', 'Task', 'IntegrationService', + 'BusinessProcess', 'Task', 'ExternalDataSource', 'IntegrationService', ] diff --git a/.claude/skills/meta-validate/scripts/meta-validate.ps1 b/.claude/skills/meta-validate/scripts/meta-validate.ps1 index c3369ecf1..114bcd470 100644 --- a/.claude/skills/meta-validate/scripts/meta-validate.ps1 +++ b/.claude/skills/meta-validate/scripts/meta-validate.ps1 @@ -1,4 +1,4 @@ -# meta-validate v1.24 — Validate 1C metadata object structure +# meta-validate v1.25 — Validate 1C metadata object structure # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -212,6 +212,7 @@ $generatedTypeCategories = @{ "Report" = @("Object","Manager") "DataProcessor" = @("Object","Manager") "DefinedType" = @("DefinedType") + "ExternalDataSource" = @("Manager","TablesManager","CubesManager") } # Types that have NO InternalInfo / GeneratedType diff --git a/.claude/skills/meta-validate/scripts/meta-validate.py b/.claude/skills/meta-validate/scripts/meta-validate.py index 74364d713..53852b51d 100644 --- a/.claude/skills/meta-validate/scripts/meta-validate.py +++ b/.claude/skills/meta-validate/scripts/meta-validate.py @@ -1,4 +1,4 @@ -# meta-validate v1.24 — Validate 1C metadata object structure (Python port) +# meta-validate v1.25 — Validate 1C metadata object structure (Python port) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import os @@ -258,6 +258,7 @@ generated_type_categories = { "Report": ["Object", "Manager"], "DataProcessor": ["Object", "Manager"], "DefinedType": ["DefinedType"], + "ExternalDataSource": ["Manager", "TablesManager", "CubesManager"], } # Types that have NO InternalInfo / GeneratedType diff --git a/.claude/skills/role-compile/scripts/role-compile.ps1 b/.claude/skills/role-compile/scripts/role-compile.ps1 index 7c0828f2c..36fe5a0dd 100644 --- a/.claude/skills/role-compile/scripts/role-compile.ps1 +++ b/.claude/skills/role-compile/scripts/role-compile.ps1 @@ -1,4 +1,4 @@ -# role-compile v1.35 — Compile 1C role from JSON +# role-compile v1.36 — Compile 1C role from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -1278,7 +1278,7 @@ $childObjectTypes = @( "Report","DataProcessor","InformationRegister","AccumulationRegister", "ChartOfCharacteristicTypes","ChartOfAccounts","AccountingRegister", "ChartOfCalculationTypes","CalculationRegister", - "BusinessProcess","Task","IntegrationService" + "BusinessProcess","Task","ExternalDataSource","IntegrationService" ) function Register-InChildObjects([string]$ParentXmlPath, [string]$ParentTag, [string]$ChildTag, [string]$ChildName) { diff --git a/.claude/skills/role-compile/scripts/role-compile.py b/.claude/skills/role-compile/scripts/role-compile.py index f1d09136b..faf853544 100644 --- a/.claude/skills/role-compile/scripts/role-compile.py +++ b/.claude/skills/role-compile/scripts/role-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# role-compile v1.35 — Compile 1C role from JSON +# role-compile v1.36 — Compile 1C role from JSON # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -1148,7 +1148,7 @@ CHILD_OBJECT_TYPES = [ 'Report', 'DataProcessor', 'InformationRegister', 'AccumulationRegister', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'AccountingRegister', 'ChartOfCalculationTypes', 'CalculationRegister', - 'BusinessProcess', 'Task', 'IntegrationService', + 'BusinessProcess', 'Task', 'ExternalDataSource', 'IntegrationService', ] diff --git a/.claude/skills/subsystem-compile/scripts/subsystem-compile.ps1 b/.claude/skills/subsystem-compile/scripts/subsystem-compile.ps1 index fb2179db8..0e6209a48 100644 --- a/.claude/skills/subsystem-compile/scripts/subsystem-compile.ps1 +++ b/.claude/skills/subsystem-compile/scripts/subsystem-compile.ps1 @@ -1,4 +1,4 @@ -# subsystem-compile v1.32 — Create 1C subsystem from JSON definition +# subsystem-compile v1.33 — Create 1C subsystem from JSON definition # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -693,7 +693,7 @@ $childObjectTypes = @( "Report","DataProcessor","InformationRegister","AccumulationRegister", "ChartOfCharacteristicTypes","ChartOfAccounts","AccountingRegister", "ChartOfCalculationTypes","CalculationRegister", - "BusinessProcess","Task","IntegrationService" + "BusinessProcess","Task","ExternalDataSource","IntegrationService" ) function Register-InChildObjects([string]$ParentXmlPath, [string]$ParentTag, [string]$ChildTag, [string]$ChildName) { diff --git a/.claude/skills/subsystem-compile/scripts/subsystem-compile.py b/.claude/skills/subsystem-compile/scripts/subsystem-compile.py index 2c89863e8..b8473d2fb 100644 --- a/.claude/skills/subsystem-compile/scripts/subsystem-compile.py +++ b/.claude/skills/subsystem-compile/scripts/subsystem-compile.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# subsystem-compile v1.32 — Create 1C subsystem from JSON definition +# subsystem-compile v1.33 — Create 1C subsystem from JSON definition # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -466,7 +466,7 @@ CHILD_OBJECT_TYPES = [ 'Report', 'DataProcessor', 'InformationRegister', 'AccumulationRegister', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'AccountingRegister', 'ChartOfCalculationTypes', 'CalculationRegister', - 'BusinessProcess', 'Task', 'IntegrationService', + 'BusinessProcess', 'Task', 'ExternalDataSource', 'IntegrationService', ] diff --git a/.claude/skills/xdto-compile/scripts/xdto-compile.ps1 b/.claude/skills/xdto-compile/scripts/xdto-compile.ps1 index c28190efc..9ad439338 100644 --- a/.claude/skills/xdto-compile/scripts/xdto-compile.ps1 +++ b/.claude/skills/xdto-compile/scripts/xdto-compile.ps1 @@ -1,4 +1,4 @@ -# xdto-compile v1.15 — Build a 1C XDTO package from an XML Schema (XSD) (+support-guard: общая реализация вместо урезанной) +# xdto-compile v1.16 — Build a 1C XDTO package from an XML Schema (XSD) (+support-guard: общая реализация вместо урезанной) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills [CmdletBinding(PositionalBinding=$false)] param( @@ -1086,7 +1086,7 @@ $childObjectTypes = @( "Report","DataProcessor","InformationRegister","AccumulationRegister", "ChartOfCharacteristicTypes","ChartOfAccounts","AccountingRegister", "ChartOfCalculationTypes","CalculationRegister", - "BusinessProcess","Task","IntegrationService" + "BusinessProcess","Task","ExternalDataSource","IntegrationService" ) function Register-InChildObjects([string]$ParentXmlPath, [string]$ParentTag, [string]$ChildTag, [string]$ChildName) { diff --git a/.claude/skills/xdto-compile/scripts/xdto-compile.py b/.claude/skills/xdto-compile/scripts/xdto-compile.py index 98eb0a043..2aef94bdb 100644 --- a/.claude/skills/xdto-compile/scripts/xdto-compile.py +++ b/.claude/skills/xdto-compile/scripts/xdto-compile.py @@ -1,4 +1,4 @@ -# xdto-compile v1.15 — Build a 1C XDTO package from an XML Schema (XSD) (Python port) (+support-guard: общая реализация вместо урезанной) +# xdto-compile v1.16 — Build a 1C XDTO package from an XML Schema (XSD) (Python port) (+support-guard: общая реализация вместо урезанной) # Source: https://github.com/Nikolay-Shirokov/cc-1c-skills import argparse import json @@ -1198,7 +1198,7 @@ CHILD_OBJECT_TYPES = [ 'Report', 'DataProcessor', 'InformationRegister', 'AccumulationRegister', 'ChartOfCharacteristicTypes', 'ChartOfAccounts', 'AccountingRegister', 'ChartOfCalculationTypes', 'CalculationRegister', - 'BusinessProcess', 'Task', 'IntegrationService', + 'BusinessProcess', 'Task', 'ExternalDataSource', 'IntegrationService', ] diff --git a/docs/1c-configuration-spec.md b/docs/1c-configuration-spec.md index 1559f1cc0..dcd22f000 100644 --- a/docs/1c-configuration-spec.md +++ b/docs/1c-configuration-spec.md @@ -227,6 +227,7 @@ ClassId — фиксированные идентификаторы классо Задание ЗадачаИсполнителя + ВнешниеДанные ОбменСообщениями ``` @@ -280,7 +281,8 @@ ClassId — фиксированные идентификаторы классо | 43 | `CalculationRegister` | `CalculationRegisters/` | Регистры расчёта | | 44 | `BusinessProcess` | `BusinessProcesses/` | Бизнес-процессы | | 45 | `Task` | `Tasks/` | Задачи | -| 46 | `IntegrationService` | `IntegrationServices/` | Сервисы интеграции | +| 46 | `ExternalDataSource` | `ExternalDataSources/` | Внешние источники данных | +| 47 | `IntegrationService` | `IntegrationServices/` | Сервисы интеграции | Внутри одного типа объекты отсортированы по имени (алфавитный порядок). Типы, для которых нет объектов, в ChildObjects не записываются. @@ -315,6 +317,13 @@ ClassId — фиксированные идентификаторы классо | `IntegrationService` | `IntegrationServiceManager`/Manager | | `WSReference` | `WSReferenceManager`/Manager | | `DefinedType` | `DefinedType`/DefinedType | +| `ExternalDataSource` | `ExternalDataSourceManager`/Manager, `ExternalDataSourceTablesManager`/TablesManager, `ExternalDataSourceCubesManager`/CubesManager | +| `ExternalDataSource` → `Table` | `ExternalDataSourceTableManager`/Manager, `ExternalDataSourceTableObject`/Object, `ExternalDataSourceTableRef`/Ref, `ExternalDataSourceTableList`/List, `ExternalDataSourceTableRecord`/Record, `ExternalDataSourceTableRecordSet`/RecordSet, `ExternalDataSourceTableRecordKey`/RecordKey, `ExternalDataSourceTableRecordManager`/RecordManager | + +Таблица внешнего источника — единственный подчинённый объект со своим `` в отдельном файле; +имя элемента у неё **трёхчастное**: `<префикс>.<ИмяИсточника>.<ИмяТаблицы>` (например +`ExternalDataSourceTableRef.PG.eds_public_products`). У `` и `` блока `InternalInfo` нет — +только атрибут `uuid`. Табличные части объектов несут собственную пару в своём ``: `<Тип>TabularSection.<Объект>.<ТЧ>`/TabularSection и `<Тип>TabularSectionRow.<Объект>.<ТЧ>`/TabularSectionRow. diff --git a/tests/skills/check-type-maps.mjs b/tests/skills/check-type-maps.mjs index 3a6a482ed..c72fe9b46 100644 --- a/tests/skills/check-type-maps.mjs +++ b/tests/skills/check-type-maps.mjs @@ -66,9 +66,7 @@ const MAPS = [ // вокабуляры: значения — канонические имена, полнота не требуется { skill: 'role-compile', file: 'role-compile', kind: 'alias', py: 'TYPE_ALIASES', ps1: null, - // ExternalDataSource — объект метаданных с правами в ролях, но в таблице порядка - // ChildObjects его нет: позиция в порядке не измерена (в корпусе внешних источников нет). - extraTargets: ['Configuration', 'ExternalDataSource', 'Attribute', 'StandardAttribute', + extraTargets: ['Configuration', 'Attribute', 'StandardAttribute', 'TabularSection', 'Dimension', 'Resource', 'Command', 'AddressingAttribute'], }, { skill: 'interface-edit', file: 'interface-edit', kind: 'alias', py: 'TYPE_NORM_MAP', ps1: null },