Отзыв 300-ок
Скачать (arj-файл; Размер - 2923)Обсудить в форуме
Описание
Отзываем 300-ки (нехватка средств на корсчете).
Макет D, ни в коем случае не применять для отзыва одного документа -
нельзя - макет D только для отзыва из 300-ки (проходили).
Нормальный пример как можно из menu сделать MultiSelect (Thnx Adyan)
Макет D, ни в коем случае не применять для отзыва одного документа -
нельзя - макет D только для отзыва из 300-ки (проходили).
Нормальный пример как можно из menu сделать MultiSelect (Thnx Adyan)
Текст примера
/*Евгений Дадыков aka -=KaMPiLeR=- МБ СЕНАТОР*/ /******************************************************************************* * * Отзываем 300-ки (нехватка средств на корсчете). * Макет D, ни в коем случае не применять для отзыва одного документа - * нельзя - макет D только для отзыва из 300-ки (проходили). * * Нормальный пример как можно из menu сделать MultiSelect (Thnx Adyan) * В поле DocumnetId должно быть приписан справа символ "*" * делаеться это на этапе приема документов из РКЦ (mcirecr.mac) * * там где идет проверка макета вставить * ******************************************************************************* elif( ( Счетчик_итогов == 4 ) /* 300-ка промежуточная */ or ( Счетчик_итогов == 5 ) /* 300-ка реальная */ ) /*Подготавливаем 300-ки*/ cnt300=cnt300+1; sum300=sum300+Начальный.Sum; Начальный.Code_Currency = 0; Начальный.CorSchem = 0; Начальный.DocumentId=substr(Строка,1,6); Начальный.DateCarry=date( int(substr( Строка, 7, 2 )), int(substr( Строка, 9, 2 )), int(substr( Строка, 11, 4 )) ); if( (geteq(Начальный))and(Начальный.DocumentId==substr(Строка,1,6)) ) /*Приписываем звездочку в конце DocumentId - признак что нехватило средств на корсчете*/ Начальный.DocumentId=Начальный.DocumentId+"*"; update(Начальный); end; ************************************************************************************************ cnt300 и sum300 - можно потом выводить с сообщением после подкачки всего рейса что в рейсе есть 300-ки. */ import BankInter, format, _repstr, _repdb, _math; file _corac(coracdoc) key 5 write; file _sr(srlog) write; Array mnMenu, /* mnMenu - пункты меню, */ Select; /* Select списoк выбранных пунктов */ asize(mnMenu,0); mnMenu(0)="Конец выбора"; mnMenu(1)="Выделить все"; mnMenu(2)="Инвертировать"; i=3; rewind(_corac); count=0; Summ=$0; mydate={curdate}; /* эта строка, если выгружали из планируемых - перед закрытием дня */ getdate(mydate,"С какой даты выгружали"); _corac.DateCarry=mydate; _corac.Code_Currency = 0; _corac.CorSchem = 0; _corac.DocumentId=""; getge(_corac); ТекЗапись=0; InitProgress ( NRecords(_corac),""," Заполняю меню "); while(next(_corac)) if( (index(_corac.DocumentId,"*"))and(_corac.DateCarry==mydate) ) summa=string(_corac.Sum:a); summa=AddLeaderChars(summa," ",15); numb=_corac.Numb_Document; /*numb=mod(numb,1000);*/ numb=AddLeaderChars(numb," ",6); mnMenu(i)=substr(substr(_corac.DocumentId,1,6)+":"+numb+":"+summa+":"+_corac.DateCarry+":"+substr(_corac.Account_Payer,14,5)+":"+_corac.Payer,1,76); /*string(_corac.Sum:a)*/ i=i+1; count=count+1; Summ=Summ+_corac.Sum; end; ТекЗапись = ТекЗапись + 1; UseProgress (ТекЗапись); end; if(aSize(mnMenu)==3) msgbox("Нет документов на отзыв 300-ки"); exit(1); else msgbox("Трехсотка ("+string(count)+")::="+string(Summ:a)); end; flChoice=TRUE; nm=1; while(flChoice) nm=menu(mnMenu,"~ENTER~ - выбор, ~ESC~ - выход, ~PgUp~ - вверх, ~PgDw~- вниз","Выбор документов на отзыв по 300",null,null,nm); /*SWITCH (mn)*/ if(nm<0)/*по ESC вываливаемся из отчета*/ exit(1); end; if(nm==0)/*0-й пункт меню - КОНЕЦ ВЫБОРА*/ i=3; j=0; aSize(Select,0); while(i<aSize(mnMenu)) if(index(mnMenu(i),"~")!=0) Select(j)=substr(mnMenu(i),2,strlen(mnMenu(i))-2); j=j+1; end; i=i+1; end; if(asize(Select)==0) if(GetTrue(False,"Ничего не выбрано, закончить выбор?")) exit(1); end; else flChoice=false; end; end; if(nm==1)/*1-й пункт меню - Выделить все*/ i=3; while(i<asize(mnMenu)) if (index(mnMenu(i),"~")==0) mnMenu(i)="~"+mnMenu(i)+"~"; end; i=i+1; end; end; if(nm==2)/*2-й пункт меню - Инвертировать*/ i=3; while(i<asize(mnMenu)) if (index(mnMenu(i),"~")>0) mnMenu(i)=substr(mnMenu(i),2,strlen(mnMenu(i))-2); else mnMenu(i)="~"+mnMenu(i)+"~"; end; i=i+1; end; end; /* если уже есть выделение красным цветом (символы "~"), то снимаем его, нет-ставим */ if(nm>2) if (index(mnMenu(nm),"~")>0) mnMenu(nm)=substr(mnMenu(nm),2,strlen(mnMenu(nm))-2); else mnMenu(nm)="~"+mnMenu(nm)+"~"; end; end; end; /*Прочитать значение НомерРейса и увеличить его на единицу*/ НомерРейса=AddLeaderChars(НомерРейсаНаМЦИ+1,"0",2); /*Выгружаем по D-макету, но предварительно найти в coracdoc.dbt*/ setoutput(GetIniString("TEXTDIR")+"\\300.res"); j=0; while(j<=asize(Select)) i=0; rewind(_corac); _corac.Code_Currency = 0; _corac.CorSchem = 0; Строка = substr( Select(j), i+1 ); i=index(Строка,":"); if( i==0 ) return; end; _corac.DocumentId = substr( Строка, 1, i-1 )/*+"*"*/; Строка = substr( Строка, i+1 ); i=index(Строка,":"); if( i==0 ) return; end; НомерДокта = int( substr( Строка, 1, i-1 ) ); Строка = substr( Строка, i+1 ); i=index(Строка,":"); if( i==0 ) return; end; Сумма1 = strSubst(subStr(Строка, 1, i-1),"''",""); Сумма = money( Сумма1); Строка = substr( Строка, i+1 ); i=index(Строка,":"); if( i==0 ) return; end; _corac.DateCarry = date( int(substr( Строка, 1, 2 )), int(substr( Строка, 4, 2 )), int(substr( Строка, 7, 4 )) ); Строка = substr( Строка, i+1 ); i=index(Строка,":"); if( i==0 ) return; end; СчетПолучателя = substr( Строка, 1, i-1 ); Получатель = substr( Строка, i ); if( (geteq(_corac))/*and(_corac.Sum==Сумма) and (_corac.Numb_Document==НомерДокта) and (_corac.Account_Receiver==СчетПолучателя)*/ ) _corac.DocumentId=substr(_corac.DocumentId,1,6); update(_corac); println( "D", /* 1 = Вид макета*/ AddLeaderChars(_corac.Numb_Document,"0",5), /* 2-6 = Номер докмента*/ {MFO_Bank}, /* 7-15 = Наш БИК*/ strsubst( AddLeaderChars(string(_corac.Sum),"0",19), ".", /*19 - так как с точкой*/ "" ), /* 16-33 = Сумма документа*/ substr(_corac.DocumentId,1,6), /* 34-39 = Электронный номер отзываемого документа*/ {CORAC_Bank}, /* 40-59 = Наш Корсчет*/ strsubst( strsubst(string(date),"-",""), " ", "0" ), /* 60-67 = Дата составления ЭСИД*/ strsubst( strsubst(string(time),":",""), " ", "0" ), /* 68-73 = Время составления ЭСИД */ AddLeaderChars(НомерРейса,"0",6), /* 74-79 = Порядковый номер ЭСИД */ substr(НашКодСоставителя,1,10) /* 80-89 = Уникальный идентификатор составителя ЭСИД */ ); end; j=j+1; end; _sr.CorSchem=0; _sr.Code_Currency=0; _sr.Oper={Oper}; _sr.kind="О"; _sr.date=mydate; _sr.rd=date; _sr.rt=time; _sr.state=0; _sr.session=int(НомерРейса); _sr.filename=GetIniString("TEXTDIR")+"\\300.res"; _sr.fdate=date; _sr.ftime=time; _sr.fsize=91*asize(Select); insert(_sr);