БланкСШаблоном "ф.0503138 Отчет о принятых расходных обязательствах по приносящей доход деятельности";

sУсл_1    : Section;
sУсл_1_4  : Section;
sУсл_1_4_ : Section;

sУсл_1_5  : Section;
sУсл_1_5_ : Section;

sУсл_1_7  : Section;
sУсл_1_7_ : Section;

sУсл_1_7а : Section;
sУсл_1_7а_: Section;

sУсл_1_9  : Section;
sУсл_1_9_ : Section;

sУсл_1_9а : Section;
sУсл_1_9а_: Section;

Func ИстКБКТекст(v:i):S;
 ^if(v=1:"БК (1-17 р.сч.)"+Chr(13)+"КОСГУ (22-23 р.сч.)"|v=2:"БК (1-17 р.сч.)"+Chr(13)+"КОСГУ (аналит. учет)"|v=3:"БК (аналит. учет)"+Chr(13)+"КОСГУ (аналит. учет)"|True:"БК (1-17 р.сч.)"+Chr(13)+"КОСГУ (23-25 р.сч.)");
end;

Func ФункцияТекст(v:i):s;
 ^if(v=1:"Остаток на начало"|v=2:"Остаток на конец"|v=3:"Деб. остаток на начало"|v=4:"Кре. остаток на начало"|v=5:"Деб. остаток на конец"|v=6:"Кре. остаток на конец"|True:"Оборот");
end;

var A:S="+";
var D:S="-";

var nУсл_1_4 :I; var Функция_1_4 []:I; var Функция_1_4_ []:S=ФункцияТекст(Функция_1_4 [$]); var ИстКБК_1_4 []:I; var Знак_1_4 []:I=[1]; var УслСч_1_4 []:S; var УслСчКор_1_4 []:S; var УслАн_1_4 []:S; var УслСтатус_1_4 []:S; var ИстКБК_1_4_ []:S=ИстКБКТекст(ИстКБК_1_4 [$]);  var УслНаим_1_4 []:s=if($=1,"Гр.4 Утверждено сметных назначений","");
var nУсл_1_5 :I; var Функция_1_5 []:I; var Функция_1_5_ []:S=ФункцияТекст(Функция_1_5 [$]); var ИстКБК_1_5 []:I; var Знак_1_5 []:I=[1]; var УслСч_1_5 []:S; var УслСчКор_1_5 []:S; var УслАн_1_5 []:S; var УслСтатус_1_5 []:S; var ИстКБК_1_5_ []:S=ИстКБКТекст(ИстКБК_1_5 [$]);  var УслНаим_1_5 []:s=if($=1,"Гр.5 Принято расходных обязательств","");
var nУсл_1_7 :I; var Функция_1_7 []:I; var Функция_1_7_ []:S=ФункцияТекст(Функция_1_7 [$]); var ИстКБК_1_7 []:I; var Знак_1_7 []:I=[1]; var УслСч_1_7 []:S; var УслСчКор_1_7 []:S; var УслАн_1_7 []:S; var УслСтатус_1_7 []:S; var ИстКБК_1_7_ []:S=ИстКБКТекст(ИстКБК_1_7 [$]);  var УслНаим_1_7 []:s=if($=1,"Гр.7 Принято денежных обязательств","");
var nУсл_1_7а:I; var Функция_1_7а[]:I; var Функция_1_7а_[]:S=ФункцияТекст(Функция_1_7а[$]); var ИстКБК_1_7а[]:I; var Знак_1_7а[]:I=[1]; var УслСч_1_7а[]:S; var УслСчКор_1_7а[]:S; var УслАн_1_7а[]:S; var УслСтатус_1_7а[]:S; var ИстКБК_1_7а_[]:S=ИстКБКТекст(ИстКБК_1_7а[$]);  var УслНаим_1_7а[]:s=if($=1,"Гр.7а Принято денежных обязательств (справочно, по балансовым счетам)","");
var nУсл_1_9 :I; var Функция_1_9 []:I; var Функция_1_9_ []:S=ФункцияТекст(Функция_1_9 [$]); var ИстКБК_1_9 []:I; var Знак_1_9 []:I=[1]; var УслСч_1_9 []:S; var УслСчКор_1_9 []:S; var УслАн_1_9 []:S; var УслСтатус_1_9 []:S; var ИстКБК_1_9_ []:S=ИстКБКТекст(ИстКБК_1_9 [$]);  var УслНаим_1_9 []:s=if($=1,"Гр.9 Исполнено денежных обязательств","");
var nУсл_1_9а:I; var Функция_1_9а[]:I; var Функция_1_9а_[]:S=ФункцияТекст(Функция_1_9а[$]); var ИстКБК_1_9а[]:I; var Знак_1_9а[]:I=[1]; var УслСч_1_9а[]:S; var УслСчКор_1_9а[]:S; var УслАн_1_9а[]:S; var УслСтатус_1_9а[]:S; var ИстКБК_1_9а_[]:S=ИстКБКТекст(ИстКБК_1_9а[$]);  var УслНаим_1_9а[]:s=if($=1,"Гр.9а Справочно, остаток кассы","");

var НастрGUID:S;
var НастрВерсия:I=110928;
var ТекущаяВерсия:I;

var НеУчитЗаклПр:L=True;

var ДН:D=РАБ.ПАРАМ_ОТЧ.ДН;
var ДК:D=РАБ.ПАРАМ_ОТЧ.ДК;

Учреждение:S;
ОКПО:S;
ППП:S;

НаимБюдж:S;
ОКТМО:S;

var УслВал:S=РАБ.ПАРАМ_ОТЧ.УслВал;
var Вал :S=РАБ.ПАРАМ_ОТЧ.Вал;
var Вал_:S=Вал;
var Показатель:S=РАБ.ПАРАМ_ОТЧ.Показатель;

var ЕдИзм:I=РАБ.ПАРАМ_ОТЧ.ЕдИзм;
var ЕдИзм_:S=РАБ.ПАРАМ_ОТЧ.ЕдИзм_;
var ОКЕИ:S=РАБ.ПАРАМ_ОТЧ.ОКЕИ;

var Точн:I=РАБ.ПАРАМ_ОТЧ.Точн;

var ОбщУслАн:S=РАБ.ПАРАМ_ОТЧ.ОбщУслАн;
var ОбщУслКР:S=РАБ.ПАРАМ_ОТЧ.ОбщУслКР;
var ОбщУслВБС:S=РАБ.ПАРАМ_ОТЧ.ОбщУслВБС;

ФИОРук:S;
ФИОБух:S;
ФИОРукФЭО:S;

var ОтчGUID:S;

var ЗаглУтв :String="Утверждено сметных назначений на "+Str(Year(ДН))+" год";

М1:I;
SГ1С210М1[] :S;
SГ3С210М1[] :S;
RГ4С210М1[] :N;
RГ5С210М1[] :N;
var RГ6С210М1[]:N=if(RГ4С210М1[$]-RГ5С210М1[$]<0,-(RГ4С210М1[$]-RГ5С210М1[$]),0);
RГ7С210М1[] :N;
RГ7С210М1_[]:N;
RГ7аС210М1[]:N;
var RГ7бС210М1[]:N=RГ7С210М1[$]-RГ7аС210М1[$];
var RГ8С210М1[]:N=if(RГ4С210М1[$]-RГ7С210М1[$]<0,-(RГ4С210М1[$]-RГ7С210М1[$]),0);
RГ9С210М1[] :N;
RГ9аС210М1[]:N;
var RГ10С210М1[]:N=RГ5С210М1[$]-RГ9С210М1[$];
var RГ11С210М1[]:N=RГ7С210М1[$]-RГ9С210М1[$];
var N1[]:I=if(М1=1 and SГ3С210М1[1]="",0,200+$);

var RГ4С200 :N=SumOfArray(RГ4С210М1,М1);
var RГ5С200 :N=SumOfArray(RГ5С210М1,М1);
var RГ6С200 :N=SumOfArray(RГ6С210М1,М1);
var RГ7С200 :N=SumOfArray(RГ7С210М1,М1);
var RГ7аС200:N=SumOfArray(RГ7аС210М1,М1);
var RГ7бС200:N=RГ7С200-RГ7аС200;
var RГ8С200 :N=SumOfArray(RГ8С210М1,М1);
var RГ9С200 :N=SumOfArray(RГ9С210М1,М1);
var RГ9аС200:N=SumOfArray(RГ9аС210М1,М1);
var RГ10С200:N=SumOfArray(RГ10С210М1,М1);
var RГ11С200:N=SumOfArray(RГ11С210М1,М1);

var Buf[]:S;
var КлючКБК[]:S;

var SelfBln:S="ОТЧЕТЫ.БАЛАНС.191Н.0503138";
var SelfCfg:S="ТББ.ОТЧЕТЫ.БАЛАНС.128Н.0503138.000.cfg";

var hКР:S;

btnРасчет   :Object;
btnНастр    :Object;
btnОчистить :Object;
btnПечать   :Object;
btnЗакрыть  :Object;

S1: Section;
S2: Section;
S3: Section;
S4: Section;
S5: Section;
--
--Процедуры и функции -------------
Proc ПрисвоитьТочность;
var cf:S;
var s,c,r,rr:i;
var Obj: Object;
 cf=",##0."+if(Точн<1,"",RepStr("0",Точн))+";;-";
 for s=1..2 do
  if FindObject("S"+Str(s),Obj):
     rr=AsInteger(Obj.RowsCount);
     for c=5..16 do
      for r=1..rr do
       Obj.Cell(r,c,CellFormat,cf);
      od;
     od;
  fi;
 od;
end;

Proc Очистить;
 ClearVariable(М1);
 ClearVariable(SГ1С210М1);
 ClearVariable(SГ3С210М1);
 ClearVariable(RГ4С210М1);
 ClearVariable(RГ5С210М1);
 ClearVariable(RГ7С210М1);
 ClearVariable(RГ7аС210М1);
 ClearVariable(RГ9С210М1);
 ClearVariable(RГ9аС210М1);
end;

Proc НастрУмолч;
 ТекущаяВерсия=НастрВерсия;
 ClearVariable(nУсл_1_4);  ClearVariable(Функция_1_4);  ClearVariable(ИстКБК_1_4);  ClearVariable(Знак_1_4);    ClearVariable(УслСч_1_4);  ClearVariable(УслСчКор_1_4);  ClearVariable(УслАн_1_4);  ClearVariable(УслСтатус_1_4);
 ClearVariable(nУсл_1_5);  ClearVariable(Функция_1_5);  ClearVariable(ИстКБК_1_5);  ClearVariable(Знак_1_5);    ClearVariable(УслСч_1_5);  ClearVariable(УслСчКор_1_5);  ClearVariable(УслАн_1_5);  ClearVariable(УслСтатус_1_5);
 ClearVariable(nУсл_1_7);  ClearVariable(Функция_1_7);  ClearVariable(ИстКБК_1_7);  ClearVariable(Знак_1_7);    ClearVariable(УслСч_1_7);  ClearVariable(УслСчКор_1_7);  ClearVariable(УслАн_1_7);  ClearVariable(УслСтатус_1_7);
 ClearVariable(nУсл_1_7а); ClearVariable(Функция_1_7а); ClearVariable(ИстКБК_1_7а); ClearVariable(Знак_1_7а);   ClearVariable(УслСч_1_7а); ClearVariable(УслСчКор_1_7а); ClearVariable(УслАн_1_7а); ClearVariable(УслСтатус_1_7а);
 ClearVariable(nУсл_1_9);  ClearVariable(Функция_1_9);  ClearVariable(ИстКБК_1_9);  ClearVariable(Знак_1_9);    ClearVariable(УслСч_1_9);  ClearVariable(УслСчКор_1_9);  ClearVariable(УслАн_1_9);  ClearVariable(УслСтатус_1_9);
 ClearVariable(nУсл_1_9а); ClearVariable(Функция_1_9а); ClearVariable(ИстКБК_1_9а); ClearVariable(Знак_1_9а);   ClearVariable(УслСч_1_9а); ClearVariable(УслСчКор_1_9а); ClearVariable(УслАн_1_9а); ClearVariable(УслСтатус_1_9а);

 nУсл_1_4=nУсл_1_4+1;   Функция_1_4[nУсл_1_4]=0;   ИстКБК_1_4[nУсл_1_4]=0;   Знак_1_4[nУсл_1_4]= 1;   УслСч_1_4[nУсл_1_4]="*.?.504.10.*|*.?.504.11.*|*.?.ЗАБ.РХ.*";                         УслСчКор_1_4[nУсл_1_4]="";                                            УслАн_1_4[nУсл_1_4]="";

 nУсл_1_5=nУсл_1_5+1;   Функция_1_5[nУсл_1_5]=0;   ИстКБК_1_5[nУсл_1_5]=0;   Знак_1_5[nУсл_1_5]=-1;   УслСч_1_5[nУсл_1_5]="*.?.502.11.*&(*.21?|*.22?|*.24?|*.253|*.262|*.263|*.290|*.3??)"; УслСчКор_1_5[nУсл_1_5]="*.?.506.10.*|*.?.506.11.*";                   УслАн_1_5[nУсл_1_5]="";

 nУсл_1_7=nУсл_1_7+1;   Функция_1_7[nУсл_1_7]=0;   ИстКБК_1_7[nУсл_1_7]=0;   Знак_1_7[nУсл_1_7]=-1;   УслСч_1_7[nУсл_1_7]="*.?.502.12.*&(*.21?|*.22?|*.24?|*.253|*.262|*.263|*.290|*.3??)"; УслСчКор_1_7[nУсл_1_7]="";                                            УслАн_1_7[nУсл_1_7]="";

 nУсл_1_7а=nУсл_1_7а+1; Функция_1_7а[nУсл_1_7а]=0; ИстКБК_1_7а[nУсл_1_7а]=1; Знак_1_7а[nУсл_1_7а]= 1; УслСч_1_7а[nУсл_1_7а]="*.?.206.??.*";                                                 УслСчКор_1_7а[nУсл_1_7а]="";                                          УслАн_1_7а[nУсл_1_7а]="";
 nУсл_1_7а=nУсл_1_7а+1; Функция_1_7а[nУсл_1_7а]=0; ИстКБК_1_7а[nУсл_1_7а]=1; Знак_1_7а[nУсл_1_7а]= 1; УслСч_1_7а[nУсл_1_7а]="*.?.208.??.560";                                               УслСчКор_1_7а[nУсл_1_7а]="~*.?.201.35.*";                             УслАн_1_7а[nУсл_1_7а]="";
 nУсл_1_7а=nУсл_1_7а+1; Функция_1_7а[nУсл_1_7а]=0; ИстКБК_1_7а[nУсл_1_7а]=1; Знак_1_7а[nУсл_1_7а]= 1; УслСч_1_7а[nУсл_1_7а]="*.?.208.??.660";                                               УслСчКор_1_7а[nУсл_1_7а]="*.?.201.?1.*|*.?.201.34.*|*.?.201.27.*";    УслАн_1_7а[nУсл_1_7а]="";
 nУсл_1_7а=nУсл_1_7а+1; Функция_1_7а[nУсл_1_7а]=0; ИстКБК_1_7а[nУсл_1_7а]=1; Знак_1_7а[nУсл_1_7а]=-1; УслСч_1_7а[nУсл_1_7а]="*.?.302.??.730";                                               УслСчКор_1_7а[nУсл_1_7а]="~(*.201.34.510|*.303.02.830|*.303.06.830)"; УслАн_1_7а[nУсл_1_7а]="";
 nУсл_1_7а=nУсл_1_7а+1; Функция_1_7а[nУсл_1_7а]=0; ИстКБК_1_7а[nУсл_1_7а]=2; Знак_1_7а[nУсл_1_7а]=-1; УслСч_1_7а[nУсл_1_7а]="*.?.301.??.*&(*.710|*.720)";                                   УслСчКор_1_7а[nУсл_1_7а]="";                                          УслАн_1_7а[nУсл_1_7а]="";
 nУсл_1_7а=nУсл_1_7а+1; Функция_1_7а[nУсл_1_7а]=0; ИстКБК_1_7а[nУсл_1_7а]=2; Знак_1_7а[nУсл_1_7а]=-1; УслСч_1_7а[nУсл_1_7а]="*.?.303.??.730";                                               УслСчКор_1_7а[nУсл_1_7а]="*.?.401.20.2??";                            УслАн_1_7а[nУсл_1_7а]="";

 nУсл_1_9=nУсл_1_9+1;   Функция_1_9[nУсл_1_9]=0;   ИстКБК_1_9[nУсл_1_9]=3;   Знак_1_9[nУсл_1_9]=-1;   УслСч_1_9[nУсл_1_9]="*.?.201.?1.*|*.?.201.?3.*";                                      УслСчКор_1_9[nУсл_1_9]="~*.?.304.04.*";                               УслАн_1_9[nУсл_1_9]="";
 nУсл_1_9=nУсл_1_9+1;   Функция_1_9[nУсл_1_9]=0;   ИстКБК_1_9[nУсл_1_9]=3;   Знак_1_9[nУсл_1_9]=-1;   УслСч_1_9[nУсл_1_9]="*.?.201.27.*";                                                   УслСчКор_1_9[nУсл_1_9]="~*.?.304.04.*";                               УслАн_1_9[nУсл_1_9]="";

 nУсл_1_9а=nУсл_1_9а+1; Функция_1_9а[nУсл_1_9а]=2; ИстКБК_1_9а[nУсл_1_9а]=3; Знак_1_9а[nУсл_1_9а]=1;  УслСч_1_9а[nУсл_1_9а]="*.?.201.34.*";                                                 УслСчКор_1_9а[nУсл_1_9а]="";                                          УслАн_1_9а[nУсл_1_9а]="";
end;

Proc УдалитьПустыеНастр;
var Iter:i;
 Iter=1; While Iter<=nУсл_1_4  do if УслСч_1_4 [Iter]="" and УслСчКор_1_4 [Iter]="" and УслАн_1_4 [Iter]="": DeleteFrame(nУсл_1_4 ,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_5  do if УслСч_1_5 [Iter]="" and УслСчКор_1_5 [Iter]="" and УслАн_1_5 [Iter]="": DeleteFrame(nУсл_1_5 ,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_7  do if УслСч_1_7 [Iter]="" and УслСчКор_1_7 [Iter]="" and УслАн_1_7 [Iter]="": DeleteFrame(nУсл_1_7 ,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_7а do if УслСч_1_7а[Iter]="" and УслСчКор_1_7а[Iter]="" and УслАн_1_7а[Iter]="": DeleteFrame(nУсл_1_7а,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_9  do if УслСч_1_9 [Iter]="" and УслСчКор_1_9 [Iter]="" and УслАн_1_9 [Iter]="": DeleteFrame(nУсл_1_9 ,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_9а do if УслСч_1_9а[Iter]="" and УслСчКор_1_9а[Iter]="" and УслАн_1_9а[Iter]="": DeleteFrame(nУсл_1_9а,Iter); else Iter=Iter+1; fi; od;
end;

Proc Настр(aСохр:L);
var n,nn,z,zz:i;
var Val:S;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать(SelfBln,0,НастрВерсия,"",НастрGUID):
    Раб.Настр.Добавить("ТекущаяВерсия","I");
    ClearVariable(Buf);
    n=n+1; Buf[n]="4"; n=n+1; Buf[n]="5"; n=n+1; Buf[n]="7"; n=n+1; Buf[n]="7а"; n=n+1; Buf[n]="9"; n=n+1; Buf[n]="9а";
    nn=n;
    for n=1..nn do
     Val="_1_"+Buf[n];
     Раб.Настр.Добавить("nУсл"+Val,"I");
     zz=GetVariableI("nУсл"+Val);
     for z=1..zz do
      Val="_1_"+Buf[n]+"["+Str(z)+"]";
      Раб.Настр.Добавить("Функция"+Val,"I");
      Раб.Настр.Добавить("ИстКБК"+Val,"I");
      Раб.Настр.Добавить("Знак"+Val,"I");
      Раб.Настр.Добавить("УслСч"+Val,"S");
      Раб.Настр.Добавить("УслСчКор"+Val,"S");
      Раб.Настр.Добавить("УслАн"+Val,"S");
     od;
    od;
    if aСохр:
       ТекущаяВерсия=НастрВерсия;
       Раб.Настр.Сохранить;
      else
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
        НастрУмолч;
       fi;
    fi;
 fi;
end;

Proc КонтрольВерсии;
 Настр(False);
 if not ТекущаяВерсия=НастрВерсия:
    НастрУмолч;
    Настр(True);
    Message("Настройка отчета актуализирована");
 fi;
end;

Proc ОткрытьНастр(Flag:L);
var s1,s2:i;
var Obj: Object;
 btnРасчет.Visible=not Flag;
 btnНастр.Visible=not Flag;
 btnОчистить.Visible=not Flag;
 btnПечать.Visible=not Flag;
 btnЗакрыть.Visible=not Flag;
 for s1=1..1 do
  if FindObject("sУсл_"+Str(s1),Obj): Obj.Visible=Flag; fi;
  for s2=4..9 do
   if FindObject("sУсл_"+Str(s1)+"_"+Str(s2),Obj): Obj.Visible=Flag; fi;
   if FindObject("sУсл_"+Str(s1)+"_"+Str(s2)+"_",Obj): Obj.Visible=Flag; fi;
   if s1=1 and (s2=7 or s2=9):
      if FindObject("sУсл_"+Str(s1)+"_"+Str(s2)+"а",Obj): Obj.Visible=Flag; fi;
      if FindObject("sУсл_"+Str(s1)+"_"+Str(s2)+"а"+"_",Obj): Obj.Visible=Flag; fi;
   fi;
  od;
 od;
end;

Proc ЗаполнитьРекв(Rec: Record);
 if Rec=nil: Rec=Раб.Бюджет2005.НашРекв; fi;
 if not Rec=nil:
    Учреждение=GetCardFieldS('Контрагент',Rec,"ПолнИмя");
    ОКПО=GetCardFieldS('Контрагент',Rec,"ОКПО");
    ОКТМО=GetCardFieldS('Контрагент',Rec,"ОКТМО");
    ППП=GetCardFieldS('Контрагент',Rec,"РПО_ППП");
    ФИОРук=GetCardFieldS('Контрагент',Rec,"ФИОРук");
    ФИОБух=GetCardFieldS('Контрагент',Rec,"ФИОБух");
 fi;
end;

Proc InsFrame(Frame:S; Iter:I);
 if not Pos("М1",Frame)=0: InsertFrame(М1,Iter);
 fi;
end;

Func ПолучитьМаскуКБК(aУслКБК:S; aТипКБК:S; aИстКБК:I; aТипМаски:S):S;
var БК,КОСГУ:S;
 if not aУслКБК="":
    БК=Раб.Бюджет2005.ВзятьКодКБК(aУслКБК,aТипКБК,"БК",False);
    КОСГУ=Раб.Бюджет2005.ВзятьКодКБК(aУслКБК,aТипКБК,"КОСГУ",False);
    if aИстКБК=0: ^БК+"."+Раб.Бюджет2005.МаскаСч6+"."+КОСГУ;
      |aИстКБК=1: ^БК+".?.???."+Раб.Бюджет2005.Соотв_КОСГУ_Ан("",КОСГУ)+".*";
      |aИстКБК=2: if aТипМаски="Сч": ^БК+"."+Раб.Бюджет2005.МаскаСч6+".*"; else ^"КОСГУ."+КОСГУ+"!"; fi;
      |aИстКБК=3: ^"("+aТипКБК+"."+БК+"&КОСГУ."+КОСГУ+"!)";
    fi;
   else
    if aТипМаски="Сч" and aТипКБК="ФКР":  ^Раб.Бюджет2005.МаскаФКР+".*"; fi;
 fi;
 ^"";
end;

Proc ЗаполнитьНаимПок;
var Iter:I;
var КОСГУ_:S;
 for Iter=1..М1 do
  КОСГУ_=Раб.Бюджет2005.ВзятьКодКБК(SГ3С210М1[Iter],"ФКР","КОСГУ",False);
  SГ1С210М1[Iter]=Раб.Бюджет.НаимКБК("КОСГУ2006",КОСГУ_);
 od;
end;

Proc УдалитьПустыеСтроки;
var Iter:I;
 Iter=1;
 While Iter<=М1 do
  if RГ4С210М1[Iter]=0 and RГ5С210М1[Iter]=0 and RГ7С210М1[Iter]=0 and RГ9С210М1[Iter]=0: DeleteFrame(М1,Iter); else Iter=Iter+1; fi;
 od;
end;

Proc РасчетКБКСч (aТипКБК:S; aФункция:I; aИстКБК:I; aОбщУслКБК:S; aУслСч:S; aУслСчКор:S; aУслАн:S; fldКБК:S; fldVal:S; aКоэф:I);
var z:i;
var Rep: Report;
var УслСч_,Сч_,КБК_,ОбщУслАн_,МаскаКБК_:S;
var Value:N;
var Показатель_:S;
 if (aУслСч="" and aУслСчКор="" and aУслАн="") or aИстКБК>1: Exit; fi;
 if aКоэф=0: aКоэф=1; fi;
 МаскаКБК_=ПолучитьМаскуКБК(aОбщУслКБК,aТипКБК,aИстКБК,"Сч");
 if not aУслСч="": aУслСч="("+aУслСч+")"; fi;
 УслСч_=Раб.Бюджет2005.Объединить(aУслСч,ОбщУслВБС,"&");
 УслСч_=Раб.Бюджет2005.Объединить(УслСч_,МаскаКБК_,"&");
 УслСч_=Раб.Бюджет2005.Объединить(УслСч_,aУслСчКор,"/");
 if not aУслАн="": aУслАн="("+aУслАн+")"; fi;
 if not ОбщУслАн="": ОбщУслАн_="("+ОбщУслАн+")"; else ОбщУслАн_=ОбщУслАн; fi;
 aУслАн=Раб.Бюджет2005.Объединить(aУслАн,ОбщУслАн_,"&");
 if НеУчитЗаклПр: aУслАн=Раб.Бюджет2005.Объединить(aУслАн,Раб.Парам_Отч.ИсклЗакл,"&"); fi;
 Rep=RepOpen('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Ф0503127.lst"."СЧ"',УслСч_,aУслАн,ДН,ДК,УслВал);
 if not Показатель="" and not Показатель=BaseCurrency: Показатель_="ВАЛ"; fi;
 Try
  While RepNext(Rep) do
   Сч_=RepIdent(Rep);
   if not Сч_="":
      КБК_=Раб.Бюджет2005.ВзятьКодСчета(Сч_,aТипКБК,"БК",False);
      if aИстКБК=1: КБК_=КБК_+"."+Раб.Бюджет2005.Соотв_Ан_КОСГУ("",Раб.Бюджет2005.ВзятьКодСчета(Сч_,aТипКБК,"АН",False));
        |True: КБК_=КБК_+"."+Раб.Бюджет2005.ВзятьКодСчета(Сч_,aТипКБК,"КОСГУ",False);
      fi;
      if aФункция=1: Value=RepSaldoS(Rep,0,Показатель_);
        |aФункция=2: Value=RepSaldoF(Rep,0,Показатель_);
        |aФункция=3: Value=Deb(RepSaldoS(Rep,0,Показатель_));
        |aФункция=4: Value=Cre(RepSaldoS(Rep,0,Показатель_));
        |aФункция=5: Value=Deb(RepSaldoF(Rep,0,Показатель_));
        |aФункция=6: Value=Cre(RepSaldoF(Rep,0,Показатель_));
        |True:   Value=RepTurn(Rep,0,Показатель_);
      fi;
      z=SearchInArray(КлючКБК,КБК_,True);
      if z=-1:
         z=InsertInArraySort(КлючКБК,КБК_);
         InsFrame(fldVal,z);
         PutVariableS(fldКБК+"["+Str(z)+"]",КБК_);
      fi;
      Value=GetVariableN(fldVal+"["+Str(z)+"]")+Round(Value*aКоэф/ЕдИзм,Точн);
      PutVariableN(fldVal+"["+Str(z)+"]",Value);
   fi;
  od;
 Finally
  Rep=RepClose(Rep);
 end;
end;

Proc РасчетКБКСчАн (aТипКБК:S; aФункция:I; aИстКБК:I; aОбщУслКБК:S; aУслСч:S; aУслСчКор:S; aУслАн:S; fldКБК:S; fldVal:S; aКоэф:I);
var z:i;
var Rep1,Rep2: Report;
var УслСч_,Сч_,БК_,КОСГУ_,ОбщУслАн_,МаскаКБК_:S;
var Value:N;
var Показатель_:S;
 if (aУслСч="" and aУслСчКор="" and aУслАн="") or not aИстКБК=2: Exit; fi;
 if aКоэф=0: aКоэф=1; fi;
 МаскаКБК_=ПолучитьМаскуКБК(aОбщУслКБК,aТипКБК,aИстКБК,"Сч");
 if not aУслСч="": aУслСч="("+aУслСч+")"; fi;
 УслСч_=Раб.Бюджет2005.Объединить(aУслСч,ОбщУслВБС,"&");
 УслСч_=Раб.Бюджет2005.Объединить(УслСч_,МаскаКБК_,"&");
 УслСч_=Раб.Бюджет2005.Объединить(УслСч_,aУслСчКор,"/");
 МаскаКБК_=ПолучитьМаскуКБК(aОбщУслКБК,aТипКБК,aИстКБК,"Ан");
 if not aУслАн="": aУслАн="("+aУслАн+")"; fi;
 if not ОбщУслАн="": ОбщУслАн_="("+ОбщУслАн+")"; else ОбщУслАн_=ОбщУслАн; fi;
 aУслАн=Раб.Бюджет2005.Объединить(aУслАн,ОбщУслАн_,"&");
 aУслАн=Раб.Бюджет2005.Объединить(aУслАн,МаскаКБК_,"&");
 if НеУчитЗаклПр: aУслАн=Раб.Бюджет2005.Объединить(aУслАн,Раб.Парам_Отч.ИсклЗакл,"&"); fi;
 Rep1=RepOpen('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Ф0503127.lst"."СЧ"',УслСч_,aУслАн,ДН,ДК,УслВал);
 if not Показатель="" and not Показатель=BaseCurrency: Показатель_="ВАЛ"; fi;
 Try
  While RepNext(Rep1) do
   Сч_=RepIdent(Rep1);
   if not Сч_="":
      БК_=Раб.Бюджет2005.ВзятьКодСчета(Сч_,aТипКБК,"БК",False);
      Rep2=RepOpen('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Ф0503127.lst"."АН"',Сч_,aУслАн,ДН,ДК,УслВал,"КОСГУ");
      Try
       While RepNext(Rep2) do
        КОСГУ_=RepIdent(Rep2);
        if not КОСГУ_="":
         if aФункция=1: Value=RepSaldoS(Rep2,0,Показатель_);
           |aФункция=2: Value=RepSaldoF(Rep2,0,Показатель_);
           |aФункция=3: Value=Deb(RepSaldoS(Rep2,0,Показатель_));
           |aФункция=4: Value=Cre(RepSaldoS(Rep2,0,Показатель_));
           |aФункция=5: Value=Deb(RepSaldoF(Rep2,0,Показатель_));
           |aФункция=6: Value=Cre(RepSaldoF(Rep2,0,Показатель_));
           |True:       Value=RepTurn(Rep2,0,Показатель_);
         fi;
         КОСГУ_=SubStr(КОСГУ_,Pos(".",КОСГУ_)+1,3);
         z=SearchInArray(КлючКБК,БК_+"."+КОСГУ_,True);
         if z=-1:
            z=InsertInArraySort(КлючКБК,БК_+"."+КОСГУ_);
            InsFrame(fldVal,z);
            PutVariableS(fldКБК+"["+Str(z)+"]",БК_+"."+КОСГУ_);
         fi;
         Value=GetVariableN(fldVal+"["+Str(z)+"]")+Round(Value*aКоэф/ЕдИзм,Точн);
         PutVariableN(fldVal+"["+Str(z)+"]",Value);
        fi;
       od;
     Finally
      Rep2=RepClose(Rep2);
     end;
   fi;
  od;
 Finally
  Rep1=RepClose(Rep1);
 end;
end;

Proc РасчетКБКАн (aТипКБК:S; aФункция:I; aИстКБК:I; aУслКБК:S; aУслСч:S; aУслСчКор:S; aУслАн:S; fldКБК:S; fldVal:S; aКоэф:I);
var z:i;
var Rep1,Rep2: Report;
var УслСч_,КБК_,КОСГУ_,ОбщУслАн_,УслАн_,МаскаКБК_:S;
var Value:N;
var Показатель_:S;
 if (aУслСч="" and aУслСчКор="" and aУслАн="") or aИстКБК<3: Exit; fi;
 if aКоэф=0: aКоэф=1; fi;
 МаскаКБК_=ПолучитьМаскуКБК(aУслКБК,aТипКБК,aИстКБК,"Ан");
 if not aУслСч="": aУслСч="("+aУслСч+")"; fi;
 УслСч_=Раб.Бюджет2005.Объединить(aУслСч,ОбщУслВБС,"&");
 УслСч_=Раб.Бюджет2005.Объединить(УслСч_,aУслСчКор,"/");
 if not aУслАн="": aУслАн="("+aУслАн+")"; fi;
 if not ОбщУслАн="": ОбщУслАн_="("+ОбщУслАн+")"; else ОбщУслАн_=ОбщУслАн; fi;
 aУслАн=Раб.Бюджет2005.Объединить(aУслАн,ОбщУслАн_,"&");
 aУслАн=Раб.Бюджет2005.Объединить(aУслАн,МаскаКБК_,"&");
 if НеУчитЗаклПр: aУслАн=Раб.Бюджет2005.Объединить(aУслАн,Раб.Парам_Отч.ИсклЗакл,"&"); fi;
 if not Показатель="" and not Показатель=BaseCurrency: Показатель_="ВАЛ"; fi;
 Rep1=RepOpen('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Ф0503127.lst"."АН"',УслСч_,aУслАн,ДН,ДК,УслВал,aТипКБК);
 Try
  While RepNext(Rep1) do
   КБК_=RepIdent(Rep1);
   if not КБК_="":
     УслАн_=Раб.Бюджет2005.Объединить(aУслАн,КБК_,"&");
     КБК_=SubStr(КБК_,Pos(".",КБК_)+1,255);
     Rep2=RepOpen('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Ф0503127.lst"."АН"',УслСч_,УслАн_,ДН,ДК,УслВал,"КОСГУ");
     Try
      While RepNext(Rep2) do
       КОСГУ_=RepIdent(Rep2);
       if not КОСГУ_="":
        if aФункция=1: Value=RepSaldoS(Rep2,0,Показатель_);
          |aФункция=2: Value=RepSaldoF(Rep2,0,Показатель_);
          |aФункция=3: Value=Deb(RepSaldoS(Rep2,0,Показатель_));
          |aФункция=4: Value=Cre(RepSaldoS(Rep2,0,Показатель_));
          |aФункция=5: Value=Deb(RepSaldoF(Rep2,0,Показатель_));
          |aФункция=6: Value=Cre(RepSaldoF(Rep2,0,Показатель_));
          |True:             Value=RepTurn(Rep2,0,Показатель_);
        fi;
        КОСГУ_=SubStr(КОСГУ_,Pos(".",КОСГУ_)+1,3);
        z=SearchInArray(КлючКБК,КБК_+"."+КОСГУ_,True);
        if z=-1:
           z=InsertInArraySort(КлючКБК,КБК_+"."+КОСГУ_);
           InsFrame(fldVal,z);
           PutVariableS(fldКБК+"["+Str(z)+"]",КБК_+"."+КОСГУ_);
        fi;
        Value=GetVariableN(fldVal+"["+Str(z)+"]")+Round(Value*aКоэф/ЕдИзм,Точн);
        PutVariableN(fldVal+"["+Str(z)+"]",Value);
       fi;
      od;
    Finally
     Rep2=RepClose(Rep2);
    end;
   fi;
  od;
 Finally
  Rep1=RepClose(Rep1);
 end;
end;

Proc КонтрольКБК;
var Iter:I;
 Раб.Бюджет2005.РежимМаски="?";
 for Iter=1..М1 do
  Раб.Вспом.Ф0503127_Детал.КонтрольКБК("КР",SГ3С210М1[Iter],Str(N1[Iter]));
 od;
end;

Proc Расчет;
var n:i;
 Refresh;
 Очистить;
 ClearTrace(True);
 Раб.Бюджет2005.РежимМаски="?";
 ClearVariable(КлючКБК);
 for n=1..nУсл_1_4 do
  РасчетКБКСч  ("ФКР",Функция_1_4[n],ИстКБК_1_4[n],ОбщУслКР,УслСч_1_4[n],УслСчКор_1_4[n],УслАн_1_4[n],"SГ3С210М1","RГ4С210М1",Знак_1_4[n]);
  РасчетКБКАн  ("ФКР",Функция_1_4[n],ИстКБК_1_4[n],ОбщУслКР,УслСч_1_4[n],УслСчКор_1_4[n],УслАн_1_4[n],"SГ3С210М1","RГ4С210М1",Знак_1_4[n]);
  РасчетКБКСчАн("ФКР",Функция_1_4[n],ИстКБК_1_4[n],ОбщУслКР,УслСч_1_4[n],УслСчКор_1_4[n],УслАн_1_4[n],"SГ3С210М1","RГ4С210М1",Знак_1_4[n]);
 od;
 for n=1..nУсл_1_5 do
  РасчетКБКСч  ("ФКР",Функция_1_5[n],ИстКБК_1_5[n],ОбщУслКР,УслСч_1_5[n],УслСчКор_1_5[n],УслАн_1_5[n],"SГ3С210М1","RГ5С210М1",Знак_1_5[n]);
  РасчетКБКАн  ("ФКР",Функция_1_5[n],ИстКБК_1_5[n],ОбщУслКР,УслСч_1_5[n],УслСчКор_1_5[n],УслАн_1_5[n],"SГ3С210М1","RГ5С210М1",Знак_1_5[n]);
  РасчетКБКСчАн("ФКР",Функция_1_5[n],ИстКБК_1_5[n],ОбщУслКР,УслСч_1_5[n],УслСчКор_1_5[n],УслАн_1_5[n],"SГ3С210М1","RГ5С210М1",Знак_1_5[n]);
 od;
 for n=1..nУсл_1_7 do
  РасчетКБКСч  ("ФКР",Функция_1_7[n],ИстКБК_1_7[n],ОбщУслКР,УслСч_1_7[n],УслСчКор_1_7[n],УслАн_1_7[n],"SГ3С210М1","RГ7С210М1",Знак_1_7[n]);
  РасчетКБКАн  ("ФКР",Функция_1_7[n],ИстКБК_1_7[n],ОбщУслКР,УслСч_1_7[n],УслСчКор_1_7[n],УслАн_1_7[n],"SГ3С210М1","RГ7С210М1",Знак_1_7[n]);
  РасчетКБКСчАн("ФКР",Функция_1_7[n],ИстКБК_1_7[n],ОбщУслКР,УслСч_1_7[n],УслСчКор_1_7[n],УслАн_1_7[n],"SГ3С210М1","RГ7С210М1",Знак_1_7[n]);
 od;
 for n=1..nУсл_1_7а do
  РасчетКБКСч  ("ФКР",Функция_1_7а[n],ИстКБК_1_7а[n],ОбщУслКР,УслСч_1_7а[n],УслСчКор_1_7а[n],УслАн_1_7а[n],"SГ3С210М1","RГ7аС210М1",Знак_1_7а[n]);
  РасчетКБКАн  ("ФКР",Функция_1_7а[n],ИстКБК_1_7а[n],ОбщУслКР,УслСч_1_7а[n],УслСчКор_1_7а[n],УслАн_1_7а[n],"SГ3С210М1","RГ7аС210М1",Знак_1_7а[n]);
  РасчетКБКСчАн("ФКР",Функция_1_7а[n],ИстКБК_1_7а[n],ОбщУслКР,УслСч_1_7а[n],УслСчКор_1_7а[n],УслАн_1_7а[n],"SГ3С210М1","RГ7аС210М1",Знак_1_7а[n]);
 od;
 for n=1..nУсл_1_9 do
  РасчетКБКСч  ("ФКР",Функция_1_9[n],ИстКБК_1_9[n],ОбщУслКР,УслСч_1_9[n],УслСчКор_1_9[n],УслАн_1_9[n],"SГ3С210М1","RГ9С210М1",Знак_1_9[n]);
  РасчетКБКАн  ("ФКР",Функция_1_9[n],ИстКБК_1_9[n],ОбщУслКР,УслСч_1_9[n],УслСчКор_1_9[n],УслАн_1_9[n],"SГ3С210М1","RГ9С210М1",Знак_1_9[n]);
  РасчетКБКСчАн("ФКР",Функция_1_9[n],ИстКБК_1_9[n],ОбщУслКР,УслСч_1_9[n],УслСчКор_1_9[n],УслАн_1_9[n],"SГ3С210М1","RГ9С210М1",Знак_1_9[n]);
 od;
 for n=1..nУсл_1_9а do
  РасчетКБКСч  ("ФКР",Функция_1_9а[n],ИстКБК_1_9а[n],ОбщУслКР,УслСч_1_9а[n],УслСчКор_1_9а[n],УслАн_1_9а[n],"SГ3С210М1","RГ9аС210М1",Знак_1_9а[n]);
  РасчетКБКАн  ("ФКР",Функция_1_9а[n],ИстКБК_1_9а[n],ОбщУслКР,УслСч_1_9а[n],УслСчКор_1_9а[n],УслАн_1_9а[n],"SГ3С210М1","RГ9аС210М1",Знак_1_9а[n]);
  РасчетКБКСчАн("ФКР",Функция_1_9а[n],ИстКБК_1_9а[n],ОбщУслКР,УслСч_1_9а[n],УслСчКор_1_9а[n],УслАн_1_9а[n],"SГ3С210М1","RГ9аС210М1",Знак_1_9а[n]);
 od;
 --Удаление пустых строк
 УдалитьПустыеСтроки;
 --
 ЗаполнитьНаимПок;
 --
 ОтчGUID=Раб.Парам_Отч.ОтчGUID;
 --
 КонтрольКБК;
 Message("Расчет завершен");
end;

Proc Перерасчет(Flag:L);
var Msg:S;
 ОткрытьНастр(False);
 if ДН>ДК: Message("Дата начада периода превышает дату окончания периода",mtError); Template.Field="ДК"; Exit; fi;
 if ДК=1.1.100: Message("Выберите отчетный период",mtError); Template.Field="ДК"; Exit; fi;
 if Flag: Msg="Параметры отчета изменились."+Chr(13); else Msg=""; fi;
 if EnqOkCancel(Msg+'Выполнить расчет ?'+chr(13)+'Набранные вручную данные будут утеряны',mtWarning)=CmOk: Расчет; fi;
end;

Proc Детализация(КБК:S; Val:S);
var УслСч,УслСчКор,УслАн,NameRep,ОбщУслАн_,ТипКБК,МаскаКБК:S;
var n,nn,ИстКБК,Знак,Функция:i;
var ДН_,ДК_:D;
 nn=GetVariableI("nУсл_"+Val);
 if nn=0: Exit; fi;
 РАБ.ВСПОМ.Ф0503127_ДЕТАЛ.Очистить;
 РАБ.ВСПОМ.Ф0503127_ДЕТАЛ.Загл="Детализация значений ф. 0503138";
 РАБ.ВСПОМ.Ф0503127_ДЕТАЛ.ДН=ДН;
 РАБ.ВСПОМ.Ф0503127_ДЕТАЛ.ДК=ДК;
 РАБ.ВСПОМ.Ф0503127_ДЕТАЛ.КБК=КБК;
 РАБ.ВСПОМ.Ф0503127_ДЕТАЛ.УслВал=УслВал;
 РАБ.ВСПОМ.Ф0503127_ДЕТАЛ.Показатель=Показатель;
 РАБ.ВСПОМ.Ф0503127_ДЕТАЛ.Упр=nn;
 ТипКБК=Раб.Бюджет2005.ТипКБКСчета(КБК);
 for n=1..nn do
  Функция=GetVariableI("Функция_"+Val+"["+Str(n)+"]");
  ИстКБК=GetVariableI("ИстКБК_"+Val+"["+Str(n)+"]");
  Знак=GetVariableI("Знак_"+Val+"["+Str(n)+"]");
  УслСч=GetVariableS("УслСч_"+Val+"["+Str(n)+"]");
  УслСчКор=GetVariableS("УслСчКор_"+Val+"["+Str(n)+"]");
  УслАн=GetVariableS("УслАн_"+Val+"["+Str(n)+"]");
  if not УслСч="": УслСч="("+УслСч+")"; fi;
  УслСч=Раб.Бюджет2005.Объединить(УслСч,ОбщУслВБС,"&");
  if not УслАн="": УслАн="("+УслАн+")"; fi;
  if not ОбщУслАн="": ОбщУслАн_="("+ОбщУслАн+")"; else ОбщУслАн_=ОбщУслАн; fi;
  УслАн=Раб.Бюджет2005.Объединить(УслАн,ОбщУслАн_,"&");
  if НеУчитЗаклПр: УслАн=Раб.Бюджет2005.Объединить(УслАн,Раб.Парам_Отч.ИсклЗакл,"&"); fi;
  if ИстКБК<2:
     МаскаКБК=ПолучитьМаскуКБК(КБК,ТипКБК,ИстКБК,"Сч");
     УслСч=Раб.Бюджет2005.Объединить(УслСч,МаскаКБК,"&");
    |ИстКБК=2:
     МаскаКБК=ПолучитьМаскуКБК(КБК,ТипКБК,ИстКБК,"Сч");
     УслСч=Раб.Бюджет2005.Объединить(УслСч,МаскаКБК,"&");
     МаскаКБК=ПолучитьМаскуКБК(КБК,ТипКБК,ИстКБК,"Ан");
     УслАн=Раб.Бюджет2005.Объединить(УслАн,МаскаКБК,"&");
    |ИстКБК=3:
     МаскаКБК=ПолучитьМаскуКБК(КБК,ТипКБК,ИстКБК,"Ан");
     УслАн=Раб.Бюджет2005.Объединить(УслАн,МаскаКБК,"&");
  fi;
  УслСч=Раб.Бюджет2005.Объединить(УслСч,УслСчКор,"/");
  if nn=1:
     if Функция=1: ДН_=1.1.100; ДК_=ДН;
       |Функция=2: ДН_=1.1.100; ДК_=ДК;
       |True:      ДН_=ДН;        ДК_=ДК;
     fi;
     if not УслВал="": 
        if  УслВал=BaseCurrency: NameRep='"001"'; else NameRep='"003"'; fi;
        УслСч=УслСч+"'"+УслВал;
        Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst".'+NameRep,ДН_,ДК_,УслСч,УслАн);
       else
        Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst"."001"',ДН_,ДК_,УслСч,УслАн);
     fi;
     Exit;
  fi;
  Раб.Вспом.Ф0503127_Детал.Функция[n]=Функция;
  Раб.Вспом.Ф0503127_Детал.УслСч[n]=УслСч;
  Раб.Вспом.Ф0503127_Детал.УслАн[n]=УслАн;
  Раб.Вспом.Ф0503127_Детал.Знак[n]=Знак;
 od;
 OpenBlank("РАБ.ВСПОМ.Ф0503127_ДЕТАЛ",True);
end;
--Процедуры и функции -------------                       
--
--
--Обработчики событий полей шаблона-----
Func A_OnEnter(FieldName: String; Iter: Integer): logical;
var Name:S;
 Name=AsString(Template.Name);
 if Name="sУсл_1_4" : InsertFrame(nУсл_1_4 ,Iter+1);
   |Name="sУсл_1_5" : InsertFrame(nУсл_1_5 ,Iter+1);
   |Name="sУсл_1_7" : InsertFrame(nУсл_1_7 ,Iter+1);
   |Name="sУсл_1_7а": InsertFrame(nУсл_1_7а,Iter+1);
   |Name="sУсл_1_9" : InsertFrame(nУсл_1_9 ,Iter+1);
   |Name="sУсл_1_9а": InsertFrame(nУсл_1_9а,Iter+1);
 fi;
 Return False;
end;

Func D_OnEnter(FieldName: String; Iter: Integer): logical;
var Name:S;
 Name=AsString(Template.Name);
 if Name="sУсл_1_4" : DeleteFrame(nУсл_1_4 ,Iter);
   |Name="sУсл_1_5" : DeleteFrame(nУсл_1_5 ,Iter);
   |Name="sУсл_1_7" : DeleteFrame(nУсл_1_7 ,Iter);
   |Name="sУсл_1_7а": DeleteFrame(nУсл_1_7а,Iter);
   |Name="sУсл_1_9" : DeleteFrame(nУсл_1_9 ,Iter);
   |Name="sУсл_1_9а": DeleteFrame(nУсл_1_9а,Iter);
 fi;
 Return False;
end;

Proc ВосстанНастр_OnClick(Row: Integer; Col: Integer; Double: Logical);
 if EnqOkCancel("Восстановить значения по умолчанию?",mtWarning)=cmCancel: Exit; fi;
 НастрУмолч;
 Message("Значение по умолчанию восстановлены");
end;

Proc ЗакрытьНастр_OnClick(Row: Integer; Col: Integer; Double: Logical);
 УдалитьПустыеНастр;
 Настр(True);
 ОткрытьНастр(False);
end;

Func Функция_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Оборот";
 Buf[2]="Остаток на начало периода";
 Buf[3]="Остаток на конец периода";
 Buf[4]="Дебетовый остаток на начало периода";
 Buf[5]="Кредитовый остаток на начало периода";
 Buf[6]="Дебетовый остаток на конец периода";
 Buf[7]="Кредитовый остаток на конец периода";
 n=Alternate("Выберите функцию",Buf,-1,1,12);
 if not n=0:
    n=n-1;
    FieldName=SubStr(FieldName,1,Length(FieldName)-1)+"["+Str(Iter)+"]";
    PutVariableI(FieldName,n);
 fi;
 Return False;
end;

Func ИстКБК_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="БК (1-17 разряды счета) + КОСГУ (24-25 разряды счета)";
 Buf[2]="БК (1-17 разряды счета) + КОСГУ (данные 22-23 разрядов счета)";
 Buf[3]="БК (1-17 разряды счета) + КОСГУ (аналитический учет по справочнику КОСГУ)";
 Buf[4]="БК (аналитический учет по справочнику ФКР или КИФД) + КОСГУ (аналитический учет по справочнику КОСГУ)";
 n=Alternate("Источник КБК",Buf,-1,1,12);
 if not n=0:
    n=n-1;
    FieldName=SubStr(FieldName,1,Length(FieldName)-1)+"["+Str(Iter)+"]";
    PutVariableI(FieldName,n);
 fi;
 ^False;
end;

Proc Знак_OnClick(Row: Integer; Col: Integer; Double: Logical);
var n:i;
var Field:S;
 ClearVariable(Buf);
 Buf[1]="Умножить на  1";
 Buf[2]="Умножить на -1";
 n=Alternate("Знак показателя",Buf,-1,1,12);
 if n=0: Exit; fi;
 if n=2: n=-1; fi;
 Field=asString(Template.Field)+"["+Str(asInteger(Template.Frame))+"]";
 PutVariableI(Field,n);
end;

Func УслСч_OnVerify (FieldName: String; Iter: Integer; Value:String): logical;
var z:n;
 z=Saldo(Value,1.1.100);
 ^True;
end;

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

Func УслСч_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field:s;
var Iter:I;
 Field=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 Cur=Раб.КБК.Список("","","СЧ8 ИГ");
 if Cur="": Template.HideEditor(False); ^Cur; fi;
 if Match(Cur,"???."): Cur=Cur+"??.???";
   |Match(Cur,"???.??."): Cur=Cur+"???";
 fi;
 Cur="*.?."+Cur;
 Field=Field+"["+Str(Iter)+"]";
 Cur=Раб.Бюджет2005.Объединить_Диалог(GetVariableS(Field),Cur,"|=ИЛИ;()|=(...) ИЛИ;&~=И ИСКЛЮЧИТЬ;()&~=(...) И ИСКЛЮЧИТЬ;_=ЗАМЕНИТЬ","_");
 if Раб.Бюджет2005.HideEditor: Template.HideEditor(False); PutVariableS(Field,Cur); fi;
 ^Cur;
end;

Func УслАн_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp,Field:s;
var Iter:I;
 Field=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 tmp=SubStr(Field,6,255)+"["+Str(Iter)+"]";
 tmp=Раб.Бюджет2005.Объединить(GetVariableS("УслСч"+tmp),GetVariableS("УслСчКор"+tmp),"|");
 if not tmp="": tmp=Раб.Бюджет2005.СписокСправ(tmp,0,""); fi;
 if not tmp="": tmp="("+tmp+")|~*.*"; fi;
 Cur=AnaElection(tmp);
 if Cur="": Template.HideEditor(False); ^Cur; fi;
 Field=Field+"["+Str(Iter)+"]";
 Cur=Раб.Бюджет2005.Объединить_Диалог(GetVariableS(Field),Cur,"&=И;()&=(...) И;|=ИЛИ;()|=(...) ИЛИ;&~=И ИСКЛЮЧИТЬ;()&~=(...) И ИСКЛЮЧИТЬ;_=ЗАМЕНИТЬ","_");
 if Раб.Бюджет2005.HideEditor: Template.HideEditor(False); PutVariableS(Field,Cur); fi;
 ^Cur;
end;

Func ПарамОтч_onEnter(FieldName: String; Iter: Integer): logical;
var Flag:L;
 Flag=РАБ.ПАРАМ_ОТЧ.Взять(FieldName,0);
 ОКПО=ОКПО; --Вызываем обновление переменных бланка!!!!
 if Flag or not ОтчGUID=РАБ.ПАРАМ_ОТЧ.ОтчGUID: ПрисвоитьТочность; Перерасчет(True); fi;
 Return False;
end;

Func ППП_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var n,nn:i;
var Field:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field)+"["+Str(AsInteger(Template.Frame))+"]";
 nn=GetGroupAccounts(Раб.Бюджет2005.МаскаСчетаФКР+"|"+Раб.Бюджет2005.МаскаСчетаКД+"|"+Раб.Бюджет2005.МаскаСчетаКИФД,Buf,1);
 n=Alternate("Выберите код ППП",Buf,-1,SearchInArray(Buf,GetVariableS(Field)),12);
 if n=0: ^Cur; fi;
 PutVariableS(Field,Buf[n]);
 Return Cur;
end;

Proc ОбщУсл_onExit(FieldName: String; Iter: Integer);
var Flag:L;
 Flag=РАБ.ПАРАМ_ОТЧ.Взять(FieldName,0);
 ОКПО=ОКПО; --Вызываем обновление перменных бланка!!!!
 if Flag or not ОтчGUID=РАБ.ПАРАМ_ОТЧ.ОтчGUID: ПрисвоитьТочность; Перерасчет(True); fi;
end;

Func Учреждение_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec:Record;
 Rec=OpenCardFile('Контрагент','Наше');
 if rec=nil: ^False; fi;
 ЗаполнитьРекв(Rec);
 ^False;
end;

Proc Восстан7_OnClick(Row: Integer; Col: Integer; Double: Logical);
 if AsString(S1.Cell(3,10,CellContents,"",False))="": Exit; fi;
 CopyArray(RГ7С210М1_,RГ7С210М1);
 S1.Cell(3,10,CellBevel,False);
 S1.Cell(3,10,CellBgColor,coTransparent);
 S1.Cell(3,10,CellBorder,"1,0,1,1");
 S1.Cell(3,10,CellContents,"",True);
end;

Proc Перенос7а_OnClick(Row: Integer; Col: Integer; Double: Logical);
 CopyArray(RГ7С210М1,RГ7С210М1_);
 CopyArray(RГ7аС210М1,RГ7С210М1);
 S1.Cell(3,10,CellBevel,True);
 S1.Cell(3,10,CellBgColor,asInteger(S1.Cell(3,12,CellBgColor,"")));
 S1.Cell(3,10,CellBorder,"1,1,2,2");
 S1.Cell(3,10,CellContents,"восстановить",True);
end;

Func КБК_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field,КБК_,КОСГУ_,tmp:S;
var Iter:I;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 tmp=GetVariableS(Field+"["+Str(Iter)+"]");
 if tmp="": tmp=hКР; fi;
 КБК_=SubStr(tmp,1,Length(tmp)-4);
 КОСГУ_=SubStr(tmp,Length(tmp)-2,3);
 tmp="ФКР.";
 КБК_=AnaElection(tmp+"*",False,False,tmp+КБК_);
 if not КБК_="":
    tmp=Раб.Бюджет2005.МаскаРасхКОСГУ;
    КОСГУ_=AnaElection(tmp,False,False,"КОСГУ."+КОСГУ_);
    if not КОСГУ_="":
       КОСГУ_=SubStr(КОСГУ_,Pos(".",КОСГУ_)+1,255);
       tmp=SubStr(КБК_,Pos(".",КБК_)+1,255)+"."+КОСГУ_;
       PutVariableS(Field+"["+Str(Iter)+"]",tmp);
       hКР=tmp;
       SГ1С210М1[Iter]=Раб.Бюджет.НаимКБК("КОСГУ2006",КОСГУ_);
    fi;
 fi;
 Return Cur;
end;

Func С210М1_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var FieldName:S;
var Iter:I;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 FieldName=AsString(Template.Field);
 if SГ3С210М1[Iter]="": Message("Нет данных для расшифровки",mtError); Template.Field="SГ3С210М1"; ^Cur; fi;
 if FieldName="RГ4С210М1":  FieldName="1_4";
   |FieldName="RГ5С210М1":  FieldName="1_5";
   |FieldName="RГ7С210М1":  FieldName="1_7";
   |FieldName="RГ7аС210М1": FieldName="1_7а";
   |FieldName="RГ9С210М1":  FieldName="1_9";
   |FieldName="RГ9аС210М1": FieldName="1_9а";
   |True: Message("Неизвестный идентификатор "+FieldName);
 fi;
 Детализация(SГ3С210М1[Iter],FieldName);
 Return Cur;
end;

Func ФИО_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec:Record;
var tmp,FieldName:S;
 Template.HideEditor(False);
 FieldName=AsString(Template.Field);
 Rec=OpenCardFile("Сотрудники");
 if Rec=NIL: ^Cur; fi;
 tmp=GetCardFieldS("Сотрудники",Rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",Rec,"ИНИЦИАЛЫ");
 PutVariableS(FieldName,tmp);
 Return Cur ;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_OnClick(Sender: String);
 Перерасчет(False);
end;

Proc btnНастр_OnClick(Sender: String);
 Настр(False);
 ОткрытьНастр(True);
end;

proc btnОчистить_OnClick(Sender: String);
  if EnqOkCancel('Все данные будут очищены. Вы уверены?',mtWarning)=cmOk: Очистить; fi;
end;

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

Proc btnЗакрыть_OnClick(Sender: String);
  Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 КонтрольВерсии;
 ОткрытьНастр(False);
 Раб.Настр_Печать.Cfg("",SelfCfg);
 if Учреждение="": ЗаполнитьРекв(nil); fi;
end;
--Обработчики событий шаблона -----
--


Конец