!0 DEL 910^S F (if p(v910) then if v910^a:'6' then '0' else if p(v910^s) then '1' else '0' fi fi fi/) XXXXXXXXXXXXXXXXXXX DEL 910^0 F (if p(v910) then if v910^a:'6' then '0' else if p(v910^0) then '1' else '0' fi fi fi/) DEL 910^! F (if p(v910) then if v910^a:'6' then '0' else if p(v910^!) then '1' else '0' fi fi fi/) DEL 991 * ADD 991 '^B20220927^Cqq^D0^E0^F1' ADD 1003 '478752' ADD 1003 '478747' // 11 991^W=пусто - признак, что обр-ся первая порция, для суммирования со статусом U //8.1 //полный и краткий вариант проверки фонда // выполняется на записях по запросу инвентарных номеров // 991: B - дата проверки C - проверяемый фонд A - заново? // 991^D=1 - полный вариант // если фонд задан как *, то это - не задан CHA 991 1 '^C*' '' // в поле 1003 инвентари проверяемой порции IF if a(v1003) then '1' fi // инвентари беру все со статусом 0 ADD 1003 (if p(v910) then if v910^a:&unifor('IMAIN,StatusProvFond,U,0,1') then if p(v910^B) then v910^B else v910^H fi fi fi/)/ FI REP 1003 F mpu,(v1003/),if v991^W=''then &uf('+7W2#2'),&uf('+7W11#'),&uf('+7W12#')fi,&uf('+7W10#'),&uf('+7W13#',v991^W) // цикл по полям 1003 - повторение 1003 находит свой инвентарь REPEAT XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 1941 * IF if val(&uf('J',&unifor('+D'),',IN=',&uf('Av1003#1')))=0 then '1' fi PUTLOG &uf('Av1003#1'),' - экземпляр не найден' FI //1003 - проверяемый инвентарь //v991^B - дата проверки //v991^c - проверяемый фонд=место хранения // добавляю промежуточное подполе $ вместе с подполем 0=1 для статуса U // в случае несовпадения дат проверки или если ЗАНОВО ADD 910^$ F PF-ADD$ XXXXXXXXXXXXXXXXXXX // замена 910^0 - кол-во проверенных REP 910^0 F PF-REP0 XXXXXXXXXXXXXXXXXXX IF v991^D //-------------- с пересчетом цен // формирование новых повторений поля 910 ADD 99 XXXXXXXXXXXXXXXXXXX PF-ADD99cena XXXXXXXXXXXXXXXXXXX // удаляется цена, если она совпала с общей DEL 99^E F (if p(v99) then if p(v99^s) then if &unifor('Av991^B#1')<>'' and &uf('G0/'v99^s)=&unifor('Av991^B#1') or &unifor('Av991^B#1')='' and &uf('G0/'v99^s)=&unifor('3') then if f(val(v99^e),0,2)=f(val(&unifor('Av10^d#1')),0,2) then '1' else '0' fi fi fi fi/) XXXXXXXXXXXXXXXXXXX //2018 восстанавливаю дату поступления, если цена не изменилась DEL 99^C F (if p(v99) then if v99^(<>'' and v99^)<>'' and v99^(=v99^E then '1' else '0' fi fi/) REP 99 F (if p(v99) then v99,,if v99^C='' and v99^(<>'' and v99^)<>'' and v99^(=v99^E then '^C',v99^) fi fi/) FI IF if v991^D<>'1' then '1' fi //------------- без пересчета цен // формирование новых повторений поля 910 ADD 99 XXXXXXXXXXXXXXXXXXX PF-ADD99 XXXXXXXXXXXXXXXXXXX FI // в архивное поле ADD 1941 XXXXXXXXXXXXXXXXXXX (if p(v910) and p(v910^$) then |^A|v910^a,|^B|v910^b,|^H|v910^h,|^D|v910^d,|^F|v910^f,|^S|v910^$,|^U|v910^u,|^Y|v910^Y,|^1|v910^1,|^2|v910^2,|^T|v910^t,|^R|v910^r,|^4|v910^4,|^=|v910^=,|^Q|v910^q,|^!|d910^!,if &umarci('1910#!#2')<>''then &umarci('1910#!#2')else v910^!fi,|^E|v910^e,if a(v910^e)then if &unifor('Av10^d#1')<>'' then '^E'&unifor('Av10^d#1') fi fi,|^C|v910^c,|^0|d910^0,if &umarci('1910#0#2')<>''then &umarci('1910#0#2')else v910^0 fi,|^9|d910^9,if &umarci('1910#9#2')<>''then &umarci('1910#9#2')else v910^9 fi fi/) XXXXXXXXXXXXXXXXXXX ADD 941 XXXXXXXXXXXXXXXXXXX if s(v941): s(|^A|v1941^a,|^B|v1941^b,|^H|v1941^h,|^D|v1941^d,|^F|v1941^f,|^S|v1941^s,|^U|v1941^u,|^Y|v1941^Y,|^1|v1941^1,|^2|v1941^2,|^T|v1941^t,|^R|v1941^r,|^4|v1941^4,|^=|v1941^=,|^Q|v1941^q,|^!|v1941^!) then else v1941 fi XXXXXXXXXXXXXXXXXXX REP 941^0 F (if p(v941) then if p(v941^0) then if ( s(v941^h,v1941^h)<>''and &uf('+97',v941^h)=&uf('Av1941^h#1') or s(v941^b,v1941^b)<>''and &uf('+97',v941^b)=&uf('Av1941^b#1') ) and v941^s=&uf('Av1941^s#1') then &uf('Av1941^0#1') else v941^0 fi else # fi fi/) // если тот же инвентарь и экз-р на проверке, то счетчик в подполе 0 DEL 910 F (if p(v910) then if p(v910^$)then '1' else '0' fi fi/) XXXXXXXXXXXXXXXXXXX ADD 910 XXXXXXXXXXXXXXXXXXX (v99/) XXXXXXXXXXXXXXXXXXX DEL 99 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 1003 1 XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 1941 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX UNTIL if p(v1003) then '1' else '0' fi XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX // формирование протокола проверки PUTLOG PF-ToLog DEL 910^) * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX DEL 910^E F (if p(v910)then if p(v910^e)and v910^E.1=''then '1'else'0'fi fi/) XXXXXXXXXXXXXXXXXXX DEL 991 * XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX