§ 1.1. Автогенерируемая форма: что это и когда срабатывает

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

За этим стоит первое правило платформы, которое мы разберём вплотную.

1. Форма, которой нет в дереве

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

Если форма не задана явно — платформа создаёт её из метаданных.

Строгая пара, как всегда, с адресом:

образ    окно, которое не собирали
         в редакторе
строго   форму строит платформа по
         описанию объекта, когда ни одна
         форма ему не назначена
где      окно редактирования объекта,
         закладка «Формы», страницы
         «Основные» и «Дополнительные»

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

Здесь будет снимок экраназакладка «Формы» справочника «Товары» — все основные формы не заданы

2. Когда правило срабатывает

Правило простое, но у него есть одна неочевидная строка. Вот что откроется в тонком клиенте — а в нём работают все современные программы.

что назначено объектучто откроется
ничегоформа, построенная платформой
управляемая формаона и откроется
только обычная формаформа, построенная платформой

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

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

3. «Строит в момент, когда понадобилась»

Автоформа не лежит готовой. Её собирают тогда, когда она понадобилась: сервер читает описание объекта, строит из него описание формы, добавляет данные и отправляет клиенту — а тот рисует окно. Именно поэтому автоформы нет в дереве: до открытия её не существует.

Из этого следует всё остальное, что про неё нужно знать.

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

Автоформы нет в дереве, потому что до открытия её не существует.

4. Это не заглушка, а рабочее окно

Слово «автоматически» часто звучит как «наспех», и здесь этого оттенка нет. Автоформа — не набросок и не заглушка: через неё делают всё, ради чего объект заводили.

Вы уже пользовались автоформами всю прошлую главу, просто не знали об этом.

окно, которое мы открывалиэто автоформа?
список товаровда
карточка «Ручка шариковая»да
карточка поступления № 12да
окно выбора контрагентада
окно отчёта об остаткахнет: у отчёта своё устройство

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

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

5. Порядок, по которому платформа выбирает форму

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

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

нужна форма элемента
        │
  назначена основная? ──да──► она
        │ нет
  есть дополнительная? ─да──► она
        │ нет
  построить по описанию объекта

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

6. Зачем платформе это умение

Можно спросить: почему бы не потребовать от разработчика нарисовать форму, как требуют почти везде? Ответ виден, если сравнить два порядка работы.

в системе без автоформв 1С
описать, что хранитьописать, что хранить
нарисовать окно для ввода—
нарисовать окно для списка—
связать поля окна с данными—
запустить и ввести первые данныезапустить и ввести первые данные

Три шага из пяти пропадают. Дело не только в экономии времени: пока формы нет, объект всё равно работает, и это меняет сам порядок работы. Разработчик заводит справочник, тут же запускает Предприятие, вводит десяток записей, смотрит, чего не хватает, — и правит дерево, а не форму. Форму он сделает потом и только там, где она нужна.

Есть и вторая причина, важнее первой. Автоформа строится из описания объекта, и значит, она не отстаёт от него. Добавили реквизит — он появился в окне сам. Нарисованная форма так не умеет: в ней новый реквизит нужно ставить руками, и всякий раз, когда об этом забывают, форма начинает врать — показывать не всё, что у объекта есть.

Пока формы нет, окно не отстаёт от объекта: платформа строит его заново по текущему описанию.

7. Как узнать автоформу в лицо

Различать их полезно: от этого зависит, где искать причину того, что вы видите на экране.

признакавтоформасвоя форма
в дереве, в ветке «Формы»пустоформа лежит
порядок полейкак в дереве объектакакой задал разработчик
группы, страницы, оформлениенетбывают
лишние кнопки и особое поведениенетбывают

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

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

Убедимся, что окна, с которыми мы работали, действительно ниоткуда не взялись.

  1. В Конфигураторе откройте справочник «Товары» и перейдите на закладку «Формы». На странице «Основные» все поля пусты: ни формы элемента, ни формы списка, ни формы выбора.

  2. Раскройте в дереве ветку «Формы» у этого справочника — она пуста. Открывать нечего: автоформу в редакторе не показать.

  3. То же самое проделайте с документом «ПоступлениеТоваров».

  4. Запустите Предприятие и откройте список товаров и карточку любого товара. Оба окна платформа собрала только что, в момент открытия.

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

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


Платформа собрала окно из описания объекта. Но по каким правилам — что именно она берёт, в каком порядке ставит и чего не показывает никогда?

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

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

Упражнения

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

Своё: предскажите. В конфигурацию добавили справочник «Сотрудники» с реквизитами «Должность» и «Телефон» и ни одной формы не сделали. Что увидит пользователь, открыв список сотрудников? Что он сможет с ним сделать?

Ловушка: «форму забыли». Новичок открыл чужую конфигурацию, увидел у половины справочников пустую ветку «Формы» и решил, что работа не доделана. В чём он ошибается и какой вопрос стоило задать вместо этого?

Правило по таблице. Объекту назначена управляемая форма списка, а формы элемента нет. Что откроется при щелчке по строке списка, а что — при открытии самого списка?

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