mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-26 22:51:03 +03:00
Навык нужен ровно для одного: не втаскивать в контекст мегабайтную схему ради одного поля. Чистота диффа тут ни при чём — она уже обеспечена 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>
33 lines
636 B
JSON
33 lines
636 B
JSON
{
|
|
"name": "добавление значений в перечислимый тип",
|
|
"caseFiles": [
|
|
"types.xsd"
|
|
],
|
|
"preRun": [
|
|
{
|
|
"script": "xdto-compile/scripts/xdto-compile",
|
|
"args": {
|
|
"-XsdPath": "{workDir}/types.xsd",
|
|
"-OutputDir": "{workDir}"
|
|
}
|
|
}
|
|
],
|
|
"params": {
|
|
"packagePath": "XDTOPackages/types"
|
|
},
|
|
"args_extra": [
|
|
"-Operation",
|
|
"add-enum",
|
|
"-Target",
|
|
"ВидДокумента",
|
|
"-Value",
|
|
"Инкассо ;; Аккредитив",
|
|
"-NoValidate"
|
|
],
|
|
"expect": {
|
|
"files": [
|
|
"XDTOPackages/types/Ext/Package.bin"
|
|
]
|
|
}
|
|
}
|