mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-17 00:30:23 +03:00
fix(cfe-borrow): текст запроса динамического списка — тоже место ссылки
Заимствование дочерних объектов в оболочку шло по трём источникам имён: *DataPath, <Field> и <AdditionalColumns table=...>. У формы списка с ручным запросом реквизиты упомянуты ещё и в тексте запроса, и они не заимствовались: на эталоне Issue66Example2 навык брал 5 реквизитов и 0 табличных частей, Конфигуратор — 17 и 4. Правило выведено по эталонам и совпадает с ними в обе стороны: Конфигуратор переносит то, на что ссылается форма, а у динамического списка с ручным запросом текст запроса — такое же место ссылки, как DataPath. Имена, которые встречаются в <QueryText> целым словом, — это 21 из 27 дочерних объектов, и множество совпадает со взятым Конфигуратором точно. Разбирать язык запросов не нужно: имена-кандидаты и так фильтруются по реальному составу объекта, поэтому лишние слова из запроса безвредны. Состав оболочки теперь совпадает с эталонами на всех четырёх случаях: форма документа 47 реквизитов и 2 ТЧ, список с запросом 17 и 4, список без запроса 3 и 0 (Issue66Example3 — там правило «только видимое на форме», и поведение не меняется), форма записи регистра 3 измерения и 1 ресурс. По корпусу (13796 форм УТ + ERP) списков с запросом 2584, без него 2411. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
67d7da8285
commit
a424e9cd19
@@ -1,4 +1,4 @@
|
||||
# cfe-borrow v1.28 — Borrow objects from configuration into extension (CFE)
|
||||
# cfe-borrow v1.29 — Borrow objects from configuration into extension (CFE)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)][string]$ExtensionPath,
|
||||
@@ -1343,6 +1343,20 @@ function Collect-FormDataPaths {
|
||||
$firstLevel[$seg0] = $true
|
||||
}
|
||||
|
||||
# Текст запроса динамического списка — такое же место ссылки на реквизиты объекта, как DataPath.
|
||||
# Конфигуратор заимствует всё, что упомянуто в запросе: на эталоне Issue66Example2 это 21 из 27
|
||||
# дочерних объектов, совпадение с ним точное в обе стороны. У списка без ручного запроса
|
||||
# (<QueryText> нет) заимствуется только видимое на форме — эталон Issue66Example3.
|
||||
# Разбирать язык запросов не нужно: имена-кандидаты отфильтрует Resolve-SourceAttributes по
|
||||
# реальному составу объекта, поэтому лишние слова из запроса безвредны.
|
||||
foreach ($qm in [regex]::Matches($content, '(?s)<QueryText>(.*?)</QueryText>')) {
|
||||
foreach ($w in [regex]::Matches($qm.Groups[1].Value, '[\w]+')) {
|
||||
$word = $w.Value
|
||||
if ($script:standardFields -contains $word) { continue }
|
||||
$firstLevel[$word] = $true
|
||||
}
|
||||
}
|
||||
|
||||
# Deduplicate deep paths
|
||||
$seen = @{}
|
||||
$uniqueDeep = @()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# cfe-borrow v1.28 — Borrow objects from configuration into extension (CFE)
|
||||
# cfe-borrow v1.29 — Borrow objects from configuration into extension (CFE)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -1027,6 +1027,18 @@ def main():
|
||||
continue
|
||||
first_level[seg0] = True
|
||||
|
||||
# Текст запроса динамического списка — такое же место ссылки на реквизиты объекта, как DataPath.
|
||||
# Конфигуратор заимствует всё, что упомянуто в запросе: на эталоне Issue66Example2 это 21 из 27
|
||||
# дочерних объектов, совпадение с ним точное в обе стороны. У списка без ручного запроса
|
||||
# (<QueryText> нет) заимствуется только видимое на форме — эталон Issue66Example3.
|
||||
# Разбирать язык запросов не нужно: имена-кандидаты отфильтрует resolve_source_attributes по
|
||||
# реальному составу объекта, поэтому лишние слова из запроса безвредны.
|
||||
for qm in re.finditer(r'(?s)<QueryText>(.*?)</QueryText>', content):
|
||||
for w in re.finditer(r'\w+', qm.group(1)):
|
||||
if w.group(0) in STANDARD_FIELDS:
|
||||
continue
|
||||
first_level[w.group(0)] = True
|
||||
|
||||
# Deduplicate deep paths
|
||||
seen = set()
|
||||
unique_deep = []
|
||||
|
||||
Reference in New Issue
Block a user