Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Книговыдача :  ИРБИС Irbis
 
Вопрос по статистике выдачи лит-ры
Пользователь: Chaser (IP-адрес скрыт)
Дата: 21, October, 2012 10:58

Добрый день, Уважаемые!

Помогите найти решение.

Задача. Требуется получить статистику по книговыдаче по категориям читателей и разделам знаний. И всё бы ничего, но если у читателя более двух категорий, то не получается сделать задуманное.

По порядку.
Имеем у читателя категорию "рабочий" и ему было выдано 3 книги технической тематики:

http://miron.in/images/forma.gif

Идём далее, добавляем категорию читателю "пенсионер" (в принципе для примера неважно какую именно) и на выходе статистики получаем:

http://miron.in/images/formb.gif

Цитата:
Формат статистики
по вертикали
(if p(v40) then if v40^d>=&uf('Av1000^a#1') and v40^d<=&uf('Av1000^b#1') and (&uf('Av1000^c#1')='' or v40^v=&uf('Av1000^c#1')) then &uf('D',v40^g,|,!I=|v40^a|!,if p(v60) then v60 else '*' fi,/|) fi fi)

По горизонтали
if p(v50) then (v50/) else '*' fi

В результате должно быть:

http://miron.in/images/formc.gif

Важно получить в каждой категории
данного читателя число выданной лит-ры. То есть и в категори "рабочий" и в категории "пенсионер" цифра 3.

Заранее спасибо.

Re: Вопрос по статистике выдачи лит-ры
Пользователь: Gena (IP-адрес скрыт)
Дата: 21, October, 2012 12:02

Как вариант можно вот так:

Формат вертикали 

if &uf('av50#1')<>'' then 
(if p(v40) then 
   if v40^d>=&uf('Av1000^A#1') and v40^d<=&uf('Av1000^B#1') and (&uf('Av1000^c#1')='' or v40^v=&uf('Av1000^c#1')) then 
      &uf('D',v40^g,|,!I=|v40^a|!,if p(v60) then v60 else '*' fi,/|)       
   fi 
fi/) 
fi,
if &uf('av50#2')<>'' then 
(if p(v40) then 
   if v40^d>=&uf('Av1000^A#1') and v40^d<=&uf('Av1000^B#1') and (&uf('Av1000^c#1')='' or v40^v=&uf('Av1000^c#1')) then 
      &uf('D',v40^g,|,!I=|v40^a|!,if p(v60) then v60 else '*' fi,/|) 
   fi 
fi/) 
fi,
if &uf('av50#3')<>'' then 
(if p(v40) then 
   if v40^d>=&uf('Av1000^A#1') and v40^d<=&uf('Av1000^B#1') and (&uf('Av1000^c#1')='' or v40^v=&uf('Av1000^c#1')) then 
      &uf('D',v40^g,|,!I=|v40^a|!,if p(v60) then v60 else '*' fi,/|) 
   fi 
fi/) 
fi 


Формат горизонтали 

if &uf('av50#1')<>'' then 
(if p(v40) then 
   if v40^d>=&uf('Av1000^A#1') and v40^d<=&uf('Av1000^B#1') and (&uf('Av1000^c#1')='' or v40^v=&uf('Av1000^c#1')) then 
      &uf('av50#1')
   fi 
fi/) 
fi,
if &uf('av50#2')<>'' then 
(if p(v40) then 
   if v40^d>=&uf('Av1000^A#1') and v40^d<=&uf('Av1000^B#1') and (&uf('Av1000^c#1')='' or v40^v=&uf('Av1000^c#1')) then 
      &uf('av50#2')
   fi 
fi/) 
fi,
if &uf('av50#3')<>'' then 
(if p(v40) then 
   if v40^d>=&uf('Av1000^A#1') and v40^d<=&uf('Av1000^B#1') and (&uf('Av1000^c#1')='' or v40^v=&uf('Av1000^c#1')) then 
      &uf('av50#3')
   fi 
fi/) 
fi

Это выглядит немного грубо, но в Ирбисе впринципе есть проблема со вложенными циклами. Этот вариант будет работать со случаями одной, двух и трех категорий у читателя. Если у вас может быть категорий больше трех, то просто по аналогии добавьте нужное количество раз кусок кода для вертикали и горизонтали. Я специально привел код не в однострочной форме, а в развернутой, что бы было понятно как оно работает. Для стат. формы код нужно привести к однострочной форме.

Re: Вопрос по статистике выдачи лит-ры
Пользователь: Chaser (IP-адрес скрыт)
Дата: 21, October, 2012 13:46

Геннадий, спасибо за оперативный ответ!

Но, у меня по-прежнему "лыжи не едут". Странно.

С вашим кодом получается следующее:

http://miron.in/images/formd.gif

А должно быть у рабочего 3 и у пенсионера 3.

Ниже прикреплен файл со формой, файлом статистики (с модифицированным Вами кодом) и справочниками.

Посмотрите, если не сложно.



Редактировано 1 раз. Последний раз 21.10.2012 13:52 пользователем Chaser.

Вложения: stat__.zip (5.1KB)  
Re: Вопрос по статистике выдачи лит-ры
Пользователь: Gena (IP-адрес скрыт)
Дата: 21, October, 2012 17:41

Моя ошибка - я добавил лишнии переходы на новую строку в формате вертикали. Исправленный файл приложил

Вложения: form2b1.stf (1.5KB)  
Re: Вопрос по статистике выдачи лит-ры
Пользователь: Chaser (IP-адрес скрыт)
Дата: 22, October, 2012 16:45

Ещё раз, спасибо за решение и потраченное время!

Я всё-таки сделал несколько иначе. Если интересно, могу выложить, а нет так нет.

Re: Вопрос по статистике выдачи лит-ры
Пользователь: Gena (IP-адрес скрыт)
Дата: 22, October, 2012 18:49

Конечно выкладывайте! Всегда интересно посмотреть на чужой опыт.

Re: Вопрос по статистике выдачи лит-ры
Пользователь: Chaser (IP-адрес скрыт)
Дата: 22, October, 2012 19:07

Файл ниже. В нём сейчас пять категорий, но, как видно, расширить можно оч. легко.

Вложения: form2b1.stf (1.2KB)  
Re: Вопрос по статистике выдачи лит-ры
Пользователь: Gena (IP-адрес скрыт)
Дата: 22, October, 2012 19:14

Так конечно изящнее, мне было лень придумывать красиво :)



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