mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-21 09:45:53 +03:00
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:
co-authored by
Claude Opus 5
parent
24b1aa9ee1
commit
0db3656c9c
@@ -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. Обычно нужен конкретный тип или ОпределяемыйТип.<Имя>.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1752,7 +1752,7 @@ foreach ($tb in $typeBlocks23) {
|
||||
Report-Error "23. Определяемый тип '$objName': в составе тип-множество '$raw' — платформа не загрузит такой файл («Недопустимый тип»). Состав определяемого типа — только конкретные типы"
|
||||
continue
|
||||
}
|
||||
if ($ownerKind -eq "ChartOfCharacteristicTypes" -and $raw -notmatch '^(DefinedType|Characteristic)\.') {
|
||||
if ($ownerKind -eq "ChartOfCharacteristicTypes" -and $raw -notmatch '^DefinedType\.') {
|
||||
$dtSetsBad = $true
|
||||
Report-Warn "23. План видов характеристик '$objName': тип значения '$raw' Конфигуратор не предлагает (в дереве выбора это папка без флажка); ЛюбаяСсылка на выгрузке вернётся как ЛюбаяСсылкаИБ"
|
||||
}
|
||||
|
||||
@@ -1693,7 +1693,7 @@ for tb in root.xpath("//md:Type | //md:ValueType", namespaces=NS):
|
||||
dt_sets_bad = True
|
||||
report_error(f"23. Определяемый тип '{obj_name}': в составе тип-множество '{raw}' — платформа не загрузит такой файл («Недопустимый тип»). Состав определяемого типа — только конкретные типы")
|
||||
continue
|
||||
if owner_kind == "ChartOfCharacteristicTypes" and not re.match(r'^(DefinedType|Characteristic)[.]', raw):
|
||||
if owner_kind == "ChartOfCharacteristicTypes" and not re.match(r'^DefinedType[.]', raw):
|
||||
dt_sets_bad = True
|
||||
report_warn(f"23. План видов характеристик '{obj_name}': тип значения '{raw}' Конфигуратор не предлагает (в дереве выбора это папка без флажка); ЛюбаяСсылка на выгрузке вернётся как ЛюбаяСсылкаИБ")
|
||||
if members > 1 and re.match(r'^DefinedType[.]', raw):
|
||||
|
||||
Reference in New Issue
Block a user