mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-27 23:21:02 +03:00
Дельта формата 2.17→2.20 содержит три безусловных свойства, которых компилятор
не эмитил. Все три пишутся ТОЛЬКО при формате >= 2.20 (Detect-FormatVersion),
поэтому 2.17-проекты не меняются: полная сюита зелёная, ни один существующий
снэпшот не сдвинулся.
- xr:TypeReductionMode — каждому стандартному реквизиту, после CreateOnInput.
TransformValues, кроме Owner → Deny (правило проверено против выгрузки acc:
9 из 9 реквизитов совпали, включая Owner).
- TypeReductionMode — измерениям регистра СВЕДЕНИЙ (у прочих семейств и у
реквизитов/ресурсов платформа его не пишет).
- LineNumberLength — табличным частям, последним в Properties.
LineNumberLength — прикладная возможность 8.3.27 (5..9 → до 999 999 999 строк
вместо 99 999), поэтому получил полноценный DSL-ключ и описание в spec §5.2.
Его дефолт зависит НЕ от версии формата, а от режима совместимости на момент
создания ТЧ (<=8_3_26 → 5, >=8_3_27 → 9) — платформа фиксирует значение и позже
не пересчитывает, поэтому в одной конфигурации соседствуют ТЧ с 5 и 9. Отсюда
новая Detect-CompatibilityMode: читает CompatibilityMode из Configuration.xml
(префикс 64 КБ — тег лежит на ~11-12 КБ, существующим 2000 байт не хватает).
Декомпилятор: TypeReductionMode захватывается только при отклонении от правила
(компилятор выводит его сам), LineNumberLength — всегда при наличии тега:
выводить его дефолт значило бы дублировать логику компилятора с риском разойтись.
Компараторы версий числовые по компонентам — строковое сравнение неверно
("2.9" > "2.17" лексикографически).
Тест-инфра: setup-фикстуры empty-config-220 и empty-config-220-compat24
(строятся тем же cf-init), два кейса — по одному на каждую ось.
Проверка: роундтрип реального 2.20-документа БП (АвансовыйОтчет, 7 ТЧ) —
по новым тегам 0 расхождений, значения и позиции совпали; остаточный хвост
52/39 идентичен такому же на 2.17, то есть пред-существующий. Сюита 570/570
ps1, 567+3 skipped py, ps1==py. 1С-сертификация обоих кейсов на 8.3.27 ✓.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
32 lines
1.0 KiB
JSON
32 lines
1.0 KiB
JSON
{
|
|
"name": "Формат 2.20 (8.3.27): TypeReductionMode + LineNumberLength (режим 8_3_27 → 9)",
|
|
"setup": "empty-config-220",
|
|
"preRun": [
|
|
{
|
|
"script": "meta-compile/scripts/meta-compile",
|
|
"input": { "type": "Catalog", "name": "Валюты" },
|
|
"args": { "-JsonPath": "{inputFile}", "-OutputDir": "{workDir}" }
|
|
}
|
|
],
|
|
"input": [
|
|
{
|
|
"type": "Catalog",
|
|
"name": "Договоры",
|
|
"owners": ["Catalog.Валюты"],
|
|
"standardAttributes": { "Description": { "fillChecking": "ShowError" } },
|
|
"tabularSections": { "Условия": ["Условие: String(100)"] }
|
|
},
|
|
{
|
|
"type": "InformationRegister",
|
|
"name": "КурсыВалют",
|
|
"periodicity": "Day",
|
|
"dimensions": ["Валюта: CatalogRef.Валюты | master, mainFilter"],
|
|
"resources": ["Курс: Number(15,4)"]
|
|
}
|
|
],
|
|
"validatePath": "Catalogs/Договоры",
|
|
"expect": {
|
|
"files": ["Catalogs/Договоры.xml", "InformationRegisters/КурсыВалют.xml"]
|
|
}
|
|
}
|