0 // Списание книг и журналов по файлу ИН/ШК // На входе записи книг, для которых выбраны инв.номера // v991^A - номер КСУ списания v991^B - номер акта передачи // v992^B - отмеченные инвентарные номера // v992^D - место хранения, // Списание книг со статусом С или U // v991^A - номер КСУ списания //----Использую глобальные - 8, 10, 13, 910, 940, 199; 11,12 - в CORREC; 6,7 - во вложенном kumul // g10 - собирает сообщения протокола PUTLOG 'На корректировку запись ',f(val(mfn),0,0) // Списание книг для группового учета ADD 1002 XXXXXXXXXXXXXXXXXXX mpu,,(v992/) XXXXXXXXXXXXXXXXXXX //---удаляю место хранения, если в нем запятая, т.е. несколько DEL 1002^D F (if p(v1002) then if p(v1002^D) then if v1002^D: ',' then '1' else '0' fi else '0' fi fi/) REP 991 F mpu,(v991/),,,&uf('+7W10#') XXXXXXXXXXXXXXXXXXX //----------------------------------------цикл по значениям ИН/ШК, полю 1002 REPEAT XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX IF if s(| |v910^b| |): &uf('Av1002^B#1') or s(| |v910^h| |): &uf('Av1002^H#1') then '1' fi DEL 1003 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX ADD 1003 XXXXXXXXXXXXXXXXXXX &uf('Av1002#1'),&uf('S0'),&uf('+7W8#0'),,,,,, XXXXXXXXXXXXXXXXXXX IF if rsum((if p(v910)then if 'U C':v910^a then'1;'else'0;'fi fi/))>0 then '1'fi, XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //-------------------статус U REP 910^X F (if p(v910) then if p(v910^x) then if 'U C':v910^a and ( v910^b='' and &uf('Av1003^b#1')=''or &uf('+97',v910^b)=&uf('Av1003^b#1') ) and ( v910^h=''and &uf('Av1003^h#1')=''or &uf('+97',v910^h)=&uf('Av1003^h#1') ) and ( &uf('+97'v910^d)=&uf('+97'&uf('Av1003^d#1') )or &uf('Av1003^d#1')='' or &uf('+97'v910^d)=&uf('G0,'&uf('Av1003^d#1')) or &uf('+97'v910^d)=&uf('G2,'&uf('Av1003^d#1')) ) and ( v910^v=''or v910^v=&uf('Av991^A#1') ) then if val(v910^x)'' then &uf('Av991^A#1') else # fi fi/) XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //----------------конец статус U REP 910^A F &uf('+7W910#'),,,,(if p(v910) then if ( (&uf('Av1003^b#1')=''or &uf('+97',v910^b)=&uf('Av1003^b#1') ) and ( &uf('Av1003^h#1')='' or &uf('+97',v910^h)=&uf('Av1003^h#1') ) OR s( &uf('Av1003^b#1'),&uf('Av1003^h#1') )='' ) and ( &uf('+97'v910^d)=&uf('Av1003^d#1') or &uf('Av1003^d#1')='' or &uf('+97'v910^d)=&uf('Av1003^d#1') or &uf('+97'v910^d)=&uf('Av1003^d#1') ) and val(&uf('Ag8#1'))=0 then if &uf('IMAIN,StatusNoSpis,1,2,3,5,6,8,9,R'): v910^A then v910^A,,&uf('+7U10#',,v910^H,,if v910^H<>'' and v910^B<>'' then '-' fi,,v910^B,,' - не списан по статусу ',,v910^A ),,,else '6',&uf('+7U10#',,v910^H,,,if v910^H<>'' and v910^B<>'' then '-' fi,,,,v910^B ' списан',,| из |v910^D ),&uf('+7W8#1'), fi else v910^a fi fi/) XXXXXXXXXXXXXXXXXXX ADD 910^V F (if p(v910)then if v910^a='6' and v910^v=''and ((&uf('Av1003^b#1')=''or &uf('+97',v910^b)=&uf('Av1003^b#1'))and (&uf('Av1003^h#1')=''or &uf('+97',v910^h)=&uf('Av1003^h#1'))or s(&uf('Av1003^b#1'),&uf('Av1003^h#1'))='') and (&uf('+97'v910^d)=&uf('+97'&uf('Av1003^d#1'))or &uf('Av1003^d#1')='' or &uf('+97'v910^d)=&uf('Av1003^d#1') ) then &uf('Av991^A#1'),&uf('+7U910#'v910) else # fi fi/), XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 1002 1 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX UNTIL if p(v1002) then '1' else '0' fi XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //------------------конец цикла по 1002 - ИН/ШК на входе //-------------на запись статьи IF if l("II="v903)>0 then '1'else '0' fi CORREC '*' (v910/) "II="v903 ADD 910 XXXXXXXXXXXXXXXXXXX if v1001:'^A7'then'^A7'fi XXXXXXXXXXXXXXXXXXX DEL 1001 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX END XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //--------------конец статьи ADD 940 XXXXXXXXXXXXXXXXXXX &uf('+7W199#'),&uf('+7W940#'(v940|; |)),(if p(v910)then if v910^v=&uf('Av991^A#1') then if &uf('Ag940#1'):v910 then else v910,,,&uf('+7U199#','^Q',&uf('Av934#1'),,|^K|v910^B,,,|^D|v910^D,,,,'^W',,&uf('Av991^A#1'),,'^H',&uf('Av936#1'),,,) fi fi fi/) XXXXXXXXXXXXXXXXXXX //---изменение в поле 910^1 REP 910^1 F (if p(v910) then if p(v910^1) then if &uf('+97',v910^v)=&uf('Av991^A#1') and s('U C'): v910^A then '^1',f(val(v910^1,' 0')-val(v910^x,' 0'),0,0),&uf('+7U10#',,v910^H,if v910^H<>'' and v910^B<>'' then '-' fi,,,,v910^B ' списан',,| из |v910^D ),,,else v910^1 fi,,else # fi,,fi/) DEL 910 F (if p(v910)then if 'C U':v910^a then if v910^v=&uf('Av991^A#1') and (v910^1=v910^x or v910^1='0' or v910^1:'-') and a(v910^w)then'1'else'0'fi else'0' fi fi/) XXXXXXXXXXXXXXXXXXX DEL 910 F (if p(v910) then if 'U C':v910^a then if v910^1='' or v910^1:'-'then '1' else '0' fi else '0' fi fi/) XXXXXXXXXXXXXXXXXXX REP 910^1 F (if p(v910) then if v910^a:'C U' then if v910^v=&uf('Av991^A#1')then if v910^X<>'' then f(val(v910^1,' 0')-val(v910^x,' 0'),0,0) else v910^1 fi fi fi fi/) XXXXXXXXXXXXXXXXXXX DEL 910^X F (if p(v910) then if p(v910^x)then if v910^v=&uf('Av991^A#1')then '1'else '0'fi else # fi fi/) XXXXXXXXXXXXXXXXXXX DEL 910^V F (if p(v910) then if p(v910^V)and 'C U':v910^a then if v910^v=&uf('Av991^A#1')then '1'else '0'fi else # fi fi/) XXXXXXXXXXXXXXXXXXX //---в 555 кол-во оставшихся экземпляров ADD 555 XXXXXXXXXXXXXXXXXXX if p(v910)then f(rsum((if p(v910)then if v910^a='6'or 'U C':v910^a and val(v910^1)=0 then '0;' else '1;'fi fi/)),0,0) else if p(v940)then '0'else'1'fi fi XXXXXXXXXXXXXXXXXXX ADD 910 XXXXXXXXXXXXXXXXXXX if val(v555)>0 then else if v940:'^k' then (if p(v940) then if p(v940^k) then |^A7^K|v940^k,|^D|v940^d fi fi/)else '^A7' fi fi XXXXXXXXXXXXXXXXXXX //-----------------------------------------------------на запись сводного описания //---если периодика, то формирую данные для кумуляции IF if p(v933) and val(&uf('J,I=',,v933,,))>0 then '1' fi //---это номер журнала - беру все поля 910 всех номеров в 995, в 996 списано в данной записи DEL 995 * DEL 996 * ADD 995 mpu,&uf('+7W13#',,,&uf('+3S,1000,',,"!I="v933,,'/',v934,'$',,,,'!,@KUMUL910') ),,,&uf('+7G13'),,(g13/) ADD 996 (if p(v910) then if v910^v=&uf('Av991^A#1') then '^A',,&uf('Av933#1'),'^Q',,&uf('Av934#1'),if &uf('Av934#1')=''then &uf('Av210^D#1') fi,'^F',,&uf('Av935#1'),if &uf('Av935#1')=''then &uf('Ag7#1') fi,|^D|v910^D,|^K|v910^B,'^H',,&uf('Av936#1'),if &uf('Av936#1')=''then &uf('Ag6#1') fi,fi, fi/), //---из v995 (исходный вариант) - вычитаю 996 REPEAT DEL 995 F (if p(v995) then if s(v995^A,,v995^Q,,v995^F,,v995^D,,v995^K,,v995^H)=s(&uf('Av996^A#1'),,&uf('Av996^Q#1'),,&uf('Av996^F#1'),,&uf('Av996^D#1'),,&uf('Av996^K#1'),,&uf('Av996^H#1'),,) then '1' else '0' fi,,fi/) DEL 996 1 UNTIL if p(v996) then '1' fi //---В сводную запись CORREC '*' v934/(v995/),, "I="v933 //---из задания kumul909 //---994^A - год, который изменится в поле 909 DEL 994 * ADD 994 '^A',,&uf('Av1001#1') DEL 1001 1 DEL 991 * ADD 991 (v1001/) DEL 992 * ADD 992 mpu,(|^Q|v991^Q,,|^K|v991^K,,|^D|v991^D,,|^P|v991^P/),,,,&uf('+7W12#') // цикл по v992 - заготовки для поля 909 REPEAT DEL 881 * ADD 881 &uf('Av992#1'),'^H^F^V' /*---------Номер REP 881^H 1 &uf('Av881^H#1'),,,,(if p(v991) then if s(v991^Q,v991^K,v991^D,v991^P)=s(&uf('Av881^Q#1'),,,&uf('Av881^K#1'),,,&uf('Av881^D#1'),,,&uf('Av881^P#1'),,) then if v991^H<>'' then ',' v991^H fi fi fi) /*---------Том REP 881^F 1 &uf('Av881^F#1'),,,,&uf('+7W11#',,,,,(if p(v991) then if s(v991^Q,v991^K,v991^D,v991^P)=s(&uf('Av881^Q#1'),,,&uf('Av881^K#1'),,,&uf('Av881^D#1'),,,&uf('Av881^P#1'),,) then v991^F fi fi/),,,,),,,&uf('+7G11'),,,(g11|, |/) REP 881^V 1 &uf('Av881^V#1'),,,,(if p(v991) then if s(v991^Q,v991^K,v991^D,v991^P)=s(&uf('Av881^Q#1'),,,&uf('Av881^K#1'),,,&uf('Av881^D#1'),,,&uf('Av881^P#1'),,) then if v991^V<>'' then ',' v991^V fi fi fi) ADD 993 &uf('+7U12#',,&uf('Av881#1') ) DEL 992 1 UNTIL if p(v992) then '1' fi DEL 993 * IF if v994^A<>'' then '1' fi DEL 909 F (if p(v909) then if v909^Q=&uf('Av994^A#1') then '1' else '0' fi fi/) ADD 909 &uf('+7U12#',,(v909/) ),, FI DEL 909 * ADD 909 &uf('+7G12'),,&uf('+7T12#1'),,,,,(|^Q|g12^Q,,,|^K|g12^K,,,|^D|g12^D,,,|^P|g12^P,,if g12^H<>'' then '^H',&uf('U',g12^H) fi,,if g12^F<>'' then '^F',&uf('U',g12^F) fi,,if g12^V<>'' then '^V',&uf('U',g12^V) fi /),, DEL 991 * ADD 991 ,&uf('+7G199'),,,,,(g199/),,,&uf('+7U10#',,'Откорректирована сводная запись MFN=',,f(val(mfn),0,0) ) REPEAT ADD 1909 if rsum((if p(v1909) then if s(' ',,|^Q|v1909,,|^K|v1909,,|^W|v1909,,|^D|v1909,,|^H|v1909,,' '): s(&uf('Av991^Q#1'),,&uf('Av991^K#1'),,&uf('Av991^W#1'),,&uf('Av991^D#1'),,&uf('Av991^H#1'),) then '1,' fi fi/)) >0 then else &uf('Av991#1') fi DEL 991 1 UNTIL if p(v991) then '1' fi DEL 991 * DEL 992 * DEL 993 * DEL 881 * DEL 994 * DEL 1001 * END FI XXXXXXXXXXXXXXXXXXX //-----------------------------------конец сводного описания //--- Вывод протокола PUTLOG &uf('+7G10'),,(g10/) DEL 555 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 991 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 992 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 994 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 995 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 996 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX