Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Администратор :  ИРБИС Irbis
 
Не выдается &uf('Av488^##1')
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 02, August, 2021 14:08

Здравствуйте, Александр Иосифович.
В поле 488 Есть подполе ^#.
Язык форматирования не выдает &uf('Av488^##1'). Версия 2020.
Хотя в предыдущей версии это выражение работало, пользовалась...

Re: Не выдается &uf('Av488^##1')
Пользователь: Alio (IP-адрес скрыт)
Дата: 02, August, 2021 15:31

Милана А. написал(а):
-------------------------------------------------------
> Здравствуйте, Александр Иосифович.
> В поле 488 Есть подполе ^#.
> Язык форматирования не выдает &uf('Av488^##1').
> Версия 2020.
> Хотя в предыдущей версии это выражение работало,
> пользовалась...
Не надо сочинять - такая конструкция НИКОГДА не работала.

Re: Не выдается &uf('Av488^##1')
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 03, August, 2021 11:15

В Autoin.gbl базы электронной библиотеки у меня был добавлен код, который при условии присутствия ссылки на другую запись в другой базе в поле 488, проверяла, присутствует ли обратная ссылка из другой записи в эту, и при отсутствии добавляла. Вручную ссылки проверять перестали, а на днях заметили, что перекрестная ссылка строиться перестала.

Перепроверила данные. Действительно в 2020 году этот код у меня выглядел чуть иначе:
CORREC
v488^#
'^1Электронная копия:^T'v903'^#ELNB'
"I="v488^t

ADD
488
XXXXXXXXXXXXXXXXXXX
if v488:v1001 then else v1001 fi
XXXXXXXXXXXXXXXXXXX
DEL
1001
*
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
END
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX


Но этот код не работает при наличии нескольких повторений поля 488. Поэтому я и переписала его таким образом, чтобы он работал хотя бы для первого повторения поля 488, поменяв &uf('Av488^##1') и &uf('Av488^t#1').
Можете подсказать, как поменять этот код, не используя &uf('Av488^##1')?
Сделать цикл по повторениям поля 488, внутри цикла - CORREC. Как это можно сделать?

Re: Не выдается &uf('Av488^##1')
Пользователь: ochagova (IP-адрес скрыт)
Дата: 03, August, 2021 12:07

Во-первых, в строке v488^# вы задаете имя БД, в которой хотите взять запись. Найдите другой способ задания имени БД. Для текущей БД - это '*'
Во-вторых, в строке
'^1Электронная копия:^T'v903'^#ELNB'
используйте другое подполе, чтобы передать его записи в виде поля 1001. Зачем непременно ^#?

Re: Не выдается &uf('Av488^##1')
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 03, August, 2021 12:49

ochagova написал(а):
-------------------------------------------------------
> Во-первых, в строке v488^# вы задаете имя БД, в
> которой хотите взять запись. Найдите другой способ
> задания имени БД.
Структуру поля 488 я сама не придумывала - она такая от разработчика, и имя БД именно в подполе ^#.

>Для текущей БД - это '*'
> Во-вторых, в строке
> '^1Электронная копия:^T'v903'^#ELNB'
> используйте другое подполе, чтобы передать его
> записи в виде поля 1001.
> Зачем непременно ^#?
- Могу я его поменять на что-то другое у себя (вместо какого-либо другого подполя, предназначенного для чего-либо другого; как я понимаю, в поле 488 заняты все символы латинского алфавита), меняя множество файлов, а потом при переходе на новую версию получу кучу проблем...

Re: Не выдается &uf('Av488^##1')
Пользователь: ochagova (IP-адрес скрыт)
Дата: 03, August, 2021 16:46

Выражение v488^# даст правильное значение. Ошибка будет только в &uf('Av488^##1'). Это можно обойти - взятие первого повторения?
Если нет, то можно:
1. предварительно скопировать все поля 488 в например 500
ADD
500

(v488/)

2. Потом заменит ## на ?#
CHA
488
*
'##'
'?#'

3. Использовать вместо 488 далее в цикле 500


Если вы поменяете:
'^1Электронная копия:^T'v903'^#ELNB'
на:
'^1Электронная копия:^T'v903'^?ELNB'
то это коснется только внутреннестей оператора CORREC, т.е. вместо v1001^# использовать v1001^?

Re: Не выдается &uf('Av488^##1')
Пользователь: Милана А. (IP-адрес скрыт)
Дата: 04, August, 2021 09:04

Спасибо, поняла, так и сделаю

Re: Не выдается &uf('Av488^##1')
Пользователь: Alio (IP-адрес скрыт)
Дата: 05, August, 2021 10:23

Милана А. написал(а):
-------------------------------------------------------
> Здравствуйте, Александр Иосифович.
> В поле 488 Есть подполе ^#.
> Язык форматирования не выдает &uf('Av488^##1').
> Версия 2020.
> Хотя в предыдущей версии это выражение работало,
> пользовалась...
Обновите irbis64.dll - с ним эта конструкция будет работать...

Вложения: IRBIS64.dll (958KB)  


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