Атрибут документа карты
Заполнение атрибута в документе карты: значения, происхождение, кем и когда заполнено.
1. Назначение
Здесь живёт факт заполнения — то, что не относится ни к описанию, ни к самому значению: кем и когда заполнено, распознано или введено вручную. В варианте без этой сущности такие сведения пришлось бы вешать либо на значение, либо на документ целиком, теряя привязку к полю.
Значение — поле этой сущности, а не отдельная сущность: собственных реквизитов у него нет. Уверенность распознавания, кадр и область остались в пакете ввода, потому что это данные о распознавании, а не о результате.
2. Значения
Значения хранятся списком: тип может допускать несколько. Материалы основы, украшения и физико-механические повреждения отмечаются сразу несколькими клетками.
Цена такого хранения — запрос «во всех картах, где среди материалов есть картон» становится поиском по содержимому списка, а не соединением таблиц. Это приемлемо: поиск за пределами ядра карты решено не поддерживать.
Значения хранятся текстом, а правило их разбора известно из типа значения атрибута. Для выбора из перечисления и справочника хранятся коды вариантов, а не подписи: подпись зависит от бланка, код — нет.
Свойства
| Свойство | Тип | Описание |
|---|---|---|
Values | IReadOnlyList<String> | Значения в текстовом представлении; для выбора — коды вариантов. Пусто — не заполнено. |
FilledByUserId | Guid | Пользователь, заполнивший значение. |
FilledAt | DateTime | Момент заполнения. |
Document | CardDocument | Документ, которому принадлежит заполненный атрибут. |
KindAttribute | DocumentKindAttribute | Атрибут вида документа, который заполнен. |
Origin | ValueOrigin | Происхождение значения: распознано или введено пользователем. |