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

S1 :Section;
S2 :Section;
S3 :Section;
S4 :Section;
S5 :Section;
S6 :Section;
S7 :Section;
S8 :Section;
S9 :Section;
S10:Section;

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

btnРасчет:Object;
cbВисячаяПодпись:Object;

fПечатьПарам:L;
fВисячаяПодпись:L;
fСортПП:L;
--
var Упр:I;
var Упр_:I=Упр+1;
var пп[]:I=$;
var Сумма[]:N;
var НомДок[]:S;
var ДатаБанк[]:D;
var НомПП[]:S;
var НаимОРГ[]:S;
var БК[]:S;
var ТекстПризн1[]:S;
var Содерж[]:S;
var Ukey[]:S;
var ИтогСумма:N=SumOfArray(Сумма,if(fВисячаяПодпись,Упр_,Упр));
var ИтогБКСумма:N;
var ИтогПризн1Сумма:N;
----
ТипДок:I;
var ТипДок_:S=if(ТипДок=1,"заявок на возврат","заявок на кассовый расход");
ДН_ПП:D;
ДК_ПП:D;
ДН_БАНК:D;
ДК_БАНК:D;
НомерПП_Н:S;
НомерПП_К:S;
БанкСчет:S;
БанкСчет_:S;
Получ:S;
Получ_:S;
Р2_НомДок: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 SelfCrd:S=if(ТипДок=1,"РПО_ЗАЯВКА_ВОЗВРАТ","РПО_ЗАЯВКА_КР");
var SelfBln:S=if(ТипДок=1,"ДОКУМЕНТЫ.БАНК.ЗАЯВКА_ВОЗВРАТ","ДОКУМЕНТЫ.БАНК.ЗАЯВКА_КР");
var SelfCfg:S="ТББ.ДОКУМЕНТЫ.БАНК.ЖУРНАЛ_РЕГ_ЗАЯВОК.000.cfg";

ДолжнРук:S;
ФИОРук:S;
ДолжнБух:S;
ФИОБух:S;

var Folder:S;
--
--Процедуры и функции -------------
Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(НомДок);
 ClearVariable(ДатаБанк);
 ClearVariable(НомПП);
 ClearVariable(НаимОРГ);
 ClearVariable(БК);
 ClearVariable(Содерж);
 ClearVariable(ТекстПризн1);
 ClearVariable(Сумма);
 ClearVariable(Ukey);
 ClearVariable(ИтогБКСумма);
 ClearVariable(ИтогПризн1Сумма);
end;

Proc ВнешнийВид;
var i:i;
var Obj: Object;
 for i=2..10 do
  if FindObject("S"+Str(i),Obj):
     Obj.CanPrint=fПечатьПарам;
  fi;
 od;
 if Справ1="":
    Секция1.Column(8,ColVisible,False);
    Секция2.Column(8,ColVisible,False);
    Секция2_.Column(8,ColVisible,False);
    Секция3.Column(5,ColVisible,False);
    Секция1.Column(9,ColWidth,880);
    Секция2.Column(9,ColWidth,880);
    Секция2_.Column(9,ColWidth,880);
    Секция3.Column(6,ColWidth,880);
    Секция1.Cell(1,9,CellText,"8");
   else
    Секция1.Column(8,ColVisible,True);
    Секция2.Column(8,ColVisible,True);
    Секция2_.Column(8,ColVisible,True);
    Секция3.Column(5,ColVisible,True);
    Секция1.Column(9,ColWidth,480);
    Секция2.Column(9,ColWidth,480);
    Секция2_.Column(9,ColWidth,480);
    Секция3.Column(6,ColWidth,480);
    Секция1.Cell(1,9,CellText,"9");
 fi;
end;

Func ВзятьКБК (aКБК:S; aТипКБК:S):S;
var tmp:S;
 if aКБК="" or aТипКБК="": ^""; fi;
 if aТипКБК="10":
    tmp=SubStr(aКБК,1,3)+"."+SubStr(aКБК,4,4)+"."+SubStr(aКБК,8,7)+"."+SubStr(aКБК,15,3)+"."+SubStr(aКБК,18,3);
   |aТипКБК="20":
    tmp=SubStr(aКБК,1,3)+"."+SubStr(aКБК,4,1)+"."+SubStr(aКБК,5,2)+"."+SubStr(aКБК,7,5)+"."+SubStr(aКБК,12,2)+"."+SubStr(aКБК,14,4)+"."+SubStr(aКБК,18,3);
   |aТипКБК="31" or aТипКБК="32":
    tmp=SubStr(aКБК,1,3)+"."+SubStr(aКБК,4,2)+"."+SubStr(aКБК,6,2)+"."+SubStr(aКБК,8,2)+"."+SubStr(aКБК,10,2)+"."+SubStr(aКБК,12,2)+"."+SubStr(aКБК,14,4)+"."+SubStr(aКБК,18,3);
   |True: ^"";
 fi;
 ^tmp;
end;

Func СуммаСуб (OA:I; nr:I):L;
var n,n1,n2,z:i;
var Acc,Sgn:S;
var Сум_:N;
var Flag,Ret:L;
 ClearVariable(BufS1);
 ClearVariable(BufСум1);
 ClearVariable(BufS2);
 ClearVariable(BufСум2);
 Ret=False;
 for n=1..nr do
  Flag=False;
  if ТипДок=1:
     Sgn=GetFieldS(OA,n,"Призн");
    else
     Acc=ВзятьКБК(GetFieldS(OA,n,"КБК"),GetFieldS(OA,n,"ТипКБК"));
     Sgn=Trim(GetFieldS(OA,n,"Призн")+" "+GetFieldS(OA,n,"Призн_ОснДок"));
  fi;
  if Справ1="":
     Sgn="";
     Flag=True;
    else
     Sgn=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Sgn,Справ1+".*"," ");
     if Sgn=Призн1 or Призн1="" or not Pos("!",Призн1)=0: Flag=True; fi;
  fi;
  Сум_=GetFieldN(OA,n,"Сум");
  if Flag:
     Ret=True;
     if not Acc="":
        z=SearchInArray(BufS1,Acc,True);
        if z=-1:
           z=InsertInArraySort(BufS1,Acc);
           InsertInArray(BufСум1,z,Сум_);
          else
           BufСум1[z]=BufСум1[z]+Сум_;
        fi;
     fi;
     --
     if not Sgn="":
        z=SearchInArray(BufS2,Sgn,True);
        if z=-1:
           z=InsertInArraySort(BufS2,Sgn);
           InsertInArray(BufСум2,z,Сум_);
          else
           BufСум2[z]=BufСум2[z]+Сум_;
        fi;
     fi;
  fi;
 od;
 --
 if Ret:
    InsertFrame(Упр,Упр+1);
    n1=1;
    While BufS1[n1]<>""  do
     if BufS1[2]="":
        БК[Упр]=BufS1[n1]+" ="+Format("%.2N",BufСум1[n1])+" руб. ";
       else
        БК[Упр]=БК[Упр]+BufS1[n1]+" ="+Format("%.2N",BufСум1[n1])+" руб. ";
     fi;
     n1=n1+1;
    od;
    n2=1;
    While BufS2[n2]<>""  do
     if BufS2[2]="":
        ТекстПризн1[Упр]=BufS2[n2]+" ="+Format("%.2N",BufСум2[n2])+" руб. ";
       else
        ТекстПризн1[Упр]=ТекстПризн1[Упр]+BufS2[n2]+" ="+Format("%.2N",BufСум2[n2])+" руб. ";
     fi;
     n2=n2+1;
    od;
    ИтогБКСумма=ИтогБКСумма+SumOfArray(BufСум1,n1-1);
    ИтогПризн1Сумма=ИтогПризн1Сумма+SumOfArray(BufСум2,n2-1);
 fi;
 ^Ret;
end;
--Процедуры и функции -------------
--
--
--Обработчики событий полей шаблона-----
Func ТипДок_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(BufS1);
 BufS1[1]="Заявка на кассовый расход";
 BufS1[2]="Заявка на возврат";
 n=Alternate("Выберите тип документа",BufS1,-1,ТипДок+1,12);
 if not n=0:
    ТипДок=n-1;
    Очистить;
 fi;
 Return False;
end;

Proc Field_onExit (Field:S; Iter:I);
 Очистить;
end;

Func Д_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:d;
var FieldSender:S;
 Template.HideEditor(False);
 FieldSender=AsString(Template.Field);
 tmp=Calendar;
 if tmp=1.1.100: ^Cur; fi;
 if FieldSender="ДН_ПП": ДН_ПП=tmp;
   |FieldSender="ДК_ПП": ДК_ПП=tmp;
   |FieldSender="ДН_Банк": ДН_Банк=tmp;
   |FieldSender="ДК_Банк": ДК_Банк=tmp;
 fi;
 Очистить;
 ^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);
 БанкСчет_=GetCardFieldS("БАНК_СЧЕТА",Rec,"РПО_ОФК_ИМЯ")+" Л/С "+GetCardFieldS("БАНК_СЧЕТА",Rec,"РПО_ЛСчет");
 Очистить;
 ^False;
end;

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

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

Proc Получ_onExit (Field:S; Iter:I);
 Получ="";
 Очистить;
end;

Func Р2_НомДок_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
 Template.HideEditor(False);
 Rec=Раб.Поиск.ВыборИзКартотеки("Выбор договора, контракта...",Раб.Договор.crdДоговор,"НомерДок","Номер документа","Рег and not НеДейств"+if(Получ="",""," and Контр="+Получ));
 if not Rec=nil:
    Р2_НомДок=GetCardFieldS(Раб.Договор.crdДоговор,Rec,"НомерДок");
    Очистить;
 fi;
 Return Cur;
end;

Proc Р2_НомДок_OnExit(FieldName: String; Iter: Integer);
 Очистить;
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,Pos(".",tmp)+1,255);
 Очистить;
 ^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);
 Очистить;
 ^Cur;
end;

Func Справ1_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 tmp=Раб.Бюджет2005.СписокСправ("*.1.304.05.*|*.1.201.11.*",0,"К.*|БО.*");
 if tmp="": ^False; fi;
 tmp=AnaElection(tmp,True,False);
 if tmp="": ^False; fi;
 Справ1=tmp;
 ВнешнийВид;
 Очистить;
 ^False;
end;

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

Func Призн1_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,Mask:s;
 if Справ1="": Mask=Раб.Бюджет2005.СписокСправ("*.1.304.05.*|*.1.201.11.*",0,"К.*|БО.*"); else Mask=Справ1+".*"; fi;
 tmp=AnaElection(Mask);
 if tmp="": ^False; fi;
 Призн1=tmp;
 Справ1=SubStr(Призн1,1,Pos(".",Призн1)-1);
 ВнешнийВид;
 Очистить;
 ^False;
end;

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

Func ВызовПП (Field:S; Iter:I):l;
 OpenBlank(SelfBln,True,StringToRecord(UKey[Iter]));
 ^False;
end;

Func ФИО_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field:S;
var Rec:Record;
var v1,v2:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 Template.HideEditor(False);
 Rec=OpenCardFile("Сотрудники");
 if not Rec=nil:
    v1=GetCardFieldS("Сотрудники",rec,"ДОЛЖНОСТЬ.Долж");
    v2=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
    if Field="ДолжнРук" or Field="ФИОРук": ДолжнРук=v1; ФИОРук=v2;
      |Field="ДолжнБух" or Field="ФИОБух": ДолжнБух=v1; ФИОБух=v2;
    fi;
 fi;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_onClick(Obj:S);
var OWA,OA,n,Nr,NR2:I;
var F,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,tmp:S;
var FL,FL1,FL2,FL3,FL4,FL5,FL6,FL7,FL8,FL9,FL10:I;
var FS,FS1,FS2:S;
var RРекв,RБанк,Rec:Record;
 if ДН_ПП>ДК_ПП and ДК_ПП>1.1.100: Message("Конечная дата не может превышать начальную",mtError); Template.Field="ДК_ПП"; Exit; fi;
 if ДН_Банк>ДК_Банк and ДК_Банк>1.1.100: Message("Конечная дата не может превышать начальную",mtError); Template.Field="ДК_Банк"; Exit; fi;
 Очистить;
 --
 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);
 if ТипДок=1:
    if КБК<>"" and КОСГУ= "": F9="Match(Док_КБК,'"+Раб.Формат.ReplaceSubStr(КБК,".","")+"???')";
      |КБК= "" and КОСГУ<>"": F9="Match(Док_КБК,'*"+КОСГУ+"')";
      |КБК<>"" and КОСГУ<>"": F9="Match(Док_КБК,'"+Раб.Формат.ReplaceSubStr(КБК,".","")+КОСГУ+"')";
      |True: F9="";
    fi;
  else
    F9="";
 fi;
 FL9=Length(F9);
 if not Р2_НомДок="" and not ТипДок=1: F10="Match(Осн_ДокНом,'*"+Р2_НомДок+"*')";
   |True: F10="";
 fi;
 FL10=Length(F10);
 --
 F=Раб.Бюджет2005.Объединить(F1,F2," И ");
 F=Раб.Бюджет2005.Объединить(F ,F3," И ");
 F=Раб.Бюджет2005.Объединить(F ,F4," И ");
 F=Раб.Бюджет2005.Объединить(F ,F5," И ");
 F=Раб.Бюджет2005.Объединить(F ,F6," И ");
 F=Раб.Бюджет2005.Объединить(F ,F7," И ");
 F=Раб.Бюджет2005.Объединить(F ,F8," И ");
 F=Раб.Бюджет2005.Объединить(F ,F9," И ");
 F=Раб.Бюджет2005.Объединить(F ,F10," И ");
 if FL1+FL+FL3+FL4+FL5+FL6+FL7+FL8+FL9+FL10>Length(F): Message("Слишком сложное условие отбора",mtError); Exit; fi;
 --
 if not ТипДок=1:
    if КБК<>"" and КОСГУ= "": FS1="Match(КБК,'"+Раб.Формат.ReplaceSubStr(КБК,".","")+"???')";
      |КБК= "" and КОСГУ<>"": FS1="Match(КБК,'*"+КОСГУ+"')";
      |КБК<>"" and КОСГУ<>"": FS1="Match(КБК,'"+Раб.Формат.ReplaceSubStr(КБК,".","")+КОСГУ+"')";
      |True: FS1="";
    fi;
 fi;
 if ТипДок=1:
    if Справ1<>"" and Призн1= "": FS2="Match(Призн,'*"+Справ1+".*')";
      |Справ1<>"" and Призн1<>"": FS2="Match(Призн,'*"+Призн1+"*')";
      |True: FS2="";
    fi;
   else
    if Справ1<>"" and Призн1= "": FS2="(Match(Призн,'*"+Справ1+".*') or Match(Призн_ОснДок,'*"+Справ1+".*'))";
      |Справ1<>"" and Призн1<>"": FS2="(Match(Призн,'*"+Призн1+"*') or Match(Призн_ОснДок,'*"+Призн1+"*'))";
      |True: FS2="";
    fi;
 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(SelfCrd,"ДатаДок;Номер",F);
 Try
  nr=Records(OWA);
  ShowProgress(Nr,"Расчет....");
  for n=1..nr do
   ProgressPos(n);
   Rec=GetRecordKey(OWA,n);
   if n=1: 
      if ТипДок=1:
         OA=OpenArray(OWA,n,"Позиции","Призн",FS);
        else
         OA=OpenArray(OWA,n,"Расшифр","КБК;Призн_ОснДок;Призн",FS);
      fi;
   fi;
   nr2=Records(OA);
   if not nr2=0:
      if СуммаСуб(OA,nr2):
         НомДок[Упр]="№ "+GetFieldS(OWA,n,"НомерДок")+" / "+DateToString(GetFieldD(OWA,n,"ДатаДок"));
         if GetFieldL(OWA,n,"Проводить"):
            ДатаБанк[Упр]=GetFieldD(OWA,n,"ДатаОпер");
            НомПП[Упр]="№ "+GetFieldS(OWA,n,"ДокОперНом")+" / "+DateToString(GetFieldD(OWA,n,"ДокОперДат"));
         fi;
         Сумма[Упр]=GetFieldN(OWA,n,"Док_Сум");
         RРекв=GetFieldR(OWA,n,"РеквП");
         RБанк=GetFieldR(OWA,n,"БанкП");
         if RРекв<>nil:
            if RБанк=nil: НаимОРГ[Упр]=GetFieldS(OWA,n,"РеквП.КорИмя");
              else
               НаимОРГ[Упр]=GetFieldS(OWA,n,"БанкП.БанкИмя");
            fi;
         fi;
         if ТипДок=1:
            tmp=ВзятьКБК(GetFieldS(OWA,n,"Док_КБК"),GetFieldS(OWA,n,"Док_ТипКБК"));
            if not tmp="":
               БК[Упр]=tmp+" ="+Format("%.2N",Сумма[Упр])+" руб. ";
            fi;
         fi;
         Содерж[Упр]=GetFieldS(OWA,n,"Док_НазнПл");
         UKey[Упр]=RecordToString(Rec);
      fi;
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 if fСортПП:
    SortSection(Упр,"НомПП");
    НомПП[1]=НомПП[1];
 fi;
 Message("Расчет завершен");
end;

Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn("","",SelfCfg,"",1);
end;

Proc cbПечатьПарам_OnChange(Sender: String);
 ВнешнийВид;
end;

Proc cbСортПП_OnChange(Sender: String);
 if fСортПП:
    SortSection(Упр,"НомПП");
    НомПП[1]=НомПП[1];
   else
    Очистить;
 fi;
end;

Proc cbВисячаяПодпись_OnChange(Sender: String);
 if fВисячаяПодпись:
    if Упр<2: 
       Message("Не требуется");
       fВисячаяПодпись=False;
       cbВисячаяПодпись.State=fВисячаяПодпись;
      else
       Упр=Упр-1;
    fi;
   else
    Упр=Упр+1;
 fi;
end;

Proc btnЭкспортДок_OnClick(Sender: String);
var Iter,OWA,n,p:i;
var bln:S;
var Ф0531851:L;
var Rec: Record;
 if not ТипДок=0: Message("Данный функционал реализован только для ЗКР. Обратитесь к разработчику",mtWarning); Exit; fi;
 p=0;
 if ChooseFolder(Folder,"Выберите папку для экспорта")=cmCancel: Exit; fi;
 OWA=OpenWorkArea(SelfCrd,"");
 Try
  for Iter=1..Упр do
   ProgressPos(Iter);
   Rec=StringToRecord(UKey[Iter]);
   if RecordExists(SelfCrd,Rec):
      n=GetRecordNumber(OWA,Rec);
      Ф0531851=GetFieldL(OWA,n,"Ф0531851");
      if ТипДок=0 and Ф0531851: bln="ДОКУМЕНТЫ.БАНК.ЗАЯВКА_КР_ПЕЧАТЬ0531851";
        |ТипДок=0: bln="ДОКУМЕНТЫ.БАНК.ЗАЯВКА_КР_ПЕЧАТЬ";
        |true: bln="";
      fi;
      if not bln="":
         OpenBlank(bln,False,Rec);
         ExportBlank(7,bln,Folder+"ЗКР №"+Format("%-6S",GetFieldS(OWA,n,"НомерДок"))+" от "+Раб.Формат.ReplaceSubStr(DateToString(GetFieldD(OWA,n,"ДатаДок")),".","-"),False,True);
         Close(bln);
      fi;
      p=p+1;
      Hint("Экспортированно "+Str(Iter)+" из "+Str(Упр));
     else
      Trace("Заявка с ключем "+UKey[Iter]+" не найдена в базе данных");
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
  Message("Экспортировано заявок "+Str(p)+" из "+Str(Упр));
  ExecuteProgram('Explorer "'+Folder+'"');
 end;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc Template_OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("",SelfCfg);
 ВнешнийВид;
end;
--Обработчики событий шаблона -----
--



Конец
