$npx -y skills add Nikolay-Shirokov/cc-1c-skills --skill form-patternsСправочник паттернов компоновки управляемых форм 1С. Используй как справочник при проектировании форм — архетипы, конвенции, продвинутые приёмы
| 1 | # /form-patterns — паттерны компоновки форм |
| 2 | |
| 3 | Справочник типовых паттернов дизайна управляемых форм 1С. Вызывай **перед** проектированием формы через `/form-compile`, когда требования пользователя не детализируют расположение элементов. |
| 4 | |
| 5 | **Как использовать:** выбери подходящий архетип, применяй конвенции именования, при необходимости используй продвинутые паттерны. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Архетипы форм |
| 10 | |
| 11 | ### Форма документа |
| 12 | |
| 13 | ``` |
| 14 | Шапка (horizontal, 2 колонки) |
| 15 | ├─ Левая (vertical): НомерДата (H: Номер + Дата "от"), Контрагент, Договор |
| 16 | ├─ Правая (vertical): Организация, Подразделение, ЦеныИВалюта (надпись-ссылка) |
| 17 | Страницы (pages) |
| 18 | ├─ Товары: таблица Объект.Товары |
| 19 | ├─ Услуги: таблица Объект.Услуги (опционально) |
| 20 | └─ Дополнительно: прочие реквизиты |
| 21 | Подвал (vertical) |
| 22 | ├─ Итоги (horizontal): Всего, НДС, Скидка |
| 23 | └─ КомментарийОтветственный (horizontal): Комментарий + Ответственный |
| 24 | ``` |
| 25 | |
| 26 | **События:** OnCreateAtServer, OnReadAtServer, OnOpen, BeforeWriteAtServer, AfterWriteAtServer, AfterWrite, NotificationProcessing |
| 27 | **Свойства:** autoTitle=false |
| 28 | |
| 29 | ### Форма обработки (DataProcessor) |
| 30 | |
| 31 | ``` |
| 32 | Параметры (vertical) |
| 33 | ├─ Группа полей ввода (Организация, Период, режимы работы) |
| 34 | ├─ Информационные надписи (label, hyperlink) |
| 35 | Рабочая область |
| 36 | ├─ Таблица данных или Pages с вкладками |
| 37 | Главная АКП формы (autoCmdBar) |
| 38 | ├─ Выполнить / Применить (defaultButton: true) |
| 39 | └─ Закрыть (stdCommand: Close) |
| 40 | ``` |
| 41 | |
| 42 | **События:** OnCreateAtServer, OnOpen, NotificationProcessing |
| 43 | **Свойства:** windowOpeningMode=LockOwnerWindow (если диалог), autoTitle=false |
| 44 | |
| 45 | ### Форма списка |
| 46 | |
| 47 | ``` |
| 48 | Отборы (group: alwaysHorizontal) |
| 49 | ├─ ГруппаОтбор[Поле] (H): Флажок + Поле ввода (для каждого фильтра) |
| 50 | Список (table, DynamicList) |
| 51 | ├─ Колонки: labelField (не input — данные только для чтения) |
| 52 | ``` |
| 53 | |
| 54 | **События:** OnCreateAtServer, OnOpen, NotificationProcessing, OnLoadDataFromSettingsAtServer |
| 55 | **Свойства:** autoSaveDataInSettings=Use |
| 56 | **Фильтры:** пара реквизитов на каждый — `Отбор[Поле]` (значение) + `Отбор[Поле]Использование` (boolean) |
| 57 | |
| 58 | ### Форма элемента справочника |
| 59 | |
| 60 | **Простая:** |
| 61 | ``` |
| 62 | ГруппаРеквизитов (horizontal) |
| 63 | ├─ Наименование -> Объект.Description |
| 64 | └─ Код -> Объект.Code (если нужен) |
| 65 | ``` |
| 66 | |
| 67 | **Сложная:** |
| 68 | ``` |
| 69 | Главное (vertical) |
| 70 | ├─ Наименование -> Объект.Description |
| 71 | ├─ Параметры (horizontal, 2 колонки) |
| 72 | │ ├─ Левая: основные реквизиты |
| 73 | │ └─ Правая: дополнительные реквизиты |
| 74 | └─ КонтактныеДанные / Дополнительно (vertical) |
| 75 | ``` |
| 76 | |
| 77 | **События:** OnCreateAtServer, OnReadAtServer, BeforeWriteAtServer, NotificationProcessing |
| 78 | |
| 79 | ### Мастер (Wizard) |
| 80 | |
| 81 | ``` |
| 82 | Страницы (pages, OnCurrentPageChange) |
| 83 | ├─ Шаг1: описание + параметры |
| 84 | ├─ Шаг2: основная работа |
| 85 | └─ Шаг3: результат |
| 86 | Главная АКП формы (autoCmdBar) |
| 87 | ├─ Назад, Далее (defaultButton: true), Выполнить |
| 88 | └─ Закрыть (stdCommand: Close) |
| 89 | ``` |
| 90 | |
| 91 | **Свойства:** windowOpeningMode=LockOwnerWindow |
| 92 | |
| 93 | --- |
| 94 | |
| 95 | ## Конвенции именования |
| 96 | |
| 97 | ### Группы |
| 98 | |
| 99 | | Назначение | Имя | Тип | |
| 100 | |-----------|-----|-----| |
| 101 | | Шапка | `ГруппаШапка` | horizontal | |
| 102 | | Левая колонка | `ГруппаШапкаЛевая` | vertical | |
| 103 | | Правая колонка | `ГруппаШапкаПравая` | vertical | |
| 104 | | Номер+Дата | `ГруппаНомерДата` | horizontal | |
| 105 | | Подвал | `ГруппаПодвал` | vertical | |
| 106 | | Итоги | `ГруппаИтоги` | horizontal | |
| 107 | | Главная АКП формы | `ФормаКоманднаяПанель` | autoCmdBar | |
| 108 | | Страницы | `ГруппаСтраницы` / `Страницы` | pages | |
| 109 | | Предупреждение | `ГруппаПредупреждение` | horizontal, visible:false | |
| 110 | | Доп. секция | `ГруппаДополнительно` / `ГруппаПрочее` | vertical, collapse | |
| 111 | |
| 112 | ### Элементы |
| 113 | |
| 114 | | Назначение | Имя | |
| 115 | |-----------|-----| |
| 116 | | Поле в таблице | `[Таблица][Поле]` | |
| 117 | | Итог | `Итоги[Поле]` | |
| 118 | | Надпись-ссылка | `[Поле]Надпись` | |
| 119 | | Фильтр | `Отбор[Поле]` | |
| 120 | | Флажок фильтра | `Отбор[Поле]Использование` | |
| 121 | | Кнопка команды | `[Команда]Кнопка` | |
| 122 | | Баннер-картинка | `[Баннер]Картинка` | |
| 123 | | Баннер-надпись | `[Баннер]Надпись` | |
| 124 | | Подменю | `Подменю[Действие]` | |
| 125 | |
| 126 | ### Обработчики событий |
| 127 | |
| 128 | Имя = имя элемента + суффикс на русском: |
| 129 | |
| 130 | | Событие | Суффикс | Пример | |
| 131 | |---------|---------|--------| |
| 132 | | OnChange | ПриИзменении | `ОрганизацияПриИзменении` | |
| 133 | | StartChoice | НачалоВыбора | `КонтрагентНачалоВыбора` | |
| 134 | | Click | Нажатие | `ЦеныИВалютаНажатие` | |
| 135 | | OnEditEnd | ПриОкончанииРедактирования | `ТоварыПриОкончанииРедактирования` | |
| 136 | | OnStartEdit | ПриНачалеРедактирования | `ТоварыПриНачалеРедактирования` | |
| 137 | |
| 138 | Обработчики формы: `ПриСозданииНаСервере`, `ПриОткрытии`, `ПередЗакрытием`, `ОбработкаОповещения`. |
| 139 | |
| 140 | --- |
| 141 | |
| 142 | ## Принципы компоновки |
| 143 | |
| 144 | 1. **Порядок чтения.** Сверху вниз, слева направо. Самое важное — вверху. |
| 145 | 2. **Двухколоночная шапка.** Основные реквизиты слева (контрагент, склад), организационные справа (организация, подразделение). |
| 146 | 3. **Кнопки действий — на главной АКП формы** (`autoCmdBar`), не в отдельной группе на форме. Главная кнопка — `defaultButton: true`. Закрыть — всегда последняя. |
| 147 | 4. **Таблицы — основная область.** Табличные части занимают большую ч |