mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-26 22:51:03 +03:00
Три навыка для работы с пакетами XDTO. Формат описания — обычная XSD, своего DSL нет: рутину снимает конвертер (локальные объявления префиксов dNpM на каждой ссылке, инвертированная кратность lowerBound/upperBound, фасеты атрибутами вместо дочерних элементов, обязательный порядок элементов верхнего уровня). То, чего XSD выразить не может — nillable у атрибута, qualified у свойства, «атрибут записан явно» — едет атрибутами из пространства имён модели XDTO по правилу «то же имя, что в Package.bin». Свойства объекта метаданных живут в xs:appinfo, поэтому пара decompile → compile замыкается без потерь. Инвариант bin → xsd → bin проверен побайтово на 760 пакетах выгрузок Бухгалтерии и ERP 8.3.24 (харнесс debug/xdto/roundtrip-corpus.mjs). Сборка из рукописной XSD проверена загрузкой в базу 8.3.24 — именно она вскрыла обязательный порядок import→property→valueType→objectType, невидимый для корпусной сверки: все выгрузки уже канонические. xdto-validate ловит два класса тихих дефектов, которые платформа не диагностирует: подмену неразрешённого чужого типа на xs:anyType при импорте XML-схемы и nillable у свойства-атрибута, теряемый экспортом схемы в Конфигураторе. Тесты: 18 снэпшот-кейсов на синтетических схемах (типовые конфигурации в репозиторий не тащим), паритет PS↔PY на общих эталонах. Раннер получил caseFiles — копирование файлов кейса в workDir для навыков с файловым, а не JSON входом. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
29 lines
1.7 KiB
Plaintext
29 lines
1.7 KiB
Plaintext
# EOL policy
|
||
# ─────────────────────────────────────────────────────────────────────────────
|
||
# Авторский контент нормализуем к LF: инструмент правки (Edit) всегда пишет LF,
|
||
# поэтому единый LF убирает EOL-шум в диффах и ловушку «не правь CRLF-файл».
|
||
# git с eol=lf конвертит ТОЛЬКО CR<->LF и не трогает BOM (BOM — байты контента),
|
||
# поэтому BOM на .ps1 сохраняется.
|
||
*.ps1 text eol=lf
|
||
*.psm1 text eol=lf
|
||
*.py text eol=lf
|
||
*.mjs text eol=lf
|
||
*.md text eol=lf
|
||
*.json text eol=lf
|
||
.gitignore text eol=lf
|
||
|
||
# .bsl уже целиком LF — пин фиксирует статус-кво от будущего дрейфа.
|
||
*.bsl text eol=lf
|
||
|
||
# Данные 1С НЕ трогаем. *.xml — реальные выгрузки 1С (EOL местами значим,
|
||
# правим не мы, а навыки): оставляем как есть, под управление не берём.
|
||
# autocrlf=false и отсутствие text-атрибута => git хранит их байты как есть.
|
||
|
||
# Бинарники 1С
|
||
*.bin binary
|
||
|
||
# Package.bin пакетов XDTO — текстовый XML, несмотря на расширение. Оставляем
|
||
# под правилом *.bin binary (байты не нормализуются), но включаем текстовый diff,
|
||
# иначе изменение модели пакета в истории выглядит как «Binary files differ».
|
||
XDTOPackages/**/Package.bin diff
|