§ 1.2. Что попадает в автогенерируемую форму: правила сборки

Откройте рядом две вещи: ветку справочника «Товары» в Конфигураторе и карточку ручки шариковой в Предприятии. Совпадение бросается в глаза — те же имена, тот же порядок. Платформа не выдумывает окно, она переписывает описание объекта в поля, таблицы и кнопки. Правила этого переписывания стоит знать: по ним читают любую автоформу и по ним же предсказывают, что увидит пользователь, ещё не открыв программу.

1. Из чего собирается окно

Источников ровно четыре, и все они лежат в дереве.

объект «Товары»           автоформа
───────────────           ─────────
стандартные реквизиты  →  поля
свои реквизиты         →  поля
табличные части        →  таблицы
стандартные команды    →  кнопки

Больше платформе брать неоткуда: своих выдумок у неё нет. Отсюда первое практическое следствие — всё на автоформе либо задано в дереве, либо следует из стандартных правил показа: кнопка календаря у даты и кнопки над таблицей — не узлы дерева, а следствие типа и вида элемента. И обратное верно: чего в дереве нет, того в окне не появится.

2. Стандартные реквизиты: то, что есть у всех

Часть реквизитов разработчик не пишет руками: их даёт объекту сама платформа. Их так и называют — стандартные реквизиты. Одни есть всегда: ссылка, пометка удаления, версия данных. Другие появляются по настройкам объекта: код и наименование — если заданы их длины, родитель — у иерархического справочника, владелец — у подчинённого. У документа стандартные свои: номер, дата, признак проведения.

Живут их настройки в окне редактирования объекта, на закладке «Данные», за кнопкой «Стандартные реквизиты».

стандартный реквизитчто этовидно в карточке
Кодномер по порядку внутри справочника; есть, если задана его длинада
Наименованиеимя, которым объект показывают; есть, если задана его длинада
Родительгруппа, в которой лежит элементда, у иерархического
Владелецхозяин, если справочник подчинён другомуда, у подчинённого
Ссылкасам объект как значениенет
Пометка удаленияпризнак «помечен на удаление»нет, показывается иначе

Заведены они не от щедрости платформы. Без наименования объект нечем показать в списке и в чужом поле; без кода трудно отличить тёзок; без пометки удаления нечем сказать «этот больше не нужен», не ломая ссылки на него из старых документов. Это рабочий минимум — а что из него объекту нужно, решает разработчик.

Последние две строки объясняют вопрос, который возникает у всех: почему в карточке нет поля «Ссылка» и галочки «Пометка удаления». Они есть у объекта, но показывать их полем незачем: ссылка — это сам объект, а пометку ставят командой и видят по значку в списке.

3. Как объект показывает себя в чужом поле

Есть ещё одно правило, которое видно не в карточке товара, а в карточке поступления. Поле «Контрагент» показывает «Канцелярия Плюс» — наименование, а не код и не какой-нибудь внутренний номер. Кто это решил?

Решил справочник, у которого есть свойство основное представление: показывать его элементы по наименованию или по коду. Выбор действует везде, где этот справочник попадает в чужое поле или колонку.

основное представлениечто видно в поле «Контрагент»
в виде наименованияКанцелярия Плюс
в виде кода000000004

Правило то же, что и с типом: автоформа ничего не выбирает сама, она читает решение из дерева. Поэтому вопрос «почему здесь показан код, а не имя» — вопрос не к форме, а к справочнику.

4. Свои реквизиты и их порядок

Дальше идут реквизиты, которые завёл разработчик, — в том порядке, в каком они стоят в дереве.

дерево                    карточка
──────                    ────────
Код                       Код
Наименование              Наименование
Родитель                  Родитель
├── Артикул            →  Артикул
└── ЕдиницаИзмерения      Единица измерения

Отсюда вывод, неочевидный для новичка: порядок своих реквизитов в дереве — это не бухгалтерия, а порядок полей на экране. Переставили реквизиты местами — переставились поля у всех, кто работает с автоформой. На стандартные реквизиты это не распространяется: их платформа ставит по своим правилам, и перестановкой в дереве ими не управляют.

5. Тип реквизита решает, как выглядит поле

Платформа не спрашивает, каким полем показать значение: вид поля следует из типа. Это то самое правило из прошлой главы, только теперь видно, как широко оно работает.

тип реквизитачто видит пользователь
строкаполе ввода
числополе ввода, значение прижато вправо
датаполе ввода с кнопкой календаря
булевофлажок
ссылка на справочникполе с кнопкой выбора и окном выбора
перечислениеполе с выпадающим списком значений

Автоформа не решает, как показать значение, — она читает это из типа.

6. Табличная часть становится таблицей

Табличная часть объекта превращается в таблицу, а её реквизиты — в колонки, всё в том же порядке дерева. Над таблицей платформа ставит свои кнопки: добавить строку, удалить, передвинуть.

ПоступлениеТоваров        карточка
──────────────────        ────────
Контрагент             →  поле
Склад                  →  поле
ТЧ «Товары»            →  таблица
├── Товар              →  колонка
├── Количество         →  колонка
├── Цена               →  колонка
└── Сумма              →  колонка

7. Чего в автоформе не бывает

Правила сборки простые, и оборотная сторона этой простоты — отсутствие всего, что требует замысла.

чего нетчто это значит на практике
групп и страницполя идут подряд, длинная карточка не разложена по вкладкам
декорацийнет пояснений, разделителей, картинок
своих командтолько стандартные кнопки
скрытых и переставленных полейвидно всё и в порядке дерева
особого поведенияничто не подставляется и не пересчитывается само

Ни одна из этих строк не поломка: пока форма показывает то, что нужно, и в понятном порядке, ни групп, ни своих команд не требуется.

Заметно это становится на объёме. У справочника с тремя реквизитами автоформа выглядит опрятно. У документа с двумя десятками полей она превращается в длинный столбец, где связанное не собрано вместе: платформа не знает, что «Склад» и «Ответственный» — про разное, а «Цена» и «Сумма» — про одно. Знает это только человек, и ровно с этого места начинается своя форма.

8. В Конфигураторе и в Предприятии

Сверим дерево и экран напрямую. Это не упражнение, а короткая проверка правил, которые мы только что назвали: проделав её один раз, дальше вы будете видеть соответствие без сверки.

  1. В Конфигураторе откройте справочник «Товары» и выпишите на бумагу порядок его реквизитов.
  2. В Предприятии откройте карточку любого товара и сверьте порядок полей с вашим списком. Совпало ли? Что появилось в карточке сверх выписанного?
  3. Найдите в карточке поля стандартных реквизитов. Каких стандартных реквизитов на экране нет?
  4. Откройте карточку поступления и сверьте с деревом документа: поля шапки, таблица, колонки. Какие кнопки стоят над таблицей?
Здесь будет снимок экранадерево справочника «Товары» и карточка товара рядом

Главное в одном абзаце

Автоформа собирается из четырёх источников, и все они лежат в дереве: стандартные реквизиты, реквизиты разработчика, табличные части и стандартные команды. Стандартные реквизиты — те, что есть у объекта сами по себе: код, наименование, родитель у иерархического справочника, номер и дата у документа; часть из них полем не показывается, потому что показывать нечего — ссылка есть сам объект, а пометку удаления видно по значку. Свои реквизиты идут в том порядке, в каком стоят в дереве, поэтому порядок в дереве — это порядок полей на экране. Как выглядит поле, решает тип реквизита: строка даёт поле ввода, булево — флажок, ссылка — поле с кнопкой выбора. Табличная часть становится таблицей, её реквизиты — колонками. И наоборот: в автоформе не бывает групп, страниц, декораций, своих команд и особого поведения — всё, что требует замысла, появляется только в форме, которую собрал человек.


Правила сборки одни, а окна у справочника разные: список не похож на карточку, а окно выбора — на список. Значит, платформа строит не одну форму, а несколько. Сколько и зачем?

Контрольные вопросы

  1. Из каких четырёх источников платформа собирает автоформу?
  2. Что такое стандартные реквизиты и где их настройки?
  3. Почему в карточке нет поля «Ссылка» и флажка «Пометка удаления»?
  4. В каком порядке идут поля в автоформе и что из этого следует для дерева?
  5. Что решает, каким полем показать реквизит?
  6. Чего в автоформе не бывает никогда и почему это не поломка?

Упражнения

Предскажите карточку. По ветке справочника «Склады» (у него только наименование) скажите, что будет в его автоформе элемента. Проверьте в Предприятии.

Своё: нарисуйте по дереву. Дан справочник «Сотрудники»: реквизиты «Должность» (строка), «ДатаПриёма» (дата), «Уволен» (булево), «Руководитель» (ссылка на «Сотрудники»). Нарисуйте на бумаге, как будет выглядеть его автоформа элемента: порядок полей и вид каждого.

Ловушка: поля не видно. Разработчик добавил справочнику реквизит, открыл Предприятие — поля нет. Он решил, что автоформа берёт не все реквизиты. Какие две причины вероятнее и что он должен проверить в первую очередь?

Обратный ход. Пользователь описывает окно: «сверху три поля, потом таблица с четырьмя колонками, сверху кнопки „Провести и закрыть“ и „Записать“». Что вы скажете об объекте, который за этим окном стоит?

Ответы — в конце части.