Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Комплектатор :  ИРБИС Irbis
 
Как посчитать экземпляры?
Пользователь: Kosto (IP-адрес скрыт)
Дата: 18, October, 2005 10:50

Добрый день.

В выходных формах 2002.1 для комплектатора, после их формирования конечно, отсутствуют данные про количество экземпляров. Колонка соответственная есть, а результата в ней нет.
Сейчас создаю свою выходную форму. Подскажите, пожалуста, алгоритм подсчёта количества экземпляров, какая конструкция, по какому полю должно правильно считать экземпляры для конкретных изданий, и как посчитать итоговое количество (для итогов написал: И ТОГО: 'V1' и форма перестала считаться вообще).
И ещё вопрос. Генератор табличных форм для 2002.1 может открывать только *.tbb файлы? или я как-то не так должен открывать уже существующие формы (очень хочется посмотреть механизмы изнутри, но открыть не могу).

Спасибо!


Re: Как посчитать экземпляры?
Пользователь: Дунаевская С.М. (IP-адрес скрыт)
Дата: 18, October, 2005 12:27

Число экземпляров в документе можно посчитать так.
f(rsum((if p(v910) then if '2 6 7':v910^a then else v910^1|; |,|1;|n910^1 fi fi)),0,0).
Вопросы по ГТФ обсуждались на форуме неоднократно - см., например
[irbis.gpntb.ru]
[irbis.gpntb.ru]

Re: Как посчитать экземпляры?
Пользователь: Kosto (IP-адрес скрыт)
Дата: 18, October, 2005 17:36

Светлана Михайловна ГРОМАДНОЕ СПАСИБО
Теперь моя форма и экземпляры подсчитывает и итоговое пишет количество.
Я сам бы такого выражения-то не написал бы.
И ещё бы для подсчёта общих цен такое выражение.
Благодарю за ссылки, теперь знаю почему открыть-то нельзя. Уже попросить у Alexy успел парочку tbb файлов к тем формам что вручную делались. Кстати говоря, они все в 2002.1 так сделаны (прим. ну и разбираться же надо чтоб сотворить такие штуки без редактора).

Я со своей первой формой дальше мучаюсь. Хочется чтоб была наглядной и полезной, поэтому прошу вас, Светлана Михайловна, напишите коротко каким выражением и где прописать чтоб в заголовке написано было как в TABINW дата номер КСО и подразделение (которое книги получило).
У меня перед выходной формой через опросный лист (долго не думая прописал в seltabw уже существующую опросную inll.ws) вводится номер КСО и подразделение.


Заранее благодарю

Re: Как посчитать экземпляры?
Пользователь: Kosto (IP-адрес скрыт)
Дата: 20, October, 2005 16:21

Здравствуйте!

Прописал подсчёт экземпляров. Но, так сказать, полевых испытаний моя форма пока пройти неможет. Причина в том что нужна форма для отчётности, а колличество экземпляров она считает по имеющимся записям ZK, НО получается что подсчитанное (и выданное в KSU)колличество экземпляров и наименований отличается от выданного в моей форме.

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

Re: Как посчитать экземпляры?
Пользователь: Kosto (IP-адрес скрыт)
Дата: 21, October, 2005 12:43

Провёл пополнение.
И, пересчитав, система сама нашла недочёты. Теперь колличество совпадает.

Re: Как посчитать экземпляры?
Пользователь: Kosto (IP-адрес скрыт)
Дата: 16, May, 2006 18:13

f(rsum((if p(v910) then if '2 6 7':v910^a then else v910^1|; |,|1;|n910^1 fi fi)),0,0)
не помогает.
Считает всё подряд (если есть дублеты из других партий - их тоже приплюсовывает). Нужно чтоб только экземпляры даной партии считало (фильтр нужен).
Как код отредактировать?
Пробовал дописать следующее:
f(rsum((if p(v910) and v910^u = v991^a then if '2 6 7':v910^a then else v910^1|; |,|1;|n910^1 fi fi)),0,0)
Теперь если первым по порядку повторением идёт партия с v910^u = v991^a, то её засчитывает, но как только v910^u не равно v991^a подсчёт прекращается.

Re: Как посчитать экземпляры?
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 16, May, 2006 19:55

В повторяющейся группе обращение к неповторяющемуся полю 991.
f(rsum((if p(v910) and v910^u = &unifor('Av991^a#1') then if '2 6 7':v910^a then else v910^1|; |,|1;|n910^1 fi fi)),0,0)

Re: Как посчитать экземпляры?
Пользователь: Kosto (IP-адрес скрыт)
Дата: 17, May, 2006 13:41

Такое выражение приводит к какому-то зацикливанию и форма не считается (комплектатор зависает).
Может есть другой вариант подсчёта?

Re: Как посчитать экземпляры?
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 17, May, 2006 13:56

Если Вы не уверены, что в записи есть поле 991^a, то следует добавить еще одно условие
if p(v991^a) then f(rsum((if p(v910) and v910^u = &unifor('Av991^a#1') then if '2 6 7': v910^a then else v910^1|; |,|1;|n910^1 fi fi)),0,0) fi

Re: Как посчитать экземпляры?
Пользователь: Kosto (IP-адрес скрыт)
Дата: 17, May, 2006 14:17

Даже с таким условием зависает.
Отдельно (в колонку) направил вывод содержимого 991^a - для каждого наименоваия показано переданое в форму значение КСУ (так значит есть в записях поле 991^a).

Re: Как посчитать экземпляры?
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 17, May, 2006 14:35

Попробуйте написать так:
f(rsum((if p(v910) then if v910^u = &unifor('Av991^a#1') then if '2 6 7': v910^a then else v910^1|; |,|1;|n910^1 fi fi fi)),0,0)

Re: Как посчитать экземпляры?
Пользователь: Kosto (IP-адрес скрыт)
Дата: 18, May, 2006 15:43

Спасибо!

Извините, что не точно по теме
Светлана Михайловна,
Помогите "отловить" мою ошибку в таком случае:
Считаю сумму за все єкземпляры; сначала писал
f(rsum((if '2 6 7': v910^a then else v910^1|; |,|1;|n910^1 fi))*val(v10^d),0,2) Но из-за "*val(v10^d)" сумма получалась некорректной там, где 910^E есть.

Переписал вот так:
f(rsum((if p(v910) then if v910^u = &unifor('Av991^a#1') then if p(v910^E) then if p(v910^1) then val(v910^1)*val(v910^E)|;|, else v910^E |;|, fi else if p(910^1) then val(v910^1)*val(v10^d) |;|, else v10^d |;|, fi fi fi fi)),0,2)
Врезультате не считает там, где 910^E = v10^d.

Переписал (думал что дело в v10^d) таким образом:
f(rsum((if p(v910) then if v910^u = &unifor('Av991^a#1') then if p(v910^E) then if p(v910^1) then val(v910^1)*val(v910^E)|;|, else v910^E |;|, fi else if p(910^1) then val(v910^1)*val(v10^d) |;|, else &unifor('Av10^d#1') |;|, fi fi fi fi)),0,2)
Начало считать экземпляры, где 910^E = v10^d, НО только один (цену второго уже не прибавляет).
Помогите, пожалуйста. Уверен что ошибка у меня опять дилетантская.
Может я вообще не правильно к делу подошол?
А, то уже и так комбинировал:
if p(v910) then if v910^u = &unifor('Av991^a#1') then if p(v910^E) then if p(v910^1) then f(rsum((val(v910^1)*val(v910^E)|;|,)),0.2) else f(rsum((v910^E |;|,)),0,2) fi else f(rsum(( if '2 6 7': v910^a then else v910^1|; |,|1;|n910^1 fi ))*val(v10^d),0,2)fi fi fi
Но стало ещё хуже.
Спасибо.

Re: Как посчитать экземпляры?
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 18, May, 2006 16:09

Недавно делала такой формат
f(rsum((if p(v910) then if '2 6 7':v910^a then else if v910^u=&uf('Av991^a#1') then if s(v910^e,&uf('Av10^d#1'))<>'' then f(val(v910^e,if a(v910^e) then &unifor('Av10^d#1') fi,' 0') * val(v910^1,|1|n910^1),0,2)';',fi fi fi fi/)),0,2)/

Re: Как посчитать экземпляры?
Пользователь: Elenaon (IP-адрес скрыт)
Дата: 09, March, 2021 13:39

Здравствуйте.
Скажите, пожалуйста, как можно посчитать экземпляры, например, учебной литературы?
По коду мы выявили количество названий. А теперь нужно посчитать, сколько их экземпляров.
Как это можно сдалать?

Спасибо.

Версия Ирбис64+ (2018.1 D4)

Re: Как посчитать экземпляры?
Пользователь: ochagova (IP-адрес скрыт)
Дата: 10, March, 2021 10:22

Посмотрите поле 148 в записи КСУ - см. 111

Вложения: 111.png (27.7KB)  


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