-- Шаблон создан мастером бланков
-- 31.07.2015 13:42:31
--
БланкСШаблоном "Заявление на выдачу аванса ф.30 (6002404)", Редактор РПО_ЗАЯВЛ_АВАНС;

var Проп:S=Slo(SumOfArray(Позиции[].СумРуб));

--ЗванРук:S;

BufФИОРук []:S;
BufЗванРук[]:S;

var Ф30_КБК1    :S;
var Ф30_НА1     :S;
var Ф30_СумРуб1 :I;
var Ф30_СумКоп1 :S;

var Упр_Ф30     :I;
var Ф30_КБК[]   :S;
var Ф30_НА[]    :S;
var Ф30_СумРуб[]:I;
var Ф30_СумКоп[]:S;

var Ф30_КБК2    :S;
var Ф30_НА2     :S;
var Ф30_СумРуб2 :I;
var Ф30_СумКоп2 :S;

var МОЛ_:S=ДолжнМОЛ+"                                          "+ФИОМОЛ;

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

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

Proc Расчет;
var Iter,z,zz:I;
var Key,КОСГУ_,ВКЛ_,tmp:S;
 ClearVariable(Buf);
 ClearVariable(BufN);
 ClearVariable(Ф30_КБК1);
 ClearVariable(Ф30_НА1);
 ClearVariable(Ф30_СумРуб1);
 ClearVariable(Ф30_СумКоп1);
 ClearVariable(Упр_Ф30);
 ClearVariable(Ф30_КБК);
 ClearVariable(Ф30_НА);
 ClearVariable(Ф30_СумРуб);
 ClearVariable(Ф30_СумКоп);
 ClearVariable(Ф30_КБК2);
 ClearVariable(Ф30_НА2);
 ClearVariable(Ф30_СумРуб2);
 ClearVariable(Ф30_СумКоп2);
 for Iter=1..Позиции do
  КОСГУ_=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Позиции[Iter].Призн," ","КОСГУ.*",""),7,255);
  if КОСГУ_="": КОСГУ_=" "; fi;
  ВКЛ_=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Позиции[Iter].Призн," ","ВКЛ.*",""),5,255);
  if ВКЛ_="": ВКЛ_=" "; fi;
  Key=Позиции[Iter].ВД+"#"+Позиции[Iter].КБК+"#"+КОСГУ_+"#"+ВКЛ_+"#"+if(Позиции[Iter].Назнач="",НазначАванс,Позиции[Iter].Назнач);
  z=SearchInArray(Buf,Key,True);
  if z=-1:
     z=InsertInArraySort(Buf,Key);
     InsertInArray(BufN,z,Позиции[Iter].СумРуб);
    else
     BufN[z]=BufN[z]+Позиции[Iter].СумРуб;
  fi;
 od;
 zz=LengthOfArray(Buf);
 --
 z=1;
 КОСГУ_=Trim(ExtractWord(3,Buf[z],"#"));
 ВКЛ_=Trim(ExtractWord(4,Buf[z],"#"));
 Ф30_КБК1=Раб.Формат.ReplaceSubStr(ExtractWord(2,Buf[z],"#"),"."," ");
 if Length(КОСГУ_)>3:
    Ф30_КБК1=SubStr(Ф30_КБК1,1,21)+КОСГУ_;
 fi;
 if not ВКЛ_="":
    Ф30_КБК1=Ф30_КБК1+" ("+ВКЛ_+")";
 fi;
 Ф30_НА1=ExtractWord(5,Buf[z],"#");
 Ф30_СумРуб1=Int(Trunc(BufN[z]));
 Ф30_СумКоп1=Format("%.2D",Int((BufN[z]-Ф30_СумРуб1)*100));
 --
 if zz>1:
    z=2;
    КОСГУ_=Trim(ExtractWord(3,Buf[z],"#"));
    ВКЛ_=Trim(ExtractWord(4,Buf[z],"#"));
    Ф30_КБК2=Раб.Формат.ReplaceSubStr(ExtractWord(2,Buf[z],"#"),"."," ");
    if Length(КОСГУ_)>3:
       Ф30_КБК2=SubStr(Ф30_КБК2,1,21)+КОСГУ_;
    fi;
    if not ВКЛ_="":
       Ф30_КБК2=Ф30_КБК2+" ("+ВКЛ_+")";
    fi;
    z=zz;
    Ф30_НА2=ExtractWord(5,Buf[z],"#");
    Ф30_СумРуб2=Int(Trunc(BufN[z]));
    Ф30_СумКоп2=Format("%.2D",Int((BufN[z]-Ф30_СумРуб2)*100));
 fi;
 --
 for z=2..zz-1 do
  InsertFrame(Упр_Ф30,Упр_Ф30+1);
  КОСГУ_=Trim(ExtractWord(3,Buf[z+1],"#"));
  ВКЛ_=Trim(ExtractWord(4,Buf[z+1],"#"));
  Ф30_КБК[Упр_Ф30]=Раб.Формат.ReplaceSubStr(ExtractWord(2,Buf[z+1],"#"),"."," ");
  if Length(КОСГУ_)>3:
     Ф30_КБК[Упр_Ф30]=SubStr(Ф30_КБК[Упр_Ф30],1,21)+КОСГУ_;
  fi;
  if not ВКЛ_="":
     Ф30_КБК[Упр_Ф30]=Ф30_КБК[Упр_Ф30]+" ("+ВКЛ_+")";
  fi;
  Ф30_НА[Упр_Ф30]=ExtractWord(5,Buf[z],"#");
  Ф30_СумРуб[Упр_Ф30]=Int(Trunc(BufN[z]));
  Ф30_СумКоп[Упр_Ф30]=Format("%.2D",Int((BufN[z]-Ф30_СумРуб[Упр_Ф30])*100));
 od;
end;

Proc ЗванРук_OnExit(FieldName: String; Iter: Integer);
var z:i;
 z=SearchInArray(BufФИОРук,ФИОРук,True);
 if z=-1:
    z=InsertInArraySort(BufФИОРук,ФИОРук);
    InsertInArray(BufЗванРук,z,ЗванРук);
   else
    BufЗванРук[z]=ЗванРук;
 fi;
end;

Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn("",PlanVar("ГЛАВА")+"\Настройки\",SelfCfg,"",1);
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;

Proc OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg(PlanVar("ГЛАВА")+"\Настройки\",SelfCfg);
end;

Proc OnRead;
var z:i;
 z=SearchInArray(BufФИОРук,ФИОРук,True);
 if z=-1:
    ЗванРук="";
   else
    ЗванРук=BufЗванРук[z];
 fi;
 Расчет;
end;



Конец
