Форма документа
Описание бумажного бланка: страницы, разделы и размещённые в них поля с подписями и местом на листе.
1. Назначение
Форма — бумажный бланк, описанный данными. Она отвечает на вопрос, как выглядит лист: какие поля где напечатаны и как подписаны. Что при этом хранится и обязательно ли поле — знание вида документа.
Одному виду документа соответствует несколько форм — по числу редакций бланка в обращении. По образцам заказчика только у ИК издания их три: они отличаются заголовками и подписями полей, а состав почти совпадает.
Форма работает в обе стороны: описывает и печать документа, и разметку бумажного бланка при распознавании — где какое поле искать.
2. Почему у формы нет версий
Значение опознаётся кодом атрибута и не зависит от того, где поле напечатано. Поэтому изменение бланка не задевает созданные документы, и версионировать форму не нужно: другой бланк — просто другая форма.
Это следствие раздельного описания состава и формы. Пока состав задавался бланком, версии были обязательны — иначе правка задним числом меняла бы смысл готовых документов.
3. Что попадает в форму
В форму входят не все атрибуты состава: служебные данные Сервиса на бумаге отсутствуют. Обратное невозможно, причём не по договорённости, а по устройству модели: поле ссылается на атрибут вида документа, поэтому атрибута, которого в составе вида нет, в форме быть не может.
Явная связь формы с видом при этом не лишняя, хотя вид выводится и из полей. Она отвечает на вопрос «какие формы есть у этого вида» без обхода всех полей, позволяет завести форму до наполнения её полями и делает проверяемым инвариант: все поля формы ссылаются на атрибуты того же вида, что указан у формы.
Порядок страниц и разделов воспроизводит бумажную форму: пользователь проверяет документ, сверяясь с изображением, и расхождение порядка сбивает работу.
Формы без страниц не бывает: бланк — это лист, и описание бланка без единого листа не описывает ничего. Завести форму до наполнения её полями можно, до наполнения страницами — нет.
Свойства
| Свойство | Тип | Описание |
|---|---|---|
Id | Guid | Идентификатор формы. |
Name | String | Наименование бланка, как оно напечатано в заголовке формы. |
IsActive | Boolean | Доступна ли форма для выбора при вводе. |
DocumentKind | DocumentKind | Вид документа, который представлен этой формой. |
Pages | IReadOnlyList<FormPage> | Страницы бланка. |
Структурные связи
Используется
- Handler Handler: ClassifyFrame