mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-12 00:44:57 +03:00
79db5de6ee
В типовых конфигурациях (ERP, БП, ЗУП и т.д.) у полей и параметров обычно есть мульти-язык title (ru + en, иногда + локализация). До этого modify-field / modify-parameter / modify-dataParameter, перестраивая элемент через Build-MLTextXml, оставляли только последнее найденное <v8:content> в ru — en/uk/kk siblings молча терялись, и при следующей выгрузке Designer ломал миграцию. Read-FieldProperties сохраняет полный OuterXml <title> в _rawTitle и коллекционирует OuterXml неизвестных дочерних элементов (<editFormat>, <appearance>, кастомные расширения) в _unknownChildren. Build-FieldFragment эмитит: * _rawTitle как есть, если user не задал новый title; * Patch-MLTextRu(_rawTitle, newRu) если user задал ru-override — патчит только <v8:content> в <v8:lang>ru</v8:lang>, остальные языки сохраняет; * _unknownChildren в конце поля (после valueType). modify-parameter аналогично: при title-override проверяет multi-lang (>1 <v8:item>) и патчит ru через Patch-MLTextRu, иначе ребилдит ru-only. set-field-role сохраняет нестандартные подэлементы <role> (например <dcscom:addition>, <dcscom:groupFields>), не входящие в фиксированный known-children set и не указанные через kv в shorthand. xmlns-стрип на захваченных OuterXml — лишние декларации (которые сериализаторы добавляют для standalone-фрагментов) убираются. PY: lxml etree.tostring по умолчанию включает .tail (whitespace после закрывающего тега), что приводило к non-idempotent ростy whitespace при повторных прогонах. Везде добавлен with_tail=False. Новые тесты с idempotent: true: * preserve-multilang-modify-field (ru-override на multi-lang title); * preserve-multilang-modify-parameter (то же для параметра); * preserve-unknown-children-modify-field (role flag, проверяем что <editFormat> и en title не теряются). Общая fixture: multilang-base/Template.xml с полем и параметром, у каждого ru + en title; поле также имеет <editFormat>. 39/39 PS + 39/39 PY. skd-edit v1.20 -> v1.21. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>