Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Книговыдача :  ИРБИС Irbis
 
Стат. форма распределения книговыдач по типу издания для категории молодежь (от 15 до 30 лет).
Пользователь: sovlib (IP-адрес скрыт)
Дата: 22, December, 2019 21:34

Здравствуйте. помогите пожалуйста.

Создал форму которая определяет тип издания по определенным критериям из баз данных. Всё работает, кроме последней части кода. (распределение книговыдач по типу издания для категории молодежь (от 15 до 30 лет)).

Не рабочая часть кода:

if v21 <= '2004' and v21 >= '1989' then &uf('D',v40^g,|,!I=|v40^a|!,if v900^t='a' then '*5' fi,|) fi

Не пойму почему не работает код.

скажите почему форматер "не видит" то что происходит внутри конструкции &uf. Проверяет правильность написания, а результат внутреннего if else не выводит. Или его как то настроить по особому надо?

Полный код stf выглядит так:

Form1a
(if p(v40) then if (v40^d>=&uf('Av1000^a#1')) and (v40^d<=&uf('Av1000^b#1')) then v40^v / v40^v / v40^v / v40^v / v40^v / v40^v fi fi /),
kv_STF.mnu
(if p(v40) then if (v40^d>=&uf('Av1000^a#1')) and (v40^d<=&uf('Av1000^b#1')) then &uf('D',v40^g,|,!I=|v40^a|!,if v900^t='a' then '*1', else '*' fi,|) / &uf('D',v40^g,|,!I=|v40^a|!,if v936<>'' and v933<>'Г5' then '*2' fi,|)/ &uf('D',v40^g,|,!I=|v40^a|!,if v135<>'' or v230<>'' or v337<>'' then '*3' else '*' fi,|)/ &uf('D',g40^g,|,!I=|g40^a|!,if p(v182^a) then '*3' else if v920:'NJ'then ref(L("I="v933),if p(v182^a) then '*3' else '*' fi,)else '*' fi,fi,/|) / &uf('D',v40^g,|,!I=|v40^a|!,if v115<>'' or v126<>''or v215^1='вк. видеокассета' or v215^1='1 вк.' or v215^1='1 вк' or v215^1='1 ак.' or v215^1='ак.аудиокассета' or v215^1='аудиокассета' or v215^1='мл. магнитофонная кассета' then '*4', else '*' fi,|)/ if v21 <= '2004' and v21 >= '1989' then &uf('D',v40^g,|,!I=|v40^a|!,if v900^t='a' then '*5' fi,|) fi /, fi fi)
type.mnu
4,7
999.wss,1000
'Распределение книговыдач по категориям читателей и видам изданий за период с ',v1000^A*6.2".",v1000^A*4.2".",v1000^A.4,' по ',v1000^B*6.2".",v1000^B*4.2".",v1000^B.4
1,1
'Распределение книговыдач по видам изданий за период с ',v1000^A*6.2".",v1000^A*4.2".",v1000^A.4,' по ',v1000^B*6.2".",v1000^B*4.2".",v1000^B.4,/'Вид издания'
'Распределение книговыдач по категориям читателей за период с ',v1000^A*6.2".",v1000^A*4.2".",v1000^A.4,' по ',v1000^B*6.2".",v1000^B*4.2".",v1000^B.4,/'Категория читателей'



Редактировано 1 раз. Последний раз 22.12.2019 21:40 пользователем sovlib.

Вложения: Form1a.XLT (36.5KB)   Form1a.stf (1.5KB)   type.mnu (191 bytes)  
Re: Стат. форма распределения книговыдач по типу издания для категории молодежь (от 15 до 30 лет).
Пользователь: sovlib (IP-адрес скрыт)
Дата: 23, December, 2019 20:19

Методом проб понял что моё условие не выполняется

if v21 <= '2004' and v21 >= '1989'

На этом этапе код обрывается но условие показывает значение false, хотя на самом деле результат должен быть истина.

В форматере если прописать в базе RDR данное условие у данного пользователя то показывает "Истина".

Скажите почему if v21 <= '2004' and v21 >= '1989' не выдает значение истина в этом коде

Re: Стат. форма распределения книговыдач по типу издания для категории молодежь (от 15 до 30 лет).
Пользователь: Alio (IP-адрес скрыт)
Дата: 23, December, 2019 21:45

sovlib написал(а):
-------------------------------------------------------
> Методом проб понял что моё условие не выполняется
>
> if v21 <= '2004' and v21 >= '1989'
так с числами не работают. надо так
if (val(v21)<=2004) and (val(v21)>=1989)

Re: Стат. форма распределения книговыдач по типу издания для категории молодежь (от 15 до 30 лет).
Пользователь: sovlib (IP-адрес скрыт)
Дата: 23, December, 2019 22:13

Поменял конструкцию, поменял формат работы с числами. теперь считает, но по моему условию считаются не все выдачи.

Хотя журнал один, и человеку выдаю тому же. Из 20 выданных номеров, в по условию if (val(v21)<=2004) and (val(v21)>=1989) прошло только 15.


Form1a
&uf('+7U40#',&uf('7RDR_ARH,!RI=',v30,'!,(v40/)')),(if p(v40) then if (v40^d>=&uf('Av1000^a#1')) and (v40^d<=&uf('Av1000^b#1')) then v40^v / v40^v / v40^v / v40^v / v40^v / v40^v /v40^v fi fi /),
kv_STF.mnu
(if p(v40) then if (v40^d>=&uf('Av1000^a#1')) and (v40^d<=&uf('Av1000^b#1')) then &uf('D',v40^g,|,!I=|v40^a|!,if v900^t='a' then '*1', else '*' fi,|) / &uf('D',v40^g,|,!I=|v40^a|!,if v936<>'' and v933<>'Г5' then '*2' fi,|)/ &uf('D',v40^g,|,!I=|v40^a|!,if v135<>'' or v230<>'' or v337<>'' then '*3' else '*' fi,|)/ &uf('D',g40^g,|,!I=|g40^a|!, v920:'NJ'then ref(L("I="v933),if p(v182^a) then '*3' fi,) fi,/|) / &uf('D',v40^g,|,!I=|v40^a|!,if v115<>'' or v126<>''or v215^1='вк. видеокассета' or v215^1='1 вк.' or v215^1='1 вк' or v215^1='1 ак.' or v215^1='ак.аудиокассета' or v215^1='аудиокассета' or v215^1='мл. магнитофонная кассета' then '*4', else '*' fi,|)/, fi fi) / if (val(v21)<=2004) and (val(v21)>=1989) then (if p(v40) then if (v40^d>=&uf('Av1000^a#1')) and (v40^d<=&uf('Av1000^b#1')) then &uf('D',v40^g,|,!I=|v40^a|!,if v900^t='a' then '*5', else '*' fi,|) / &uf('D',v40^g,|,!I=|v40^a|!,if v936<>'' and v933<>'Г5' then '*6' fi,|)/ &uf('D',v40^g,|,!I=|v40^a|!,if v135<>'' or v230<>'' or v337<>'' then '*7' else '*' fi,|)/ &uf('D',g40^g,|,!I=|g40^a|!, v920:'NJ' then ref(L("I="v933),if p(v182^a) then '*7' fi,) fi,/|) / &uf('D',v40^g,|,!I=|v40^a|!,if v115<>'' or v126<>''or v215^1='вк. видеокассета' or v215^1='1 вк.' or v215^1='1 вк' or v215^1='1 ак.' or v215^1='ак.аудиокассета' or v215^1='аудиокассета' or v215^1='мл. магнитофонная кассета' then '*8', else '*' fi,|)/, fi fi) fi/
type.mnu
4,7
999.wss,1000
'Распределение книговыдач по категориям читателей и видам изданий за период с ',v1000^A*6.2".",v1000^A*4.2".",v1000^A.4,' по ',v1000^B*6.2".",v1000^B*4.2".",v1000^B.4
1,1
'Распределение книговыдач по видам изданий за период с ',v1000^A*6.2".",v1000^A*4.2".",v1000^A.4,' по ',v1000^B*6.2".",v1000^B*4.2".",v1000^B.4,/'Вид издания'
'Распределение книговыдач по категориям читателей за период с ',v1000^A*6.2".",v1000^A*4.2".",v1000^A.4,' по ',v1000^B*6.2".",v1000^B*4.2".",v1000^B.4,/'Категория читателей'

Re: Стат. форма распределения книговыдач по типу издания для категории молодежь (от 15 до 30 лет).
Пользователь: sovlib (IP-адрес скрыт)
Дата: 24, December, 2019 18:11

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

stf приложил, может кому-нибудь пригодится.

Вопрос про форматер по прежнему интересен. Может кто нибудь знает как тестировать что находится внутри &uf

Вложения: Form1a.stf (2.1KB)  


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