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

Режим:I;

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

Вал:S=[BaseCurrency];

FlagСодерж:L;
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;
Призн:S;
var НаимПризн:S=if(Name_A(Призн)="" or Name_A(Призн)=" ",Призн,Name_A(Призн));

var Упр: I;

var ЖО_Ном[]:S;
var ЖО_Дат[]:S;
var Изв_Ном[]:S;
var Изв_Дат[]:S;
var ПБС[]:S;
var Сч[]:S;
var Сум[]:N;
var ОтвДат[]:S;
var ОтвСум[]:N;
var Примеч[]:S;
var Ukey[]:Record;
var ВсегоСум:N=SumOfArray(Сум);
var ВсегоОтвСум:N=SumOfArray(ОтвСум);

var Buf[]:S;
var Buf2[]:S;
--
--Процедуры и функции -------------                           
Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(ЖО_Ном);
 ClearVariable(ЖО_Дат);
 ClearVariable(Изв_Ном);
 ClearVariable(Изв_Дат);
 ClearVariable(ПБС);
 ClearVariable(Сч);
 ClearVariable(Сум);
 ClearVariable(ОтвДат);
 ClearVariable(ОтвСум);
 ClearVariable(Примеч);
 ClearVariable(Ukey);
end;

Proc Расчет;
var OWA,OA1,OA2:I;
var nr,nr1,nr2,n,n1,n2:I;
var Filter,FSub,Ord,fСч,fПризн,БК,КОСГУ:S;
var Flag,Подтв:L;
var Rec: Record;
 Очистить;
 if Режим=1:
    Filter="(ДатаИзв>="+DateToString(ДН)+"and ДатаИзв<"+DateToString(ДК)+") and Проводить";
    Ord="ДатаИзв;Номер";
    fСч="СчДеб";
    fПризн="Призн";
   else
    Filter="(ДВозврат2>="+DateToString(ДН)+"and ДВозврат2<"+DateToString(ДК)+") and Проводить";
    Ord="ДВозврат2;Номер";
    fСч="ПолучСчКре";
    fПризн="ПолучПризн";
 fi;
 Flag=False;
 OWA=OpenWorkArea(SelfCrd,Ord,Filter+" and Валюта='"+Вал+"'");
 Try
  nr=Records(OWA);
  ShowProgress(nr,"Расчет...");
  if nr>0:
     OA1=OpenArray(OWA,1,"ПОЛУЧ","");
     if not МаскаКБК="":
        БК=SubStr(МаскаКБК,1,20);
        КОСГУ=SubStr(МаскаКБК,22,3);
     fi;
     FSub=Раб.Бюджет2005.Объединить(if(Призн="","","MATCH("+fПризн+",'*"+Призн+"*')"),if(МаскаКБК="","","MATCH("+fСч+",'"+БК+"."+Раб.Бюджет2005.МаскаСч6+"."+КОСГУ+"')")," and ");
     OA2=OpenArray(OWA,1,"ПОЗИЦИИ","",FSub);
  fi;
  for n=1..nr do
   ProgressPos(n);
   Rec=GetRecordKey(OWA,n);
   nr2=Records(OA2);
   if not nr2=0 and (GetFieldS(OWA,n,"Подр")="" or (GetFieldS(OWA,n,"Подр")=Призн and Match(Призн,"П.*"))):
      nr1=Records(OA1);
      InsertFrame(Упр,Упр+1);
      ЖО_Ном[Упр]=GetFieldS(OWA,n,"НомОрд");
      ЖО_Дат[Упр]=DateToString(GetFieldD(OWA,n,"ДатаОрд"));
      Изв_Ном[Упр]=GetFieldS(OWA,n,"НомерБум");
      Изв_Дат[Упр]=DateToString(GetFieldD(OWA,n,"ДатаИзв"));
      if not Режим=0: Подтв=GetFieldL(OWA,n,"Возврат2"); fi;
      if Подтв or Режим=0: ОтвДат[Упр]=DateToString(GetFieldD(OWA,n,"ДВозврат2")); fi;
      ПБС[Упр]=GetFieldS(OWA,n,"ПолучРекв.КорИмя");
      for n1=1..nr1 do
       ПБС[Упр]=Раб.Бюджет2005.Объединить(ПБС[Упр],GetFieldS(OA1,n1,"Рекв.КорИмя"),","+Chr(13));
      od;
      for n2=1..nr2 do
       Сч[Упр]=GetFieldS(OA2,n2,fСч);
       Сум[Упр]=GetFieldN(OA2,n2,"Сум");
       if Подтв or Режим=0: ОтвСум[Упр]=GetFieldN(OA2,n2,"ПолучСум"); fi;
       if FlagСодерж: Примеч[Упр]=GetFieldS(OA2,n2,"Содерж"); fi;
       UKey[Упр]=Rec;
       if not n2=nr2:
          InsertFrame(Упр,Упр+1);
          ЖО_Ном[Упр]="=//=";
          ЖО_Дат[Упр]="=//=";
          Изв_Ном[Упр]="=//=";
          Изв_Дат[Упр]="=//=";
          ПБС[Упр]="=//=";
          if Flag: ОтвДат[Упр]="=//="; 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;
 МаскаКБК=Раб.КБК.ВыбратьМаскуКБК("ФКР","*.?.304.04.*",МаскаКБК,True);
 Return False;
end;

Proc МаскаКБК_OnExit(FieldName: String; Iter: Integer);
 Очистить;
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,"ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ИСХ_69н","ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ВХ_69н");
 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 cbСодерж_OnChange(Sender: String);
 Очистить;
end;

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

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




Конец