-- Шаблон создан мастером бланков
-- 17.12.2005 12:09:27
--
БланкСШаблоном "Параметры отчетов";

var SelfBln:S="РАБ.ПАРАМ_ОТЧ";
var НастрGUID:S;

Кмнт:S;

ОтчГод:I=[Year(B.S)];
var ОтчГод_:I=ОтчГод;

ДН:D=[B.S];
ДК:D=[B.F];

ОтчПер:I;
var ОтчПер_:S=if(ОтчПер>0 and ОтчПер<13,"01 "+Месяца(ОтчПер),DateToString(ДН)+" - "+DateToString(ДК))+if(ОтчПер=1," (Год)",if(ОтчПер=4," (I квартал)",if(ОтчПер=7," (II квартал)",if(ОтчПер=10," (III квартал)",""))));
var ПризнПериод:S="ПЕРИОД."+Str(ОтчГод); --Времянка, пока только год

УслВал:S;
Вал :S;
var Вал_:S=Вал;
Показатель:S;

ЕдИзм:I=[1];
var ЕдИзм_:S=if(ЕдИзм=1,Показатель,if(ЕдИзм=1000,"Тыс. "+Показатель,Str(ЕдИзм)+" "+Показатель));
ОКЕИ:S=["383"];
Точн:I=[2];

ОбщУслАн:S;
ОбщУслКД:S;
ОбщУслКР:S;
ОбщУслКИФД:S;

var РежимВД:I;
var Ф127:L=(РежимВД=1);
var Ф130:L=(РежимВД=0);
--Служебное
var ПоказПрогресс:L=[true];
--
ВД:S=["1"];
НаимВД:S=["Бюджетная деятельность"];
var ВД_:S=НаимВД;
ОбщУслВД_:S=["*.1.???.??.*"];
var ОбщУслВД:S="("+ОбщУслВД_+")";
БС:S=["1"];
НаимБС:S=["Бюджетная деятельность"];
var БС_:S=НаимБС;
ОбщУслБС_:S=["*.1.???.??.*"];
var ОбщУслБС:S="("+ОбщУслБС_+")";
ВБС:S=["2"];
НаимВБС:S=["Приносящая доход деятельность"];
var ВБС_:S=НаимВБС;
ОбщУслВБС_:S=["*.2.???.??.*"];
var ОбщУслВБС:S="("+ОбщУслВБС_+")";
СВР:S=["3"];
НаимСВР:S=["Деятельность со средствами, находящимися во временном распоряжении"];
var СВР_:S=НаимСВР;
ОбщУслСВР_:S=["*.3.???.??.*"];
var ОбщУслСВР:S="("+ОбщУслСВР_+")";
ДЦС:S=["5,6"];
НаимДЦС:S=["Деятельность с целевыми средствами"];
var ДЦС_:S=НаимДЦС;
ОбщУслДЦС_:S=["*.5.???.??.*|*.6.???.??.*"];
var ОбщУслДЦС:S="("+ОбщУслДЦС_+")";
ДПОУ:S=["2,4,7"];
НаимДПОУ:S=["Деятельность по оказанию услуг (работ)"];
var ДПОУ_:S=НаимДПОУ;
ОбщУслДПОУ_:S=["*.2.???.??.*|*.4.???.??.*|*.7.???.??.*"];
var ОбщУслДПОУ:S="("+ОбщУслДПОУ_+")";
ДПГЗ:S=["4"];
НаимДПГЗ:S=["Деятельность по государственному заданию"];
var ДПГЗ_:S=НаимДПГЗ;
ОбщУслДПГЗ_:S=["*.4.???.??.*"];
var ОбщУслДПГЗ:S="("+ОбщУслДПГЗ_+")";
ДПД:S=["2,3,7"];
НаимДПД:S=["Приносящая доход деятельность"];
var ДПД_:S=НаимДПД;
ОбщУслДПД_:S=["*.2.???.??.*|*.3.???.??.*|*.7.???.??.*"];
var ОбщУслДПД:S="("+ОбщУслДПД_+")";

var Buf[]:S;
var Buf2[]:S;

var StoreДН:D;
var StoreДК:D;
var StoreУслВал:S;
var StoreПоказатель:S;
var StoreЕдИзм:I;
var StoreТочн:I;
var StoreОбщУслАн:S;
var StoreОбщУслКД:S;
var StoreОбщУслКР:S;
var StoreОбщУслКИФД:S;
var StoreОбщУслВД:S;
var StoreОбщУслБС:S;
var StoreОбщУслВБС:S;

var ОтчИзм:L;

var tplField:S;

var ОтчGUID:S;

var ПризнЗакл:S="ЗГ";
--var ИсклЗакл:S="~("+ПризнЗакл+"&"+ПризнПериод+")";
var ИсклЗакл:S="~"+ПризнЗакл;

var HideEditor:L;
var ВД_Ном  []:s;
var ВД_АнЗаб[]:s;
var УпрВД_Ном:i=LengthOfArray(ВД_Ном);
var ОбщУслВД_ЗАБ     :s;
var ОбщУслБС_ВД_ЗАБ  :s;
var ОбщУслВБС_ВД_ЗАБ :s;
var ОбщУслСВР_ВД_ЗАБ :s;
var ОбщУслДЦС_ВД_ЗАБ :s;
var ОбщУслДПОУ_ВД_ЗАБ:s;
var ОбщУслДПГЗ_ВД_ЗАБ:s;
var ОбщУслДПД_ВД_ЗАБ:s;
--
--Процедуры и функции ------------- 
Func Get_iter_ВД_АнЗаб(Ном:s):i;
var j:i;
 j=SearchInArray(ВД_Ном,Ном);
 if j>0:^j;fi;
 ^0;
end;
Func Get_ВД_АнЗаб(Ном:s):s;
var j:i;
 j=Get_iter_ВД_АнЗаб(Ном);
 if j>0:^ВД_АнЗаб[j];fi;
 ^'';
end;

Func Get_ВД_АнЗаб_nul(Ном:s):s;-- значение по умолчанию для одного вида деятельности
var v:s;
 v='';
 if Ном='1':v='ВД.1!|ВД.ВКЛ!|ВД.БД!|~ВД.*';
  | Ном='2':v='ВД.2!|ВД.ПГР!|ВД.ПД!|ВД.ЦС!';
  | Ном='3':v='ВД.3!';
  | Ном='4':v='ВД.4!';
  | Ном='5':v='ВД.5!';
  | Ном='6':v='ВД.6!';
  | Ном='7':v='ВД.7!';
 fi;
 ^v;
end;

Func Get_ВД_АнЗаб_all(Ном:s):s;-- значение по умолчанию для группы ВД через запятую
var v,sl:s;
var j,z:i;
 v=Get_ВД_АнЗаб_nul(Ном);
 if v<>'':^v;fi;
 z=КоличествоСлов(Ном,',');
 for j=1..z do
  sl=trim(ВыделитьСлово(j,Ном,','));
  if sl<>'':sl=Get_ВД_АнЗаб_nul(sl);fi;
--  if sl<>'':sl=sl+'!';fi;
  v=Раб.Бюджет2005.Объединить(v,sl,'|');
 od;
 ^v;
end;

Func Get_ВД_АнЗаб_ВД(Ном:s):s;-- возврат  ОбщУслВД_ЗАБ с учетом значения по умолчанию
var j:i;
 if Get_iter_ВД_АнЗаб(Ном)>0:
    ^Get_ВД_АнЗаб(Ном); -- сохраненное значение ВД
 fi;
 ^Get_ВД_АнЗаб_all(Ном);
 ^'';
end;

Proc Put_ВД_АнЗаб(Ном:s;v:s);
var j:i;
 j=Get_iter_ВД_АнЗаб(Ном);
 ОтчИзм=True;
 if j>0:
    if ВД_АнЗаб[j]<>v:ОтчИзм=True;fi;
    ВД_АнЗаб[j]=v;
  | true:
    j=LengthOfArray(ВД_Ном)+1;
    ОтчИзм=True;
    ВД_Ном[j]=Ном;
    ВД_АнЗаб[j]=v;
 fi;
end;

Func ПолучитьОтчПер(vДН:D; vДК:D):I;
var YYYY1,YYYY2,MM1,MM2,DD1,DD2:I;
var Res:I;
 YYYY1=Year(ДН); YYYY2=Year(ДК);
 MM1=Mon(ДН);    MM2=Mon(ДК);
 DD1=Day(ДН);    DD2=Day(ДК);
 if DD1=1 and DD2=1 and MM1=1 and MM2=1  and YYYY2-YYYY1=1: Res=1; --Год
   |DD1=1 and DD2=1 and MM1=1 and MM2=2  and YYYY2-YYYY1=0: Res=2; --Февраль
   |DD1=1 and DD2=1 and MM1=1 and MM2=3  and YYYY2-YYYY1=0: Res=3; --Март
   |DD1=1 and DD2=1 and MM1=1 and MM2=4  and YYYY2-YYYY1=0: Res=4; --1 квартал
   |DD1=1 and DD2=1 and MM1=1 and MM2=5  and YYYY2-YYYY1=0: Res=5; --Май
   |DD1=1 and DD2=1 and MM1=1 and MM2=6  and YYYY2-YYYY1=0: Res=6; --Июнь
   |DD1=1 and DD2=1 and MM1=1 and MM2=7  and YYYY2-YYYY1=0: Res=7; --2 квартал
   |DD1=1 and DD2=1 and MM1=1 and MM2=8  and YYYY2-YYYY1=0: Res=8; --Август
   |DD1=1 and DD2=1 and MM1=1 and MM2=9  and YYYY2-YYYY1=0: Res=9; --Сентябрь
   |DD1=1 and DD2=1 and MM1=1 and MM2=10 and YYYY2-YYYY1=0: Res=10; --3 квартал
   |DD1=1 and DD2=1 and MM1=1 and MM2=11 and YYYY2-YYYY1=0: Res=11; --Ноябрь
   |DD1=1 and DD2=1 and MM1=1 and MM2=12 and YYYY2-YYYY1=0: Res=12; --Декабрь
   |True: Res=0;
 fi;
 ^Res;
end;

Func ПолучитьДН(vОтчПер:I; vОтчГод:I):D;
 ^Dat(1,1,vОтчГод);
end;

Func ПолучитьДК(vОтчПер:I; vОтчГод:I):D;
 if vОтчПер=1: ^Dat(1,vОтчПер,vОтчГод+1);
   |vОтчПер>1 and vОтчПер<13: ^Dat(1,vОтчПер,vОтчГод);
 fi;
 ^1.1.100;
end;

Func Оператор:S;
var n:i;
 ClearVariable(Раб.Парам_Отч.Buf);
 Buf[1]="И";
 Buf[2]="ИЛИ";
 Buf[3]="И ИСКЛЮЧИТЬ";
 Buf[4]="ЗАМЕНИТЬ";
 n=Alternate("Выбор оператора",Buf,20,1,12);
 HideEditor=True;
 if n=1: ^"&";
   |n=2: ^"|";
   |n=3: ^"&~";
   |n=4: ^"_";
 fi;
 HideEditor=False;
 ^"";
end;

Func Объединить(Value1:s; Value2:s):S;
var z:s;
 if not Value1="" and not Value2="": z=Оператор; else z=""; HideEditor=True; fi;
 if z="_": ^Value2; fi;
 ^Раб.Бюджет2005.Объединить(Value1,Value2,z);
end;

Func Взять(vField:S; vРежимВД:I):L;
 РАБ.ПАРАМ_ОТЧ.tplField=vField;
 РАБ.ПАРАМ_ОТЧ.РежимВД=vРежимВД;
 OpenBlank("РАБ.ПАРАМ_ОТЧ",True);
 ^РАБ.ПАРАМ_ОТЧ.ОтчИзм;
end;

Proc ЗадатьВД(aВД:S);
 ВД=aВД;
 if aВД=ДЦС: 
    НаимВД=НаимДЦС;
    ОбщУслВД_=ОбщУслДЦС_;
    ОбщУслВД_ЗАБ=ОбщУслДЦС_ВД_ЗАБ;
   |aВД=ДПОУ:
    НаимВД=НаимДПОУ;
    ОбщУслВД_=ОбщУслДПОУ_;
    ОбщУслВД_ЗАБ=ОбщУслДПОУ_ВД_ЗАБ;
   |aВД=ДПГЗ:
    НаимВД=НаимДПГЗ;
    ОбщУслВД_=ОбщУслДПГЗ_;
    ОбщУслВД_ЗАБ=ОбщУслДПГЗ_ВД_ЗАБ;
   |aВД=ДПД:
    НаимВД=НаимДПД;
    ОбщУслВД_=ОбщУслДПД_;
    ОбщУслВД_ЗАБ=ОбщУслДПД_ВД_ЗАБ;
   |Length(aВД)=1: 
    НаимВД=РАБ.БЮДЖЕТ.НаимКБК("СЧ",aВД);
    ОбщУслВД_="*."+aВД+".???.??.*";
    ОбщУслВД_ЗАБ=Get_ВД_АнЗаб_ВД(aВД);
 fi;
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Proc Настр(aСохр:L);
var j,z:i;
var st:s;
var Flag:L;
var есть_данные:L;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 есть_данные=false;
 if Раб.Настр.Начать  (SelfBln,0,0,"",НастрGUID):
    z=0;
    for j=1..УпрВД_Ном do
      if trim(ВД_Ном[j])<>'':
         z=z+1;
         st='['+str(z)+']';
         Раб.Настр.Добавить("ВД_Ном"+st,"S");
         Раб.Настр.Добавить("ВД_АнЗаб"+st,"S");
         есть_данные=true;
      fi;
    od;
    if aСохр: 
       if есть_данные:
          Раб.Настр.Сохранить;
       fi;
      else 
--       ClearVariable(ВД_Ном);
--       ClearVariable(ВД_АнЗаб);
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
--          Flag=ExecuteFuncL("НастрПоУмолч_onEnter","Натр",1);
       fi;
    fi;
 fi;
end;


Func ОтчГод_OnEnter(FieldName: String; Iter: Integer): logical;
var n:integer;
 ClearVariable(Buf);
 for n=1..5 do Buf[n]=Str(Year(Today)+n-4); od;
 n=Alternate("Выбор отчетного года",Buf,30,4,12);
 if n=0: ^False; fi;
 ОтчГод=Int(Buf[n]);
 if ОтчПер<1: ОтчПер=1; fi;
 ОтчПер=ПолучитьОтчПер(ДН,ДК);
 if ОтчПер=0: ОтчПер=1; fi;
 ДН=ПолучитьДН(ОтчПер,ОтчГод);
 ДК=ПолучитьДК(ОтчПер,ОтчГод);
 Return False;
end;

Func ОтчПер_OnEnter(FieldName: String; Iter: Integer): logical;
var n:I;
 ClearVariable(Buf);
 for n=2..12 do
  Buf[n-1]="01 "+Месяца(n);
  if n=4 : Buf[n-1]=Buf[n-1]+" (I квартал)";
    |n=7 : Buf[n-1]=Buf[n-1]+" (II квартал)";
    |n=10: Buf[n-1]=Buf[n-1]+" (III квартал)";
  fi;
 od;
 InsertInArray(Buf,12,"01 "+Месяца(1)+" (Год)");
 n=Alternate("Выбор отчетного периода",Buf,30,1,12);
 if n=0: ^False; fi;
 ОтчПер=n+1;
 if ОтчПер=13: ОтчПер=1; fi;
 ДН=ПолучитьДН(ОтчПер,ОтчГод);
 ДК=ПолучитьДК(ОтчПер,ОтчГод);
 Return False;
end;

Func Д_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field:S;
var tmp:D;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 if Field="ДН": tmp=ДН;
   |Field="ДК": tmp=ДК;
 fi;
 tmp=Calendar(tmp);
 if tmp=1.1.100: ^Cur; fi;
 if Field="ДН": ДН=tmp;
   |Field="ДК": ДК=tmp;
 fi;
 ОтчПер=ПолучитьОтчПер(ДН,ДК);
 Return Cur;
end;

Proc Д_OnExit(FieldName: String; Iter: Integer);
 ОтчПер=ПолучитьОтчПер(ДН,ДК);
end;

Func Вал_OnEnter(FieldName: String; Iter: Integer): logical;
var i:i;
var Curr,BaseCurr:S;
 BaseCurr=BaseCurrency;
 ClearVariable(Buf);
 i=1;
 Buf[i]="Пересчет в базовую валюту ("+BaseCurr+")";
 for Currencies Curr="*" do
  i=i+1;
  Buf[i]=Curr+"  ("+Name_C(Curr)+")";
  if not Curr=BaseCurr: i=i+1; Buf[i]=Curr+"  (пересчет в "+BaseCurr+")"; fi;
 od;
 i=Alternate("Выбор валюты",Buf,30,1,12);
 if i=0: ^False; fi;
 Вал=Buf[i];
 Показатель=BaseCurr;
 if i=1: УслВал=""; ^False; fi;
 УслВал=SubStr(Buf[i],1,Pos("  ",Buf[i])-1);
 if Pos("(пересчет в",Buf[i])=0: Показатель=УслВал; fi;
 Return False;
end;

Func ЕдИзм_OnEnter(FieldName: String; Iter: Integer): logical;
var n:I;
 ClearVariable(Buf);
 Buf[1]=Показатель;
 Buf[2]="Тыс. "+Показатель;
 n=Alternate("Выбор единицы измерения",Buf,-1,1,12);
 if n=0: ^False; fi;
 if n=1: ЕдИзм=1;
   |n=2: ЕдИзм=1000;
 fi;
 Return False;
end;

Func УслАн_OnVerify (FieldName: String; Iter: Integer; Value:String): logical;
var z:n;
 Try
  z=Turn("{"+Value+"}",1.1.100,1.1.100);
 Except
  Raise;
  ^False;
 end;
 ^True;
end;

Func УслАн_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:s;
 tmp=AnaElection("*");
 if tmp="": Template.HideEditor(False); ^Cur; fi;
 ОбщУслАн=Объединить(ОбщУслАн,tmp);
 if HideEditor: Template.HideEditor(False); fi;
 ^ОбщУслАн;
end;

Func ОбщУслКБК_onEnter (FieldName: String; Iter: Integer): logical;
 if FieldName="ОбщУслКД": ОбщУслКД=Раб.КБК.ВыбратьМаскуКБК("КД",Раб.Бюджет2005.МаскаСчетаКД,ОбщУслКД,True);
   |FieldName="ОбщУслКР": ОбщУслКР=Раб.КБК.ВыбратьМаскуКБК("ФКР",Раб.Бюджет2005.МаскаСчетаФКР,ОбщУслКР,True);
   |FieldName="ОбщУслКИФД": ОбщУслКИФД=Раб.КБК.ВыбратьМаскуКБК("КИФД",Раб.Бюджет2005.МаскаСчетаКИФД,ОбщУслКИФД,True);
 fi;
 Return False;
end;

Proc ВД_OnExit(FieldName: String; Iter: Integer);
 PutVariableS(FieldName+"_",Раб.Бюджет.НаимКБК("СЧ",GetVariableS(FieldName)));
 if FieldName='ВД':
   ЗадатьВД(ВД);
 fi;
end;

Func ОбщУслВД_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var Res:N;
 Res=Saldo(Value,1.1.100);
 Return True;
end;

Func ВД_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var n,nn:i;
var tmp,Field,v1,v2,z:S;
 ClearVariable(Buf);
 nn=GetGroupAccounts(Раб.Бюджет2005.МаскаСчетаФКР,Buf2,5);
 for n=1..nn do AddInArray(Buf,True,False,Buf2[n]); od;
 nn=GetGroupAccounts(Раб.Бюджет2005.МаскаСчетаКИФД,Buf2,8);
 for n=1..nn do AddInArray(Buf,True,False,Buf2[n]); od;
 nn=GetGroupAccounts(Раб.Бюджет2005.МаскаСчетаКД ,Buf2,7);
 for n=1..nn do AddInArray(Buf,True,False,Buf2[n]); od;
 Раб.Бюджет.Начать_НаимКБК2("СЧ");
 Try
  nn=LengthOfArray(Buf);
  for n=1..nn do
   Buf[n]=Buf[n]+" --"+Раб.Бюджет.Взять_НаимКБК("СЧ",Buf[n]);
  od;
 Finally
  Раб.Бюджет.Закончить_НаимКБК;
 end;
 InsertInArray(Buf,1,"? --Все виды деятельности");
 AddInArray(Buf,False,False,ДЦС+" --"+НаимДЦС);
 AddInArray(Buf,False,False,ДПОУ+" --"+НаимДПОУ);
 AddInArray(Buf,False,False,ДПГЗ+" --"+НаимДПГЗ);
 AddInArray(Buf,False,False,ДПД+" --"+НаимДПД);
 n=Alternate("Вид деятельности",Buf,-1,1,12);
 if n=0: Template.HideEditor(False); ^Cur; fi;
 v1=SubStr(Buf[n],1,Pos(" --",Buf[n])-1);
 ЗадатьВД(v1);
 Template.HideEditor(False);
end;

Func ОбщУслСч_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field,tmp:S;

 Field=AsString(Template.Field);
 tmp=Раб.КБК.Список("*","","ВД+?");
 tmp=Объединить(GetVariableS(Field),"*."+tmp+".???.??.*");
 if HideEditor: Template.HideEditor(False); fi;
 PutVariableS(Field,tmp);
 ^tmp;
end;
--Обработчики событий полей шаблона-----
--
--
--Обработчики событий объектов шаблона-----
Proc btnСохранить_OnClick(Sender: String);
var fn:S;
 Fn="Параметры отчетов"+if(Кмнт="",""," ("+Кмнт+")")+".dbt";
 if ChooseFile(Fn,"Выбор файла настроек","Файлы настроек(*.dbt)|*.dbt")=cmCancel: Message("Операция сохранения настроек отменена"); Exit; fi;
 if ExistFile(Fn): if EnqOkCancel("Файл '"+Fn+"' существует. Перезаписать ?")=cmCancel: Message("Операция сохранения настроек отменена"); Exit; fi; fi;
 if WriteVarInDBT(Fn,True): Message("Параметры отчетов успешно сохранены",mtInformation); else Message("Ошибка при сохранении параметров отчетов",mtError); fi;
end;

Proc btnПрочитать_OnClick(Sender: String);
var fn:S;
 if EnqOkCancel("Текущая настройка будет утеряна, продолжить операцию чтения настроек?")=cmCancel: Message("Операция чтения настроек отменена"); Exit; fi;
 if ChooseFile(Fn,"Выбор файла настроек","Файлы настроек(*.dbt)|*.dbt")=cmCancel: Message("Операция чтения настроек отменена"); Exit; fi;
 if ReadVarFromDbt(Fn): Message("Найстроки успешно прочитаны"); else Message("Ошибка при чтение настроек !",mtError); fi;
end;

Proc btnСтандарт_OnClick(Sender: String);
 if EnqOkCancel("Восстановить стандартные параметры отчетов?")=cmCancel: Exit; fi;
 ОтчГод=if(Mon(ToDay)=1,Year(ToDay)-1,Year(ToDay));
 ОтчПер=1;
 ДН=ПолучитьДН(ОтчПер,ОтчГод);
 ДК=ПолучитьДК(ОтчПер,ОтчГод);
 Показатель=BaseCurrency; 
 УслВал=""; 
 Вал="Пересчет в базовую валюту ("+Показатель+")";
 ЕдИзм=1;
 ОКЕИ="383";
 Точн=2;
 ОбщУслАн="~ОПЕР";
 ОбщУслКД="";
 ОбщУслКР="";
 ОбщУслКИФД="";
 ВД="1";
 НаимВД="Бюджетная деятельность";
 ОбщУслВД_="*.1.???.??.*";
 БС="1";
 НаимБС="Бюджетная деятельность";
 ОбщУслБС_="*.1.???.??.*";
 ВБС="2";
 НаимВБС="Приносящая доход деятельность";
 ОбщУслВБС_="*.2.???.??.*";
 СВР="3";
 ОбщУслСВР_="*.3.???.??.*";
 НаимСВР="Деятельность со средствами, находящимися во временном распоряжении";
 ДЦС="5,6";
 ОбщУслДЦС_="*.5.???.??.*|*.6.???.??.*";
 НаимДЦС="Деятельность с целевыми средствами";
 ДПОУ="2,4,7";
 ОбщУслДПОУ_="*.2.???.??.*|*.4.???.??.*|*.7.???.??.*";
 НаимДПОУ="Деятельность по оказанию услуг (работ)";
 ДПГЗ="4";
 ОбщУслДПГЗ_="*.4.???.??.*";
 НаимДПГЗ="Деятельность по государственному заданию";
 ДПД="2,3,7";
 ОбщУслДПД_="*.2.???.??.*|*.3.???.??.*|*.7.???.??.*";
 НаимДПД="Приносящая доход деятельность";
 ClearVariable(ВД_Ном);
 ClearVariable(ВД_АнЗаб);
 НастрGUID='';
 ОбщУслВД_ЗАБ     =Get_ВД_АнЗаб   (ВД  );
 ОбщУслБС_ВД_ЗАБ  =Get_ВД_АнЗаб_ВД(БС  );
 ОбщУслВБС_ВД_ЗАБ =Get_ВД_АнЗаб_ВД(ВБС );
 ОбщУслСВР_ВД_ЗАБ =Get_ВД_АнЗаб_ВД(СВР );
 ОбщУслДЦС_ВД_ЗАБ =Get_ВД_АнЗаб_ВД(ДЦС );
 ОбщУслДПОУ_ВД_ЗАБ=Get_ВД_АнЗаб_ВД(ДПОУ);
 ОбщУслДПГЗ_ВД_ЗАБ=Get_ВД_АнЗаб_ВД(ДПГЗ);
 ОбщУслДПД_ВД_ЗАБ=Get_ВД_АнЗаб_ВД(ДПД);
 Message("Восстановлены стандартные параметры отчетов");
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 StoreДН=ДН;
 StoreДК=ДК;
 StoreУслВал=УслВал;
 StoreПоказатель=Показатель;
 StoreЕдИзм=ЕдИзм;
 StoreТочн=Точн;
 StoreОбщУслАн=ОбщУслАн;
 StoreОбщУслКД=ОбщУслКД;
 StoreОбщУслКР=ОбщУслКР;
 StoreОбщУслКИФД=ОбщУслКИФД;
 StoreОбщУслВД=ОбщУслВД;
 StoreОбщУслБС=ОбщУслБС;
 StoreОбщУслВБС=ОбщУслВБС;
 ОтчИзм=False;
 if Показатель="": Показатель=BaseCurrency; УслВал=""; Вал="Пересчет в базовую валюту ("+Показатель+")"; fi;
 if ЕдИзм=0: ЕдИзм=1; fi;
 if not tplField="": Template.Field=tplField; fi;
 Настр(False); -- загружаем сохраненные настройки при открытии
 ОбщУслВД_ЗАБ     =Get_ВД_АнЗаб_ВД(ВД  );
 ОбщУслБС_ВД_ЗАБ  =Get_ВД_АнЗаб_ВД(БС  );
 ОбщУслВБС_ВД_ЗАБ =Get_ВД_АнЗаб_ВД(ВБС );
 ОбщУслСВР_ВД_ЗАБ =Get_ВД_АнЗаб_ВД(СВР );
 ОбщУслДЦС_ВД_ЗАБ =Get_ВД_АнЗаб_ВД(ДЦС );
 ОбщУслДПОУ_ВД_ЗАБ=Get_ВД_АнЗаб_ВД(ДПОУ);
 ОбщУслДПГЗ_ВД_ЗАБ=Get_ВД_АнЗаб_ВД(ДПГЗ);
 ОбщУслДПД_ВД_ЗАБ=Get_ВД_АнЗаб_ВД(ДПД);
end;

Proc OnClose(Destroy: Logical);
 if not StoreДН=ДН: ОтчИзм=True; fi;
 if not StoreДК=ДК: ОтчИзм=True; fi;
 if not StoreУслВал=УслВал: ОтчИзм=True; fi;
 if not StoreПоказатель=Показатель: ОтчИзм=True; fi;
 if not StoreЕдИзм=ЕдИзм: ОтчИзм=True; fi;
 if not StoreТочн=Точн: ОтчИзм=True; fi;
 if not StoreОбщУслАн=ОбщУслАн: ОтчИзм=True; fi;
 if not StoreОбщУслКД=ОбщУслКД: ОтчИзм=True; fi;
 if not StoreОбщУслКР=ОбщУслКР: ОтчИзм=True; fi;
 if not StoreОбщУслКИФД=ОбщУслКИФД: ОтчИзм=True; fi;
 if not StoreОбщУслВД=ОбщУслВД: ОтчИзм=True; fi;
 if not StoreОбщУслБС=ОбщУслБС: ОтчИзм=True; fi;
 if not StoreОбщУслВБС=ОбщУслВБС: ОтчИзм=True; fi;
 if ОтчИзм: ОтчGUID=GetGUID; 
    НастрGUID="";
    Настр(true);
 fi;
 --
 if ЕдИзм=0: ЕдИзм=1; fi;
 if Показатель="": Показатель=BaseCurrency; УслВал=""; Вал="Пересчет в базовую валюту ("+Показатель+")"; fi;
end;
--Обработчики событий шаблона -----
--

Func ОбщУслВД_ЗАБOnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var Res:N;
var FVD:s;
 if FieldName='ОбщУслВД_ЗАБ'     :FVD=ВД;
  | FieldName='ОбщУслБС_ВД_ЗАБ'  :FVD=БС;
  | FieldName='ОбщУслВБС_ВД_ЗАБ' :FVD=ВБС;
  | FieldName='ОбщУслСВР_ВД_ЗАБ' :FVD=СВР;
  | FieldName='ОбщУслДЦС_ВД_ЗАБ' :FVD=ДЦС;
  | FieldName='ОбщУслДПОУ_ВД_ЗАБ':FVD=ДПОУ;
  | FieldName='ОбщУслДПГЗ_ВД_ЗАБ':FVD=ДПГЗ;
  | FieldName='ОбщУслДПД_ВД_ЗАБ':FVD=ДПД;
 fi;
 Put_ВД_АнЗаб(FVD,Value);
 Return True;
end;


Func ОбщУслВД_ЗАБOnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var n,nn:i;
var tmp,Field,v1,v2,z:S;
var FVD,FieldName:s;
 FieldName=AsString(Шаблон.поле);
 if FieldName='ОбщУслВД_ЗАБ'     :FVD=ВД;
  | FieldName='ОбщУслБС_ВД_ЗАБ'  :FVD=БС;
  | FieldName='ОбщУслВБС_ВД_ЗАБ' :FVD=ВБС;
  | FieldName='ОбщУслСВР_ВД_ЗАБ' :FVD=СВР;
  | FieldName='ОбщУслДЦС_ВД_ЗАБ' :FVD=ДЦС;
  | FieldName='ОбщУслДПОУ_ВД_ЗАБ':FVD=ДПОУ;
  | FieldName='ОбщУслДПГЗ_ВД_ЗАБ':FVD=ДПГЗ;
  | FieldName='ОбщУслДПД_ВД_ЗАБ':FVD=ДПД;
  | true:FieldName='';FVD='';
 fi;
 Template.HideEditor(False);
 if ВопрДаОтказ("Восстановить значение по умолчанию?") = кмдВерно:
    tmp=Get_ВД_АнЗаб_all(FVD);
    Put_ВД_АнЗаб(FVD,tmp);
    PutVariableS(FieldName,tmp);
 fi;
 Return tmp;
end;


Proc ОбщУслВД_ЗАБ_ПриВыходе(FieldName: s; iter: i);
var FVD,tmp:s;
 if FieldName='ОбщУслВД_ЗАБ'     :FVD=ВД;
  | FieldName='ОбщУслБС_ВД_ЗАБ'  :FVD=БС;
  | FieldName='ОбщУслВБС_ВД_ЗАБ' :FVD=ВБС;
  | FieldName='ОбщУслСВР_ВД_ЗАБ' :FVD=СВР;
  | FieldName='ОбщУслДЦС_ВД_ЗАБ' :FVD=ДЦС;
  | FieldName='ОбщУслДПОУ_ВД_ЗАБ':FVD=ДПОУ;
  | FieldName='ОбщУслДПГЗ_ВД_ЗАБ':FVD=ДПГЗ;
  | FieldName='ОбщУслДПД_ВД_ЗАБ':FVD=ДПД;
  | true:FieldName='';FVD='';
 fi;
 tmp=GetVariableS(FieldName);
 Put_ВД_АнЗаб(FVD,tmp);
end;


Конец
