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