Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Книгообеспеченность :  ИРБИС Irbis
 
как удалить дисцип
Пользователь: zarubin (IP-адрес скрыт)
Дата: 27, January, 2012 12:35

помогите составить глобальную корректировку, чтобы удалить все дисциплины, которые читаются на 1 и 2 семестре и где вид обучения (ВО) специалитет? (СПТ)
А также связные записи.
Могу я в 2 этапа это сделать:

на первом - удалю записи типа VUZ, это глобальной удаляю все записи VUZ,
где v920='VUZ' and v68^V='СПТ' and v68^F<3

А затем удалию записи типа DISC, где v920='DISC'and v83^V='СПТ' and v83^F<3

Можно ли так сделать?

Re: как удалить дисцип
Пользователь: ochagova (IP-адрес скрыт)
Дата: 27, January, 2012 15:09

Это лучше сделать в АРМе Каталогизатор.
1. Сделайте последовательный поиск, задав в окошке "свободный поиск"
v68^V='СПТ' and val(v68^F)<3
при условии, что в записях VUZ СПТ всегда большими буквами
2. Выполните глобальную с оператором DELR, удалятся записи VUZ
3. Последовательный поиск
| v83^V='СПТ' and val(v83^F)<3
при условии, что в подполе семестров вы вводили одиночные семестры и что СПТ всегда большими буквами
4. Глобальное задание:
DEL
83
F
(if p(v83) then if p(v83^V) or p(v83^F) then if v83^V='СПТ' and val(v83^F)<3 then '1' else '0' fi else '0' fi fi/)



Редактировано 1 раз. Последний раз 27.01.2012 15:10 пользователем ochagova.

Re: как удалить дисцип
Пользователь: zarubin (IP-адрес скрыт)
Дата: 30, January, 2012 06:53

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

> 3. Последовательный поиск
> | v83^V='СПТ' and val(v83^F)<3
> при условии, что в подполе семестров вы вводили
> одиночные семестры и что СПТ всегда большими
> буквами
Спасибо!
а если семестры введены не одиночно, а через слеш?
К примеру: '1/2/3/4'
тогда такой запрос найдет больше записей чем нужно, а как скорректировать?

Re: как удалить дисцип
Пользователь: ochagova (IP-адрес скрыт)
Дата: 30, January, 2012 12:50

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

Re: как удалить дисцип
Пользователь: zarubin (IP-адрес скрыт)
Дата: 30, January, 2012 16:46

Версия 2009.1 D4

Скажите, а есть оператор, который может вернуть длину строки или проверку подстроки в строке.
Почитал документацию - не нашел.
Я просто хочу обрабатывать вручную строку v83^f и исключить из поиска те записи, где присутствует семестр больше '2'

Версия Ирбис64 2009.1 D4
--

ПЗ

Re: как удалить дисцип
Пользователь: ochagova (IP-адрес скрыт)
Дата: 31, January, 2012 14:39

Есть прием, который используется во многих заданиях, связанных с полем 83. Основа - это &unifor('1..... Не объясняя его суть посмотрите как можно размножить повторения поля 83 по значениям семестров. Сначала поле 83 кладется в поле 1932, а поле 1932 размножается. Рез-т в поле 932. А подстрока берется &uf('G......

ADD
1932
XXXXXXXXXXXXXXXXXXX
(v83/)
XXXXXXXXXXXXXXXXXXX
REPEAT
ADD
932
XXXXXXXXXXXXXXXXXXX
mpu,if &unifor('Av1932^f#1'):'/' then (if &unifor('1*R/?v1932^f#1')<>''then if &unifor('Av1932^W#1')<>'' then '^W',&unifor('Av1932^W#1') fi,if &unifor('Av1932^U#1')<>'' then '^U',&unifor('Av1932^U#1') fi,if &unifor('Av1932^L#1')<>'' then '^L',&unifor('Av1932^L#1') fi,,if &unifor('Av1932^T#1')<>'' then '^T',&unifor('Av1932^T#1') fi,,if &unifor('Av1932^H#1')<>'' then '^H',&unifor('Av1932^H#1') fi,if &unifor('Av1932^N#1')<>'' then '^N',&unifor('Av1932^N#1') fi,if &unifor('Av1932^C#1')<>'' then '^C',&unifor('Av1932^C#1') fi,if &unifor('Av1932^A#1')<>'' then '^A',&unifor('Av1932^A#1') fi,if &unifor('Av1932^V#1')<>'' then '^V',&unifor('Av1932^V#1') fi,if &unifor('Av1932^O#1')<>'' then '^O',&unifor('Av1932^O#1') fi,,'^F',&unifor('1*R/?v1932^f#1'),,'^E',&unifor('Av1932^E#1') fi/) else &unifor('Av1932#1') fi
XXXXXXXXXXXXXXXXXXX
DEL
1932
1
XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXX
UNTIL
if p(v1932)then'1'else''fi



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