Справочники заказчика
Что передал заказчик для полей информационной карты, значения которых берутся из справочника, а не вписываются произвольным текстом.
1. Зачем это
Бумажный бланк заполняется от руки, и написать в поле можно что угодно. Но часть полей — это отметка в клетке с напечатанной подписью: «Кожа», «Пергамент», «Ткань». Такое значение переносится в электронную карту не как текст, а как значение справочника: у него есть код, и в АБИС уходит именно код.
Заказчик передал справочники в том виде, в каком они ведутся в его системе. Здесь описано,
что именно передано и к каким полям относится; сами файлы лежат в Vocabularies/Source/.
Вид значения атрибута «выбор из справочника» описан в AttributeValueTypeSpec; критерий «справочник или перечисление» — там же.
2. Формат файлов
Файлы .mnu — меню АБИС ИРБИС: обычный текст в кодировке cp1251, строки идут парами
(код, затем значение), последняя строка — терминатор *****.
a
Кожа
b
Пергамент
*****
Код — часть данных, а не порядковый номер. Это буква подполя в записи ИРБИС: a, b,
c, у исполнителей — инициалы (КИН), у экспертов — кириллические буквы (Х, К, Б),
у языков — трёхбуквенный код (rus, jpn). Коды переиспользуются между справочниками
и означают в каждом своё, поэтому уникальны только внутри своего справочника.
Значение 0 («Ничего», «Нет тиснения», «Отсутствует») — не пустота, а явное «ничего
не отмечено»: сотрудник посмотрел и зафиксировал отсутствие. От незаполненного поля
оно отличается так же, как «Б.и.» отличается от пустого издательства.
3. Что передано
Девятнадцать справочников. Все относятся к форме ИК на издание: восемнадцать — к листу 2 «Сохранность», один (язык издания) — к листу 1.
| Файл | Справочник | Поле бланка | Значений | «Ничего» |
|---|---|---|---|---|
sost1.mnu |
Состояние переплёта | Переплёт → Состояние | 5 | нет |
sostav.mnu |
Состав переплёта | Переплёт → Состав | 3 | 0 Ничего |
matpok.mnu |
Материалы покрытия | Переплёт → Материалы покрытия | 6 | 0 Отсутствует |
matosn.mnu |
Материалы основы | Переплёт → Материалы основы | 5 | 0 Без основы |
dekor1.mnu |
Тиснение | Переплёт → Декор → Тиснение | 4 | 0 Нет тиснения |
dekor2.mnu |
Украшения | Переплёт → Декор → Украшения | 5 | 0 Нет украшений |
dekor3.mnu |
Обрез | Переплёт → Декор → Обрез | 6 | 0 Нет обреза |
fismat1.mnu |
Физико-механические повреждения переплёта | Переплёт → Повреждения | 11 | 0 Ничего |
sost2.mnu |
Состояние блока | Блок → Состояние | 4 | 0 Ничего |
tet.mnu |
Состояние тетрадей | Блок → Тетради | 4 | 0 Ничего |
list.mnu |
Состояние листов | Блок → Листы | 3 | 0 Ничего |
fismat2.mnu |
Физико-механические повреждения блока | Блок → Повреждения | 10 | 0 Ничего |
mib.mnu |
Микробиологические повреждения | Повреждения → Биологические | 5 | 0 Нет |
enm.mnu |
Энтомологические повреждения | Повреждения → Биологические | 5 | 0 Нет |
stpov.mnu |
Степень повреждения | Степень повреждения (шесть мест на листе) | 4 | 0 Ничего |
exp.mnu |
Роль эксперта | Эксперт → роль | 3 | нет |
isp.mnu |
Исполнители | Мониторинг → Исполнитель; Эксперт → ФИО | 16 | нет |
jz.mnu |
Языки | лист 1 → Язык издания | 589 | нет |
dekor3.mnu перечислен как «Обрез», хотя часть его значений («Золото», «Тиснение»)
совпадает по словам с тиснением переплёта — коды у них разные, и это разные справочники.
4. Как это ложится в модель
Каждый файл становится типом значения (AttributeValueTypeSpec) вида «выбор из перечисления»: имя типа — из названия справочника, значения — парами «код — значение» в ограничениях. Отдельного хранилища значений не заводим — почему именно так и когда это изменится, сказано там же.
Поле бланка ссылается на тип не напрямую, а через атрибут вида документа: тип
выбирают, описывая атрибут. Поэтому один тип обслуживает столько полей, сколько нужно:
stpov — шесть мест на листе сохранности, isp — и мониторинг, и таблицу экспертов.
Заведение справочников — наполнение данными, а не правка кода. Ни новых сущностей, ни миграций: типы значений и виды документов заводятся до начала оцифровки, вместе с формами.
Исключение одно — jz.mnu: 589 языков в ограничениях типа вести нельзя. Это первый
кандидат на вид «выбор из справочника», и хранилище значений появится тогда же,
когда за него возьмёмся.
5. Пользователи БАН
Отдельный файл Пользователи БАН.docx — не справочник значений поля. Это соответствие
учётной записи АБИС месту хранения и фонду: одиннадцать записей вида
RADZSZ → ОФО, Радзивиллы Славянский фонд, BINKS → БИН, фонд по консервации и сохранности.
Он отвечает на вопрос, откуда берётся место хранения — обязательный реквизит карты, которого на бланке нет и который подставляется из профиля пользователя. То есть это материал сразу к двум вещам: к справочнику мест хранения и к настройке профиля.
6. Что видно по материалам
Справочники частично дублируют друг друга. fismat1 и fismat2 различаются одним
значением («Оторван» есть у переплёта, у блока нет); sost1 и sost2 — тем же способом.
Заказчик ведёт их как разные меню, потому что в его системе меню привязано к полю.
Соединять их в один справочник с ограничением по полю — решение, которое надо принимать
осознанно: список значений тогда придётся фильтровать на каждом поле.
Бланк и справочник расходятся. В fismat1 есть «Общие загрязнения», на бланке
инв. 74870 такой клетки нет. Бланки разных редакций печатались с разным набором клеток,
а справочник один и накопительный. Значит распознавание опирается на состав формы,
а не на состав справочника: справочник говорит, какие значения бывают, форма — какие
клетки есть на этом листе.
Один справочник — много полей. stpov используется на листе 2 шесть раз, isp —
и в мониторинге, и в таблице экспертов. Это ровно тот случай, ради которого справочник
отделён от перечисления.
Исполнители — живые данные. isp.mnu состоит из фамилий сотрудников. Состав меняется,
это персональные данные, и в отличие от материалов покрытия такой справочник кто-то ведёт
постоянно.
Опечатки заказчика сохранены. В mib.mnu — «микробиолиогических», в sost1.mnu —
двойной пробел в «Не поврежден». Правим при загрузке или оставляем как есть — вопрос
к заказчику; молча менять переданные данные не следует.
7. Принятые решения
Близкие справочники держим раздельно, как передано. fismat1 и fismat2
различаются одним значением, sost1 и sost2 — тем же способом. Соединять их
в один набор и отбирать часть значений на каждом поле означало бы завести механизм
фильтрации, которого в модели нет, ради экономии двух записей. Тип значения стоит
дёшево — пусть их будет два.
Значение «Ничего» — обычное значение набора. 0 «Нет тиснения», «Отсутствует»,
«Без основы» хранится наравне с остальными, отдельного признака «это пустышка» нет.
Поле с «Нет тиснения» заполнено во всех смыслах: ни проверка обязательности, ни
выгрузка, ни показ его не различают, а признак, который нигде не читается, заводить
незачем. Пустое поле по-прежнему означает «значение не указано».
8. Открытые вопросы
| № | Вопрос |
|---|---|
| OQ-VC-1 | Справочники переданы к форме ИК на издание. Действуют ли те же значения для рукописи и графики, или для них будут свои файлы |
| OQ-VC-2 | Обязан ли Сервис сохранять коды ИРБИС при выгрузке в АБИС, или достаточно совпадения значений |
| OQ-VC-4 | Кто ведёт справочники после запуска: сопровождение, экран Сервиса или синхронизация из ИРБИС. Вопрос внутренний, не к заказчику: ему безразличен способ ведения |
| OQ-VC-5 | Исправлять ли опечатки в переданных значениях |
| OQ-VC-6 | Место хранения: справочник строится по файлу пользователей, или заказчик передаст его отдельно |
Структурные связи
Использует
- Доменная сущность Поле формы
- Доменная сущность Тип значения
Используется
- Документ Разбор образца выгрузки в АБИС
- Экран Очередь обработки
Связанные артефакты
Документы
- Доменная сущность Тип значения