0 //8.1 // создаю идентификатор дисциплины, если его нет IF if v920:'DISC' then '1' else '0' fi XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //------------------------запись DISC IF if v3^A<>'' and v3^0='' then '1' fi // нет идентификатора - создаю DEL 111 * IF if val(&uf('JVUZ,IDD=',v3^A.5))>0 then '1' fi ADD 111 '0' REPEAT IF if val(&uf('JVUZ,IDD=',v3^A.5,f(val(v111),0,0)))>0 then '1' fi REP 111 1 f(val(v111)+1,0,0) FI UNTIL if val(&uf('JVUZ,IDD=',v3^A.5,f(val(v111),0,0)))>0 then '1' else '0' fi FI REP 3 1 v3,'^0',v3^A.5,v111 FI // в v112 будет макс.номер УНД DEL 112 * ADD 112 '0' //из поля 84 в 83 с проверкой на дубль DEL 1083 * ADD 1083 (v84/) REPEAT IF &uf('+7W5#',&uf('Av1083^A#1'),&uf('Av1083^N#1'),&uf('Av1083^C#1'),&uf('Av1083^V#1'),&uf('Av1083^O#1'),&uf('Av1083^F#1')),,,if rsum((if p(v83) then if &uf('+97',&uf('AG5#1'))=&uf('+97',v83^A,v83^N,v83^C,v83^V,v83^O,v83^F) then '1,' fi fi))=0 then '1' fi ADD 83 &uf('Av1083#1') FI DEL 1083 1 UNTIL if p(v1083) then '1' fi IF if p(v83) then '1' fi // по полям 83 макс.номер для УНД // если есть среди полей 83 без УНД - формирую DEL 1083 * // повторения, в кот. нет УНД в 1083 ADD 1083 (if p(v83) then if a(v83^U) and a(v83^W) then v83 fi fi/) DEL 83 F (if p(v83) then if a(v83^U) and a(v83^W) then '1' else '0' fi fi/) // определяю по полям 83 с какого номера формировать УНД DEL 111 * // из УНД все номера в 111 ADD 111 (if p(v83) then if p(v83^W) and a(v83^U) then &uf('G2/',v83^W) fi fi/) IF if p(v111) then '1' else '0' fi REPEAT REP 112 1 if val(&unifor('Av111#1'))>val(v112) then &unifor('Av111#1') else v112 fi DEL 111 1 UNTIL if p(v111) then '1' else '0' fi FI // формирую УНД в полях 1083 - для полей 83 ADD 111 (v1083/) DEL 1083 * // добавление в 1083 УНД REPEAT IF if &unifor('Av111^W#1')='' and &unifor('Av111^u#1')='' then '1' else '0' fi REP 111 1 '^W',v3^0,'/',f(val(v112)+1,0,0),&unifor('Av111#1') REP 112 1 f(val(v112)+1,0,0) FI ADD 1083 &unifor('Av111#1') DEL 111 1 UNTIL if p(v111) then '1' else '0' fi // дописываю поле 83 повторениями с прибавленными УНД ADD 83 (v1083/) DEL 1083 * // конец - присутств. поле 83 FI // возможно для полей 84 надо создать новую запись FAK IF if p(v84) then '1' fi DEL 1083 * DEL 1085 * ADD 1085 (v84/) // переношу в поле 1083 с учетом возможных дублей по фак-ФО REPEAT ADD 1083 if rsum((if p(v1083) then if s('!',v1083^A,v1083^L,'-',v1083^O,'!'): s('!',&uf('Av1085^A#1'),&uf('Av1085^L#1'),'-',&uf('Av1085^O#1'),'!') then '1,' fi fi))=0 then &uf('Av1085#1') fi DEL 1085 1 UNTIL if p(v85) then '1' fi REPEAT IF if &uf('Av1083^A#1')<>'' or &uf('Av1083^O#1')<>'' then '1' fi // есть ли запись FAK с данным фак.+ФО IF if val(&uf('JVUZ,FFO=',&uf('Av1083^A#1'),&uf('Av1083^L#1'),'-',&uf('Av1083^O#1'),))<=0 then '1' fi //--------------------------------новая запись FAK NEWMFN '*' ADD 920 'FAK' ADD 93 &unifor('Av1083^A#1') ADD 91 &unifor('Av1083^L#1') ADD 98 &unifor('Av1083^O#1') ADD 5 v5 END FI FI DEL 1083 1 UNTIL if p(v1083) then '1' fi // есть ли кафедра в записи FAK? ADD 1083 (v84/) REPEAT IF if &uf('Av1083^A#1')<>'' or &uf('Av1083^O#1')<>'' then '1' fi CORREC '*' v5 'FFO=',&uf('Av1083^A#1'),&uf('Av1083^L#1'),'-',&uf('Av1083^O#1') //------------дописывание записи FAK новой кафедрой ADD 5 if s((|!|v5|!|)): s("!"v1001"!") then '' else v1001 fi DEL 1001 * END FI DEL 1083 1 UNTIL if p(v1083) then '1' fi DEL 84 * // конец - есть поле 84 FI DEL 84 * DEL 222 * DEL 1083 * DEL 1085 * DEL 112 * // конец - запись DISC FI ADD 907 XXXXXXXXXXXXXXXXXXX if rsum((if p(v907) then if v907^a = &unifor(|3|d907) and v907^b = &unifor('IPRIVATE,FIO,') then '1;'else'0;'fi fi))> 0 then else'^A',&unifor('3'),'^B',&unifor('IPRIVATE,FIO,') fi XXXXXXXXXXXXXXXXXXX