§ 2.2. Конструктор формы: первое знакомство

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

1. Конструктор приходит сам

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

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

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

Конструктор предлагает не всё подряд, а только то, что свойственно этому объекту: набор видов форм читается из его описания.

2. Первый вопрос: какая это форма

Конструктор начинает с того, о чём мы говорили в прошлой главе, — с вида формы. Справочнику он предлагает шесть вариантов.

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

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

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

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

3. Откуда конструктор берёт содержимое

А берёт он его оттуда же, откуда его берёт платформа, когда строит автоформу: из описания объекта. Реквизиты, табличные части, стандартные команды — всё раскладывается по тем же правилам, которые мы разобрали в прошлой главе.

дерево объекта ──► конструктор ──► форма
   реквизиты          один раз       лежит
   табличные                         в дереве
   части

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

Своя форма начинается там, где автоформа заканчивается: конструктор снимает с объекта тот же снимок и кладёт его в дерево.

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

4. Остальные вопросы

Кроме вида формы конструктор спрашивает немного.

вопросчто отвечаем сейчас
имя формыоставляем предложенное
синоним и комментарийоставляем как есть
«Назначить форму основной»снимаем отметку нарочно
кнопка «Готово» или «Далее»нажимаем «Готово»

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

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

5. Чего конструктор не делает

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

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

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

6. В Конфигураторе

Создаём первую форму. Это первое изменение конфигурации в книге — до сих пор мы только читали дерево.

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

  2. Выберите вид «Форма элемента справочника». Имя, синоним и комментарий оставьте предложенные.

  3. Снимите отметку «Назначить форму основной» — назначать будем отдельно.

Здесь будет снимок экранапервый шаг конструктора формы справочника с выбранным видом «Форма элемента справочника»
  1. Нажмите «Готово». Откроется редактор формы — пока просто посмотрите на него и ничего не меняйте.

  2. Вернитесь к дереву: ветка «Формы» у справочника «Товары» больше не пуста.

Теперь проверьте, что изменилось для пользователя. Запустите Предприятие и откройте карточку любого товара. Если Предприятие попросит обновиться — обновитесь; почему это вообще требуется, разберём дальше в этой главе. Она открылась ровно такой же, как раньше, — потому что справочник на нашу форму пока не ссылается. Форма есть, а разговор идёт по-прежнему через автоформу.

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

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


Форма в дереве есть, и редактор открыт. На экране несколько панелей, дерево элементов и превью окна — всё это надо научиться читать. С чего начать?

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

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

Упражнения

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

Своё: предскажите набор. Прежде чем открывать конструктор для документа «ПоступлениеТоваров», выпишите, какие виды форм он предложит и что окажется в форме документа. Потом откройте и сверьте.

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

Обратный ход. В чужой конфигурации форма справочника показывает поля не в том порядке, в каком они идут в дереве объекта. Что это говорит о её истории?

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

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