mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-14 14:55:16 +03:00
feat(meta-compile,meta-decompile): поддержка типа ExchangePlan (План обмена) (v1.34/v0.23)
Первый тип после Catalog-пилота. Декомпилятор расширен Catalog-only → Catalog+
ExchangePlan (снят гейт, type из XML, тип-зависимые дефолты descriptionLength/
createOnInput/dataLockControlMode, EP-свойства distributedInfoBase/
includeConfigurationExtensions/dataHistory-триплет). Компилятор
Emit-ExchangePlanProperties переписан на общие хелперы (InputByString-derive,
Characteristics, BasedOn, DataLockFields, презентации, формы) в каноническом
порядке — был устаревший (хардкод, пропущенный Characteristics, кривой порядок).
StandardAttributes EP: профиль Description/Code=ShowError + EP условный (блок при
кастомизации; редкий all-default EP его опускает — условная модель это ловит).
Общие фиксы (не только EP):
• DSL-override стандартных реквизитов применялся лишь для условных типов —
снят гейт (if $sa), теперь и для не-условных.
• Доп./опциональные стандартные реквизиты вне фикс-списка (ExchangeDate у части
EP, легаси) — эмиссия по факту ключа; декомпилятор эмитит по присутствию.
• Пустой <Synonym/> реквизита ≠ авто-синоним из имени → декомпилятор пишет
synonym:"" (латентный баг: у Catalog 0/4018, всплыл на EP).
Роундтрип 42 EP: match 0→39, TOTAL 754→146 (−81%). Остаток (3) — принятые хвосты
(TS-LineNumber-опущение, FillValue-пробелы). Catalog не регрессировал (108/120).
Регресс 47/47 ps1+py, ps1↔py identical (8/8 EP). spec §7.2a, кейс exchange-plan.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -594,6 +594,31 @@ omit-on-empty. Поля пишутся частичной формой (`Standar
|
||||
| `attributes` | `[]` | → Attribute в ChildObjects |
|
||||
| `tabularSections` | `{}` | → TabularSection в ChildObjects |
|
||||
|
||||
### 7.2a ExchangePlan (План обмена)
|
||||
|
||||
Близок к Catalog (без иерархии/владельцев/кодогенерации), плюс два своих флага. Общий с Catalog слой: `synonym`,
|
||||
`comment`, `useStandardCommands`, `codeLength`/`codeAllowedLength`/`descriptionLength`, `defaultPresentation`, `editType`,
|
||||
`quickChoice`, `choiceMode`, `inputByString` (§7.1.5, дефолт [Наименование]+[Код] по длинам), формы (`defaultObjectForm`/
|
||||
`defaultListForm`/`defaultChoiceForm`/`auxiliary*`), `standardAttributes` (§7.1.1), `characteristics` (§7.1.4), `basedOn`,
|
||||
`dataLockFields`, презентации, `choiceHistoryOnInput`, `includeHelpInContents`.
|
||||
|
||||
| Поле JSON | Умолчание | XML элемент |
|
||||
|-----------|----------|-------------|
|
||||
| `distributedInfoBase` | `false` | DistributedInfoBase (РИБ — распределённая ИБ) |
|
||||
| `includeConfigurationExtensions` | `false` | IncludeConfigurationExtensions |
|
||||
| `createOnInput` | `DontUse` | CreateOnInput *(отличие от Catalog: там `Use`)* |
|
||||
| `dataLockControlMode` | `Managed` | DataLockControlMode *(отличие от Catalog: там `Automatic`)* |
|
||||
| `dataHistory` | `DontUse` | DataHistory |
|
||||
| `updateDataHistoryImmediatelyAfterWrite` | `false` | UpdateDataHistoryImmediatelyAfterWrite |
|
||||
| `executeAfterWriteDataHistoryVersionProcessing` | `false` | ExecuteAfterWriteDataHistoryVersionProcessing |
|
||||
| `descriptionLength` | `150` | DescriptionLength *(отличие от Catalog: там `25`)* |
|
||||
| `attributes` / `tabularSections` | `[]` / `{}` | → ChildObjects |
|
||||
|
||||
Стандартные реквизиты EP: Ref, DeletionMark, Code, Description, ThisNode, SentNo, ReceivedNo (профиль материализованного
|
||||
блока: Наименование/Код → FillChecking=ShowError). Блок **условный** (как Catalog): материализуется при кастомизации —
|
||||
ключ `standardAttributes`. Опциональный легаси-реквизит `ExchangeDate` (часть планов) поддержан как «доп.» член
|
||||
`standardAttributes` (эмитится по факту наличия ключа, вне фикс-списка).
|
||||
|
||||
### 7.3 Enum
|
||||
|
||||
| Поле JSON | Умолчание | XML элемент |
|
||||
|
||||
Reference in New Issue
Block a user