mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-14 06:45:17 +03:00
feat(meta-compile,meta-decompile): поддержка типов Report + DataProcessor (v1.52/v0.43)
14-й/15-й типы, 2546 объектов acc+erp. Рерайт Emit-ReportProperties/ Emit-DataProcessorProperties на общие хелперы (был легаси-хардкод Comment/ UseStandardCommands/формы/презентации). Декомпилятор: снят гейт +оба; Report-специфика (defaultForm/mainDataCompositionSchema/*SettingsForm/ defaultVariantForm/variantsStorage/settingsStorage/extendedPresentation), DataProcessor-специфика (defaultForm/auxiliaryForm/extendedPresentation). Общие фиксы (не только Report/DataProcessor): - Emit-VerbatimRef: ссылки форм/схем/хранилищ без Normalize-FormRef — имя формы может быть буквально «Форма» (Normalize перевёл бы имя-сегмент Форма→Form). - Пустой <Type/> (реквизит без типа): маркер typeEmpty (декомпилятор type:"", компилятор <Type/> + FillValue nil вместо xs:string). Отличаем present-"" от absent. - Платформенные типы v8:-префикса (ValueTable/ValueTree/ValueList/StandardPeriod/…), current-config cfg:-типы (ConstantsSet/ReportBuilder/*Object.X), выделенные ns (Chart/SettingsComposer/SpreadsheetDocument) — компилятор возвращал голое имя. - Expand-DataPath: голый (отрицательный) индекс-маркер (-8 в ChoiceParameterLinks) verbatim. Class-2: UseStandardCommands дефолт true (совместно с пользователем — авторски- безопасно: доступность через стандартный командный интерфейс; при false и без переопределения размещения команд объект доступен лишь по навигационной ссылке). Декомпилятор явно фиксирует false. У DataProcessor мода корпуса и так true. ПОЛНЫЙ КОРПУС 2546: match 2546/2546, TOTAL 0, byte-exact order-preserved (сверено с реальными 1С-файлами). Регресс 52/52 ps1+py, ps1==py identical. spec §7.11/§7.12, кейсы report-full/data-processor-full. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+41
-22
@@ -1004,39 +1004,58 @@ true); `characteristics` (§7.1.4); `basedOn`/`inputByString`/`dataLockFields` (
|
||||
{ "type": "EventSubscription", "name": "ПередЗаписьюКонтрагента", "source": ["CatalogObject.Контрагенты"], "event": "BeforeWrite", "handler": "ОбщегоНазначенияСервер.ПередЗаписьюКонтрагента" }
|
||||
```
|
||||
|
||||
### 7.11 Report
|
||||
### 7.11 Report (Отчёт)
|
||||
|
||||
| Поле JSON | Умолчание | XML элемент |
|
||||
|-----------|----------|-------------|
|
||||
| `defaultForm` | `""` | DefaultForm |
|
||||
| `auxiliaryForm` | `""` | AuxiliaryForm |
|
||||
| `mainDataCompositionSchema` | `""` | MainDataCompositionSchema |
|
||||
| `defaultSettingsForm` | `""` | DefaultSettingsForm |
|
||||
| `auxiliarySettingsForm` | `""` | AuxiliarySettingsForm |
|
||||
| `defaultVariantForm` | `""` | DefaultVariantForm |
|
||||
| `comment` | пусто | Comment |
|
||||
| `useStandardCommands` | `true` | UseStandardCommands |
|
||||
| `defaultForm` / `auxiliaryForm` | `""` | DefaultForm / AuxiliaryForm (ссылка verbatim) |
|
||||
| `mainDataCompositionSchema` | `""` | MainDataCompositionSchema (ссылка на макет СКД, напр. `Report.X.Template.ОсновнаяСхемаКомпоновкиДанных`) |
|
||||
| `defaultSettingsForm` / `auxiliarySettingsForm` / `defaultVariantForm` | `""` | *SettingsForm / DefaultVariantForm (ссылки) |
|
||||
| `variantsStorage` / `settingsStorage` | `""` | VariantsStorage / SettingsStorage (напр. `SettingsStorage.ХранилищеВариантовОтчетов`) |
|
||||
| `extendedPresentation` / `explanation` | пусто | ExtendedPresentation / Explanation (ML) |
|
||||
| `includeHelpInContents` | `false` | IncludeHelpInContents |
|
||||
| `attributes` | `[]` | → Attribute в ChildObjects |
|
||||
| `tabularSections` | `{}` | → TabularSection в ChildObjects |
|
||||
|
||||
> **`useStandardCommands`** управляет доступностью объекта через стандартный командный интерфейс. Дефолт `true`
|
||||
> (авторски-безопасно). При `false` и без переопределения размещения команд/подсистем отчёт доступен пользователю
|
||||
> только по навигационной ссылке (в типовых часто `false` — доступ идёт через панель отчётов БСП/командный интерфейс подсистемы).
|
||||
|
||||
Ссылки на формы/схемы/хранилища пишутся **verbatim** (без прощающего резолва — имя формы может быть буквально «Форма»).
|
||||
Модули: `Ext/ObjectModule.bsl` (пустой).
|
||||
|
||||
```json
|
||||
{ "type": "Report", "name": "АнализПродаж", "comment": "(Демо)", "useStandardCommands": false,
|
||||
"mainDataCompositionSchema": "Report.АнализПродаж.Template.ОсновнаяСхемаКомпоновкиДанных",
|
||||
"variantsStorage": "SettingsStorage.ХранилищеВариантовОтчетов",
|
||||
"attributes": ["Период: StandardPeriod", { "name": "Данные", "type": "" }] }
|
||||
```
|
||||
|
||||
### 7.12 DataProcessor (Обработка)
|
||||
|
||||
| Поле JSON | Умолчание | XML элемент |
|
||||
|-----------|----------|-------------|
|
||||
| `comment` | пусто | Comment |
|
||||
| `useStandardCommands` | `true` | UseStandardCommands (см. ремарку у Report) |
|
||||
| `defaultForm` / `auxiliaryForm` | `""` | DefaultForm / AuxiliaryForm (ссылка verbatim) |
|
||||
| `extendedPresentation` / `explanation` | пусто | ExtendedPresentation / Explanation (ML) |
|
||||
| `includeHelpInContents` | `false` | IncludeHelpInContents |
|
||||
| `attributes` | `[]` | → Attribute в ChildObjects |
|
||||
| `tabularSections` | `{}` | → TabularSection в ChildObjects |
|
||||
|
||||
Модули: `Ext/ObjectModule.bsl` (пустой).
|
||||
|
||||
```json
|
||||
{ "type": "Report", "name": "ОстаткиТоваров", "attributes": ["НачалоПериода: Date", "КонецПериода: Date"] }
|
||||
{ "type": "DataProcessor", "name": "ЗагрузкаТаблиц", "useStandardCommands": false,
|
||||
"attributes": [{ "name": "Таблица", "type": "ValueTree" }, { "name": "Произвольные", "type": "" }] }
|
||||
```
|
||||
|
||||
### 7.12 DataProcessor
|
||||
|
||||
| Поле JSON | Умолчание | XML элемент |
|
||||
|-----------|----------|-------------|
|
||||
| `defaultForm` | `""` | DefaultForm |
|
||||
| `auxiliaryForm` | `""` | AuxiliaryForm |
|
||||
| `attributes` | `[]` | → Attribute в ChildObjects |
|
||||
| `tabularSections` | `{}` | → TabularSection в ChildObjects |
|
||||
|
||||
Модули: `Ext/ObjectModule.bsl` (пустой).
|
||||
|
||||
```json
|
||||
{ "type": "DataProcessor", "name": "ЗагрузкаДанных", "attributes": ["ПутьКФайлу: String(500)"] }
|
||||
```
|
||||
**Типы реквизитов обработок/отчётов** (помимо общих §3): пустой `type: ""` → реквизит без типа (`<Type/>`,
|
||||
значение заполнения nil); платформенные коллекции `ValueTable`/`ValueTree`/`ValueList`(=ValueListType)/`StandardPeriod`
|
||||
→ `v8:`-префикс; типы current-config `ConstantsSet`/`ReportBuilder`/`CatalogObject.X`/`DataProcessorObject.X`/… →
|
||||
`cfg:`-префикс; `Chart`/`SettingsComposer`/`SpreadsheetDocument` → выделенное пространство имён.
|
||||
|
||||
### 7.13 ExchangePlan
|
||||
|
||||
|
||||
Reference in New Issue
Block a user