mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-18 09:10:21 +03:00
fix(cf-init,cfe-init,meta-compile): пустой элемент вместо пустой пары (#57)
Конфигуратор пишет <Vendor/>, а не <Vendor></Vendor>: в 8 выгрузках cfsrc (476 943 XML) пустых пар ноль. Шаблоны подставляли значение ВНУТРЬ пары, поэтому при пустом значении получалась пара. Собираем элемент целиком: <Vendor>/<Version> (cf-init, cfe-init), <DefaultRoles> (cfe-init при -NoRole), <Key> и <Namespace> (meta-compile — план обмена и веб-сервис). Образец рядом же: <Comment> и <Description> в meta-compile так делали и раньше. Дефект был в ОБОИХ портах одинаково — здесь дело не в сериализаторе, а в шаблоне. Пустая пара <Namespace> в cfe-borrow была не его: он копирует свойства заимствуемого объекта, а порождал их meta-compile. Дрейф снэпшотов: 340 <Vendor/>, 339 <Version/>, по одному <Key/>, <Namespace/>, <DefaultRoles/>. Содержательных изменений ноль. Тесты 641/641. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
0b8231c467
commit
11e4e4301f
@@ -1,4 +1,4 @@
|
||||
# meta-compile v1.80 — Compile 1C metadata object from JSON
|
||||
# meta-compile v1.81 — Compile 1C metadata object from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -3043,7 +3043,9 @@ function Emit-ScheduledJobProperties {
|
||||
if ($description) { X "$i<Description>$(Esc-XmlText $description)</Description>" } else { X "$i<Description/>" }
|
||||
|
||||
$key = if ($def.key) { "$($def.key)" } else { "" }
|
||||
X "$i<Key>$(Esc-XmlText $key)</Key>"
|
||||
# Пустое значение → самозакрывающийся, как у <Description> выше: Конфигуратор
|
||||
# не пишет пустых пар.
|
||||
if ($key) { X "$i<Key>$(Esc-XmlText $key)</Key>" } else { X "$i<Key/>" }
|
||||
|
||||
$use = if ($def.use -eq $true) { "true" } else { "false" }
|
||||
X "$i<Use>$use</Use>"
|
||||
@@ -3843,7 +3845,8 @@ function Emit-WebServiceProperties {
|
||||
if ($def.comment) { X "$i<Comment>$(Esc-XmlText "$($def.comment)")</Comment>" } else { X "$i<Comment/>" }
|
||||
|
||||
$namespace = if ($def.namespace) { "$($def.namespace)" } else { "" }
|
||||
X "$i<Namespace>$(Esc-XmlText $namespace)</Namespace>"
|
||||
# Пустое значение → самозакрывающийся, как у <Comment> выше.
|
||||
if ($namespace) { X "$i<Namespace>$(Esc-XmlText $namespace)</Namespace>" } else { X "$i<Namespace/>" }
|
||||
|
||||
# XDTOPackages — СПИСОК элементов, а не скаляр: значение либо ссылка на пакет конфигурации
|
||||
# (xr:MDObjectRef "XDTOPackage.Имя"), либо URI внешнего пространства имён (xs:string).
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# meta-compile v1.80 — Compile 1C metadata object from JSON
|
||||
# meta-compile v1.81 — Compile 1C metadata object from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -3079,7 +3079,12 @@ def emit_scheduled_job_properties(indent):
|
||||
else:
|
||||
X(f'{i}<Description/>')
|
||||
key = str(defn['key']) if defn.get('key') else ''
|
||||
X(f'{i}<Key>{esc_xml_text(key)}</Key>')
|
||||
# Пустое значение → самозакрывающийся, как у <Description> выше: Конфигуратор
|
||||
# не пишет пустых пар.
|
||||
if key:
|
||||
X(f'{i}<Key>{esc_xml_text(key)}</Key>')
|
||||
else:
|
||||
X(f'{i}<Key/>')
|
||||
use = 'true' if defn.get('use') is True else 'false'
|
||||
X(f'{i}<Use>{use}</Use>')
|
||||
predefined = 'true' if defn.get('predefined') is True else 'false'
|
||||
@@ -3770,7 +3775,8 @@ def emit_web_service_properties(indent):
|
||||
emit_mltext(i, 'Synonym', synonym)
|
||||
X(f'{i}<Comment>{esc_xml_text(str(defn["comment"]))}</Comment>' if defn.get('comment') else f'{i}<Comment/>')
|
||||
namespace = str(defn['namespace']) if defn.get('namespace') else ''
|
||||
X(f'{i}<Namespace>{esc_xml_text(namespace)}</Namespace>')
|
||||
# Пустое значение → самозакрывающийся, как у <Comment> выше.
|
||||
X(f'{i}<Namespace>{esc_xml_text(namespace)}</Namespace>' if namespace else f'{i}<Namespace/>')
|
||||
# XDTOPackages — СПИСОК элементов: ссылка на пакет конфигурации (xr:MDObjectRef) либо URI
|
||||
# внешнего пространства имён (xs:string). Presentation пуст, CheckState 0 (корпус: 19/19).
|
||||
pkgs = defn.get('xdtoPackages') or []
|
||||
|
||||
Reference in New Issue
Block a user