Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Система ИРБИС в целом :  ИРБИС Irbis
 
Перенос данных из 961 поля в 700, 701 и 702. Нужна помощь.
Пользователь: Artur (IP-адрес скрыт)
Дата: 12, January, 2011 18:33

Добрый день. У меня такая проблема: нужно перенести записи из 961 поля в поля 700, 701 и 702 соответственно. Для этого я сделал конвертор:

(700 0 mpl,if a(v700) and a(v961^4) then &unifor('Av961*0#1') else &unifor('Av700*0#1') fi
701 0 mpl,if a(v701) and a(v961^4) then &unifor('Av961*0#2') else &unifor('Av701*0#1') fi
701 0 mpl,if a(v701) and a(v961^4) then &unifor('Av961*0#3') else &unifor('Av701*0#2') fi
701 0 mpl,if a(v701) and a(v961^4) then &unifor('Av961*0#4') else &unifor('Av701*0#') fi
701 0 mpl,if a(v701) and a(v961^4) then &unifor('Av961*0#5') else &unifor('Av701*0#4') fi
701 0 mpl,if a(v701) and a(v961^4) then &unifor('Av961*0#6') else &unifor('Av701*0#5') fi
701 0 mpl,if a(v701) and a(v961^4) then &unifor('Av961*0#7') else &unifor('Av701*0#6') fi
701 0 mpl,if a(v701) and a(v961^4) then &unifor('Av961*0#8') else &unifor('Av701*0#7') fi
701 0 mpl,if a(v701) and a(v961^4) then &unifor('Av961*0#9') else &unifor('Av701*0#8') fi
702 0 mpl,if a(v702) and p(v961^4) then &unifor('Av961*0#1') else &unifor('Av702*0#1') fi
702 0 mpl,if a(v702) and p(v961^4) then &unifor('Av961*0#2') else &unifor('Av702*0#2') fi
702 0 mpl,if a(v702) and p(v961^4) then &unifor('Av961*0#3') else &unifor('Av702*0#3') fi
702 0 mpl,if a(v702) and p(v961^4) then &unifor('Av961*0#4') else &unifor('Av702*0#4') fi
702 0 mpl,if a(v702) and p(v961^4) then &unifor('Av961*0#5') else &unifor('Av702*0#5') fi
702 0 mpl,if a(v702) and p(v961^4) then &unifor('Av961*0#6') else &unifor('Av702*0#6') fi
702 0 mpl,if a(v702) and p(v961^4) then &unifor('Av961*0#7') else &unifor('Av702*0#7') fi
702 0 mpl,if a(v702) and p(v961^4) then &unifor('Av961*0#8') else &unifor('Av702*0#8') fi)

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



Редактировано 1 раз. Последний раз 12.01.2011 22:04 пользователем Панев Максим.

Re: Перенос данных из 961 поля в 700, 701 и 702. Нужна помощь.
Пользователь: Сорокина Лариса (IP-адрес скрыт)
Дата: 17, January, 2011 17:00

Artur написал(а):
-------------------------------------------------------
> Добрый день. У меня такая проблема: нужно
> перенести записи из 961 поля в поля 700, 701 и 702
> соответственно. Для этого я сделал конвертор:
>
> (700 0 mpl,if a(v700) and a(v961^4) then
> &unifor('Av961*0#1') else &unifor('Av700*0#1') fi
> 701 0 mpl,if a(v701) and a(v961^4) then
> &unifor('Av961*0#2') else &unifor('Av701*0#1') fi
> 701 0 mpl,if a(v701) and a(v961^4) then
> &unifor('Av961*0#3') else &unifor('Av701*0#2') fi
> 701 0 mpl,if a(v701) and a(v961^4) then
> &unifor('Av961*0#4') else &unifor('Av701*0#') fi
> 701 0 mpl,if a(v701) and a(v961^4) then
> &unifor('Av961*0#5') else &unifor('Av701*0#4') fi
> 701 0 mpl,if a(v701) and a(v961^4) then
> &unifor('Av961*0#6') else &unifor('Av701*0#5') fi
> 701 0 mpl,if a(v701) and a(v961^4) then
> &unifor('Av961*0#7') else &unifor('Av701*0#6') fi
> 701 0 mpl,if a(v701) and a(v961^4) then
> &unifor('Av961*0#8') else &unifor('Av701*0#7') fi
> 701 0 mpl,if a(v701) and a(v961^4) then
> &unifor('Av961*0#9') else &unifor('Av701*0#8') fi
> 702 0 mpl,if a(v702) and p(v961^4) then
> &unifor('Av961*0#1') else &unifor('Av702*0#1') fi
> 702 0 mpl,if a(v702) and p(v961^4) then
> &unifor('Av961*0#2') else &unifor('Av702*0#2') fi
> 702 0 mpl,if a(v702) and p(v961^4) then
> &unifor('Av961*0#3') else &unifor('Av702*0#3') fi
> 702 0 mpl,if a(v702) and p(v961^4) then
> &unifor('Av961*0#4') else &unifor('Av702*0#4') fi
> 702 0 mpl,if a(v702) and p(v961^4) then
> &unifor('Av961*0#5') else &unifor('Av702*0#5') fi
> 702 0 mpl,if a(v702) and p(v961^4) then
> &unifor('Av961*0#6') else &unifor('Av702*0#6') fi
> 702 0 mpl,if a(v702) and p(v961^4) then
> &unifor('Av961*0#7') else &unifor('Av702*0#7') fi
> 702 0 mpl,if a(v702) and p(v961^4) then
> &unifor('Av961*0#8') else &unifor('Av702*0#8')
> fi)
>
> но проблема в том, что для записей, где в поле
> 961 присутствуют и авторы и все остальные, система
> эти повторения поля переносит не расриделяя по
> полям соответственно, а руководствуется только
> первой записью. Подскажите пожалуйста, как
> сделать, чтоб оно правильно распридеоялось.


Может так:
700 0 (if p(v961)then if v961^Z:'ДА' then v961 fi fi)
701 0 (if p(v961)then if v961^Z:'ДА' then else if v961^4:'070' or a(v961^4)then v961 fi fi fi/)
702 0 (if p(v961)then if v961^Z:'ДА' then else if v961^4:'070' or a(v961^4)then else v961 fi fi fi/)

Re: Перенос данных из 961 поля в 700, 701 и 702. Нужна помощь.
Пользователь: Artur (IP-адрес скрыт)
Дата: 18, January, 2011 16:29

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



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