Классы Record, Field и SubField

Классы Record, Field и SubField предназначены для создания и манипуляции записями, полями и подполями соответственно в клиентском представлении. Они также отвечают за перекодирование записей из серверного представления в клиентское и обратно.

Record

Каждый экземпляр класса Record соответствует одной записи в базе данных ИРБИС и имеет следующие свойства:

  • Database – имя базы данных, из которой загружена данная запись. Для вновь созданных записей null. После отправки записи на сервер поле Database выставляется автоматически.

  • Mfn – порядковый номер записи в базе данных. Для вновь созданных записей 0. После отправки записи на сервер поле Mfn выставляется автоматически. Диапазон значений для MFN: от 1 до 4294967295. Обратите внимание, при реорганизации базы данных MFN записи может измениться!

  • Status – состояние записи: удалена, отсутствует и т. д. Для вновь созданных записей 0. После отправки записи на сервер поле Status выставляется автоматически. Обратите внимание, при реорганизации базе данных логически удалённые записи могут пропасть из неё.

  • Version – номер версии записи. Для вновь созданных записей 0. При каждой отправке записи на сервер поле version выставляется автоматически. Поле Version используется сервером ИРБИС64 для отслеживания конфликтов одновременного обновления записей несколькими клиентами. Обратите внимание, при реорганизации базе данных её версия может измениться!

  • Fields – запись содержит произвольное количество полей. Технически их может быть 0, но на практике это означает сбой системы.

При отправке записи на сервер ИРБИС64 тот отсылает обратно клиенту эту же запись со всеми модификациями, которые были проведены над ней сценарием autoin.gbl. При этом могут измениться любые поля записи, а также её статус и версия.

Атрибуты в виде таблицы:

Поле

Тип

Назначение

Database

string

Имя базы данных, из которой загружена данная запись.

Mfn

int

Номер записи в мастер-файле.

Status

int

Статус записи: логически удалена, отсутствует (см. ниже).

Version

int

Номер версии записи.

Fields

List<>

Список полей записи.

Статус записи: набор флагов

Имя

Число

Значение

LogicallyDeleted

1

Логически удалена (может быть восстановлена)

PhysicallyDeleted

2

Физически удалена (не может быть восстановлена)

Absent

4

Отсутствует

NonActualized

8

Не актуализирована

NewRecord

16

Первый экземпляр записи

Last

32

Последняя версия записи

Locked

64

Запись заблокирована на ввод

AutoinError

128

Ошибка в Autoin.gbl.

FullTextNotActualized

256

Полный текст не актуализирован.

Класс Record содержит следующие методы:

TO BE DONE

Field

Поле записи характеризуется числовой меткой в диапазоне от 1 до 2147483647 (на практике встречаются коды от 1 до 9999) и содержит значение до первого разделителя (опционально) и произвольное количество подполей (см. класс SubField).

Стандартом MARC у полей предусмотрены также два односимвольных индикатора, но ИРБИС вслед за ISIS их не поддерживает.

Кроме того, стандарт MARC предусматривает т. наз. “фиксированные” поля с метками от 1 до 9 включительно, которые не должны содержать ни индикаторов, ни подполей, но имеют строго фиксированную структуру. ИРБИС такие поля обрабатывает особым образом только в ситуации импорта/экспорта в формат ISO2709, в остальном же он их трактует точно так же, как и прочие поля (которые стандарт называет полями переменной длины).

Стандартом MARC предусмотрены метки в диапазоне от 1 до 999, все прочие являются самодеятельностью ИРБИС. Поля с нестандартными метками не могут быть выгружены в формат ISO2709.

Хотя технически поле может содержать одновременно и значение до первого разделителя, и подполя, но стандартом такая ситуация не предусмотрена, на практике она означает сбой. В стандарте MARC поле содержит либо значение либо подполя.

Начиная с версии 2018, ИРБИС64 резервирует метку 2147483647 для поля GUID - уникального идентификатора записи.

Порядок подполей в поле важен, т. к. на этот порядок завязана обработка т. наз. “вложенных полей”.

Стандартом MARC предусмотрено, что внутри поля могут повторяться подполя с одинаковым кодом, однако, ИРБИС вслед за ISIS очень ограниченно поддерживает эту ситуацию (см. форматный выход &umarci).

Класс Field имеет следующие атрибуты:

Класс Field содержит следующие методы:

TO BE DONE

SubField

Подполе характеризуется односимвольным кодом (как правило алфавитно-цифровым A-Z, 0-9, но бывают подполя с экзотическими кодами вроде !, ( и др.) и содержит строковое значение (технически может быть пустым, но на практике пустое значение означает сбой).

Коды подполей не чувствительны к регистру. Как правило, ИРБИС приводит коды к верхнему регистру, но это не точно. :)

ИРБИС трактует код подполя ‘*’ как “значение до первого разделителя либо значение первого по порядку подполя” (смотря по тому, что присутствует в записи).

Поле

Тип

Назначение

code

string

Код подполя (односимвольный!)

value

string

Значение подполя

Класс SubField содержит следующие методы:

TO BE DONE