fix(meta-compile,meta-validate): в типе значения ПВХ допустим только определяемый тип

Условие было шире реальности: предупреждение пропускало и Characteristic.X.
В дереве выбора типа значения ПВХ характеристики нет вовсе — тип значения
характеристики не может быть значением характеристики. Единственное множество,
которое Конфигуратор там предлагает, — ОпределяемыйТип.

Уровень прежний: платформа такую конфигурацию грузит (проверено загрузкой в
базу), поэтому предупреждение, а не отказ. В корпусе erp+acc ни один из 24 ПВХ
множеств в типе значения вообще не использует.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-20 19:48:06 +03:00
co-authored by Claude Opus 5
parent 24b1aa9ee1
commit 0db3656c9c
11 changed files with 409 additions and 11 deletions
@@ -3741,13 +3741,14 @@ def emit_chart_of_characteristic_types_properties(indent):
X(f'{i}<Type>')
mark = len(lines)
emit_type_content(f'{i}\t', str(vt))
# Определяемый тип и характеристику Конфигуратор в типе значения ПВХ предлагает, а голый
# метатип (СправочникСсылка/ДокументСсылка/…) и ЛюбаяСсылка — нет: в дереве выбора это
# папки без флажка. Загрузку платформа пропускает, но ЛюбаяСсылка молча превращается в
# В типе значения ПВХ Конфигуратор предлагает единственное множество — ОпределяемыйТип.
# Голого метатипа (СправочникСсылка/ДокументСсылка/…) и ЛюбойСсылки в дереве выбора нет
# вовсе, Характеристики — тоже (тип значения характеристики не может быть значением
# характеристики). Загрузку платформа пропускает, но ЛюбаяСсылка молча превращается в
# ЛюбаяСсылкуИБ на выгрузке. Предупреждаем: не ошибка, но руками так не собрать.
warn_defined_type_in_composite(mark)
for ts in get_emitted_type_sets(mark):
if not re.match(r'^(DefinedType|Characteristic)[.]', ts):
if not re.match(r'^DefinedType[.]', ts):
print(f"WARNING: План видов характеристик '{obj_name}': тип значения '{ts}' Конфигуратор не предлагает "
"(в дереве выбора это папка без флажка). Платформа загрузит, но AnyRef вернётся как AnyIBRef. "
"Обычно нужен конкретный тип или ОпределяемыйТип.<Имя>.", file=sys.stderr)