mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-01 09:17:44 +03:00
fix(form-compile,form-decompile): UseAlways маркер "~" (query-поля дин-списка) — двойной префикс
Компилятор-баг: поле "~Список.Остановлен" (декомпилятор хранил verbatim) не матчило проверку префикса ^Список\. → добавлялся ещё префикс → "Список.~Список.Остановлен" (8+ форм выборки: ЗаявкаСотрудника*, Банки, ОбеспечениеПроизводственныхПроцессов…). "~" — легитимный маркер query-полей динамического списка (2234/17266 = 13% корпуса). - Компилятор: префикс ИмяРеквизита. ставится ПОСЛЕ "~" (~Остановлен → ~Список.Остановлен); полная форма ~Список.X — verbatim (forgiving ввод). - Декомпилятор: компактит ~Список.X → ~X (единообразно с короткими именами; компилятор разворачивает обратно). Зеркало py. Кейс dynamic-list-form расширен (~Артикул + Список.Code + Description), сертифицирован загрузкой в 1С. Регресс 39/39 в обоих рантаймах. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
7882c1cc2b
commit
4916f5bf7c
@@ -1,4 +1,4 @@
|
||||
# form-compile v1.86 — Compile 1C managed form from JSON or object metadata
|
||||
# form-compile v1.87 — Compile 1C managed form from JSON or object metadata
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[string]$JsonPath,
|
||||
@@ -4583,7 +4583,16 @@ function Emit-Attributes {
|
||||
if ($attr.useAlways) {
|
||||
foreach ($e in @($attr.useAlways)) {
|
||||
$fld = "$e"
|
||||
if ($fld -notmatch "^$([regex]::Escape($attrName))\.") { $fld = "$attrName.$fld" }
|
||||
# Префикс "ИмяРеквизита." добавляем к коротким именам. Поля дин-списка с маркером "~"
|
||||
# (query-поля, ~13% корпуса) — префикс ставится ПОСЛЕ "~": ~Остановлен → ~Список.Остановлен.
|
||||
# Полная форма (~Список.Остановлен / Список.Остановлен) — verbatim (forgiving ввод).
|
||||
if ($fld.StartsWith('~')) {
|
||||
$bare = $fld.Substring(1)
|
||||
if ($bare -notmatch "^$([regex]::Escape($attrName))\.") { $bare = "$attrName.$bare" }
|
||||
$fld = "~$bare"
|
||||
} elseif ($fld -notmatch "^$([regex]::Escape($attrName))\.") {
|
||||
$fld = "$attrName.$fld"
|
||||
}
|
||||
if (-not $uaFields.Contains($fld)) { [void]$uaFields.Add($fld) }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user