Атрибут вида документа
Поле в составе вида документа: код, каноническое наименование, тип значения, обязательность, порядок и участие в ядре карты.
1. Назначение
Атрибут вида документа — поле в составе вида, а не связка между видом и чем-то ещё. Он отвечает и на вопрос «что это за поле по смыслу» (код, каноническое наименование), и на вопрос «чем оно заполняется и обязательно ли» (тип значения, обязательность).
Атрибут принадлежит виду и никому больше. Общего словаря атрибутов над видами нет: он давал переиспользование заодно с общими ограничениями, и правка ради одного вида молча меняла поведение остальных. Переиспользуется теперь тип значения — он именован и выбирается осознанно.
Атрибут вида — узловая сущность модели: на него ссылаются и поле формы, и значение в пакете ввода, и атрибут документа карты. Благодаря этому поле бланка не может сослаться на атрибут, которого в составе этого вида нет: ограничение обеспечено самой связью, а не проверкой.
Поэтому одинаковое по смыслу поле в двух видах — дата и в карте, и в листе экспертизы — это два разных атрибута. Совпадение кодов между видами полезно при заведении, но ничем не обеспечено и ни к чему не обязывает.
2. Инварианты
- Код уникален в составе своего вида и не меняется: по нему опознаются значения в уже созданных картах и строится выгрузка в АБИС.
- Атрибут не знает, на каком листе он напечатан и с какой подписью: это знание формы.
- Две заполняемые позиции на бланке — всегда два атрибута, даже если подписаны одинаково и заполняются одинаковыми значениями.
- Одно свойство ядра карты заполняется не более чем одним атрибутом вида.
3. Дробность атрибутов
Атрибут соответствует одной заполняемой позиции на форме, а не смысловой группе. Правило одно и покрывает оба случая, которые иначе хотелось бы решать по-разному:
- матрица «Задано / Выполнено» в разделе «Консервация» даёт по два атрибута на мероприятие — отдельно «задано» и отдельно «выполнено»: на бумаге это две независимые клетки, заполняемые в разное время и разными людьми;
- парные колонки «1 и 2» на форме на рукопись тоже дают по два атрибута — основа переплёта и основа футляра: это разные объекты описания, а не одно поле, заполняемое дважды.
Состав вида от этого длиннее, зато значение опознаётся кодом атрибута и не зависит от того, в каком разделе бланка поле напечатано. Иначе смысл значения пришлось бы восстанавливать по пути в дереве разделов — и при любой перевёрстке бланка он бы поехал.
Одно и то же поле, подписанное на разных редакциях бланка по-разному (Кол-во стр.
и Количество страниц), остаётся одним атрибутом: подпись живёт в поле формы.
Поэтому карты разных редакций сравнимы между собой.
Свойства
| Свойство | Тип | Описание |
|---|---|---|
Code | String | Код атрибута — устойчивое имя, по которому его опознают форма и выгрузка. |
Name | String | Каноническое наименование атрибута. |
IsRequired | Boolean | Обязателен ли атрибут для документов этого вида. |
Order | Int32 | Порядок атрибута в составе вида. |
DocumentKind | DocumentKind | Вид документа, в состав которого входит атрибут. |
ValueType | AttributeValueType | Тип значения: чем заполняется поле и в каких границах. Именованный и переиспользуемый — единственное, что виды документов делят между собой. |
CoreField | CardCoreField | Свойство ядра карты, которое заполняется значением этого атрибута. |