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
@@ -3653,13 +3653,14 @@ function Emit-ChartOfCharacteristicTypesProperties {
X "$i<Type>"
$mark = $script:xml.Length
Emit-TypeContent "$i`t" "$vt"
# Определяемый тип и характеристику Конфигуратор в типе значения ПВХ предлагает, а голый
# метатип (СправочникСсылка/ДокументСсылка/…) и ЛюбаяСсылка — нет: в дереве выбора это
# папки без флажка. Загрузку платформа пропускает, но ЛюбаяСсылка молча превращается в
# В типе значения ПВХ Конфигуратор предлагает единственное множество — ОпределяемыйТип.
# Голого метатипа (СправочникСсылка/ДокументСсылка/…) и ЛюбойСсылки в дереве выбора нет
# вовсе, Характеристики — тоже (тип значения характеристики не может быть значением
# характеристики). Загрузку платформа пропускает, но ЛюбаяСсылка молча превращается в
# ЛюбаяСсылкуИБ на выгрузке. Предупреждаем: не ошибка, но руками так не собрать.
Warn-DefinedTypeInComposite $mark
foreach ($ts in @(Get-EmittedTypeSets $mark)) {
if ($ts -notmatch '^(DefinedType|Characteristic)\.') {
if ($ts -notmatch '^DefinedType\.') {
[Console]::Error.WriteLine("WARNING: План видов характеристик '$objName': тип значения '$ts' Конфигуратор не предлагает (в дереве выбора это папка без флажка). Платформа загрузит, но AnyRef вернётся как AnyIBRef. Обычно нужен конкретный тип или ОпределяемыйТип.<Имя>.")
}
}