Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Администратор :  ИРБИС Irbis
 
Стат_форма_проблема
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 29, October, 2021 11:29

Написала новую стат.форму по учету посещений, классифицированных по виду посещений (связанное с книговыдачей, связанное с посещением массовых мероприятий и др.), и по советам коллег в поле 40 добавила еще подполе ^Q для указания кол-ва таких посещений, чтобы не забивать запись повторениями поля 40. В файле stf реализовала повторение данных для статистики по подполю ^Q. В редакторе форматов данные выводятся правильно (столько раз повторяются, сколько раз указано в ^Q), а вот стат.форма их считает не правильно. Все файлы стат.формы и тестовую запись прикладываю (данные поля 1000: ^A202110^BОРЦИ)

Вложения: стат_форма_виды_посещ.zip (9.2KB)  
Re: Стат_форма_проблема
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 10, November, 2021 09:51

В txt файле - то, что генерирует редактор форматов - там 73 пары значений,
а стат.форма, запущенная в АРМ Каталогизатор, считает только 6...

В zip файле из предыдущего сообщения один файл попал ошибочный, исправила, прикрепила заново.

Вложения: стат_форма.txt (2.5KB)   стат_форма_виды_посещ.zip (9.3KB)  
Re: Стат_форма_проблема
Пользователь: GLUKa (IP-адрес скрыт)
Дата: 12, November, 2021 23:07

Попробуйте так

Государственная универсальная научная библиотека Красноярского края, Ассоциация ЭБНИТ

Вложения: Form_visit2.stf (1.4KB)   visit_multi.pft (161 bytes)  
Re: Стат_форма_проблема
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 15, November, 2021 09:33

Спасибо, Галина.
Вопрос к Александру Иосифовичу. Стат. форма не работает в таком виде:
Form_visit
&uf('+7W1#'),&uf('+7W2#'), (if p(v40) then if (&uf('Av1000^b#1')='' or (v40^v=&uf('Av1000^b#1'))) then if v40^d.6=&uf('Av1000^a#1') and v40^a<>'' then &uf('+7U1#',v40^d*6.2), fi, if v40^f.6=&uf('Av1000^a#1') and v40^a<>'' then &uf('+7U1#',v40^f*6.2) fi, if v40^L.6=&uf('Av1000^a#1') and v40^a<>'' then &uf('+7U1#',v40^L*6.2) fi, if v40^d.6=&uf('Av1000^a#1') and v40^a='' then if v40^Q='' then &uf('+7U2#',v40^d*6.2, '/', v40^c.2) else &uf('+7W11#',v40^Q), &uf('+7W12#',,v40^d*6.2, '/', v40^c.2), &uf('6visit_multi'), fi, fi fi fi), &uf('+7G1'), (if p(g1) then &uf('G0/',g1) fi/),(if p(g2) then &uf('G0/',g2) fi/)
date_STF.mnu
(if p(g1) then '00' fi/ ),(if p(g2) then if &unifor('Kvisit_STF.mnu \'&uf('G2/',g2))<>'' then &uf('G2/',g2) else '*' fi fi/ )


и работает в таком:
'Form_visit',
&uf('+7W1#'),&uf('+7W2#'), (if p(v40) then if (&uf('Av1000^b#1')='' or (v40^v=&uf('Av1000^b#1'))) then if v40^d.6=&uf('Av1000^a#1') and v40^a<>'' then &uf('+7U1#',v40^d*6.2), fi, if v40^f.6=&uf('Av1000^a#1') and v40^a<>'' then &uf('+7U1#',v40^f*6.2) fi, if v40^L.6=&uf('Av1000^a#1') and v40^a<>'' then &uf('+7U1#',v40^L*6.2) fi, if v40^d.6=&uf('Av1000^a#1') and v40^a='' then if v40^Q='' then &uf('+7U2#',v40^d*6.2, '/', v40^c.2) else &uf('+7W11#',v40^Q), &uf('+7W12#',,v40^d*6.2, '/', v40^c.2), &uf('6visit_multi'), fi, fi fi fi), &uf('+7G1'), (if p(g1) then &uf('G0/',g1) fi/),(if p(g2) then &uf('G0/',g2) fi/)
,'date_STF.mnu',
&uf('+7W1#'),&uf('+7W2#'), (if p(v40) then if (&uf('Av1000^b#1')='' or (v40^v=&uf('Av1000^b#1'))) then if v40^d.6=&uf('Av1000^a#1') and v40^a<>'' then &uf('+7U1#',v40^d*6.2), fi, if v40^f.6=&uf('Av1000^a#1') and v40^a<>'' then &uf('+7U1#',v40^f*6.2) fi, if v40^L.6=&uf('Av1000^a#1') and v40^a<>'' then &uf('+7U1#',v40^L*6.2) fi, if v40^d.6=&uf('Av1000^a#1') and v40^a='' then if v40^Q='' then &uf('+7U2#',v40^d*6.2, '/', v40^c.2) else &uf('+7W11#',v40^Q), &uf('+7W12#',,v40^d*6.2, '/', v40^c.2), &uf('6visit_multi'), fi, fi fi fi), &uf('+7G1'), (if p(g1) then &uf('G2/',g1) fi/),(if p(g2) then &uf('G2/',g2) fi/)

Первый вариант должен работать в два раза быстрее второго, в котором стат.форма "бегает" по всем записям два раза, но не работает.
Почему глобальные переменные из первой части стат. формы не передаются во вторую часть?

Re: Стат_форма_проблема
Пользователь: Alio (IP-адрес скрыт)
Дата: 15, November, 2021 10:30

Милана А. написал(а):
-------------------------------------------------------
> Спасибо, Галина.
> Вопрос к Александру Иосифовичу. Стат. форма не
> работает в таком виде:
> Form_visit
> &uf('+7W1#'),&uf('+7W2#'), (if p(v40) then if
> (&uf('Av1000^b#1')='' or
> (v40^v=&uf('Av1000^b#1'))) then if
> v40^d.6=&uf('Av1000^a#1') and v40^a<>'' then
> &uf('+7U1#',v40^d*6.2), fi, if
> v40^f.6=&uf('Av1000^a#1') and v40^a<>'' then
> &uf('+7U1#',v40^f*6.2) fi, if
> v40^L.6=&uf('Av1000^a#1') and v40^a<>'' then
> &uf('+7U1#',v40^L*6.2) fi, if
> v40^d.6=&uf('Av1000^a#1') and v40^a='' then if
> v40^Q='' then &uf('+7U2#',v40^d*6.2, '/', v40^c.2)
> else &uf('+7W11#',v40^Q), &uf('+7W12#',,v40^d*6.2,
> '/', v40^c.2), &uf('6visit_multi'), fi, fi fi fi),
> &uf('+7G1'), (if p(g1) then &uf('G0/',g1) fi/),(if
> p(g2) then &uf('G0/',g2) fi/)
> date_STF.mnu
> (if p(g1) then '00' fi/ ),(if p(g2) then if
> &unifor('Kvisit_STF.mnu \'&uf('G2/',g2))<>'' then
> &uf('G2/',g2) else '*' fi fi/ )
>
>
> и работает в таком:
> 'Form_visit',
> &uf('+7W1#'),&uf('+7W2#'), (if p(v40) then if
> (&uf('Av1000^b#1')='' or
> (v40^v=&uf('Av1000^b#1'))) then if
> v40^d.6=&uf('Av1000^a#1') and v40^a<>'' then
> &uf('+7U1#',v40^d*6.2), fi, if
> v40^f.6=&uf('Av1000^a#1') and v40^a<>'' then
> &uf('+7U1#',v40^f*6.2) fi, if
> v40^L.6=&uf('Av1000^a#1') and v40^a<>'' then
> &uf('+7U1#',v40^L*6.2) fi, if
> v40^d.6=&uf('Av1000^a#1') and v40^a='' then if
> v40^Q='' then &uf('+7U2#',v40^d*6.2, '/', v40^c.2)
> else &uf('+7W11#',v40^Q), &uf('+7W12#',,v40^d*6.2,
> '/', v40^c.2), &uf('6visit_multi'), fi, fi fi fi),
> &uf('+7G1'), (if p(g1) then &uf('G0/',g1) fi/),(if
> p(g2) then &uf('G0/',g2) fi/)
> ,'date_STF.mnu',
> &uf('+7W1#'),&uf('+7W2#'), (if p(v40) then if
> (&uf('Av1000^b#1')='' or
> (v40^v=&uf('Av1000^b#1'))) then if
> v40^d.6=&uf('Av1000^a#1') and v40^a<>'' then
> &uf('+7U1#',v40^d*6.2), fi, if
> v40^f.6=&uf('Av1000^a#1') and v40^a<>'' then
> &uf('+7U1#',v40^f*6.2) fi, if
> v40^L.6=&uf('Av1000^a#1') and v40^a<>'' then
> &uf('+7U1#',v40^L*6.2) fi, if
> v40^d.6=&uf('Av1000^a#1') and v40^a='' then if
> v40^Q='' then &uf('+7U2#',v40^d*6.2, '/', v40^c.2)
> else &uf('+7W11#',v40^Q), &uf('+7W12#',,v40^d*6.2,
> '/', v40^c.2), &uf('6visit_multi'), fi, fi fi fi),
> &uf('+7G1'), (if p(g1) then &uf('G2/',g1) fi/),(if
> p(g2) then &uf('G2/',g2) fi/)
>
> Первый вариант должен работать в два раза быстрее
> второго, в котором стат.форма "бегает" по всем
> записям два раза, но не работает.
> Почему глобальные переменные из первой части стат.
> формы не передаются во вторую часть?
Однако... Глобальные переменные сохраняются в пределах форматирования ОДНОЙ записи ОДНИМ форматом.

Re: Стат_форма_проблема
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 15, November, 2021 15:18

Цитирую: "Глобальность переменных заключается в том, что перед началом очередного расформатирования они НЕ опустошаются, т.е. через глобальные переменные можно передавать данные из одного расформатирования в другое".
Я предполагала, что глобальные переменные сохраняются во время сеанса работы, если их специально не опустошать...

Re: Стат_форма_проблема
Пользователь: Alio (IP-адрес скрыт)
Дата: 15, November, 2021 15:26

Милана А. написал(а):
-------------------------------------------------------
> Цитирую: "Глобальность переменных заключается в
> том, что перед началом очередного
> расформатирования они НЕ опустошаются, т.е. через
> глобальные переменные можно передавать данные из
> одного расформатирования в другое".
Это справедливо если форматы выполняются в рамках одного ПРОЦЕССА на сервера. Если форматы выполняются от клиента (последовательно), гарантии нет. Поэтому в общем случае рассчитывать на это не стоит.

> Я предполагала, что глобальные переменные
> сохраняются во время сеанса работы, если их
> специально не опустошать...



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