Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Каталогизатор :  ИРБИС Irbis
 
Изменения в autoin.gbl
Пользователь: Мончегорская ЦБС (IP-адрес скрыт)
Дата: 12, February, 2018 08:05

Здравствуйте! Нам необходимо внести в autoin.gbl дополнительное условие. При сохранении записи нужно добавлять определенное значение в 606^0, если подполе не заполнено. Ирбис должен проверять заполнено ли подполе, если нет, то записывать значение, в противном случае игнорировать.И так во всех повторениях поля.
Сами составить не можем нужную запись. Помогите пожалуйста.

Re: Изменения в autoin.gbl
Пользователь: Сорокина Лариса (IP-адрес скрыт)
Дата: 12, February, 2018 11:35

Мончегорская ЦБС написал(а):
-------------------------------------------------------
> Здравствуйте! Нам необходимо внести в autoin.gbl
> дополнительное условие. При сохранении записи
> нужно добавлять определенное значение в 606^0,
> если подполе не заполнено. Ирбис должен проверять
> заполнено ли подполе, если нет, то записывать
> значение, в противном случае игнорировать.И так во
> всех повторениях поля.
> Сами составить не можем нужную запись. Помогите
> пожалуйста.
ADD
606^0
F
(if p(v606)then if v606^0=''then'111'else # fi fi/)

Re: Изменения в autoin.gbl
Пользователь: Мончегорская ЦБС (IP-адрес скрыт)
Дата: 12, February, 2018 12:53

(if p(v606)then if v606^0=''then'111'else # fi fi/)

Вместо '111' наше значение, правильно?

Re: Изменения в autoin.gbl
Пользователь: Сорокина Лариса (IP-адрес скрыт)
Дата: 12, February, 2018 15:29

Мончегорская ЦБС написал(а):
-------------------------------------------------------
> (if p(v606)then if v606^0=''then'111'else # fi
> fi/)
>
> Вместо '111' наше значение, правильно?


Да

Re: Изменения в autoin.gbl
Пользователь: Мончегорская ЦБС (IP-адрес скрыт)
Дата: 12, February, 2018 16:27

Вставили строки в наш файл, не записывает значение =(

Re: Изменения в autoin.gbl
Пользователь: Мончегорская ЦБС (IP-адрес скрыт)
Дата: 13, February, 2018 07:30

Прикладываем наш файл.

Вложения: autoin.gbl (91KB)  
Re: Изменения в autoin.gbl
Пользователь: Сорокина Лариса (IP-адрес скрыт)
Дата: 13, February, 2018 08:14

Мончегорская ЦБС написал(а):
-------------------------------------------------------
> Прикладываем наш файл.


Приложите еще запись (файл экспорта), куда не записывает.

Re: Изменения в autoin.gbl
Пользователь: Мончегорская ЦБС (IP-адрес скрыт)
Дата: 13, February, 2018 08:52

Он не к одной записи не дописывает.

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

ADD
606^0
*
'Mcbs_monch'
XXXXXXXXXXXXXXXXXXX

Вложения: withoutAutoInput.ISO (11KB)  
Re: Изменения в autoin.gbl
Пользователь: Сорокина Лариса (IP-адрес скрыт)
Дата: 13, February, 2018 10:00

Мончегорская ЦБС написал(а):
-------------------------------------------------------
> Прикладываем наш файл.


В вашем autoin.gbl ошибка. Пробелы в конце строк оператора ADD для добавления 606^0.

Re: Изменения в autoin.gbl
Пользователь: Мончегорская ЦБС (IP-адрес скрыт)
Дата: 13, February, 2018 10:11

Спасибо огромное. Вы нас очень выручили. Простите за невнимательность. Ещё раз спасибо.

Re: Изменения в autoin.gbl
Пользователь: KrVs (IP-адрес скрыт)
Дата: 06, September, 2018 09:26

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

Создали новую базу данных для необходимых нужд и там необходимо составить команды для автоввода.

В новой базе данных имеется поле 200 и поле 700 со стандартными подполями электронного каталога, а также поле 505 с переключателем "ДА/НЕТ".

Так вот нужно чтобы при наличии в поле 505 "ДА" при сохранении записи в базе данных Комлектования (CMPL) создавалась новая запись и в нее переносились данные из поля 200 и поля 700.

Какие строки необходимо добавить в автоввод, чтобы все работало?

Пробовал так, как ниже прилагаю, но ничего не работает. Хотя брал из аналогичного примера. Новая запись не создается.

Добавил в начало файла autoin.gbl новой базы данных следующие сроки:

NEWMFN
if (v504): 'ДА' then 'CMPL' else fi
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
ADD
200
XXXXXXXXXXXXXXXXXXX
v200
XXXXXXXXXXXXXXXXXXX
END
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX


И еще нужно чтобы при создании новой записи, в БД CMPL предварительно проходила проверка поля 200, если уже есть такое заглавие, равное полю 200 из новой базы данных, то запись не должна создаваться.

Re: Изменения в autoin.gbl
Пользователь: ochagova (IP-адрес скрыт)
Дата: 06, September, 2018 09:59

Вторая строка оператора NEWMFN должна давать имя БД. У вас вырабатывается ДА, но такой БД у вас, наверняка, нет.
Чтобы не было повтора, перед оператором NEWMFN надо бы сделать оператор IF, или условие встроить во вторую строку NEWMFN.
Главное - как написать условие. Можно использовать проверку на "уже есть термин в словаре от поля 200", но вы же намеренно создаете вторую запись с полем 200, так что термин уже повторяется. В общем сначала обдумайте условия.

Re: Изменения в autoin.gbl
Пользователь: KrVs (IP-адрес скрыт)
Дата: 06, September, 2018 12:16

ochagova написал(а):
-------------------------------------------------------
> Вторая строка оператора NEWMFN должна давать имя
> БД. У вас вырабатывается ДА, но такой БД у вас,
> наверняка, нет.
> Чтобы не было повтора, перед оператором NEWMFN
> надо бы сделать оператор IF, или условие встроить
> во вторую строку NEWMFN.
> Главное - как написать условие. Можно использовать
> проверку на "уже есть термин в словаре от поля
> 200", но вы же намеренно создаете вторую запись с
> полем 200, так что термин уже повторяется. В общем
> сначала обдумайте условия.

Большое спасибо. Потом пробовал делать самую обычную строку для создания новой записи без всяких условий и прочего, не работало все равно, но с проблемой разобрался. Оказывается нельзя вставлять оператор NEWMFN в самое начало файла автоввода. Из-за этого ничего не работало. Когда вставил в середину файла, между другими заданиями, то сразу все заработало и начало создаваться.
Теперь будут разбираться с условием.

Подскажите пожалуйста, как должна выглядеть строка самого простого условия. В текущей базе понятно, там просто. А как делать сравнение с полем из другой базы данных? То есть "если поле 200^A из базы данных CMPL не содержит значение поля 200^А из базы данных PTK". Как будет строка выглядеть?



Редактировано 1 раз. Последний раз 06.09.2018 12:33 пользователем KrVs.

Re: Изменения в autoin.gbl
Пользователь: ochagova (IP-адрес скрыт)
Дата: 06, September, 2018 12:36

Вам следует ознакомиться с такими операторами языка форматирования как:
ref(...., &uf('J..., &uf('D....< &uf('7...

Re: Изменения в autoin.gbl
Пользователь: KrVs (IP-адрес скрыт)
Дата: 12, September, 2018 12:56

ochagova написал(а):
-------------------------------------------------------
> Вам следует ознакомиться с такими операторами
> языка форматирования как:
> ref(...., &uf('J..., &uf('D....< &uf('7...

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

if (val(&unifor('JCMPL,',"T="v200^A))<1) then '0' else 'Внимание, дублетность! В базе данных Комплектования имеется издание с таким названием. ''См. MFN № ',&unifor('DCMPL,,mfn') fi



Редактировано 1 раз. Последний раз 12.09.2018 13:01 пользователем KrVs.

Re: Изменения в autoin.gbl
Пользователь: ochagova (IP-адрес скрыт)
Дата: 13, September, 2018 12:46

&unifor('DCMPL,!',"T="v200^A,'!,mfn')

Re: Изменения в autoin.gbl
Пользователь: KrVs (IP-адрес скрыт)
Дата: 13, December, 2018 07:23

ochagova написал(а):
-------------------------------------------------------
> &unifor('DCMPL,!',"T="v200^A,'!,mfn')


Большое спасибо.

Только никак не могу понять, как расшифровать эту строку? До сих пор никак не разберусь в этих знаках, ужасно сложно понять что и почему где ставится. А мануала нет никакого по ним с пояснениями. Что означает знак ! и почему он ставится до знака '

Так как в других примерах до знака может идти сигла из словаря - val(&uf('J,I='v903))>1. То есть I= стоит до закрывающего '

И почему идет повторение в "T="v200^A, если и в Т= и в v200^A будут одинаковые значения.

Сейчас просто пытаюсь составить формат, но не могу понять как его делать.
Нужно соотнести поле v10 в базе данных RDR с полем v700^A в базе данных IBIS.

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

Делал по аналогии с форматом выше про дублетность, но в этих знака запутался. Так как в формате требуется прописывать какое-то поле из словаря, как (T=), но такого словаря в БД IBIS нет, отдельного словаря "Фамилия" в БД IBIS.

Составил такой формат, но не работает:

if (val(&unifor('JIBIS,',,v10))<1) then '0' else 'Данный читатель является автором следующих статей: ',&unifor('DIBIS,!',v700^A,v10,'!,v200^A/') fi



Редактировано 1 раз. Последний раз 13.12.2018 07:34 пользователем KrVs.

Re: Изменения в autoin.gbl
Пользователь: ochagova (IP-адрес скрыт)
Дата: 13, December, 2018 10:37

Поясняю формат &unifor('DCMPL,!',"T="v200^A,'!,mfn')
Внутри unifor пишется формат, результатом которого должно быть:

DCMPL,!T=заглавие!,mfn

т.е. после D задается имя БД, если текущая то не указывать
Термин словаря задавать в разделителях, любых, в данном случае !
После последней запятой - формат выдачи, в данном случае mfn

Re: Изменения в autoin.gbl
Пользователь: KrVs (IP-адрес скрыт)
Дата: 13, December, 2018 14:24

ochagova написал(а):
-------------------------------------------------------
> Поясняю формат
> &unifor('DCMPL,!',"T="v200^A,'!,mfn')
> Внутри unifor пишется формат, результатом которого
> должно быть:
>
> DCMPL,!T=заглавие!,mfn
>
> т.е. после D задается имя БД, если текущая то не
> указывать
> Термин словаря задавать в разделителях, любых, в
> данном случае !
> После последней запятой - формат выдачи, в данном
> случае mfn


Огромное спасибо за пояснения. Только не пойму одну вещь, обязательно нужно указывать в формате термин словаря? Если словаря под нужное поле нет. Нельзя только по полю делать расформатирование?

Re: Изменения в autoin.gbl
Пользователь: ochagova (IP-адрес скрыт)
Дата: 14, December, 2018 11:35

Нет словаря - нет поиска. А этот unifor ищет запись (поиск) и выдает из нее то, что вы заложили.
Что такое по-вашему - "по полю делать расформатирование?"

Re: Изменения в autoin.gbl
Пользователь: KrVs (IP-адрес скрыт)
Дата: 17, December, 2018 13:52

ochagova написал(а):
-------------------------------------------------------
> Нет словаря - нет поиска. А этот unifor ищет
> запись (поиск) и выдает из нее то, что вы
> заложили.

Спасибо, всё понял.

> Что такое по-вашему - "по полю делать
> расформатирование?"

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

Теперь всё получилось, вот такая строка работает:

if v50: 'автор публикаций' then 'Данный читатель является автором следующих статей: <br/>'&unifor('7IBIS2016,!',"FAUTH="v10,'!,v200^A') else fi


Только теперь еще два вопроса.

Как вместо выделенного жирным, подключить формат? Так как нужно чтобы выводилось несколько полей по моему формату. Пробовал подключать формат через &uf('6IBF') вставив вместо v200^A, но это не работает.

И второй вопрос, как сделать перенос строк в выводе? Сейчас поле из всех найденных записей выводится подряд (прикладываю скриншот). А нужно чтобы данные из каждой найденной записи с новой строки начинались. Также пробовал вставлять в разным местах команду "/", но она не применяется.



Редактировано 1 раз. Последний раз 17.12.2018 13:54 пользователем KrVs.

Вложения: vyvod.jpg (221.4KB)  
Re: Изменения в autoin.gbl
Пользователь: ochagova (IP-адрес скрыт)
Дата: 17, December, 2018 15:01

1. Из описания:
{REF на другую БД - "один к многим"}
{формат: 7<dbn>,<"termin">,<@имя формата|формат>}
2. Т.к. формат дает файл html, то переход на др.строку даст команда html, которую надо генерировать как литерал, т.е. '<br>'

Re: Изменения в autoin.gbl
Пользователь: KrVs (IP-адрес скрыт)
Дата: 21, December, 2018 08:05

ochagova написал(а):
-------------------------------------------------------
> 1. Из описания:
> {REF на другую БД - "один к многим"}
> {формат: 7,<"termin">,<@имя формата|формат>}
> 2. Т.к. формат дает файл html, то переход на
> др.строку даст команда html, которую надо
> генерировать как литерал, т.е. ''


Спасибо. Таким образом и подключал. Но Ирбис не видит форматы. Не работают. Не знаю даже от чего это зависит. Даже один и тот же формат копируешь в другой файл, подключаешь его и он не работает, не подключается.
Работает только один @brief и всё. А если допустим весь текст файла скопировать в пустой файл с другим названием, и подключать его, то уже ничего не работает.

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

Имеется два. Первый, который выводит список документов читателя в БД ЭК:

&unifor('7IBIS,!',"FAUTH="v10,'!,v200^A"<br>"')

И второй (рабочая ссылка):

'<A HREF="IRBIS:2,,IBIS,,FAUTH='v10'"><br>Ссылка на документы читателя в БД ЭК<br></A>'


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



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