mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-12 00:44:57 +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
|
||||
param(
|
||||
[string]$DefinitionFile,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/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
|
||||
import argparse
|
||||
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
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -2646,7 +2646,13 @@ foreach ($p in $paramsRaw) {
|
||||
# Иначе compile (который генерирует именно эти имена + type=date + DateFractions=Date)
|
||||
# не сможет вернуть bit-perfect для отчётов с шаблоном "Период<X>" → "НачалоПериода<X>"/
|
||||
# "КонецПериода<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
|
||||
$removedNames[$startMatch] = $true
|
||||
$removedNames[$endMatch] = $true
|
||||
|
||||
Reference in New Issue
Block a user