mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-26 14:41:02 +03:00
fix(skd-decompile): не сворачивать @autoDates companions с availableAsField=false
Companions НачалоПериода/КонецПериода имеют canonical имена/expression в некоторых корпусах, но дополнительно несут availableAsField=false (поле-ограничение, не участвует в выборе). Наш @autoDates auto-generator не передаёт этот атрибут — для совместимости с другими корпусами без него. Решение в decompile: не сворачивать в @autoDates если хотя бы один companion имеет availableAsField=false → companions остаются явными параметрами, compile эмитит их со всеми атрибутами через стандартный path. Sample30: 607 → 458 строк diff (-149).
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# skd-compile v1.98 — Compile 1C DCS from JSON
|
# skd-compile v1.100 — Compile 1C DCS from JSON
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
param(
|
param(
|
||||||
[string]$DefinitionFile,
|
[string]$DefinitionFile,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# skd-compile v1.98 — Compile 1C DCS from JSON
|
# skd-compile v1.100 — Compile 1C DCS from JSON
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
import argparse
|
import argparse
|
||||||
import json
|
import json
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# skd-decompile v0.83 — Decompile 1C DCS Template.xml to JSON DSL (draft)
|
# skd-decompile v0.84 — Decompile 1C DCS Template.xml to JSON DSL (draft)
|
||||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||||
param(
|
param(
|
||||||
[Parameter(Mandatory)]
|
[Parameter(Mandatory)]
|
||||||
@@ -2646,7 +2646,13 @@ foreach ($p in $paramsRaw) {
|
|||||||
# Иначе compile (который генерирует именно эти имена + type=date + DateFractions=Date)
|
# Иначе compile (который генерирует именно эти имена + type=date + DateFractions=Date)
|
||||||
# не сможет вернуть bit-perfect для отчётов с шаблоном "Период<X>" → "НачалоПериода<X>"/
|
# не сможет вернуть bit-perfect для отчётов с шаблоном "Период<X>" → "НачалоПериода<X>"/
|
||||||
# "КонецПериода<X>" + DateFractions=DateTime. Оставляем как явные параметры.
|
# "КонецПериода<X>" + DateFractions=DateTime. Оставляем как явные параметры.
|
||||||
if ($startMatch -eq 'НачалоПериода' -and $endMatch -eq 'КонецПериода') {
|
# Также НЕ сворачиваем если companions имеют availableAsField=false — compile
|
||||||
|
# auto-gen не передаёт этот атрибут (ERP-стиль без него; БСП-стиль с ним —
|
||||||
|
# вариативность не выразима через @autoDates флаг, пусть companions останутся явными).
|
||||||
|
$beginP = $paramByName[$startMatch]
|
||||||
|
$endP = $paramByName[$endMatch]
|
||||||
|
$hasNotAField = ($beginP -and $beginP.notAField) -or ($endP -and $endP.notAField)
|
||||||
|
if ($startMatch -eq 'НачалоПериода' -and $endMatch -eq 'КонецПериода' -and -not $hasNotAField) {
|
||||||
$p['autoDates'] = $true
|
$p['autoDates'] = $true
|
||||||
$removedNames[$startMatch] = $true
|
$removedNames[$startMatch] = $true
|
||||||
$removedNames[$endMatch] = $true
|
$removedNames[$endMatch] = $true
|
||||||
|
|||||||
Reference in New Issue
Block a user