§ 2.4. Назначение формы объекту

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

1. Где живёт назначение

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

Справочник «Товары»
└── Формы (закладка)
    └── Основные формы
        ├── элемента ─── ФормаЭлемента
        ├── группы   ─── (пусто)
        ├── списка   ─── (пусто)
        └── выбора   ─── (пусто)

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

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

2. Что значит «основная»

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

как открыликакая форма откроется
двойным щелчком, командой разделаосновная для этого вида
вызовом, где форма указана явноуказанная
основная не назначенапостроенная платформой

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

3. Лестница, у которой теперь видно оба конца

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

1. основная форма этого вида назначена?
   да  → открываем её
   нет ↓
2. платформа строит форму сама

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

что задаёт назначениечего не задаёт
какое окно откроется по умолчаниюбудет ли окно вообще
чьими глазами пользователь увидит объектчто хранится в базе

4. Чего назначение не делает

Три отказа, за которые потом благодарят.

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

Назначение не запрещает остальные формы. Другие формы того же вида по-прежнему открываются — просто их надо позвать по имени.

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

Назначить — значит ответить на вопрос «что открывать по умолчанию». Ни на один другой вопрос это не отвечает.

5. Почему пользователь не видит изменений сразу

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

где менялигде увидят
свойства объекта в Конфигураторепосле обновления конфигурации базы данных
открытый сеанс Предприятияпосле перезапуска сеанса

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

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

Назначаем нашу форму элемента — ту, которую собрал конструктор.

  1. Откройте окно редактирования справочника «Товары» и перейдите на закладку «Формы».

  2. В группе «Основные формы» в строке формы элемента выберите нашу форму. Остальные строки не трогайте — там по-прежнему пусто.

Здесь будет снимок экраназакладка «Формы» справочника «Товары», в строке основной формы элемента выбрана наша форма
  1. Обновите конфигурацию базы данных и запустите Предприятие.

  2. Откройте карточку любого товара. Теперь её строит не платформа, а наша форма.

  3. Откройте список товаров. Он остался прежним: своей формы списка мы не назначали.

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

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

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


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

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

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

Упражнения

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

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

Ловушка: «форма не работает». Разработчик назначил форму, сохранил конфигурацию и говорит: «в Предприятии всё по-старому, форма не работает». Что он пропустил и в каком порядке это проверять?

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

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

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