§ 2.2. Конструктор формы: первое знакомство
Основу формы действительно можно получить готовой. Как только вы добавляете объекту форму, на экране открывается конструктор и задаёт свои вопросы. Их немного, и почти на все есть разумный ответ по умолчанию — а начать с пустого места конструктор тоже позволяет, только предлагать этого не станет.
1. Конструктор приходит сам
Инструмент, который собирает форму, называется конструктором формы. Его не нужно искать в меню: при создании формы он вызывается автоматически. Добраться до создания можно двумя дорогами — обе ведут в одно место.
| откуда начинаем | что делаем |
|---|---|
| окно редактирования объекта | закладка «Основное», кнопка «Добавить» |
| дерево конфигурации | встать на ветку «Формы» объекта и добавить |
Инструмент один, но ведёт себя по-разному: конструктор читает, какие виды форм свойственны этому объекту, и лишнего не показывает. Оттого документация платформы и говорит о конструкторе форм справочника, конструкторе формы документа, конструкторе формы регистра сведений — по объекту, для которого он вызван.
Конструктор предлагает не всё подряд, а только то, что свойственно этому объекту: набор видов форм читается из его описания.
2. Первый вопрос: какая это форма
Конструктор начинает с того, о чём мы говорили в прошлой главе, — с вида формы. Справочнику он предлагает шесть вариантов.
| выбрали | что получите |
|---|---|
| форма элемента | окно одной записи: поля справочника |
| форма группы | окно папки — если у справочника есть иерархия |
| форма списка | окно с таблицей записей |
| форма выбора | окно, открытое ради выбора одной записи |
| форма выбора группы | то же, но выбирают папку |
| произвольная форма | пустая основа: раскладывать будете сами |
Выбор здесь не про внешность, а про разговор: мы говорим конструктору, о чём будет окно, и он раскладывает содержимое под этот разговор. Последняя строка — для случая, когда готовая раскладка мешает: произвольная форма приходит пустой, и всё, что в ней появится, положите туда вы.
У документа набор короче — формы документа, списка, выбора и произвольная: папок у документов не бывает, а значит, нет и форм группы. Набор, как видите, не выдуман конструктором, а прочитан по объекту.
Оговорка для тех, кому она встретится. Если конфигурация ведётся только в управляемом режиме — а в нашей это так, — конструктор больше ни о чём не спрашивает. В конфигурации, где разрешены и обычные формы, он сначала уточнит, какую из двух создавать; про два режима форм мы говорили во вводной главе.
3. Откуда конструктор берёт содержимое
А берёт он его оттуда же, откуда его берёт платформа, когда строит автоформу: из описания объекта. Реквизиты, табличные части, стандартные команды — всё раскладывается по тем же правилам, которые мы разобрали в прошлой главе.
дерево объекта ──► конструктор ──► форма
реквизиты один раз лежит
табличные в дереве
части
Отсюда главное свойство первой своей формы: она начинается как снимок автоформы. Не «почти такая же» — та же самая, только записанная в дерево и отданная вам в руки. Строго это значит вот что: конструктор заполняет реквизиты формы и элементы по тем же правилам, по которым платформа строит автоформу, — и в редакторе обе эти вкладки открываются уже не пустыми.
Своя форма начинается там, где автоформа заканчивается: конструктор снимает с объекта тот же снимок и кладёт его в дерево.
И сразу следствие, о котором мы говорили, когда взвешивали цену своей формы. Снимок сделан один раз. Добавите завтра объекту реквизит — всё, что платформа строит сама, покажет его сразу, а эта форма не покажет: она уже не строится заново, она хранится. Пока форма не назначена объекту, автоформа того же вида тоже продолжает строиться — и новый реквизит в ней появится.
4. Остальные вопросы
Кроме вида формы конструктор спрашивает немного.
| вопрос | что отвечаем сейчас |
|---|---|
| имя формы | оставляем предложенное |
| синоним и комментарий | оставляем как есть |
| «Назначить форму основной» | снимаем отметку нарочно |
| кнопка «Готово» или «Далее» | нажимаем «Готово» |
Две строки требуют пояснения. Отметка «Назначить форму основной» — это ровно та ссылка из свойств объекта, о которой шла речь в прошлом параграфе: поставили её — справочник начал указывать на нашу форму. Конструктор предлагает сделать это заодно; мы отметку снимем и назначим форму руками — чтобы увидеть своими глазами, что создание формы и её назначение объекту два разных действия, а не одно.
А «Далее» ведёт на второй шаг, где выбирают состав реквизитов, число колонок и вид каждого поля. Нам туда рано: сейчас важно увидеть раскладку по умолчанию, а не спорить с ней. Нажимаем «Готово» — конструктор размещает элементы сам и открывает форму.
5. Чего конструктор не делает
Соблазн считать конструктор умным велик, а список его отказов короткий и полезный.
| чего ждут | что на самом деле |
|---|---|
| «разложит поля удобно» | разложит по порядку из дерева |
| «поймёт, что тут главное» | главного не знает: всё равноправно |
| «подхватит изменения объекта» | не подхватит: снимок сделан один раз |
| «заменит автоформы» | заменит одну — ту, что назначат |
Последняя строка стоит отдельного слова. Создав форму элемента, вы не отменили автоформы списка, выбора и группы: для них ничего не изменилось, платформа по-прежнему строит их сама. Своя форма занимает ровно одно место в разговоре — то, на которое её поставили.
6. В Конфигураторе
Создаём первую форму. Это первое изменение конфигурации в книге — до сих пор мы только читали дерево.
-
В дереве конфигурации раскройте справочник «Товары», встаньте на ветку «Формы» и добавьте форму. Конструктор откроется сам.
-
Выберите вид «Форма элемента справочника». Имя, синоним и комментарий оставьте предложенные.
-
Снимите отметку «Назначить форму основной» — назначать будем отдельно.
-
Нажмите «Готово». Откроется редактор формы — пока просто посмотрите на него и ничего не меняйте.
-
Вернитесь к дереву: ветка «Формы» у справочника «Товары» больше не пуста.
Теперь проверьте, что изменилось для пользователя. Запустите Предприятие и откройте карточку любого товара. Если Предприятие попросит обновиться — обновитесь; почему это вообще требуется, разберём дальше в этой главе. Она открылась ровно такой же, как раньше, — потому что справочник на нашу форму пока не ссылается. Форма есть, а разговор идёт по-прежнему через автоформу.
Главное в одном абзаце
Форму собирает конструктор, и вызывать его не нужно — он открывается сам, как только объекту добавляют форму, и предлагает только те виды форм, которые этому объекту свойственны, вплоть до произвольной — пустой. Первый вопрос конструктора — какая это форма: элемента, списка, выбора, группы, — и это вопрос не о внешности, а о том, про что будет разговор. Содержимое конструктор берёт из описания объекта по тем же правилам, по которым платформа строит автоформу, поэтому первая своя форма — это снимок автоформы, положенный в дерево; снимок сделан один раз, и дальше форма за объектом не следует. Остальные вопросы конструктора — имя, синоним и отметка «назначить основной»; последняя ставит ту самую ссылку из свойств объекта, и создание формы и её назначение — два разных действия. Пока форма не назначена, пользователь её не увидит: платформа продолжает строить автоформу.
Форма в дереве есть, и редактор открыт. На экране несколько панелей, дерево элементов и превью окна — всё это надо научиться читать. С чего начать?
Контрольные вопросы
- Как вызывается конструктор формы и почему его не ищут в меню?
- Почему у справочника и у документа конструкторы разные?
- О чём на самом деле спрашивает конструктор, предлагая выбрать вид формы?
- Откуда конструктор берёт содержимое будущей формы?
- Почему первую свою форму называют снимком автоформы и чем это обернётся через полгода?
- Что делает отметка «назначить форму основной» и почему мы её сняли?
- Мы создали форму элемента. Что изменилось для формы списка того же справочника?
Упражнения
По образцу. Создайте в «Канцтоварах» форму элемента для справочника «Контрагенты» — тем же порядком, не назначая её основной. Проверьте в Предприятии, что карточка контрагента открывается по-прежнему.
Своё: предскажите набор. Прежде чем открывать конструктор для документа «ПоступлениеТоваров», выпишите, какие виды форм он предложит и что окажется в форме документа. Потом откройте и сверьте.
Ловушка: «форма создана — дело сделано». Разработчик создал форму элемента для справочника и отчитался: «карточку переделал». Пользователь говорит, что ничего не изменилось. Оба правы — объясните, что произошло.
Обратный ход. В чужой конфигурации форма справочника показывает поля не в том порядке, в каком они идут в дереве объекта. Что это говорит о её истории?
На чтение. Объекту год назад добавили реквизит. В форме списка он виден, в форме элемента — нет. Что из этого следует про обе формы?
Ответы — в конце части.