mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-23 10:45:52 +03:00
feat(xdto-edit): точечная правка пакета без чтения всей схемы
Навык нужен ровно для одного: не втаскивать в контекст мегабайтную схему ради одного поля. Чистота диффа тут ни при чём — она уже обеспечена round-trip'ом (замер: правка двух вещей через decompile→compile даёт 3 изменённые строки из 241). Поэтому edit не заводит второй эмиттер, а строится поверх round-trip'а: пакет выгружается в XSD, операция применяется к схеме, пакет собирается обратно компилятором. Байт-точность для нетронутого достаётся даром, а смена namespace перегенерирует все объявления префиксов сама — в EnterpriseData_1_20_2 их 5280. На лишний шаг (загрузка XSD в DOM и пересохранение) заведён отдельный харнесс: холостая правка не меняет ни байта на всех 760 пакетах. Операции: add/replace/remove-property, add/remove-type, add-enum, add-import, rename, set-synonym, set-comment, set-namespace. Содержимое — всегда фрагмент XSD, тем же языком, что в компиляторе; отдельных -MinOccurs нет, свойство меняется целиком через replace-property. Адресация точкой, путь заходит внутрь встроенных типов. rename трогает три места (объект метаданных, имена файла и каталога, регистрацию в Configuration.xml). set-namespace правит свой пакет и перечисляет зависящие, но не меняет их: при версионировании они и должны смотреть на прежнее пространство имён. После правки автоматически запускается xdto-validate. Проверено загрузкой в базу 8.3.24: add-property, add-enum и set-namespace переживают db-load-xml + db-update. Попутные ловушки портирования (детали — debug/xdto/FINDINGS.md): пустой элемент в lxml ложен, из-за чего "or"-цепочка создавала бы вторую частицу в типе с пустой sequence; диапазон [Ѐ-ӿԀ-ӿ] валиден в .NET и не компилируется в Python. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
a4a55cf883
commit
318abe3fc9
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
||||
<XDTOPackage uuid="UUID-001">
|
||||
<Properties>
|
||||
<Name>common</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>common</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment />
|
||||
<Namespace>urn:test:common:v2</Namespace>
|
||||
</Properties>
|
||||
</XDTOPackage>
|
||||
</MetaDataObject>
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
<package xmlns="http://v8.1c.ru/8.1/xdto" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="urn:test:common:v2">
|
||||
<objectType name="Справочник">
|
||||
<property name="Код" type="xs:string"/>
|
||||
<property name="Наименование" type="xs:string"/>
|
||||
</objectType>
|
||||
</package>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.17">
|
||||
<XDTOPackage uuid="UUID-001">
|
||||
<Properties>
|
||||
<Name>uses_common</Name>
|
||||
<Synonym>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>uses_common</v8:content>
|
||||
</v8:item>
|
||||
</Synonym>
|
||||
<Comment/>
|
||||
<Namespace>urn:test:uses</Namespace>
|
||||
</Properties>
|
||||
</XDTOPackage>
|
||||
</MetaDataObject>
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
<package xmlns="http://v8.1c.ru/8.1/xdto" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="urn:test:uses">
|
||||
<import namespace="urn:test:common"/>
|
||||
<import namespace="urn:test:отсутствует"/>
|
||||
<property xmlns:d2p1="urn:test:uses" name="Корень" type="d2p1:Заявка"/>
|
||||
<objectType name="Заявка">
|
||||
<property xmlns:d3p1="urn:test:common" name="Вид" type="d3p1:Справочник"/>
|
||||
<property xmlns:d3p1="urn:test:отсутствует" name="Потерянный" type="d3p1:НетТакого" lowerBound="0"/>
|
||||
</objectType>
|
||||
</package>
|
||||
Reference in New Issue
Block a user