mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-05 09:40:52 +03:00
fix(xdto-compile,xdto-validate): признак фиксированного значения без самого значения
В модели XDTO fixed — булев признак, а значение лежит в default; в XML-схеме fixed="V" совмещает и признак, и значение. Компилятор оба идиома принимал, но не проверял принятое: зеркало xdto:fixed="true" без default собиралось молча в пакет, который платформа отвергает («Отсутствует фиксированное значение свойства»). Прощающий ввод был сделан наполовину. xdto-validate v1.1 — два ERROR: значение попало в признак (fixed не булев) и признак без значения. Формулировка второго повторяет платформенную дословно, чтобы отказ загрузки и наш вывод читались как одно и то же. xdto-compile v1.1 — то же условие предупреждением на сборке, то есть на шаг раньше db-update, где починить дешевле. Кейсы: оба идиома плюс только default и атрибут (загружается в базу); зеркало без значения — проверка диагностики, из платформенной верификации исключено штатным skipPlatformVerify, пакет невалиден by design. Правило откалибровано корпусом (760 пакетов, оба рантайма): 0 ложных срабатываний, состав предупреждений не изменился. Round-trip остался 760/760 байт-в-байт. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
20d86ae10f
commit
79beba2d1f
@@ -1,4 +1,4 @@
|
||||
# xdto-compile v1.0 — Build a 1C XDTO package from an XML Schema (XSD)
|
||||
# xdto-compile v1.1 — Build a 1C XDTO package from an XML Schema (XSD)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory=$true, ParameterSetName='File')]
|
||||
@@ -465,6 +465,9 @@ function Build-Property([System.Xml.XmlElement]$el, [bool]$isAttribute) {
|
||||
if ($null -ne $mFixed) {
|
||||
Add-Attr $p "fixed" $mFixed
|
||||
Add-Attr $p "default" (XA $el "default")
|
||||
if ($mFixed -ceq "true" -and $null -eq (XA $el "default")) {
|
||||
Warn "Свойство `"$(XA $el 'name')`": xdto:fixed=`"true`" без default — платформа отвергнет пакет («Отсутствует фиксированное значение»). Значение задаётся атрибутом default, либо пишите XSD-форму fixed=`"значение`""
|
||||
}
|
||||
} elseif ($null -ne (XA $el "fixed")) {
|
||||
Add-Attr $p "fixed" "true"
|
||||
Add-Attr $p "default" (XA $el "fixed")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# xdto-compile v1.0 — Build a 1C XDTO package from an XML Schema (XSD) (Python port)
|
||||
# xdto-compile v1.1 — Build a 1C XDTO package from an XML Schema (XSD) (Python port)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
import argparse
|
||||
import json
|
||||
@@ -516,6 +516,10 @@ def build_property(el, is_attribute):
|
||||
if m_fixed is not None:
|
||||
add_attr(p, "fixed", m_fixed)
|
||||
add_attr(p, "default", el.get("default"))
|
||||
if m_fixed == "true" and el.get("default") is None:
|
||||
warn('Свойство "' + str(el.get("name")) + '": xdto:fixed="true" без default — '
|
||||
"платформа отвергнет пакет («Отсутствует фиксированное значение»). "
|
||||
'Значение задаётся атрибутом default, либо пишите XSD-форму fixed="значение"')
|
||||
elif el.get("fixed") is not None:
|
||||
add_attr(p, "fixed", "true")
|
||||
add_attr(p, "default", el.get("fixed"))
|
||||
|
||||
Reference in New Issue
Block a user