Немного картинок. Для фиксации посещения нажимаем "лапку" и выбираем вид посещения:
Далее, если у нас более одного посещения вводим нужное кол-во и знак равно:
P.s.: Если при нажатии на "лапку" появляется меню, а не окно, то отредактируйте файл IRBISB.INI в папке IRBIS64 на сервере:
VISITMNU=visit.wss и положите visit.wss в папку RDR.
Видим, что у нас поставилось 145 посещений:
Так выглядит повторение 40-го поля:
Для того, чтобы это отрабатывалось нужно выполнить ряд действий.
1) Отредактировать файл autoin_light.gbl в папке RDR, добавив в конец файла строки:
//
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
Добавлено для массовых посещений -- начало --
IF
if v40^c:'=' then '1' else '0' fi
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
CHA
40
L
'^C'
'^Q'
CHA
40^Q
L
'='
'^C'
FI
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
CHA
40^C
L
'(Посещение)'
&uf('+7W1#',&uf('Av40#',&uf('+N40'))),'(',if g1^Q<>'' then g1^Q else '1' fi,')'
//
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
Добавлено для массовых посещений -- конец --
После этого будет отрабатываться то, о чём я писал выше.
Но нам этого недостаточно.
2) Нужно скопировать файл str.dll в папку IRBIS64 и на сервере и на клиенте. Файл содержит функцию для размножения повторений поля, может есть иной вариант средствами Ирбиса, но у нас так.
3) Редактируем файл rdr.fst, предварительно сделав его резевную копию.
Ищем строчку с
VS= и редактируете её, согласно вашему коду. ( скорее всего он отличается в новых версиях, где есть понятие сеанс обслуживания читателя, но мы его не используем). Код должен быть одной строкой (!), я здесь отформатировал для наглядности. Жирным шрифтом выделена реализация функциональности множественного посещения.
60 0 &uf('+7W1#'),&uf('+7W2#'),
(if p(v40) then
if v40^a<>'' then
if v40^d<>'' then &uf('+7U1#',v40^d,|/|v40^v) fi,
if v40^f.1<>'*' then &uf('+7U1#',v40^f,|/|v40^v) fi,
if v40^l<>'' then &uf('+7U1#',v40^l,|/|v40^v) fi
else
&uf('+7U2#',&uf('+8str,Repeat,'v40^d,|/|v40^v/','if p(v40^q) then v40^q else '1' fi))
fi
fi),&uf('+7G1'),&uf('+7U1#',(if p(g2) then g2/ else break fi)),&uf('+7T1'),
(|VS=|g1,/|VSS=|g1.6,g1*8/),&uf('+7W3#',&uf('30')),&uf('+7W4#'),
(if g1<>'' then if &uf('Ag3#1')=g1.4 then &uf('+7W4#1'),break fi fi),/if g4='' then 'PRG=НЕТ' else 'PRG=ДА' fi
4) В папке RDR редактируем соответствующие STF-файлы, описывающие формирование статистических форм (посещений) аналогично пункту выше.
Редактировано 2 раз. Последний раз 16.03.2019 18:39 пользователем Chaser.