§ 9.6. Формы без предмета: когда главное — задача

В самом начале книги мы условились: форма — это реплика системы об одном предмете. Карточка говорит о товаре, список — о множестве товаров, отчёт — о цифре, которую посчитали. Условие работало восемь глав, и пора признать его границу. Бывают формы, у которых предмета нет. Человек открывает такое окно не ради записи, а ради дела: подобрать товары, разослать письма, свести расхождения по складу. Предмет такой формы — задача.

1. Где кончается «разговор об одном»

Сравним два окна, которые выглядят похоже и устроены по-разному.

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

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

Форма о записи отвечает на вопрос «о чём мы говорим». Форма о задаче — на вопрос «что мы сейчас делаем».

2. Откуда берутся такие формы

Их два источника, и оба в дереве конфигурации.

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

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

У обработки ролей для форм меньше, чем у справочника: основная форма и дополнительная — на случай, если основная не задана. Роли «форма списка» у неё нет вовсе, и это понятно: списка обработок у пользователя не бывает.

3. Чем такая форма устроена иначе

Различий ровно три, и все мы уже умеем читать по отдельности.

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

Вторая строка — самое важное для чтения. В карточке реквизиты формы были подспорьем; здесь они несут всё: выбранный склад, период, набранная таблица товаров. Данные эти в базе не лежат — они живут, пока открыто окно, как мы разбирали, говоря о таблице значений.

4. Что остаётся прежним

Хорошая новость: читать такие формы нечем новым. Кирпичи те же.

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

Поэтому форма-организатор не требует отдельного метода разбора — только другого первого вопроса. Не «о какой записи речь», а «какую задачу человек здесь решает».

5. Как читать форму о задаче

Разбор идёт по пути самой задачи: что на входе, что происходит, что на выходе.

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

Последний шаг — проверка, знакомая по главе о данных: если после закрытия не остаётся ничего, значит, задача не доведена до конца, и где-то должна быть команда, которая переносит набранное в базу. Нет такой команды — перед вами заготовка: окно без того шага, который переносит результат в базу.

6. Чем опасны такие формы

Свобода от предмета — это и риск: такому окну легко стать складом разных дел.

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

Первая строка — та же проверка, что для группы элементов в главе о композиции: если назначение не укладывается в одну фразу, его, скорее всего, не продумывали. Для окна целиком это ещё важнее, чем для группы полей.

7. В Конфигураторе

Проверим этот способ чтения на живом окне. В «Канцтоварах» обработок нет — и это само по себе ответ: учебная конфигурация собрана вокруг записей. Форму о задаче посмотрим в наборе чужих форм.

  1. Откройте в дереве конфигурации ветку обработок «Канцтоваров»: она пуста. Записывать задачам нечего, и в нашей базе их не завели.

  2. Откройте форму подбора товаров из набора чужих форм. Найдите основной реквизит: его либо нет, либо это объект обработки.

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

  2. Найдите команды формы и для каждой скажите, что она делает по названию.

  3. Ответьте одной фразой: какую задачу человек решает в этом окне и что остаётся после его закрытия.

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

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


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

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

  1. Где кончается правило «форма — разговор об одном предмете»?
  2. Из каких двух мест конфигурации приходят формы о задаче?
  3. Что такое обработка и почему роль для форм у неё одна?
  4. Что такое общая форма?
  5. Чем реквизиты формы в форме о задаче отличаются от реквизитов формы в карточке?
  6. В каком порядке читают форму о задаче?
  7. О чём говорит окно, задачу которого не удаётся назвать одной фразой?

Упражнения

По образцу. Прочитайте форму подбора из набора чужих форм по четырём шагам: вход, середина, выход, след.

Своё: придумайте задачу. Какую форму о задаче вы бы завели для «Канцтоваров» и что в ней было бы на входе и на выходе?

Ловушка: «набрал товары — значит, они в документе». Пользователь набрал в форме подбора десять товаров, закрыл окно и не нашёл их в поступлении. Что произошло?

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

На чтение. В окне есть две таблицы, период, склад и кнопка «Выполнить». Как понять, что это форма о задаче, а не отчёт?

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