fix(form-validate): context-aware Check 12 — ExternalDataProcessorObject is error in config

Detect config vs EPF context by walking up from FormPath looking for
Configuration.xml. ExternalDataProcessorObject/ExternalReportObject are
valid in EPF/ERF but cause XDTO exception in configuration context.

- EPF forms: no warning (ExternalDataProcessorObject is correct)
- Config forms: ERROR with hint to use DataProcessorObject/ReportObject
- Fix test DSLs: compiled-form, table-form used wrong External* type

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-04-05 20:01:24 +03:00
parent 3bd69baae6
commit d5aacc9e60
6 changed files with 8 additions and 8 deletions
@@ -738,8 +738,8 @@ if (-not $stopped) {
if ($pfx -in $validCfgPrefixes) {
# ExternalDataProcessorObject/ExternalReportObject valid only for EPF/ERF, not config
if ($script:isConfigContext -and ($pfx -eq "ExternalDataProcessorObject" -or $pfx -eq "ExternalReportObject")) {
Report-Warn "12. Type '$tv': External* type in configuration context (use DataProcessorObject/ReportObject instead)"
$typeOk = $false
Report-Error "12. Type '$tv': External* type in configuration context (use DataProcessorObject/ReportObject instead)"
$typeOk = $false; $typeInvalid++
}
continue
}
@@ -660,8 +660,8 @@ def main():
if prefix in VALID_CFG_PREFIXES or suffix == "DynamicList":
# ExternalDataProcessorObject/ExternalReportObject valid only in EPF/ERF context
if is_config_context and prefix in ('ExternalDataProcessorObject', 'ExternalReportObject'):
report_warn(f'12. Type "{tv}": External* type in configuration context (use DataProcessorObject/ReportObject instead)')
type_warn_count += 1
report_error(f'12. Type "{tv}": External* type in configuration context (use DataProcessorObject/ReportObject instead)')
type_invalid += 1
else:
report_warn(f'12. Type "{tv}": unrecognized cfg prefix')
type_warn_count += 1
@@ -23,7 +23,7 @@
{ "button": "Выполнить", "command": "Выполнить" }
],
"attributes": [
{ "name": "Объект", "type": "ExternalDataProcessorObject.Валидация", "main": true },
{ "name": "Объект", "type": "DataProcessorObject.Валидация", "main": true },
{ "name": "Поле1", "type": "string" },
{ "name": "Поле2", "type": "decimal(15,2)" },
{ "name": "Флаг", "type": "boolean" }
@@ -40,7 +40,7 @@
<Attributes>
<Attribute name="Объект" id="14">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.Валидация</v8:Type>
<v8:Type>cfg:DataProcessorObject.Валидация</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
@@ -35,7 +35,7 @@
<Attributes>
<Attribute name="Объект" id="13">
<Type>
<v8:Type>cfg:ExternalDataProcessorObject.ВалТабл</v8:Type>
<v8:Type>cfg:DataProcessorObject.ВалТабл</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
@@ -21,7 +21,7 @@
]}
],
"attributes": [
{ "name": "Объект", "type": "ExternalDataProcessorObject.ВалТабл", "main": true },
{ "name": "Объект", "type": "DataProcessorObject.ВалТабл", "main": true },
{ "name": "Данные", "type": "ValueTable", "columns": [
{ "name": "Наименование", "type": "string(150)" },
{ "name": "Количество", "type": "decimal(10,3)" }