Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Счетчики
Пользователь: taumaturg (IP-адрес скрыт)
Дата: 14, December, 2009 10:06

Вообщем вопрос такой, хочу автоматизировать заполнение поля посещения у определенного количества читателей со случайным MFN. Заполнение сделал, случайный выбор тоже, а вот ограничить проводимую корректировку по количеству обрабатываемых записей не могу. Ввожу счетчик и условие, что после такого то числа никакие записи изменяться не должны. В редакторе все выглядит правдоподобно, но как только запускаю корректировку выясняется, что счетчик на основе &uf('SN') каким то невероятным образом постоянно сбрасывается, и ограничительное условие естественно не выполняется, потому как счетчик просто не добирается до нужного значения. Ниже привожу фрагмент кода. Очень надеюсь, что кто нибудь поможет разобраться.

&uf('+1W10#',&unifor('R1')),
if &uf('SA')='' then &uf('S0') fi,
if &uf('+6')<>'0' and &unifor('+1R10')='1' and v51:'ЦОДИ' and v51:'2009' and val(&uf('SA'))<val('20')
then &uf('S1'), &uf('SA') fi

//здесь поля заполняются значением счетчика для наглядности

Re: Счетчики
Пользователь: Alio (IP-адрес скрыт)
Дата: 14, December, 2009 10:52

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

Re: Счетчики
Пользователь: taumaturg (IP-адрес скрыт)
Дата: 14, December, 2009 11:11

Цитата:
Не понял, что Вы делаете, но...
Я заполняю поле v40 определенным значением у конкретного количества записей, проводя глобальную корректировку.

С глобальными переменными точно такая же история, после того как организованный с помощью них счетчик доходил до значения ограничения, допустим числа 50 (количество записей которые необходимо откорректировать), значение переменной сбрасывалось в 1 и формат опять обрабатывал все записи до конца не реагируя на условие. Может дело с областью видимости, или с областью памяти которая возможно используется ИРБИС для других нужд и он затирает значения глобальных переменных. Ума не приложу, код вроде прозрачный донельзя и вместе с тем не работает ;(

Re: Счетчики
Пользователь: ochagova (IP-адрес скрыт)
Дата: 14, December, 2009 11:33

Мне, кажется, надо искать в самой глобальной, где-то в ней обнуляется. Или попробуйте запускать ее, отключая автоввод

Re: Счетчики
Пользователь: taumaturg (IP-адрес скрыт)
Дата: 14, December, 2009 14:03

&uf('+7W500#',f(val(&uf('+7R500'))+1,0,0)), &uf('+7R500')

Увеличение значения 500# происходит только до 100 и сбрасывается, вопрос - почему?

Re: Счетчики
Пользователь: taumaturg (IP-адрес скрыт)
Дата: 14, December, 2009 14:07

сбрасывание происходит после каждой сотой записи ;(

Re: Счетчики
Пользователь: Михайленко Илья (IP-адрес скрыт)
Дата: 21, December, 2009 10:01

Долго пытался понять зачем, решил что Вам виднее :)
Цитата:
Оффтопик
Все же забавно: программисты иногда ощущают себя изготовителем швабр. Вроде делаешь эту швабру что бы можно было пол помыть, а оказывается ей еще можно подвигать шторы и выгнать кота из-под кровати. Интересно и приятно :)
Запускали из каталогизатора? Каталогизатор разбивает запросы на глобальную корректировку на порции (отсюда и прогрессбар движется "рывками" - после обработки каждой порции). Соответственно, Ваша ГК (и вместе с ней инициализация) запускается не один раз... Т.е. реально (с точки зрения сервера) происходит несколько независимых ГК на разных массивах записей.

Варианты - либо ограничивать кол-во записей при запуске ГК, либо пользовать АРМ Корректор и писать такие скрипты в нем используя механизм его переменных.

В корректоре скрипт выглядел бы примерно так (задачу до конца не понял, поэтому только шаблон):

VAR V=0;
CHECKISIS("RDR","(V=$)") // второй параметр - поисковый запрос
{
 IF (V<1000)
 {
  // тут обработчик каждой записи
  CHECKFIELD("40","Сведения о взятой книге")
  {
   REPEATABLE(); // Указываем что поле повторяющееся
   // тут обработчик каждого повторения поля внутри каждой записи
  }
  V=V+1;
 }
}

Re: Счетчики
Пользователь: Куделя (IP-адрес скрыт)
Дата: 21, December, 2009 10:27

> Варианты - либо ограничивать кол-во записей при
> запуске ГК, либо пользовать АРМ Корректор и писать
> такие скрипты в нем используя механизм его
> переменных.

Либо пользовать какую-нибудь запись в той же или другой БД для хранения и увеличения счетчика (через CORREC), о чем писалось в нескольких ветках

Иркутская ОГУНБ
ИРБИС64.21Турбо
WebИРБИС-PHP

Re: Счетчики
Пользователь: ochagova (IP-адрес скрыт)
Дата: 21, December, 2009 14:27

"сбрасывание происходит после каждой сотой записи " - это результат порционности выполения глобальной от клиента на сервере. Действительно есть параметр, он скрыт, его, конечно можно написать явно. Но это плохой путь, может привести к невозможности сервером передавать большие объемы.
Лучший вариант - в 9.1 использовать режим глобальной из Администратора. Он работает как файл-сервер и не имеет ограничений на количества обр-х записей.



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