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