Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Комплектатор :  ИРБИС Irbis
 
Инвентари и КСУ
Пользователь: jess (IP-адрес скрыт)
Дата: 11, December, 2007 09:47

Добрый день.
У нас такая проблемка. Нужна КСУ по подразделениям.
В принципе такой формат есть, но чтобы его использовать, нужно размножать экземпляры с указанием мест хранения. Для многоэкземплярных изданий у нас заполняется статус С (910^A) и число экземпляров (910^1).
Если использовать размножение, некорректно (для нас) выходит инвентарная книга. Используется формат TABING. Для одного наименования прописываются в столбик инвентари и также в столбик цены. У нас одинаковым изданиям в партии присваивается один инвентарь и, соответсвенно, в инвентарную книгу записывается одна строка (инвентарь и кол-во экз.).
Теоретически есть два варианта: либо испарвить формат вывода инвентарной книги, либо создавать КСУ на подразделения (филиалы) в Каталогизаторе. Есть еще конечно третий - писать КСУ на филиалы вручную, ну очень не хочется! Если уж избавляться от ручной писанины, то до конца.

1. Если исправлять TABING, нужно что-то сделать со строкой
(if p(v910) then if '2 7':v910^a then else if &unifor('Av991^a#1')=v910^u and &unifor('Av991^b#1')=v910^d or &unifor('Av991^c#1')=v910^y and &unifor('Av991^b#1')=v910^d or &unifor('Av991^b#1')='' and (&unifor('Av991^a#1')=v910^u or &unifor('Av991^c#1')=v910^y) or &unifor('Av991^a#1')='' and &unifor('Av991^c#1')='' and &unifor('Av991^b#1')=v910^d then v910^b,if a(v910^b) then v910^h fi,| (|v910^1|экз)|'\par 'fi fi fi),
для экземпляров и
(if p(v910) then if '2 6 7':v910^a then else if &unifor('Av991^a#1')=v910^u and &unifor('Av991^b#1')=v910^d or &unifor('Av991^c#1')=v910^y and &unifor('Av991^b#1')=v910^d or &unifor('Av991^b#1')='' and (&unifor('Av991^a#1')=v910^u or &unifor('Av991^c#1')=v910^y) or &unifor('Av991^a#1')='' and &unifor('Av991^c#1')='' and &unifor('Av991^b#1')=v910^d then if s(v910^e)<>''then f(val(v910^e,' 0'),0,2),|/экз|d910^1 else if val(&unifor('Av10^d#1'))>0 then f(val(&unifor('Av10^d#1'),' 0'),0,2),|/экз|d910^1 else &unifor('Av10^d#1') fi fi'\par 'fi fi fi),
для цен.
Никак не могу сообразить, как изменить. Нужно следующее: Инв.номер (NN экз.) и Цена/экз. Инвентарный номер один, из первого повторения.
2. С КСУ в каталогизаторе что-то совсем не получается. Идеи были, но не удачные.

Если кто-то с этим сталкивался, огромная просьба, поделитесь опытом!
Заранее спасибо всем, кто отзовется.

Re: Инвентари и КСУ
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 11, December, 2007 11:10

Чтобы инв.№ и цену печатать один раз, нужно их вынести из скобок.
для экземпляров
&uf('Av910^b#1'),
(if p(v910) then if '2 7':v910^a then else if &unifor('Av991^a#1')=v910^u and &unifor('Av991^b#1')=v910^d or &unifor('Av991^c#1')=v910^y and &unifor('Av991^b#1')=v910^d or &unifor('Av991^b#1')='' and (&unifor('Av991^a#1')=v910^u or &unifor('Av991^c#1')=v910^y) or &unifor('Av991^a#1')='' and &unifor('Av991^c#1')='' and &unifor('Av991^b#1')=v910^d then | (|v910^1|экз)|,'\par ''\par ' fi fi fi),

для цен
if val(v10^d)>0 then f(val(v10^d,' 0'),0,2),'/экз' else v10^d fi

Re: Инвентари и КСУ
Пользователь: jess (IP-адрес скрыт)
Дата: 11, December, 2007 12:09

Спасибо большое!
Сейчас попробуем.

Re: Инвентари и КСУ
Пользователь: jess (IP-адрес скрыт)
Дата: 12, December, 2007 07:42

Ничего не получилось. Первое повторение может не относиться к нужной партии. Количество экземпляров посчитали:

&uf('Av910^b#1'),' ('f(rsum((if p(v910) then if '2 7':v910^a then else if &unifor('Av991^a#1')=v910^u and &unifor('Av991^b#1')=v910^d or &unifor('Av991^c#1')=v910^y and &unifor('Av991^b#1')=v910^d or &unifor('Av991^b#1')='' and (&unifor('Av991^a#1')=v910^u or &unifor('Av991^c#1')=v910^y) or &unifor('Av991^a#1')='' and &unifor('Av991^c#1')='' and &unifor('Av991^b#1')=v910^d then v910^1|; |,|1;|n910^1 fi fi fi)),0,0),' экз)'

А что с инвентарем делать непонятно.

И с ценой тоже не получится. v10^d заполняется в случае, если книга поступила впервые, иноче цена прописывается в экземплярах, т. е. также может быть размноженная и нужно каким-то образом выцепить ее первое повторение (первое нужное).

Re: Инвентари и КСУ
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 12, December, 2007 11:19

Попробуйте через глобальные переменные, например, так (для инвентаря)
&uf('+7W111#'),&uf('+7U111#'(if p(v910) then if '2 7':v910^a then else if &unifor('Av991^a#1')=v910^u then v910^b fi fi fi/)),&uf('+7G111'),(g111/)
До версии 2005.2 глобальные - &uf('+1')

Re: Инвентари и КСУ
Пользователь: jess (IP-адрес скрыт)
Дата: 12, December, 2007 12:30

Посмотрели.

Это приводит к ошибке при открытии файла ("Неверно указано имя документа или путь к нему. Попробуйте выполнить..."). Без этой строчки все нормально.

И можно поподробней о глобальных переменных, как говорится, что это такое и с чем это едят. В описании что0то не могу найти. Список подкоманд есть, но наверно не полный, нет, например, подкоманды +1U. И что значит g (/g111/).

Re: Инвентари и КСУ
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 12, December, 2007 12:50

Прежде всего, какая у Вас версия?
Описание глобальных переменных - в релизе соответствующей версии

Re: Инвентари и КСУ
Пользователь: jess (IP-адрес скрыт)
Дата: 12, December, 2007 14:15

Dthcbz 2004.2.
Релиз смотрела, список подкоманд есть.

1. Значит в нашей верси нет подкоманды +1U?

2. И можно все-таки подробнее разобрать эту строку, что делает каждая команда в данном случае. Я понимаю так:

&uf('+7W111#') - записывает в глобальную переменную ... что?

&uf('+7U111#'(if p(v910) then if '2 7':v910^a then else if &unifor('Av991^a#1')=v910^u then v910^b fi fi fi/)) - по идее записывает в глобальную переменную (111) инвентари 910^b. А можно написать вместо v910^b &unifor('G0-'v910^b) (у нас все же не совсем одинаковые инвентари, для базы мы используем нумерацию через "-", чтобы не было дублетов. Например 195338, 195338-2, 195338-3 и т. д.). Просто проверить не могу, с этими глобальными переменными word всетаки не открывает созданные документы.

&uf('+7G111') - исключает неоригинальные.

(g111/) - наверное вывод глобальных переменных, вместо v в обычных полях.

Поправьте пожалуйста, если ошибаюсь.

3. И что все таки может влиять на word, почему он выдает такую ошибку?

Re: Инвентари и КСУ
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 13, December, 2007 01:08

jess написал(а):
-------------------------------------------------------
> Dthcbz 2004.2.
> Релиз смотрела, список подкоманд есть.
>
> 1. Значит в нашей верси нет подкоманды +1U?
Да, именно так, но это не важно - можно написать +1W
>
> 2. И можно все-таки подробнее разобрать эту
> строку, что делает каждая команда в данном случае.
> Я понимаю так:
>
> &uf('+7W111#') - записывает в глобальную
> переменную ... что?
- предварительное опустошение

> &uf('+7U111#'(if p(v910) then if '2 7':v910^a then
> else if &unifor('Av991^a#1')=v910^u then v910^b fi
> fi fi/)) - по идее записывает в глобальную
> переменную (111) инвентари 910^b.
Да, так
> А можно написать
> вместо v910^b &unifor('G0-'v910^b) (у нас все же
> не совсем одинаковые инвентари, для базы мы
> используем нумерацию через "-", чтобы не было
> дублетов. Например 195338, 195338-2, 195338-3 и т.
> д.).
да, можно
Просто проверить не могу, с этими глобальными
> переменными word всетаки не открывает созданные
> документы.
>
> &uf('+7G111') - исключает неоригинальные.
>
> (g111/) - наверное вывод глобальных переменных,
> вместо v в обычных полях.
>
> Поправьте пожалуйста, если ошибаюсь.

Все правильно, но для Глобальной &uf('+1') нет функции исключения неоригинальных

> 3. И что все таки может влиять на word, почему он
> выдает такую ошибку?
В &unifor не реализована функция +7

Re: Инвентари и КСУ
Пользователь: jess (IP-адрес скрыт)
Дата: 13, December, 2007 07:33

Спасибо большое!

С инвентарями все получилось.

Для Глобальной &uf('+1') все таки есть функции исключения неоригинальных.
+7 я сразу заменила на +1, а word "ругался" на g111, это наверно тоже есть только в более поздних версиях.

Сейчас займусь ценами.

Еще раз Спасибо!

Re: Инвентари и КСУ
Пользователь: jess (IP-адрес скрыт)
Дата: 13, December, 2007 09:16

А можно еще один глупенький вопросик (не по теме)?
Что значит конструкция f(val(v10^d,' 0'),0,2)?

С f() все понятно, а вот что там вычисляет val не могу сообразить. Например, есть цена 100.00, получаем формат строки '100.00 0', возвращается первое числовое значение.

Зачем дописывать ' 0'?

Re: Инвентари и КСУ
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 13, December, 2007 11:05

Для случая отсутствия числовых данных в 10^D (например,Беспл.)

Re: Инвентари и КСУ
Пользователь: jess (IP-адрес скрыт)
Дата: 13, December, 2007 13:57

Но тогда в любом случае возвращается значение 0. По крайней мере так следует из инструкции.

Еще раз спасибо Вам огромное за ответы.

Re: Инвентари и КСУ
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 13, December, 2007 15:19

jess написал(а):
-------------------------------------------------------
> Но тогда в любом случае возвращается значение 0.
> По крайней мере так следует из инструкции.
Вы правы, это перестраховка

> Еще раз спасибо Вам огромное за ответы.



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