Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис    FTP-сервер
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Страницы: 12>>
Страница: 1 из 2
Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 15, December, 2006 12:28

Есть поле "Шифр электронного документа", ввод осуществляется через иерархический справочник, который добавляет первую часть значение поля, и хотелось бы сделать так, чтобы вторая часть добавлялась автоматом.
Например есть три раздела в иерархическом справочнике: 1a - описание,2a - описание,3a - описание. И при вводе к первой части просто добавлялось число:
1а001
1а002
1а003
.....
2а001
2а002
2а003
.....

Возможно ли это?



Редактировано 2 раз. Последний раз 24.12.2015 00:03 пользователем Кирилл Соколинский (СЗТУ).

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 15, December, 2006 12:46

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

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 15, December, 2006 15:42

Да, я понимал, что автодобавление происходить будет при сохранении, но можете направить меня, в какую сторону копать, я именно не представляю, как это работает, или хотябы ссылку на форуме, где что-нить подобное делалось. Конечно, я и сам поищу, но мало ли, я здесь не так давно, что-нить могу пропустить.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 15, December, 2006 15:47

а-а, я понял, вы имели ввиду AUTOIN.GLB?

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 15, December, 2006 16:47

Да. Я имел ввиду именно autoin.gbl. Алгоритм примерно следующий:
1. Создаете запись, у которой в поле 920 (вроде оно отвечает на указание рабочего листа) прописываете значение к примеру SETT. Это будет означать, что эта запись будет представлять собой настроечную запись базы.
2. Далее создаете словарь по этому полю. Делается это для того, чтобы можно было получить доступ к данным этой записи. Помните, что такая запись у вас должна быть единственной в базе.
3. В автоин.гбл прописываете алгоритм изменения значения указанного вами поля на нужное. При этом используются данные, введенные пользователем + последний введенный номер из настроечной записи. Далее изменяем настроечную запись так, чтобы последнее введенное число было на 1 больше.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 15, December, 2006 17:21

а можно еще раз по п.1, я не понял куда нужно прописывать значение SETT, и что такое настроечная запись?

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 15, December, 2006 17:23

Или, может вы помните, где в ИРБИСе можно подобный пример с настроечной записью посмотреть?

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 15, December, 2006 23:29

Пример такой используется в базе комплектования. Не помню, правда, для каких целей, но там, вроде бы, первая запись должна быть настроечной. Настроечная запись, это обычная запись, но из форматов к ней можно достучаться по какому-то заранее четко определенному значению (либо по MFN, что не правильно, либо по термину словаря). В любом случае запись содержит какие-то настроечные параметры базы. Это что-то вроде ини-файла, только работать я такой штукой, чуть по сложнее. Точно не помню, были ли попытки на форуме сделать что-то похожее. Вроде были, но найти я ничего не смог.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Куделя (IP-адрес скрыт)
Дата: 17, December, 2006 15:36

В базе комплектования примера такого нет. Там увеличение максимальных значений в записи POLZV "зашито" в код.
Использование для этих целей autoin.gbl имеет место у нас, на нем основано автоматическое присвоение номеров читательских билетов и идентификаторов в БД RDR. Технология действительно такова, как она описана г-ном Паневым:
1) создаеся запись с некоторым произвольным уникальным кодом рабочего листа. Находиться она может,естественно, в любой позиции в БД, поскольку доступ к ней осуществляется по словарю.
2) в этой записи определяется поле "счетчик", где храниться нужное максимальное значение
3) При сохранении записи значение поля берется по ссылке из поля-счетчика обычным методом ref
4) после этого используется оператор глобальной корректировки CORREC в котором значение поля-счетчика увеличивается на единицу

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

Иркутская ОГУНБ

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 18, December, 2006 15:06

полностью согласен по поводу отдельной базы. Вообще считаю, что в Ирбис стоит ввести такую настроечную базу по умолчанию. Очень удобно было бы. Нужно только подумать, что туда можно положить.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Куделя (IP-адрес скрыт)
Дата: 19, December, 2006 06:12

Туда много что можно и нужно положить (хотя вопрос конечно сильно обсуждаемый). В свое время отказались от 20 "справочных" записей в БД ЭК в пользу внешних mnu и это было правильно - не место им было в одной базе, но теперь это в принципе можно легко организовать используя uf. Причем этот метод не хуже чем использование директории Deposit под mnu, а пожалалуй и лучше. Во всяком случае для 64 с его возможностями разграничения прав для пользователей самой системы это очень хорошо. Только вот какие данные и справочники там будут уместны - ниверсального набора пожалуй не найдется...

Иркутская ОГУНБ

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 19, December, 2006 11:58

Ну блин, еще такого небыло - я зашел в тупик, ладно было что не знал чем делать, или где искать, но теперь и то, и то есть, а как делать не знаю...пока.
P.S. Извените за флейм.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 19, December, 2006 19:58

Приведу образец кода, который может быть подписан в конец AUTOIN.GBL любой базы. Предназначен для автоматической для автоматической простановки штрихкодов из 7 цифр.

//


Простановка штрихкода
ХХХХХ
ADD
910^h
F
&uf('+1W766#',&uf('DCMPL,|VD=POLZV|,"9"v4910')),(if p(v910) then if a(v910^h) and v910^d='АБ' and 'U0':v910^a then &uf('+1W766#',f(val(&uf('+1R766'))+1,0,0)),&uf('+1R766')fi,fi#),&uf('+1W766#')
XXXXXXXXXXXXXXXXXXX
REP
910^h
F
(if p(v910) then if v910^h.1='9' then v910^h*1 else v910^h fi,fi#),
XXXXXXXXXXXXXXXXXXX
//


Обновление данных о максимальном штрихкоде
ХХХХХ
CORREC
'CMPL'
&uf('+1W766#'),(if p(v910) then if val(v910^h)>val(&uf('+1R766')) then &uf('+1W766#'v910^h) fi,fi#),&uf('+1R766')
'VD=POLZV'
XXXXXXXXXXXXXXXXXXX
REP
4910
F
if val(v4910)<val(v1001) then v1001 else v4910 fi,
XXXXXXXXXXXXXXXXXXX
DEL
1001

XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
END
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 20, December, 2006 16:12

'VD=POLZV'

собственно с этим и есть проблема,что это, как оно работает?
Я так понимаю - это термин доступа, или настроечная запись, но где вы ее взяли, и что она означает в описанном формате?

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 20, December, 2006 16:33

Читайте:
1. Формат команды CORREC в сценариях глобальной корректировки
2. Можно глянуть тут [irbis.gpntb.ru]
Будут еще вопросы, пишите.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 21, December, 2006 16:07

Начну сначала:
1.Создал произвольную базу данных TEST, в ней создал рабочий лист с тремя полями(Для трех счетчиков).
2.Сделал ввод в эти поля ввод через справочник.
3.Сделал в TEST.FST ТВП по этим полям(метод индексирования 0).
Дальше вопросы:
2. обязательно нужно, при вводе через словарь, создавать формат?
3. Если по полю в файле DBNAME.FST будет создана запись, означает ли это, что значения записи этого поля попадут в справочник?

Если все правильно, то записи попали в словарь, дальше:
1.В базе, где нужно добавлять значение счетчика, создано поле, в нем вложенный Раб. Лист, который разделен на два поля, первое поле открывает иерархический справочник, в котором выбирается первая часть записи(это кусок ББК, например 2.24В), во втором подполе будет значение, которое берется со счетчика.

1. Правильно ли это? Имею ввиду, будет ли так, что формат сможет брать еще не сохраненные данные, и смотреть на них? Т.К. предполагаю, что формат будет смотреть на значение в первом подполе, и в зависимости от этого, выбирать, с какого счетчика брать значение.

Дальше я немогу понять, как метод ввода влияет на ввод через autoin.glb, если точнее, формат, который будет брать значение из другой базы, где должно указываться, что брать значение из другой базы данных? Это указывается в autoin.glb, или в "Дополнительная информация" подполя, в котом будет выводится значение счетчика в конечном итоге?

Пока все.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Куделя (IP-адрес скрыт)
Дата: 22, December, 2006 05:14

-AND- написал(а):
-------------------------------------------------------
> 2.Сделал ввод в эти поля ввод через справочник.

А зачем? Вы собираетесь кому-то позволять "накручивать" счетчики "вручную"? Да даже если так - это же просто counters... что вы туда собираетесь вводить из справочников?

> 3.Сделал в TEST.FST ТВП по этим полям(метод
> индексирования 0).

Для счетчиков это в общем случае совсем не обязательно. См. ниже

> Дальше вопросы:
> 2. обязательно нужно, при вводе через словарь,
> создавать формат?
Все зависит от целей: если вы не создадите формат, который нужен единственно для того, чтобы в поле переносился не собственно термин словаря, а некоторые (вообще-то произвольные) данные из ПЕРВОЙ записи которая будет найдена в результате поиска по этому термину. Если этого не сделать то, повторяюсь, перенесен будет сам выбранный ТЕРМИН словаря (без префикса) со всеми вытекающими, как-то: верхний регистр символов и ограничение на длину (32-<Длина префикса> в И32 и 256-<Длина префикса> в И64). Мне кажется, что для счетчика это некритично, хотя из вопроса не совсем понятно что, куда и зачем вы собираетесь вводить через словарь: значение счетчика в БД ТЕСТ? значение счетчика в БД ЭК? Или?

> 3. Если по полю в файле DBNAME.FST будет создана
> запись, означает ли это, что значения записи этого
> поля попадут в справочник?

Нет. Не попадут. Никогда и ни за что. См. совсем ниже (в З.Ы.)

> Если все правильно, то записи попали в словарь,
> дальше:
> 1.В базе, где нужно добавлять значение счетчика,
> создано поле, в нем вложенный Раб. Лист, который
> разделен на два поля, первое поле открывает
> иерархический справочник, в котором выбирается
> первая часть записи(это кусок ББК, например
> 2.24В), во втором подполе будет значение, которое
> берется со счетчика.

Вот тут опять вопрос: а зачем вам, если это именно счетчик и, более того, АВТОсчетчик вообще подключать к подполю какие-то расширенные средства ввода. Он же авто и будет формироваться самостоятельно. Или я не правильно понял замысл? Впрочем как и г-да Панев и Соколинский. Потому что мы то говорим не об интерактивном вводе значения счетчика из словаря, а о его программном добавлении в определенное поле.

> 1. Правильно ли это? Имею ввиду, будет ли так, что
> формат сможет брать еще не сохраненные данные, и
> смотреть на них? Т.К. предполагаю, что формат
> будет смотреть на значение в первом подполе, и в
> зависимости от этого, выбирать, с какого счетчика
> брать значение.
> Дальше я немогу понять, как метод ввода влияет на
> ввод через autoin.glb, если точнее, формат,
> который будет брать значение из другой базы, где
> должно указываться, что брать значение из другой
> базы данных? Это указывается в autoin.glb, или в
> "Дополнительная информация" подполя, в котом будет
> выводится значение счетчика в конечном итоге?

Продолжая: да именно так. Формат будет смотреть на значение в первом подполе и т.д. Но не формат подключенный к полю или подполю, а формат оператора ADD в autoin.GBL.

З.Ы.: Уважаемый -AND-! Мы - еще нестарые,но уже вполне больные (на голову) люди, измученные нарзаном и библиотечной автоматизацией. Возможно мы уже не фонтанируем идеями так, как то бывало в далеком 2001 или 2003, но посильную помощь оказать все еще можем, ибо "молодым везде у нас дорога". :)))
Тока большая просьба (и не в первый уже кажется раз) - покайтесь и ПРИМИТЕ ТЕРМИНОЛОГИЮ из документации к Ирбису. Два раза перечитывал пост, чтобы "въехать" в то, что у вас справочник - это словарь, поле - подполе, а запись - то запись в базе, то строка с термином в словаре. Именно поэтому у меня не пднимается рука ответить на вопрос "Если по полю в файле DBNAME.FST будет создана запись, означает ли это, что значения записи этого поля попадут в справочник?"

Иркутская ОГУНБ

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 22, December, 2006 10:30

Полностью согласен с Максимом. Как по поводу нарзана, так и по поводу терминологии. Пост я ваш прочитал почти сразу, как вы его опубликовали, но отвечать рука не поднимается, поскольку, что бы знать, что отвечать, нужно перечитать пост как минимум 3 раза. А это время. А его та и нету. По ночам я не отвечаю, ибо могу такого наговорить :). По ночам я только программирую :)...

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 23, December, 2006 17:10

А теперь?:

Словарь не хранит в себе никаких данных предварительно. Словарь - это механизм, который делает выборку из записей базы данных(книжек, и не только, уже введенных каталогизатором) в соответствии с форматом выборки данных, указанным для данного поля/подполя, и в соответствии с ним же, выводит в это поле/подполе результат выборки из первой попавшейся записи, которая подходит(подходит под формат выборки данных). Так?

Задум у меня такой:

Шифр:он будет состоять из двух частей соединенных между собой, первая - кусок ББК(ББК до второго ветвления, например 2.20Б), вторая часть это порядковый номер файла. Шифр - это и будет название файла на винте сервера.

В Ирбисе: В базе электронной литературы будет поле с двумя подполями, первое подполе - облегченный ББК, значение которого каталогизатор будет выбирать из иерархического справочника. Второе подполе - порядковый номер файла, там будет организован автоматический ввод через словарь с помощью AUTOIN.GBL из БД счетчиков, а значение для ввода выбираться в зависимости от того, что каталогизатор выбрал в первом подполе(т.е. если каталогизатор выбрал в первом подполе значение 2.20, то во втором подполе будет выбрано текущее значение счетчика из поля 20 БД счетчиков). А подполя между собой будет обьеденять формат показа при просмотре(в левом-нижнем углу АРМ Каталогизатор).


Дальше флейм: больше постараюсь не грешить. С этого поста, кроме меня, наверно, уже никто не сможет вынести ничего полезного для себя. Но! Я разберусь и сделаю в конце пост с доступным для всех описанием того, что я делаю.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 24, December, 2006 20:26

Идея интересна, но хочу предупредить о проблемах, с которыми Вы неминуемо столкнётесь.
Глобальная корректировка не предусматривает запись в поле, метка которого определяется форматом. Поэтому чтобы пополнять счётчики полей, соответствующие значениям верхнего уровня ББК(цифра до точки), потребуется около 70 строк глобальной корректировки. Ещё столько же нужно будет добавить, если Вы не захотите вручную задавать начальные значения каждого поля-счётчика. Я рекомендовал бы воспользоваться для хранения счётчиков одним повторяющимся полем. Это немного усложнит код, но позволит в сотни раз сократить его объём. В первом подполе этого поля должна будет находиться цифра ББК, а во втором - последний номер+1. Например:
5000: ^A20^B0066
5000: ^A77^B0090
5000: ^A36^B0085
Приведу пример того, как можно ВЗЯТЬ новое значение счётчика из базы COUNT, где есть запись созданная в рабочем листе MCOUNT. Предположим, вставка должна быть выполнена в подполе 4000^B где в подполе ^A находится индекс ББК.
ADD
4000^b
F
if a(v4000^b) then &uf('+1W200#',&uf('G0.',v4000^a)),&uf('DCOUNT,|VD=MCOUNT|,',"(if p(v5000) then if v5000^a=&uf('+1R200') then v5000^b, break fi,fi)"d920)),&uf('+1W200#') fi
XXXXXXXXXXXXXXXXXXX

Я готов написать вторую часть кода, которая будет выполнять обновление записи со счётчиками, если Вы немного подробнее расскажете о предполагаемой технологии обработки электронных документов.
1. Вам требуется подключить большой массив электронных документов или подключать их по мере поступления?
2. Почему Вы считаете необходимым, чтобы имена электронных документов несли смысловую нагрузку? Почему в качестве имен не могут выступать такие формальные идентификаторы, как порядковые номера или случайные числа?
На конференции я посвятил половину своего доклада обоснованию того, что всякое дублировании в имени файла любой библиографической информации – ничем не оправданная трата сил и времени. Теперь мне очень интересно, почему Вы выбрали именно этот, достаточно трудоёмкий способ структурирования электронной коллекции. ;)))



Редактировано 1 раз. Последний раз 26.12.2006 15:43 пользователем Кирилл Соколинский (СЗТУ).

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 26, December, 2006 14:25

Большое спсб!!!

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 27, December, 2006 14:03

Объяснюсь почему так: библиотекари это своего рода параноики,и им не важно какая это база данных(электронной литературы или печатной), нужна статистика которая предполагает мониторить направленность литературы, читается. Но поскольку они не совсем понимают как происходит книгополучение полнотекстовых документов эл. документов читателями, нужно вести эту статистику. Вот я и подумал, а почему не сделать так, что бы имя файла несло в себе тематику книги, и при этом я поставлю программу, которая будет вести аудит открытия файлов .PDF, .DJVU и т.п., и вот таким образом у нас получится статистика направленности литературы.

Уважаемые библиотекари:не обежайтесь, это сказано не для того чтобы Вас обидеть:). Я понимаю что у Вас стандарты, что статистика в библиотеках нужна. Но хочу сделать для так, чтобы Вам приходилось делать работы как можно меньше.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 29, December, 2006 01:24

-AND- написал(а):
-------------------------------------------------------


> они не совсем понимают как происходит
> книгополучение полнотекстовых документов эл.
> документов читателями, нужно вести эту статистику.
> Вот я и подумал, а почему не сделать так, что бы
> имя файла несло в себе тематику книги, и при этом
> я поставлю программу, которая будет вести аудит
> открытия файлов .PDF, .DJVU и т.п., и вот таким
> образом у нас получится статистика направленности
> литературы.

Как показывает мой опыт, в автоматизированных процессах библиотекари не в состоянии решать методические вопросы. Они просто не обладают необходимыми знаниями, чтобы определять эффективность отдельных технических решений и тем более их комбинаций. Если Вы возьмёте методическую работу на себя, то это не упростит Вашу жизнь, но, во всяком случае, даст уверенность в том, что Ваша работа не бессмысленна.

Мне кажется, что проще всего было бы вести статистику выгрузки электронных документов, обеспечив подсчёт в программе-посреднике между пользователем и документом. Т.е. ссылаться на специальную программу подсчёта, а в запросе указывать название скачиваемого файла и ББК.
Приблизительно так:

[library.ru]

Что касается электронных документов, то могу предложить проверенное на собственном опыте весьма эффективное решение.
1. В Total Commander выполните поиск файлов электронных документов, выведите их на панель, переименуйте посредствам функции "Переименовать группу файлов", назначив им порядковые номера, и скопируйте в одну папку.
2. Измените ссылку формата WEB ИРБИС или формата просмотра таким образом, чтобы ссылка там формировалась на основе данных из созданного поля и в неё добавлялся как постоянная часть запроса путь к документам и их расширение(впрочем, при использовании дополнительной программы это может выполняться уже в ней).
3. Добавьте в рабочий лист новое поле(3333 например), куда будет вводиться только номер файла, без пути и расширения и предоставьте Вашим сотрудникам вводить в него номера файлов.

Таким способом трём нашим каталогизаторам удалось подключить в течение недели, в свободное от работы время 500 документов. Принимая во внимание наши темпы работы, это очень хороший результат.

К сожалению, из Вашего сообщения нельзя заключить идёт ли речь о выставлении электронной коллекции в интернете или о локальном доступе к файлам. Нельзя понять под какой операционной системой работает сервер, на котором будут храниться документы и как будет работать программа, отслеживающая обращения к файлам. В то же время, эффективность конкретных решений будет определяться именно этими обстоятельствами...

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 04, January, 2007 10:55

Извените, удалялся на праздники.
Вобщем так у меня это выглядит:
Это маленький институт. В нем два домена(корневой и дочерний), КД естестно на WINDOWS 2003Server. В корневом домене, сидит весь институт, в дочернем только библиотека(эл. чит. зал). Доступ(только локальный, Web-Ирбиса у нас нету:( ) предполагается как из этого читального зала(12 терминалов), так и из любого места института(с любого компьютера и ноутбука через безпроводную сеть).
Программа умеет мониторить файловую систему, делает это с помощью фильтров по разширению файла, месту, которое нужно мониторить(например E:\book), так же можно в фильтре указать, какой отслеживать процесс(Foxitrider.exe,WinDJVUView.exe), и пользователей(по доменным группам например). Складывает логи эта программа в базу MS SQL.

Спасибо за совет, все попробую. Но счетчик сделаю, это дело принципа:)



Редактировано 1 раз. Последний раз 04.01.2007 10:57 пользователем -AND-.

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 04, January, 2007 13:13

Если поподробней, то вижу это так:

1.Есть база данных электронной литературы.
2.В нее добавил поле 927: Шифр электронного документа.
3.В этом поле сделал два подполя, из которых
927^H - подполе, в котором будет выбираться из иерархического справочника индекс ББК(я его немного изменил, а точнее поменял русскую букву на английскую, для того чтобы можно было в ссылку такое название поместить и для совместимости).
927^M - подполе для номера, взятого со счетчика с помощью AUTOIN.GBL.
Потом формат вывода на просмотр будет соединять эти подполя воедино. Чтобы человек(каталогизатор или читатель) в окошке показа(слева-внизу) видел эту запись как единый, непрерывный шифр. Например:
927^H имеет значение 20A,
927^M имеет значение 1
В окошке просмотра эта строка видна как: Имя файла:20A1

927^H имеет значение 30D,
927^M имеет значение 2
В окошке просмотра эта строка видна как: Имя файла:30D2

Дальше флейм: я, насамом деле не тупой, просто имея только описание сложно это самому разрулить. У меня ведь нет наставника(кроме Вас).
И еще вопрос: что это за комманда Break? И зачем в записи
if a(v4000^b) then &uf('+1W200#',&uf('G0.',v4000^a)),&uf('DCOUNT,|VD=MCOUNT|,',"(if p(v5000) then if v5000^a=&uf('+1R200') then v5000^b, break fi,fi)"d920)),&uf('+1W200#') fi
d920?

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 04, January, 2007 16:17

И всеравно возвращаясь к настроечной записи, я не понял как именно она делается, где именно указывается эта запись, в каком месте должно указываться, что в поле 920 VD=MCOUNT?

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 05, January, 2007 13:19

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

1.Создал настроечную базу данных(все по новой, исходя из ваших советов).
1.1 В этой базе данных создал поле 5000 для счетчика(допустим счетчик один).
1.2 Здесь же создал поле для указания РЛ, поле с номером 920, в нем значение по умолчанию CNT.
1.3 Для поле 5000 делаю ввод через словарь.
Дальше вопросы: ТВП для словаря(DBNAME.FST), в руководстве написано, что элементы созданные по этой ТВП образуют словарь терминов доступа. Естественно DBNAME.FST моей вновь созданной базы данных пустой. Значит ли это что пока в DBNAME.FST не будут присутствовать форматы выборки по полю 5000 и 920, к значениям этих полей нельзя обратится, поскольку нету соответствующих терминов доступа?
И еще |VD=MCOUNT| - это термин доступа? Если да, то как выглядит формат выборки для этого термина доступа, и где этот формат был написан(в ТВП или в поле 920, при вводе через словарь)?

Re: Автосчетчик для поля в каталогизаторе
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 08, January, 2007 16:25

-AND- написал(а):
-------------------------------------------------------

> 1.Есть база данных электронной литературы.
> 2.В нее добавил поле 927: Шифр электронного
> документа.
> 3.В этом поле сделал два подполя, из которых
> 927^H - подполе, в котором будет выбираться из
> иерархического справочника индекс ББК(я его
> немного изменил, а точнее поменял русскую букву на
> английскую, для того чтобы можно было в ссылку
> такое название поместить и для совместимости).
> 927^M - подполе для номера, взятого со счетчика с
> помощью AUTOIN.GBL.

Поскольку Вы хотите сделать поле 927 повторяющимся, глобальная корректировка должна выглядеть следующим образом:
ADD
927^m
F
(if p(v927) then if a(v927^m) then &uf('+1W200#',&uf('G0.',927^h)),&uf('DCOUNT,|VD=CNT|,',"(if p(v5000) then if v5000^a=&uf('+1R200') then v5000^b, break fi,fi)"d920)),&uf('+1W200#') fi,fi#)
XXXXXXXXXXXXXXXXXXX


> И еще вопрос: что это за комманда Break? И зачем в
> записи
> if a(v4000^b) then
> &uf('+1W200#',&uf('G0.',v4000^a)),&uf('DCOUNT,|VD=
> MCOUNT|,',"(if p(v5000) then if
> v5000^a=&uf('+1R200') then v5000^b, break
> fi,fi)"d920)),&uf('+1W200#') fi
> d920?

BREAK - команда выхода из повторяющейся группы(цикла). Как и многие другие полезные команды – не документирована. Появилась, если мне не изменяет память, в версии 2005.1(кстати, какую версию Вы используете?). Поскольку все значения 5000^a являются здесь уникальными, то эта команда не обязательна, но она позволяет увеличить скорость получения номера, сразу прерывая процесс "сканирования" повторений после нахождения нужного значения.

> И всеравно возвращаясь к настроечной записи, я не
> понял как именно она делается, где именно
> указывается эта запись, в каком месте должно
> указываться, что в поле 920 VD=MCOUNT?

Чтобы создать настроечную запись нужно:
1. Создать новую запись в любой базе;
2. Пролистать вкладки и найти поле "920: Имя рабочего листа";
3. Вместо того значения, которое будет находиться там по умолчанию – PAZK, ввести MCOUNT;
4. Сохранить запись.
Вот и всё!

> И еще |VD=MCOUNT| - это термин доступа? Если да,
> то как выглядит формат выборки для этого термина
> доступа, и где этот формат был написан(в ТВП или в
> поле 920, при вводе через словарь)?

Да, VD=MCOUNT - это термин доступа, ключ для поиска записи в словаре. VD= - префикс, а MCOUNT - сам термин словаря, которым в данном случае является название рабочего листа.
Попробую пояснить как можно проще. Словарь - это одна большая свалка текстовых строк выделенных из библиографических записей. Чтобы можно было определить, какой термин является автором, а какой заглавием, им назначаются префиксы, состоящие из латинских букв и закачивающиеся, как правило, знаком [=]. То, какой префикс назначается какому термину, определяется в файле [имя базы].fst. Чтобы в словаре появилось значение VD=MCOUNT нужно добавить в этот файл строку:
920 0 "VD="v920
Если настроечная запись находится в CMPL, то там, в CMPL.FST подобная строка уже есть. Ничего добавлять не нужно.
Откройте файл c расширением l01 вашей библиографической базы в любом просмотрщике и попробуйте найти там префиксы [A=], а затем посмотрите на фамилии авторов в модуле Читатель. Многое для Вас тут же прояснится.

> Но счетчик сделаю, это дело принципа:)

Если это "дело принципа", то конечно нужно довести его до конца, но затем я всё-таки рекомендую остановиться на более корректном способе решения данной задачи. ;) Вы можете установить WEB-сервер, действующий в интранете. Если Вы программируете, то Вам гораздо проще будет написать скрипт на PHP или любом другом языке, чем разбираться в премудростях ирбисоводства. Скрипт для обработки HTTP запросов такого вида:
http ://servername/counter.php?filename=333&bbk=63
где filename - имя файла, а bbk - систематический индекс. Он будет возвращать пользователям файл который им нужен, обеспечивать защиту электронной коллекции, если это требуется, и конечно вести необходимые Вам протоколы.
Что касается самой ссылки, то она будет очень легко формироваться в формате просмотра(помогу сделать). У нас она выглядела так:
[www.elib.nwpi.ru]

Вы получите невероятное удовольствие, перейдя из редактора форматов в Zend PHP Studio, а библиотекари будут благодарны Вам за избавление от бессмысленной работы. :)

PS
> я, насамом деле не тупой, просто имея только
> описание сложно это самому разрулить.

Если бы я сомневался в этом, то не стал бы отвечать на Ваши вопросы. От ИРБИСа кружится голова даже у очень хороших программистов. :)

> Извените, удалялся на праздники.

Судя по тому, что 4 числа Вы уже вышли на работу можно предположить, что Вы проживаете где-то в СНГ. Нельзя ли полюбопытствовать какую библиотеку Вы представляете?



Редактировано 2 раз. Последний раз 08.01.2007 16:54 пользователем Кирилл Соколинский (СЗТУ).

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 09, January, 2007 16:53

Я представляю библиотеку института ИНСО в Днепропетровске(Украина).Институту 5 лет, он пока маленький, и библиотека в стадии развития, поэтому у нас есть время и возможность "поэксперементировать" перед тем как перейти в разряд серьезных библиотек и стать лучшими в городе. Мы все здесь на это настроены, и я тоже.
Ирбис у нас 2003.2, но файл FORMAT32.DLL у меня от 2005.2(знаю,я согрешил,один знакомый поделился), полагаю, что он и на 2003.2 будет так же работать.
Да без программирования плохо, чем больше я углубляюсь компьютерное ремесло, тем больше это понимаю, в ближайшее время начну его осваивать.
Спасибо за помощь, ушел делать...

Re: Автосчетчик для поля в каталогизаторе
Пользователь: -AND- (IP-адрес скрыт)
Дата: 11, January, 2007 13:01

Сделал первый вариант своего счетчика, но при сохранении введенного документа пишет ошибку 25: дальше формат.
При том что счетчик один, поле в котором значение счетчика(поле 5000) не повторяющееся(пока решил сделать попроще, потом перейду к усложнению), база данных с настроечной записью называется COUNT, рабочий лист, который служит термином доступа называется Ncount(поле 920).
В настроечной базе данных сделал в файле COUNT.FST добавил запись следующего содержания: 920 0 "CN="v920.

В базе данных электронной литературы поле 927, с двумя подполями:
927^H - индекс ББК(как говорил раньше)
927^M - значение счетчика взятое из базы данных COUNT с помощью AUTOIN.GBL.
В автоин добавил сапись следующего содержания:

ADD
927^M
F
if p(v927^H) then if a(927^M) then &uf('+1W22#',&uf('DCOUNT,|CN=Ncount|',"if p(v5000) then v5000 fi"d920,fi)),&uf('+1R22') fi
XXXXXXXXXXXXXXXXXXX
CORRECT
'COUNT'
if p(v5000) then if val(&uf('+1R22'))=val(v5000) then 'val(v5000)+1' fi, &uf('+1W22#')fi
'CN=Ncount'
XXXXXXXXXXXXXXXXXXX
DEL
1001


При сохранении записи пишет Ирбис:25 Ошибка формата (дальше формат из оператора ADD).

Пробовал другой, более простой вариант, без добавления глобальной переменной, и без проверки значения в поле 5000 перед увеличением на еденицу в операторе CORRECT, все равно пишет тоже самое. Я возможно перемудрил с литералами?

Страницы: 12>>
Страница: 1 из 2


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