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