§ 2.6. Чужая форма: разбор по трём областям

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

1. Сначала дерево, потом окно

Три вопроса, которые задают до того, как разглядывать поля.

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

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

Разбор формы начинается в дереве. Кто хозяин и открывается ли форма сама — два вопроса, без которых остальное читается вслепую.

2. Три области по порядку

Дальше — сама форма, и порядок тот же, что мы разобрали: данные, вид, действия.

1. реквизиты  что у формы есть
2. элементы   что из этого видно
3. команды    что можно сделать

Читать в обратную сторону — распространённая ошибка. Начав с элементов, вы увидите поле и не будете знать, откуда оно берёт значение; начав с реквизитов, вы прочтёте элемент сразу вместе с его источником.

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

Третья строка стоит внимания: полезно не только то, что в форме есть, но и то, чего в ней нет. Реквизит, который есть в списке, но не выведен элементом, — чей-то осознанный отказ показывать его пользователю.

3. Где кончается чтение без кода

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

читается по форметребует модуля
какие поля есть и откуда берут значениечто случится при нажатии
какие команды объявленычто происходит при открытии
что вынесено на экран, а что нетоткуда берутся вычисляемые значения

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

4. Что выдаёт замысел

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

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

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

5. Три ловушки чтения

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

Вторая: считать кнопку командой формы. Часть кнопок приходит от объекта стандартными командами: в списке команд формы их не найти, а на экране они есть — в командной панели формы.

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

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

6. Разбор по шагам

Порядок, которым дальше разбирается любая чужая форма.

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

  2. Посмотрите строки основных форм объекта: открывается ли эта форма сама и для какого вида.

  3. Откройте редактор и выпишите реквизиты формы.

  4. Пройдите структуру элементов сверху вниз: что выведено, в каком порядке, что собрано в группы.

  5. Сверьте два списка: какие реквизиты не выведены и какие элементы не связаны с реквизитами.

  6. Посмотрите команды: что объявлено формой, что вынесено на экран и какие кнопки пришли от объекта стандартными командами.

  7. Назовите одно решение, которое видно в этой форме, и объясните его словами про работу пользователя.

Здесь будет снимок экранаформа из конфигурации «Чужие формы», структура элементов с группами

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

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


Разбирать формы мы научились по трём областям, но первая из них так и осталась списком без объяснения. Что это за реквизиты, откуда они берутся и почему среди них есть строка, которую никто не заводил?

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

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

Упражнения

По образцу. Разберите по семи шагам форму, которую вы собрали сами. Ответы на все шаги известны заранее — это и есть проверка самого порядка.

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

Ловушка: «это поле из справочника». В чужой форме есть флажок «показывать подробности». Коллега ищет его в дереве справочника и не находит. Где искать и почему.

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

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

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