Библиотека GoIrbis¶
Введение. Установка. Примеры программ¶
Введение¶
Пакет irbis
представляет собой простую библиотеку для создания клиентских приложений для системы автоматизации библиотек ИРБИС64 на языке Go.
Пакет не содержит ссылок на внешний код и не требует irbis64_client.dll
. Успешно работает на 32-битных и 64-битных версиях операционных систем Windows и Linux.
Основные возможности пакета:
Поиск и расформатирование записей.
Создание и модификация записей, сохранение записей в базе данных на сервере.
Работа с поисковым словарем: просмотр терминов и постингов.
Административные функции: получение списка пользователей, его модификация, передача списка на сервер, создание и удаление баз данных.
Поддерживается компилятор Go версии 1.12 (как 32-битные, так и 64-битные версии) и сервер ИРБИС64, начиная с 2014. Более ранние версии инструментария Go будут выдавать ошибки.
Установка¶
Возможны два варианта установки пакета. Первый предусматривает копирование папки irbis
из репозитория в свой проект, после чего используется следующая ссылка на пакет
import "./irbis"
Второй вариант – предпочтительный. Пакет подключается следующим образом:
go get github.com/amironov73/GoIrbis/src/irbis
а в исходных текстах программы на него ссылаются так:
import "github.com/amironov73/GoIrbis/src/irbis"
В среде GoLand скачивание пакета автоматизировано, пользователю остается лишь согласиться с предложением загрузить и установить пакет:

Примеры программ¶
Ниже прилагается пример простой программы. Сначала находятся и загружаются 10 первых библиографических записей, в которых автором является А. С. Пушкин. Показано нахождение значения поля с заданным тегом и подполя с заданным кодом. Также показано расформатирование записи в формат brief
.
package main
import "../src/irbis"
func main () {
// Подключаемся к серверу
connection := irbis.NewConnection()
connection.Host = "localhost"
connection.Username = "librarian"
connection.Password = "secret"
if !connection.Connect() {
println("Не удалось подключиться")
return
}
// По выходу из функции произойдет отключение от сервера
defer connection.Disconnect()
// Общие сведения о сервере
println("Версия сервера:", connection.ServerVersion)
println("Интервал:", connection.Interval)
// Из INI-файла можно получить настройки клиента
ini := connection.Ini
dbnnamecat := ini.GetValue("Main", "DBNNAMECAT", "???")
println("DBNNAMECAT:", dbnnamecat)
// Находим записи с автором "Пушкин"
found := connection.Search("\"A=Пушкин$\"")
println("Найдено:", len(found))
// Ограничиваемся первыми 10 записями
found = found[:10]
for _, mfn := range found {
// Считываем запись с сервера
record := connection.ReadRecord(mfn)
// Получаем значение поля/подполя
title := record.FSM(200, 'a')
println("Заглавие:", title)
// Расформатируем запись на сервере
description := connection.FormatMfn("@brief", mfn)
println("Биб. описание:", description)
}
}
В следующей программе создается и отправляется на сервер 10 записей. Показано добавление в запись полей с подполями.
package main
import (
"../src/irbis"
"fmt"
"strconv"
)
func main() {
// Подключаемся к серверу
connection := irbis.NewConnection()
connection.Host = "localhost"
connection.Username = "librarian"
connection.Password = "secret"
if !connection.Connect() {
println("Не удалось подключиться")
return
}
// По выходу из функции произойдет отключение от сервера
defer connection.Disconnect()
// Записи будут помещаться в базу SANDBOX
connection.Database = "SANDBOX"
for i:=0; i < 10; i++ {
// Создаём запись в памяти клиента
record := irbis.NewMarcRecord()
// Наполняем ее полями: первый автор (поле с подполями),
record.Add(700, "").
Add('a', "Миронов").
Add('b', "А. В.").
Add('g', "Алексей Владимирович")
// заглавие (поле с подполями)
record.Add(200, "").
Add('a', "Работа с ИРБИС64: версия " +
strconv.Itoa(i) ).
Add('e', "руководство пользователя")
// выходные данные (поле с подполями)
record.Add(210, "").
Add('a', "Иркутск").
Add('c', "ИРНИТУ").
Add('d', "2019")
// рабочий лист (поле без подполей)
record.Add(920, "PAZK")
// Отсылаем запись на сервер.
// Обратно приходит запись,
// обработанная AUTOIN.GBL
connection.WriteRecord(record)
fmt.Println(record)
}
}
Структура Connection¶
Структура Connection
- “рабочая лошадка”. Она осуществляет связь с сервером и всю необходимую перепаковку данных из клиентского представления в сетевое.
Экземпляр клиента создается конструктором:
connection := irbis.NewConnection()
При создании клиента можно указать (некоторые) настройки:
client := irbis.NewConnection()
client.Host = "irbis.rsl.ru"
client.Port = 5555 // нестандартный порт!
client.Username = "ninja"
client.Password = "i_am_invisible"
Поле |
Тип |
Назначение |
Значение по умолчанию |
---|---|---|---|
Host |
string |
Адрес сервера |
"127.0.0.1" |
Port |
int |
Порт |
6666 |
Username |
string |
Имя (логин) пользователя |
пустая строка |
Password |
string |
Пароль пользователя |
пустая строка |
Database |
string |
Имя базы данных |
"IBIS" |
Workstation |
string |
Тип АРМа (см. таблицу ниже) |
"C" |
Типы АРМов
Обозначение |
Тип |
---|---|
"R" |
Читатель |
"C" |
Каталогизатор |
"M" |
Комплектатор |
"B" |
Книговыдача |
"K" |
Книгообеспеченность |
"A" |
Администратор |
Можно использовать мнемонические константы, определённые в файле Constants.go:
const ADMINISTRATOR = "A" // Адмнистратор
const CATALOGER = "C" // Каталогизатор
const ACQUSITIONS = "M" // Комплектатор
const READER = "R" // Читатель
const CIRCULATION = "B" // Книговыдача
const BOOKLAND = "B" // Книговыдача
const PROVISITON = "K" // Книгообеспеченность
Обратите внимание, что адрес сервера задается строкой, так что может принимать как значения вроде 192.168.1.1
, так и irbis.yourlib.com
.
Если какой-либо из вышеперечисленных параметров не задан явно, используется значение по умолчанию.
Подключение к серверу и отключение от него¶
Только что созданный клиент еще не подключен к серверу. Подключаться необходимо явно с помощью метода Connect
, при этом можно указать параметры подключения:
client := irbis.NewConnection()
client.Host = "myhost.com"
if !client.Connect() {
log.Fatal("Не удалось подключиться!")
}
Отключаться от сервера необходимо с помощью метода Disconnect
, желательно помещать вызов в блок defer сразу после подключения (чтобы не забыть):
client.Connect()
defer client.Disconnect()
При подключении клиент получает с сервера INI-файл с настройками, которые могут понадобиться в процессе работы:
client.Connect()
defer client.Disconnect()
// Получаем имя MNU-файла, хранящего перечень форматов
formatMenuName := client.Ini.GetValue("Main", "FmtMnu", "FMT31.MNU")
Полученный с сервера INI-файл хранится в поле Ini
.
Повторная попытка подключения с помощью того же экземпляра Connection
игнорируется. При необходимости можно создать другой экземпляр и подключиться с его помощью (если позволяют клиентские лицензии). Аналогично игнорируются повторные попытки отключения от сервера.
Проверить статус “клиент подключен или нет” можно с помощью поля Connected
:
if !client.Connected {
// В настоящее время мы не подключены к серверу
}
Вместо индивидуального задания каждого из полей Host
, Port
, Username
, Password
и Database
, можно использовать метод ParseConnectionString
:
client.ParseConnectionString("host=192.168.1.4;port=5555;" +
"username=itsme;password=secret;")
client.Connect()
Многопоточность¶
Клиент написан в наивном однопоточном стиле, поэтому не поддерживает одновременный вызов методов из разных потоков.
Для одновременной отсылки на сервер нескольких команд необходимо создать соответствующее количество экземпляров подключений (если подобное позволяет лицензия сервера).
Подтверждение подключения¶
GoIrbis
не посылает самостоятельно на сервер подтверждений того, что клиент все еще подключен. Этим должно заниматься приложение, например, по таймеру.
Подтверждение посылается серверу методом NoOp
:
client.NoOp()
Чтение записей с сервера¶
mfn := 123
record := client.ReadRecord(mfn)
Можно прочитать несколько записей сразу:
mfns := []int{12, 34, 56}
records := client.ReadRecords(mfns)
Можно прочитать определенную версию записи
mfn := 123
version := 3
record := client.ReadRecordVersion(mfn, version)
Сохранение записи на сервере¶
// Любым образом создаём в памяти клиента
// или получаем с сервера запись.
record := client.ReadRecord(123)
// Производим какие-то манипуляции над записью
record.Add(999, "123")
// Отсылаем запись на сервер
newMaxMfn := client.WriteRecord(record)
println("New Max MFN:", newMaxMfn)
Сохранение нескольких записей (возможно, из разных баз данных):
records := make([]MarcRecord,10)
...
if !client.WriteRecords(records) {
log.Fatal("Failure!")
}
Удаление записи на сервере¶
mfn := 123
client.DeleteRecord(mfn)
Восстановление записи:
mfn := 123
record := client.UndeleteRecord(mfn)
Поиск записей¶
found := client.Search(`"A=ПУШКИН$"`)
println("Найдено записей:", len(found))
Обратите внимание, что поисковый запрос заключен в дополнительные кавычки. Эти кавычки явлются элементом синтаксиса поисковых запросов ИРБИС64, и лучше их не опускать.
Вышеприведённый запрос вернёт не более 32 тыс. найденных записей. Сервер ИРБИС64 за одно обращение к нему может выдать не более 32 тыс. записей. Чтобы получить все записи, используйте метод SearchAll
(см. ниже), он выполнит столько обращений к серверу, сколько нужно.
Поиск с одновременной загрузкой записей:
records := client.SearchRead(`"A=ПУШКИН$"`, 50)
println("Найдено записей:", len(records))
Поиск и загрузка единственной записи:
record := client.SearchSingleRecord(`"I=65.304.13-772296"`)
if record == nil {
println("Не нашли!")
}
Количество записей, соответствующих поисковому выражению:
expression := `"A=ПУШКИН$"`
count := client.SearchCount(expression)
Расширенный поиск: можно задать не только количество возвращаемых записей, но и расформатировать их.
parameters := NewSearchParameters()
parameters.Expression = `"A=ПУШКИН$"`
parameters.Format = BRIEF_FORMAT
parameters.NumberOfRecords = 5
found := client.SearchEx(parameters)
if len(found) == 0 {
println("Не нашли")
} else {
// в found находится слайс структур FoundLine
first := found[0]
fmt.Println("MFN:", first.Mfn, "DESCRIPTION:", first.Description)
}
Поиск всех записей (даже если их окажется больше 32 тыс.):
found := client.SearchAll(`"A=ПУШКИН$"`)
println("Найдено записей:", len(count))
Подобные запросы следует использовать с осторожностью, т. к. они, во-первых, создают повышенную нагрузку на сервер, и во-вторых, потребляют очень много памяти на клиенте. Некоторые запросы (например, “I=$”) могут вернуть все записи в базе данных, а их там может быть десятки миллионов.
Форматирование записей¶
mfn := 123
format := BRIEF_FORMAT
text := client.FormatRecord(format, mfn)
println("Результат форматирования:", text)
При необходимости можно использовать в формате все символы UNICODE.
Форматирование нескольких записей:
mfns := []int {12, 34, 56}
format := BRIEF_FORMAT
lines := client.FormatRecords(format, mfns)
fmt.Println("Результаты:", lines)
Печать таблиц¶
table := new(TableDefinition)
table.Database = "IBIS"
table.Table = "@tabf1w"
table.SearchQuery = `"T=A$"`
text := client.PrintTable(table)
Работа с контекстом¶
Функция |
Назначение |
---|---|
ListFiles |
Получение списка файлов на сервере |
ReadIniFile |
Получение INI-файла с сервера |
ReadMenuFile |
Получение MNU-файла с сервера |
ReadSearchScenario |
Загрузка сценариев поиска с сервера |
ReadTextFile |
Получение текстового файла с сервера |
ReadTextLines |
Получение текстового файла в виде массива строк |
ReadTreeFile |
Получение TRE-файла с сервера |
UpdateIniFile |
Обновление строк серверного INI-файла |
WriteTextFile |
Сохранение текстового файла на сервере |
Работа с мастер-файлом¶
Функция |
Назначение |
---|---|
ReadRawRecord |
Чтение указанной записи в “сыром” виде |
WriteRawRecord |
Сохранение на сервере “сырой” записи |
Работа со словарем¶
Функция |
Назначение |
---|---|
GetRecordPostings |
Получение слайса постингов для указанной записи |
ListTerms |
Получение слайса терминов с указанным префиксом |
ReadPostings |
Чтение постингов поискового словаря |
ReadTerms |
Чтение терминов поискового словаря |
ReadTermsEx |
Расширенное чтение терминов |
Информационные функции¶
Функция |
Назначение |
---|---|
GetDatabaseInfo |
Получение информации о базе данных |
GetMaxMfn |
Получение максимального MFN для указанной базы данных |
GetServerVersion |
Получение версии сервера |
ListDatabases |
Получение списка баз данных с сервера |
ToConnectionString |
Получение строки подключения |
Администраторские функции¶
Нижеперечисленные записи доступны лишь из АРМ “Администратор”, поэтому подключаться к серверу необходимо так:
client := irbis.NewConnection()
client.Username = "librarian"
client.Password = "secret"
client.Workstation = ADMINISTRATOR
if !client.Connect() {
log.Fatal("Не удалось подключиться")
}
Функция |
Назначение |
---|---|
ActualizeDatabase |
Актуализация базы данных |
ActualizeRecord |
Актуализация записи |
CreateDatabase |
Создание базы данных |
CreateDictionary |
Создание словаря |
DeleteDatabase |
Удаление базы данных |
DeleteFile |
Удаление файла на сервере |
GetServerStat |
Получение статистики с сервера |
GetUserList |
Получение списка пользователей с сервера |
ListProcesses |
Получение списка серверных процессов |
ReloadDictionary |
Пересоздание словаря |
ReloadMasterFile |
Пересоздание мастер-файла |
RestartServer |
Перезапуск сервера |
TruncateDatabase |
Опустошение базы данных |
UnlockDatabase |
Разблокирование базы данных |
UnlockRecords |
Разблокирование записей |
UpdateUserList |
Обновление списка пользователей на сервере |
Глобальная корректировка¶
settings := new(GblSettings)
settings.Database = "IBIS"
settings.MfnList = []int{1, 2, 3}
settings.statements = []GblStatement {
GblStatement{ADD_FIELD, "3000", "XXXXXXXXX", "'Hello'"}
}
result := connection.GlobalCorrection(settings)
for line := range result {
println(line)
}
Расширение функциональности¶
ExecuteAnyCommand(string $command, array $params) – выполнение произвольной команды с параметрами в кодировке ANSI.
Структуры MarcRecord, RecordField и SubField¶
MarcRecord¶
Каждый экземпляр MarcRecord
соответствует одной записи в базе данных ИРБИС. Он содержит следующие поля:
Поле |
Тип |
Назначение |
---|---|---|
Database |
string |
Имя базы данных, из которой загружена данная запись. Для вновь созданных записей пустая строка. |
Mfn |
int |
Номер записи в мастер-файле. Для вновь созданных записей 0. |
Status |
int |
Статус записи: логически удалена, отсутствует (см. ниже). |
Version |
int |
Номер версии записи. |
Fields |
[]*RecordField |
Слайс указателей на поля записи |
Статус записи: набор флагов (определены как константы в Constants.go
)
Имя |
Число |
Значение |
---|---|---|
LOGICALLY_DELETED |
1 |
Логически удалена (может быть восстановлена). |
PHYSICALLY_DELETED |
2 |
Физически удалена (не может быть восстановлена). |
ABSENT |
4 |
Отсутствует. |
NON_ACTUALIZED |
8 |
Не актуализирована. |
NEW_RECORD |
16 |
Первый экземпляр записи (флаг фактически не используется). |
LAST |
32 |
Последняя версия записи. |
LOCKED |
64 |
Запись заблокирована на ввод. |
AUTOIN_ERROR |
128 |
Ошибка в Autoin.gbl. |
FULLTEXT_NOT_ACTUALIZED |
256 |
Полный текст не актуализирован. |
func NewMarcRecord() *MarcRecord – конструктор, создаёт новый экземпляр записи в памяти клиента.
func (record *MarcRecord) Add(tag int, value string) *RecordField – добавляет в конец записи поле с указанными меткой и значением. Возвращает добавленное поле, поэтому может использоваться для “цепочечных” вызовов методов, добавляющих подполя в это поле (см. пример ниже).
func (record *MarcRecord) Clear() – очищает запись (удаляет все поля).
func (record *MarcRecord) Clone() *MarcRecord – клонирует запись со всеми полями.
func (record *MarcRecord) Decode(lines []string) – декодирование записи из протокольного представления.
func (record *MarcRecord) Encode(delimiter string) string – кодирование записи в протокольное представление.
func (record *MarcRecord) FM(tag int) string – получение значения поля с указанной меткой. Если поле не найдено, возвращается пустая строка.
func (record *MarcRecord) FSM(tag int, code rune) string – получение значения подполя с указанными меткой и кодом. Если подполе не найдено, возвращается пустая строка.
func (record *MarcRecord) FMA(tag int) []string – получение слайса со значениями полей с указанной меткой. Если поля не найдены, возвращается слайс нулевой длины.
func (record *MarcRecord) FSMA(tag int, code rune) []string – получение слайса со значениями подполей с указанными меткой и кодом. Если подполя не найдены, возвращается слайс нулевой длины.
func (record *MarcRecord) GetField(tag, occurrence int) *RecordField – получение указанного повторения поля с указанной меткой. Если поле не найдено, возвращает nil
.
func (record *MarcRecord) GetFields(tag int) []*RecordField – получение слайса полей с указанной меткой. Если поля не найдены, возвращается пустой массив.
func (record *MarcRecord) GetFirstField(tag int) *RecordField – получение первого повторения поля с указанной меткой. Если поле не найдено, возвращается nil
.
func (record *MarcRecord) HaveField(tag int) bool – выясняет, есть ли в записи поле с указанной меткой.
func (record *MarcRecord) InsertAt(i int, tag int, value string) *RecordField – вставляет поле в указанную позицию.
func (record *MarcRecord) IsDeleted() bool – проверка статуса, не удалена ли запись.
func (record *MarcRecord) RemoveAt(i int) *MarcRecord – удаляет поле в указанной позиции.
func (record *MarcRecord) RemoveField(tag int) *MarcRecord – удаляет все поля с указанной меткой.
func (record *MarcRecord) Reset() – сброс состояния записи, отвязка её от базы данных. Поля данных остаются при этом нетронутыми.
func (record *MarcRecord) SetField(tag int, value string) *MarcRecord – устанавливает значение первого повторения поля с указанной меткой. Если такого поля нет, оно создаётся.
func (record *MarcRecord) SetSubfield(tag int, code rune, value string) *MarcRecord – устанавливает значение подполя первого повторения поля с указанной меткой. Если необходимые поля или подполе отсутствуют, они создаются.
func (record *MarcRecord) String() string – выдаёт строковое представление записи.
record := NewMarcRecord()
record.Add(700, "").
Add('a', "Миронов").
Add('b', "А. В.").
Add('g', "Алексей Владимирович")
record.Add(200, "").
Add('a', "Заглавие книги").
Add('e', "подзаголовочные сведения")
RecordField¶
Поле |
Тип |
Назначение |
---|---|---|
Tag |
int |
Метка поля. |
Value |
string |
Значение поля до первого разделителя. |
Subfields |
[]*SubField |
Слайс указателей на подполя. |
func NewRecordField(tag int, value string) *RecordField – конструктор поля, создаёт поле с указанными меткой и значением.
func (field *RecordField) Add(code rune, value string) *RecordField – добавляет подполе с указанными кодом и значением к полю. Возвращает field
, так что может испольоваться для “цепочечных” вызовов.
func (field *RecordField) AddNonEmpty(code rune, value string) *RecordField – добавляет подполе, при условии, что его значение не пустое.
func (field *RecordField) Clear() *RecordField – очищает поле (удаляет значение и все подполя). Метка поля остаётся нетронутой. Возвращает field
.
func (field *RecordField) Clone() *RecordField – клонирует поле со всеми подполями.
func (field *RecordField) DecodeBody(body string) – декодирует только текст поля и подполей (без метки).
func (field *RecordField) Decode(text string) – декодирует поле из протокольного представления (метку, значение и подполя).
func (field *RecordField) Encode() string – кодирует поле в протокольное представление (метку, значение и подполя).
func (field *RecordField) EncodeBody() string – кодирует поле в протокольное представление (только значение и подполя).
func (field *RecordField) GetEmbeddedFields() []*RecordField – получает слайс встроенных полей из данного поля.
func (field *RecordField) GetFirstSubField(code rune) *SubField – возвращает первое вхождение подполя с указанным кодом или `nil
.
func (field *RecordField) GetFirstSubFieldValue(code rune) string – возвращает значение первого вхождения подполя с указанным кодом или пустую строку.
func (field *RecordField) GetValueOrFirstSubField() string – выдаёт значение для ^*.
func (field *RecordField) HaveSubField(code rune) bool – выясняет, есть ли подполе с указанным кодом.
func (field *RecordField) InsertAt(i int, code rune, value string) – вставляет подполе в указанную позицию.
func (field *RecordField) RemoveAt(i int) – удаляет подполе в указанной позиции.
func (field *RecordField) RemoveSubfield(code rune) –удаляет все подполя с указанным кодом.
func (field *RecordField) ReplaceSubfield(code rune, oldValue, newValue string) *RecordField – заменяет значение подполя.
func (field *RecordField) SetSubfield(code rune, value string) *RecordField – устанавливает значение первого повторения подполя с указанным кодом. Если value==nil, подполе удаляется.
func (field *RecordField) String() string – возвращает строковое представление данного поля.
func (field *RecordField) Verify() bool – проверяет, правильно ли сформировано поле (и все его подполя).
field := NewRecordField(700, "")
field.Add('a', "Миронов").
Add('b', "А. В.").
Add('g', "Алексей Владимирович")
SubField¶
Поле|Тип|Назначение —-|---|———- Code | rune | Код подполя Value | string | Значение подполя
func NewSubField(code rune, value string) *SubField – конструктор подполя, создаёт подполе с указанными кодом и значением.
func (subfield *SubField) Clone() *SubField – клонирует подполе.
func (subfield *SubField) Decode(text string) – декодирует подполе из протокольного представления.
func (subfield *SubField) Encode() string – кодирует подполе в протокольное представление.
func (subfield *SubField) String() string – выдаёт текстовое представление подполя.
func (subfield *SubField) Verify() bool – проверяет, правильно ли сформировано подполе.
subfield := NewSubField('a', "Подполе A")
fmt.Println(subfield.String())
RawRecord¶
Запись с нераскодированными полями/подполями.
Поле|Тип|Назначение
———|------------|———-
Database | string | Имя базы данных, из которой загружена данная запись. Для вновь созданных записей пустая строка.
Mfn | int | Номер записи в мастер-файле. Для вновь созданных записей 0.
Status | int | Статус записи: логически удалена, отсутствует (аналогично MarcRecord
).
Version | int | Номер версии записи.
Fields | []string | Слайс полей записи в “сыром” виде.
func NewRawRecord() *RawRecord – конструктор, создаёт новый экземпляр записи в памяти клиента.
func (record *RawRecord) Decode(lines []string) – декодирует запись из протокольного представления.
func (record *RawRecord) Encode(delimiter string) string – кодирует запись в протокольное представление.
func (record *RawRecord) IsDeleted() bool – проверка статуса, не удалена ли запись.
func (record *RawRecord) Reset() – сброс состояния записи, отвязка её от базы данных. Поля данных остаются при этом нетронутыми.
func (record *RawRecord) String() string – выдаёт строковое представление записи.
Прочие (вспомогательные) структуры и функции¶
FoundLine¶
Строка найденной записи, может содержать результат расформатирования найденной записи.
IniFile, IniSection и IniLine¶
INI-файл, состоящий из секций (IniSection
), которые в свою очередь состоят из строк вида “ключ=значение” (IniLine
).
TreeFile и TreeLine¶
TRE-файл – древовидный справочник.
DatabaseInfo¶
Информация о базе данных ИРБИС.
ProcessInfo¶
Информация о запущенном на ИРБИС-сервере процессе.
VersionInfo¶
Информация о версии ИРБИС-сервера.
ClientInfo¶
Информация о клиенте, подключенном к серверу ИРБИС (не обязательно о текущем).
UserInfo¶
Информация о зарегистрированном пользователе системы (по данным client_m.mnu
). Состоит из полей:
Поле |
Назначение |
---|---|
Number |
Номер по порядку в списке. |
Name |
Логин пользователя. |
Password |
Пароль. |
Cataloger |
Доступность АРМ “Каталогизатор”. |
Reader |
Доступность АРМ “Читатель”. |
Circulation |
Доступность АРМ “Книговыдача”. |
Acquisitions |
Доступность АРМ “Комплектатор”. |
Provision |
Доступность АРМ “Книгообеспеченность”. |
Administrator |
Доступность АРМ “Администратор”. |
Если строка доступа к АРМ пустая, то доступ к соответствующему АРМ запрещен.
users := client.GetUserList()
newUser := UserInfo{Name: "Tyler Durden",
Password: "Fight Club",
Cataloger: "INI\\TylerC.ini"}
users = append(users, newUser)
client.UpdateUserList(users)
TableDefinition¶
Данные для метода printTable.
ServerStat¶
Статистика работы ИРБИС-сервера.
PostingParameters¶
Параметры для запроса постингов с сервера.
TermParameters¶
Параметры для запроса терминов с сервера.
TermInfo¶
Информация о термине поискового словаря.
TermPosting¶
Постинг термина в поисковом индексе.
SearchParameters¶
Параметры для поиска записей (метод SearchEx).
SearchScenario¶
Сценарий поиска.
ParFile¶
PAR-файл – содержит пути к файлам базы данных ИРБИС.
OptFile и OptLine¶
OPT-файл – файл оптимизации рабочих листов и форматов показа.
GblStatement и GblSettings¶
Поддержка глобальной корректировки базы данных.
ClientQuery¶
Клиентский запрос. Инфраструктура.
ServerResponse¶
Ответ сервера. Инфраструктура.