mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-16 08:19:01 +03:00
fix(cfe-borrow): секции формы отбираются по имени, а не по позиции
Свойства уровня формы собирались до первой «визуальной» секции. В этот
список входил CommandSet, который в реальных формах стоит В СЕРЕДИНЕ блока
свойств: у всех 794 форм документов ERP с CommandSet он предшествует
AutoCommandBar, а AutoTime/UsePostingMode/RepostOnWrite идут после него.
Отсечка теряла весь хвост — в одном ERP это 2062 формы.
Отказа загрузки это не давало: платформа принимает форму и молча подставляет
дефолты. На Document.ЧекККМ.ФормаДокумента (УТ) AutoTime DontUse становился
CurrentOrLast, UsePostingMode Regular — Auto; исключённые стандартные команды
(Провести, Записать, Отменить проведение) возвращались в панель.
Граница теперь — AutoCommandBar: он есть в 100% из 30223 форм корпуса, и ни
одно свойство никогда не стоит после него. Отбрасываются явным списком
Events/Attributes/Commands/Parameters/CommandInterface и свойства, значение
которых — имя реквизита формы (ReportResult, DetailsData, VariantAppearance,
GroupList): реквизиты не заимствуются, ссылка повисла бы.
Заодно разобран конфаунд коммита 7abe26af, менявшего три вещи разом с одной
атрибуцией ошибки. По эталонам Конфигуратора («Добавить в расширение»):
- корневой CommandSet переносится дословно — вырезание было ошибкой;
- вложенный CommandSet выбрасывается ЦЕЛИКОМ, а не опустошается до пустого
контейнера, как делалось;
- RowPictureDataPath — путь к данным, а не индекс картинки: сохраняется при
заимствовании основного реквизита (Объект.Товары.РасхождениеЗаказ) и
вырезается без него (Список.DefaultPicture). Переехал в formBindingDataTags.
Спецификация форм утверждала, что свойства идут до CommandSet/AutoCommandBar —
именно это заблуждение и было закодировано. Заменено фактическим порядком
секций, выведенным из корпуса (0 нарушений на 30223 формах). Там же поправлены
значения перечислений AutoTime/UsePostingMode/ReportFormType, которых в корпусе
нет ни одного.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
78fc3ba71a
commit
0737a79522
+35
-6
@@ -212,22 +212,51 @@ CommonForms регистрируются в `Configuration.xml`:
|
||||
|
||||
```
|
||||
<Form>
|
||||
┌─ Свойства формы (необязательные, в произвольном порядке)
|
||||
┌─ Свойства формы (необязательные) — часть до <CommandSet>, часть после
|
||||
├─ <CommandSet> — исключённые стандартные команды
|
||||
├─ …продолжение свойств формы (AutoTime, UsePostingMode, RepostOnWrite, ReportResult…)
|
||||
├─ <AutoCommandBar> — главная командная панель (обязательный, id="-1")
|
||||
├─ <Events> — обработчики событий формы
|
||||
├─ <ChildItems> — дерево UI-элементов
|
||||
├─ <Attributes> — реквизиты формы
|
||||
├─ <Commands> — пользовательские команды
|
||||
├─ <Parameters> — параметры открытия формы
|
||||
└─ <Commands> — пользовательские команды
|
||||
└─ <CommandInterface> — командный интерфейс формы
|
||||
</Form>
|
||||
```
|
||||
|
||||
Порядок **строгий**, а не произвольный: на 30223 формах корпуса (ERP, УТ, УНФ 8.5, БП, общие
|
||||
формы) не встретилось ни одной пары элементов, идущей в разном порядке в разных формах.
|
||||
|
||||
Важно: `<CommandSet>` стоит **в середине блока свойств**, а не перед ним — свойства есть и до, и
|
||||
после него. У всех 794 форм документов ERP с `CommandSet` он предшествует `AutoCommandBar`, а
|
||||
`AutoTime`/`UsePostingMode`/`RepostOnWrite` идут **после** `CommandSet`.
|
||||
|
||||
Надёжная граница между свойствами и структурными секциями — **`<AutoCommandBar>`**: он присутствует
|
||||
в 100% форм корпуса, и ни одно свойство никогда не стоит после него. Код, отделяющий свойства от
|
||||
структуры, должен опираться на него, а не на «первую встреченную секцию».
|
||||
|
||||
Полный наблюдаемый порядок:
|
||||
|
||||
```
|
||||
Title · Width · Height · WindowOpeningMode · EnterKeyBehavior · AutoSaveDataInSettings ·
|
||||
SaveDataInSettings · SaveWindowSettings · SettingsStorage · AutoTitle · AutoURL · Group ·
|
||||
ChildItemsWidth · ChildrenAlign · HorizontalSpacing · Scale · VerticalSpacing · HorizontalAlign ·
|
||||
VerticalAlign · AutoFillCheck · Customizable · Enabled · CommandBarLocation · VerticalScroll ·
|
||||
ScalingMode · ConversationsRepresentation · MobileDeviceCommandBarContent · ScaleVariant ·
|
||||
CommandSet · GroupList · ShowTitle · CreateButtonsGroupPicture · CreateButtonsGroupTitle ·
|
||||
ShowCloseButton · CollapseItemsByImportanceVariant · WindowViewMode · ShowCommandBar · AutoTime ·
|
||||
ReportResult · DetailsData · ReportFormType · UseForFoldersAndItems · UsePostingMode ·
|
||||
RepostOnWrite · VariantAppearance · AutoShowState · CustomSettingsFolder · ReportResultViewMode ·
|
||||
ViewModeApplicationOnSetReportResult · AutoCommandBar · Events · ChildItems · Attributes ·
|
||||
Commands · Parameters · CommandInterface
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Свойства формы
|
||||
|
||||
Прямые дочерние элементы `<Form>` (все необязательные, указываются до `<CommandSet>`/`<AutoCommandBar>`):
|
||||
Прямые дочерние элементы `<Form>` — все необязательные, порядок между ними фиксирован (см. §2):
|
||||
|
||||
### Общие свойства (все типы форм)
|
||||
|
||||
@@ -258,8 +287,8 @@ CommonForms регистрируются в `Configuration.xml`:
|
||||
|
||||
| Элемент | Значения | Описание |
|
||||
|---------|----------|----------|
|
||||
| `<AutoTime>` | `CurrentOrLast`, `Current`, `Last` | Управление временем документа |
|
||||
| `<UsePostingMode>` | `Auto`, `Postings`, `Movements` | Режим проведения |
|
||||
| `<AutoTime>` | `CurrentOrLast`, `DontUse`, `Current`, `Last` | Управление временем документа. В корпусе встречаются только `CurrentOrLast` и `DontUse` |
|
||||
| `<UsePostingMode>` | `Auto`, `Regular` | Режим проведения |
|
||||
| `<RepostOnWrite>` | `true`/`false` | Перепроведение при записи |
|
||||
|
||||
### Свойства справочников (Catalogs, ChartsOfAccounts)
|
||||
@@ -274,7 +303,7 @@ CommonForms регистрируются в `Configuration.xml`:
|
||||
|---------|----------|----------|
|
||||
| `<ReportResult>` | string | Имя реквизита результата (`Результат`) |
|
||||
| `<DetailsData>` | string | Имя реквизита расшифровки (`ДанныеРасшифровки`) |
|
||||
| `<ReportFormType>` | `Main`, `Settings`, `Choice` | Тип формы отчёта |
|
||||
| `<ReportFormType>` | `Main`, `Settings`, `Variant` | Тип формы отчёта |
|
||||
| `<AutoShowState>` | `Auto`, `Show`, `Hide` | Автоотображение состояния |
|
||||
| `<ReportResultViewMode>` | `Auto`, `Table`, `Spreadsheet` | Режим отображения результата |
|
||||
| `<ViewModeApplicationOnSetReportResult>` | `Auto`, `Always`, `Never` | Применение режима |
|
||||
|
||||
@@ -55,8 +55,8 @@
|
||||
| `commandBarLocation` | `<CommandBarLocation>` | `Top`, `Bottom`, `None` |
|
||||
| `saveDataInSettings` | `<SaveDataInSettings>` | `UseList`, `Use`, `DontUse` |
|
||||
| `autoSaveDataInSettings` | `<AutoSaveDataInSettings>` | `Use`, `DontUse` |
|
||||
| `autoTime` | `<AutoTime>` | `CurrentOrLast`, `Current`, `Last` |
|
||||
| `usePostingMode` | `<UsePostingMode>` | `Auto`, `Postings`, `Movements` |
|
||||
| `autoTime` | `<AutoTime>` | `CurrentOrLast`, `DontUse`, `Current`, `Last` |
|
||||
| `usePostingMode` | `<UsePostingMode>` | `Auto`, `Regular` |
|
||||
| `repostOnWrite` | `<RepostOnWrite>` | `true` / `false` |
|
||||
| `autoURL` | `<AutoURL>` | `true` / `false` |
|
||||
| `enabled` | `<Enabled>` | `true` / `false` — доступность всей формы (редкое; форма-уровень) |
|
||||
|
||||
Reference in New Issue
Block a user