mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-15 15:59:00 +03:00
esc_xml был один на две задачи, и в атрибутном контексте применялся текстовый вариант без ". form-compile с choiceParameters, имя которого содержит кавычку, выдавал <app:item name="Отбор.Наименование "кавычка"">: lxml падает с attributes construct error, то есть файл невалиден как XML. Затронуто 9 мест в form-compile и 3 в skd-compile, одинаково в обоих портах. Раундтрип через базу показал границу: в ТЕКСТЕ элемента платформа экранирует только & < > (кавычка и апостроф возвращаются сырыми байт-в-байт), а в ЗНАЧЕНИИ АТРИБУТА пишет " — внутри "..." литеральная кавычка невалидна. Поэтому две функции с говорящими именами, а не одна с флагом: esc_xml — значение атрибута: & < > " esc_xml_text — текст элемента: & < > Заодно закрыто расхождение портов в init-навыках: PY экранировал текст с ", PS1 — через SecurityElement::Escape (ещё и '), а epf-init/erf-init в PS1 не экранировали вовсе, из-за чего амперсанд в синониме давал невалидный XML. Кейсы: form-compile/attr-value-escaping, skd-compile/additional-properties-escaping, cf-init/synonym-escaping — все три проверены негативным прогоном на обоих портах и верификацией снэпшотов на платформе. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
40 lines
1.9 KiB
XML
40 lines
1.9 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<DataCompositionSchema xmlns="http://v8.1c.ru/8.1/data-composition-system/schema" xmlns:dcscom="http://v8.1c.ru/8.1/data-composition-system/common" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
<dataSource>
|
|
<name>ИсточникДанных1</name>
|
|
<dataSourceType>Local</dataSourceType>
|
|
</dataSource>
|
|
<dataSet xsi:type="DataSetQuery">
|
|
<name>Основной</name>
|
|
<field xsi:type="DataSetFieldField">
|
|
<dataPath>Поле1</dataPath>
|
|
<field>Поле1</field>
|
|
<valueType>
|
|
<v8:Type>xs:decimal</v8:Type>
|
|
<v8:NumberQualifiers>
|
|
<v8:Digits>1</v8:Digits>
|
|
<v8:FractionDigits>0</v8:FractionDigits>
|
|
<v8:AllowedSign>Any</v8:AllowedSign>
|
|
</v8:NumberQualifiers>
|
|
</valueType>
|
|
</field>
|
|
<dataSource>ИсточникДанных1</dataSource>
|
|
<query>ВЫБРАТЬ 1 КАК Поле1</query>
|
|
</dataSet>
|
|
<settingsVariant>
|
|
<dcsset:name>Основной</dcsset:name>
|
|
<dcsset:presentation xsi:type="v8:LocalStringType">
|
|
<v8:item>
|
|
<v8:lang>ru</v8:lang>
|
|
<v8:content>Основной вариант</v8:content>
|
|
</v8:item>
|
|
</dcsset:presentation>
|
|
<dcsset:settings xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows">
|
|
<dcsset:additionalProperties>
|
|
<v8:Property name="Ключ "в кавычках" & <угол>">
|
|
<v8:Value xsi:type="xs:string">Значение "в кавычках" & <угол></v8:Value>
|
|
</v8:Property>
|
|
</dcsset:additionalProperties>
|
|
</dcsset:settings>
|
|
</settingsVariant>
|
|
</DataCompositionSchema> |