-- Шаблон создан мастером бланков
-- 31.07.2002 10:32:26
--
БланкСШаблоном "Журнал регистрации ПП";

Секция1:Section;
Секция2:Section;

var Упр:Handle;

btnРасчет:Object;
--
БанкСч:I=[0];
var БанкСч_:S=if(БанкСч=0,"Лицевой счет в ОФК","Расчетный счет в банке");
var БанкСч__:S=if(БанкСч=0,"Лицевой счет плательщика в ОФК","Расчетный счет плательщика в банке");
--
var пп[]:I=$;
var Сумма[]:N;
var НомПП[]:S;
var ДатаБанк[]:D;
var НаимОРГ[]:S;
var БК[]:S;
var ТекстПризн1[]:S;
var Содерж[]:S;
var Ukey[]:S;
var ИтогСумма:N=SumOfArray(Сумма,Упр);
----
ДН_ПП:D;
ДК_ПП:D;
ДН_БАНК:D;
ДК_БАНК:D;
НомерПП_Н:S;
НомерПП_К:S;
БанкСчет:S;
БанкСчет_:S;
Получ:S;
Получ_:S;
КБК:S;
КСГУ:S;
Справ1:S;
НаимСправ1:S=if(Name_A(Справ1+".")="" or Name_A(Справ1+".")=" ",Справ1,Name_A(Справ1+"."));
Призн1:S;
Учитывать:I;
var Учитывать_:S=if(Учитывать=0,"Не определено",if(Учитывать=1,"Только учтеные",if(Учитывать=2,"Только не учтеные","?")));
ВБанк:I;
var ВБанк_:S=if(ВБанк=0,"Не определено",if(ВБанк=1,"Только отправленые",if(ВБанк=2,"Только не отправленые","?")));
Проводить:I;
var Проводить_:S=if(Проводить=0,"Не определено",if(Проводить=1,"Только проведенные",if(Проводить=2,"Только не проведенные","?")));
var BufS1[]:S;
var BufСум1[]:N;
var BufS2[]:S;
var BufСум2[]:N;
--
var СУМ[]:N;
var СЧДЕБ[]:S;
var СЧКРЕ[]:S;
var ПРИЗНАК[]:S;
var КМНТ[]:S;
---
var Txt1:S="Закрыть настройку";
var FieldSender:S;
---
--
--Процедуры и функции -------------
Proc Clear;
 ClearVariable(Упр);
 ClearVariable(НомПП);
 ClearVariable(НаимОРГ);
 ClearVariable(БК);
 ClearVariable(Содерж);
 ClearVariable(ТекстПризн1);
 ClearVariable(Сумма);
 ClearVariable(ДатаБанк);
 ClearVariable(Ukey);
end;

Proc ВнешнийВид;
 if Справ1="":
    Секция1.Column(7,ColVisible,False);
    Секция2.Column(7,ColVisible,False);
    Секция1.Column(8,ColWidth,880);
    Секция2.Column(8,ColWidth,880);
    Секция1.Cell(1,8,CellText,"7");
   else
    Секция1.Column(7,ColVisible,True);
    Секция2.Column(7,ColVisible,True);
    Секция1.Column(8,ColWidth,480);
    Секция2.Column(8,ColWidth,480);
    Секция1.Cell(1,8,CellText,"8");
 fi;
end;

Proc СуммаСуб (OA:I; NR:I);
var n,n1,n2:i;
var Acc,Sgn:S;
var FlagNew:L;
 ClearVariable(BufS1);
 ClearVariable(BufСум1);
 ClearVariable(BufS2);
 ClearVariable(BufСум2);
 for n=1..NR do
  Acc=GetFieldS(OA,n,"СЧКРЕ");
  Acc=Раб.Бюджет2005.ВзятьКодСчета(Acc,"ВКР","КБК",False)+"."+Раб.Бюджет2005.ВзятьКодСчета(Acc,"ВКР","КСГУ",False);
  Sgn=GetFieldS(OA,n,"ПРИЗНАК");
  Sgn=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Sgn,Справ1+".*"," ");
  --
  if Acc<>".":
     n1=1;
     if BufS1[n1]="": BufS1[n1]=Acc; fi;
     FlagNew=True;
     While BufS1[n1]<>"" do
      if BufS1[n1]=Acc: BufСум1[n1]=BufСум1[n1]+GetFieldN(OA,n,"Сум"); FlagNew=False; Break; fi;
      n1=n1+1;
     od;
     if FlagNew: BufS1[n1]=Acc; BufСум1[n1]=GetFieldN(OA,n,"Сум"); fi;
  fi;
  --
  if Sgn<>"":
     n2=1;
     if BufS2[n2]="": BufS2[n2]=Sgn; fi;
     FlagNew=True;
     While BufS2[n2]<>"" do
      if BufS2[n2]=Sgn: BufСум2[n2]=BufСум2[n2]+GetFieldN(OA,n,"Сум"); FlagNew=False; Break; fi;
      n2=n2+1;
     od;
     if FlagNew: BufS2[n2]=Sgn; BufСум2[n2]=GetFieldN(OA,n,"Сум"); fi;
  fi;
 od;
 --
 n1=1;
 While BufS1[n1]<>""  do
  if BufS1[2]="":
     БК[Упр]=BufS1[n1]+" ="+Str(BufСум1[n1],2)+" руб. ";
    else
     БК[Упр]=БК[Упр]+BufS1[n1]+" ="+Str(BufСум1[n1],2)+" руб. ";
  fi;
  n1=n1+1;
 od;
 n2=1;
 While BufS2[n2]<>""  do
  if BufS2[2]="":
     ТекстПризн1[Упр]=BufS2[n2]+" ="+Str(BufСум2[n2],2)+" руб. ";
    else
     ТекстПризн1[Упр]=ТекстПризн1[Упр]+BufS2[n2]+" ="+Str(BufСум2[n2],2)+" руб. ";
  fi;
  n2=n2+1;
 od;
 ClearVariable(BufS1);
 ClearVariable(BufСум1);
 ClearVariable(BufS2);
 ClearVariable(BufСум2);
end;
--Процедуры и функции -------------
--
--
--Обработчики событий полей шаблона-----
Func БанкСч_onEnter (Field:S; Iter:I):L;
 if БанкСч=0: БанкСч=БанкСч+1;
   |True: БанкСч=0;
 fi;
 if БанкСчет<>"":
    БанкСчет="";
    БанкСчет_="";
    Clear;
 fi;
 ^False;
end;

Func Field_onEnter (Field:S; Iter:I):L;
 FieldSender=Field;
 ^True;
end;

Proc Field_onExit (Field:S; Iter:I);
 Clear;
end;

Func Д_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:d;
 Template.HideEditor(False);
 tmp=Calendar;
 if tmp=1.1.100: ^Cur; fi;
 if FieldSender="ДН_ПП": ДН_ПП=tmp;
   |FieldSender="ДК_ПП": ДК_ПП=tmp;
   |FieldSender="ДН_Банк": ДН_Банк=tmp;
   |FieldSender="ДК_Банк": ДК_Банк=tmp;
 fi;
 Clear;
 ^Cur;
end;

Func БанкСчет_onEnter (Field:S; Iter:I):L;
var Rec: Record;
 if БанкСчет<>"": Rec=StringToRecord(БанкСчет); else Rec=nil; fi;
 Rec=OpenCardFile("БАНК_СЧЕТА","НАШ",Rec);
 if Rec=nil: ^False; fi;
 БанкСчет=RecordToString(Rec);
 if БанкСч=0:
    БанкСчет_=GetCardFieldS("БАНК_СЧЕТА",Rec,"РПО_ОФК_ИМЯ")+" Л/С "+GetCardFieldS("БАНК_СЧЕТА",Rec,"РПО_ЛСчет");
   else
    БанкСчет_=GetCardFieldS("БАНК_СЧЕТА",Rec,"БАНК")+" Р/С "+GetCardFieldS("БАНК_СЧЕТА",Rec,"РСчет");
 fi;
 Clear;
 ^False;
end;

Proc БанкСчет_onExit (Field:S; Iter:I);
 БанкСчет="";
 Clear;
end;

Func Получ_onEnter (Field:S; Iter:I):L;
var Rec:Record;
 rec=Раб.Документы.ВыборСФильтром("КОНТРАГЕНТ","КорИмя","");
 if Rec=nil: ^False; fi;
 Получ=RecordToString(Rec);
 Rec=Раб.Бюджет2005.БанкСчет(Rec,False);
 if Rec<>nil:
    Получ_=GetCardFieldS("БАНК_СЧЕТА",Rec,"БанкИмя");
   else
    Получ_=GetCardFieldS("КОНТРАГЕНТ",StringToRecord(Получ),"КорИмя");
 fi;
 Clear;
 ^False;
end;

Proc Получ_onExit (Field:S; Iter:I);
 Получ="";
 Clear;
end;

Func КБК_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:s;
 Template.HideEditor(False);
 tmp=AnaElection("ФКР!");
 if tmp="": ^Cur; fi;
 КБК=SubStr(tmp,5,255);
 Clear;
 ^Cur;
end;

Func КСГУ_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:s;
 Template.HideEditor(False);
 tmp=AnaElection("КОСГУ!");
 if tmp="": ^Cur; fi;
 КСГУ=SubStr(tmp,7,255);
 Clear;
 ^Cur;
end;

Func Справ1_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 tmp=AnaElection("*",True);
 if tmp="": ^False; fi;
 Справ1=tmp;
 ВнешнийВид;
 Clear;
 ^False;
end;

Proc Справ1_OnExit(FieldName: String; Iter: Integer);
 Призн1="";
 ВнешнийВид;
 Clear;
end;

Func Призн1_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,Mask:s;
 if Справ1="": Mask="*"; else Mask=Справ1+".*"; fi;
 tmp=AnaElection(Mask);
 if tmp="": ^False; fi;
 Призн1=tmp;
 Справ1=SubStr(Призн1,1,Pos(".",Призн1)-1);
 ВнешнийВид;
 Clear;
 ^False;
end;

Func Учитывать_onEnter (Field:S; Iter:I):L;
var n:i;
 ClearVariable(BufS1);
 BufS1[1]="Все платежные поручения";
 BufS1[2]="Только учтеные";
 BufS1[3]="Только не учтеные";
 n=Alternate("Режим показа",BufS1);
 if n=0: ^False; fi;
 Учитывать=n-1;
 Clear;
 ClearVariable(BufS1);
 ^False;
end;

Func ВБанк_onEnter (Field:S; Iter:I):L;
var n:i;
 ClearVariable(BufS1);
 BufS1[1]="Все платежные поручения";
 BufS1[2]="Только отправленые";
 BufS1[3]="Только не отправленые";
 n=Alternate("Режим показа",BufS1);
 if n=0: ^False; fi;
 ВБанк=n-1;
 Clear;
 ClearVariable(BufS1);
 ^False;
end;

Func Проводить_onEnter (Field:S; Iter:I):L;
var n:i;
 ClearVariable(BufS1);
 BufS1[1]="Все платежные поручения";
 BufS1[2]="Только проведенные";
 BufS1[3]="Только не проведенные";
 n=Alternate("Режим показа",BufS1);
 if n=0: ^False; fi;
 Проводить=n-1;
 Clear;
 ClearVariable(BufS1);
 ^False;
end;

Func ВызовПП (Field:S; Iter:I):l;
 OpenBlank("ДОКУМЕНТЫ.БАНК.ПОРУЧ",True,StringToRecord(UKey[Iter]));
 ^False;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_onClick(Obj:S);
var OWA,OA,n,Nr,n2,NR2:I;
var F,F1,F2,F3,F4,F5,F6,F7,F8,tmp1,tmp2,tmp:S;
var FL,FL1,FL2,FL3,FL4,FL5,FL6,FL7,FL8:I;
var FS,FS1,FS2:S;
var p,z:I;
var RРекв,RБанк:Record;
var DelFrame:L;
 if ДН_ПП>ДК_ПП and ДК_ПП>1.1.100: Message("Конечная дата не может превышать начальную!"); Template.Field="ДК_ПП"; Exit; fi;
 if ДН_Банк>ДК_Банк and ДК_Банк>1.1.100: Message("Конечная дата не может превышать начальную!"); Template.Field="ДК_Банк"; Exit; fi;
 Clear;
 --
  if ДН_ПП= 1.1.100 and ДК_ПП= 1.1.100: F1="";
    |ДН_ПП<>1.1.100 and ДК_ПП= 1.1.100: F1="Дата>="+DateToString(ДН_ПП);
    |ДН_ПП= 1.1.100 and ДК_ПП<>1.1.100: F1="Дата<="+DateToString(ДК_ПП);
    |ДН_ПП<>1.1.100 and ДК_ПП<>1.1.100: F1="Дата>="+DateToString(ДН_ПП)+" and Дата<="+DateToString(ДК_ПП);
  fi;
  FL1=Length(F1);
  if ДН_Банк= 1.1.100 and ДК_Банк= 1.1.100: F2="";
    |ДН_Банк<>1.1.100 and ДК_Банк= 1.1.100: F2="ДатОпер>="+DateToString(ДН_Банк);
    |ДН_Банк= 1.1.100 and ДК_Банк<>1.1.100: F2="ДатОпер>1.1.100 and ДатОпер<="+DateToString(ДК_Банк);
    |ДН_Банк<>1.1.100 and ДК_Банк<>1.1.100: F2="ДатОпер>="+DateToString(ДН_Банк)+" and ДатОпер<="+DateToString(ДК_Банк);
  fi;
  FL2=Length(F2);
  if НомерПП_Н=""  and НомерПП_К="" : F3="";
    |НомерПП_Н<>"" and НомерПП_К="" : F3="НомерБум>='"+НомерПП_Н+"'";
    |НомерПП_Н=""  and НомерПП_К<>"": F3="НомерБум<='"+НомерПП_К+"'";
    |НомерПП_Н<>"" and НомерПП_К<>"": F3="НомерБум>='"+НомерПП_Н+"' and НомерБум<='"+НомерПП_К+"'";
  fi;
  FL3=Length(F3);
  if Получ<>"": F4="РЕКВП="+Получ;
    |True: F4="";
  fi;
  FL4=Length(F4);
  if Проводить=1: F5="Проводить";
    |Проводить=2: F5="not Проводить";
    |True:	  F5="";
  fi;
  FL5=Length(F5);
  if  БанкСчет<>"":F6="БАНК="+БанкСчет;
     |True: F6="";
  fi;
  FL6=Length(F6);
  if Проводить=1: F7="РПО_ВБанк";
    |Проводить=2: F7="not РПО_ВБанк";
    |True:	  F7="";
  fi;
  FL7=Length(F7);
  if Учитывать=1: F8="РПО_Учитывать";
    |Учитывать=2: F8="not РПО_Учитывать";
    |True:	  F8="";
  fi;
  FL8=Length(F8);
 --
 F=F1;
 if F= "" and F2= "": F="";
   |F<>"" and F2= "": F=F;
   |F= "" and F2<>"": F=F2;
   |F<>"" and F2<>"": F=F+" and "+F2;
 fi;
 if F= "" and F3= "": F="";
   |F<>"" and F3= "": F=F;
   |F= "" and F3<>"": F=F3;
   |F<>"" and F3<>"": F=F+" and "+F3;
 fi;
 if F= "" and F4= "": F="";
   |F<>"" and F4= "": F=F;
   |F= "" and F4<>"": F=F4;
   |F<>"" and F4<>"": F=F+" and "+F4;
 fi;
 if F= "" and F5= "": F="";
   |F<>"" and F5= "": F=F;
   |F= "" and F5<>"": F=F5;
   |F<>"" and F5<>"": F=F+" and "+F5;
 fi;
 if F= "" and F6= "": F="";
   |F<>"" and F6= "": F=F;
   |F= "" and F6<>"": F=F6;
   |F<>"" and F6<>"": F=F+" and "+F6;
 fi;
 if F= "" and F7= "": F="";
   |F<>"" and F7= "": F=F;
   |F= "" and F7<>"": F=F7;
   |F<>"" and F7<>"": F=F+" and "+F7;
 fi;
 if F= "" and F8= "": F="";
   |F<>"" and F8= "": F=F;
   |F= "" and F8<>"": F=F8;
   |F<>"" and F8<>"": F=F+" and "+F8;
 fi;
 if FL1+FL+FL3+FL4+FL5+FL6+FL7+FL8>Length(F): Message("Слишком сложное условие отбора!"); Exit; fi;
 --
 if КБК<>"" and КСГУ= "": FS1="Match(СЧКРЕ,'"+Раб.Бюджет2005.ПолучитьМаскуСчета("ВКР",КБК,"","","","","?")+"*')";
   |КБК= "" and КСГУ<>"": FS1="Match(СЧКРЕ,'"+Раб.Бюджет2005.ПолучитьМаскуСчета("ВКР","","","","",КСГУ,"?")+"*')";
   |КБК<>"" and КСГУ<>"": FS1="Match(СЧКРЕ,'"+Раб.Бюджет2005.ПолучитьМаскуСчета("ВКР",КБК,"","","",КСГУ,"?")+"*')";
   |True: FS1="";
 fi;
 if Справ1<>"" and Призн1= "": FS2="Match(ПРИЗНАК,'*"+Справ1+".*')";
   |Справ1<>"" and Призн1<>"": FS2="Match(ПРИЗНАК,'*"+Призн1+"*')";
   |True: FS2="";
 fi;
 FS=FS1;
 if FS<>"" and FS2= "": FS=FS;
   |FS= "" and FS2<>"": FS=FS2;
   |FS<>"" and FS2<>"": FS=FS+" and "+FS2;
   |True: FS="";
 fi;
 OWA=OpenWorkArea("ПОРУЧ","ДАТА;НОМЕР",F);
 Try
  NR=Records(OWA);
  ShowProgress(Nr,"Расчет....");
  for n=1..NR do
   ProgressPos(n);
   InsertFrame(Упр,Упр+1);
   НомПП[Упр]="№ "+GetFieldS(OWA,n,"НОМЕРБУМ")+" / "+DateToString(GetFieldD(OWA,n,"ДАТА"));
   if GetFieldL(OWA,n,"ПРОВОДИТЬ"): ДатаБанк[Упр]=GetFieldD(OWA,n,"ДАТОПЕР"); fi;
   Сумма[Упр]=GetFieldN(OWA,n,"Сумма");
   RРекв=GetFieldR(OWA,n,"РЕКВП");
   RБанк=GetFieldR(OWA,n,"БАНКП");
   if RРекв<>nil:
      if RБанк=nil: НаимОРГ[Упр]=GetCardFieldS("КОНТРАГЕНТ",RРекв,"КорИмя");
	else 
	 НаимОРГ[Упр]=GetCardFieldS("БАНК_СЧЕТА",RБанк,"БанкИмя"); 
      fi;
   fi;
   OA=OpenArray(OWA,n,"РПО_ПОЗИЦИИ","");
   if FS<>"": SetFilter(OA,FS); fi;
   NR2=Records(OA);
   if NR2=0:
      DelFrame=True;
     else
      DelFrame=False;
      СуммаСуб(OA,NR2);
   fi;
   CloseWorkArea(OA);
   Содерж[Упр]=GetFieldS(OWA,n,"РПО_НАЗНПЛАТ");
   UKey[Упр]=RecordToString(GetRecordKey(OWA,n));
   if DelFrame: DeleteFrame(Упр,Упр); fi;
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 Message("Расчет завершен");
end;

Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn("","","RPO_Журнал_Рег_ПП_000.cfg","",1);
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc Template_OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("","RPO_Журнал_Рег_ПП_000.cfg");
 ВнешнийВид;
end;
--Обработчики событий шаблона -----
--
Конец
