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

-- Зона авто-идентификации отчета
-- Зона авто-идентификации отчета
Ф_ОКУД: STRING = '0503128';
Ф_ИНСТР_КОД: STRING = '191н';
Ф_РЕД_КОД: STRING = '138н';
Ф_ДЕЙСТВ_С: DATE = 01.01.2014;
Ф_ДЕЙСТВ_ПО: DATE = 01.01.2015;
-- конец зоны авто-идентификации отчета

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

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

sУсл_1_6 : Section;
sУсл_1_6_: Section; 

sУсл_1_8 : Section;
sУсл_1_8_: Section; 

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

sУсл_1_10 : Section;
sУсл_1_10_: Section;

sУсл_1_10а : Section;
sУсл_1_10а_: Section;
sУсл_1_10б : Section;
sУсл_1_10б_: Section;

sУсл_2    : Section;
sУсл_2_4  : Section;
sУсл_2_4_ : Section;
sУсл_2_6  : Section;
sУсл_2_6_ : Section;
sУсл_2_8  : Section;
sУсл_2_8_ : Section;
sУсл_2_8а : Section;
sУсл_2_8а_: Section;
sУсл_2_10 : Section;
sУсл_2_10_: 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_6  :I; var Функция_1_6  []:I; var Функция_1_6_  []:S=ФункцияТекст(Функция_1_6  [$]); var ИстКБК_1_6  []:I; var Знак_1_6  []:I=[1]; var УслСч_1_6  []:S; var УслСчКор_1_6  []:S; var УслАн_1_6  []:S; var УслСтатус_1_6  []:S; var ИстКБК_1_6_  []:S=ИстКБКТекст(ИстКБК_1_6  [$]);  var УслНаим_1_6  []:s=if($=1,"Гр.6 Принято бюджетных обязательств","");
var nУсл_1_8  :I; var Функция_1_8  []:I; var Функция_1_8_  []:S=ФункцияТекст(Функция_1_8  [$]); var ИстКБК_1_8  []:I; var Знак_1_8  []:I=[1]; var УслСч_1_8  []:S; var УслСчКор_1_8  []:S; var УслАн_1_8  []:S; var УслСтатус_1_8  []:S; var ИстКБК_1_8_  []:S=ИстКБКТекст(ИстКБК_1_8  [$]);  var УслНаим_1_8  []:s=if($=1,"Гр.8 Принято денежных обязательств","");
var nУсл_1_8а :I; var Функция_1_8а []:I; var Функция_1_8а_ []:S=ФункцияТекст(Функция_1_8а [$]); var ИстКБК_1_8а []:I; var Знак_1_8а []:I=[1]; var УслСч_1_8а []:S; var УслСчКор_1_8а []:S; var УслАн_1_8а []:S; var УслСтатус_1_8а []:S; var ИстКБК_1_8а_ []:S=ИстКБКТекст(ИстКБК_1_8а [$]);  var УслНаим_1_8а []:s=if($=1,"Гр.8а Принято денежных обязательств (справочно, по балансовым счетам)","");
var nУсл_1_10 :I; var Функция_1_10 []:I; var Функция_1_10_ []:S=ФункцияТекст(Функция_1_10 [$]); var ИстКБК_1_10 []:I; var Знак_1_10 []:I=[1]; var УслСч_1_10 []:S; var УслСчКор_1_10 []:S; var УслАн_1_10 []:S; var УслСтатус_1_10 []:S; var ИстКБК_1_10_ []:S=ИстКБКТекст(ИстКБК_1_10 [$]);  var УслНаим_1_10 []:s=if($=1,"Гр.10 Исполнено денежных обязательств","");
var nУсл_1_10а:I; var Функция_1_10а[]:I; var Функция_1_10а_[]:S=ФункцияТекст(Функция_1_10а[$]); var ИстКБК_1_10а[]:I; var Знак_1_10а[]:I=[1]; var УслСч_1_10а[]:S; var УслСчКор_1_10а[]:S; var УслАн_1_10а[]:S; var УслСтатус_1_10а[]:S; var ИстКБК_1_10а_[]:S=ИстКБКТекст(ИстКБК_1_10а[$]);  var УслНаим_1_10а[]:s=if($=1,"Гр.10а Справочно, остаток кассы","");
var nУсл_1_10б:I; var Функция_1_10б[]:I; var Функция_1_10б_[]:S=ФункцияТекст(Функция_1_10б[$]); var ИстКБК_1_10б[]:I; var Знак_1_10б[]:I=[1]; var УслСч_1_10б[]:S; var УслСчКор_1_10б[]:S; var УслАн_1_10б[]:S; var УслСтатус_1_10б[]:S; var ИстКБК_1_10б_[]:S=ИстКБКТекст(ИстКБК_1_10б[$]);  var УслНаим_1_10б[]:s=if($=1,"Гр.10б Справочно, кредиторская задолженность","");

var nУсл_2_4 :I; var Функция_2_4 []:I; var Функция_2_4_ []:S=ФункцияТекст(Функция_2_4 [$]); var ИстКБК_2_4 []:I; var Знак_2_4 []:I=[1]; var УслСч_2_4 []:S; var УслСчКор_2_4 []:S; var УслАн_2_4 []:S; var УслСтатус_2_4 []:S; var ИстКБК_2_4_ []:S=ИстКБКТекст(ИстКБК_2_4[$]);  var УслНаим_2_4 []:s=if($=1,"Гр.4 Утверждено бюджетных ассигнований","");
var nУсл_2_6 :I; var Функция_2_6 []:I; var Функция_2_6_ []:S=ФункцияТекст(Функция_2_6 [$]); var ИстКБК_2_6 []:I; var Знак_2_6 []:I=[1]; var УслСч_2_6 []:S; var УслСчКор_2_6 []:S; var УслАн_2_6 []:S; var УслСтатус_2_6 []:S; var ИстКБК_2_6_ []:S=ИстКБКТекст(ИстКБК_2_6[$]);  var УслНаим_2_6 []:s=if($=1,"Гр.6 Принято бюджетных обязательств","");
var nУсл_2_8 :I; var Функция_2_8 []:I; var Функция_2_8_ []:S=ФункцияТекст(Функция_2_8 [$]); var ИстКБК_2_8 []:I; var Знак_2_8 []:I=[1]; var УслСч_2_8 []:S; var УслСчКор_2_8 []:S; var УслАн_2_8 []:S; var УслСтатус_2_8 []:S; var ИстКБК_2_8_ []:S=ИстКБКТекст(ИстКБК_2_8[$]);  var УслНаим_2_8 []:s=if($=1,"Гр.8 Принято денежных обязательств","");
var nУсл_2_8а:I; var Функция_2_8а[]:I; var Функция_2_8а_[]:S=ФункцияТекст(Функция_2_8а[$]); var ИстКБК_2_8а[]:I; var Знак_2_8а[]:I=[1]; var УслСч_2_8а[]:S; var УслСчКор_2_8а[]:S; var УслАн_2_8а[]:S; var УслСтатус_2_8а[]:S; var ИстКБК_2_8а_[]:S=ИстКБКТекст(ИстКБК_2_8а[$]); var УслНаим_2_8а[]:s=if($=1,"Гр.8а Принято денежных обязательств (справочно, по балансовым счетам)","");
var nУсл_2_10:I; var Функция_2_10[]:I; var Функция_2_10_[]:S=ФункцияТекст(Функция_2_10[$]); var ИстКБК_2_10[]:I; var Знак_2_10[]:I=[1]; var УслСч_2_10[]:S; var УслСчКор_2_10[]:S; var УслАн_2_10[]:S; var УслСтатус_2_10[]:S; var ИстКБК_2_10_[]:S=ИстКБКТекст(ИстКБК_2_10[$]); var УслНаим_2_10[]:s=if($=1,"Гр.10 Исполнено денежных обязательств","");

var НастрGUID:S;
var НастрВерсия:I=120109;
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=РАБ.ПАРАМ_ОТЧ.ОбщУслКИФД;
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;
RГ6С210М1[] :N;
var RГ7С210М1[]:N=if(RГ4С210М1[$]+RГ5С210М1[$]-RГ6С210М1[$]<0,-(RГ4С210М1[$]+RГ5С210М1[$]-RГ6С210М1[$]),0);
RГ8С210М1[] :N;
RГ8С210М1_[]:N;
RГ8аС210М1[]:N;
var RГ8бС210М1[]:N=RГ8С210М1[$]-RГ8аС210М1[$];
var RГ9С210М1[]:N=if(RГ4С210М1[$]+RГ5С210М1[$]-RГ8С210М1[$]<0,-(RГ4С210М1[$]+RГ5С210М1[$]-RГ8С210М1[$]),0);
RГ10С210М1[]:N;
RГ10аС210М1[]:N;
RГ10бС210М1[]:N;
var RГ11С210М1[]:N=RГ6С210М1[$]-RГ10С210М1[$]; 
var RГ12С210М1[]:N=RГ8С210М1[$]-RГ10С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Г8С200  :N=SumOfArray(RГ8С210М1,М1);
var RГ8аС200 :N=SumOfArray(RГ8аС210М1,М1);
var RГ8бС200 :N=RГ8С200-RГ8аС200;
var RГ9С200  :N=SumOfArray(RГ9С210М1,М1);
var RГ10С200 :N=SumOfArray(RГ10С210М1,М1);
var RГ10аС200:N=SumOfArray(RГ10аС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 RГ12С200 :N=SumOfArray(RГ12С210М1,М1);

М2:I;
SГ1С520М2[]:S;
SГ3С520М2[] :S;
RГ4С520М2[] :N;
RГ6С520М2[] :N;
var RГ7С520М2[]:N=if(RГ4С520М2[$]-RГ6С520М2[$]<0,-(RГ4С520М2[$]-RГ6С520М2[$]),0);
RГ8С520М2[] :N;
RГ8С520М2_[]:N;
RГ8аС520М2[]:N;
var RГ8бС520М2[]:N=RГ8С520М2[$]-RГ8аС520М2[$];
var RГ9С520М2[]:N=if(RГ4С520М2[$]-RГ8С520М2[$]<0,-(RГ4С520М2[$]-RГ8С520М2[$]),0);
RГ10С520М2[]:N;
var N2[]:I=if(М2=1 and SГ3С520М2[1]="",0,510+$);


var RГ11С520М2[]:N=RГ6С520М2[$]-RГ10С520М2[$]; 
var RГ12С520М2[]:N=RГ8С520М2[$]-RГ10С520М2[$];

var RГ4С510 :N=SumOfArray(RГ4С520М2,М2);
var RГ6С510 :N=SumOfArray(RГ6С520М2,М2);
var RГ7С510 :N=SumOfArray(RГ7С520М2,М2);
var RГ8С510 :N=SumOfArray(RГ8С520М2,М2);
var RГ8аС510:N=SumOfArray(RГ8аС520М2,М2);
var RГ8бС510:N=RГ8С510-RГ8аС510;
var RГ9С510 :N=SumOfArray(RГ9С520М2,М2);
var RГ10С510:N=SumOfArray(RГ10С520М2,М2);
var RГ11С510:N=SumOfArray(RГ11С520М2,М2);
var RГ12С510:N=SumOfArray(RГ12С520М2,М2);

var RГ4С999 :N=RГ4С200+RГ4С510;
var RГ5С999 :N=RГ5С200;
var RГ6С999 :N=RГ6С200+RГ6С510;
var RГ7С999 :N=RГ7С200+RГ7С510;
var RГ8С999 :N=RГ8С200+RГ8С510;
var RГ8аС999:N=RГ8аС200+RГ8аС510;
var RГ8бС999:N=RГ8С999-RГ8аС999;
var RГ9С999 :N=RГ9С200+RГ9С510;
var RГ10С999:N=RГ10С200+RГ10С510;
var RГ11С999:N=RГ11С200+RГ11С510;
var RГ12С999:N=RГ12С200+RГ12С510;

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

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

var hКР:S;
var hКИФД:S;

btnРасчет   :Object;
btnНастр    :Object;
btnОчистить :Object;
btnПечать   :Object;
btnЗакрыть  :Object;
btnExcel    :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..5 do
  if FindObject("S"+Str(s),Obj):
     rr=AsInteger(Obj.RowsCount);
     for c=5..22 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Г6С210М1);
 ClearVariable(RГ8С210М1);
 ClearVariable(RГ8С210М1_);
 ClearVariable(RГ8аС210М1);
 ClearVariable(RГ10С210М1);
 ClearVariable(RГ10аС210М1);
 ClearVariable(RГ10бС210М1);
 ClearVariable(М2);
 ClearVariable(SГ1С520М2);
 ClearVariable(SГ3С520М2);
 ClearVariable(RГ4С520М2);
 ClearVariable(RГ6С520М2);
 ClearVariable(RГ8С520М2);
 ClearVariable(RГ8С520М2_);
 ClearVariable(RГ8аС520М2);
 ClearVariable(RГ10С520М2);
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_6);   ClearVariable(Функция_1_6);   ClearVariable(ИстКБК_1_6);   ClearVariable(Знак_1_6);   ClearVariable(УслСч_1_6);   ClearVariable(УслСчКор_1_6);   ClearVariable(УслАн_1_6);   ClearVariable(УслСтатус_1_6);
 ClearVariable(nУсл_1_8);   ClearVariable(Функция_1_8);   ClearVariable(ИстКБК_1_8);   ClearVariable(Знак_1_8);   ClearVariable(УслСч_1_8);   ClearVariable(УслСчКор_1_8);   ClearVariable(УслАн_1_8);   ClearVariable(УслСтатус_1_8);
 ClearVariable(nУсл_1_8а);  ClearVariable(Функция_1_8а);  ClearVariable(ИстКБК_1_8а);  ClearVariable(Знак_1_8а);  ClearVariable(УслСч_1_8а);  ClearVariable(УслСчКор_1_8а);  ClearVariable(УслАн_1_8а);  ClearVariable(УслСтатус_1_8а);
 ClearVariable(nУсл_1_10);  ClearVariable(Функция_1_10);  ClearVariable(ИстКБК_1_10);  ClearVariable(Знак_1_10);  ClearVariable(УслСч_1_10);  ClearVariable(УслСчКор_1_10);  ClearVariable(УслАн_1_10);  ClearVariable(УслСтатус_1_10);
 ClearVariable(nУсл_1_10а); ClearVariable(Функция_1_10а); ClearVariable(ИстКБК_1_10а); ClearVariable(Знак_1_10а); ClearVariable(УслСч_1_10а); ClearVariable(УслСчКор_1_10а); ClearVariable(УслАн_1_10а); ClearVariable(УслСтатус_1_10а);
 ClearVariable(nУсл_1_10б); ClearVariable(Функция_1_10б); ClearVariable(ИстКБК_1_10б); ClearVariable(Знак_1_10б); ClearVariable(УслСч_1_10б); ClearVariable(УслСчКор_1_10б); ClearVariable(УслАн_1_10б); ClearVariable(УслСтатус_1_10б);

 ClearVariable(nУсл_2_4);  ClearVariable(Функция_2_4);  ClearVariable(ИстКБК_2_4);  ClearVariable(Знак_2_4);  ClearVariable(УслСч_2_4);  ClearVariable(УслСчКор_2_4);  ClearVariable(УслАн_2_4);  ClearVariable(УслСтатус_2_4);
 ClearVariable(nУсл_2_6);  ClearVariable(Функция_2_6);  ClearVariable(ИстКБК_2_6);  ClearVariable(Знак_2_6);  ClearVariable(УслСч_2_6);  ClearVariable(УслСчКор_2_6);  ClearVariable(УслАн_2_6);  ClearVariable(УслСтатус_2_6);
 ClearVariable(nУсл_2_8);  ClearVariable(Функция_2_8);  ClearVariable(ИстКБК_2_8);  ClearVariable(Знак_2_8);  ClearVariable(УслСч_2_8);  ClearVariable(УслСчКор_2_8);  ClearVariable(УслАн_2_8);  ClearVariable(УслСтатус_2_8);
 ClearVariable(nУсл_2_8а); ClearVariable(Функция_2_8а); ClearVariable(ИстКБК_2_8а); ClearVariable(Знак_2_8а); ClearVariable(УслСч_2_8а); ClearVariable(УслСчКор_2_8а); ClearVariable(УслАн_2_8а); ClearVariable(УслСтатус_2_8а);
 ClearVariable(nУсл_2_10); ClearVariable(Функция_2_10); ClearVariable(ИстКБК_2_10); ClearVariable(Знак_2_10); ClearVariable(УслСч_2_10); ClearVariable(УслСчКор_2_10); ClearVariable(УслАн_2_10); ClearVariable(УслСтатус_2_10);

 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] ="*.?.503.15.*";                                       УслСчКор_1_4 [nУсл_1_4] ="";                                                    УслАн_1_4 [nУсл_1_4] ="";
 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] ="*.?.503.14.*";                                       УслСчКор_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] ="*.?.501.15.*";                                       УслСчКор_1_5 [nУсл_1_5] ="";                                                    УслАн_1_5 [nУсл_1_5] ="";
 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] ="*.?.501.14.*";                                       УслСчКор_1_5 [nУсл_1_5] ="";                                                    УслАн_1_5 [nУсл_1_5] ="";

 nУсл_1_6 =nУсл_1_6 +1; Функция_1_6 [nУсл_1_6] =0; ИстКБК_1_6 [nУсл_1_6] =0; Знак_1_6 [nУсл_1_6] =-1; УслСч_1_6 [nУсл_1_6] ="*.?.502.11.*&(*.2??|*.3??|*.530)";                   УслСчКор_1_6 [nУсл_1_6] ="*.?.501.13.*";                                        УслАн_1_6 [nУсл_1_6] ="";

 nУсл_1_8 =nУсл_1_8 +1; Функция_1_8 [nУсл_1_8] =0; ИстКБК_1_8 [nУсл_1_8] =0; Знак_1_8 [nУсл_1_8] =-1; УслСч_1_8 [nУсл_1_8] ="*.?.502.12.*&(*.2??|*.3??|*.530)";                   УслСчКор_1_8 [nУсл_1_8] ="";                                                    УслАн_1_8 [nУсл_1_8] ="";

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

 nУсл_1_10=nУсл_1_10+1; Функция_1_10[nУсл_1_10]=0; ИстКБК_1_10[nУсл_1_10]=0; Знак_1_10[nУсл_1_10]=-1; УслСч_1_10[nУсл_1_10]="*.?.304.05.*&(*.2??|*.3??|*.530)";                   УслСчКор_1_10[nУсл_1_10]="~*.?.304.04.*";                                       УслАн_1_10[nУсл_1_10]="";
 nУсл_1_10=nУсл_1_10+1; Функция_1_10[nУсл_1_10]=0; ИстКБК_1_10[nУсл_1_10]=3; Знак_1_10[nУсл_1_10]=-1; УслСч_1_10[nУсл_1_10]="*.?.201.21.*";                                       УслСчКор_1_10[nУсл_1_10]="~*.?.304.04.*";                                       УслАн_1_10[nУсл_1_10]="";
 nУсл_1_10=nУсл_1_10+1; Функция_1_10[nУсл_1_10]=0; ИстКБК_1_10[nУсл_1_10]=3; Знак_1_10[nУсл_1_10]=-1; УслСч_1_10[nУсл_1_10]="*.?.201.27.*";                                       УслСчКор_1_10[nУсл_1_10]="~*.?.304.04.*";                                       УслАн_1_10[nУсл_1_10]="";

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

 nУсл_1_10б=nУсл_1_10б+1; Функция_1_10б[nУсл_1_10б]=6; ИстКБК_1_10б[nУсл_1_10б]=1; Знак_1_10б[nУсл_1_10б]= 1; УслСч_1_10б[nУсл_1_10б]="*.?.208.??.*";                             УслСчКор_1_10б[nУсл_1_10б]="";                                                  УслАн_1_10б[nУсл_1_10б]="";
 nУсл_1_10б=nУсл_1_10б+1; Функция_1_10б[nУсл_1_10б]=1; ИстКБК_1_10б[nУсл_1_10б]=1; Знак_1_10б[nУсл_1_10б]=-1; УслСч_1_10б[nУсл_1_10б]="*.?.302.??.*";                             УслСчКор_1_10б[nУсл_1_10б]="";                                                  УслАн_1_10б[nУсл_1_10б]="";
 nУсл_1_10б=nУсл_1_10б+1; Функция_1_10б[nУсл_1_10б]=0; ИстКБК_1_10б[nУсл_1_10б]=1; Знак_1_10б[nУсл_1_10б]=-1; УслСч_1_10б[nУсл_1_10б]="*.?.302.??.*";                             УслСчКор_1_10б[nУсл_1_10б]="";                                                  УслАн_1_10б[nУсл_1_10б]="";
 nУсл_1_10б=nУсл_1_10б+1; Функция_1_10б[nУсл_1_10б]=1; ИстКБК_1_10б[nУсл_1_10б]=2; Знак_1_10б[nУсл_1_10б]=-1; УслСч_1_10б[nУсл_1_10б]="*.?.301.??.*&(*.?10|*.?20)";               УслСчКор_1_10б[nУсл_1_10б]="";                                                  УслАн_1_10б[nУсл_1_10б]="";
 nУсл_1_10б=nУсл_1_10б+1; Функция_1_10б[nУсл_1_10б]=0; ИстКБК_1_10б[nУсл_1_10б]=2; Знак_1_10б[nУсл_1_10б]=-1; УслСч_1_10б[nУсл_1_10б]="*.?.301.??.*&(*.?10|*.?20)";               УслСчКор_1_10б[nУсл_1_10б]="";                                                  УслАн_1_10б[nУсл_1_10б]="";
 nУсл_1_10б=nУсл_1_10б+1; Функция_1_10б[nУсл_1_10б]=1; ИстКБК_1_10б[nУсл_1_10б]=2; Знак_1_10б[nУсл_1_10б]=-1; УслСч_1_10б[nУсл_1_10б]="*.?.303.??.*";                             УслСчКор_1_10б[nУсл_1_10б]="";                                                  УслАн_1_10б[nУсл_1_10б]="";
 nУсл_1_10б=nУсл_1_10б+1; Функция_1_10б[nУсл_1_10б]=0; ИстКБК_1_10б[nУсл_1_10б]=2; Знак_1_10б[nУсл_1_10б]=-1; УслСч_1_10б[nУсл_1_10б]="*.?.303.??.*";                             УслСчКор_1_10б[nУсл_1_10б]="";                                                  УслАн_1_10б[nУсл_1_10б]="";

 nУсл_2_4 =nУсл_2_4 +1; Функция_2_4 [nУсл_2_4] =0; ИстКБК_2_4 [nУсл_2_4] =0; Знак_2_4 [nУсл_2_4] = 1; УслСч_2_4 [nУсл_2_4] ="*.?.503.15.*";                                       УслСчКор_2_4 [nУсл_2_4] ="";                                                    УслАн_2_4 [nУсл_2_4] ="";
 nУсл_2_4 =nУсл_2_4 +1; Функция_2_4 [nУсл_2_4] =0; ИстКБК_2_4 [nУсл_2_4] =0; Знак_2_4 [nУсл_2_4] = 1; УслСч_2_4 [nУсл_2_4] ="*.?.503.14.*";                                       УслСчКор_2_4 [nУсл_2_4] ="";                                                    УслАн_2_4 [nУсл_2_4] ="";

 nУсл_2_6 =nУсл_2_6 +1; Функция_2_6 [nУсл_2_6] =0; ИстКБК_2_6 [nУсл_2_6] =0; Знак_2_6 [nУсл_2_6] =-1; УслСч_2_6 [nУсл_2_6] ="*.?.502.11.*&(*.310|*.520|*.540|*.550|*.810|*.820)"; УслСчКор_2_6 [nУсл_2_6] ="";                                                    УслАн_2_6 [nУсл_2_6] ="";

 nУсл_2_8 =nУсл_2_8 +1; Функция_2_8 [nУсл_2_8] =0; ИстКБК_2_8 [nУсл_2_8] =0; Знак_2_8 [nУсл_2_8] =-1; УслСч_2_8 [nУсл_2_8] ="*.?.502.12.*&(*.310|*.520|*.540|*.550|*.810|*.820)"; УслСчКор_2_8 [nУсл_2_8] ="";                                                    УслАн_2_8 [nУсл_2_8] ="";

 nУсл_2_8а=nУсл_2_8а+1; Функция_2_8а[nУсл_2_8а] =0; ИстКБК_2_8а[nУсл_2_8а] =1; Знак_2_8а[nУсл_2_8а] = 1; УслСч_2_8а[nУсл_2_8а] ="*.?.206.31.*";                                   УслСчКор_2_8а[nУсл_2_8а] ="";                                                   УслАн_2_8а[nУсл_2_8а] ="";
 nУсл_2_8а=nУсл_2_8а+1; Функция_2_8а[nУсл_2_8а] =0; ИстКБК_2_8а[nУсл_2_8а] =1; Знак_2_8а[nУсл_2_8а] = 1; УслСч_2_8а[nУсл_2_8а] ="*.?.207.??.540";                                 УслСчКор_2_8а[nУсл_2_8а] ="";                                                   УслАн_2_8а[nУсл_2_8а] ="";
 nУсл_2_8а=nУсл_2_8а+1; Функция_2_8а[nУсл_2_8а] =0; ИстКБК_2_8а[nУсл_2_8а] =1; Знак_2_8а[nУсл_2_8а] =-1; УслСч_2_8а[nУсл_2_8а] ="*.?.302.??.730";                                 УслСчКор_2_8а[nУсл_2_8а] ="";                                                   УслАн_2_8а[nУсл_2_8а] ="";
 nУсл_2_8а=nУсл_2_8а+1; Функция_2_8а[nУсл_2_8а] =0; ИстКБК_2_8а[nУсл_2_8а] =2; Знак_2_8а[nУсл_2_8а] =-1; УслСч_2_8а[nУсл_2_8а] ="*.?.301.??.*&(*.710|*.720)";                     УслСчКор_2_8а[nУсл_2_8а] ="";                                                   УслАн_2_8а[nУсл_2_8а] ="";

 nУсл_2_10=nУсл_2_10+1; Функция_2_10[nУсл_2_10]=0; ИстКБК_2_10[nУсл_2_10]=1; Знак_2_10[nУсл_2_10]=-1; УслСч_2_10[nУсл_2_10]="*.?.304.05.*&(*.310|*.520|*.540|*.550|*.810|*.820)"; УслСчКор_2_10[nУсл_2_10]="~*.?.304.04.*";                                       УслАн_2_10[nУсл_2_10]="";
 nУсл_2_10=nУсл_2_10+1; Функция_2_10[nУсл_2_10]=0; ИстКБК_2_10[nУсл_2_10]=3; Знак_2_10[nУсл_2_10]=-1; УслСч_2_10[nУсл_2_10]="*.?.201.21.*";                                       УслСчКор_2_10[nУсл_2_10]="~*.?.304.04.*";                                       УслАн_2_10[nУсл_2_10]="";
 nУсл_2_10=nУсл_2_10+1; Функция_2_10[nУсл_2_10]=0; ИстКБК_2_10[nУсл_2_10]=3; Знак_2_10[nУсл_2_10]=-1; УслСч_2_10[nУсл_2_10]="*.?.201.27.*";                                       УслСчКор_2_10[nУсл_2_10]="~*.?.304.04.*";                                       УслАн_2_10[nУсл_2_10]="";
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_6  do if УслСч_1_6 [Iter]="" and УслСчКор_1_6 [Iter]="" and УслАн_1_6 [Iter]="": DeleteFrame(nУсл_1_6 ,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_8  do if УслСч_1_8 [Iter]="" and УслСчКор_1_8 [Iter]="" and УслАн_1_8 [Iter]="": DeleteFrame(nУсл_1_8 ,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_8а do if УслСч_1_8а[Iter]="" and УслСчКор_1_8а[Iter]="" and УслАн_1_8а[Iter]="": DeleteFrame(nУсл_1_8а,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_10 do if УслСч_1_10[Iter]="" and УслСчКор_1_10[Iter]="" and УслАн_1_10[Iter]="": DeleteFrame(nУсл_1_10,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_10а do if УслСч_1_10а[Iter]="" and УслСчКор_1_10а[Iter]="" and УслАн_1_10а[Iter]="": DeleteFrame(nУсл_1_10а,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_1_10б do if УслСч_1_10б[Iter]="" and УслСчКор_1_10б[Iter]="" and УслАн_1_10б[Iter]="": DeleteFrame(nУсл_1_10б,Iter); else Iter=Iter+1; fi; od;
 --
 Iter=1; While Iter<=nУсл_2_4  do if УслСч_2_4 [Iter]="" and УслСчКор_2_4 [Iter]="" and УслАн_2_4 [Iter]="": DeleteFrame(nУсл_2_4 ,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_2_6  do if УслСч_2_6 [Iter]="" and УслСчКор_2_6 [Iter]="" and УслАн_2_6 [Iter]="": DeleteFrame(nУсл_2_6 ,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_2_8  do if УслСч_2_8 [Iter]="" and УслСчКор_2_8 [Iter]="" and УслАн_2_8 [Iter]="": DeleteFrame(nУсл_2_8 ,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_2_8а do if УслСч_2_8а[Iter]="" and УслСчКор_2_8а[Iter]="" and УслАн_2_8а[Iter]="": DeleteFrame(nУсл_2_8а,Iter); else Iter=Iter+1; fi; od;
 Iter=1; While Iter<=nУсл_2_10 do if УслСч_2_10[Iter]="" and УслСчКор_2_10[Iter]="" and УслАн_2_10[Iter]="": DeleteFrame(nУсл_2_10,Iter); else Iter=Iter+1; fi; od;
end;

Proc Настр(aСохр:L);
var s,n,nn,z,zz:i;
var Val:S;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать(SelfBln,0,НастрВерсия,"",НастрGUID):
    Раб.Настр.Добавить("ТекущаяВерсия","I");
    for s=1..2 do
     ClearVariable(Buf);
     n=0;
     if s=1: n=n+1; Buf[n]="4"; n=n+1; Buf[n]="5"; n=n+1; Buf[n]="6"; n=n+1; Buf[n]="8"; n=n+1; Buf[n]="8а"; n=n+1; Buf[n]="10"; n=n+1; Buf[n]="10а"; n=n+1; Buf[n]="10б";
       |s=2: n=n+1; Buf[n]="4"; n=n+1; Buf[n]="6"; n=n+1; Buf[n]="8"; n=n+1; Buf[n]="8а"; n=n+1; Buf[n]="10";
     fi;
     nn=n;
     for n=1..nn do
      Val="_"+Str(s)+"_"+Buf[n];
      Раб.Настр.Добавить("nУсл"+Val,"I");
      zz=GetVariableI("nУсл"+Val);
      for z=1..zz do
       Val="_"+Str(s)+"_"+Buf[n]+"["+Str(z)+"]";
       Раб.Настр.Добавить("Функция"+Val,"I");
       Раб.Настр.Добавить("ИстКБК"+Val,"I");
       Раб.Настр.Добавить("Знак"+Val,"I");
       Раб.Настр.Добавить("УслСч"+Val,"S");
       Раб.Настр.Добавить("УслСчКор"+Val,"S");
       Раб.Настр.Добавить("УслАн"+Val,"S");
      od;
     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;
 btnExcel.Visible=not Flag;
 for s1=1..2 do
  if FindObject("sУсл_"+Str(s1),Obj): Obj.Visible=Flag; fi;
  for s2=4..10 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=8 or s2=10)) or (s1=2 and s2=8):
      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 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);
   |not Pos("М2",Frame)=0: InsertFrame(М2,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.МаскаФКР+".*";
      |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;
 for Iter=1..М2 do
  SГ1С520М2[Iter]=Раб.Вспом.Ф0503127_Детал.НаимКБК("КИФД",SГ3С520М2[Iter]);
 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Г6С210М1[Iter]=0 and RГ8С210М1[Iter]=0 and RГ10С210М1[Iter]=0: DeleteFrame(М1,Iter); else Iter=Iter+1; fi;
 od;
 Iter=1;
 While Iter<=М2 do
  if RГ4С520М2[Iter]=0 and RГ6С520М2[Iter]=0 and RГ8С520М2[Iter]=0 and RГ10С520М2[Iter]=0: DeleteFrame(М2,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;
 for Iter=1..М2 do
  Раб.Вспом.Ф0503127_Детал.КонтрольКБК("КИФД",SГ3С520М2[Iter],Str(N2[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_6 do
  РасчетКБКСч  ("ФКР",Функция_1_6[n],ИстКБК_1_6[n],ОбщУслКР,УслСч_1_6[n],УслСчКор_1_6[n],УслАн_1_6[n],"SГ3С210М1","RГ6С210М1",Знак_1_6[n]);
  РасчетКБКАн  ("ФКР",Функция_1_6[n],ИстКБК_1_6[n],ОбщУслКР,УслСч_1_6[n],УслСчКор_1_6[n],УслАн_1_6[n],"SГ3С210М1","RГ6С210М1",Знак_1_6[n]);
  РасчетКБКСчАн("ФКР",Функция_1_6[n],ИстКБК_1_6[n],ОбщУслКР,УслСч_1_6[n],УслСчКор_1_6[n],УслАн_1_6[n],"SГ3С210М1","RГ6С210М1",Знак_1_6[n]);
 od;
 for n=1..nУсл_1_8 do
  РасчетКБКСч  ("ФКР",Функция_1_8[n],ИстКБК_1_8[n],ОбщУслКР,УслСч_1_8[n],УслСчКор_1_8[n],УслАн_1_8[n],"SГ3С210М1","RГ8С210М1",Знак_1_8[n]);
  РасчетКБКАн  ("ФКР",Функция_1_8[n],ИстКБК_1_8[n],ОбщУслКР,УслСч_1_8[n],УслСчКор_1_8[n],УслАн_1_8[n],"SГ3С210М1","RГ8С210М1",Знак_1_8[n]);
  РасчетКБКСчАн("ФКР",Функция_1_8[n],ИстКБК_1_8[n],ОбщУслКР,УслСч_1_8[n],УслСчКор_1_8[n],УслАн_1_8[n],"SГ3С210М1","RГ8С210М1",Знак_1_8[n]);
 od;
 for n=1..nУсл_1_8а do
  РасчетКБКСч  ("ФКР",Функция_1_8а[n],ИстКБК_1_8а[n],ОбщУслКР,УслСч_1_8а[n],УслСчКор_1_8а[n],УслАн_1_8а[n],"SГ3С210М1","RГ8аС210М1",Знак_1_8а[n]);
  РасчетКБКАн  ("ФКР",Функция_1_8а[n],ИстКБК_1_8а[n],ОбщУслКР,УслСч_1_8а[n],УслСчКор_1_8а[n],УслАн_1_8а[n],"SГ3С210М1","RГ8аС210М1",Знак_1_8а[n]);
  РасчетКБКСчАн("ФКР",Функция_1_8а[n],ИстКБК_1_8а[n],ОбщУслКР,УслСч_1_8а[n],УслСчКор_1_8а[n],УслАн_1_8а[n],"SГ3С210М1","RГ8аС210М1",Знак_1_8а[n]);
 od;
 for n=1..nУсл_1_10 do
  РасчетКБКСч  ("ФКР",Функция_1_10[n],ИстКБК_1_10[n],ОбщУслКР,УслСч_1_10[n],УслСчКор_1_10[n],УслАн_1_10[n],"SГ3С210М1","RГ10С210М1",Знак_1_10[n]);
  РасчетКБКАн  ("ФКР",Функция_1_10[n],ИстКБК_1_10[n],ОбщУслКР,УслСч_1_10[n],УслСчКор_1_10[n],УслАн_1_10[n],"SГ3С210М1","RГ10С210М1",Знак_1_10[n]);
  РасчетКБКСчАн("ФКР",Функция_1_10[n],ИстКБК_1_10[n],ОбщУслКР,УслСч_1_10[n],УслСчКор_1_10[n],УслАн_1_10[n],"SГ3С210М1","RГ10С210М1",Знак_1_10[n]);
 od;
 for n=1..nУсл_1_10а do
  РасчетКБКСч  ("ФКР",Функция_1_10а[n],ИстКБК_1_10а[n],ОбщУслКР,УслСч_1_10а[n],УслСчКор_1_10а[n],УслАн_1_10а[n],"SГ3С210М1","RГ10аС210М1",Знак_1_10а[n]);
  РасчетКБКАн  ("ФКР",Функция_1_10а[n],ИстКБК_1_10а[n],ОбщУслКР,УслСч_1_10а[n],УслСчКор_1_10а[n],УслАн_1_10а[n],"SГ3С210М1","RГ10аС210М1",Знак_1_10а[n]);
  РасчетКБКСчАн("ФКР",Функция_1_10а[n],ИстКБК_1_10а[n],ОбщУслКР,УслСч_1_10а[n],УслСчКор_1_10а[n],УслАн_1_10а[n],"SГ3С210М1","RГ10аС210М1",Знак_1_10а[n]);
 od;
 for n=1..nУсл_1_10б do
  РасчетКБКСч  ("ФКР",Функция_1_10б[n],ИстКБК_1_10б[n],ОбщУслКР,УслСч_1_10б[n],УслСчКор_1_10б[n],УслАн_1_10б[n],"SГ3С210М1","RГ10бС210М1",Знак_1_10б[n]);
  РасчетКБКАн  ("ФКР",Функция_1_10б[n],ИстКБК_1_10б[n],ОбщУслКР,УслСч_1_10б[n],УслСчКор_1_10б[n],УслАн_1_10б[n],"SГ3С210М1","RГ10бС210М1",Знак_1_10б[n]);
  РасчетКБКСчАн("ФКР",Функция_1_10б[n],ИстКБК_1_10б[n],ОбщУслКР,УслСч_1_10б[n],УслСчКор_1_10б[n],УслАн_1_10б[n],"SГ3С210М1","RГ10бС210М1",Знак_1_10б[n]);
 od;
 --Расчет КИФД
 ClearVariable(КлючКБК);
 for n=1..nУсл_2_4 do
  РасчетКБКСч  ("КИФД",Функция_2_4[n],ИстКБК_2_4[n],ОбщУслКР,УслСч_2_4[n],УслСчКор_2_4[n],УслАн_2_4[n],"SГ3С520М2","RГ4С520М2",Знак_2_4[n]);
  РасчетКБКАн  ("КИФД",Функция_2_4[n],ИстКБК_2_4[n],ОбщУслКР,УслСч_2_4[n],УслСчКор_2_4[n],УслАн_2_4[n],"SГ3С520М2","RГ4С520М2",Знак_2_4[n]);
  РасчетКБКСчАн("КИФД",Функция_2_4[n],ИстКБК_2_4[n],ОбщУслКР,УслСч_2_4[n],УслСчКор_2_4[n],УслАн_2_4[n],"SГ3С520М2","RГ4С520М2",Знак_2_4[n]);
 od;
 for n=1..nУсл_2_6 do
  РасчетКБКСч  ("КИФД",Функция_2_6[n],ИстКБК_2_6[n],ОбщУслКР,УслСч_2_6[n],УслСчКор_2_6[n],УслАн_2_6[n],"SГ3С520М2","RГ6С520М2",Знак_2_6[n]);
  РасчетКБКАн  ("КИФД",Функция_2_6[n],ИстКБК_2_6[n],ОбщУслКР,УслСч_2_6[n],УслСчКор_2_6[n],УслАн_2_6[n],"SГ3С520М2","RГ6С520М2",Знак_2_6[n]);
  РасчетКБКСчАн("КИФД",Функция_2_6[n],ИстКБК_2_6[n],ОбщУслКР,УслСч_2_6[n],УслСчКор_2_6[n],УслАн_2_6[n],"SГ3С520М2","RГ6С520М2",Знак_2_6[n]);
 od;
 for n=1..nУсл_2_8 do
  РасчетКБКСч  ("КИФД",Функция_2_8[n],ИстКБК_2_8[n],ОбщУслКР,УслСч_2_8[n],УслСчКор_2_8[n],УслАн_2_8[n],"SГ3С520М2","RГ8С520М2",Знак_2_8[n]);
  РасчетКБКАн  ("КИФД",Функция_2_8[n],ИстКБК_2_8[n],ОбщУслКР,УслСч_2_8[n],УслСчКор_2_8[n],УслАн_2_8[n],"SГ3С520М2","RГ8С520М2",Знак_2_8[n]);
  РасчетКБКСчАн("КИФД",Функция_2_8[n],ИстКБК_2_8[n],ОбщУслКР,УслСч_2_8[n],УслСчКор_2_8[n],УслАн_2_8[n],"SГ3С520М2","RГ8С520М2",Знак_2_8[n]);
 od;
 for n=1..nУсл_2_8а do
  РасчетКБКСч  ("КИФД",Функция_2_8а[n],ИстКБК_2_8а[n],ОбщУслКР,УслСч_2_8а[n],УслСчКор_2_8а[n],УслАн_2_8а[n],"SГ3С520М2","RГ8С520М2",Знак_2_8а[n]);
  РасчетКБКАн  ("КИФД",Функция_2_8а[n],ИстКБК_2_8а[n],ОбщУслКР,УслСч_2_8а[n],УслСчКор_2_8а[n],УслАн_2_8а[n],"SГ3С520М2","RГ8С520М2",Знак_2_8а[n]);
  РасчетКБКСчАн("КИФД",Функция_2_8а[n],ИстКБК_2_8а[n],ОбщУслКР,УслСч_2_8а[n],УслСчКор_2_8а[n],УслАн_2_8а[n],"SГ3С520М2","RГ8С520М2",Знак_2_8а[n]);
 od;
 for n=1..nУсл_2_10 do
  РасчетКБКСч  ("КИФД",Функция_2_10[n],ИстКБК_2_10[n],ОбщУслКР,УслСч_2_10[n],УслСчКор_2_10[n],УслАн_2_10[n],"SГ3С520М2","RГ10С520М2",Знак_2_10[n]);
  РасчетКБКАн  ("КИФД",Функция_2_10[n],ИстКБК_2_10[n],ОбщУслКР,УслСч_2_10[n],УслСчКор_2_10[n],УслАн_2_10[n],"SГ3С520М2","RГ10С520М2",Знак_2_10[n]);
  РасчетКБКСчАн("КИФД",Функция_2_10[n],ИстКБК_2_10[n],ОбщУслКР,УслСч_2_10[n],УслСчКор_2_10[n],УслАн_2_10[n],"SГ3С520М2","RГ10С520М2",Знак_2_10[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_ДЕТАЛ.Загл="Детализация значений ф. 0503128";
 РАБ.ВСПОМ.Ф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 Готово:S;
   if М1+М2=0:
      ^"Форма не заполнена";
   fi;
   ^"";
end;

Proc ФормироватьXML;
var i,j:I;
  РАБ.XML.ОткрытьТэг("ВидОтчета",'КодФормы=0503110');
  РАБ.XML.ОткрытьТэг("Отчет",'');
  РАБ.XML.ОткрытьТэг("ПозицииОтчета",'');
  for i= 1 .. М1 do
     Раб.XML.ДОБАТТР("Вычислимое","false");
     Раб.XML.ДОБАТТР("Стр","200");
     Раб.XML.ДОБАТТР("Индекс",Str(i));
     Раб.XML.ДОБАТТР("Тип","S");
     Раб.XML.ДОБАТТР("Графа","1"); Раб.XML.СоздатьТэг("Позиция",SГ1С210М1[i],True);
     Раб.XML.ДОБАТТР("Графа","3"); Раб.XML.СоздатьТэг("Позиция",SГ3С210М1[i],True);
     --значения
     Раб.XML.ДОБАТТР("Тип","R");
     for j=4..12 do
       Раб.XML.ДОБАТТР("Графа",Str(j));
       Раб.XML.ДОБАТТР("Вычислимое",if(j=7 or j=9 or j=11 or j=12 ,"true","false"));
       Раб.XML.СоздатьТэг("Позиция",Str(GetVariableN("RГ"+Str(j)+"С210М1["+Str(i)+"]"),2),True);
     od;

  od;
  for i= 1 .. М2 do
     Раб.XML.ДОБАТТР("Вычислимое","false");
     Раб.XML.ДОБАТТР("Стр","510");
     Раб.XML.ДОБАТТР("Индекс",Str(i));
     Раб.XML.ДОБАТТР("Тип","S");
     Раб.XML.ДОБАТТР("Графа","1"); Раб.XML.СоздатьТэг("Позиция",SГ1С520М2[i],True);
     Раб.XML.ДОБАТТР("Графа","3"); Раб.XML.СоздатьТэг("Позиция",SГ3С520М2[i],True);
     Раб.XML.ДОБАТТР("Графа","4"); Раб.XML.СоздатьТэг("Позиция",Str(RГ4С520М2[i],2),True);
     --значения
     Раб.XML.ДОБАТТР("Тип","R");
     for j=6..12 do
       Раб.XML.ДОБАТТР("Графа",Str(j));
       Раб.XML.ДОБАТТР("Вычислимое",if(j=7 or j=9 or j=11 or j=12 ,"true","false"));
       Раб.XML.СоздатьТэг("Позиция",Str(GetVariableN("RГ"+Str(j)+"С520М2["+Str(i)+"]"),2),True);
     od;

  od;

  ClearVariable(Раб.XML.BufAtName);
  ClearVariable(Раб.XML.BufAtVal);

  РАБ.XML.ЗакрытьТэг;--ПозицииОтчета

  Раб.XML.СоздатьТэг("КОД","0001",False);
  Раб.XML.СоздатьТэг("ИМЯ","Отчет о принятых бюджетных обязательствах",False);
  Раб.XML.СоздатьТэг("КОММЕНТАРИЙ","",False);
  Раб.XML.СоздатьТэг("ВЕРСИЯФОРМЫ","0",False);
  Раб.XML.СоздатьТэг("ДАТА",DateToString(ДК),False);
  Раб.XML.СоздатьТэг("НАЧАЛОПЕРИОДА",DateToString(ДН),False);
  Раб.XML.СоздатьТэг("КОНЕЦПЕРИОДА",DateToString(ДК),False);
  Раб.XML.СоздатьТэг("НАИМБЮДЖ","",False);
  Раб.XML.СоздатьТэг("ВИДДЕЯТЕЛЬНОСТИ","",False);
  Раб.XML.СоздатьТэг("ЕДИЗМ",Str(ЕдИзм),False);
  Раб.XML.СоздатьТэг("ТОЧН",Str(Точн),False);
  Раб.XML.СоздатьТэг("ОКЕИ",ОКЕИ,False);
  Раб.XML.СоздатьТэг("ПОКАЗАТЕЛЬ",Показатель,False);
  Раб.XML.СоздатьТэг("ИМЯРУК",ФИОРук,False);
  Раб.XML.СоздатьТэг("ИМЯБУХ",ФИОБух,False);
  Раб.XML.СоздатьТэг("ИМЯРУКФЭО",ФИОРукФЭО,False);

--  Раб.XML.СоздатьТэг("ДОЛЖНИСП",ИспДол,False,False,1);
--  Раб.XML.СоздатьТэг("ИМЯИСП",ИспФИО,False,False,1);
--  Раб.XML.СоздатьТэг("ТЕЛИСП",ИспТЕЛ,False,False,1);

--  Раб.XML.СоздатьТэг("ДОЛЖНУПЛ",УПЛДол,False,False,1);
--  Раб.XML.СоздатьТэг("ИМЯУПЛ",УПЛФИО,False,False,1);
--  Раб.XML.СоздатьТэг("ЦЕНТБУХ",ЦентрБУХинфо,False,False,1);

  Раб.XML.СоздатьТэг("НЕВЫГРУЖАТЬ","false",False);
  Раб.XML.СоздатьТэг("СВОД","false",False);
  Раб.XML.СоздатьТэг("СВОДСВОДА","false",False);
  Раб.XML.СоздатьТэг("GUID_CREATE",GetGUID,False);
  Раб.XML.СоздатьТэг("GUID_CURRENT","",False);

  РАБ.XML.ЗакрытьТэг;
  РАБ.XML.ЗакрытьТэг;
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_6"  : InsertFrame(nУсл_1_6  ,Iter+1);
   |Name="sУсл_1_8"  : InsertFrame(nУсл_1_8  ,Iter+1);
   |Name="sУсл_1_8а" : InsertFrame(nУсл_1_8а ,Iter+1);
   |Name="sУсл_1_10" : InsertFrame(nУсл_1_10 ,Iter+1);
   |Name="sУсл_1_10а": InsertFrame(nУсл_1_10а,Iter+1);
   |Name="sУсл_1_10б": InsertFrame(nУсл_1_10б,Iter+1);
   |Name="sУсл_2_4"  : InsertFrame(nУсл_2_4  ,Iter+1);
   |Name="sУсл_2_5"  : InsertFrame(nУсл_2_5  ,Iter+1);
   |Name="sУсл_2_6"  : InsertFrame(nУсл_2_6  ,Iter+1);
   |Name="sУсл_2_8"  : InsertFrame(nУсл_2_8  ,Iter+1);
   |Name="sУсл_2_8а" : InsertFrame(nУсл_2_8а ,Iter+1);
   |Name="sУсл_2_10" : InsertFrame(nУсл_2_10 ,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_6"  : DeleteFrame(nУсл_1_6  ,Iter);
   |Name="sУсл_1_8"  : DeleteFrame(nУсл_1_8  ,Iter);
   |Name="sУсл_1_8а" : DeleteFrame(nУсл_1_8а ,Iter);
   |Name="sУсл_1_10" : DeleteFrame(nУсл_1_10 ,Iter);
   |Name="sУсл_1_10а": DeleteFrame(nУсл_1_10а,Iter);
   |Name="sУсл_1_10б": DeleteFrame(nУсл_1_10б,Iter);
   |Name="sУсл_2_4"  : DeleteFrame(nУсл_2_4  ,Iter);
   |Name="sУсл_2_5"  : DeleteFrame(nУсл_2_5  ,Iter);
   |Name="sУсл_2_6"  : DeleteFrame(nУсл_2_6  ,Iter);
   |Name="sУсл_2_8"  : DeleteFrame(nУсл_2_8  ,Iter);
   |Name="sУсл_2_8а" : DeleteFrame(nУсл_2_8а ,Iter);
   |Name="sУсл_2_10" : DeleteFrame(nУсл_2_10 ,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 Восстан8_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Obj: Object;
 if not FindObject(AsString(Template.Name),Obj): Exit; fi;
 if AsString(Template.Name)="S1":
    if AsString(S1.Cell(3,12,CellContents,"",False))="": Exit; fi;
    CopyArray(RГ8С210М1_,RГ8С210М1);
   |AsString(Template.Name)="S3":
    if AsString(S3.Cell(3,12,CellContents,"",False))="": Exit; fi;
    CopyArray(RГ8С520М2_,RГ8С520М2);
   |True:
    Message("Упс! Куда не туда...",mtError);
    Exit;
 fi;
 Obj.Cell(3,12,CellBevel,False);
 Obj.Cell(3,12,CellBgColor,coTransparent);
 Obj.Cell(3,12,CellBorder,"1,0,1,1");
 Obj.Cell(3,12,CellContents,"",True);
end;

Proc Перенос8а_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Obj: Object;
 if not FindObject(AsString(Template.Name),Obj): Exit; fi;
 if AsString(Template.Name)="S1":
    CopyArray(RГ8С210М1,RГ8С210М1_);
    CopyArray(RГ8аС210М1,RГ8С210М1);
   |AsString(Template.Name)="S3":
    CopyArray(RГ8С520М2,RГ8С520М2_);
    CopyArray(RГ8аС520М2,RГ8С520М2);
   |True:
    Message("Упс! Куда не туда...",mtError);
    Exit;
 fi;
 Obj.Cell(3,12,CellBevel,True);
 Obj.Cell(3,12,CellBgColor,asInteger(Obj.Cell(3,14,CellBgColor,"")));
 Obj.Cell(3,12,CellBorder,"1,1,2,2");
 Obj.Cell(3,12,CellContents,"восстановить",True);
end;

Proc SГ3СxxxМx_OnExit(FieldName: String; Iter: Integer);
 if GetVariableS(FieldName+"["+Str(Iter)+"]")="":
    FieldName=SubStr(FieldName,1,2)+"1"+SubStr(FieldName,4,6);
    PutVariableS(FieldName,"");
 fi;
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="":
    if Match(Field,"*210*"): tmp=hКР; else tmp=hКИФД; fi;
 fi;
 КБК_=SubStr(tmp,1,Length(tmp)-4);
 КОСГУ_=SubStr(tmp,Length(tmp)-2,3);
 if Match(Field,"*210*"): tmp="ФКР."; else tmp="КИФД."; fi;
 КБК_=AnaElection(tmp+"*",False,False,tmp+КБК_);
 if not КБК_="":
    if Match(КБК_,"ФКР.*"): tmp=Раб.Бюджет2005.МаскаРасхКОСГУ;
      |Match(КБК_,"КИФД.*"): tmp=Раб.Бюджет2005.МаскаДефицитКОСГУ;
      |True: ^Cur;
    fi;
    КОСГУ_=AnaElection(tmp,False,False,"КОСГУ."+КОСГУ_);
    if not КОСГУ_="":
       КОСГУ_=SubStr(КОСГУ_,Pos(".",КОСГУ_)+1,255);
       tmp=SubStr(КБК_,Pos(".",КБК_)+1,255)+"."+КОСГУ_;
       PutVariableS(Field+"["+Str(Iter)+"]",tmp);
       if Match(Field,"*210*"): 
          hКР=tmp; 
          SГ1С210М1[Iter]=Раб.Бюджет.НаимКБК("КОСГУ2006",КОСГУ_);
         else
          hКИФД=tmp;
          SГ1С520М2[Iter]=Раб.Вспом.Ф0503127_Детал.НаимКБК("КИФД",SГ3С520М2[Iter]);
       fi;
    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Г6С210М1":  FieldName="1_6";
   |FieldName="RГ8С210М1":  FieldName="1_8";
   |FieldName="RГ8аС210М1": FieldName="1_8а";
   |FieldName="RГ10С210М1": FieldName="1_10";
   |FieldName="RГ10аС210М1":FieldName="1_10а";
   |FieldName="RГ10бС210М1":FieldName="1_10б";
   |True: Message("Неизвестный идентификатор "+FieldName);
 fi;
 Детализация(SГ3С210М1[Iter],FieldName);
 Return Cur;
end;

Func С520М2_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С520М2[Iter]="": Message("Нет данных для расшифровки",mtError); Template.Field="SГ3С520М2"; ^Cur; fi;
 if FieldName="RГ4С520М2":  FieldName="2_4";
   |FieldName="RГ6С520М2":  FieldName="2_6";
   |FieldName="RГ8С520М2":  FieldName="2_8";
   |FieldName="RГ8аС520М2": FieldName="2_8а";
   |FieldName="RГ10С520М2": FieldName="2_10";
   |True: Message("Неизвестный идентификатор "+FieldName);
 fi;
 Детализация(SГ3С520М2[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;

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;

--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
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;

Func ЕстьДанныеДляВыгрузки :Logical;
 if (Abs(RГ4С999)+Abs(RГ5С999)+Abs(RГ6С999)+Abs(RГ7С999)+Abs(RГ8С999)+Abs(RГ9С999)+Abs(RГ10С999)+Abs(RГ11С999)+Abs(RГ12С999))>0.00: ^True; fi;
 ^False;
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 btnВExcel_OnClick(Sender: String);
var xlsApp, xlsBooks, xlsBook, xlsSheets, xlsSheet, xlsRng :AutoObject;
var localTS, localDS, xlNameFile, xlNameFolder, ExcelVersion, Value :String;
var NoError, rusExcel, ExportWork :Logical;
var начало, maxIterCount, kol, max_kol, offsetRow, len, ii, Iter, IterCount, IterSave :Integer;

 УдалитьПустыеСтроки;
 if not ЕстьДанныеДляВыгрузки: Message("Нет данных для выгрузки.^MПредварительно сделайте расчет формы.", mtWarning); Template.Object="btnРасчет"; Exit; fi;

 rusExcel=False;
 localDS="";
 localTS="";
 NoError=True;
 maxIterCount=300;
 kol=0;
 if ChooseFolder(xlNameFolder, "Выберите папку для сохранения файла экспорта...")=cmOK:
   начало=Time;
   xlNameFile=xlNameFolder+"ExportExcel0503128_"+Format("%.4d", Year(ToDay))+Format("%.2d", Mon(ToDay))+Format("%.2d", Day(ToDay))+"_"+TimeToHMSstring_adv(Time, "")+".xls";
   if ExistFile(xlNameFile): DeleteFile(xlNameFile); fi;
   if ExistFile(xlNameFile+"x"): DeleteFile(xlNameFile+"x"); fi; -- для версий Офиса 2007 или старше
   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
         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<0:
                   Try 
                     Try xlsSheet=AsAutoObject(xlsSheets.Add); Finally ClearVariable(xlsSheet); end;
                   Except
                     ClearVariable(xlsSheet);
                     Raise;
                   end;
                 fi;
                 kol=kol+1;
                 xlsSheet=AsAutoObject(xlsBook.Worksheets[kol]);
                 Try
                   xlsSheet.Name = "0503128";
                   ShowProgress(11, "Формируем титул...");
                   offsetRow=0;
                   ProgressPos(1);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 01, 20.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 02, 04.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 03, 20.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 04, 11.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 05, 11.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 06, 11.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 07, 11.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 08, 11.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 09, 11.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 10, 11.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 11, 11.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 12, 11.0);
                   ProgressPos(2);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "ОТЧЕТ");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 08);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 12, 0, True, True, False, 0, True);
                   ProgressPos(3);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "о принятых бюджетных обязательствах");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 08);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 12, 0, True, True,  False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "КОДЫ");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   ProgressPos(4);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, "Форма по ОКУД");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow, 10);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "0503128");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Courier New", 10, 0, True, False, False, 0, True);
                   ProgressPos(5);
                   offsetRow=offsetRow+1;
                   Value="на "+Format("%.2d", Day(ДК))+" "+Месяца(Mon(ДК))+" "+Format("%.4d", Year(ДК))+" г.";
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, Value);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 07);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, True,  False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 05, offsetRow, 07, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "Дата");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, DateToString(ДК));
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(5);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow  , 01, "Главный распорядитель, распорядитель, получатель");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+0, 01, offsetRow+0, 04);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow  , 01, РАБ.EXCEL.xlLeft, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 01, "бюджетных средств, главный администратор, админи-");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+1, 01, offsetRow+1, 04);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 01, РАБ.EXCEL.xlLeft, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 01, "стратор источников финансирования дефицита бюджета");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+2, 01, offsetRow+2, 04);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 01, РАБ.EXCEL.xlLeft, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow  , 05, Учреждение);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow+2, 08);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow  , 05, РАБ.EXCEL.xlLeft, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, True , 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow+2, 05, offsetRow+2, 08, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   ProgressPos(6);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+0, 11, offsetRow+0, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 11, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 10, "по ОКПО");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 10, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 11, ОКПО);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+1, 11, offsetRow+1, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 10, "Глава по БК");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 10, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 11, ППП);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+2, 11, offsetRow+2, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(7);
                   offsetRow=offsetRow+3;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Наименование бюджета:");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+0, 01, offsetRow+0, 04);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, НАИМБЮДЖ);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 08);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, True, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 05, offsetRow, 08, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "по ОКАТО");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, ОКТМО);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 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, 02, offsetRow, 03);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.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, 02, offsetRow, 03);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "383");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(10);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-8, 11, offsetRow, 12, True,  True,  True,  True, True,  True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-7, 11, offsetRow, 12, True,  True,  True,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   РАБ.EXCEL.СброситьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow-5, 11, offsetRow-5, 12, False, False, False, True, False, False, False, False);
                   ProgressPos(11);
                   РАБ.EXCEL.PrintSetup_ЧБ_Поля10(xlsApp, xlsSheet, False, 0, 0, 0, 0, True, False, True, 90);
                   РАБ.EXCEL.PrintSetup_Колонтитулы(xlsSheet, rusExcel, "");
                   --
                   ShowProgress(29, "Формируем таблицу (заголовки)...");
                   ProgressPos(01);
                   offsetRow=offsetRow+2;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Наименование"+Chr(10)+"показателя");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow+2, 01);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(02);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "Код"+Chr(10)+"строки");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 02, offsetRow+2, 02);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(03);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "Код по бюджетной"+Chr(10)+"классификации");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 03, offsetRow+2, 03);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(04);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "Утверждено (доведено)"+Chr(10)+ЗаглДоведено);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow+1, 05);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 04, "ассигнований бюджетных");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 04, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(05);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 05, "лимитов бюджетных обязательств");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 05, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(06);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "Принято обязательств");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 06, offsetRow, 09);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 06, "бюджетных обязательств");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+1, 06, offsetRow+1, 07);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 06, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(07);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 08, "денежных обязательств");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+1, 08, offsetRow+1, 09);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 08, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(08);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 06, "всего");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 06, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 07, "из них сверх утвержденных бюджетных назначений");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 07, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(09);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 08, "всего");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 08, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 09, "из них сверх утвержденных бюджетных назначений");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 09, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(10);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "Исполнено денежных обязательств");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow+2, 10);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(11);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "Не исполнено");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(12);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 11, "принятых бюджетных обязательств");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+1, 11, offsetRow+2, 11);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 11, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 12, "принятых денежных обязательств");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+1, 12, offsetRow+2, 12);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 12, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(13);
                   offsetRow=offsetRow+3;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "1");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "2");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "3");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "4");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "5");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "6");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "7");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "8");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, "9");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "10");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "11");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 12, "12");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   ProgressPos(14);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 1, offsetRow, 12, True);
                   ProgressPos(15);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "1. Бюджетные обязательства по расходам, всего:");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(16);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "200");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(17);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(18);
                   if RГ4С200<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 04,  RГ4С200, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(19);
                   if RГ5С200<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 05,  RГ5С200, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(20);
                   if RГ6С200<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06,  RГ6С200, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(21);
                   if RГ7С200<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07,  RГ7С200, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(22);
                   if RГ8С200<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 08,  RГ8С200, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(23);
                   if RГ9С200<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 09,  RГ9С200, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(24);
                   if RГ10С200<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 10, RГ10С200, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(25);
                   if RГ11С200<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 11, RГ11С200, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(26);
                   if RГ12С200<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 12, RГ12С200, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(27);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "в том числе:");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,  2,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(28);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-5, 01, offsetRow, 12, False,  True,  False,  True,  True,   True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-1, 02, offsetRow, 12, True,   True,  True,  False, False,  False,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   ProgressPos(29);
                   xlsRng=AsAutoObject(xlsSheet.Rows["1:"+Str(offsetRow)]);
                   Try xlsRng.AutoFit; Finally ClearVariable(xlsRng); end;
                   --
                   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; --NoError
   len=М1;
   if NoError:
     if len>0:
       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["0503128"]);
                       Try
                         for ii=IterSave to len do
                           ProgressPos(ii);
                           offsetRow=offsetRow+1;
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, SГ1С210М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "200");
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, SГ3С210М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ4С210М1[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 04,  RГ4С210М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ5С210М1[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 05,  RГ5С210М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ6С210М1[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06,  RГ6С210М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ7С210М1[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07,  RГ7С210М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ8С210М1[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 08,  RГ8С210М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ9С210М1[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 09,  RГ9С210М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ10С210М1[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 10, RГ10С210М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ11С210М1[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 11, RГ11С210М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ12С210М1[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 12, RГ12С210М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           --
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow, 12, False,  True,  False,  True,  True,   True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 12, True,  False,  True,  False, False,  False,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                           --
                           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.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;
     else -- если данных нет рисуем пустую строчку
       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["0503128"]);
                 Try
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "200");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   --
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow, 12, False,  True,  False,  True,  True,   True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 12, True,  False,  True,  False, False,  False,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Except
                 NoError=False;
                 ExportWork=False;
                 xlsBook.Close(False); -- закрыть книгу без сохранения
               end;
             Finally
               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;
     fi; -- len>0:
   fi; --NoError
   if NoError:
     ShowProgress(14, "Формируем таблицу (часть 2)...");
     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["0503128"]);
                 Try
                   offsetRow=offsetRow+1;
                   ProgressPos(01);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "2. Бюджетные обязательства по выплатам источников финансирования дефицита бюджета, всего:");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(02);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "510");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(03);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(04);
                   if  RГ4С510<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 04,  RГ4С510, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(05);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(06);
                   if  RГ6С510<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06,  RГ6С510, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(07);
                   if  RГ7С510<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07,  RГ7С510, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(08);
                   if  RГ8С510<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 08,  RГ8С510, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(09);
                   if  RГ9С510<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 09,  RГ9С510, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(10);
                   if RГ10С510<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 10, RГ10С510, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(11);
                   if RГ11С510<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 11, RГ11С510, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(12);
                   if RГ12С510<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 12, RГ12С510, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   ProgressPos(13);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "в том числе:");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,  2,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   ProgressPos(14);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-1, 01, offsetRow, 12, False,  True,  False,  True,  True,   True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-1, 02, offsetRow, 12, True,   False,  True,  False, False,  False,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Except
                 NoError=False;
                 ExportWork=False;
                 xlsBook.Close(False); -- закрыть книгу без сохранения
               end;
             Finally
               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
   len=М2;
   if NoError:
     if len>0:
       ShowProgress(len, "Формируем таблицу (часть 2)...");
       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["0503128"]);
                       Try
                         for ii=IterSave to len do
                           ProgressPos(ii);
                           offsetRow=offsetRow+1;
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, SГ1С520М2[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "510");
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, SГ3С520М2[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ4С520М2[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 04,  RГ4С520М2[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "");
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ6С520М2[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06,  RГ6С520М2[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ7С520М2[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07,  RГ7С520М2[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ8С520М2[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 08,  RГ8С520М2[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ9С520М2[ii] <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 09,  RГ9С520М2[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ10С520М2[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 10, RГ10С520М2[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ11С520М2[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 11, RГ11С520М2[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ12С520М2[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 12, RГ12С520М2[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           --
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow, 12, False,  True,  False,  True,  True,   True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 12, True,  False,  True,  False, False,  False,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                           --
                           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.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;
     else -- если данных нет рисуем пустую строчку
       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["0503128"]);
                 Try
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "510");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlRight,  0, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   --
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow, 12, False,  True,  False,  True,  True,   True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 12, True,  False,  True,  False, False,  False,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Except
                 NoError=False;
                 ExportWork=False;
                 xlsBook.Close(False); -- закрыть книгу без сохранения
               end;
             Finally
               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;
     fi; -- len>0:
   fi; --NoError
   if NoError:
     ShowProgress(09, "Заключительный этап... ");
     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["0503128"]);
                 Try
                   ProgressPos(01);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "999");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if RГ4С999 <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 04,  RГ4С999, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if RГ5С999 <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 05,  RГ5С999, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if RГ6С999 <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06,  RГ6С999, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if RГ7С999 <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07,  RГ7С999, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if RГ8С999 <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 08,  RГ8С999, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if RГ9С999 <>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 09,  RГ9С999, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if RГ10С999<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 10, RГ10С999, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if RГ11С999<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 11, RГ11С999, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if RГ12С999<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 12, RГ12С999, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   --
                   ProgressPos(02);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 12, False,  True,  False,  True,  True,   True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 12, True,  False,  True,   True, False,  False,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   --
                   ProgressPos(03);
                   offsetRow=offsetRow+3;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "Руководитель");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8); 
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, ФИОРук);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 07, offsetRow, 08, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 10, offsetRow, 11, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   ProgressPos(04);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "(подпись)");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "(расшифровка подписи)");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 07, offsetRow, 08, True);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11, True);
                   --
                   ProgressPos(05);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "Главный бухгалтер");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8); 
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, ФИОБух);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 07, offsetRow, 08, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 10, offsetRow, 11, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   ProgressPos(06);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "(подпись)");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "(расшифровка подписи)");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 07, offsetRow, 08, True);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11, True);
                   --
                   ProgressPos(07);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "Руководитель финансово-экономической службы");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow+1, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8); 
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, ФИОРукФЭО);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 07, offsetRow, 08, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 10, offsetRow, 11, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   ProgressPos(08);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "(подпись)");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "(расшифровка подписи)");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 07, offsetRow, 08, True);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11, True);
                   --
                   ProgressPos(09);
                   offsetRow=offsetRow-1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, '"___" _______________ 20___ г.');
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 03);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True, False, 0, True);
                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Except
                 NoError=False;
                 ExportWork=False;
                 xlsBook.Close(False); -- закрыть книгу без сохранения
               end;
             Finally
               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 OnOpen(Create: Logical);
 КонтрольВерсии;
 ОткрытьНастр(False);
 Раб.Настр_Печать.Cfg("",SelfCfg);
 if Учреждение="": ЗаполнитьРекв(nil); fi;
end;
--Обработчики событий шаблона -----
--
------------------------------- Выгрузка ------------------------------

Func УдалитьЗапрещенныйСимволВпозиции(valStr:String; delPos:Integer) :String;
var tmpFrst, tmpLast, RES :String;
var len :Integer;
 RES=""; tmpFrst=""; tmpLast="";
 len=Length(valStr);
 if delPos<1: delPos=1; fi;
 if delPos>len or valStr="": ^valStr; fi;
 if delPos>1:   tmpFrst=SubStr(valStr,        1, delPos-1  ); else tmpFrst=""; fi;
 if delPos<len: tmpLast=SubStr(valStr, delPos+1, len-delPos); else tmpLast=""; fi;
 RES=tmpFrst+tmpLast;
 ^RES;
end;

Func ПроверитьНаЗапрещенныеСимволы(Value:String) :String;
var num, ii :Integer;
 ClearVariable(Buf);
 Buf[01]=Chr(010); -- перевод строки
 Buf[02]=Chr(013); -- возврат каретки
 Buf[03]=Chr(034); -- стандартная кавычка
 Buf[04]=Chr(035); -- #
 Buf[05]=Chr(039); -- апостроф
 Buf[06]=Chr(096); -- акцент (ударение)
 Buf[07]=Chr(124); -- вертикальная черта
 Buf[08]=Chr(145); -- одинарная кавычка открывающая
 Buf[09]=Chr(146); -- одинарная кавычка закрывающая
 Buf[10]=Chr(147); -- двойная кавычка узкая открывающая
 Buf[11]=Chr(148); -- двойная кавычка узкая закрывающая
 Buf[12]=Chr(166); -- вертикальная черта прерывистая
 Buf[13]=Chr(171); -- двойная кавычка широкая открывающая
 Buf[14]=Chr(187); -- двойная кавычка широкая закрывающая
 Value=Trim(Value);
 for ii=1 to LengthOfArray(Buf) do
   num=Pos(Buf[ii], Value);
   while num>0 do 
     Value=УдалитьЗапрещенныйСимволВпозиции(Value, num);
     num=Pos(Buf[ii], Value);
   od;
 od;
 ^Value;
end;

Func СформироватьИмяФайла(CФ:String; VФ:String; RD:Date; Архив:Logical; CВ:String) :String;
var ok1, ok2, mm :Integer;
var RES, PФ :String;
 RES="";
 ok1=Length(Trim(CФ)); --код формы
 ok2=Length(Trim(VФ)); --версия формы
 if (ok1=3 or ok1=4) and ok2=2:
   mm=Mon(RD);
   if mm=1                  : PФ="Y";
   |  mm=4 or mm=7 or mm=10 : PФ="Q";
   else                       PФ="M";
   fi;
   if Архив: 
     if Length(CВ)=3: RES=CВ+"_"+"01"+Format("%.2d", mm)+Format("%.2d", Year(RD)-2000)+"_"+CФ+"_"+PФ+"_"+VФ+".ZIP"; fi;
   else
     RES=CФ+PФ+VФ+".TXT";
   fi;
 fi;
 ^RES;
end;

Func ЗаменитьРазделительПредложения(srcSTR:String; oldSEP:String; newSEP:String) :String;
var num, ii :Integer;
var RES :String;
 RES="";
 num=WordsCount(srcSTR, oldSEP);
 if num>0:
   for ii=1 to num do
     RES=РАБ.БЮДЖЕТ2005.Объединить(RES, ExtractWord(ii, srcSTR, oldSEP), newSEP);
   od;
 fi;
 ^RES;
end;

Func ЗаписатьСтроку_01Раздела_Итого :String;
var RES :String;
var SUM :Numeric;
 RES="200|***|9600|0000000|000|000|";
 SUM= RГ4С200;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ5С200;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ6С200;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ7С200;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ8С200;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ9С200;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ10С200; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ11С200; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ12С200; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 ^RES;
end;

Func ЗаписатьСтроку_01Раздела(Iter:Integer) :String;
var RES, Value :String;
var SUM :Numeric;
 RES="";
 if Iter>0:
   Value=ЗаменитьРазделительПредложения(SГ3С210М1[Iter], ".", "|");
   if Match(Value, "???|????|???????|???|???"):
     RES="200|"+Value+"|";
     SUM= RГ4С210М1[Iter]; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
     SUM= RГ5С210М1[Iter]; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
     SUM= RГ6С210М1[Iter]; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
     SUM= RГ7С210М1[Iter]; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
     SUM= RГ8С210М1[Iter]; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
     SUM= RГ9С210М1[Iter]; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
     SUM=RГ10С210М1[Iter]; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
     SUM=RГ11С210М1[Iter]; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
     SUM=RГ12С210М1[Iter]; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
   fi;
 fi;
 ^RES;
end;

Func ЗаписатьСтроку_02Раздела_Итого :String;
var RES :String;
var SUM :Numeric;
 RES="510|***|90000000000000000|";
 SUM= RГ4С510;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM=       0;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ6С510;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ7С510;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ8С510;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ9С510;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ10С510;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ11С510; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ12С510; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 ^RES;
end;

Func ЗаписатьСтроку_03Раздела_Итого :String;
var RES :String;
var SUM :Numeric;
 RES="999|***|*****************|";
 SUM= RГ4С999;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ5С999;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ6С999;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ7С999;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ8С999;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ9С999;  RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ10С999; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ11С999; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 SUM= RГ12С999; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 ^RES;
end;

Func ЗаписатьСтроку_02Раздела(SГР2:String; SГР3:String; NГР4:Numeric;NГР5:Numeric; NГР6:Numeric; NГР7:Numeric; NГР8:Numeric; NГР9:Numeric; NГР10:Numeric; NГР11:Numeric; NГР12:Numeric) :String;
var RES :String;
var SUM :Numeric;
 RES="";
 SUM=Abs(NГР4)+Abs(NГР5)+Abs(NГР6)+Abs(NГР7)+Abs(NГР8)+Abs(NГР9)+Abs(NГР10)+Abs(NГР11)+Abs(NГР12);
 if Length(SГР2)=3 and Length(SГР3)=20 and SUM>0.00:
   RES=SГР2+"|"+SubStr(SГР3, 1, 3)+"|"+SubStr(SГР3, 4, 17)+"|";
   SUM=NГР4; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
   SUM=NГР5; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
   SUM=NГР6; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
   SUM=NГР7; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
   SUM=NГР8; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
   SUM=NГР9; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
   SUM=NГР10; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
   SUM=NГР11; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
   SUM=NГР12; RES=RES+if(SUM<>0.00, Str(SUM, 2), "0")+"|";
 fi;
 ^RES;
end;


Proc ЗакрытьФайлПоОшибке(numberFile:Integer; FlagCreate:Logical; RESnameFile:String);
 if FlagCreate:
   TextFileClose(numberFile);
   Message("Ошибка записи в файл '"+RESnameFile+"'!", mtError);
 else
   Message("Ошибка создания файла '"+RESnameFile+"'!", mtError);
 fi;
end;

Proc Экспорт_TXT_ФК(Архивировать:Logical);
var Путь, ПутьАрх, nameFile, nameFileArc, Value, КБК :String;
var FS, num, ii, mm :Integer;
var FlagCreate :Logical;

 if Year(ДК)<2000: Message("Дата отчета должна быть позже 2000 года.", mtWarning); Template.Field="ДК"; Exit; fi;
 if Day(ДК)<>1: Message("Для выгрузки в файл требуется отчет расчитанный на '1' число.", mtWarning); Template.Field="ДК"; Exit; fi;
 if not ЕстьДанныеДляВыгрузки: Message("Нет данных для выгрузки.^MПредварительно сделайте расчет формы.", mtWarning); Template.Object="btnРасчет"; Exit; fi;
 if not Length(ПроверитьНаЗапрещенныеСимволы(ППП))=3: Message("Не заполнено 'Глава по БК' учреждения", mtWarning); Template.Field="Учреждение"; Exit; fi;
 --if Trim(ОКАТО)="": Message("Не заполнено 'ОКАТО' учреждения", mtWarning); Template.Field="Учреждение"; Exit; fi;
 --
 if ChooseFolder(Путь, "Выберите папку для сохранения файла выгрузки...")=cmOk:
   nameFile=РАБ.БЮДЖЕТ2005.Контроль2Слэш(Путь)+СформироватьИмяФайла("228", "01", ДК, False, "");
   mm=Mon(ДК);
   Try
     Try if ExistFile(nameFile): DeleteFile(nameFile); fi; Except end;
     FlagCreate=False;
     FS=TextFileCreate(nameFile);
     FlagCreate=True;
     --Заголовочная часть
     TextFileWriteLn(FS, "#%");
     TextFileWriteLn(FS, "КОДФ=228");
     TextFileWriteLn(FS, "ПРД="+if(mm=1: "5" | mm=4 or mm=7 or mm=10: "4", "3"));
     TextFileWriteLn(FS, "РДТ="+DateToString(ДК));
     TextFileWriteLn(FS, "ВИД=3");   -- всегда "3"
     TextFileWriteLn(FS, "ИСТ="+Trim(ППП));
     TextFileWriteLn(FS, "#");
     -- Содержательная часть 1 раздела
     TextFileWriteLn(FS, "#@");
     TextFileWriteLn(FS, "ТБ=01");
     TextFileWriteLn(FS, "#$");
     Value=ЗаписатьСтроку_01Раздела_Итого;
     if Value<>"": TextFileWriteLn(FS, Value); fi;
     num=М1;
     if num>0:
       for ii=1 to num do
         Value=ЗаписатьСтроку_01Раздела(ii);
         if Value<>"": TextFileWriteLn(FS, Value); fi;
       od;
     fi;
     TextFileWriteLn(FS, "#");
    -- Содержательная часть 2 раздела
     TextFileWriteLn(FS, "#@");
     TextFileWriteLn(FS, "ТБ=02");
     TextFileWriteLn(FS, "#$");
     Value=ЗаписатьСтроку_02Раздела_Итого;
     if Value<>"": TextFileWriteLn(FS, Value); fi;
   num=М2;
     if num>0:
        for ii=1 to num do
         КБК=ЗаменитьРазделительПредложения(SГ3С520М2[ii], ".", "");
         Value=ЗаписатьСтроку_02Раздела("510", КБК, RГ4С520М2[ii],0, RГ6С520М2[ii], RГ7С520М2[ii], RГ8С520М2[ii], RГ9С520М2[ii], RГ10С520М2[ii], RГ11С520М2[ii], RГ12С520М2[ii]);
         if Value<>"": TextFileWriteLn(FS, Value); fi;
       od;
     fi;
    Value=ЗаписатьСтроку_03Раздела_Итого;
     if Value<>"": TextFileWriteLn(FS, Value); fi;
     TextFileWriteLn(FS, "#");
    -- Заключительная часть
     TextFileWriteLn(FS, "#&");
     TextFileWriteLn(FS, "Руководитель="+ПроверитьНаЗапрещенныеСимволы(ФИОРук));
     TextFileWriteLn(FS, "Гл. бухгалтер="+ПроверитьНаЗапрещенныеСимволы(ФИОБух));

     TextFileWriteLn(FS, "#");
     TextFileWriteLn(FS, "#~");
     TextFileWriteLn(FS, "ППО=Турбо Бухгалтер 6.9 - "+ПроверитьНаЗапрещенныеСимволы(ВЕРСИЯ.Сборка_)+" "+ПроверитьНаЗапрещенныеСимволы(ВЕРСИЯ.ДатаСборки_));
     TextFileWriteLn(FS, "#");
     TextFileWriteLn(FS, "##");
     --
     TextFileClose(FS);
     --
     if ExistFile(nameFile): 
       if Архивировать:
         ClearTrace(True);
         ПутьАрх=РАБ.БЮДЖЕТ2005.Контроль2Слэш(PlanVar("STD_RPO"))+"\Bin\7z.exe";
         if ExistFile(ПутьАрх):
           nameFileArc=Путь+СформироватьИмяФайла("228", "01", ДК, True, ППП);
           Try if ExistFile(nameFileArc): DeleteFile(nameFileArc); fi; Except end;
           ExecuteProgram(ПутьАрх+" a -y -tzip "+nameFileArc+" "+nameFile, True);
         else
           Trace("Не найден файл-архиватор. Архивация выгрузки невозможна.");
         fi;
       fi;
       if EnqOkCancel("Открыть созданный файл выгрузки?", mtInformation)=cmOK: OpenEditor(nameFile); fi;
     fi;
   Except
     ЗакрытьФайлПоОшибке(FS, FlagCreate, nameFile);
     Raise;
   end;
 fi; --ChooseFolder
end;

Proc Экспорт_Excel;
 Message("В разработке...");
end;

Proc Button1_OnClick(Sender: String);
var num :Integer;
 ClearVariable(Buf);
 Buf[1]="Выгрузка в файл (формат ФК) [ + архивация]";
 Buf[2]="Выгрузка в файл (формат ФК) [только текст]";
 Buf[3]="Выгрузка в Excel";
 num=Alternate("Выберите тип выгрузки...", Buf, -1, 1, 12);
 if num=1: Экспорт_TXT_ФК(True);
 |  num=2: Экспорт_TXT_ФК(False);
 |  num=3: Экспорт_Excel;
 else Exit;
 fi;
end;


Конец