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