Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Статформы по повторяющимся полям
Пользователь: littlewindows (IP-адрес скрыт)
Дата: 02, December, 2010 14:04

Здравствуйте, очень нужна помощь! При разработке статформ столкнулся с пока не решаемой проблемой. Ситуация следующая: нам нужно получить распределение книговыдач по категориям читателей. По умолчанию такая статформа в ИРБИСЕ, конечно, имеется, однако, в нашем случае есть один нюанс: поля категорий (v50 и v67) множественные, то есть могут содержать повторения, в случае же статформы по умолчанию там берется &uf('Av50#1'), то есть только первое повторение поля, к тому же по умолчанию оно не является множественным. Итак, сама проблема. Если нам встречается человек, которому за день выдали, к примеру за 23е ноября, 3 книги (количество книговыдач) и этот человек принадлежит двум категориям одновременно, к примеру, включается в группы инвалидов и пенсионеров, то возникает следующий результат расформатирования:

(if p(v40) then if p(v40^a) and (v40^d>=&uf('Av1000^a#1')) and (v40^d<=&uf('Av1000^b#1')) and (v40^v=&uf('Av1000^c#1')) then v40^d*6.2 fi fi/)
по вертикали
23
23
23

(if p(v40) and p(v67) then v67 fi/)
и по горизонтали
Пенсионеры
Инвалиды

В данном случае механизм размножения записей не сработает (опыты показывают, что он работает только в случаях, когда либо по вертикали, либо по горизонтали имеется ТОЛЬКО ОДИН результат расформатирования, тогда он размножается до количества в большем результате расформатирования).
Таким образом вместо 3х книговыдач за этот день для пенсионера и для инвалида мы получаем по одной. Чтобы результат выдался именно тот, который нам необходим, после расформатирования горизонтали и вертикали нужно получить следующее:

По вертикали:
23
23
23
23
23
23

По горизонтали:
Пенсионеры
Инвалиды
Пенсионеры
Инвалиды
Пенсионеры
Инвалиды

то есть размножить нужно и первую, и вторую строку одновременно. Во сколько раз ее нужно размножать, подсчитать несложно, однако как сделать грамотное размножение, мне не ясно. Очень не хватает цикла (любого типа), чтобы повторить команду расформатирования (или вывода) определенное количество раз. Есть даже мысль воспользоваться &uf('+8...'), чтобы в сторонней функции размножить так, как нужно, и передать обратно готовую строку, однако с ней я не совсем разобрался, может быть существует какой-то более подробный мануал по подключению сторонних функций с примерами (на форуме информации не так много)? Очень прошу помощи в решении данного вопроса, хочется увидеть какое-нибудь рациональное решение проблемы (поля 67 и 50 мы не можем сделать немножественными), уже сломал голову об эту проблему..
В Ирбисе работаю не так давно, поэтому, возможно, что-то пропустил. Подобная проблема затрагивается здесь: [irbis.gpntb.ru], однако счел нужным выделить вопрос в отдельную тему. Заранее спасибо!



Редактировано 1 раз. Последний раз 02.12.2010 14:08 пользователем littlewindows.

Re: Статформы по повторяющимся полям
Пользователь: keitaro (IP-адрес скрыт)
Дата: 13, December, 2010 10:02

аналогичная проблемма, не могу вывести список газет и журналов по видам документов за определенный период, так как получается что дата состоит из 01
02
02
03
03
...31
а виды документов из Газет,Журналов,АВД,Край, за день выводит нормально так как просто дополняется строка одинаковыми числами, а за период работать не хочет, подскажите как это можно обойти, а так же учень прошу дать хоть один пример использования &uf('+8...') с кодом Длл файла если можно, заране спасибо....



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.