§ 1.2. Что попадает в автогенерируемую форму: правила сборки
Откройте рядом две вещи: ветку справочника «Товары» в Конфигураторе и карточку ручки шариковой в Предприятии. Совпадение бросается в глаза — те же имена, тот же порядок. Платформа не выдумывает окно, она переписывает описание объекта в поля, таблицы и кнопки. Правила этого переписывания стоит знать: по ним читают любую автоформу и по ним же предсказывают, что увидит пользователь, ещё не открыв программу.
1. Из чего собирается окно
Источников ровно четыре, и все они лежат в дереве.
объект «Товары» автоформа
─────────────── ─────────
стандартные реквизиты → поля
свои реквизиты → поля
табличные части → таблицы
стандартные команды → кнопки
Больше платформе брать неоткуда: своих выдумок у неё нет. Отсюда первое практическое следствие — всё на автоформе либо задано в дереве, либо следует из стандартных правил показа: кнопка календаря у даты и кнопки над таблицей — не узлы дерева, а следствие типа и вида элемента. И обратное верно: чего в дереве нет, того в окне не появится.
2. Стандартные реквизиты: то, что есть у всех
Часть реквизитов разработчик не пишет руками: их даёт объекту сама платформа. Их так и называют — стандартные реквизиты. Одни есть всегда: ссылка, пометка удаления, версия данных. Другие появляются по настройкам объекта: код и наименование — если заданы их длины, родитель — у иерархического справочника, владелец — у подчинённого. У документа стандартные свои: номер, дата, признак проведения.
Живут их настройки в окне редактирования объекта, на закладке «Данные», за кнопкой «Стандартные реквизиты».
| стандартный реквизит | что это | видно в карточке |
|---|---|---|
| Код | номер по порядку внутри справочника; есть, если задана его длина | да |
| Наименование | имя, которым объект показывают; есть, если задана его длина | да |
| Родитель | группа, в которой лежит элемент | да, у иерархического |
| Владелец | хозяин, если справочник подчинён другому | да, у подчинённого |
| Ссылка | сам объект как значение | нет |
| Пометка удаления | признак «помечен на удаление» | нет, показывается иначе |
Заведены они не от щедрости платформы. Без наименования объект нечем показать в списке и в чужом поле; без кода трудно отличить тёзок; без пометки удаления нечем сказать «этот больше не нужен», не ломая ссылки на него из старых документов. Это рабочий минимум — а что из него объекту нужно, решает разработчик.
Последние две строки объясняют вопрос, который возникает у всех: почему в карточке нет поля «Ссылка» и галочки «Пометка удаления». Они есть у объекта, но показывать их полем незачем: ссылка — это сам объект, а пометку ставят командой и видят по значку в списке.
3. Как объект показывает себя в чужом поле
Есть ещё одно правило, которое видно не в карточке товара, а в карточке поступления. Поле «Контрагент» показывает «Канцелярия Плюс» — наименование, а не код и не какой-нибудь внутренний номер. Кто это решил?
Решил справочник, у которого есть свойство основное представление: показывать его элементы по наименованию или по коду. Выбор действует везде, где этот справочник попадает в чужое поле или колонку.
| основное представление | что видно в поле «Контрагент» |
|---|---|
| в виде наименования | Канцелярия Плюс |
| в виде кода | 000000004 |
Правило то же, что и с типом: автоформа ничего не выбирает сама, она читает решение из дерева. Поэтому вопрос «почему здесь показан код, а не имя» — вопрос не к форме, а к справочнику.
4. Свои реквизиты и их порядок
Дальше идут реквизиты, которые завёл разработчик, — в том порядке, в каком они стоят в дереве.
дерево карточка
────── ────────
Код Код
Наименование Наименование
Родитель Родитель
├── Артикул → Артикул
└── ЕдиницаИзмерения Единица измерения
Отсюда вывод, неочевидный для новичка: порядок своих реквизитов в дереве — это не бухгалтерия, а порядок полей на экране. Переставили реквизиты местами — переставились поля у всех, кто работает с автоформой. На стандартные реквизиты это не распространяется: их платформа ставит по своим правилам, и перестановкой в дереве ими не управляют.
5. Тип реквизита решает, как выглядит поле
Платформа не спрашивает, каким полем показать значение: вид поля следует из типа. Это то самое правило из прошлой главы, только теперь видно, как широко оно работает.
| тип реквизита | что видит пользователь |
|---|---|
| строка | поле ввода |
| число | поле ввода, значение прижато вправо |
| дата | поле ввода с кнопкой календаря |
| булево | флажок |
| ссылка на справочник | поле с кнопкой выбора и окном выбора |
| перечисление | поле с выпадающим списком значений |
Автоформа не решает, как показать значение, — она читает это из типа.
6. Табличная часть становится таблицей
Табличная часть объекта превращается в таблицу, а её реквизиты — в колонки, всё в том же порядке дерева. Над таблицей платформа ставит свои кнопки: добавить строку, удалить, передвинуть.
ПоступлениеТоваров карточка
────────────────── ────────
Контрагент → поле
Склад → поле
ТЧ «Товары» → таблица
├── Товар → колонка
├── Количество → колонка
├── Цена → колонка
└── Сумма → колонка
7. Чего в автоформе не бывает
Правила сборки простые, и оборотная сторона этой простоты — отсутствие всего, что требует замысла.
| чего нет | что это значит на практике |
|---|---|
| групп и страниц | поля идут подряд, длинная карточка не разложена по вкладкам |
| декораций | нет пояснений, разделителей, картинок |
| своих команд | только стандартные кнопки |
| скрытых и переставленных полей | видно всё и в порядке дерева |
| особого поведения | ничто не подставляется и не пересчитывается само |
Ни одна из этих строк не поломка: пока форма показывает то, что нужно, и в понятном порядке, ни групп, ни своих команд не требуется.
Заметно это становится на объёме. У справочника с тремя реквизитами автоформа выглядит опрятно. У документа с двумя десятками полей она превращается в длинный столбец, где связанное не собрано вместе: платформа не знает, что «Склад» и «Ответственный» — про разное, а «Цена» и «Сумма» — про одно. Знает это только человек, и ровно с этого места начинается своя форма.
8. В Конфигураторе и в Предприятии
Сверим дерево и экран напрямую. Это не упражнение, а короткая проверка правил, которые мы только что назвали: проделав её один раз, дальше вы будете видеть соответствие без сверки.
- В Конфигураторе откройте справочник «Товары» и выпишите на бумагу порядок его реквизитов.
- В Предприятии откройте карточку любого товара и сверьте порядок полей с вашим списком. Совпало ли? Что появилось в карточке сверх выписанного?
- Найдите в карточке поля стандартных реквизитов. Каких стандартных реквизитов на экране нет?
- Откройте карточку поступления и сверьте с деревом документа: поля шапки, таблица, колонки. Какие кнопки стоят над таблицей?
Главное в одном абзаце
Автоформа собирается из четырёх источников, и все они лежат в дереве: стандартные реквизиты, реквизиты разработчика, табличные части и стандартные команды. Стандартные реквизиты — те, что есть у объекта сами по себе: код, наименование, родитель у иерархического справочника, номер и дата у документа; часть из них полем не показывается, потому что показывать нечего — ссылка есть сам объект, а пометку удаления видно по значку. Свои реквизиты идут в том порядке, в каком стоят в дереве, поэтому порядок в дереве — это порядок полей на экране. Как выглядит поле, решает тип реквизита: строка даёт поле ввода, булево — флажок, ссылка — поле с кнопкой выбора. Табличная часть становится таблицей, её реквизиты — колонками. И наоборот: в автоформе не бывает групп, страниц, декораций, своих команд и особого поведения — всё, что требует замысла, появляется только в форме, которую собрал человек.
Правила сборки одни, а окна у справочника разные: список не похож на карточку, а окно выбора — на список. Значит, платформа строит не одну форму, а несколько. Сколько и зачем?
Контрольные вопросы
- Из каких четырёх источников платформа собирает автоформу?
- Что такое стандартные реквизиты и где их настройки?
- Почему в карточке нет поля «Ссылка» и флажка «Пометка удаления»?
- В каком порядке идут поля в автоформе и что из этого следует для дерева?
- Что решает, каким полем показать реквизит?
- Чего в автоформе не бывает никогда и почему это не поломка?
Упражнения
Предскажите карточку. По ветке справочника «Склады» (у него только наименование) скажите, что будет в его автоформе элемента. Проверьте в Предприятии.
Своё: нарисуйте по дереву. Дан справочник «Сотрудники»: реквизиты «Должность» (строка), «ДатаПриёма» (дата), «Уволен» (булево), «Руководитель» (ссылка на «Сотрудники»). Нарисуйте на бумаге, как будет выглядеть его автоформа элемента: порядок полей и вид каждого.
Ловушка: поля не видно. Разработчик добавил справочнику реквизит, открыл Предприятие — поля нет. Он решил, что автоформа берёт не все реквизиты. Какие две причины вероятнее и что он должен проверить в первую очередь?
Обратный ход. Пользователь описывает окно: «сверху три поля, потом таблица с четырьмя колонками, сверху кнопки „Провести и закрыть“ и „Записать“». Что вы скажете об объекте, который за этим окном стоит?
Ответы — в конце части.