0 // Списание книг и журналов по файлу ИН/ШК // 21 - с учетом передачи, статуса E // На входе записи книг, для которых выбраны инв.номера // v991^A - номер КСУ списания v991^B - номер акта передачи // v992^B - отмеченные инвентарные номера // v992^D - место хранения, // Списание книг со статусом С или U // v991^A - номер КСУ списания // v992^M - новое место хранения,v992^X - кол-во списанных экземпляров,v992^Z-кол-во //----Использую глобальные - 8, 0, 910, //---940- запоминает добавления в 940; 941- для сравнения //----в CORREC; 6,7 - при передачи в сводное, 2 - передача 910 в сводное описание, // g10 - собирает сообщения протокол 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/) XXXXXXXXXXXXXXXXXXX REP 991 F mpu,(v991/),,,&uf('+7W10#'),,,,,,,,,&uf('+7W102#',,,(v1002/) ),,,,&uf('+7W103#1'),,,&uf('+7W104#',,&uf('+N1002'),,,,),,,,&uf('+7W940#'),, XXXXXXXXXXXXXXXXXXX //===========================цикл по значениям ИН/ШК, полю 1002 //---цикл по переменной g102, счетчик в g103, общее кол-во в g104 REPEAT XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //---добавила предварительную чистку - от пустых подполей ^V DEL 910^V F (if p(v910) then if v910^V='' then '1' else '0' fi fi/) DEL 1003 * ADD 1003 XXXXXXXXXXXXXXXXXXX &uf('Ag102#',,,,&uf('Ag103#1'),,,,,),,,,&uf('S0'),&uf('+7W8#0'), XXXXXXXXXXXXXXXXXXX IF if s(| |v910^b| |): v1003^B or s(| |v910^h| |): v1003^H then '1' fi 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 //---добавление кол-ва на списание, g8 - признак, что добавлен REP 910^X F (if p(v910) then if p(v910^x) then if ( &uf('IMAIN,StatusSpisGroup,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('Av1003^d#1') or &uf('Av1003^d#1')='' ) and ( v910^v=''or &uf('+97',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 //-----НЕ для U,C, формирую 6, статус запоминаю в ^9 //-----если ИН/ШК уже найден с U, то обхожу IF if val(g8)=0 then '1' fi REP 910^A F (if p(v910) then if &uf('IMAIN,StatusSpisGroup,U,C'): v910^A then v910^A,,,else 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('Av1003^d#1')='' or &uf('+97'v910^d)=&uf('Av1003^d#1') ) then if v910^A='6' then v910^A,,&uf('+7U10#',,v910^H,,if v910^H<>'' and v910^B<>'' then '-' fi,,v910^B,,' - уже списан, статус ',,v910^A),,,else if &uf('IMAIN,StatusNoSpis,'): v910^A then v910^A,,&uf('+7U10#',,v910^H,,if v910^H<>'' and v910^B<>'' then '-' fi,,v910^B,,' - не списан по статусу ',,v910^A),,,else '6',,,,'^9',v910^A,,,,,&uf('+7U10#',,v910^H,,,if v910^H<>'' and v910^B<>'' then '-' fi,,,,v910^B ' списан',,| из |v910^D,' (mfn=',,f(val(mfn),0,0),,,,')',,, ),,,,&uf('+7W8#1'),,fi fi,,else v910^a fi,,,fi,,fi/) XXXXXXXXXXXXXXXXXXX //----добавление ^V для статуса 0=6 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('Av1003^d#1') or &uf('Av1003^d#1')='' ) then &uf('Av991^A#1'),,,,,,,else # fi fi/), XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //----конец условия есть экземпляр ADD 1003 XXXXXXXXXXXXXXXXXXX &uf('+7W103#',,,f(val(&uf('Ag103#1'))+1,0,0),,,,,,,,,) XXXXXXXXXXXXXXXXXXX UNTIL if val(&uf('Ag103#1')) <= val(&uf('Ag104#1')) then '1' else '0' fi XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //==============================конец цикла по 1002, по переменной g103 //----------при добавлении проверка на уже есть по ^ - A, B, H, C, D, E, F, G, U, Y, V ADD 940 XXXXXXXXXXXXXXXXXXX &uf('+7W941#',,,(v940^A|; |,v940^B|; |,v940^H|; |,v940^C|; |,v940^D|; |,v940^E|; |,v940^F|; |,v940^G|; |,v940^U|; |,v940^Y|; |,v940^V|; |,,) ),,,,,,(if p(v910) then if &uf('+97',v910^v)=&uf('Av991^A#1') then if &uf('Ag941#1'): S( v910^A|; |,v910^B|; |,v910^H|; |,v910^C|; |,v910^D|; |,v910^E|; |,v910^F|; |,v910^G|; |,v910^U|; |,v910^Y|; |,,v910^V|; |,,v910^V|; | ) then else &uf('+7U940#',, v910,,,,,,,,'^8',,&uf('IPRIVATE,FIO,'),'-',&unifor('3'),,,,,,,,,,,,,,if &uf('Av991^B#1')<>'' then '^W',&uf('Av991^B#1') fi,,if &uf('Av991^M#1')<>'' then '^M',&uf('Av991^M#1') fi,,if &uf('Av991^B#1')<>'' and &uf('Av991^M#1')<>'' then if v910^A='6' then else '^Z',v910^X fi fi,,,,,),,,,v910,,,if &uf('Av991^B#1')<>'' then '^W',&uf('Av991^B#1') fi,,if &uf('Av991^M#1')<>'' then '^M',&uf('Av991^M#1') fi,,,,,,,,'^8',,&uf('IPRIVATE,FIO,'),'-',&unifor('3'),,,,,,,,,if &uf('Av991^B#1')<>'' and &uf('Av991^M#1')<>'' then if v910^A='6' then else '^Z',v910^X fi fi,,,,,fi fi fi/) XXXXXXXXXXXXXXXXXXX //-----формирование правильного подполя ^1 REP 910 F (if p(v910) then if ( &uf('IMAIN,StatusSpisGroup,U,C'): v910^A ) and ( &uf('+97',v910^v)=&uf('Av991^A#1') ) then |^A|v910^a,|^D|v910^d,,,,'^1',f(val(v910^1,' 0')-val(v910^x,' 0'),0,0),|^B|v910^b,|^H|v910^h,|^U|v910^u,,,|^E|v910^e,,|^Q|v910^Q,,|^R|v910^R,,|^2|v910^2,,,|^F|v910^f,,|^T|v910^T,,|^=|v910^=,,,|^P|v910^P,,|^L|v910^L,,|^G|v910^G,,|^Y|v910^y,|^C|v910^c,,,,|^0|v910^0,|^S|v910^S,&uf('+7U10#',,v910^H,if v910^H<>'' and v910^B<>'' then '-' fi,,,,v910^B ' списан',,| из |v910^D,' (mfn=',,f(val(mfn),0,0),,,,')',,, ) else v910 fi fi/) XXXXXXXXXXXXXXXXXXX //-----удаляю повторение U, если все списано DEL 910 F (if p(v910) then if &uf('IMAIN,StatusSpisGroup,U,C'): v910^A then if &uf('+97',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 &uf('IMAIN,StatusSpisGroup,U,C'): v910^A then if v910^1='' or v910^1:'-' then '1' else '0' fi else '0' fi fi/) XXXXXXXXXXXXXXXXXXX DEL 910^X F (if p(v910) then if p(v910^x)then if &uf('+97',v910^v)=&uf('Av991^A#1') then '1'else '0' fi else # fi fi/) XXXXXXXXXXXXXXXXXXX DEL 910^V F (if p(v910) then if v910^V<>'' and &uf('IMAIN,StatusSpisGroup,U,C'): v910^A then if &uf('+97',v910^v)=&uf('Av991^A#1')then '1'else '0'fi else # fi fi/) XXXXXXXXXXXXXXXXXXX //---в 5555 сколько осталось экземпляров ADD 5555 XXXXXXXXXXXXXXXXXXX if p(v910) then f(rsum( (if p(v910) then if v910^a='7' or v910^a='6' or &uf('IMAIN,StatusSpisGroup,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(v5555)>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 //--------Вариант Ларисы---------------------на запись сводного описания //---------------- начало списания номера из 909 полей IF if v920:'NJ'or v920:'SPEC' and '01 02':v900^b then'1'else'0'fi,,,,,,,,,,,&uf('+7W2#'(v910/)),,, CORREC '*' if v920:'SPEC' and '01 02':v900^b then &uf('+7W6#',,,if &uf('G2#'v200^v):' 'then &UF('G2 '&uf('G2 'v200^v))else &uf('G2 'v200^v) fi,,,),,,,,,&uf('+7W7#',,if &uf('G2#'v200^v):' 'then &UF('G0 '&uf('G1#'v200^v))fi ), '^Q',&uf('Av210^D#1'), '^F',&uf('Ag7#1'), '^H',&uf('Ag6#1'), else "^Q"v934,"^F"v935,"^H"v936,fi,,,,,,,,if 'U C': g2^a then "^?("g2^1"экз."g2^a")" fi,,if g2^a:'7'then '^!7' fi,,,,,,"^A"v991^a,"^B"v991^b,if &uf('Av992^M#1')<>'' then '^M',,&uf('Av992^M#1') fi,,/,,,,(if p(g2) then if g2^v:&uf('Av991^a#1')then |^k|g2^b,|^d|g2^d, fi fi/) "I="v933 DEL 1910 * ADD 1910 (if p(v1001) then if val(&uf('+90'))>1 then v1001 fi fi/) REPEAT DEL 9909 * DEL 8909 * DEL 7777 * DEL 8888 * REP 1001^H 1 v1001^h,if v909^h:'экз.'then v1001^? fi //------- в 9909: 909 поля для корректировки ADD 9909 (if p(v909)then if v909^q=&uf('Av1001^q#1')then if v909^f=&uf('Av1001^f#1')or s(v909^f,&uf('Av1001^f#1'))=''then if (&uf('Av1001^!#1')='7'and s(v909^k,v909^d)='')or &uf('Av1910#1'):s(|^k|v909^k,|^d|v909^d,)and s(v909^k,v909^d)<>'' then v909, fi fi fi fi/) // в 8909: 909 поля для архива в 1909 ADD 8909 (if p(v909)then if v909^q=&uf('Av1001^q#1')then if v909^f=&uf('Av1001^f#1')or s(v909^f,&uf('Av1001^f#1'))=''then if s(v909^k,v909^d)='' or &uf('Av1910#1'):s(|^k|v909^k,|^d|v909^d,) then v909,'^W'&uf('Av1001^a#1'),',',&uf('Av1001^h#1'),if &uf('Av1001^b#1')<>''then '^P'&uf('Av1001^b#1'),'^M'&uf('Av1001^m#1'),fi fi fi fi fi/) // 8888=1: поле 1909 с данным КСУ выбытия уже есть и его надо откорректировать; v8888=0: поле 1909 с данным КСУ надо создать ADD 8888 if p(v1909)then f(rsum((if p(v1909)then if v1909^W:&uf('Av1001^a#1')then if v1909^q=&uf('Av1001^q#1')then if v1909^f=&uf('Av1001^f#1')or s(v1909^f,&uf('Av1001^f#1'))=''then if s(v1909^k,v1909^d)='' or &uf('Av1910#1'):s(|^k|v1909^k,|^d|v1909^d,) then '1;'else '0;' fi fi fi fi fi,/)),0,0)else '0'fi ADD 1909 if val(v8888,' 0')=0 then (v8909/) fi REP 1909^W F if val(v8888,' 0')>0 then (if p(v1909)then v1909^W,if v1909^W:&uf('Av1001^a#1')then if v1909^q=&uf('Av1001^q#1')then if v1909^f=&uf('Av1001^f#1')or s(v1909^f,&uf('Av1001^f#1'))=''then if s(v909^k,v909^d)='' or &uf('Av1910#1'):s(|^k|v909^k,|^d|v909^d,) then ',' &uf('Av1001^h#1') fi fi fi fi fi/)fi REP 1909^W F (if p(v1909) then if p(v1909^W) then &uf('U',v1909^W) else # fi fi/) REP 9909^H 1 ',',&uf("V"v9909^h)',' //------исключение списанного номера определенного комплекта или списанного полностью, если комплект и место хранения в 909 отсутствуют из 9909 CHA 9909^H 1 ","v1001^h"," ',' REP 9909^H 1 &uf("U"v9909^h) REP 909 F &uf('+7W1#'),(if p(v909)then if g1='' then if v909^q=&uf('Av1001^q#1')then if v909^f=&uf('Av1001^f#1')or s(v909^f,&uf('Av1001^f#1'))=''then if (&uf('Av1001^!#1')='7'and s(v909^k,v909^d)='')or &uf('Av1910#1'):s(|^k|v909^k,|^d|v909^d,)and s(v909^k,v909^d)<>'' then &uf('Av9909#1'),&uf('+7W1#1'), else v909 fi else v909 fi else v909 fi else v909 fi fi/) DEL 909 F (if p(v909)then if v909^h=''or v909^h=','then'1'else'0'fi fi/) //-------формирование 909, если была передача IF if v1001^b<>''then'1'else'0'fi REP 909^H F &uf('+7W1#'),(if p(v909)then if &uf('Ag1#1')='' then if v909^q=&uf('Av1001^q#1')and (v909^f=&uf('Av1001^f#1')or s(v909^f,&uf('Av1001^f#1'))='')then if v909^d=&uf('Av1001^m#1')or v909^d='' then if s(','&uf('V'v909^h),','):s(','&uf('Av1001^h#1')',') then v909^h,&uf('+7W1#1'), else &uf('U'v909^h,','&uf('Av1001^h#1')),&uf('+7W1#1'), fi else v909^h fi else v909^h fi else v909^h fi fi/) ADD 7777 if p(v909^k)then f(rsum((if p(v909)then if v909^q=&uf('Av1001^q#1')then if (v909^f=&uf('Av1001^f#1')or s(v909^f,&uf('Av1001^f#1'))='') then '1;'fi fi fi/))+1,0,0)fi ADD 909 if g1='' then "^Q"v1001^q,"^H"v1001^h,"^K"v7777,"^D"v1001^m fi FI DEL 9909 * DEL 8909 * DEL 7777 * DEL 8888 * DEL 1910 1 UNTIL if p(v1910) then '1' fi DEL 1001 * END FI //---------- конец списания номера из 909 полей через CORREC //-----------------------------Очагова - передача IF if v991^M<>'' then '1' fi //-------------------еще раз цикл по значениям ИН/ШК, полю 1002 - для формирования передачи DEL 1002 * // беру уникальные ADD 1002 &uf('+7W941#',,,(v992/)),,,&uf('+7G941'),,,,&uf('+7G940') ADD 1002 XXXXXXXXXXXXXXXXXXX mpu,,(g941/),, XXXXXXXXXXXXXXXXXXX DEL 1004 * DEL 1006 * REPEAT XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 1003 * ADD 1003 XXXXXXXXXXXXXXXXXXX mpu,,&uf('Av1002#1') XXXXXXXXXXXXXXXXXXX DEL 1005 * //----заготовка для 910 переданного экземпляра ADD 1005 (if p(g940) then if ( &uf('Av1003^b#1')='' or &uf('+97',g940^b)=&uf('Av1003^b#1') ) and ( &uf('Av1003^h#1')='' or &uf('+97',g940^h)=&uf('Av1003^h#1') ) and ( g940^v='' or &uf('+97',g940^v)=&uf('Av991^A#1') ) then if &uf('IMAIN,StatusSpisGroup,U,C'): g940^A then |^A|g940^A,,,|^1|g940^Z else |^A|g940^9 fi,,,|^H|g940^H,,,,|^B|g940^B,,,,|^U|g940^U,,,,,|^E|g940^E,,,|^Q|g940^Q,,,|^R|g940^R,,,|^2|g940^2,,,|^F|g940^F,,,|^T|g940^T,,,|^=|g940^=,,,|^L|g940^L,,,,|^P|g940^P,,|^G|g940^G,,|^Y|g940^y,,,,|^0|g940^0,|^S|g940^S,,,,'^D',&uf('Av991^M#1'),,'^C',&uf('3'),,,,fi,,,fi/) // для добавления ADD 1004 (if p(v1005) then if &uf('IMAIN,StatusSpisGroup,U,C'): v1005^A then v1005 fi fi/) // для замены ADD 1006 (if p(v1005) then if &uf('IMAIN,StatusSpisGroup,U,C'): v1005^A then else v1005 fi fi/) DEL 1002 1 UNTIL if p(v1002) then '1' fi //-------------поля v1004 и 1006 в 910-- IF if s(v1004,v1006)<>'' then '1' fi,,, PUTLOG 'Переданы в ',,&uf('Av991^M#1'),,': ',,(if p(v1004) then if val(&uf('+90'))>1 then ', ' fi,,,,,v1004^H,,,if a(v1004^H) then v1004^B fi,,,,fi),,if v1006<>'' then '; ' fi,,(if p(v1006) then if val(&uf('+90'))>1 then ', ' fi,,,,,v1006^H,,,if a(v1006^H) then v1006^B fi,,,,fi),,,, //----добавляю переданные в 910 ADD 910 (v1004/) //----замена в переданных IF if v1006<>'' then '1' fi REPEAT REP 910 F (if p(v910) then if ( &uf('Av1006^b#1')='' or &uf('+97',v910^b)=&uf('Av1006^b#1') ) and ( &uf('Av1006^h#1')='' or &uf('+97',v910^h)=&uf('Av1006^h#1') ) and ( v910^v='' or &uf('+97',v910^v)=&uf('Av991^A#1') ) then if v910^A='6' then &uf('Av1006#1') else v910 fi,,else v910 fi,,fi/) DEL 1006 1 UNTIL if p(v1006) then '1' fi FI FI DEL 1002 * DEL 1003 * DEL 1004 * DEL 1005 * DEL 1006 * FI //-------------------------------------------Конец передачи //-----еще раз сколько осталось экземпляров DEL 5555 * ADD 5555 XXXXXXXXXXXXXXXXXXX if p(v910) then f(rsum( (if p(v910) then if v910^a='7' or v910^a='6' or &uf('IMAIN,StatusSpisGroup,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(v5555)>0 then else if s((| |v910^A| |)): '7' 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 fi XXXXXXXXXXXXXXXXXXX IF if val(v5555)>0 then '1' fi DEL 910 F (if p(v910) then if v910: '^A7' then '1' else '0' fi fi/) XXXXXXXXXXXXXXXXXXX FI //----если запись номера ж, то в случае списано все - корректировка статей IF if v920: 'J' and val(v5555)=0 then '1' fi IF if l("II="v903)>0 then '1'else'0'fi XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //-------------на запись статьи CORREC '*' (v910/) "II="v903 ADD 910 XXXXXXXXXXXXXXXXXXX if v1001:'^A7'then'^A7'fi XXXXXXXXXXXXXXXXXXX PUTLOG &uf('+7U10#"Списано все" в записи статьи, MFN=',f(val(mfn),0,0) ) DEL 1001 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX END XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX FI XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX //--------------конец статьи //--- Вывод протокола PUTLOG &uf('+7G10'),,(g10/) DEL 910^9 * DEL 940^9 * DEL 555 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 991 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 992 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 994 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 995 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 996 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 5555 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 1002 * DEL 1003 *