fix(form-validate): ConstantsSet и ReportObject без имени — допустимые типы

Проверка 12 предупреждала «unrecognized cfg prefix» на cfg:ConstantsSet и
cfg:ReportObject — и на эталонных формах Конфигуратора тоже. В формах корпуса
(УТ, ERP, БП, УНФ) голых cfg-типов ровно три: DynamicList 9161, ConstantsSet 207,
ReportObject 20; PS-мастер знал только первый. Теперь допустимы все три, иное без
имени объекта (вероятная опечатка) по-прежнему предупреждается.

Py-порт принимал любой известный префикс без имени (голый cfg:CatalogRef — молча);
выровнен по мастеру. Оба порта, v1.22. Кейсы bare-cfg-types и bare-cfg-type-typo.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-28 13:06:39 +03:00
co-authored by Claude Opus 5.5
parent d070d65cb2
commit c9a551b815
22 changed files with 908 additions and 4 deletions
@@ -1,4 +1,4 @@
# form-validate v1.21 — Validate 1C managed form
# form-validate v1.22 — Validate 1C managed form
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
[CmdletBinding(PositionalBinding=$false)]
param(
@@ -944,7 +944,9 @@ if (-not $stopped) {
if ($tv -in $validClosedTypes) { continue }
if ($tv -match '^cfg:(.+)$') {
$cfgVal = $Matches[1]
if ($cfgVal -eq "DynamicList") { continue }
# Тип без имени объекта: динамический список, набор констант, любой отчёт — ровно те три,
# что встречаются в формах корпуса (УТ, ERP, БП, УНФ); иное без имени — вероятная опечатка
if ($cfgVal -cin @("DynamicList", "ConstantsSet", "ReportObject")) { continue }
if ($cfgVal -match '^([^.]+)\.') {
$pfx = $Matches[1]
if ($pfx -in $validCfgPrefixes) {
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# form-validate v1.21 — Validate 1C managed form
# form-validate v1.22 — Validate 1C managed form
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
@@ -900,7 +900,9 @@ def main():
elif tv.startswith("cfg:"):
suffix = tv[4:] # after "cfg:"
prefix = suffix.split(".")[0]
if prefix in VALID_CFG_PREFIXES or suffix == "DynamicList":
# Тип без имени объекта: динамический список, набор констант, любой отчёт — ровно те три,
# что встречаются в формах корпуса (УТ, ERP, БП, УНФ); иное без имени — вероятная опечатка
if ("." in suffix and prefix in VALID_CFG_PREFIXES) or suffix in ("DynamicList", "ConstantsSet", "ReportObject"):
# ExternalDataProcessorObject/ExternalReportObject valid only in EPF/ERF context
if is_config_context and prefix in ('ExternalDataProcessorObject', 'ExternalReportObject'):
report_error(f'12. Type "{tv}": External* type in configuration context (use DataProcessorObject/ReportObject instead)')