Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Общие вопросы Ирбис64 :  ИРБИС Irbis
 
Глобальная корректировка оператор REP удаляет поле
Пользователь: kolobok55 (IP-адрес скрыт)
Дата: 18, July, 2016 15:30

Добрый день, никак не могу понять, что делаю не так.

Возникла следующая проблема:
У нас в университете группы вида SNP, где S - строка, N-курс, P-номер подгруппы и другие обозначения, н-р:

ГИМУ21 з/о


Хочу глобально поменять у всех группы, в связи с переводом на новый курс ( ГИМУ21 з/о->ГИМУ31 з/о ),
создал формат и проверил его в редакторе форматов
(if p(v90^e) then &uf("G0#"v90^E)f( val( &uf('+960*0.1#'&uf('G1#'v90^E)) )+1,1,0 )&uf("G2#"v90^E) fi/),
открываю интерфейс глобальной корректировки для БД RDR
оператор REP, поле 90^e, повторения *, формат, однако в результате подполе 90^E просто удаляется.

Что я делаю не так?

Заранее благодарю.

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: FNS (IP-адрес скрыт)
Дата: 18, July, 2016 16:00

0
REP
90^E
F
(if p(v90) then if p(v90^E) and v90^E:'ГИМ21 з/п' then 'ГИМ31 з/п' else v90^E else # fi/)
XXXXXXXXXXXXXXXXXXX

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: kolobok55 (IP-адрес скрыт)
Дата: 19, July, 2016 09:44

Можно "в лоб", но это долго и нудно - с учетом курса наберется групп 150

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

Вопрос: почему рабочий формат в операторе REP удаляет существующие подполе, что-то, видно, я упускаю, не пойму что.

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: Gena (IP-адрес скрыт)
Дата: 19, July, 2016 10:36

Повторение ставьте не *, а F. И еще, может быть ситуация, когда не окажется подполя Е? Если да, то такое повторение затрется

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: FNS (IP-адрес скрыт)
Дата: 19, July, 2016 11:01

0
REP
90^E
F
(if p(v90) then if p(v90^E) then &uf('G0#'v90^E),f( val( &uf('+960*0.1#'&uf('G1#'v90^E)) )+1,1,0 ),&uf('G2#'v90^E) else v90^E fi else # fi/)
XXXXXXXXXXXXXXXXXXX

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: kolobok55 (IP-адрес скрыт)
Дата: 22, July, 2016 10:00

теперь вообще никаких изменений не происходит, пишет: нет изменений в записях



Редактировано 1 раз. Последний раз 22.07.2016 10:14 пользователем kolobok55.

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: FNS (IP-адрес скрыт)
Дата: 22, July, 2016 10:19

Приведенный выше формат проверен, всё работает корректно на всех повторениях.

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: kolobok55 (IP-адрес скрыт)
Дата: 22, July, 2016 10:27

Делал в глобальной корректировке арм администратор (не клиентский), не работает, сейчас попробовал в каталогизаторе - работает.

Подскажите, где вы делали, и какая у вас версия Ирбис

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: FNS (IP-адрес скрыт)
Дата: 22, July, 2016 12:14

Думаю, в данном случае, версия Ирбис не имеет значения. Тестировал серверной корректировкой через арм Администратор. Вам важно понять причину косяка в Вашем изначальном формате. Вы поняли? Это не дополнительные проверки полей. Единственное, в данном случае, вот это else v90^E нужно заменить на else #, но это не критично.

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: kolobok55 (IP-адрес скрыт)
Дата: 23, July, 2016 10:51

Есть несколько вопросов: чем все таки отличается F от *, Как я понял по документации * - значит формат проверяется для каждого повторения поля.

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

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

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: FNS (IP-адрес скрыт)
Дата: 23, July, 2016 11:52

1. * - обрабатываются все повторения поля, F - обрабатываются повторения в зависимости от условий формата.
2. а если поле есть, но в нем нет нужного подполя?
3. протестируйте эти два формата в редакторе форматов с записью, в которой присутствует несколько повторений поля v90.
&uf("G0#"v90^E)f( val( &uf('+960*0.1#'&uf('G1#'v90^E)) )+1,1,0 )&uf("G2#"v90^E)
&uf('G0#'v90^E),f( val( &uf('+960*0.1#'&uf('G1#'v90^E)) )+1,1,0 ),&uf('G2#'v90^E)

Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: kolobok55 (IP-адрес скрыт)
Дата: 23, July, 2016 12:28

Спасибо, что помогаете разобраться.

Взял свой формат и Ваш, попробовал с запятыми и без, разницы не увидел (см вложение), на записях без 90 тоже работает без ошибок

2. если поля 90 нет то и а подполе ^E ничего не будет, зачем на проверять его наличие, нас интересует именно подполе, мы с ним и работаем.

3. скриншоты не буду снимать и показывать, что на самом деле в каталогизаторе и администраторе глобальная корректировка по разному отрабатывает, уже написал разработчикам.

Вложения: Doc1.doc (284KB)  
Re: Глобальная корректировка оператор REP удаляет поле
Пользователь: FNS (IP-адрес скрыт)
Дата: 23, July, 2016 15:49

запятые тут не при чем..

http://image.prntscr.com/image/a530175520654cb3a77159abe4a1a3fe.png

http://image.prntscr.com/image/778659f5f2e14f29b50badb9138ea46b.png



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