БЛАНКСШАБЛОНОМ "Главная книга";

btnРасчет :Object;
btnПечать :Object;
btnExcel  :Object;
btnНастр  :Object;
bvlРежим  :Object;
rbУч	  :Object;
rbФО	  :Object;
btnЗакрыть:Object;
cbНомЖО   :Object;
cbСвертка :Object;
cb500	  :Object;

2-- Переменные и массивы бланка
Режим:I;

ДД:D=[ToDay];
MM:Integer=[Mon(Today)];  -- номер месяца
var MMTxt:String=Месяц(MM); -- название месяца
var YYYY:Integer=[Year(Today)]; -- год
var ДН:Date=if(Режим=1,ДД,Dat(1,MM,YYYY)); -- начало периода
var ДК:Date=if(Режим=1,ДД+1,if(MM<12,Dat(1,MM+1,YYYY),Dat(1,1,YYYY+1))); -- конец периода
var ДК_:D=ДК-1;

ОКЕИ:S=["383"];
ЕдИзм:S;
ЕдИзм_:S;
Вал:S;

var пп[]:i=$;
СчГруппа[]:S;
СчПодробно[]:S;
ОстНачГодД[]:N;
ОстНачГодК[]:N;
ОстНачМесД[]:N;
ОстНачМесК[]:N;
ОстКонМесД[]:N;
ОстКонМесК[]:N;
ОборотД[]:N;
ОборотК[]:N;
ОборотНачГодД[]:N;
ОборотНачГодК[]:N;
ИОстНачГодД:N; 
ИОстНачГодК:N; 
ИОстНачМесД:N; 
ИОстНачМесК:N; 
ИОборотД:N; 
ИОборотК:N; 
ИОстКонМесД:N; 
ИОстКонМесК:N; 
ИОборотНачГодД:N; 
ИОборотНачГодК:N;
НомЖО[]:S;
Итог[]:L;
Ключ[]:S;

-- шапка и подвал
Учреждение:String;
Подр:String;
НаимУчред:String;
НаимБюдж:String=["Федеральный бюджет"];

ГлБухгалтер:String;
Исполнитель:String;
ДолжностьИсп:String;

СекцСтрок:Section;
Строки:Integer;

var Buf[]:S;

var НастрПоУмолч:S="По умолчанию";
var НастрЗакр:S="Закрыть";
var НастрGUID:S;
var УпрН:L;

var УслСч_Уч:S=["~(*.202.??.*|*.211.??.*|*.212.??.*|*.308.??.*|*.309.??.*|*.402.??.*|*.501.?1.*|*.501.?9.*|*.503.?1.*|*.503.?9.*)"];
var УслСч_ФО:S=["*.202.??.*|*.211.??.*|*.212.??.*|*.308.??.*|*.309.??.*|*.402.??.*|*.501.?1.*|*.501.?9.*|*.503.?1.*|*.503.?9.*"];
var УслАн_Уч:S;
var УслАн_ФО:S;

УслАн:S;
УслСч:S;

var Усл:S;

var Упр_Уч:L=Режим=0;
var Упр_ФО:L=not Режим=0;

FlagСвертка:L;
Flag500:L;

fНомЖО:L;

НастрЖО:Record;
НастрЖО_:S;

var ЖО_Ключ[]:S;
var ЖО_Сч[]:S;
var ЖО_Ном[]:S;

S1: Section;
S2: Section;
S3: Section;

var selfBln:S="ОТЧЕТЫ.РЕГИСТРЫ.ГЛАВКНИГА";
var selfCfg1:S="ТББ.ОТЧЕТЫ.РЕГИСТРЫ.ГЛАВКНИГА.000.cfg";
var selfCfg2:S="ТББ.ОТЧЕТЫ.РЕГИСТРЫ.ГЛАВКНИГА.001.cfg";

2-- Процедуры и функции бланка
Proc Настр(aСохр:L);
var Flag:L;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать(SelfBln,0,0,"",НастрGUID):
    Раб.Настр.Добавить("УслСч_Уч","S");
    Раб.Настр.Добавить("УслСч_ФО","S");
    Раб.Настр.Добавить("УслАн_Уч","S");
    Раб.Настр.Добавить("УслАн_ФО","S");
    if aСохр:
       Раб.Настр.Сохранить;
      else
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
	  Flag=ExecuteFuncL("НастрПоУмолч_OnEnter","",1);
       fi;
    fi;
 fi;
end;

Proc ОткрНастр(Flag:L);
 УпрН=Flag;
 btnРасчет.Visible=not Flag;
 btnПечать.Visible=not Flag;
 btnExcel.Visible=not Flag;
 btnНастр.Visible=not Flag;
 bvlРежим.Visible=not Flag;
 rbУч.Visible=not Flag;
 rbФО.Visible=not Flag;
 btnЗакрыть.Visible=not Flag;
 cbНомЖО.Visible=not Flag;
 cbСвертка.Visible=not Flag;
 cb500.Visible=not Flag;
end;

Proc Оформление;
var Obj:Object;
var s:I;
 for s=1..3 do
  if FindObject("S"+Str(S),Obj):
     if FlagСвертка:
	Obj.Column(2,ColWidth,150);
	Obj.Column(3,ColWidth,190);
       else
	Obj.Column(2,ColWidth,200);
	Obj.Column(3,ColWidth,530);
     fi;
  fi;
 od;
 --

end;

Proc ОчисткаДанных;
  ClearVariable(Усл);

  ClearVariable(Строки);
  ClearVariable(Ключ);
  ClearVariable(СчГруппа);
  ClearVariable(СчПодробно);
  ClearVariable(ОстНачГодД);
  ClearVariable(ОстНачГодК);
  ClearVariable(ОстНачМесД);
  ClearVariable(ОстНачМесК);
  ClearVariable(ОборотД);
  ClearVariable(ОборотК);
  ClearVariable(ОборотНачГодД);
  ClearVariable(ОборотНачГодК);
  ClearVariable(ОстКонМесД);
  ClearVariable(ОстКонМесК);
  ClearVariable(НомЖО);
  ClearVariable(Итог);

  ClearVariable(ИОстНачГодД);
  ClearVariable(ИОстНачГодК);
  ClearVariable(ИОстНачМесД);
  ClearVariable(ИОстНачМесК);
  ClearVariable(ИОборотД);
  ClearVariable(ИОборотК);
  ClearVariable(ИОстКонМесД);
  ClearVariable(ИОстКонМесК);
  ClearVariable(ИОборотНачГодД);
  ClearVariable(ИОборотНачГодК);
end;

Func ПроверитьУсловия(СчУсл1:S; АнУсл1:S; СчУсл2:S; АнУсл2:S):L;
var tmp:S;
var z:i;
var Flag:L;
 if not СчУсл1="" and not СчУсл2="":
    ClearVariable(Buf);
    Flag=True;
    if Length(СчУсл1)+Length(СчУсл2)>254:
       z=0;
       for Account tmp=СчУсл1,Sort do
	z=z+1;
	Buf[z]=tmp;
       od;
       for Account tmp=СчУсл2,Sort do
	if not SearchInArray(Buf,tmp,True)=-1: Flag=False; Break; fi;
       od;
      else
       for Account tmp=СчУсл1+"&"+СчУсл2 do
	Flag=False;
	Break;
       od;
    fi;
    if Flag: ^True; fi;
    if АнУсл1="" or АнУсл2="" and not Flag: ^False; fi;
 fi;
 if not АнУсл1="" and not АнУсл2="":
    ClearVariable(Buf);
    if Length(АнУсл1)+Length(АнУсл2)>252:
       z=0;
       for Sign tmp=АнУсл1,Sort do
	z=z+1;
	Buf[z]=tmp;
       od;
       for Sign tmp=АнУсл2,Sort do
	if not SearchInArray(Buf,tmp,True)=-1: ^False; fi;
       od;
      else
       for Sign tmp=АнУсл1+"&"+АнУсл2 do
	^False;
       od;
    fi;
 fi;
 ^True;
end;

Proc ЗаполнитьНомЖО;
var OWA,OA,n,nr,Iter,z:I;
var СчУсл1,СчУсл2:S;
var АнУсл1,АнУсл2:S;
var Сч,ЖО:S;
 ClearVariable(ЖО_Ключ);
 ClearVariable(ЖО_Сч);
 ClearVariable(ЖО_Ном);
 АнУсл1=if(УслАн="","","("+УслАн+")");
 OWA=OpenWorkArea("РПО_ЖО","","UKey="+RecordToString(НастрЖО));
 Try
  OA=OpenArray(OWA,1,"ПОЗИЦИЯ","ВД;КБК;СЧ");
  nr=Records(OA);
  ShowProgress(Строки+nr,"Заполнение номера журнала...");
  for n=1..nr do
   ProgressPos(n);
   АнУсл2=GetFieldS(OA,n,"АнУслДоп");
   АнУсл2=if(АнУсл2="","","("+АнУсл2+")");
   АнУсл2=Раб.Бюджет2005.Объединить(GetFieldS(OA,n,"Показатель"),АнУсл2,"&");
   АнУсл2=if(АнУсл2="","","("+АнУсл2+")");
   if ПроверитьУсловия("",АнУсл1,"",АнУсл2):
      ЖО=GetFieldS(OA,n,"НОМ");
      СчУсл2=if(GetFieldS(OA,n,"КБК")="","*",GetFieldS(OA,n,"КБК"))+"."+GetFieldS(OA,n,"ВД")+".???.??.*&("+GetFieldS(OA,n,"Сч")+")";
      if not Pos("-",СчУсл2)=0 or not Pos("+",СчУсл2)=0 or not not Pos("/",СчУсл2)=0:
	 СчУсл2=Раб.Формат.ReplaceSubStr(СчУсл2,"-","");
	 СчУсл2=Раб.Формат.ReplaceSubStr(СчУсл2,"+","");
	 СчУсл2=Раб.Формат.ReplaceSubStr(СчУсл2,"/","&");
      fi;
      for Account Сч=СчУсл2,Sort do
       if FlagСвертка: Сч=Раб.Бюджет2005.ВзятьКодСчета(Сч,"","СЧ9",False); fi;
       z=SearchInArray(ЖО_Ключ,Сч+"#"+ЖО,True);
       if z=-1:
	  z=InsertInArraySort(ЖО_Ключ,Сч+"#"+ЖО);
	  InsertInArray(ЖО_Сч,z,Сч);
	  InsertInArray(ЖО_Ном,z,ЖО);
       fi;
      od;
   fi;
  od;
  for Iter=1..Строки do
   ProgressPos(Строки+Iter);
   if not СчПодробно[Iter]="":
      z=SearchInArray(ЖО_Сч,СчПодробно[Iter],True);
      While not z=-1 do
       if Length(НомЖО[Iter])+Length(ЖО_Ном[z])>255: Break; fi;
       НомЖО[Iter]=Раб.Бюджет2005.Объединить(НомЖО[Iter],ЖО_Ном[z],", ");
       z=SearchInArray(ЖО_Ключ,СчПодробно[Iter],True,z+1);
      od;
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
end;

Proc ДобавитьСтр(aКлюч:S; aСчГруппа:S; aСчПодробно:S; aОстНачГодД:N; aОстНачГодК:N; aОстНачМесД:N; aОстНачМесК:N; aОборотД:N; aОборотК:N; aОборотНачГодД:N; aОборотНачГодК:N; aОстКонМесД:N; aОстКонМесК:N);
var Iter:I;
 Iter=SearchInArray(Ключ,aКлюч,True);
 if Iter=-1:
    Iter=InsertInArraySort(Ключ,aКлюч);
    InsertFrame(Строки,Iter);
    СчГруппа[Iter]=aСчГруппа;
    СчПодробно[Iter]=aСчПодробно;
    Итог[Iter]=not (aСчГруппа="");
 fi;
 ОстНачГодД[Iter]=ОстНачГодД[Iter]+aОстНачГодД;
 ОстНачГодК[Iter]=ОстНачГодК[Iter]+aОстНачГодК;
 ОстНачМесД[Iter]=ОстНачМесД[Iter]+aОстНачМесД;
 ОстНачМесК[Iter]=ОстНачМесК[Iter]+aОстНачМесК;
 ОборотД[Iter]=ОборотД[Iter]+aОборотД;
 ОборотК[Iter]=ОборотК[Iter]+aОборотК;
 ОборотНачГодД[Iter]=ОборотНачГодД[Iter]+aОборотНачГодД;
 ОборотНачГодК[Iter]=ОборотНачГодК[Iter]+aОборотНачГодК;
 ОстКонМесД[Iter]=ОстКонМесД[Iter]+aОстКонМесД;
 ОстКонМесК[Iter]=ОстКонМесК[Iter]+aОстКонМесК;
end;

Proc Расчет;
var Сч,ТипСч,УслСч_,УслАн_,УслВал_,ВалПок_:string;
var Rep:report;
var pp,p,Iter:integer;
var Key,Сч_:S;
var ОстНачМесД_,ОстНачМесК_,ОборотД_,ОборотК_,ОстКонМесД_,ОстКонМесК_,ОстНачГодД_,ОстНачГодК_,ОборотНачГодД_,ОборотНачГодК_:N;
var f500:L;
var res:N;
 ОчисткаДанных;
 --
 УслСч_=if(Режим=0,УслСч_Уч,УслСч_ФО);
 УслСч_=if(not УслСч_="" and not УслСч="","("+УслСч_+")",УслСч_);
 УслСч_=Раб.Бюджет2005.Объединить(УслСч_,if(not УслСч_="" and not УслСч="","("+УслСч+")",УслСч),"&");
 if flag500:
    if УслСч_="": УслСч_="~*.?.5??.??.*"; else УслСч_="("+УслСч_+")&~*.?.5??.??.*"; fi;
 fi;
 --
 УслАн_=if(Режим=0,УслАн_Уч,УслАн_ФО);
 УслАн_=if(not УслАн_="" and not УслАн="","("+УслАн_+")",УслАн_);
 УслАн_=Раб.Бюджет2005.Объединить(УслАн_,if(not УслАн_="" and not УслАн="","("+УслАн+")",УслАн),"&");
 --
 УслВал_=if(Вал="","","'"+Вал);
 ВалПок_=if(Вал="" or Вал=BaseCurrency,"","ВАЛ");
 --
 Усл=УслСч_+УслВал_+" {"+УслАн_+"} ,"+DateToString(ДН)+", "+DateToString(ДК);
 --
 Rep=RepOpen(PlanVar('STD_RPO')+'\Общие\Отчеты\Ф0504072.lst|Расчет'+if(Вал="",""," ("+ВАЛ+")"),УслСч_,УслАн_,ДН,ДК);
 try
   pp=RepRowsCount(Rep);
   ShowProgress(pp,'Расчет...');
   try
     while RepNext(Rep) do
      p=p+1;
      ProgressPos(p);
      Сч=RepIdent(Rep);
      ТипСч=Раб.Бюджет2005.ТипКБКСчета(Сч);
      f500=Match(Сч,"*.?.5??.??.*");
      ОстНачГодД_=Sep_Deb_Sal(Сч+УслВал_+"{"+УслАн+"}",Dat(1,1,Year(ДН)),'',Вал);
      ОстНачГодК_=Sep_Cre_Sal(Сч+УслВал_+"{"+УслАн+"}",Dat(1,1,Year(ДН)),'',Вал);
      ОстНачМесД_=RepSaldoS(Rep,repDeb,ВалПок_);
      ОстНачМесК_=RepSaldoS(Rep,repCre,ВалПок_);
      ОборотД_=RepTurn(Rep,repDeb,ВалПок_);
      ОборотК_=RepTurn(Rep,repCre,ВалПок_);
      ОборотНачГодД_= Turn('+'+Сч+УслВал_+"{"+УслАн+"}",Dat(1,1,Year(ДН)),ДК,Вал);
      ОборотНачГодК_=-Turn('-'+Сч+УслВал_+"{"+УслАн+"}",Dat(1,1,Year(ДН)),ДК,Вал);
      ОстКонМесД_=RepSaldoF(Rep,repDeb,ВалПок_);
      ОстКонМесК_=RepSaldoF(Rep,repCre,ВалПок_);
      if f500:
	 ОстНачМесД_=ОстНачМесД_-ОстНачГодД_;
	 ОстНачМесК_=ОстНачМесК_-ОстНачГодК_;
	 ОстКонМесД_=ОстКонМесД_-ОстНачГодД_;
	 ОстКонМесК_=ОстКонМесК_-ОстНачГодК_;
	 ОстНачГодД_=0;
	 ОстНачГодК_=0;
      fi;
      if FlagСвертка:
	 Key=if(ТипСч="",Сч,Раб.Бюджет2005.ВзятьКодСчета(Сч,ТипСч,'СЧ9',false));
	 Сч_=Key;
	else
	 Key=if(ТипСч="",Сч,Раб.Бюджет2005.ВзятьКодСчета(Сч,ТипСч,'СЧ9',false)+"#"+Раб.Бюджет2005.ВзятьКодСчета(Сч,ТипСч,'БК',false));
	 Сч_=Сч;
      fi;
      ДобавитьСтр(Key,"",Сч_,ОстНачГодД_,ОстНачГодК_,ОстНачМесД_,ОстНачМесК_,ОборотД_,ОборотК_,ОборотНачГодД_,ОборотНачГодК_,ОстКонМесД_,ОстКонМесК_);
      --
      if not ТипСч="":
	 --без косгу
	 if FlagСвертка:
	    Key=Раб.Бюджет2005.ВзятьКодСчета(Сч,ТипСч,'СЧ6',false);
	    ДобавитьСтр(Key,Key,"",ОстНачГодД_,ОстНачГодК_,ОстНачМесД_,ОстНачМесК_,ОборотД_,ОборотК_,ОборотНачГодД_,ОборотНачГодК_,ОстКонМесД_,ОстКонМесК_);
	 fi;
	 --короткий счета
	 if FlagСвертка:
	    Key=Раб.Бюджет2005.ВзятьКодСчета(Сч,ТипСч,'СЧ4',false);
	    ДобавитьСтр(Key,Key,"",ОстНачГодД_,ОстНачГодК_,ОстНачМесД_,ОстНачМесК_,ОборотД_,ОборотК_,ОборотНачГодД_,ОборотНачГодК_,ОстКонМесД_,ОстКонМесК_);
	   else
	    Key=Раб.Бюджет2005.ВзятьКодСчета(Сч,ТипСч,'СЧ9',false);
	    ДобавитьСтр(Key,Key,"",ОстНачГодД_,ОстНачГодК_,ОстНачМесД_,ОстНачМесК_,ОборотД_,ОборотК_,ОборотНачГодД_,ОборотНачГодК_,ОстКонМесД_,ОстКонМесК_);
	    --
	    Key=Раб.Бюджет2005.ВзятьКодСчета(Сч,ТипСч,'СЧ6',false);
	    ДобавитьСтр(Key,Key,"",ОстНачГодД_,ОстНачГодК_,ОстНачМесД_,ОстНачМесК_,ОборотД_,ОборотК_,ОборотНачГодД_,ОборотНачГодК_,ОстКонМесД_,ОстКонМесК_);
	    --
	    Key=Раб.Бюджет2005.ВзятьКодСчета(Сч,ТипСч,'СЧ4',false);
	    ДобавитьСтр(Key,Key,"",ОстНачГодД_,ОстНачГодК_,ОстНачМесД_,ОстНачМесК_,ОборотД_,ОборотК_,ОборотНачГодД_,ОборотНачГодК_,ОстКонМесД_,ОстКонМесК_);
	 fi;
      fi;
     od;
     for Iter=1 to Строки do
      Res=ОстНачГодД[Iter]-ОстНачГодК[Iter];
      ОстНачГодД[Iter]=if(Res<>0.00, Deb(Res), ОстНачГодД[Iter]);
      ОстНачГодК[Iter]=if(Res<>0.00, Cre(Res), ОстНачГодК[Iter]);
      Res=ОстНачМесД[Iter]-ОстНачМесК[Iter];
      ОстНачМесД[Iter]=if(Res<>0.00, Deb(Res), ОстНачМесД[Iter]);
      ОстНачМесК[Iter]=if(Res<>0.00, Cre(Res), ОстНачМесК[Iter]);
      Res=ОстКонМесД[Iter]-ОстКонМесК[Iter];
      ОстКонМесД[Iter]=if(Res<>0.00, Deb(Res), ОстКонМесД[Iter]);
      ОстКонМесК[Iter]=if(Res<>0.00, Cre(Res), ОстКонМесК[Iter]);
      if not СчГруппа[Iter]="":
	 Res=ОборотД[Iter]-ОборотК[Iter];
	 ОборотД[Iter]=if(Res<>0.00, Deb(Res), ОборотД[Iter]);
	 ОборотК[Iter]=if(Res<>0.00, Cre(Res), ОборотК[Iter]);
	 Res=ОборотНачГодД[Iter]-ОборотНачГодК[Iter];
	 ОборотНачГодД[Iter]=if(Res<>0.00, Deb(Res), ОборотНачГодД[Iter]);
	 ОборотНачГодК[Iter]=if(Res<>0.00, Cre(Res), ОборотНачГодК[Iter]);
      fi;
      if СчГруппа[Iter]="":
	 ИОстНачГодД=ИОстНачГодД+ОстНачГодД[Iter];
	 ИОстНачГодК=ИОстНачГодК+ОстНачГодК[Iter];
	 ИОстНачМесД=ИОстНачМесД+ОстНачМесД[Iter];
	 ИОстНачМесК=ИОстНачМесК+ОстНачМесК[Iter];
	 ИОборотД=ИОборотД+ОборотД[Iter];
	 ИОборотК=ИОборотК+ОборотК[Iter];
	 ИОборотНачГодД=ИОборотНачГодД+ОборотНачГодД[Iter];
	 ИОборотНачГодК=ИОборотНачГодК+ОборотНачГодК[Iter];
	 ИОстКонМесД=ИОстКонМесД+ОстКонМесД[Iter];
	 ИОстКонМесК=ИОстКонМесК+ОстКонМесК[Iter];
      fi;
     od;
   finally
    CloseProgress;
   end;
 finally
  Rep=RepClose(Rep);
 end;
 if fНомЖО:
    ЗаполнитьНомЖО;
 fi;
 if Строки=0:
    Message('Нет данных для вывода, по текущему условию отбора',mtWarning);
    Template.Field="Усл";
   else
    Message('Расчет завершен');
 fi;
 btnExcel.Enabled = if(Строки>0: True, False);
end;

Proc Перерасчет;
 Message("Для вступления измений в силу необходимо выполнить расчет",mtInformation);
 Оформление;
 ExecuteProc("btnРасчет_OnClick","");
end;
2-- Обработчики полей шаблона
Func НастрПоУмолч_OnEnter(FieldName: String; Iter: Integer): logical;
 if FieldName="НастрПоУмолч":
    if EnqOkCancel("Восстановить настройку по умолчанию ?",mtWarning)=cmCancel: ^False; fi;
 fi;
 УслСч_Уч="~(*.202.??.*|*.211.??.*|*.212.??.*|*.308.??.*|*.309.??.*|*.402.??.*|*.501.?1.*|*.501.?9.*|*.503.?1.*|*.503.?9.*)";
 УслСч_ФО="*.202.??.*|*.211.??.*|*.212.??.*|*.308.??.*|*.309.??.*|*.402.??.*|*.501.?1.*|*.501.?9.*|*.503.?1.*|*.503.?9.*";
 УслАн_Уч="";
 УслАн_ФО="";
 if FieldName="НастрПоУмолч":
    Message("Стандарная настройка восстановлена");
 fi;
 Return False;
end;

Func НастрЗакр_OnEnter(FieldName: String; Iter: Integer): logical;
 Настр(True);
 ОткрНастр(False);
 ОчисткаДанных;
 Return False;
end;

Func ДД_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:D;
 Template.HideEditor(False);
 tmp=Calendar;
 if not tmp=1.1.100:
    ДД=tmp;
    ОчисткаДанных;
 fi;
 Return Cur;
end;

Func MMTxt_OnEnter(FieldName: String; Iter: Integer): logical;
  var i:integer;
  ClearVariable(Buf);
  for i=1..12 do Buf[i]=Месяц(i); od;
  i=Alternate('Выбор месяца расчета',Buf,30,if(mm=0,Mon(Today)-1,mm),12);
  if I<>0: MM=i; if EnqOkCancel('Произвести расчет?')=cmOk: Расчет; fi; fi;
  ^false;
end;

Func YYYY_OnEnter(FieldName: String; Iter: Integer): logical;
  var i:integer;
  ClearVariable(Buf);
  for i=1..5 do Buf[i]=Str(Year(Today)+i-4); od;
  i=Alternate("Выбор года расчета",Buf,30,4,12);
  if i<>0: YYYY=Int(Buf[i]); if EnqOkCancel('Произвести расчет?')=cmOk: Расчет; fi; fi;
  ^false;
end;

Func Учреждение_OnEnter(FieldName:String; Iter:Integer) :Logical;
var REC :Record;
var RO, num :Integer;
var Value :String;
 REC=OpenCardFile('КОНТРАГЕНТ','НАШЕ');
 if REC<>NIL:
   Учреждение  = GetCardFieldS('КОНТРАГЕНТ', REC, 'ПОЛНИМЯ');
   ГлБухгалтер = GetCardFieldS('КОНТРАГЕНТ', REC, 'ФИОБУХ');
   Value="";
   RO=OpenWorkArea("БАНК_СЧЕТА", "", "КОНТРАГЕНТ="+RecordToString(REC)+" and УМОЛЧАНИЕ");
   Try
     num=Records(RO);
     if num=1:
       Value=Trim(GetFieldS(RO, 1, "РПО_НаимБюдж"));
       if Value<>"": Value=Trim(Value+" "+Trim(GetFieldS(RO, 1, "РПО_НаимБюдж2"))); fi;
       if Value="":
	 Try num=Int(Trim(GetFieldS(RO, 1, "РПО_КодБюдж"))); Except num=0; end;
	 if num>0 and num<8:
	   ClearVariable(Buf);
	   Buf[1]="Федеральный бюджет";
	   Buf[2]="бюджет субъекта Российской Федерации";
	   Buf[3]="местный бюджет";
	   Buf[4]="бюджет Пенсионного фонда Российской Федерации";
	   Buf[5]="бюджет Фонда обязательного медицинского страхования Российской Федерации";
	   Buf[6]="бюджет Фонда социального страхования Российской Федерации";
	   Buf[7]="бюджет территориального государственного внебюджетного фонда";
	   Value=Buf[num];
	 fi;
       fi;
     fi;
   Finally
     CloseWorkArea(RO);
   end;
   if Trim(Value)="": Value="Федеральный бюджет"; fi;
   НаимБюдж=Value;
 fi;
 ^False;
end;

Func Подр_OnEnter(FieldName:String; Iter:Integer): Logical;
var ANA :String;
 ANA=AnaElection('П.*');
 if ANA="": ^False; fi;
 Подр=Trim(Name_A(ANA));
 if Подр="": Подр=ANA; fi;
 ^False;
end;

Func Расшифр_onLookUp(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field,УслСч_,УслАн_,Rpt:S;
var Iter:I;
var ДН_,ДК_:D;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 if Field="ОстНачГодД" or Field="ОстНачГодК": ДН_=Dat(1,1,Year(ДН)); ДК_=ДК;
   |Field="ОстНачМесД" or Field="ОстНачМесК": ДН_=ДН; ДК_=ДК;
   |Field="ОборотД" or Field="ОборотК": ДН_=ДН; ДК_=ДК;
   |Field="ОборотНачГодД" or Field="ОборотНачГодК": ДН_=Dat(1,1,Year(ДН)); ДК_=ДК;
   |Field="ОстКонМесД" or Field="ОстКонМесК": ДН_=ДН; ДК_=ДК;
 fi;
 if FlagСвертка:
    if СчПодробно[Iter]="":
       if Match(СчГруппа[Iter],"?.???"): УслСч_=".??.???";
	 |Match(СчГруппа[Iter],"?.???.??"): УслСч_=".???";
	 |true: ^Cur;
       fi;
       УслСч_="*."+СчГруппа[Iter]+УслСч_;
      else
       УслСч_="*."+СчПодробно[Iter];
    fi;
    if not УслСч="": УслСч_="("+УслСч+")&"+УслСч_; fi;
   else
    if СчПодробно[Iter]="":
       if Match(СчГруппа[Iter],"?.???"): УслСч_=".??.???";
	 |Match(СчГруппа[Iter],"?.???.??"): УслСч_=".???";
	 |Match(СчГруппа[Iter],"?.???.??.???"): УслСч_="";
	 |true: ^Cur;
       fi;
       УслСч_="*."+СчГруппа[Iter]+УслСч_;
       if not УслСч="": УслСч_="("+УслСч+")&"+УслСч_; fi;
      else
       УслСч_=СчПодробно[Iter];
    fi;
 fi;
 УслАн_=if(Режим=0,УслАн_Уч,УслАн_ФО);
 УслАн_=if(not УслАн_="" and not УслАн="","("+УслАн_+")",УслАн_);
 УслАн_=Раб.Бюджет2005.Объединить(УслАн_,if(not УслАн_="" and not УслАн="","("+УслАн+")",УслАн),"&");
 Rpt='"'+PlanVar("Общие")+'\Отчеты\Ф0504072.lst"."Расшифр'+if(Вал="",""," ("+ВАЛ+")");
 Rpt=Rpt+'"';
 Report(Rpt,ДН_,ДК_,УслСч_,УслАн_);
 Return Cur;
end;

Func Сотрудник_OnLookUp(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
  var зап:Record;
  var сотр,должнисп:String;
  Template.HideEditor(false);
  зап=OpenCardFile('Сотрудники');
  if зап=nil: ^Cur; fi;
  сотр=GetCardFieldS('Сотрудники',зап,'ФАМИЛИЯ')+' '+GetCardFieldS('Сотрудники',зап,'ИНИЦИАЛЫ');
  должнисп=GetCardFieldS('Сотрудники',зап,'ДОЛЖНОСТЬ.ДОЛЖ');
  if AsString(Template.Field)='ГлБухгалтер': ГлБухгалтер=сотр;
    |AsString(Template.Field)='Исполнитель': Исполнитель=сотр; ДолжностьИсп=должнисп;
  fi;
  ^'';
end;

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

Proc УслАн_OnExit(FieldName: String; Iter: Integer);
 if FieldName="УслАн":
    ОчисткаДанных;
 fi;
end;

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

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

Proc УслСч_OnExit(FieldName: String; Iter: Integer);
 if FieldName="УслСч":
    ОчисткаДанных;
 fi;
end;

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

Func НаимБюдж_onLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var num :Integer;
 Template.HideEditor(False);
 ClearVariable(Buf);
 Buf[1]="Федеральный бюджет";
 Buf[2]="бюджет субъекта Российской Федерации";
 Buf[3]="местный бюджет";
 Buf[4]="бюджет Пенсионного фонда Российской Федерации";
 Buf[5]="бюджет Фонда обязательного медицинского страхования Российской Федерации";
 Buf[6]="бюджет Фонда социального страхования Российской Федерации";
 Buf[7]="бюджет территориального государственного внебюджетного фонда";
 num=Alternate("Выберите бюджет", Buf, -1, SearchInArray(Buf, НаимБюдж, False, 1), 12);
 if num=0: ^Cur; fi;
 НаимБюдж=Buf[num];
 ^Cur;
end;

Func ЕдИзм_OnEnter(FieldName: String; Iter: Integer): logical;
var i:i;
var Curr,BaseCurr:S;
 ClearVariable(Buf);
 BaseCurr=BaseCurrency;
 i=1;
 Buf[i]="Пересчет в базовую валюту ("+BaseCurr+")";
 for Currencies Curr="*" do
  i=i+1;
  Buf[i]=Curr+"  ("+Name_C(Curr)+")";
 od;
 i=Alternate("Выбор валюты",Buf,30,1,12);
 if i=0: ^False; fi;
 ЕдИзм_=if(not i=1,SubStr(Buf[i],Pos("	",Buf[i])+2,255),Buf[i]);
 if i=1: 
    Вал="";
    ЕдИзм=BaseCurr;
   else
    ЕдИзм=SubStr(Buf[i],1,Pos("  ",Buf[i])-1);
    Вал=ЕдИзм;
 fi;
 if ЕдИзм="РУБ": ОКЕИ="383"; else ОКЕИ=""; fi;
 ОчисткаДанных;
 Return False;
end;

Func НастрЖО_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=OpenCardFile("РПО_ЖО");
 if not Rec=nil:
    НастрЖО=Rec;
    НастрЖО_=GetCardFieldS("РПО_ЖО",Rec,"ИмяНастройки");
    ClearVariable(НомЖО);
 fi;
 Return False;
end;

Proc НастрЖО_OnExit(FieldName: String; Iter: Integer);
 НастрЖО=nil;
 НастрЖО_="";
end;

2-- Обработчики объектов
Proc btnРасчет_OnClick(Sender: String);
 if YYYY=0: Message("Задайте год расчета",mtError); Template.Field="YYYY"; Exit; fi;
 if fНомЖО:
    if НастрЖО=nil or НастрЖО_="": Message("Задайте имя настройки журналов операций",mtError); Template.Field="НастрЖО_"; Exit; fi;
    if not RecordExists("РПО_ЖО",НастрЖО): Message("Настройка журналов операций '"+НастрЖО_+"' не найдена",mtError); Template.Field="НастрЖО_"; Exit; fi;
 fi;
 Расчет;
 btnExcel.Enabled = if(Строки>0: True, False);
end;

Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn('','',if(FlagСвертка,selfcfg1,selfcfg2),'',1);
end;

Func TimeToHMSstring_adv(valTime:Integer; valSep:String) :String;
var ihh, imm, icc :Integer;
var shh, smm, scc :String;
 shh=''; smm=''; scc='';
 ihh=Int(Trunc(valTime/3600));
 imm=Int(Trunc((valTime-ihh*3600)/60));
 icc=valTime-ihh*3600-imm*60;
 shh=Format("%.2d", ihh);
 smm=Format("%.2d", imm);
 scc=Format("%.2d", icc);
 ^(shh+valSep+smm+valSep+scc);
end;

Proc УстановитьКолонтитулы(objSheet:AutoObject; flgRusExcel:Logical);
var xlsPage :AutoObject;
 xlsPage=AsAutoObject(objSheet.PageSetup);
 Try
   if flgRusExcel: xlsPage.RightFooter = '&"Arial,полужирный"&8Страница &С из &К'; else xlsPage.RightFooter = '&"Arial,bold"&8Страница &P из &N'; fi;
 Finally
   ClearVariable(xlsPage);
 end;
end;

Proc ВыгрузкаExcel;
var xlsApp, xlsBooks, xlsBook, xlsSheets, xlsSheet, xlsRng :AutoObject;
var начало, len, maxIterCount, kol, max_kol, offsetRow, Iter, IterCount, IterSave, ii :Integer;
var NoError, rusExcel, ExportWork :Logical;
var localTS, localDS, xlNameFile, xlNameFolder, ExcelVersion :String;
 len=Строки;
 if len<1 or (LengthOfArray(СчГруппа)<2 and Trim(СчГруппа[1])=""):
   Message("Нет данных для выгрузки.^MПредварительно сделайте расчет формы.", mtInformation);
   Exit;
 fi;
 if ChooseFolder(xlNameFolder, "Выберите папку для сохранения файла экспорта...")=cmOK:
   начало=Time;
   maxIterCount=200;
   xlNameFile="expГлавнаяКнига_"+Format("%.4d", Year(ToDay))+Format("%.2d", Mon(ToDay))+Format("%.2d", Day(ToDay))+"_"+TimeToHMSstring_adv(Time, "")+".xls";
   xlNameFile=xlNameFolder+xlNameFile;
   if ExistFile(xlNameFile): DeleteFile(xlNameFile); fi;
   NoError=True;
   if NoError:
     xlsApp=CreateAutoObject('Excel.Application');
     Try
       ExcelVersion=asString(xlsApp.Version);
       if Int(ExcelVersion)>=12 or ExcelVersion="12.0": xlNameFile=xlNameFile+"x"; fi;
       ShowProgress(0, "Подготовка...");
       Try
	 kol=0;
	 xlsApp.EnableEvents=False;   -- отключить события
	 xlsApp.AutomationSecurity=3; -- отключить макросы
	 --
	 rusExcel=РАБ.EXCEL.РусскийExcel(xlsApp);
	 localDS=asString(xlsApp.International[РАБ.EXCEL.xlDecimalSeparator]);
	 localTS=asString(xlsApp.International[РАБ.EXCEL.xlThousandsSeparator]);
	 --
	 xlsBooks=AsAutoObject(xlsApp.Workbooks); -- получить объект Workbooks
	 Try
	   xlsBook=AsAutoObject(xlsBooks.Add); -- добавить книгу
	   Try
	     Try
	       xlsSheets=AsAutoObject(xlsBook.Sheets);
	       Try
		 max_kol=asInteger(xlsSheets.Count);
		 if max_kol>kol:
		   kol=kol+1;
		   xlsSheet=AsAutoObject(xlsBook.Worksheets[kol]);
		 else
		   xlsSheet=AsAutoObject(xlsSheets.Add);
		 fi;
		 Try
		   xlsSheet.Name = "главная книга "+Chr(151)+" титул";
		   ShowProgress(15, "Формируем титул...");
		   -- Устанавливаем ширину колонок
		   offsetRow=0;
		   ProgressPos(1);
		   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 01, 30.0);
		   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 02, 36.0);
		   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 03, 02.0);
		   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 04, 30.0);
		   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 05, 02.0);
		   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 06, 15.0);
		   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 07, 15.0);
		   ProgressPos(2);
		   offsetRow=offsetRow+3;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "ГЛАВНАЯ КНИГА");
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow+1, 07);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 14, 0, True, True, False, 0, True);
		   ProgressPos(3);
		   offsetRow=offsetRow+3;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "КОДЫ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		   offsetRow=offsetRow+1;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "Форма по ОКУД");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "0504072");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Courier New", 10, 0, True, False, False, 0, True);
		   ProgressPos(4);
		   offsetRow=offsetRow+1;
		   if Режим>0:
		     if ДД>1.1.1800: РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "за "+DateToString(ДД)+" г."); fi;
		   else
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "за "+MMTxt+" "+Str(YYYY)+" г.");
		   fi;
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 5);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, True, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "Дата");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, if(Режим>0, DateToString(ДН), DateToString(ДК)));
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   ProgressPos(5);
		   offsetRow=offsetRow+1;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Учреждение:");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, Учреждение);
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 5);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, True, False, 0, True);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 5, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "по ОКПО");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight, 1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, " ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   ProgressPos(6);
		   offsetRow=offsetRow+1;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Структурное подразделение:");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, Подр);
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 5);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, True, False, 0, True);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 5, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, " ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight, 1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, " ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   ProgressPos(7);
		   offsetRow=offsetRow+1;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Наименование учредителя:");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, НаимУчред);
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 5);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, True, False, 0, True);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 5, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, " ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight, 1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, " ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   ProgressPos(8);
		   offsetRow=offsetRow+1;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Наименование бюджета:");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, НаимБюдж);
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 5);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, True, False, 0, True);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 5, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, " ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight, 1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, " ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   ProgressPos(9);
		   offsetRow=offsetRow+1;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Единица измерения:");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "РУБ");
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 5);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, True, False, 0, True);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 5, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "по ОКЕИ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight, 1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "383");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   ProgressPos(10);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-7, 07, offsetRow, 07, True,  True,  True,  True, True,  True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-6, 07, offsetRow, 07, True,  True,  True,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
		   ProgressPos(11);
		   offsetRow=offsetRow+15;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "Главный бухгалтер ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, ГлБухгалтер);
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 6, offsetRow, 7);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 04, offsetRow, 04, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 06, offsetRow, 07, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   ProgressPos(12);
		   offsetRow=offsetRow+1;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "(подпись)");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 4, offsetRow, 4, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "(расшифровка подписи)");
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 6, offsetRow, 7);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 6, offsetRow, 6, True);
		   ProgressPos(13);
		   offsetRow=offsetRow+1;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Исполнитель ");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, ДолжностьИсп);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, Исполнитель);
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 6, offsetRow, 7);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 02, offsetRow, 02, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 04, offsetRow, 04, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 06, offsetRow, 07, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   ProgressPos(14);
		   offsetRow=offsetRow+1;
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "(должность)");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 2, offsetRow, 2, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "(подпись)");
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 4, offsetRow, 4, True);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "(расшифровка подписи)");
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 6, offsetRow, 7);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 6, offsetRow, 6, True);
		   ProgressPos(15);
		   РАБ.EXCEL.PrintSetup_ЧБ_Поля10(xlsApp, xlsSheet, False, 0, 0, 0, 0, True, False, True, 100);
		   NoError=True;
		 Finally
		   ClearVariable(xlsSheet);
		 end;
	       Finally
		 ClearVariable(xlsSheets);
	       end;
	     Except
	       NoError=False;
	       xlsBook.Close(False); -- закрыть книгу без сохранения
	     end;
	   Finally
	     xlsBook.Close(True, xlNameFile);
	     ClearVariable(xlsBook); -- освободить объект книги
	   end;
	 Finally
	   ClearVariable(xlsBooks); -- освободить объект книг
	 end;
       Finally
	 ClearVariable(xlsApp); -- освободить объект Excel
	 CloseProgress;
       end;
     Except
       NoError=False;
       ClearVariable(xlsRng);
       ClearVariable(xlsSheet);
       ClearVariable(xlsSheets);
       ClearVariable(xlsBook);
       ClearVariable(xlsBooks);
       ClearVariable(xlsApp);
     end;
   fi;
   if NoError:
     xlsApp=CreateAutoObject('Excel.Application');
     Try
       Try
	 xlsApp.EnableEvents=False;   -- отключить события
	 xlsApp.AutomationSecurity=3; -- отключить макросы
	 xlsBooks=AsAutoObject(xlsApp.Workbooks); -- получить объект Workbooks
	 Try
	   xlsBook=AsAutoObject(xlsBooks.Open(xlNameFile));
	   Try
	     Try
	       xlsSheets=AsAutoObject(xlsBook.Sheets);
	       Try
		 if max_kol>kol:
		   kol=kol+1;
		   xlsSheet=AsAutoObject(xlsBook.Worksheets[kol]);
		 else
		   xlsSheet=AsAutoObject(xlsSheets.Add);
		 fi;
		 Try
		   xlsSheet.Name = "главная книга "+Chr(151)+" таблица";
		   ShowProgress(14, "Формируем таблицу (шапка)...");
		   Try
		     -- Пишем заголовки столбцов таблицы
		     offsetRow=0;
		     ProgressPos(1);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 01, 05.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 02, 23.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 03, 28.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 04, 14.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 05, 14.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 06, 14.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 07, 14.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 08, 13.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 09, 13.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 10, 14.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 11, 14.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 12, 14.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 13, 14.0);
		     РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 14, 10.0);
		     ProgressPos(2);
		     offsetRow=offsetRow+1;
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, ii+offsetRow, 01, "Главная книга за "+MMTxt+" "+Str(YYYY)+" г.");
		     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, ii+offsetRow, 1, ii+offsetRow, 14);
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 01, РАБ.EXCEL.xlLeft, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, True, False, 0, True);
		     offsetRow=offsetRow+1;
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "N' п/п");
		     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow+1, 01);
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     ProgressPos(3);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "Номер счета");
		     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 02, offsetRow+1, 03);
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     ProgressPos(4);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "Остаток на начало года");
		     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 05);
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 04, "по дебету");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 05, "по кредиту");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 05, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     ProgressPos(5);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "Остаток на начало периода");
		     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 06, offsetRow, 07);
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 06, "по дебету");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 06, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 07, "по кредиту");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     ProgressPos(6);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "Оборот за период");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 08, "по дебету");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     ProgressPos(7);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, "Оборот за период");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 09, "по кредиту");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 09, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     ProgressPos(8);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "Оборот с начала года");
		     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 10, "по дебету");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 10, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 11, "по кредиту");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     ProgressPos(9);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 12, "Остаток на конец периода");
		     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 12, offsetRow, 13);
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 12, "по дебету");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 12, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 13, "по кредиту");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 13, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     ProgressPos(10);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 14, "Номер журнала операций");
		     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 14, offsetRow+1, 14);
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 14, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
		     ProgressPos(11);
		     offsetRow=offsetRow+2;
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "1");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "2");
		     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 3);
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "3");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "4");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "5");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "6");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "7");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, "8");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "9");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "10");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 12, "11");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 13, "12");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 13, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 14, "13");
		     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 14, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
		     ProgressPos(12);
		     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-2, 1, offsetRow, 14, True, True, True, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		     ProgressPos(13);
		     РАБ.EXCEL.PrintSetup_ЧБ_Поля10(xlsApp, xlsSheet, False, 1, 3, 1, 3, True, False, False, 100);
		     ProgressPos(14);
		     УстановитьКолонтитулы(xlsSheet, rusExcel);
		     NoError=True;
		   Finally
		     CloseProgress;
		   end;
		 Finally
		   ClearVariable(xlsSheet);
		 end;
	       Finally
		 ClearVariable(xlsSheets);
	       end;
	     Except
	       NoError=False;
	       xlsBook.Close(False); -- закрыть книгу без сохранения
	     end;
	   Finally
	     --xlsBook.Close(True, xlNameFile);
	     xlsBook.Save;
	     xlsBook.Close(False); -- закрыть книгу без сохранения
	     ClearVariable(xlsBook); -- освободить объект книги
	   end;
	 Finally
	   ClearVariable(xlsBooks); -- освободить объект книг
	 end;
       Finally
	 ClearVariable(xlsApp); -- освободить объект Excel
	 CloseProgress;
       end;
     Except
       NoError=False;
       ClearVariable(xlsRng);
       ClearVariable(xlsSheet);
       ClearVariable(xlsSheets);
       ClearVariable(xlsBook);
       ClearVariable(xlsBooks);
       ClearVariable(xlsApp);
     end;
   fi; --NoError
   if NoError and len>0:
     offsetRow=4;
     ShowProgress(len+1, "Формируем таблицу (данные)...");
     Try
       Iter=0;
       IterCount=0;
       IterSave=1;
       ExportWork=True;
       while ExportWork do
	 if NoError:
	   xlsApp=CreateAutoObject('Excel.Application');
	   Try
	     Try
	       xlsApp.EnableEvents=False;   -- отключить события
	       xlsApp.AutomationSecurity=3; -- отключить макросы
	       xlsBooks=AsAutoObject(xlsApp.Workbooks); -- получить объект Workbooks
	       Try
		 xlsBook=AsAutoObject(xlsBooks.Open(xlNameFile));
		 Try
		   Try
		     xlsSheet=AsAutoObject(xlsBook.Worksheets["главная книга "+Chr(151)+" таблица"]);
		     Try
		       for ii=IterSave to len do
			 ProgressPos(ii);
			 РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, ii+offsetRow, 01, Str(ii));
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 01, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 07, 0, True, False, False, 0, True);
			 --
			 РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, ii+offsetRow, 02, СчГруппа[ii]);
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 02, РАБ.EXCEL.xlLeft, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True, False, 0, True);
			 --
			 РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, ii+offsetRow, 03, СчПодробно[ii]);
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 03, РАБ.EXCEL.xlLeft, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОстНачГодД[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 04, ОстНачГодД[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 04, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОстНачГодК[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 05, ОстНачГодК[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 05, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОстНачМесД[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 06, ОстНачМесД[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 06, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОстНачМесК[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 07, ОстНачМесК[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 07, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОборотД[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 08, ОборотД[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 08, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОборотК[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 09, ОборотК[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 09, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОборотНачГодД[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 10, ОборотНачГодД[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 10, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОборотНачГодК[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 11, ОборотНачГодК[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 11, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОстКонМесД[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 12, ОстКонМесД[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 12, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 if ОстКонМесК[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 13, ОстКонМесК[ii], localDS, localTS); fi;
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 13, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, ii+offsetRow, 14, НомЖО[ii]);
			 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 14, РАБ.EXCEL.xlLeft, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
			 --
			 РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, ii+offsetRow, 01, ii+offsetRow, 14, True, True, True, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
			 РАБ.EXCEL.СброситьВсеГраницыДиапазона(xlsSheet, ii+offsetRow, 02, ii+offsetRow, 02, False, False, True, False, False, False);
			 --
			 IterCount=IterCount+1;
			 if IterCount>=maxIterCount: IterSave=IterSave+IterCount; IterCount=0; Break; fi;
		       od;
		       NoError=True;
		     Finally
		       ClearVariable(xlsSheet);
		     end;
		   Except
		     NoError=False;
		     ExportWork=False;
		     xlsBook.Close(False); -- закрыть книгу без сохранения
		   end;
		 Finally
		   --xlsBook.Close(True, xlNameFile);
		   xlsBook.Save;
		   xlsBook.Close(False); -- закрыть книгу без сохранения
		   ClearVariable(xlsBook); -- освободить объект книги
		 end;
	       Finally
		 ClearVariable(xlsBooks); -- освободить объект книг
	       end;
	     Finally
	       ClearVariable(xlsApp); -- освободить объект Excel
	     end;
	   Except
	     NoError=False;
	     ExportWork=False;
	     ClearVariable(xlsRng);
	     ClearVariable(xlsSheet);
	     ClearVariable(xlsSheets);
	     ClearVariable(xlsBook);
	     ClearVariable(xlsBooks);
	     ClearVariable(xlsApp);
	   end;
	   if ii>=len: ExportWork=False; fi;
	 else
	   ExportWork=False;
	 fi;
       end; -- while
     Finally
      CloseProgress;
     end;
   fi; --NoError
   if NoError:
     ShowProgress(13, "Формируем таблицу (итоги)...");
     Try
       xlsApp=CreateAutoObject('Excel.Application');
       Try
	 Try
	   xlsApp.EnableEvents=False;	-- отключить события
	   xlsApp.AutomationSecurity=3; -- отключить макросы
	   xlsBooks=AsAutoObject(xlsApp.Workbooks); -- получить объект Workbooks
	   Try
	     xlsBook=AsAutoObject(xlsBooks.Open(xlNameFile));
	     Try
	       Try
		 xlsSheet=AsAutoObject(xlsBook.Worksheets["главная книга "+Chr(151)+" таблица"]);
		 Try
		   -- Строка итогов
		   ProgressPos(01);
		   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, ii+offsetRow, 1, "ИТОГО");
		   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, ii+offsetRow, 1, ii+offsetRow, 3);
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 1, РАБ.EXCEL.xlRight, 1, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, True, False, 0, True);
		   ProgressPos(02);
		   if ИОстНачГодД<>0.00    : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 04, ИОстНачГодД,    localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 04, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(03);
		   if ИОстНачГодК<>0.00    : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 05, ИОстНачГодК,    localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 05, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(04);
		   if ИОстНачМесД<>0.00    : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 06, ИОстНачМесД,    localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 06, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(05);
		   if ИОстНачМесК<>0.00    : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 07, ИОстНачМесК,    localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 07, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(06);
		   if ИОборотД<>0.00	   : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 08, ИОборотД,       localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 08, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(07);
		   if ИОборотК<>0.00	   : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 09, ИОборотК,       localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 09, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(08);
		   if ИОборотНачГодД<>0.00 : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 10, ИОборотНачГодД, localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 10, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(09);
		   if ИОборотНачГодК<>0.00 : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 11, ИОборотНачГодК, localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 11, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(10);
		   if ИОстКонМесД<>0.00    : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 12, ИОстКонМесД,    localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 12, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(11);
		   if ИОстКонМесК<>0.00    : РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, ii+offsetRow, 13, ИОстКонМесК,    localDS, localTS); fi;
		   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, ii+offsetRow, 13, РАБ.EXCEL.xlRight, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
		   ProgressPos(12);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, ii+offsetRow, 04, ii+offsetRow, 13, True, True, True, True, True,  True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
		   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, ii+offsetRow, 04, ii+offsetRow, 13, True, True, True, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
		   ProgressPos(13);
		   -- Выравнивание строк
		   РАБ.EXCEL.АвтоВыравниваниеСтрок(xlsSheet, 1, ii+offsetRow+1);
		   NoError=True;
		 Finally
		   ClearVariable(xlsSheet);
		 end;
	       Except
		 NoError=False;
		 ExportWork=False;
		 xlsBook.Close(False); -- закрыть книгу без сохранения
	       end;
	     Finally
	       --xlsBook.Close(True, xlNameFile);
	       xlsBook.Save;
	       xlsBook.Close(False); -- закрыть книгу без сохранения
	       ClearVariable(xlsBook); -- освободить объект книги
	     end;
	   Finally
	     ClearVariable(xlsBooks); -- освободить объект книг
	   end;
	 Finally
	   ClearVariable(xlsApp); -- освободить объект Excel
	 end;
       Except
	 NoError=False;
	 ExportWork=False;
	 ClearVariable(xlsRng);
	 ClearVariable(xlsSheet);
	 ClearVariable(xlsSheets);
	 ClearVariable(xlsBook);
	 ClearVariable(xlsBooks);
	 ClearVariable(xlsApp);
       end;
     Finally
       CloseProgress;
     end;
   fi; --NoError
   if NoError:
     len=EnqOkCancel("Экспорт завершен!^MВремя работы - "+TimeToHMSstring_adv(Time-начало, ":")+Chr(13)+"Открыть файл экспорта?", mtInformation);
     if len=cmOK:
       xlsApp=CreateAutoObject('Excel.Application');
       Try
	 Try
	   xlsApp.EnableEvents=False;	-- отключить события
	   xlsApp.AutomationSecurity=3; -- отключить макросы
	   xlsBooks=AsAutoObject(xlsApp.Workbooks); -- получить объект Workbooks
	   Try
	     xlsBook=AsAutoObject(xlsBooks.Open(xlNameFile));
	     Try
	       xlsApp.Visible=True;  -- сделать видимым Excel
	     Finally
	       ClearVariable(xlsBook); -- освободить объект книги
	     end;
	   Finally
	     ClearVariable(xlsBooks); -- освободить объект книг
	   end;
	 Finally
	   ClearVariable(xlsApp);
	 end;
       Except
	 ClearVariable(xlsApp);
       end;
     fi;
   fi;
 fi; -- ChooseFolder
end;

Proc btnвExcel_OnClick(Sender: String);
 ВыгрузкаExcel;
end;

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

Proc rbРежим_OnChange(Sender: String);
 ОчисткаДанных;
end;

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

Proc cbСвертка_OnChange(Sender: String);
 Перерасчет;
end;

Proc cb500_OnChange(Sender: String);
 Перерасчет;
end;

Proc cbНомЖО_OnChange(Sender: String);
 Перерасчет;
end;
2-- Обработчики событий шаблона
Proc OnOpen(Create: Logical);
  Настр(False);
  ОткрНастр(False);
  Раб.Настр_Печать.Cfg('',selfcfg1);
  Раб.Настр_Печать.Cfg('',selfcfg2);
end;

Proc AfterOpen(Destroy: Logical);
 Оформление;
 btnExcel.Enabled = if(Строки>0: True, False);
end;


КОНЕЦ