-- Шаблон создан мастером бланков
-- 13.06.2002 11:29:35
--
БланкСШаблоном "Книга учета извещений";

Режим:I;

var Загл:S="КНИГА УЧЕТА "+if(Режим=1,"ВЫПИСАННЫХ","ПОСТУПИВШИХ")+" ИЗВЕЩЕНИЙ";
var SelfCrd:S=if(Режим=1,"РПО_ИЗВЕЩЕНИЯ_ИСХ","РПО_ИЗВЕЩЕНИЯ_ВХ");

Вал:S=[BaseCurrency];

FlagНИ:L;

var MM:I;
var MMTxt:S=if(MM<=12,Месяц(MM),if(MM=13,"Год",if(MM=14,"I квартал",if(MM=15,"II квартал",if(MM=16,"III квартал","IV квартал")))));
var YYYY:I=[Year(ToDay)];
var ДН_:D=if(MM<13,Dat(1,MM,YYYY),if(MM=13,Dat(1,1,YYYY),if(MM=14,Dat(1,1,YYYY),if(MM=15,Dat(1,4,YYYY),if(MM=16,Dat(1,7,YYYY),Dat(1,10,YYYY))))));
var ДН:D=if(FlagНИ,Dat(1,1,YYYY),ДН_);
var ДК:D=if(MM<12,Dat(1,MM+1,YYYY),if(MM=12 or MM=13 or MM=17,Dat(1,1,YYYY+1),if(MM=14,Dat(1,4,YYYY),if(MM=15,Dat(1,7,YYYY),if(MM=16,Dat(1,10,YYYY))))));

ПризнПодр:S;
var НаимПодр:S=if(Name_A(ПризнПодр)="" or Name_A(ПризнПодр)=" ",ПризнПодр,Name_A(ПризнПодр));

var Упр: I;

var c01[]:S;
var c02[]:S;
var c03[]:S;
var c04[]:S;
var c05[]:N;
var c06[]:S;
var c07[]:S;
var c08[]:N;
var c09[]:S;
var Ukey[]:Record;
var is69н[]:L;
var SumC05:N=SumOfArray(c05);
var SumC08:N=SumOfArray(c08);

var Buf[]:S;
var Buf2[]:S;
--
--Процедуры и функции -------------			      
Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(c01);
 ClearVariable(c02);
 ClearVariable(c03);
 ClearVariable(c04);
 ClearVariable(c05);
 ClearVariable(c06);
 ClearVariable(c07);
 ClearVariable(c08);
 ClearVariable(c09);
 ClearVariable(Ukey);
 ClearVariable(is69н);
end;

Proc Расчет;
var OWA,OA1,OA2:I;
var nr,nr1,nr2,n,n1,n2:I;
var tmp:s;
var Filter,Ord,f4,f6:S;
var Flag:L;
var f69н:L;
var УчетПодр:L;
 Очистить;
 if Режим=1:
--    Filter="(ДатаИзв>="+DateToString(ДН)+"and ДатаИзв<"+DateToString(ДК)+") and Проводить"+if(ПризнПодр="",""," and Подр='"+ПризнПодр+"'");
    Filter="(ДатаИзв>="+DateToString(ДН)+"and ДатаИзв<"+DateToString(ДК)+") and Проводить";
    Ord="ДатаИзв;Номер";
    f4="СчДеб";
    f6="Призн";
   else
--    Filter="(ДВозврат2>="+DateToString(ДН)+"and ДВозврат2<"+DateToString(ДК)+") and Проводить"+if(ПризнПодр="",""," and Подр='"+ПризнПодр+"'");
    Filter="(ДВозврат2>="+DateToString(ДН)+"and ДВозврат2<"+DateToString(ДК)+") and Проводить";
    Ord="ДВозврат2;Номер";
    f4="ПолучСчКре";
    f6="ПолучПризн";
 fi;
 Flag=False;
 OWA=OpenWorkArea(SelfCrd,Ord,Filter+" and Валюта='"+Вал+"'");
 Try
  nr=Records(OWA);
  ShowProgress(nr,"Расчет...");
  for n=1..nr do
   УчетПодр=ПризнПодр='';
   if not УчетПодр:УчетПодр=ПризнПодр=GetFieldS(OWA,n,"Подр");fi;
   ProgressPos(n);
   f69н=GetFieldL(OWA,n,"is69н");
   if n=1:
      OA1=OpenArray(OWA,n,"ПОЛУЧ","");
      if ПризнПодр='':OA2=OpenArray(OWA,n,"ПОЗИЦИИ","");
       | true	     :OA2=OpenArray(OWA,n,"ПОЗИЦИИ","","MATCH("+f6+",'*"+ПризнПодр+"*')");
      fi;
   fi;
   nr1=Records(OA1);
   nr2=Records(OA2);
   if not УчетПодр:УчетПодр=nr2>0;fi;
   if УчетПодр:
      InsertFrame(Упр,Упр+1);
      c01[Упр]=DateToString(GetFieldD(OWA,n,"ДатаОрд"));
      c01[Упр]=c01[Упр]+" "+GetFieldS(OWA,n,"НомОрд");
      c02[Упр]=DateToString(GetFieldD(OWA,n,"ДатаИзв"));
      c02[Упр]=c02[Упр]+" № "+GetFieldS(OWA,n,"НомерБум");
      if not Режим=0: Flag=GetFieldL(OWA,n,"Возврат2"); fi;
      if Flag or Режим=0:
	 c07[Упр]=DateToString(GetFieldD(OWA,n,"ДВозврат2"));
      fi;
      if f69н:
	 c03[Упр]=GetFieldS(OWA,n,"ПОЛУЧРЕКВ.КорИмя");
      fi;
      for n1=1..nr1 do
       c03[Упр]=Раб.Бюджет2005.Объединить(c03[Упр],GetFieldS(OA1,n1,"РЕКВ.КорИмя"),","+Chr(13));
      od;
      for n2=1..nr2 do
       c04[Упр]=GetFieldS(OA2,n2,f4);
       c05[Упр]=GetFieldN(OA2,n2,"Сум");
       tmp=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(GetFieldS(OA2,n2,f6)," ","К.*","");
       if not (Name_A(tmp)="" or Name_A(tmp)=" "): tmp=Name_A(tmp); fi;
       c06[Упр]=tmp;
       c08[Упр]=GetFieldN(OA2,n2,"ПолучСум");
       UKey[Упр]=GetRecordKey(OWA,n);
       is69н[Упр]=f69н;
       if not n2=nr2:
	  InsertFrame(Упр,Упр+1);
	  c01[Упр]="=//=";
	  c02[Упр]="=//=";
	  c03[Упр]="			 =//=";
	  if Flag: c07[Упр]="=//="; fi;
       fi;
      od;
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
end;
--Процедуры и функции -------------			      
--
--Обработчики событий полей шаблона-----
Func MMTxt_onEnter (Field:S; Iter:I):L;
var i:I;
 ClearVariable(Buf);
 for i=1..12 do Buf[i]=Месяц(i); od;
 Buf[13]="Год";
 Buf[14]="I квартал";
 Buf[15]="II квартал";
 Buf[16]="III квартал";
 Buf[17]="IV квартал";
 I=Alternate("Выбор периода расчета",Buf,30,Mon(ToDay),12);
 if I=0: ^False; fi;
 MM=I;
 Очистить;
 ^False;
end;

Func YYYY_onEnter (Field:S; Iter:I):L;
var i:i;
 ClearVariable(Buf);
 for i=1..5 do	Buf[i]=Str(Year(ToDay)+I-4); od;
 i=Alternate("Выбор года расчета",Buf,30,4,12);
 if I=0: ^False; fi; 
 YYYY=Int(Buf[i]);
 ClearVariable(Buf);
 Очистить;
 ^False;
end;

Func НаимПодр_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 tmp=AnaElection("П.*");
 if tmp="": ^False; fi;
 ПризнПодр=tmp;
 ^False;
end;

Proc НаимПодр_OnExit(FieldName: String; Iter: Integer);
 ПризнПодр="";
end;

Func Вал_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
var Cur:S;
 ClearVariable(Buf);
 ClearVariable(Buf2);
 n=0;
 for Currencies Cur="*" do
  n=n+1;
  Buf[n]=Up(Cur);
  Buf2[n]=Buf[n]+" --"+Name_C(Cur);
 od;
 n=Alternate("Валюта",Buf2,-1,SearchInArray(Buf,Вал),12);
 if n=0: ^False; fi;
 Вал=Buf[n];
 Очистить;
 Return False;
end;

Func ВызовИзвещения (Field:S; Iter:i):L;
var SelfBln:S;
 SelfBln=if(Режим=1,"ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ИСХ","ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ВХ");
 if is69н[Iter]: SelfBln=SelfBln+"_69н"; fi;
 OpenBlank(SelfBln,True,UKey[Iter]);
 ^False;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_onClick (Obj:S);
 if MM=0: Message("Введите месяц расчета",mtError); Template.Field="MMTxt"; Exit; fi;
 if YYYY=0: Message("Введите год расчета",mtError);  Template.Field="YYYY"; Exit; fi;
 if Вал="": Message("Введите валюту отчета",mtError); Template.Field="Вал"; Exit; fi;
 Расчет;
 Message("Расчет завершен");
end;

Proc btnПечать_onClick (Obj:S);
 Раб.Настр_Печать.Prn("","","ТББ.ДОКУМЕНТЫ.ЦЕНТРСНАБ.КНИГА_ИЗВ_ПС.000.cfg","",1);
end;

Proc cbFlagНИ_onChange	(Obj:S);
 Очистить;
end;

Proc Режим_OnChange(Sender: String);
 Очистить;
end;
--Обработчики событий объектов шаблона-----
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("","ТББ.ДОКУМЕНТЫ.ЦЕНТРСНАБ.КНИГА_ИЗВ_ПС.000.cfg");
end;
--Обработчики событий шаблона -----
--




Конец