diff --git a/.claude/skills/form-compile/scripts/form-compile.ps1 b/.claude/skills/form-compile/scripts/form-compile.ps1
index 75fa34b8..9de22daf 100644
--- a/.claude/skills/form-compile/scripts/form-compile.ps1
+++ b/.claude/skills/form-compile/scripts/form-compile.ps1
@@ -1,4 +1,4 @@
-# form-compile v1.186 — Compile 1C managed form from JSON or object metadata (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# form-compile v1.187 — Compile 1C managed form from JSON or object metadata (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$JsonPath,
@@ -2407,14 +2407,15 @@ function Resolve-TypeStr {
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if ($typeStr.StartsWith('cfg:')) {
$typeStr = $typeStr.Substring(4)
- } elseif ($typeStr.StartsWith('d5p1:') -and $typeStr.Contains('.')) {
- $typeStr = $typeStr.Substring(5)
+ } elseif ($typeStr.Contains('.') -and $typeStr -match '^d\d+p\d+:') {
+ $typeStr = $typeStr.Substring($typeStr.IndexOf(':') + 1)
}
# Параметризованные типы: Number(15,2), Строка(100)
diff --git a/.claude/skills/form-compile/scripts/form-compile.py b/.claude/skills/form-compile/scripts/form-compile.py
index 2f9e46aa..e0918a45 100644
--- a/.claude/skills/form-compile/scripts/form-compile.py
+++ b/.claude/skills/form-compile/scripts/form-compile.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# form-compile v1.186 — Compile 1C managed form from JSON or object metadata (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# form-compile v1.187 — Compile 1C managed form from JSON or object metadata (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import copy
@@ -3767,14 +3767,15 @@ def resolve_type_str(type_str):
return type_str
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if type_str.startswith('cfg:'):
type_str = type_str[4:]
- elif type_str.startswith('d5p1:') and '.' in type_str:
- type_str = type_str[5:]
+ elif '.' in type_str and re.match(r'^d\d+p\d+:', type_str):
+ type_str = type_str[type_str.index(':') + 1:]
# Параметризованные типы: Number(15,2), Строка(100)
m = re.match(r'^([^(]+)\((.+)\)$', type_str)
if m:
diff --git a/.claude/skills/form-edit/scripts/form-edit.ps1 b/.claude/skills/form-edit/scripts/form-edit.ps1
index 57b5a376..f81e8f8d 100644
--- a/.claude/skills/form-edit/scripts/form-edit.ps1
+++ b/.claude/skills/form-edit/scripts/form-edit.ps1
@@ -1,4 +1,4 @@
-# form-edit v1.10 — Edit 1C managed form elements (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# form-edit v1.11 — Edit 1C managed form elements (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -321,14 +321,15 @@ function Resolve-TypeStr {
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if ($typeStr.StartsWith('cfg:')) {
$typeStr = $typeStr.Substring(4)
- } elseif ($typeStr.StartsWith('d5p1:') -and $typeStr.Contains('.')) {
- $typeStr = $typeStr.Substring(5)
+ } elseif ($typeStr.Contains('.') -and $typeStr -match '^d\d+p\d+:') {
+ $typeStr = $typeStr.Substring($typeStr.IndexOf(':') + 1)
}
# Параметризованные типы: Number(15,2), Строка(100)
diff --git a/.claude/skills/form-edit/scripts/form-edit.py b/.claude/skills/form-edit/scripts/form-edit.py
index 10746fc6..205b614b 100644
--- a/.claude/skills/form-edit/scripts/form-edit.py
+++ b/.claude/skills/form-edit/scripts/form-edit.py
@@ -1,4 +1,4 @@
-# form-edit v1.10 — Edit 1C managed form elements (Python port) (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# form-edit v1.11 — Edit 1C managed form elements (Python port) (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import json
@@ -396,14 +396,15 @@ def resolve_type_str(type_str):
return type_str
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if type_str.startswith('cfg:'):
type_str = type_str[4:]
- elif type_str.startswith('d5p1:') and '.' in type_str:
- type_str = type_str[5:]
+ elif '.' in type_str and re.match(r'^d\d+p\d+:', type_str):
+ type_str = type_str[type_str.index(':') + 1:]
# Параметризованные типы: Number(15,2), Строка(100)
m = re.match(r'^([^(]+)\((.+)\)$', type_str)
if m:
diff --git a/.claude/skills/meta-compile/scripts/meta-compile.ps1 b/.claude/skills/meta-compile/scripts/meta-compile.ps1
index b4871b4d..5de67d44 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.90 — Compile 1C metadata object from JSON (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# meta-compile v1.91 — Compile 1C metadata object from JSON (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[Parameter(Mandatory)]
@@ -583,14 +583,15 @@ function Resolve-TypeStr {
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if ($typeStr.StartsWith('cfg:')) {
$typeStr = $typeStr.Substring(4)
- } elseif ($typeStr.StartsWith('d5p1:') -and $typeStr.Contains('.')) {
- $typeStr = $typeStr.Substring(5)
+ } elseif ($typeStr.Contains('.') -and $typeStr -match '^d\d+p\d+:') {
+ $typeStr = $typeStr.Substring($typeStr.IndexOf(':') + 1)
}
# Параметризованные типы: Number(15,2), Строка(100)
diff --git a/.claude/skills/meta-compile/scripts/meta-compile.py b/.claude/skills/meta-compile/scripts/meta-compile.py
index 3367da35..8dd9035b 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.90 — Compile 1C metadata object from JSON (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# meta-compile v1.91 — Compile 1C metadata object from JSON (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
@@ -657,14 +657,15 @@ def resolve_type_str(type_str):
return type_str
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if type_str.startswith('cfg:'):
type_str = type_str[4:]
- elif type_str.startswith('d5p1:') and '.' in type_str:
- type_str = type_str[5:]
+ elif '.' in type_str and re.match(r'^d\d+p\d+:', type_str):
+ type_str = type_str[type_str.index(':') + 1:]
# Параметризованные типы: Number(15,2), Строка(100)
m = re.match(r'^([^(]+)\((.+)\)$', type_str)
if m:
diff --git a/.claude/skills/meta-edit/scripts/meta-edit.ps1 b/.claude/skills/meta-edit/scripts/meta-edit.ps1
index eb7f473e..6093be77 100644
--- a/.claude/skills/meta-edit/scripts/meta-edit.ps1
+++ b/.claude/skills/meta-edit/scripts/meta-edit.ps1
@@ -1,4 +1,4 @@
-# meta-edit v1.33 — Edit existing 1C metadata object XML (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# meta-edit v1.34 — Edit existing 1C metadata object XML (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$DefinitionFile,
@@ -463,14 +463,15 @@ function Resolve-TypeStr {
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if ($typeStr.StartsWith('cfg:')) {
$typeStr = $typeStr.Substring(4)
- } elseif ($typeStr.StartsWith('d5p1:') -and $typeStr.Contains('.')) {
- $typeStr = $typeStr.Substring(5)
+ } elseif ($typeStr.Contains('.') -and $typeStr -match '^d\d+p\d+:') {
+ $typeStr = $typeStr.Substring($typeStr.IndexOf(':') + 1)
}
# Параметризованные типы: Number(15,2), Строка(100)
diff --git a/.claude/skills/meta-edit/scripts/meta-edit.py b/.claude/skills/meta-edit/scripts/meta-edit.py
index 58ca5933..9dd34205 100644
--- a/.claude/skills/meta-edit/scripts/meta-edit.py
+++ b/.claude/skills/meta-edit/scripts/meta-edit.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# meta-edit v1.33 — Edit existing 1C metadata object XML (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# meta-edit v1.34 — Edit existing 1C metadata object XML (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
@@ -426,14 +426,15 @@ def resolve_type_str(type_str):
return type_str
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if type_str.startswith('cfg:'):
type_str = type_str[4:]
- elif type_str.startswith('d5p1:') and '.' in type_str:
- type_str = type_str[5:]
+ elif '.' in type_str and re.match(r'^d\d+p\d+:', type_str):
+ type_str = type_str[type_str.index(':') + 1:]
# Параметризованные типы: Number(15,2), Строка(100)
m = re.match(r'^([^(]+)\((.+)\)$', type_str)
if m:
diff --git a/.claude/skills/skd-compile/scripts/skd-compile.ps1 b/.claude/skills/skd-compile/scripts/skd-compile.ps1
index 8cf5424d..29cb7adb 100644
--- a/.claude/skills/skd-compile/scripts/skd-compile.ps1
+++ b/.claude/skills/skd-compile/scripts/skd-compile.ps1
@@ -1,4 +1,4 @@
-# skd-compile v1.112 — Compile 1C DCS from JSON (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# skd-compile v1.113 — Compile 1C DCS from JSON (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
param(
[string]$DefinitionFile,
@@ -350,14 +350,15 @@ function Resolve-TypeStr {
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if ($typeStr.StartsWith('cfg:')) {
$typeStr = $typeStr.Substring(4)
- } elseif ($typeStr.StartsWith('d5p1:') -and $typeStr.Contains('.')) {
- $typeStr = $typeStr.Substring(5)
+ } elseif ($typeStr.Contains('.') -and $typeStr -match '^d\d+p\d+:') {
+ $typeStr = $typeStr.Substring($typeStr.IndexOf(':') + 1)
}
# Параметризованные типы: Number(15,2), Строка(100)
diff --git a/.claude/skills/skd-compile/scripts/skd-compile.py b/.claude/skills/skd-compile/scripts/skd-compile.py
index 5143f8ce..d11e68db 100644
--- a/.claude/skills/skd-compile/scripts/skd-compile.py
+++ b/.claude/skills/skd-compile/scripts/skd-compile.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# skd-compile v1.112 — Compile 1C DCS from JSON (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# skd-compile v1.113 — Compile 1C DCS from JSON (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import json
@@ -285,14 +285,15 @@ def resolve_type_str(type_str):
return type_str
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if type_str.startswith('cfg:'):
type_str = type_str[4:]
- elif type_str.startswith('d5p1:') and '.' in type_str:
- type_str = type_str[5:]
+ elif '.' in type_str and re.match(r'^d\d+p\d+:', type_str):
+ type_str = type_str[type_str.index(':') + 1:]
# Параметризованные типы: Number(15,2), Строка(100)
m = re.match(r'^([^(]+)\((.+)\)$', type_str)
if m:
diff --git a/.claude/skills/skd-edit/scripts/skd-edit.ps1 b/.claude/skills/skd-edit/scripts/skd-edit.ps1
index 772527a0..366629f9 100644
--- a/.claude/skills/skd-edit/scripts/skd-edit.ps1
+++ b/.claude/skills/skd-edit/scripts/skd-edit.ps1
@@ -1,4 +1,4 @@
-# skd-edit v1.33 — Atomic 1C DCS editor (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# skd-edit v1.34 — Atomic 1C DCS editor (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# NB: парный .py собирает выражения автодат вне f-string ради совместимости с python 3.9 (PEP 701).
param(
@@ -249,14 +249,15 @@ function Resolve-TypeStr {
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if ($typeStr.StartsWith('cfg:')) {
$typeStr = $typeStr.Substring(4)
- } elseif ($typeStr.StartsWith('d5p1:') -and $typeStr.Contains('.')) {
- $typeStr = $typeStr.Substring(5)
+ } elseif ($typeStr.Contains('.') -and $typeStr -match '^d\d+p\d+:') {
+ $typeStr = $typeStr.Substring($typeStr.IndexOf(':') + 1)
}
# Параметризованные типы: Number(15,2), Строка(100)
diff --git a/.claude/skills/skd-edit/scripts/skd-edit.py b/.claude/skills/skd-edit/scripts/skd-edit.py
index ebccec48..f686015c 100644
--- a/.claude/skills/skd-edit/scripts/skd-edit.py
+++ b/.claude/skills/skd-edit/scripts/skd-edit.py
@@ -1,4 +1,4 @@
-# skd-edit v1.33 — Atomic 1C DCS editor (Python port) (+resolve_type_str: срезание префикса cfg:/d5p1:)
+# skd-edit v1.34 — Atomic 1C DCS editor (Python port) (+resolve_type_str: срезание префикса cfg:/d5p1:)
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
import json
@@ -346,14 +346,15 @@ def resolve_type_str(type_str):
return type_str
# Прощающий ввод: ведущий префикс приходит копипастой из выгрузки. Без срезания он ломает
# поиск в словаре — русское имя типа остаётся непереведённым, и платформа отвечает
- # «Неизвестное имя типа». cfg: снимаем всегда (однозначно = текущая конфигурация), d5p1: —
- # только у ССЫЛОЧНЫХ типов (с точкой): сам по себе префикс неоднозначен, в формах d5p1:Chart,
- # d5p1:TextDocument, d5p1:GeographicalSchema и др. адресуют свои пространства имён, и там он
- # часть канонического значения.
+ # «Неизвестное имя типа». cfg: снимаем всегда — он однозначно означает текущую конфигурацию.
+ # Сгенерированный dNpM: (в корпусе на этом URI встречаются d4p1, d5p1, d6p1 — имя префикса
+ # платформа выдаёт по порядку объявления) снимаем ТОЛЬКО у ссылочных типов, с точкой:
+ # сам по себе префикс многозначен — в формах d5p1:Chart, d5p1:TextDocument,
+ # d5p1:GeographicalSchema адресуют чужие пространства имён, и там он часть значения.
if type_str.startswith('cfg:'):
type_str = type_str[4:]
- elif type_str.startswith('d5p1:') and '.' in type_str:
- type_str = type_str[5:]
+ elif '.' in type_str and re.match(r'^d\d+p\d+:', type_str):
+ type_str = type_str[type_str.index(':') + 1:]
# Параметризованные типы: Number(15,2), Строка(100)
m = re.match(r'^([^(]+)\((.+)\)$', type_str)
if m:
diff --git a/tests/skills/cases/meta-compile/snapshots/type-prefix-lenient/Catalogs/Товары.xml b/tests/skills/cases/meta-compile/snapshots/type-prefix-lenient/Catalogs/Товары.xml
index 9974d7df..70ef3d18 100644
--- a/tests/skills/cases/meta-compile/snapshots/type-prefix-lenient/Catalogs/Товары.xml
+++ b/tests/skills/cases/meta-compile/snapshots/type-prefix-lenient/Catalogs/Товары.xml
@@ -208,6 +208,86 @@
+
+ СкладD4p1
+
+
+ ru
+ Складd4p1
+
+
+
+
+ cfg:CatalogRef.Склады
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ Use
+ Use
+
+
+
+
+ СкладD6p1
+
+
+ ru
+ Складd6p1
+
+
+
+
+ cfg:CatalogRef.Склады
+
+ false
+
+
+
+ false
+
+ false
+ false
+
+
+ false
+
+ DontCheck
+ Items
+
+
+ Auto
+ Auto
+
+
+ Auto
+
+ DontIndex
+ Use
+ Use
+
+
+
СкладEng
diff --git a/tests/skills/cases/meta-compile/type-prefix-lenient.json b/tests/skills/cases/meta-compile/type-prefix-lenient.json
index c648e48a..1ee975e0 100644
--- a/tests/skills/cases/meta-compile/type-prefix-lenient.json
+++ b/tests/skills/cases/meta-compile/type-prefix-lenient.json
@@ -7,6 +7,8 @@
"СкладПлайн: СправочникСсылка.Склады",
"СкладCfg: cfg:СправочникСсылка.Склады",
"СкладD5p1: d5p1:СправочникСсылка.Склады",
+ "СкладD4p1: d4p1:СправочникСсылка.Склады",
+ "СкладD6p1: d6p1:СправочникСсылка.Склады",
"СкладEng: cfg:CatalogRef.Склады"
]
},
@@ -19,7 +21,13 @@
},
"fileNotContains": {
"file": "Catalogs/Товары.xml",
- "text": ["cfg:СправочникСсылка", "d5p1:СправочникСсылка", "cfg:cfg:"]
+ "text": [
+ "cfg:СправочникСсылка",
+ "d5p1:СправочникСсылка",
+ "d4p1:СправочникСсылка",
+ "d6p1:СправочникСсылка",
+ "cfg:cfg:"
+ ]
}
}
}