БЛАНКСШАБЛОНОМ "ф.0503182 Сведения о кассовом исполнении сметы доходов и расходов по приносящей доход деятельности";

ДХ_p1:N=[095];
ДХ_p2:N=[100];
РХ_p1:N=[095];
РХ_p2:N=[100];
ДФ_p1:N=[095];
ДФ_p2:N=[100];

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

var bln:S="ОТЧЕТЫ.БАЛАНС.191Н.0503137";

RГ3С010:N;
RГ4С010:N;
var RГ5С010:N=RГ4С010-RГ3С010;

М1:I;
SГ1С020М1[]:S;
SГ2С020М1[]:S; --=if($<100,"0","")+Str(10+$);
RГ3С020М1[]:N;
RГ4С020М1[]:N;
var RГ5С020М1[]:N=RГ4С020М1[$]-RГ3С020М1[$];
SГ6С020М1[]:S;

RГ3С200:N;
RГ4С200:N;
var RГ5С200:N=RГ4С200-RГ3С200;

М2:I;
SГ1С210М2[]:S;
SГ2С210М2[]:S; --=Str(200+$);
RГ3С210М2[]:N;
RГ4С210М2[]:N;
var RГ5С210М2[]:N=RГ4С210М2[$]-RГ3С210М2[$];
SГ6С210М2[]:S;

var RГ3С450:N=RГ3С010-RГ3С200;
var RГ4С450:N=RГ4С010-RГ4С200;

RГ3С500:N;
RГ4С500:N;
RГ5С500:N=RГ4С500-RГ3С500;

М3:I;
SГ1С510М3[]:S;
SГ2С510М3[]:S; --=Str(500+$);
RГ3С510М3[]:N;
RГ4С510М3[]:N;
var RГ5С510М3[]:N=RГ4С510М3[$]-RГ3С510М3[$];
SГ6С510М3[]:S;


var RГ66С020М1[]:N=RГ4С020М1[$]*100/RГ3С020М1[$];
var RГ66С210М2[]:N=RГ4С210М2[$]*100/RГ3С210М2[$];
var RГ66С510М3[]:N=RГ4С510М3[$]*100/RГ3С510М3[$];
var RГ66С500:N=RГ4С500*100/RГ3С500;
var RГ66С200:N=RГ4С200*100/RГ3С200;
var RГ66С010:N=RГ4С010*100/RГ3С010;

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

var Key[]:S;

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

Proc Очистить;
 ClearVariable(RГ3С010);
 ClearVariable(RГ4С010);
 ClearVariable(RГ5С010);
 ClearVariable(М1);
 ClearVariable(SГ1С020М1);
 ClearVariable(SГ2С020М1);
 ClearVariable(RГ3С020М1);
 ClearVariable(RГ4С020М1);
 ClearVariable(SГ6С020М1);
 ClearVariable(RГ3С200);
 ClearVariable(RГ4С200);
 ClearVariable(RГ5С200);
 ClearVariable(М2);
 ClearVariable(SГ1С210М2);
 ClearVariable(SГ2С210М2);
 ClearVariable(RГ3С210М2);
 ClearVariable(RГ4С210М2);
 ClearVariable(SГ6С210М2);
 ClearVariable(RГ3С500);
 ClearVariable(RГ4С500);
 ClearVariable(RГ5С500);
 ClearVariable(М3);
 ClearVariable(SГ1С510М3);
 ClearVariable(SГ2С510М3);
 ClearVariable(RГ3С510М3);
 ClearVariable(RГ4С510М3);
 ClearVariable(SГ6С510М3);
end;

Proc Расчет_ (sVal3:S; sVal4:S; sVal5:S; sValМ:S; sVal1М:S; sVal3М:S; sVal4М:S; sVal5М:S; tVal3:S; tVal4:S; tVal5:S; tValМ:S; tVal1М:S; tVal3М:S; tVal4М:S; p:i);
var nn,n,z:I;
var v1:S;
var v3,v4:N;
var ТипСч,Value:S;
 if sValМ="М1": ТипСч="КД";
   |sValМ="М2": ТипСч="КР";
   |sValМ="М3": ТипСч="КИФД";
 fi;
 nn=GetVariableI(bln+"."+sValМ);
 ShowProgress(nn*3,"Расчет...");
 ProgressPos(nn*p);
 PutVariableN(tVal3,GetVariableN(bln+"."+sVal3));
 PutVariableN(tVal4,GetVariableN(bln+"."+sVal4));
 PutVariableN(tVal5,GetVariableN(bln+"."+sVal5)*(-1));
 for n=1..nn do
  ProgressPos(nn*p+n);
  v1=GetVariableS(bln+"."+sVal1М+"["+Str(n)+"]");
  if not v1="":
     v1=GetVariableS(bln+"."+sVal1М+"["+Str(n)+"]");
     if ТипСч="КД":   v1=Раб.Бюджет2005.ВзятьКодКБК(v1,ТипСч,"ЭЛ",True)+".0000.000";
       |ТипСч="КР":   v1=Раб.Бюджет2005.ВзятьКодКБК(v1,ТипСч,"ППП",False)+".0000.0000000.000."+Раб.Бюджет2005.ВзятьКодКБК(v1,ТипСч,"КОСГУ",False);
       |ТипСч="КИФД": v1=Раб.Бюджет2005.ВзятьКодКБК(v1,ТипСч,"ППП",False)+".00.00.00.00.00.0000."+Раб.Бюджет2005.ВзятьКодКБК(v1,ТипСч,"КОСГУ",False);
     fi;
     v3=GetVariableN(bln+"."+sVal3М+"["+Str(n)+"]");
     v4=GetVariableN(bln+"."+sVal4М+"["+Str(n)+"]");
     z=SearchInArray(Key,v1,True);
     if z=-1:
        z=InsertInArraySort(Key,v1);
        if tValМ="М1": InsertFrame(М1,z);
          |tValМ="М2": InsertFrame(М2,z);
          |tValМ="М3": InsertFrame(М3,z);
        fi;
        PutVariableS(tVal1М+"["+Str(z)+"]",v1);
        PutVariableN(tVal3М+"["+Str(z)+"]",v3);
        PutVariableN(tVal4М+"["+Str(z)+"]",v4);
       else
        v3=v3+GetVariableN(tVal3М+"["+Str(z)+"]");
        v4=v4+GetVariableN(tVal4М+"["+Str(z)+"]");
        PutVariableN(tVal3М+"["+Str(z)+"]",v3);
        PutVariableN(tVal4М+"["+Str(z)+"]",v4);
     fi;
  fi;
 od;
 if ТипСч="КД":
    n=1;
    While n<=М1 do
     if not (Round(RГ66С020М1[n],1)<ДХ_p1 or Round(RГ66С020М1[n],1)>ДХ_p2):
        DeleteFrame(М1,n);
       else
        n=n+1;
     fi;
    od;
 fi;
 if ТипСч="КР":
    n=1;
    While n<=М2 do
     if not (Round(RГ66С210М2[n],1)<РХ_p1 or Round(RГ66С210М2[n],1)>РХ_p2):
        DeleteFrame(М2,n);
       else
        n=n+1;
     fi;
    od;
 fi;
 if ТипСч="КИФД":
    n=1;
    While n<=М3 do
     if not (Round(RГ66С510М3[n],1)<ДФ_p1 or Round(RГ66С510М3[n],1)>ДФ_p2):
        DeleteFrame(М3,n);
       else
        n=n+1;
     fi;
    od;
 fi;
 ProgressPos(nn*p+1);
end;

Proc Расчет;
var z:i;
var tmp:S;
 Очистить;
 Try
  ClearVariable(Key);
  Расчет_("RГ4С010","RГ8С010","RГ9С010","М1","SГ3С020М1","RГ4С020М1","RГ8С020М1","RГ9С020М1","RГ3С010","RГ4С010","RГ5С010","М1","SГ1С020М1","RГ3С020М1","RГ4С020М1",0);
  ClearVariable(Key);
  Расчет_("RГ4С200","RГ8С200","RГ9С200","М2","SГ3С210М2","RГ4С210М2","RГ8С210М2","RГ9С210М2","RГ3С200","RГ4С200","RГ5С200","М2","SГ1С210М2","RГ3С210М2","RГ4С210М2",1);
  ClearVariable(Key);
  Расчет_("RГ4С500","RГ8С500","RГ9С500","М3","SГ3С520М3","RГ4С520М3","RГ8С520М3","RГ9С520М3","RГ3С500","RГ4С500","RГ5С500","М3","SГ1С510М3","RГ3С510М3","RГ4С510М3",2);
 Finally
  CloseProgress;
 end;
 Message("Расчет завершен");
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func РХ_p_OnVerify(FieldName: String; Iter: Integer; Value: N):L;
 if Value<0: Message("Значение должно быть больше 0",mtError); ^False; fi;
 Return True;
end;

Proc РХ_p_OnExit(FieldName: String; Iter: Integer);
 Очистить;
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,"ИНИЦИАЛЫ");
 if FieldName="ФИОРук": ФИОРук=tmp;
   |FieldName="ФИОБух": ФИОБух=tmp;
   |FieldName="ФИОРукФЭО": ФИОРукФЭО=tmp;
 fi;
 Return Cur ;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_OnClick(Sender: String);
 if not BlankExist(bln): Message("Бланк "+bln+" не найден",mtError); Exit; fi;
 Расчет;
 ПрисвоитьТочность;
end;

Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn("","","ТББ.ОТЧЕТЫ.БАЛАНС.128Н.0503182.000.cfg","",1);
end;

Proc btnОчистить_OnClick(Sender: String);
 if EnqOkCancel("Форма будет очищена. Продолжить ?",mtWarning)=cmOk: Очистить; fi;
end;

Proc btnФ0503137_OnClick(Sender: String);
 OpenBlank(bln,False);
end;

Proc btnЗакрыть_OnClick(Sender: String);
  Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc AfterOpen(Destroy: Logical);
 ПрисвоитьТочность;
end;

Proc OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("","ТББ.ОТЧЕТЫ.БАЛАНС.128Н.0503182.000.cfg");
end;
--Обработчики событий шаблона -----
--


КОНЕЦ
