mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-13 22:35:16 +03:00
feat(meta-compile,meta-decompile): дефолт maxExtDimensionCount ПС завязан на наличие ПВХ (v1.40/v0.29)
В конфигураторе «Количество субконто» недоступно, пока не указан план видов характеристик видов субконто. Зеркалим: дефолт maxExtDimensionCount = 3 при заданном extDimensionTypes, иначе 0. Раньше компилятор всегда ставил 3 → план счетов «с нуля» без ПВХ был невалиден для 1С («у плана счетов с количеством субконто ≠ 0 должен быть установлен план видов характеристик»). Декомпилятор зеркалит дефолт (с ПВХ 3, без 0) → omit-on-default сохранён. Роундтрип 3/3 match (корпус несёт ПВХ → 3 опускается, без изменений). Регресс 47/47 ps1+py, form-compile 12/12. spec §7.2c. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# meta-compile v1.39 — Compile 1C metadata object from JSON
|
||||
# meta-compile v1.40 — Compile 1C metadata object from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
@@ -2763,7 +2763,8 @@ function Emit-ChartOfAccountsProperties {
|
||||
$extDimTypes = if ($def.extDimensionTypes) { Resolve-TypePrefixSyn "$($def.extDimensionTypes)" } else { "" }
|
||||
if ($extDimTypes) { X "$i<ExtDimensionTypes>$(Esc-Xml $extDimTypes)</ExtDimensionTypes>" } else { X "$i<ExtDimensionTypes/>" }
|
||||
|
||||
$maxExtDim = if ($null -ne $def.maxExtDimensionCount) { "$($def.maxExtDimensionCount)" } else { "3" }
|
||||
# Количество субконто: без ПВХ (extDimensionTypes) платформа не даёт > 0 → дефолт 0; с ПВХ — 3.
|
||||
$maxExtDim = if ($null -ne $def.maxExtDimensionCount) { "$($def.maxExtDimensionCount)" } elseif ($extDimTypes) { "3" } else { "0" }
|
||||
X "$i<MaxExtDimensionCount>$maxExtDim</MaxExtDimensionCount>"
|
||||
|
||||
if ($def.codeMask) { X "$i<CodeMask>$(Esc-XmlText "$($def.codeMask)")</CodeMask>" } else { X "$i<CodeMask/>" }
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
# meta-compile v1.39 — Compile 1C metadata object from JSON
|
||||
# meta-compile v1.40 — Compile 1C metadata object from JSON
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
|
||||
import argparse
|
||||
@@ -2658,7 +2658,8 @@ def emit_chart_of_accounts_properties(indent):
|
||||
X(f'{i}<ExtDimensionTypes>{esc_xml(ext_dim_types)}</ExtDimensionTypes>')
|
||||
else:
|
||||
X(f'{i}<ExtDimensionTypes/>')
|
||||
max_ext_dim = str(defn['maxExtDimensionCount']) if defn.get('maxExtDimensionCount') is not None else '3'
|
||||
# Количество субконто: без ПВХ (extDimensionTypes) платформа не даёт > 0 → дефолт 0; с ПВХ — 3.
|
||||
max_ext_dim = str(defn['maxExtDimensionCount']) if defn.get('maxExtDimensionCount') is not None else ('3' if ext_dim_types else '0')
|
||||
X(f'{i}<MaxExtDimensionCount>{max_ext_dim}</MaxExtDimensionCount>')
|
||||
if defn.get('codeMask'):
|
||||
X(f'{i}<CodeMask>{esc_xml_text(str(defn["codeMask"]))}</CodeMask>')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# meta-decompile v0.28 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# meta-decompile v0.29 — XML объекта метаданных 1С → JSON-черновик формата meta-compile
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
#
|
||||
# Поддержаны: Catalog, ExchangePlan, ChartOfCharacteristicTypes, ChartOfAccounts. Инверс meta-compile (omit-on-default: ключ эмитим только
|
||||
@@ -441,7 +441,8 @@ if ($objType -eq 'ChartOfCharacteristicTypes') {
|
||||
# ChartOfAccounts-специфичные свойства (у Catalog этих тегов нет → блок его не трогает).
|
||||
if ($objType -eq 'ChartOfAccounts') {
|
||||
$edt = P 'ExtDimensionTypes'; if ($edt) { $dsl['extDimensionTypes'] = $edt }
|
||||
Add-IntProp 'maxExtDimensionCount' 'MaxExtDimensionCount' 3
|
||||
# Дефолт зеркалит компилятор: с ПВХ — 3, без — 0 (платформа не даёт > 0 без ПВХ).
|
||||
Add-IntProp 'maxExtDimensionCount' 'MaxExtDimensionCount' $(if ($edt) { 3 } else { 0 })
|
||||
$cm = P 'CodeMask'; if ($cm) { $dsl['codeMask'] = $cm }
|
||||
Add-BoolProp 'autoOrderByCode' 'AutoOrderByCode' $true
|
||||
Add-IntProp 'orderLength' 'OrderLength' 9
|
||||
|
||||
@@ -663,7 +663,7 @@ omit-on-empty. Поля пишутся частичной формой (`Standar
|
||||
| Поле JSON | Умолчание | XML элемент |
|
||||
|-----------|----------|-------------|
|
||||
| `extDimensionTypes` | пусто | ExtDimensionTypes (ссылка на ПВХ видов субконто; `ПланВидовХарактеристик.X` → `ChartOfCharacteristicTypes.X`) |
|
||||
| `maxExtDimensionCount` | `3` | MaxExtDimensionCount (число субконто; `0` → нет субконто) |
|
||||
| `maxExtDimensionCount` | `3` при заданном `extDimensionTypes`, иначе `0` | MaxExtDimensionCount (платформа не даёт > 0 без ПВХ видов субконто) |
|
||||
| `codeMask` | пусто | CodeMask (маска кода счёта) |
|
||||
| `codeSeries` | `WholeChartOfAccounts` | CodeSeries |
|
||||
| `checkUnique` | `true` | CheckUnique *(≠ Catalog `false`)* |
|
||||
|
||||
Reference in New Issue
Block a user