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

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

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

btnРасчет:Object;

fПечатьПарам:L;

--
var Упр:I;
var пп[]:I=$;
var ТекГод[]:S;
var НомДок[]:S;
var ОснДок[]:S;
var СумДок[]:N;
var СумТек[]:N;
var СумПлан[]:N;
var НаимКонтр[]:S;
var УчетНом[]:S;
var БК[]:S;
var ТекстПризн1[]:S;
var Содерж[]:S;
var Ukey[]:S;
var ИтогСумДок:N=SumOfArray(СумДок,Упр);
var ИтогСумТек:N=SumOfArray(СумТек,Упр);
var ИтогСумПлан:N=SumOfArray(СумПлан,Упр);
var ИтогБКСумТек:N;
var ИтогПризн1СумТек:N;
var ИтогБКСумПлан:N;
var ИтогПризн1СумПлан:N;
----
ТипДок:I;
var ТипДок_:S=if(ТипДок=1:"сведений о БО"|ТипДок=2:"заявок на внесение изменений в БО"|ТипДок=3:"заявок на перерегистрацию БО"|true:"бюджетных обязательств");
ДН_Док:D;
ДК_Док:D;
ДН_Рег:D;
ДК_Рег:D;
РегНом:S;
ВидДокОсн:S;
var ВидДокОсн_:S=if(ВидДокОсн="1":"Государственный контракт"|ВидДокОсн="2":"Иной договор"|ВидДокОсн="3":"Исполнительный документ"|true:"");
НомДокОсн:S;
Контр :Record;
Контр_: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,"Только не отправленные","?")));
Проводить:I;
var Проводить_:S=if(Проводить=0,"Не определено",if(Проводить=1,"Только зарег-ные",if(Проводить=2,"Только не зарег-ные","?")));

var BufS1[]:S;
var BufСум1Тек[]:N;
var BufСум1План[]:N;
var BufS2[]:S;
var BufСум2Тек[]:N;
var BufСум2План[]:N;

var SelfCrd:S="РПО_СВЕД_БО";
var SelfBln:S="ДОКУМЕНТЫ.ЛБО.СВЕД_БО";
var SelfCfg:S="ТББ.ДОКУМЕНТЫ.ЛБО.КНИГА_БО.000.cfg";

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

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

Func ВзятьКБК (aКБК:S; aТипКБК:S):S;
var tmp:S;
var Flag:L;
 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;

Proc СуммаСуб (OA:I; nr:I; isИзм:L);
var n,n1,n2,z:i;
var Acc,Sgn:S;
var Тек_,План_:N;
 ClearVariable(BufS1);
 ClearVariable(BufСум1Тек);
 ClearVariable(BufСум1План);
 ClearVariable(BufS2);
 ClearVariable(BufСум2Тек);
 ClearVariable(BufСум2План);
 Тек_=0;
 План_=0;
 for n=1..nr do
  Acc=ВзятьКБК(GetFieldS(OA,n,"КБК"),GetFieldS(OA,n,"ТипКБК"));
  Sgn=GetFieldS(OA,n,"Призн");
  Sgn=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Sgn,Справ1+".*"," ");
  Тек_=GetFieldN(OA,n,"Сум1_1")+GetFieldN(OA,n,"Сум1_2")+GetFieldN(OA,n,"Сум1_3")+GetFieldN(OA,n,"Сум1_4")+GetFieldN(OA,n,"Сум1_5")+GetFieldN(OA,n,"Сум1_6")+GetFieldN(OA,n,"Сум1_7")+GetFieldN(OA,n,"Сум1_8")+GetFieldN(OA,n,"Сум1_9")+GetFieldN(OA,n,"Сум1_10")+GetFieldN(OA,n,"Сум1_11")+GetFieldN(OA,n,"Сум1_12");
  План_=GetFieldN(OA,n,"Сум2")+GetFieldN(OA,n,"Сум3")+GetFieldN(OA,n,"Сум4")+GetFieldN(OA,n,"Сум5")+GetFieldN(OA,n,"Сум6");
  if isИзм:
     Тек_=Тек_-(GetFieldN(OA,n,"Сум_Пре1_1")+GetFieldN(OA,n,"Сум_Пре1_2")+GetFieldN(OA,n,"Сум_Пре1_3")+GetFieldN(OA,n,"Сум_Пре1_4")+GetFieldN(OA,n,"Сум_Пре1_5")+GetFieldN(OA,n,"Сум_Пре1_6")+GetFieldN(OA,n,"Сум_Пре1_7")+GetFieldN(OA,n,"Сум_Пре1_8")+GetFieldN(OA,n,"Сум_Пре1_9")+GetFieldN(OA,n,"Сум_Пре1_10")+GetFieldN(OA,n,"Сум_Пре1_11")+GetFieldN(OA,n,"Сум_Пре1_12"));
     План_=План_-(GetFieldN(OA,n,"Сум_Пре2")+GetFieldN(OA,n,"Сум_Пре3")+GetFieldN(OA,n,"Сум_Пре4")+GetFieldN(OA,n,"Сум_Пре5")+GetFieldN(OA,n,"Сум_Пре6"));
  fi;
  --
  if not Acc="":
     z=SearchInArray(BufS1,Acc,True);
     if z=-1:
	z=InsertInArraySort(BufS1,Acc);
	InsertInArray(BufСум1Тек,z,Тек_);
	InsertInArray(BufСум1План,z,План_);
       else
	BufСум1Тек[z]=BufСум1Тек[z]+Тек_;
	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,Тек_);
	InsertInArray(BufСум2План,z,План_);
       else
	BufСум2Тек[z]=BufСум2Тек[z]+Тек_;
	BufСум2План[z]=BufСум2План[z]+План_;
     fi;
  fi;
 od;
 --
 n1=1;
 While BufS1[n1]<>"" do
  БК[Упр]=Раб.Бюджет2005.Объединить(БК[Упр],BufS1[n1]+Chr(13)+"тек.="+Format("%.2N",BufСум1Тек[n1])+" план="+Format("%.2N",BufСум1План[n1]),Chr(13));
  n1=n1+1;
 od;
 n2=1;
 While BufS2[n2]<>""  do
  ТекстПризн1[Упр]=Раб.Бюджет2005.Объединить(ТекстПризн1[Упр],BufS2[n2]+Chr(13)+"тек.="+Format("%.2N",BufСум2Тек[n2])+" план="+Format("%.2N",BufСум2План[n2]),Chr(13));
  n2=n2+1;
 od;
 СумТек[Упр]=SumOfArray(BufСум1Тек,n1-1);
 СумПлан[Упр]=SumOfArray(BufСум1План,n1-1);
 ИтогБКСумТек=ИтогБКСумТек+СумТек[Упр];
 ИтогБКСумПлан=ИтогБКСумПлан+СумПлан[Упр];
 ИтогПризн1СумТек=ИтогПризн1СумТек+SumOfArray(BufСум2Тек,n1-1);
 ИтогПризн1СумПлан=ИтогПризн1СумПлан+SumOfArray(BufСум2План,n1-1);
end;
--Процедуры и функции -------------
--
--
--Обработчики событий полей шаблона-----
Func ТипДок_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(BufS1);
 BufS1[1]="Сведений о БО";
 BufS1[2]="Заявка на внесение изменений в БО";
 BufS1[3]="Заявка на перерегистрацию БО";
 BufS1[4]="Усе подряд";
 n=Alternate("Выберите вид документа",BufS1,-1,ТипДок,12);
 if not n=0:
    ТипДок=if(n=4,0,n);
    Очистить;
 fi;
 Return False;
end;

Proc ТипДок_OnExit(FieldName: String; Iter: Integer);
 ТипДок=0;
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(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(BufS1);
 BufS1[1]="Государственный контракт";
 BufS1[2]="Иной договор";
 BufS1[3]="Исполнительный документ";
 n=Alternate("Выберите вид документа основания",BufS1,-1,Int(ВидДокОсн),12);
 if not n=0:
    ВидДокОсн=Str(n);
    Очистить;
 fi;
 Return False;
end;


Proc ВидДокОсн_OnExit(FieldName: String; Iter: Integer);
 ВидДокОсн="";
 Очистить;
end;

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

Proc Контр_onExit (Field:S; Iter:I);
 Контр=nil;
 Очистить;
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=AnaElection("*",True);
 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="*"; 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(FieldName: String; Iter: Integer): logical;
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,n2,Nr2:I;
var F,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,tmp1,tmp2,tmp:S;
var FL,FL1,FL2,FL3,FL4,FL5,FL6,FL7,FL8,FL9,FL10,FL11:I;
var FS,FS1,FS2:S;
var p,z,ТипДок_:I;
var RРекв,RБанк,Rec:Record;
var y1,y2,y2_:I;
 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(ДН_Док)+" and (ТипДок=0 or ТипДок=2)) or (Изм_ДатаДок>="+DateToString(ДН_Док)+" and ТипДок=1))";
   |ДН_Док= 1.1.100 and ДК_Док<>1.1.100: F1="((ДатаДок<="+DateToString(ДК_Док)+" and (ТипДок=0 or ТипДок=2)) or (Изм_ДатаДок<="+DateToString(ДН_Док)+" and ТипДок=1))";
   |ДН_Док<>1.1.100 and ДК_Док<>1.1.100: F1="((ДатаДок>="+DateToString(ДН_Док)+" and ДатаДок<="+DateToString(ДК_Док)+" and (ТипДок=0 or ТипДок=2)) or (Изм_ДатаДок>="+DateToString(ДН_Док)+" and Изм_ДатаДок<="+DateToString(ДК_Док)+" and ТипДок=1))";
 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 НомДокОсн=""		  : F3="";
   |ВидДокОсн="1" or ВидДокОсн="2": F3="Match(Осн_ДокНаим,'*"+НомДокОсн+"*')";
   |ВидДокОсн="3"		  : F3="Match(Исп_ДокНом,'*"+НомДокОсн+"*')";
   |true			  : F3="(Match(Осн_ДокНаим,'*"+НомДокОсн+"*') or Match(Исп_ДокНом,'*"+НомДокОсн+"*'))";
 fi;
 FL3=Length(F3);
 if not Контр=nil: F4="РеквП="+RecordToString(Контр);
   |True: F4="";
 fi;
 FL4=Length(F4);
 if Проводить=1: F5="Рег";
   |Проводить=2: F5="not Рег";
   |True:	 F5="";
 fi;
 FL5=Length(F5);
 if ВидДокОсн="1" or ВидДокОсн="2": F6="not Осн_ДокНаим=''";
   |ВидДокОсн="3": F6="not Исп_ДокНом=''";
   |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: F9="УчетФК";
   |УчитыватьФК=2: F9="not УчетФК";
   |True:	   F9="";
 fi;
 FL9=Length(F9);
 if РегНом="": F10="";
   |True:      F10="Match(РегНомер,'*"+РегНом+"*')";
 fi;
 FL10=Length(F10);
 if ТипДок=1: F11="(ТипДок=0 or overrideТипДок='0')";
   |ТипДок=2: F11="(ТипДок=1 or overrideТипДок='1')";
   |ТипДок=3: F11="(ТипДок=2 or overrideТипДок='2')";
   |True:     F11="";
 fi;
 FL11=Length(F11);
 --
 F=Раб.Бюджет2005.Объединить(F1,F2," and ");
 F=Раб.Бюджет2005.Объединить(F ,F3," and ");
 F=Раб.Бюджет2005.Объединить(F ,F4," and ");
 F=Раб.Бюджет2005.Объединить(F ,F5," and ");
 F=Раб.Бюджет2005.Объединить(F ,F6," and ");
 F=Раб.Бюджет2005.Объединить(F ,F7," and ");
 F=Раб.Бюджет2005.Объединить(F ,F8," and ");
 F=Раб.Бюджет2005.Объединить(F ,F9," and ");
 F=Раб.Бюджет2005.Объединить(F ,F10," and ");
 F=Раб.Бюджет2005.Объединить(F ,F11," and ");
 if FL1+FL+FL3+FL4+FL5+FL6+FL7+FL8+FL9+FL10+FL11>Length(F): Message("Слишком сложное условие отбора",mtError); Exit; fi;
 --
 if КБК<>"" and КОСГУ= "": FS1="Match(КБК,'"+Раб.Формат.ReplaceSubStr(КБК,".","")+"???')";
   |КБК= "" and КОСГУ<>"": FS1="Match(КБК,'*"+КОСГУ+"')";
   |КБК<>"" and КОСГУ<>"": FS1="Match(КБК,'"+Раб.Формат.ReplaceSubStr(КБК,".","")+КОСГУ+"')";
   |True: FS1="";
 fi;
 if Справ1<>"" and Призн1= "": FS2="Match(Призн,'*"+Справ1+".*')";
   |Справ1<>"" and Призн1<>"": FS2="Match(Призн,'*"+Призн1+"*')";
   |True: FS2="";
 fi;
 FS=Раб.Бюджет2005.Объединить(FS1,FS2," and ");
 y1=0; y2=0;
 OWA=OpenWorkArea(SelfCrd,"Признак;Изм",F);
 Try
  nr=Records(OWA);
  ShowProgress(Nr,"Расчет....");
  for n=1..nr do
   ProgressPos(n);
   Rec=GetRecordKey(OWA,n);
   if n=1: 
      OA=OpenArray(OWA,n,"Расшифр","КБК;Призн",FS);
   fi;
   nr2=Records(OA);
   if not nr2=0:
      InsertFrame(Упр,Упр+1);
      ТекГод[Упр]=GetFieldS(OWA,n,"ТекГод");
      ТипДок_=GetFieldI(OWA,n,"ТипДок");
      if GetFieldS(OWA,n,"overrideТипДок")="":
	 tmp=Str(ТипДок_);
	else
	 tmp=GetFieldS(OWA,n,"overrideТипДок");
      fi;
      НомДок[Упр]=if(tmp="0":"Сведения"|tmp="1" and GetFieldS(OWA,n,"Доп_Статус")="1":" Заяв. изм. (испол.)"|tmp="1" and GetFieldS(OWA,n,"Доп_Статус")="2":"Заяв. изм. (аннул.)"|tmp="1":"Заяв. изм."|tmp="2":"Заяв. перег.");
      if tmp="0" or tmp="2":
	 if GetFieldI(OWA,n,"ФорматНомер")=0:
	    tmp1=GetFieldS(OWA,n,"НомерДок");
	   else
	    tmp1=GetFieldS(OWA,n,"Префикс")+GetFieldS(OWA,n,"Сепаратор")+GetFieldS(OWA,n,"НомерДок");
	 fi;
	 НомДок[Упр]=НомДок[Упр]+" №"+tmp1+" от "+DateToString(GetFieldD(OWA,n,"ДатаДок"));
	else
	 if GetFieldI(OWA,n,"Изм_ФорматНомер")=0:
	    tmp1=GetFieldS(OWA,n,"Изм_НомерДок");
	   else
	    tmp1=GetFieldS(OWA,n,"Изм_Префикс")+GetFieldS(OWA,n,"Изм_Сепаратор")+GetFieldS(OWA,n,"Изм_НомерДок");
	 fi;
	 НомДок[Упр]=НомДок[Упр]+" №"+tmp1+" от "+DateToString(GetFieldD(OWA,n,"Изм_ДатаДок"));
      fi;
      ОснДок[Упр]=GetFieldS(OWA,n,"Осн_ДокВид");
      if ОснДок[Упр]="":
	 ОснДок[Упр]="Исполнительный док. "+GetFieldS(OWA,n,"Исп_ДокНом")+" от "+DateToString(GetFieldD(OWA,n,"Исп_ДокДат"));
	 СумДок[Упр]=GetFieldN(OWA,n,"Исп_ДокСум");
	else
	 if ОснДок[Упр]="1": 
	    ОснДок[Упр]="Государственный контракт";
	   else
	    ОснДок[Упр]=GetFieldS(OWA,n,"Осн_ДокНаим");
	    if ОснДок[Упр]="": ОснДок[Упр]="Иной договор"; fi;
	 fi;
	 ОснДок[Упр]=ОснДок[Упр]+" №"+GetFieldS(OWA,n,"Осн_ДокНом")+" от "+DateToString(GetFieldD(OWA,n,"Осн_ДокДат"));
	 СумДок[Упр]=GetFieldN(OWA,n,"Осн_ДокСум");
      fi;
      НаимКонтр[Упр]=GetFieldS(OWA,n,"РеквП.КорИмя");
      if GetFieldL(OWA,n,"Рег"):
	 УчетНом[Упр]=GetFieldS(OWA,n,"РегНомер")+" от "+DateToString(GetFieldD(OWA,n,"РегДата"));
      fi;
      СуммаСуб(OA,nr2,ТипДок_=1);
      UKey[Упр]=RecordToString(Rec);
      if y1=0:
	 y1=Year(GetFieldD(OWA,n,if(ТипДок=1,"Изм_ДатаДок","ДатаДок")));
	 y2=y1;
	else
	 y2_=Year(GetFieldD(OWA,n,if(ТипДок=1,"Изм_ДатаДок","ДатаДок")));
	 if not y1=y2_: y2=y2_; fi;
      fi;
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 Секция3.Row(2,RowVisible,y1=y2);
 Message("Расчет завершен");
end;

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

Proc cbПечатьПарам_OnChange(Sender: String);
 ВнешнийВид;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc Template_OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("",SelfCfg);
 ВнешнийВид;
end;
--Обработчики событий шаблона -----
--


Конец
