БЛАНКСШАБЛОНОМ "ф.0503125 Справка по консолидируемым расчетам";

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

btnРасчет   :Object;
btnНастр    :Object;
btnОчистить :Object;
btnПечать   :Object;
btnЗакрыть  :Object;
cbНеУчитЗаклПр :Object;
cbИзв       :Object;
btnExport   :Object;
cb_НеВыгружать1Раздел :Object;
flgНеВыгружать1Раздел :Logical;

S1: Section;
S2: Section;
S3: Section;
S4: Section;
S5: Section;

Н1: Section;
Н2: Section;
Н3: Section;
Н4: Section;
Н5: Section;
Н6: Section;
Н7: Section;

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

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

var УпрН:I;

var fНаимКонтр:L;

var fНаимКонтр_:S=if(fНаимКонтр,"заменять на","не заменять");
var ЗамНаимКонтр:S=["--//--"];

var КодСчЗнач[]:S;
var КодСчНаим[]:S;
var КодСчСокр[]:S;

var Наим[]:S;
var УслКодСч[]:S;
var УслКоррСч[]:S;
var УслАна[]:S;
var СправКонтр[]:S;
var СправКонтрКонс[]:S;
var fИНН[]:L;
var fИНН_[]:S=if(fИНН[$],"V","");
var fИННКонс[]:L;
var fИННКонс_[]:S=if(fИННКонс[$],"V","");
var fППП[]:L;
var fППП_[]:S=if(fППП[$],"V","");
var fПППКонс[]:L;
var fПППКонс_[]:S=if(fПППКонс[$],"V","");
var fОКТМО[]:L;
var fОКТМО_[]:S=if(fОКТМО[$],"V","");
var fОКТМОКонс[]:L;
var fОКТМОКонс_[]:S=if(fОКТМОКонс[$],"V","");
var fЭлБ[]:L;
var fЭлБ_[]:S=if(fЭлБ[$],"V","");
var fКодСч0[]:S;
var fКодСч0_[]:S;
var fКодСч1[]:S;
var fКодСч1_[]:S;
var fКодСч2[]:S;
var fКодСч2_[]:S;
var fКодСч3[]:S;
var fКодСч3_[]:S;
var fИтог[]:I;
var fИтог_[]:S=if(fИтог[$]=0:"гр.6=Сум(гр.6), гр.7=Сум(гр.7)"|fИтог[$]=1:"гр.6=Сум(гр.6-гр.7), гр.7=не запол."|fИтог[$]=-1:"гр.7=Сум(гр.7-гр.6), гр.6=не запол.");
var fВидРасч[]:I;
var fВидРасч_[]:S=if(fВидРасч[$]=0:"неденежные"|fВидРасч[$]=1:"денежные"|True:"Определяется условием");
var ВР_УслКоррСч[]:S;
var ВР_УслАна[]:S;

var УпрНаимК:I;
var НаимК_Поле[]:S;
var НаимК_Кмнт[]:S;
var НаимК_ПреФикс[]:S;
var НаимК_ПостФикс[]:S;

var СписокСч[]:S;

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

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

Учреждение:S;
selfКБП:S;
ОКПО:S;
ИНН:S;
УЧР_ИНН :S;
НаимБюдж:S;
ОКТМО:S;
--ГлаваБК:S;

НаимВД:S;

КодСч:S;

ППП:S;

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

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

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

УслКонтр:S;
var ОбщУслАн:S=if(РАБ.ПАРАМ_ОТЧ.ОбщУслАн="","","("+РАБ.ПАРАМ_ОТЧ.ОбщУслАн+")");
var ОбщУслКД:S=РАБ.ПАРАМ_ОТЧ.ОбщУслКД;
var ОбщУслКР:S=РАБ.ПАРАМ_ОТЧ.ОбщУслКР;
var ОбщУслКИФД:S=РАБ.ПАРАМ_ОТЧ.ОбщУслКИФД;

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

ВД:S;
МаскаСч:S;
iНастр:I;

М1:I;
SГ1С020М1[]:S;
SГ2С020М1[]:S;
SГ3С020М1[]:S; 
SГ4С020М1[]:S;
SГ5С020М1[]:S;
SГ6С020М1[]:S;
RГ7С020М1[]:N;
RГ8С020М1[]:N;
SГ9С020М1[]:S;
SГ10С020М1[]:S;
SГ11С020М1[]:S;
SГ12С020М1[]:S;
ВидРасч[]:I;
var ВидРасч_[]:S=if(ВидРасч[$]=0:"неденежные"|ВидРасч[$]=1:"денежные"|True:"");
ПризнКонтр[]:S;
var Док[]:S;
SГ6С020М1_[]:S; --тут лежит маска счета для расшифровки

var RГ7С030_:N=SumOfArray(RГ7С020М1,М1);
var RГ8С030_:N=SumOfArray(RГ8С020М1,М1);

var RГ7С030:N=if(fИтог[iНастр]=0:RГ7С030_|fИтог[iНастр]=1:RГ7С030_-RГ8С030_|fИтог[iНастр]=-1:0);
var RГ8С030:N=if(fИтог[iНастр]=0:RГ8С030_|fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С030_-RГ7С030_);

var РассчитатьИтого:S="Рассчитать итого";
var ОчиститьИтого:S="Очистить итого";

М2:I;
var SГ1С040М2[]:S=if($=1,"в том числе по номеру (коду) счета","");
SГ3С040М2[]:S;
SГ4С040М2[]:S;
SГ5С040М2[]:S;
SГ6С040М2[]:S;
RГ7С040М2[]:N;
RГ8С040М2[]:N;
SГ9С040М2[]:S;
SГ10С040М2[]:S;
SГ11С040М2[]:S;

М3:I;
var SГ1С050М3[]:S=if($=1,"денежные расчеты","");
SГ3С050М3[]:S;
SГ4С050М3[]:S;
SГ5С050М3[]:S;
SГ6С050М3[]:S;
RГ7С050М3[]:N;
RГ8С050М3[]:N;
SГ9С050М3[]:S;
SГ10С050М3[]:S;
SГ11С050М3[]:S;
SГ12С050М3[]:S;

М4:I;
var SГ1С060М4[]:S=if($=1,"неденежные расчеты","");
SГ3С060М4[]:S;
SГ4С060М4[]:S;
SГ5С060М4[]:S;
SГ6С060М4[]:S;
RГ7С060М4[]:N;
RГ8С060М4[]:N;
SГ9С060М4[]:S;
SГ10С060М4[]:S;
SГ11С060М4[]:S;
SГ12С060М4[]:S;

var ОтчGUID:S;

var Buf[]:S;
var Key[]:S;
var Txt[]:S;

var BufКонтр[]:S;
var BufИНН[]:S;
var BufППП[]:S;
var BufОКТМО[]:S;
var BufЭлБ[]:S;
var BufСч[]:S;
var BufКоррСч[]:S;

fИзв:L;

var OWA_Вх:I;
var OWA_Исх:I;
var OWA_НФА:I;
var OWA_Контр:I;

var CacheКонтр[]:S;
var CacheНаим[]:S;

var SelfBln:S="ОТЧЕТЫ.БАЛАНС.191Н.0503125_157";
var НастрGUID:S;
var НастрВерсия:I=100111;
var ТекущаяВерсия:I;
2--Процедуры и функции-----
Proc Настр(aСохр:L);
var n,nn:i;
var Val:S;
var Flag:L;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать(SelfBln,0,НастрВерсия,"",НастрGUID):
    Раб.Настр.Добавить("ТекущаяВерсия","I");
    Раб.Настр.Добавить("fНаимКонтр","L");
    Раб.Настр.Добавить("ЗамНаимКонтр","S");
    Раб.Настр.Добавить("УпрН","I");
    for n=1..УпрН do
     val="["+Str(n)+"]";
     Раб.Настр.Добавить("Наим"+Val,"S");
     Раб.Настр.Добавить("УслКодСч"+Val,"S");
     Раб.Настр.Добавить("УслКоррСч"+Val,"S");
     Раб.Настр.Добавить("УслАна"+Val,"S");
     Раб.Настр.Добавить("СправКонтр"+Val,"S");
     Раб.Настр.Добавить("fИНН"+Val,"L");
     Раб.Настр.Добавить("fППП"+Val,"L");
     Раб.Настр.Добавить("fОКТМО"+Val,"L");
     Раб.Настр.Добавить("fЭлБ"+Val,"L");
     Раб.Настр.Добавить("fКодСч0"+Val,"S");
     Раб.Настр.Добавить("fКодСч0_"+Val,"S");
     Раб.Настр.Добавить("fКодСч1"+Val,"S");
     Раб.Настр.Добавить("fКодСч1_"+Val,"S");
     Раб.Настр.Добавить("fКодСч2"+Val,"S");
     Раб.Настр.Добавить("fКодСч2_"+Val,"S");
     Раб.Настр.Добавить("fКодСч3"+Val,"S");
     Раб.Настр.Добавить("fКодСч3_"+Val,"S");
     Раб.Настр.Добавить("СправКонтрКонс"+Val,"S");
     Раб.Настр.Добавить("fИННКонс"+Val,"L");
     Раб.Настр.Добавить("fПППКонс"+Val,"L");
     Раб.Настр.Добавить("fОКТМОКонс"+Val,"L");
     Раб.Настр.Добавить("fИтог"+Val,"I");
     Раб.Настр.Добавить("fВидРасч"+Val,"I");
     Раб.Настр.Добавить("ВР_УслКоррСч"+Val,"S");
     Раб.Настр.Добавить("ВР_УслАна"+Val,"S");
    od;
    Раб.Настр.Добавить("УпрНаимК","I");
    for n=1..УпрН do
     val="["+Str(n)+"]";
     Раб.Настр.Добавить("НаимК_Поле"+Val,"S");
     Раб.Настр.Добавить("НаимК_Кмнт"+Val,"S");
     Раб.Настр.Добавить("НаимК_ПреФикс"+Val,"S");
     Раб.Настр.Добавить("НаимК_ПостФикс"+Val,"S");
    od;
    if aСохр:
       ТекущаяВерсия=НастрВерсия;
       Раб.Настр.Сохранить;
      else
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
          Flag=ExecuteFuncL("ПоУмолчНастр_onEnter","OnOpen",1);
       fi;
    fi;
 fi;
end;

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

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=7..8 do
      for r=1..rr do
       Obj.Cell(r,c,CellFormat,cf);
      od;
     od;
  fi;
 od;
end;

Proc ОткрНастр(Flag:L);
var Obj: Object;
var n:i;
 Настр(not Flag);
 btnРасчет.Visible=not Flag;
 btnНастр.Visible=not Flag;
 btnОчистить.Visible=not Flag;
 btnПечать.Visible=not Flag;
 btnЗакрыть.Visible=not Flag;
 cbИзв.Visible=not Flag;
 btnExport.Visible=not Flag;
 cb_НеВыгружать1Раздел.Visible=not Flag;
 cbНеУчитЗаклПр.Visible=False;
 for n=1..7 do
  if FindObject("Н"+Str(n),Obj):
     Obj.Visible=Flag;
  fi;
 od;
 Template.Field="Наим";
 Template.Frame=1;
end;

Func ПроверитьНастр:L;
var Iter:I;
 Iter=1;
 While Iter<=УпрН do
  if УслКодСч[Iter]="" and
     УслКоррСч[Iter]="" and
     УслАна[Iter]="" and
     СправКонтр[Iter]="": DeleteFrame(УпрН,Iter);
    else
     if УслКодСч[Iter]="": Message("Введите код счета бюджетного учета",mtError); Template.Field="УслКодСч"; Template.Frame=Iter; ^False; fi;
     if СправКонтр[Iter]="": Message("Выберите справочник контрагента",mtError); Template.Field="СправКонтр"; Template.Frame=Iter; ^False; fi;
     Iter=Iter+1;
  fi;
 od;
 if УпрН=0: InsertFrame(УпрН,УпрН+1); Message("Необходимо выполнить настройку формы",mtWarning); ^False; fi;
 ^True;
end;

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

Proc ИнициализацияНастр;
var n:i;
 ClearVariable(КодСчЗнач);
 ClearVariable(КодСчНаим);
 ClearVariable(КодСчСокр);
 n=0;
 n=n+1; КодСчЗнач[n]="НомерСчет";
        КодСчНаим[n]="Номер счета";
        КодСчСокр[n]="Номер счета";
 n=n+1; КодСчЗнач[n]="КодСчета";
        КодСчНаим[n]="Код счета";
        КодСчСокр[n]="Код счета";
 n=n+1; КодСчЗнач[n]="ФКР=ППП+РП";
        КодСчНаим[n]="Код главы по БК (Гл), коды раздела (Рз), подраздела (Пр) расходов бюджета";
        КодСчСокр[n]="Расходы (Гл;РзПр)";
 n=n+1; КодСчЗнач[n]="ФКР=ППП+РП+ЦС";
        КодСчНаим[n]="Код главы по БК (Гл), коды раздела (Рз), подраздела (Пр), целевой статьи (ЦСт) расходов бюджета";
        КодСчСокр[n]="Расходы (Гл;РзПр;ЦСт)";
 n=n+1; КодСчЗнач[n]="КД=ППП+ГР+ПГР+СТ+ЭЛ+ПРГ";
        КодСчНаим[n]="Код главы по БК (Гл), коды вида (Вид), подвида (Подвид) дохода бюджета";
        КодСчСокр[n]="Доходы (Гл;Вид;Подвид)";
 n=n+1; КодСчЗнач[n]="КД=ППП+ГР+ПГР+СТ+ЭЛ";
        КодСчНаим[n]="Код главы по БК (Гл), вид (Вид) дохода бюджета";
        КодСчСокр[n]="Доходы (Гл;Вид)";
 n=n+1; КодСчЗнач[n]="КИФД=ППП+ГР+ПГР+СТ+ПСТ+ЭЛ";
        КодСчНаим[n]="Код главы по БК (Гл), коды группы (Гр), подгруппы (Пгр), статьи (Ст) источника финансирования дефицита бюджета";
        КодСчСокр[n]="Дефициты (Гл;Гр;Пгр;Ст)";
 n=n+1; КодСчЗнач[n]="КИФД=ППП+ГР+ПГР+СТ+ПСТ+ЭЛ+ПРГ";
        КодСчНаим[n]="Код главы по БК (Гл), коды группы (Гр), подгруппы (Пгр), статьи (Ст), вида (Вид) источника финансирования дефицита бюджета";
        КодСчСокр[n]="Дефициты (Гл;Гр;Пгр;Ст;Вид)";
end;

Proc Инициализация;
var n,nn,z:i;
var tmp:S;
 ClearVariable(СписокСч);
 for n=1..УпрН do
  AddInArray(СписокСч,True,False,УслКодСч[n]);
 od;
 Раб.КБК.CrdToCache("СЧ",False);
 nn=LengthOfArray(СписокСч);
 for n=1..nn do
  if Match(СписокСч[n],"*.000"): tmp=SubStr(СписокСч[n],3,6); else tmp=SubStr(СписокСч[n],3,10); fi;
  z=SearchInArray(Раб.КБК.cacheСЧЕТА_Код,tmp,True);
  if z=-1: tmp=""; else tmp=Раб.КБК.cacheСЧЕТА_Наим[z]; fi;
  СписокСч[n]=СписокСч[n]+" --"+tmp;
 od;
end;

Proc ОчиститьИтог;
 ClearVariable(М2);
 ClearVariable(SГ3С040М2);
 ClearVariable(SГ4С040М2);
 ClearVariable(SГ5С040М2);
 ClearVariable(SГ6С040М2);
 ClearVariable(RГ7С040М2);
 ClearVariable(RГ8С040М2);
 ClearVariable(SГ9С040М2);
 ClearVariable(SГ10С040М2);
 ClearVariable(SГ11С040М2);
 ClearVariable(М3);
 ClearVariable(SГ3С050М3);
 ClearVariable(SГ4С050М3);
 ClearVariable(SГ5С050М3);
 ClearVariable(SГ6С050М3);
 ClearVariable(RГ7С050М3);
 ClearVariable(RГ8С050М3);
 ClearVariable(SГ9С050М3);
 ClearVariable(SГ10С050М3);
 ClearVariable(SГ11С050М3);
 ClearVariable(SГ12С050М3);
 ClearVariable(М4);
 ClearVariable(SГ3С060М4);
 ClearVariable(SГ4С060М4);
 ClearVariable(SГ5С060М4);
 ClearVariable(SГ6С060М4);
 ClearVariable(RГ7С060М4);
 ClearVariable(RГ8С060М4);
 ClearVariable(SГ9С060М4);
 ClearVariable(SГ10С060М4);
 ClearVariable(SГ11С060М4);
 ClearVariable(SГ12С060М4);
end;

Proc Очистить;
 ClearVariable(Key);
 ClearVariable(М1);
 ClearVariable(SГ1С020М1);
 ClearVariable(SГ2С020М1);
 ClearVariable(SГ3С020М1);
 ClearVariable(SГ4С020М1);
 ClearVariable(SГ5С020М1);
 ClearVariable(SГ6С020М1);
 ClearVariable(RГ7С020М1);
 ClearVariable(RГ8С020М1);
 ClearVariable(SГ9С020М1);
 ClearVariable(SГ10С020М1);
 ClearVariable(SГ11С020М1);
 ClearVariable(SГ12С020М1);
 ClearVariable(ВидРасч);
 ClearVariable(ПризнКонтр);
 ClearVariable(Док);
 ClearVariable(SГ6С020М1_);
 ОчиститьИтог;
 ClearVariable(BufКонтр);
 ClearVariable(BufИНН);
 ClearVariable(BufППП);
 ClearVariable(BufОКТМО);
 ClearVariable(BufЭлБ);
 ClearVariable(BufСч);
 ClearVariable(BufКоррСч);
 ClearVariable(cacheКонтр);
 ClearVariable(cacheНаим);
end;

Func ВзятьНаимКонтр(vПризн:S):S;
var Res,tmp:S;
var Rec: Record;
var n,Iter,z:i;
 Res=Name_A(vПризн);
 if not (УпрНаимК=0 or НаимК_Поле[1]=""):
    z=SearchInArray(cacheКонтр,vПризн,True);
    if z=-1:
       z=InsertInArraySort(cacheКонтр,vПризн);
       InsertInArray(cacheНаим,z,"");
       Rec=SignToRecord(vПризн,False);
       if not Rec=nil:
          n=GetRecordNumber(OWA_Контр,Rec);
          if not n=0:
             Res="";
             for Iter=1..УпрНаимК do
              if not НаимК_Поле[Iter]="":
                 tmp=GetFieldS(OWA_Контр,n,НаимК_Поле[Iter]);
                 tmp=НаимК_ПреФикс[Iter]+tmp+НаимК_ПостФикс[Iter];
                 Res=Раб.Бюджет2005.Объединить(Res,tmp,"");
                else
                 Res=Res+Trim(НаимК_ПреФикс[Iter]+НаимК_ПостФикс[Iter]);
              fi;
             od;
          fi;
       fi;
       Res=Trim(Res);
       cacheНаим[z]=Res;
      else
       Res=cacheНаим[z];
    fi;
 fi;
 if Res="" or Res=" ": Res=vПризн; fi;
 ^Res;
end;

Func ВзятьИННКонтр(vПризн:S):S;
 var Res:S;
 var Rec: Record;
 Rec=SignToRecord(vПризн,False);
 if not Rec=nil:
   Res=GetCardFieldS('КОНТРАГЕНТ',Rec,'ИНН');
 fi;
 ^Res;
end;


Func НастрКодСчНаим(v:S):S;
var w,ww:i;
var tmp,Ret:S;
 Ret="";
 if not Pos("#",v)=0 or not Pos("X",Up(v))=0 or not Pos("000",v)=0:
    tmp=Trim(ExtractWord(1,v,"|"));
    if not tmp="": Ret="Расходы: "+tmp; fi;
    tmp=Trim(ExtractWord(2,v,"|"));
    if not tmp="": Ret=Ret+" Доходы: "+tmp; fi;
    tmp=Trim(ExtractWord(3,v,"|"));
    if not tmp="": Ret=Ret+" Дефициты: "+tmp; fi;
   else
    ww=WordsCount(v,"|");
    if ww=0:
       Ret=КодСчСокр[1];
      else
       for w=1..ww do
        tmp=ExtractWord(w,v,"|");
        Ret=Ret+" "+КодСчСокр[Int(tmp)];
       od;
       Ret=SubStr(Ret,2,255);
    fi;
 fi;
 ^Ret;
end;

Func ВзятьКодСчета(aВидКодСч:S; aСчет:S):S;
var ТипКБК:S;
var КодСч,val,voc,tmp,vКод:S;
var ППП,РП,ЦС,ВР,ГР,ПГР,СТ,ПСТ,ЭЛ,ПРГ:S;
var w,ww:i;
 ТипКБК=Раб.Бюджет2005.ТипКБКСчета(aСчет);
 if not Pos("#",aВидКодСч)=0 or not Pos("X",Up(aВидКодСч))=0 or not Pos("000",aВидКодСч)=0: --Определяем новый формат настройки
    val=ExtractWord(if(ТипКБК="ФКР":1|ТипКБК="КД":2|ТипКБК="КИФД":3|true:0),aВидКодСч,"|");
    КодСч=Раб.Вспом.ШаблонСч.СчетПоШаблону(aСчет,ТипКБК,val);
   else
    if aВидКодСч="1" or aВидКодСч="0": ^aСчет; fi;
    КодСч=Раб.Бюджет2005.ВзятьКодСчета(aСчет,ТипКБК,"СЧ9",False);
    if aВидКодСч="2": ^КодСч; fi;
    ww=WordsCount(aВидКодСч,"|");
    for w=1..ww do
     val=ExtractWord(w,aВидКодСч,"|");
     voc=ExtractWord(1,КодСчЗнач[int(val)],"=");
     if ТипКБК=voc:
        vКод=ExtractWord(2,КодСчЗнач[int(val)],"=");
        Break;
     fi;
    od;
    if ТипКБК="ФКР": ППП="000"; РП="0000"; ЦС="0000000"; ВР="000";
      |ТипКБК="КД":  ППП="000"; ГР="0"; ПГР="00"; СТ="00000"; ЭЛ="00"; ПРГ="0000";
      |ТипКБК="КИФД":ППП="000"; ГР="00"; ПГР="00"; СТ="00"; ПСТ="00"; ЭЛ="00"; ПРГ="0000";
    fi;
    ww=WordsCount(vКод,"+");
    for w=1..ww do
     voc=ExtractWord(w,vКод,"+");
     tmp=Раб.Бюджет2005.ВзятьКодСчета(aСчет,ТипКБК,voc,false);
     if ТипКБК="ФКР":
        if voc="ППП": ППП=tmp;
          |voc="РП":  РП =tmp;
          |voc="ЦС":  ЦС =tmp;
          |voc="ВР":  ВР =tmp;
        fi;
       |ТипКБК="КД":
        if voc="ППП":  ППП=tmp;
          |voc="ГР":   ГР =tmp;
          |voc="ПГР":  ПГР=tmp;
          |voc="СТ":   СТ =tmp;
          |voc="ЭЛ":   ЭЛ =tmp;
          |voc="ПРГ":  ПРГ=tmp;
        fi;
       |ТипКБК="КИФД":
        if voc="ППП":  ППП=tmp;
          |voc="ГР":   ГР =tmp;
          |voc="ПГР":  ПГР=tmp;
          |voc="СТ":   СТ =tmp;
          |voc="ПСТ":  ПСТ=tmp;
          |voc="ЭЛ":   ЭЛ =tmp;
          |voc="ПРГ":  ПРГ=tmp;
        fi;
     fi;
    od;
    if ТипКБК="ФКР": КодСч=ППП+"."+РП+"."+ЦС+"."+ВР+"."+КодСч;
      |ТипКБК="КД":  КодСч=ППП+"."+ГР+"."+ПГР+"."+СТ+"."+ЭЛ+"."+ПРГ+"."+КодСч;
      |ТипКБК="КИФД":КодСч=ППП+"."+ГР+"."+ПГР+"."+СТ+"."+ПСТ+"."+ЭЛ+"."+ПРГ+"."+КодСч;
    fi;
 fi;
 ^КодСч;
end;

Proc РасчетИтог;
var Iter,z:i;
var Key,Сч:S;
 ClearVariable(Buf);
 ОчиститьИтог;
 --в том числе по номеру (коду) счета
 for Iter=1..М1 do
  if not SГ6С020М1[Iter]="":
     Сч=ВзятьКодСчета(fКодСч1[iНастр],SГ6С020М1[Iter]);
     Key=SГ3С020М1[Iter]+"$"+SГ4С020М1[Iter]+"$"+SГ5С020М1[Iter]+"$"+Сч;
     z=SearchInArray(Buf,Key,True);
     if z=-1:
        z=InsertInArraySort(Buf,Key);
        InsertFrame(М2,z);
        SГ3С040М2[z]=SГ3С020М1[Iter];
        SГ4С040М2[z]=SГ4С020М1[Iter];
        SГ5С040М2[z]=SГ5С020М1[Iter];
        SГ6С040М2[z]=Сч;
        RГ7С040М2[z]=if(fИтог[iНастр]=1:RГ7С020М1[Iter]-RГ8С020М1[Iter]|fИтог[iНастр]=-1:0|True:RГ7С020М1[Iter]);
        RГ8С040М2[z]=if(fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С020М1[Iter]-RГ7С020М1[Iter]|True:RГ8С020М1[Iter]);
       else
        RГ7С040М2[z]=RГ7С040М2[z]+if(fИтог[iНастр]=1:RГ7С020М1[Iter]-RГ8С020М1[Iter]|fИтог[iНастр]=-1:0|True:RГ7С020М1[Iter]);
        RГ8С040М2[z]=RГ8С040М2[z]+if(fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С020М1[Iter]-RГ7С020М1[Iter]|True:RГ8С020М1[Iter]);
     fi;
  fi;
 od;
 --Денежные
 ClearVariable(Buf);
 for Iter=1..М1 do
  if not SГ6С020М1[Iter]="" and ВидРасч[Iter]=1:
     Сч=ВзятьКодСчета(fКодСч2[iНастр],SГ6С020М1[Iter]);
     Key=SГ3С020М1[Iter]+"$"+SГ4С020М1[Iter]+"$"+SГ5С020М1[Iter]+"$"+Сч+"$"+SГ9С020М1[Iter];
     z=SearchInArray(Buf,Key,True);
     if z=-1:
        z=InsertInArraySort(Buf,Key);
        InsertFrame(М3,z);
        SГ3С050М3[z]=SГ3С020М1[Iter];
        SГ4С050М3[z]=SГ4С020М1[Iter];
        SГ5С050М3[z]=SГ5С020М1[Iter];
        SГ6С050М3[z]=Сч;
        RГ7С050М3[z]=if(fИтог[iНастр]=1:RГ7С020М1[Iter]-RГ8С020М1[Iter]|fИтог[iНастр]=-1:0|True:RГ7С020М1[Iter]);
        RГ8С050М3[z]=if(fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С020М1[Iter]-RГ7С020М1[Iter]|True:RГ8С020М1[Iter]);
        SГ9С050М3[z]=SГ9С020М1[Iter];
       else
        RГ7С050М3[z]=RГ7С050М3[z]+if(fИтог[iНастр]=1:RГ7С020М1[Iter]-RГ8С020М1[Iter]|fИтог[iНастр]=-1:0|True:RГ7С020М1[Iter]);
        RГ8С050М3[z]=RГ8С050М3[z]+if(fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С020М1[Iter]-RГ7С020М1[Iter]|True:RГ8С020М1[Iter]);
     fi;
  fi;
 od;
 --Неденежные
 ClearVariable(Buf);
 for Iter=1..М1 do
  if not SГ6С020М1[Iter]="" and ВидРасч[Iter]=0:
     Сч=ВзятьКодСчета(fКодСч3[iНастр],SГ6С020М1[Iter]);
     Key=SГ3С020М1[Iter]+"$"+SГ4С020М1[Iter]+"$"+SГ5С020М1[Iter]+"$"+Сч+"$"+SГ9С020М1[Iter];
     z=SearchInArray(Buf,Key,True);
     if z=-1:
        z=InsertInArraySort(Buf,Key);
        InsertFrame(М4,z);
        SГ3С060М4[z]=SГ3С020М1[Iter];
        SГ4С060М4[z]=SГ4С020М1[Iter];
        SГ5С060М4[z]=SГ5С020М1[Iter];
        SГ6С060М4[z]=Сч;
        RГ7С060М4[z]=if(fИтог[iНастр]=1:RГ7С020М1[Iter]-RГ8С020М1[Iter]|fИтог[iНастр]=-1:0|True:RГ7С020М1[Iter]);
        RГ8С060М4[z]=if(fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С020М1[Iter]-RГ7С020М1[Iter]|True:RГ8С020М1[Iter]);
        SГ9С060М4[z]=SГ9С020М1[Iter];
       else
        RГ7С060М4[z]=RГ7С060М4[z]+if(fИтог[iНастр]=1:RГ7С020М1[Iter]-RГ8С020М1[Iter]|fИтог[iНастр]=-1:0|True:RГ7С020М1[Iter]);
        RГ8С060М4[z]=RГ8С060М4[z]+if(fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С020М1[Iter]-RГ7С020М1[Iter]|True:RГ8С020М1[Iter]);
     fi;
  fi;
 od;
end;

Func ВзятьКод (vКонтр:s; Val:S):S;
var z,n:i;
var Rec: Record;
var ИНН,ППП,ОКТМО:S;
 z=SearchInArray(BufКонтр,vКонтр,True);
 if z=-1:
    z=InsertInArraySort(BufКонтр,vКонтр);
    Rec=SignToRecord(vКонтр,False);
    if not Rec=nil:
       n=GetRecordNumber(OWA_Контр,Rec);
       if not n=0:
          ИНН=GetFieldS(OWA_Контр,n,"ИНН");
          ППП=GetFieldS(OWA_Контр,n,"РПО_ППП");
          ОКТМО=GetFieldS(OWA_Контр,n,"ОКТМО");
       fi;
    fi;
    InsertInArray(BufИНН,z,ИНН);
    InsertInArray(BufППП,z,ППП);
    InsertInArray(BufОКТМО,z,ОКТМО);
 fi;
 if Val="ИНН": ^BufИНН[z];
   |Val="ППП": ^BufППП[z];
   |Val="ОКТМО": ^BufОКТМО[z];
 fi;
 ^"";
end;

Func ДобавитьСтроку (vПризнКонтр:S; vСч:S; vСумД:N; vСумК:N; vСчКорр:S; vВидРасч:I; vДок:S):I;
var Key,ИНН_,ИННКонс_,ППП,ОКТМО,ЭлБ,ТипКБК,МаскаСч,tplСч:S;
var Iter,OWA,n:I;
var Crd:S;
var Rec: Record;
 if fИНН[iНастр]: ИНН_=ВзятьКод(vПризнКонтр,"ИНН"); fi;
 if fИННКонс[iНастр]: ИННКонс_=ИНН; fi;
 if fППП[iНастр]: ППП=ВзятьКод(vПризнКонтр,"ППП"); fi;
 if fОКТМО[iНастр]: ОКТМО=ВзятьКод(vПризнКонтр,"ОКТМО"); fi;
 if fЭлБ[iНастр]:
    if Раб.Бюджет2005.ТипКБКСчета(vСч)="КД":
       ЭлБ=Раб.Бюджет2005.ВзятьКодСчета(vСч,"КД","ЭЛ",False);
      else
       ЭлБ="";
    fi;
 fi;
 if not fКодСч0[iНастр]="":
    ТипКБК=Раб.Бюджет2005.ТипКБКСчета(vСч);
    tplСч=ExtractWord(if(ТипКБК="ФКР":1|ТипКБК="КД":2|ТипКБК="КИФД":3|true:0),fКодСч0[iНастр],"|");
    МаскаСч=Раб.Вспом.ШаблонСч.МаскаПоШаблону(vСч,ТипКБК,tplСч);
    vСч=Раб.Вспом.ШаблонСч.СчетПоШаблону(vСч,ТипКБК,tplСч);
   else
    МаскаСч=vСч;
 fi;
 Key=vПризнКонтр+"$"+ППП+"$"+ОКТМО+"$"+ЭлБ+"$"+vСч+"$"+vСчКорр+"$"+Str(vВидРасч)+"$"+vДок;
 Iter=SearchInArray(Buf,Key,True);
 if Iter=-1:
   Iter=InsertInArraySort(Buf,Key);
   InsertFrame(М1,Iter);
   ПризнКонтр[Iter]=vПризнКонтр;
   SГ1С020М1[Iter]=ВзятьНаимКонтр(ПризнКонтр[Iter]);
   if SГ1С020М1[Iter]="" or SГ1С020М1[Iter]=" ": SГ1С020М1[Iter]=ПризнКонтр[Iter]; fi;
   SГ2С020М1[Iter]=ИНН_;
   SГ3С020М1[Iter]=ППП;
   SГ4С020М1[Iter]=ОКТМО;
   SГ5С020М1[Iter]=ЭлБ;
   SГ6С020М1[Iter]=vСч;
   RГ7С020М1[Iter]=vСумД;
   RГ8С020М1[Iter]=vСумК;
   SГ9С020М1[Iter]=vСчКорр;
   SГ10С020М1[Iter]=ИННКонс_;
   ВидРасч[Iter]=vВидРасч;
   Док[Iter]=vДок;
   SГ6С020М1_[Iter]=МаскаСч;
   if fИзв and not Док[Iter]="":
     Crd=ExtractWord(1,Док[Iter],":");
     Rec=StringToRecord(ExtractWord(2,Док[Iter],":"));
     if Crd="РПО_ИЗВЕЩЕНИЯ_ВХ": OWA=OWA_Вх; else OWA=OWA_Исх; fi;
     n=GetRecordNumber(OWA,Rec);
     if not n=0:
       SГ1С020М1[Iter]=SГ1С020М1[Iter]+Chr(13)+"Изв. №"+GetFieldS(OWA,n,"НОМЕРБУМ")+" от "+DateToString(GetFieldD(OWA,n,"ДАТАИЗВ"));
     fi;
   fi;
 else
   RГ7С020М1[Iter]=RГ7С020М1[Iter]+vСумД;
   RГ8С020М1[Iter]=RГ8С020М1[Iter]+vСумК;
 fi;
 ^Iter;
end;

Proc Расчет;
var УслСч,УслАн,ОбщУслСч_,ОбщУслКД_,ОбщУслКР_,ОбщУслКИФД_,tmp,ВалПок:S;
var t,dd,Iter:i;
var tДеб,tКре,tПризн,ПризнКонтрД,ПризнКонтрК,Crd,Док_:S;
var tСум:N;
var Flag:L;
var OA,n:I;
 iНастр=SearchInArray(УслКодСч,КодСч);
 if iНастр=-1: Message("Необходимо выполнить настройку формы",mtError); ОткрНастр(True); Exit; fi;
 Refresh;
 Очистить;
 ClearVariable(Buf);
 Раб.Бюджет2005.РежимМаски="?";
 if not ОбщУслКД="": ОбщУслКД_=Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКД,"КД","КБК",False)+".*."+Раб.Бюджет2005.МаскаСч5+"."+Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКД,"КД","КОСГУ",False); else ОбщУслКД_=""; fi;
 if not ОбщУслКР="": ОбщУслКР_=Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКР,"ФКР","КБК",False)+".*."+Раб.Бюджет2005.МаскаСч5+"."+Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКР,"ФКР","КОСГУ",False); else ОбщУслКР_=""; fi;
 if not ОбщУслКИФД="": ОбщУслКИФД_=Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКИФД,"КИФД","КБК",False)+".*."+Раб.Бюджет2005.МаскаСч5+"."+Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКИФД,"КИФД","КОСГУ",False); else ОбщУслКИФД_=""; fi;
 ОбщУслСч_=Раб.Бюджет2005.Объединить(ОбщУслКД_,ОбщУслКР_,"|");
 ОбщУслСч_=Раб.Бюджет2005.Объединить(ОбщУслСч_,ОбщУслКИФД_,"|");
 if not ОбщУслСч_="": ОбщУслСч_="("+ОбщУслСч_+")"; fi;
 УслСч=Раб.Бюджет2005.Объединить(МаскаСч,ОбщУслСч_,"&");
 УслСч=Раб.Бюджет2005.Объединить(УслСч,УслКоррСч[iНастр],"/");
 УслСч=Раб.Бюджет2005.Объединить(УслСч,УслВал,"'");
 --
 УслАн=Раб.Бюджет2005.Объединить(ОбщУслАн,if(УслАна[iНастр]="","","("+УслАна[iНастр]+")"),"&");
 УслАн=Раб.Бюджет2005.Объединить(УслАн,if(УслКонтр="","","("+УслКонтр+")"),"&");
 if НеУчитЗаклПр: УслАн=Раб.Бюджет2005.Объединить(УслАн,Раб.Парам_Отч.ИсклЗакл,"&"); fi;
 dd=ДК-ДН+1;
 ShowProgress(dd,"Расчет...");
 if fИзв:
    OWA_Вх =-1; OWA_Исх=-1; OWA_НФА=-1; OA=-1;
    if ExistsCardFile("РПО_ИЗВЕЩЕНИЯ_ВХ"):  OWA_Вх =OpenWorkArea("РПО_ИЗВЕЩЕНИЯ_ВХ","");  fi;
    if ExistsCardFile("РПО_ИЗВЕЩЕНИЯ_ИСХ"): OWA_Исх=OpenWorkArea("РПО_ИЗВЕЩЕНИЯ_ИСХ",""); fi;
    if ExistsCardFile("РПО_ОПЕРАЦИИДНФА"):  OWA_НФА=OpenWorkArea("РПО_ОПЕРАЦИИДНФА","");  fi;
 fi;
 OWA_Контр=OpenWorkArea("Контрагент","");
 Try
  if not УслВал="" and not УслВал=BaseCurrency: ВалПок="ВАЛ"; else ВалПок=""; fi;
  for transaction t=УслСч+"{"+УслАн+"}",ДН,ДК do
   ProgressPos(dd-(ДК-TransDate(t)));
   tДеб=TransDeb(t);
   tКре=TransCre(t);
   tПризн=TransSigns(t);
   tСум=TransSum(t,ВалПок);
   Док_="";
   if fИзв:
      Crd=TransCardFile(t);
      if Crd="РПО_ИЗВЕЩЕНИЯ_ВХ" or Crd="РПО_ИЗВЕЩЕНИЯ_ИСХ": Док_=Crd+":"+RecordToString(TransRecord(t));
        |Crd="РПО_ОПЕРАЦИИДНФА": n=GetRecordNumber(OWA_НФА,TransRecord(t));
                                 if n=0:
                                    if OA=-1: OA=OpenArray(OWA_НФА,n,"ДОК","","not UKEYCRD=0 and (ВИДДОК='ВИДДОК.ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ВХ' or ВИДДОК='ВИДДОК.ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ИСХ')"); fi;
                                    if not Records(OA)=0:
                                       Док_=if(GetFieldS(OA,1,"ВИДДОК")="ВИДДОК.ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ВХ","РПО_ИЗВЕЩЕНИЯ_ВХ","РПО_ИЗВЕЩЕНИЯ_ИСХ")+":{"+Str(GetFieldI(OA,1,"UKEYCRD"))+"}";
                                    fi;
                                 fi;
      fi;
   fi;
   ПризнКонтрД=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(tПризн," ","+"+СправКонтр[iНастр],""),2,255);
   ПризнКонтрК=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(tПризн," ","-"+СправКонтр[iНастр],""),2,255);
   if ПризнКонтрД="" and ПризнКонтрК="": ПризнКонтрД=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(tПризн," ",СправКонтр[iНастр],""); ПризнКонтрК=ПризнКонтрД; fi;
   if Match(tДеб,МаскаСч):
      if fВидРасч[iНастр]=0: Flag=True;
        |fВидРасч[iНастр]=1: Flag=False;
        |True:
         Flag=ВР_УслКоррСч[iНастр]="";
         if not Flag: Flag=Раб.Бюджет2005.MatchMask(tКре,ВР_УслКоррСч[iНастр]); fi;
         if Flag: 
            Flag=ВР_УслАна[iНастр]="";
            if not Flag: Flag=Раб.Бюджет2005.ПроверитьНаборСлов(tПризн," ",ВР_УслАна[iНастр],"|",""); fi;
         fi;
      fi;
      Iter=ДобавитьСтроку(ПризнКонтрД,tДеб,tСум,0,Раб.Бюджет2005.ВзятьКодСчета(tКре,"","СЧ9",False),if(Flag,0,1),Док_);
      if RГ7С020М1[Iter]=0 and RГ8С020М1[Iter]=0:
         DeleteFromArray(Buf,Iter);
         DeleteFrame(М1,Iter);
      fi;
   fi;
   if Match(tКре,МаскаСч):
      if fВидРасч[iНастр]=0: Flag=True;
        |fВидРасч[iНастр]=1: Flag=False;
        |True:
         Flag=ВР_УслКоррСч[iНастр]="";
         if not Flag: Flag=Раб.Бюджет2005.MatchMask(tДеб,ВР_УслКоррСч[iНастр]); fi;
         if Flag: 
            Flag=ВР_УслАна[iНастр]="";
            if not Flag: Flag=Раб.Бюджет2005.ПроверитьНаборСлов(tПризн," ",ВР_УслАна[iНастр],"|",""); fi;
         fi;
      fi;
      Iter=ДобавитьСтроку(ПризнКонтрК,tКре,0,tСум,Раб.Бюджет2005.ВзятьКодСчета(tДеб,"","СЧ9",False),if(Flag,0,1),Док_);
      if RГ7С020М1[Iter]=0 and RГ8С020М1[Iter]=0:
         DeleteFromArray(Buf,Iter);
         DeleteFrame(М1,Iter);
      fi;
   fi;
  od;
  --
  if fНаимКонтр:
     tmp=ПризнКонтр[1];
     for Iter=2..М1 do
      if tmp=ПризнКонтр[Iter]: 
         if fИзв:
            SГ1С020М1[Iter]=ЗамНаимКонтр+" "+ExtractWord(2,SГ1С020М1[Iter],Chr(13));
           else
            SГ1С020М1[Iter]=ЗамНаимКонтр;
         fi;
        else 
         tmp=ПризнКонтр[Iter]; 
      fi;
     od;
  fi;
  --
  РасчетИтог;
 Finally
  CloseWorkArea(OWA_Контр);
  if fИзв:
     if not OWA_Вх =-1: CloseWorkArea(OWA_Вх ); fi;
     if not OWA_Исх=-1: CloseWorkArea(OWA_Исх); fi;
     if not OWA_НФА=-1: CloseWorkArea(OWA_НФА); fi;
  fi;
  CloseProgress;
 end;
 ОтчGUID=РАБ.ПАРАМ_ОТЧ.ОтчGUID;
 Message("Расчет завершен");
end;

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

Func ГруппировкаСч (Field:S):I;
var n,z,x:I;
var Key_,tmp,Сч,ВидКодСч:S;
 ClearVariable(Buf);
 ClearVariable(Key);
 ClearVariable(BufИНН);
 ClearVariable(BufППП);
 ClearVariable(BufОКТМО);
 ClearVariable(BufЭлБ);
 ClearVariable(BufСч);
 ClearVariable(BufКоррСч);
 x=0;
 if Field="SГ1С040М2": ВидКодСч=fКодСч1[iНастр];
   |Field="SГ1С050М3": ВидКодСч=fКодСч2[iНастр]; x=1;
   |Field="SГ1С060М4": ВидКодСч=fКодСч3[iНастр];
 fi;
 for n=1..М1 do
  if not SГ6С020М1[n]="" and (Field="SГ1С040М2" or ВидРасч[n]=x):
     Сч=ВзятьКодСчета(ВидКодСч,SГ6С020М1[n]);
     Key_=SГ2С020М1[n]+"$"+SГ3С020М1[n]+"$"+SГ4С020М1[n]+"$"+SГ5С020М1[n]+"$"+Сч+if(Field="SГ1С040М2","","$"+SГ9С020М1[n]);
     z=SearchInArray(Key,Key_,True);
     if z=-1:
        z=InsertInArraySort(Key,Key_);
        tmp=Раб.Бюджет2005.Объединить(if(SГ2С020М1[n]="","","ИНН="+SГ2С020М1[n]),if(SГ3С020М1[n]="","","ППП="+SГ3С020М1[n]),"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,if(SГ4С020М1[n]="","","ОКТМО="+SГ4С020М1[n]),"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,if(SГ5С020М1[n]="","","Эл.бюдж.="+SГ5С020М1[n]),"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,Сч,"  ");
        if not Field="SГ1С040М2": tmp=Раб.Бюджет2005.Объединить(tmp,SГ9С020М1[n]," / "); fi;
        InsertInArray(Buf,z,tmp);
        InsertInArray(BufИНН,z,SГ2С020М1[n]);
        InsertInArray(BufППП,z,SГ3С020М1[n]);
        InsertInArray(BufОКТМО,z,SГ4С020М1[n]);
        InsertInArray(BufЭлБ,z,SГ5С020М1[n]);
        InsertInArray(BufСч,z,Сч);
        if not Field="SГ1С040М2": InsertInArray(BufКоррСч,z,SГ9С020М1[n]); fi;
     fi;
  fi;
 od;
 ^LengthOfArray(Key);
end;

--=====Блок для взаимодействия=====
Func Готово:S;
   if М1=0:
      ^"Форма не заполнена";
   fi;
   ^"";
end;

Proc ФормироватьXML;
var i,j:I;
var GUID:S;
  GUID=GetGUID;
  Раб.XML.ДОБАТТР("КодФормы","0503725");
  Раб.XML.ДОБАТТР("Код","ВО.0025");--идентификатор в сводной отчетности
  РАБ.XML.ОткрытьТэгBuf("ВидОтчета",False);
  РАБ.XML.ОткрытьТэг("Отчет",'Отчетность=О.0001#Учреждение=К.0001');
  Раб.XML.СоздатьТэг("КОД",GUID,False);
  Раб.XML.СоздатьТэг("ИМЯ","Справка по консолидируемым расчетам",False);
  Раб.XML.СоздатьТэг("КОММЕНТАРИЙ","",False);
  Раб.XML.СоздатьТэг("ВЕРСИЯФОРМЫ","0",False);
  Раб.XML.СоздатьТэг("ДАТА",DateToString(ДК),False);
  Раб.XML.СоздатьТэг("НАЧАЛОПЕРИОДА",DateToString(ДН),False);
  Раб.XML.СоздатьТэг("КОНЕЦПЕРИОДА",DateToString(ДК),False);
  Раб.XML.СоздатьТэг("НАИМБЮДЖ","",False);
  Раб.XML.СоздатьТэг("ВИДДЕЯТЕЛЬНОСТИ","",False);
  Раб.XML.СоздатьТэг("КОДСЧЕТА",Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(КОДСЧ,'.',''),False);
  Раб.XML.СоздатьТэг("ЕДИЗМ",Str(ЕдИзм),False);
  Раб.XML.СоздатьТэг("ТОЧН",Str(Точн),False);
  Раб.XML.СоздатьТэг("ОКЕИ",ОКЕИ,False);
  Раб.XML.СоздатьТэг("ОКТМО",ОКТМО,False);
  Раб.XML.СоздатьТэг("ПОКАЗАТЕЛЬ",Показатель,False);
  Раб.XML.СоздатьТэг("ИМЯРУК",ФИОРук,False);
  Раб.XML.СоздатьТэг("ИМЯБУХ",ФИОБух,False);
  Раб.XML.СоздатьТэг("НЕВЫГРУЖАТЬ","false",False);
  Раб.XML.СоздатьТэг("СВОД","false",False);
  Раб.XML.СоздатьТэг("СВОДСВОДА","false",False);
  Раб.XML.СоздатьТэг("GUID_CREATE",GUID,False);
  Раб.XML.СоздатьТэг("GUID_CURRENT","",False);

  РАБ.XML.ОткрытьТэг("ПозицииОтчета",'');
  for i= 1 .. М1 do
     Раб.XML.ДОБАТТР("Табл","М1");
     Раб.XML.ДОБАТТР("Вычислимое","false");
     Раб.XML.ДОБАТТР("Стр","020");
     Раб.XML.ДОБАТТР("Индекс",Str(i));
     Раб.XML.ДОБАТТР("Тип","S");
     Раб.XML.ДОБАТТР("Графа","1");  Раб.XML.СоздатьТэг("Позиция",SГ1С020М1[i],True);
     Раб.XML.ДОБАТТР("Графа","2");  Раб.XML.СоздатьТэг("Позиция",SГ3С020М1[i],True);
     Раб.XML.ДОБАТТР("Графа","3");  Раб.XML.СоздатьТэг("Позиция",SГ4С020М1[i],True);
     Раб.XML.ДОБАТТР("Графа","4");  Раб.XML.СоздатьТэг("Позиция",SГ5С020М1[i],True);
     Раб.XML.ДОБАТТР("Графа","5");  Раб.XML.СоздатьТэг("Позиция",Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(SГ6С020М1[i],'.',''),True);
     Раб.XML.ДОБАТТР("Тип","R");
     Раб.XML.ДОБАТТР("Графа","6");  Раб.XML.СоздатьТэг("Позиция",str(RГ7С020М1[i],2),True);
     Раб.XML.ДОБАТТР("Графа","7");  Раб.XML.СоздатьТэг("Позиция",str(RГ8С020М1[i],2),True);
     Раб.XML.ДОБАТТР("Тип","S");
     Раб.XML.ДОБАТТР("Графа","8");  Раб.XML.СоздатьТэг("Позиция",Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(SГ9С020М1[i],'.',''),True);
  od;
  Раб.XML.ДОБАТТР("Вычислимое","true");
  Раб.XML.ДОБАТТР("Стр","030"); Раб.XML.ДОБАТТР("Тип","R");
  Раб.XML.ДОБАТТР("Графа","6");
  Раб.XML.СоздатьТэг("Позиция",str(RГ7С030,2),True);
  Раб.XML.ДОБАТТР("Графа","7");
  Раб.XML.СоздатьТэг("Позиция",str(RГ8С030,2),True);

  for i= 1 .. М2 do
     Раб.XML.ДОБАТТР("Табл","М2");
     Раб.XML.ДОБАТТР("Вычислимое","false");
     Раб.XML.ДОБАТТР("Стр","040");
     Раб.XML.ДОБАТТР("Индекс",Str(i));
     Раб.XML.ДОБАТТР("Тип","S");
     Раб.XML.ДОБАТТР("Графа","2");  Раб.XML.СоздатьТэг("Позиция",SГ3С040М2[i],True);
     Раб.XML.ДОБАТТР("Графа","3");  Раб.XML.СоздатьТэг("Позиция",SГ4С040М2[i],True);
     Раб.XML.ДОБАТТР("Графа","4");  Раб.XML.СоздатьТэг("Позиция",SГ5С040М2[i],True);
     Раб.XML.ДОБАТТР("Графа","5");  Раб.XML.СоздатьТэг("Позиция",Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(SГ6С040М2[i],'.',''),True);
     Раб.XML.ДОБАТТР("Тип","R");
     Раб.XML.ДОБАТТР("Графа","6");  Раб.XML.СоздатьТэг("Позиция",str(RГ7С040М2[i],2),True);
     Раб.XML.ДОБАТТР("Графа","7");  Раб.XML.СоздатьТэг("Позиция",str(RГ8С040М2[i],2),True);
  od;
  for i= 1 .. М3 do
     Раб.XML.ДОБАТТР("Табл","М3");
     Раб.XML.ДОБАТТР("Вычислимое","false");
     Раб.XML.ДОБАТТР("Стр","050");
     Раб.XML.ДОБАТТР("Индекс",Str(i));
     Раб.XML.ДОБАТТР("Тип","S");
     Раб.XML.ДОБАТТР("Графа","2");  Раб.XML.СоздатьТэг("Позиция",SГ3С050М3[i],True);
     Раб.XML.ДОБАТТР("Графа","3");  Раб.XML.СоздатьТэг("Позиция",SГ4С050М3[i],True);
     Раб.XML.ДОБАТТР("Графа","4");  Раб.XML.СоздатьТэг("Позиция",SГ5С050М3[i],True);
     Раб.XML.ДОБАТТР("Графа","5");  Раб.XML.СоздатьТэг("Позиция",Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(SГ6С050М3[i],'.',''),True);
     Раб.XML.ДОБАТТР("Тип","R");
     Раб.XML.ДОБАТТР("Графа","6");  Раб.XML.СоздатьТэг("Позиция",str(RГ7С050М3[i],2),True);
     Раб.XML.ДОБАТТР("Графа","7");  Раб.XML.СоздатьТэг("Позиция",str(RГ8С050М3[i],2),True);
     Раб.XML.ДОБАТТР("Тип","S");
     Раб.XML.ДОБАТТР("Графа","8");  Раб.XML.СоздатьТэг("Позиция",Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(SГ9С050М3[i],'.',''),True);
  od;
  for i= 1 .. М4 do
     Раб.XML.ДОБАТТР("Табл","М4");
     Раб.XML.ДОБАТТР("Вычислимое","false");
     Раб.XML.ДОБАТТР("Стр","060");
     Раб.XML.ДОБАТТР("Индекс",Str(i));
     Раб.XML.ДОБАТТР("Тип","S");
     Раб.XML.ДОБАТТР("Графа","2");  Раб.XML.СоздатьТэг("Позиция",SГ3С060М4[i],True);
     Раб.XML.ДОБАТТР("Графа","3");  Раб.XML.СоздатьТэг("Позиция",SГ4С060М4[i],True);
     Раб.XML.ДОБАТТР("Графа","4");  Раб.XML.СоздатьТэг("Позиция",SГ5С060М4[i],True);
     Раб.XML.ДОБАТТР("Графа","5");  Раб.XML.СоздатьТэг("Позиция",Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(SГ6С060М4[i],'.',''),True);
     Раб.XML.ДОБАТТР("Тип","R");
     Раб.XML.ДОБАТТР("Графа","6");  Раб.XML.СоздатьТэг("Позиция",str(RГ7С060М4[i],2),True);
     Раб.XML.ДОБАТТР("Графа","7");  Раб.XML.СоздатьТэг("Позиция",str(RГ8С060М4[i],2),True);
     Раб.XML.ДОБАТТР("Тип","S");
     Раб.XML.ДОБАТТР("Графа","8");  Раб.XML.СоздатьТэг("Позиция",Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(SГ9С060М4[i],'.',''),True);
  od;


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

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

2--Обработчики событий полей шаблона-----
Func ПоУмолчНастр_onEnter(FieldName: String; Iter: Integer): logical;
var tmp :S;
var z, num :I;
var flgFO :L;
 if not FieldName="onOpen":
    if EnqOkCancel("Восстановить стандартные условия отбора ?",mtWarning)=cmCancel: ^False; fi;
    ClearVariable(Txt);
    Txt[1]="Условия отбора для учреждения";
    Txt[2]="Условия отбора для органов осуществляющих КО, ФО";
    num=Alternate("Выберите условие отбора...", Txt, -1, 1, 12);
    if num=1: flgFO=False;
    |  num=2: flgFO=True;
    else ^False;
    fi;
 fi;
 fНаимКонтр=True;
 ClearVariable(УпрН);
 ClearVariable(Наим);
 ClearVariable(УслКодСч);
 ClearVariable(УслКоррСч);
 ClearVariable(УслАна);
 ClearVariable(СправКонтр);
 ClearVariable(СправКонтрКонс);
 ClearVariable(fИНН);
 ClearVariable(fППП);
 ClearVariable(fОКТМО);
 ClearVariable(fИННКонс);
 ClearVariable(fПППКонс);
 ClearVariable(fОКТМОКонс);
 ClearVariable(fЭлБ);
 ClearVariable(fКодСч0);
 ClearVariable(fКодСч1);
 ClearVariable(fКодСч2);
 ClearVariable(fКодСч3);
 ClearVariable(fКодСч0_);
 ClearVariable(fКодСч1_);
 ClearVariable(fКодСч2_);
 ClearVariable(fКодСч3_);
 ClearVariable(fИтог);
 ClearVariable(fВидРасч);
 ClearVariable(ВР_УслКоррСч);
 ClearVariable(ВР_УслАна);
 if flgFO:
    InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="1.205.51.560"; УслКоррСч[УпрН]="*.1.210.02.???"; УслАна[УпрН]=""; СправКонтр[УпрН]="К.*"; fИНН[УпрН]=True; fППП[УпрН]=True; fОКТМО[УпрН]=True; fЭлБ[УпрН]=True; fИтог[УпрН]=-1; fВидРасч[УпрН]= 1; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч1[УпрН]="2"; fКодСч2[УпрН]="1"; fКодСч3[УпрН]="1";
    InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="1.205.51.660"; УслКоррСч[УпрН]="*.1.210.02.???"; УслАна[УпрН]=""; СправКонтр[УпрН]="К.*"; fИНН[УпрН]=True; fППП[УпрН]=True; fОКТМО[УпрН]=True; fЭлБ[УпрН]=True; fИтог[УпрН]=-1; fВидРасч[УпрН]= 1; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч1[УпрН]="2"; fКодСч2[УпрН]="1"; fКодСч3[УпрН]="1";
 fi;                                                                                                                                                                                                                                      
 InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="1.304.04.000"; УслКоррСч[УпрН]=""; УслАна[УпрН]=""; СправКонтр[УпрН]="ПБС.*"; СправКонтрКонс[УпрН]="ПБС.*"; fИНН[УпрН]=True;  fППП[УпрН]=False; fОКТМО[УпрН]=False; fЭлБ[УпрН]=False; fИННКонс[УпрН]=True;  fПППКонс[УпрН]=False; fОКТМОКонс[УпрН]=False; fИтог[УпрН]= 0; fВидРасч[УпрН]= 2; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч0[УпрН]="";                                      fКодСч1[УпрН]="3|5|7";                                 fКодСч2[УпрН]="1";                                     fКодСч3[УпрН]="3|5|7";
 InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="2.304.04.000"; УслКоррСч[УпрН]=""; УслАна[УпрН]=""; СправКонтр[УпрН]="ПБС.*"; СправКонтрКонс[УпрН]="ПБС.*"; fИНН[УпрН]=True;  fППП[УпрН]=False; fОКТМО[УпрН]=False; fЭлБ[УпрН]=False; fИННКонс[УпрН]=False; fПППКонс[УпрН]=False; fОКТМОКонс[УпрН]=False; fИтог[УпрН]= 0; fВидРасч[УпрН]= 2; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч0[УпрН]="";                                      fКодСч1[УпрН]="3|5|7";                                 fКодСч2[УпрН]="1";                                     fКодСч3[УпрН]="3|5|7";
 InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="1.304.06.000"; УслКоррСч[УпрН]=""; УслАна[УпрН]=""; СправКонтр[УпрН]="К.*";   СправКонтрКонс[УпрН]="К.*";   fИНН[УпрН]=True;  fППП[УпрН]=False; fОКТМО[УпрН]=False; fЭлБ[УпрН]=False; fИННКонс[УпрН]=False; fПППКонс[УпрН]=False; fОКТМОКонс[УпрН]=False; fИтог[УпрН]= 0; fВидРасч[УпрН]= 2; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч0[УпрН]="000.0000.0000000.000.#.###.##.###| | "; fКодСч1[УпрН]="000.0000.0000000.000.#.###.##.###| | "; fКодСч2[УпрН]="000.0000.0000000.000.#.###.##.###| | "; fКодСч3[УпрН]="000.0000.0000000.000.#.###.##.###| | ";
 InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="1.401.20.241"; УслКоррСч[УпрН]=""; УслАна[УпрН]=""; СправКонтр[УпрН]="К.*";   СправКонтрКонс[УпрН]="К.*";   fИНН[УпрН]=True;  fППП[УпрН]=True;  fОКТМО[УпрН]=False; fЭлБ[УпрН]=False; fИННКонс[УпрН]=False; fПППКонс[УпрН]=False; fОКТМОКонс[УпрН]=False; fИтог[УпрН]= 1; fВидРасч[УпрН]= 0; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч0[УпрН]="";                                      fКодСч1[УпрН]="3";                                     fКодСч2[УпрН]="1";                                     fКодСч3[УпрН]="3";
 InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="2.401.20.241"; УслКоррСч[УпрН]=""; УслАна[УпрН]=""; СправКонтр[УпрН]="К.*";   СправКонтрКонс[УпрН]="К.*";   fИНН[УпрН]=True;  fППП[УпрН]=True;  fОКТМО[УпрН]=False; fЭлБ[УпрН]=False; fИННКонс[УпрН]=False; fПППКонс[УпрН]=False; fОКТМОКонс[УпрН]=False; fИтог[УпрН]= 1; fВидРасч[УпрН]= 2; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч0[УпрН]="";                                      fКодСч1[УпрН]="3";                                     fКодСч2[УпрН]="1";                                     fКодСч3[УпрН]="3";
 InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="1.401.10.180"; УслКоррСч[УпрН]=""; УслАна[УпрН]=""; СправКонтр[УпрН]="К.*";   СправКонтрКонс[УпрН]="К.*";   fИНН[УпрН]=True;  fППП[УпрН]=True;  fОКТМО[УпрН]=False; fЭлБ[УпрН]=False; fИННКонс[УпрН]=False; fПППКонс[УпрН]=False; fОКТМОКонс[УпрН]=False; fИтог[УпрН]=-1; fВидРасч[УпрН]= 0; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч0[УпрН]="";                                      fКодСч1[УпрН]="6";                                     fКодСч2[УпрН]="1";                                     fКодСч3[УпрН]="6";
 InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="2.401.10.180"; УслКоррСч[УпрН]=""; УслАна[УпрН]=""; СправКонтр[УпрН]="К.*";   СправКонтрКонс[УпрН]="К.*";   fИНН[УпрН]=True;  fППП[УпрН]=True;  fОКТМО[УпрН]=False; fЭлБ[УпрН]=False; fИННКонс[УпрН]=False; fПППКонс[УпрН]=False; fОКТМОКонс[УпрН]=False; fИтог[УпрН]=-1; fВидРасч[УпрН]= 2; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч0[УпрН]="";                                      fКодСч1[УпрН]="6";                                     fКодСч2[УпрН]="1";                                     fКодСч3[УпрН]="6";
 InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="1.401.20.251"; УслКоррСч[УпрН]=""; УслАна[УпрН]=""; СправКонтр[УпрН]="К.*";   СправКонтрКонс[УпрН]="К.*";   fИНН[УпрН]=True;  fППП[УпрН]=True;  fОКТМО[УпрН]=True;  fЭлБ[УпрН]=True;  fИННКонс[УпрН]=False; fПППКонс[УпрН]=False; fОКТМОКонс[УпрН]=False; fИтог[УпрН]= 1; fВидРасч[УпрН]= 0; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч0[УпрН]="";                                      fКодСч1[УпрН]="4";                                     fКодСч2[УпрН]="4";                                     fКодСч3[УпрН]="4";
 InsertFrame(УпрН,УпрН+1); УслКодСч[УпрН]="1.401.10.151"; УслКоррСч[УпрН]=""; УслАна[УпрН]=""; СправКонтр[УпрН]="К.*";   СправКонтрКонс[УпрН]="К.*";   fИНН[УпрН]=True;  fППП[УпрН]=True;  fОКТМО[УпрН]=True;  fЭлБ[УпрН]=True;  fИННКонс[УпрН]=False; fПППКонс[УпрН]=False; fОКТМОКонс[УпрН]=False; fИтог[УпрН]=-1; fВидРасч[УпрН]= 0; ВР_УслКоррСч[УпрН]="*"; ВР_УслАна[УпрН]=""; fКодСч0[УпрН]="";                                      fКодСч1[УпрН]="6";                                     fКодСч2[УпрН]="6";                                     fКодСч3[УпрН]="6";
 for z=1..УпрН do
  fКодСч0_[z]=НастрКодСчНаим(fКодСч0[z]);
  fКодСч1_[z]=НастрКодСчНаим(fКодСч1[z]);
  fКодСч2_[z]=НастрКодСчНаим(fКодСч2[z]);
  fКодСч3_[z]=НастрКодСчНаим(fКодСч3[z]);
 od;
 Раб.КБК.CrdToCache("СЧ",False);
 for Iter=1..УпрН do
  if Match(УслКодСч[Iter],"*.000"): tmp=SubStr(УслКодСч[Iter],3,6); else tmp=SubStr(УслКодСч[Iter],3,10); fi;
  z=SearchInArray(Раб.КБК.cacheСЧЕТА_Код,tmp,True);
  if z=-1: tmp=""; else tmp=Раб.КБК.cacheСЧЕТА_Наим[z]; fi;
  Наим[Iter]=tmp;
 od;
 if not FieldName="onOpen":
    Message("Восстановлены стандартные условия отбора");
 fi;
 ^False;
end;

Func ЗакрНастр_onEnter(FieldName: String; Iter: Integer): logical;
 if ПроверитьНастр: ОткрНастр(False);
    Инициализация; 
    Очистить; 
    if not КодСч="":
       iНастр=SearchInArray(УслКодСч,КодСч);
       if iНастр=-1: КодСч=""; fi;
    fi;
 fi;
 ^False;
end;

Func fНаимКонтр_OnEnter(FieldName: String; Iter: Integer): logical;
 fНаимКонтр=not fНаимКонтр;
 Return False;
end;

Func A_OnEnter(FieldName: String; Iter: Integer): logical;
 if AsString(Template.Name)="Н3":
    InsertFrame(УпрН,Iter+1);
   else
    InsertFrame(УпрНаимК,Iter+1);
 fi;
 Return False;
end;

Func D_OnEnter(FieldName: String; Iter: Integer): logical;
 if AsString(Template.Name)="Н3":
    DeleteFrame(УпрН,Iter);
   else
    DeleteFrame(УпрНаимК,Iter);
 fi;
 Return False;
end;

Func УслКодСч_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
var l,z:i;
 Раб.КБК.CrdToCache("СЧ",False);
 tmp=Раб.КБК.Список("*","","СЧ9 ИГ");
 if tmp="": ^False; fi;
 l=Length(tmp);
 if l=2 or l=6: Message("Выбор группы разрешен только для уровня аналитического счета",mtError); ^False; fi;
 if l=9: tmp=tmp+"000"; l=6; else l=10; fi;
 z=SearchInArray(УслКодСч,tmp,False,1);
 if not z=-1:
    if z=Iter: z=SearchInArray(УслКодСч,tmp,False,Iter+1); fi;
    if not z=-1: Message("Повторный ввод кода счета "+tmp,mtError); Template.Frame=z; ^False; fi;
 fi;
 УслКодСч[Iter]=tmp;
 z=SearchInArray(Раб.КБК.cacheСЧЕТА_Код,SubStr(tmp,3,l),True);
 if z=-1: Наим[Iter]=""; else Наим[Iter]=Раб.КБК.cacheСЧЕТА_Наим[z]; fi;
 Return False;
end;

Proc УслКодСч_OnExit(FieldName: String; Iter: Integer);
 Наим[Iter]="";
end;

Func УслКоррСч_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var z:n;
 z=Saldo(Value,1.1.100);
 if FieldName="ВР_УслКоррСч":
    if not Pos("~",Value)=0 or not Pos("&",Value)=0 or not Pos("(",Value)=0 or not Pos(")",Value)=0: Message("Недопустимо использовать символы ~ & ( ) в данном условии",mtError); ^False; fi;
 fi;
 ^True;
end;

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

Func УслАн_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var z:n;
 Try
  z=Turn("{"+Value+"}",1.1.100,1.1.100);
  if FieldName="ВР_УслАна":
     if not Pos("~",Value)=0 or not Pos("&",Value)=0 or not Pos("(",Value)=0 or not Pos(")",Value)=0: Message("Недопустимо использовать символы ~ & ( ) в данном условии",mtError); ^False; fi;
  fi;
 Except
  Raise;
  ^False;
 end;
 ^True;
end;

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

Func СправКонтр_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:s;
var n:i;
 if УслКодСч[Iter]="": Template.HideEditor(False); Message("Введите код счета бюджетного учета",mtError); Template.Field="УслКодСч"; Template.Frame=Iter; ^False; fi;
 if Match(УслКодСч[Iter],"*.000"): tmp="*."+SubStr(УслКодСч[Iter],1,8)+".???"; else tmp="*."+УслКодСч[Iter]; fi;
 tmp=Раб.Бюджет2005.СписокСправ(tmp,0,"");
 CopyArray(Раб.Бюджет2005.BufСправ,Buf);
 n=Alternate("Аналитические справочники",Buf,-1,1,12);
 if n=0: ^False; fi;
 tmp=SubStr(Buf[n],1,Pos(" --",Buf[n])-1);
 СправКонтр[Iter]=tmp;
 Return False;
end;

Func fКод_OnEnter(FieldName: String; Iter: Integer): logical;
 if FieldName="fИНН_": fИНН[Iter]=not fИНН[Iter];
   |FieldName="fППП_": fППП[Iter]=not fППП[Iter];
   |FieldName="fОКТМО_": fОКТМО[Iter]=not fОКТМО[Iter];
   |FieldName="fЭлБ_": fЭлБ[Iter]=not fЭлБ[Iter];
 fi;
 Return False;
end;

Func fКодСч_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
var Ret1,Ret2,tmp,tplКР,tplКД,tplКИФД:S;
 ClearVariable(Buf);
 Buf[1]="Расходы";
 Buf[2]="Доходы";
 Buf[3]="Дефициты";
 n=Alternate("Выберите показатель гр.5",Buf,-1,1,12);
 if not n=0:
    FieldName=SubStr(FieldName,1,Length(FieldName)-1);
    tmp=GetVariableS(FieldName+"["+Str(Iter)+"]");
    tplКР=Trim(ExtractWord(1,tmp,"|"));
    if tplКР="" and n=1: tplКР=" "; fi;
    tplКД=Trim(ExtractWord(2,tmp,"|"));
    if tplКД="" and n=2: tplКД=" "; fi;
    tplКИФД=Trim(ExtractWord(3,tmp,"|"));
    if tplКИФД="" and n=3: tplКИФД=" "; fi;
    Ret1=Раб.Вспом.ШаблонСч.Вызвать(tplКР,tplКД,tplКИФД,if(FieldName="fКодСч0_","#|0","#|0|X"));
    PutVariableS(FieldName+"["+Str(Iter)+"]",Ret1);
    Ret2=НастрКодСчНаим(Ret1);
    PutVariableS(FieldName+"_["+Str(Iter)+"]",Trim(Ret2));
 fi;
 Return False;
end;

Proc fКодСч_OnExit(FieldName: String; Iter: Integer);
 ClearVariable(Buf);
 FieldName=SubStr(FieldName,1,Length(FieldName)-1);
 PutVariableS(FieldName+"["+Str(Iter)+"]","");
 PutVariableS(FieldName+"_["+Str(Iter)+"]",НастрКодСчНаим(""));
end;

Func fИтог_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="гр.6=сум(гр.6), гр.7=сум(гр.7)";
 Buf[2]="гр.6=сум(гр.6-гр.7), гр.7 не заполняется";
 Buf[3]="гр.7=сум(гр.7-гр.6), гр.6 не заполняется";
 n=if(fИтог[Iter]=0:1|fИтог[Iter]=1:2|fИтог[Iter]=-1:3|True:0);
 n=Alternate("Расчет итогов",Buf,-1,n,12);
 if n=0: ^False; fi;
 fИтог[Iter]=if(n=1:0|n=2:1|n=3:-1);
 Return False;
end;

Func fВидРасч_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Неденежные расчеты";
 Buf[2]="Денежные расчеты";
 Buf[3]="Определяется условием";
 n=Alternate("Виды расчетов",Buf,-1,ВидРасч[Iter]+1,12);
 fВидРасч[Iter]=n-1;
 Return False;
end;

Func НаимК_Поле_OnEnter(FieldName: String; Iter: Integer): logical;
var n,nn:i;
 ClearVariable(Buf);
 nn=GetCardFileFields("Контрагент",Buf,mtlSTRING);
 for n=1..nn do
  Buf[n]=Buf[n]+" --"+GetCardFileFieldComment("Контрагент",Buf[n]);
 od;
 n=Alternate("Список полей",Buf,-1,1,12);
 if not n=0:
    НаимК_Поле[Iter]=SubStr(Buf[n],1,Pos(" --",Buf[n])-1);
    НаимК_Кмнт[Iter]=SubStr(Buf[n],Pos(" --",Buf[n])+3,255);
 fi;
 Return False;
end;

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

Func КодСч_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
var hВД:s;
 if LengthOfArray(СписокСч)=0: Message("Необходимо выполнить настройку формы",mtError); ОткрНастр(True); ^False; fi;
 n=Alternate("Выберите код счета бюджетного учета",СписокСч,-1,SearchInArray(СписокСч,КодСч,True),12);
 if n=0: ^False; fi;
 hВД=SubStr(КодСч,1,1);
 КодСч=SubStr(СписокСч[n],1,12);
 ВД=SubStr(КодСч,1,1);
 if not hВД=ВД:
    if ВД="1": НаимВД=Раб.Парам_Отч.НаимБС;
      |ВД="2": НаимВД=Раб.Парам_Отч.НаимВБС;
      |true: НаимВД="";
    fi;
 fi;
 if Match(КодСч,"*.000"): МаскаСч="*."+SubStr(КодСч,1,8)+".???"; else МаскаСч="*."+КодСч; fi;
 iНастр=SearchInArray(УслКодСч,КодСч);
 Очистить;
 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;

Func УслКонтр_OnEnter(FieldName: String; Iter: Integer): logical;
 if КодСч="": Message("Выберите код счета бюджетного учета",mtError); Template.Field="КодСч"; ^False; fi;
 iНастр=SearchInArray(УслКодСч,КодСч);
 if iНастр=-1: Message("Необходимо выполнить настройку формы",mtError); ОткрНастр(True); ^False; fi;
 if СправКонтр[iНастр]="": Message("Необходимо выполнить настройку формы",mtError); ОткрНастр(True); ^False; fi;
 Return True;
end;

Proc УслКонтр_OnExit(FieldName: String; Iter: Integer);
 Очистить;
end;

Func УслКонтр_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Cur=AnaElection(СправКонтр[iНастр]);
 if Cur="": Template.HideEditor(False); ^Cur; fi;
 Cur=Раб.Бюджет2005.Объединить_Диалог(УслКонтр,Cur,"|=ИЛИ;&~=И ИСКЛЮЧИТЬ;_=ЗАМЕНИТЬ","_");
 if Раб.Бюджет2005.HideEditor: Template.HideEditor(False); УслКонтр=Cur; Очистить; fi;
 Return Cur;
end;

Proc SГ1С020М1_OnExit(FieldName: String; Iter: Integer);
 if SГ1С020М1[Iter]="": ПризнКонтр[Iter]=""; Док[Iter]=""; fi;
end;

Func SГ1С020М1_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:S;
var Iter:I;
 Template.HideEditor(false);
 Iter=AsInteger(Template.Frame);
 if КодСч="": Message("Введите код счета бюджетного учета",mtError); Template.Field="КодСч"; ^Cur; fi;
 ClearVariable(cacheКонтр);
 ClearVariable(cacheНаим);
 tmp=AnaElection(СправКонтр[iНастр],False,False,ПризнКонтр[Iter]);
 if tmp="": ^Cur; fi;
 ПризнКонтр[Iter]=tmp;
 OWA_Контр=OpenWorkArea("Контрагент","");
 Try
  SГ1С020М1[Iter]=ВзятьНаимКонтр(ПризнКонтр[Iter]);
  SГ2С020М1[Iter]=ВзятьИННКонтр(ПризнКонтр[Iter]);
 Finally
  CloseWorkArea(OWA_Контр);
 end;
 if SГ1С020М1[Iter]="" or SГ1С020М1[Iter]=" ": SГ1С020М1[Iter]=ПризнКонтр[Iter]; fi;
 Return Cur;
end;

Func SГ6С020М1_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
var tmp:S;
 Template.HideEditor(False);
 if КодСч="": Message("Введите код счета бюджетного учета",mtError); Template.Field="КодСч"; ^Cur; fi;
 Iter=AsInteger(Template.Frame);
 if Match(КодСч,"*.000"): tmp="*."+SubStr(КодСч,1,8)+".???"; else tmp="*."+КодСч; fi;
 tmp=AccountElection(tmp,False,SГ6С020М1[Iter]);
 if tmp="": ^Cur; fi;
 SГ6С020М1[Iter]=tmp;
 Return Cur;
end;

Func SГ9С020М1_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
var tmp:S;
 Template.HideEditor(False);
 if КодСч="": Message("Введите код счета бюджетного учета",mtError); Template.Field="КодСч"; ^Cur; fi;
 Iter=AsInteger(Template.Frame);
 tmp=Раб.КБК.Список("*."+SubStr(КодСч,1,1)+"."+Раб.Бюджет2005.МаскаСч8,"","СЧ9 И");
 if tmp="": ^Cur; fi;
 SГ9С020М1[Iter]=tmp;
 Return Cur;
end;

Func SГ10С020М1_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:S;
var Iter:I;
 Template.HideEditor(false);
 Iter=AsInteger(Template.Frame);
 if КодСч="": Message("Введите код счета бюджетного учета",mtError); Template.Field="КодСч"; ^Cur; fi;
 tmp=AnaElection(СправКонтрКонс[iНастр],False,False);
 if tmp="": ^Cur; fi;
 SГ2С020М1[Iter]=ВзятьИННКонтр(tmp);
 Return Cur;
end;

Func ВидРасч_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Неденежные расчеты";
 Buf[2]="Денежные расчеты";
 Buf[3]="Неопределен";
 n=Alternate("Виды расчетов",Buf,-1,ВидРасч[Iter]+1,12);
 ВидРасч[Iter]=n-1;
 Return False;
end;

Func РассчитатьИтого_OnEnter(FieldName: String; Iter: Integer): logical;
 РасчетИтог;
 Return False;
end;

Func ОчиститьИтого_OnEnter(FieldName: String; Iter: Integer): logical;
 if EnqOkCancel("Таблица итогов будет очищена. Продолжить ?",mtWarning)=cmOk:
    ОчиститьИтог;
 fi;
 Return False;
end;

Func SГ1С040М2_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var n,Iter,z:I;
var tmp:S;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if ГруппировкаСч(AsString(Template.Field))=0: Message("Заполните таблицу",mtError); Template.Field="SГ6С020М1"; Template.Frame=1; ^Cur; fi;
 n=Alternate("Номер (код) счета бюджетного учета",Buf,-1,SearchInArray(Key,SГ3С040М2[Iter]+"$"+SГ4С040М2[Iter]+"$"+SГ5С040М2[Iter]+"$"+SГ6С040М2[Iter],True),12);
 if not n=0:
    for z=1..М2 do
     if BufППП[n]=SГ3С040М2[z] and BufОКТМО[n]=SГ4С040М2[z] and BufЭлБ[n]=SГ5С040М2[z] and BufСч[n]=SГ6С040М2[z] and not z=Iter:
        tmp=Раб.Бюджет2005.Объединить(BufСч[n],if(BufППП[n]="","","ППП="+BufППП[n]),"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,if(BufОКТМО[n]="","","ОКТМО="+BufОКТМО[n]),"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,if(BufЭлБ[n]="","","Эл.бюдж.="+BufЭлБ[n]),"  ");
        Message("Повторный ввод (кода) счета "+tmp,mtError);  Template.Field="SГ6С040М2"; Template.Frame=z; ^Cur;
     fi;
    od;
    SГ3С040М2[Iter]=BufППП[n];
    SГ4С040М2[Iter]=BufОКТМО[n];
    SГ5С040М2[Iter]=BufЭлБ[n];
    SГ6С040М2[Iter]=BufСч[n];
    RГ7С040М2[Iter]=0;
    RГ8С040М2[Iter]=0;
    for n=1..М1 do
     tmp=ВзятьКодСчета(fКодСч1[iНастр],SГ6С020М1[n]);
     if SГ3С020М1[n]=SГ3С040М2[Iter] and SГ4С020М1[n]=SГ5С040М2[Iter] and SГ4С020М1[n]=SГ5С040М2[Iter] and tmp=SГ6С040М2[Iter]:
        RГ7С040М2[Iter]=RГ7С040М2[Iter]+if(fИтог[iНастр]=1:RГ7С020М1[Iter]-RГ8С020М1[Iter]|fИтог[iНастр]=-1:0|True:RГ7С020М1[Iter]);
        RГ8С040М2[Iter]=RГ8С040М2[Iter]+if(fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С020М1[Iter]-RГ7С020М1[Iter]|True:RГ8С020М1[Iter]);
     fi;
    od;
 fi;
 Return Cur;
end;

Func SГ1С050М3_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var n,Iter,z:I;
var tmp:S;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if ГруппировкаСч(AsString(Template.Field))=0: Message("Денежные расчеты таблице не найдены",mtError); Template.Field="SГ6С020М1"; Template.Frame=1; ^Cur; fi;
 n=Alternate("Денежные расчеты",Buf,-1,SearchInArray(Key,SГ3С050М3[Iter]+"$"+SГ4С050М3[Iter]+"$"+SГ5С050М3[Iter]+"$"+SГ6С050М3[Iter]+"$"+SГ9С050М3[Iter],True),12);
 if not n=0:
    for z=1..М3 do
     if BufППП[n]=SГ3С050М3[z] and BufОКТМО[n]=SГ4С050М3[z] and BufЭлБ[n]=SГ5С050М3[z] and BufСч[n]=SГ6С050М3[z] and not z=Iter:
        tmp=Раб.Бюджет2005.Объединить(if(BufППП[n]="","","ППП="+BufППП[n]),if(BufОКТМО[n]="","","ОКТМО="+BufОКТМО[n]),"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,if(BufЭлБ[n]="","","Эл.бюдж.="+BufЭлБ[n]),"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,BufСч[n],"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,BufКоррСч[n],"  /  ");
        Message("Повторный ввод "+tmp,mtError);  Template.Field="SГ6С050М3"; Template.Frame=z; ^Cur;
     fi;
    od;
    SГ3С050М3[Iter]=BufППП[n];
    SГ4С050М3[Iter]=BufОКТМО[n];
    SГ5С050М3[Iter]=BufЭлБ[n];
    SГ6С050М3[Iter]=BufСч[n];
    RГ7С050М3[Iter]=0;
    RГ8С050М3[Iter]=0;
    SГ9С050М3[Iter]=BufКоррСч[n];
    for n=1..М1 do
     tmp=ВзятьКодСчета(fКодСч2[iНастр],SГ6С020М1[n]);
     if SГ3С020М1[n]=SГ3С050М3[Iter] and SГ4С020М1[n]=SГ5С050М3[Iter] and SГ4С020М1[n]=SГ5С050М3[Iter] and tmp=SГ6С050М3[Iter] and SГ9С020М1[n]=SГ9С050М3[Iter]:
        RГ7С050М3[Iter]=RГ7С050М3[Iter]+if(fИтог[iНастр]=1:RГ7С020М1[Iter]-RГ8С020М1[Iter]|fИтог[iНастр]=-1:0|True:RГ7С020М1[Iter]);
        RГ8С050М3[Iter]=RГ8С050М3[Iter]+if(fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С020М1[Iter]-RГ7С020М1[Iter]|True:RГ8С020М1[Iter]);
     fi;
    od;
 fi;
 Return Cur;
end;

Func SГ1С060М4_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var n,Iter,z:I;
var tmp:S;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if ГруппировкаСч(AsString(Template.Field))=0: Message("Неденежные расчеты таблице не найдены",mtError); Template.Field="SГ6С020М1"; Template.Frame=1; ^Cur; fi;
 n=Alternate("Неденежные расчеты",Buf,-1,SearchInArray(Key,SГ4С060М4[Iter]+"$"+SГ5С060М4[Iter]+"$"+SГ6С060М4[Iter]+"$"+SГ9С060М4[Iter],True),12);
 if not n=0:
    for z=1..М4 do
     if BufППП[n]=SГ3С060М4[z] and BufОКТМО[n]=SГ4С060М4[z] and BufЭлБ[n]=SГ5С060М4[z] and BufСч[n]=SГ6С060М4[z] and not z=Iter:
        tmp=Раб.Бюджет2005.Объединить(if(BufППП[n]="","","ППП="+BufППП[n]),if(BufОКТМО[n]="","","ОКТМО="+BufОКТМО[n]),"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,if(BufЭлБ[n]="","","Эл.бюдж.="+BufЭлБ[n]),"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,BufСч[n],"  ");
        tmp=Раб.Бюджет2005.Объединить(tmp,BufКоррСч[n],"  /  ");
        Message("Повторный ввод "+tmp,mtError);  Template.Field="SГ6С060М4"; Template.Frame=z; ^Cur;
     fi;
    od;
    SГ3С060М4[Iter]=BufППП[n];
    SГ4С060М4[Iter]=BufОКТМО[n];
    SГ5С060М4[Iter]=BufЭлБ[n];
    SГ6С060М4[Iter]=BufСч[n];
    RГ7С060М4[Iter]=0;
    RГ8С060М4[Iter]=0;
    SГ9С060М4[Iter]=BufКоррСч[n];
    for n=1..М1 do
     tmp=ВзятьКодСчета(fКодСч2[iНастр],SГ6С020М1[n]);
     if SГ3С020М1[n]=SГ3С060М4[Iter] and SГ4С020М1[n]=SГ5С060М4[Iter] and SГ4С020М1[n]=SГ5С060М4[Iter] and tmp=SГ6С060М4[Iter] and SГ9С020М1[n]=SГ9С060М4[Iter]:
        RГ7С060М4[Iter]=RГ7С060М4[Iter]+if(fИтог[iНастр]=1:RГ7С020М1[Iter]-RГ8С020М1[Iter]|fИтог[iНастр]=-1:0|True:RГ7С020М1[Iter]);
        RГ8С060М4[Iter]=RГ8С060М4[Iter]+if(fИтог[iНастр]=1:0|fИтог[iНастр]=-1:RГ8С020М1[Iter]-RГ7С020М1[Iter]|True:RГ8С020М1[Iter]);
     fi;
    od;
 fi;
 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,"ИНИЦИАЛЫ");
 if FieldName="ФИОРук": ФИОРук=tmp;
   |FieldName="ФИОБух": ФИОБух=tmp;
 fi;
 Return Cur ;
end;

Func Расшифр_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field,УслСч,УслАн,Rpt,Знак,tmp,Crd:S;
var Iter:i;
var Rec: Record;
 Template.HideEditor(false);
 Field=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 if not Док[Iter]="":
    Crd=ExtractWord(1,Док[Iter],":");
    Rec=StringToRecord(ExtractWord(2,Док[Iter],":"));
    if Crd="РПО_ИЗВЕЩЕНИЯ_ВХ": OpenBlank("ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ВХ_69Н",True,Rec);
      |Crd="РПО_ИЗВЕЩЕНИЯ_ИСХ": OpenBlank("ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ИСХ_69Н",True,Rec);
    fi;
    ^Cur;
 fi;
-- if ПризнКонтр[Iter]="" or SГ1С020М1[Iter]="": Message("Заполните контрагента",mtError); Template.Field="SГ1С020М1"; Template.Frame=Iter; ^Cur; fi;
 if SГ6С020М1[Iter]="": Message("Заполните номер счета бюджетного учета",mtError); Template.Field="SГ6С020М1"; Template.Frame=Iter; ^Cur; fi;
 if SГ9С020М1[Iter]="": Message("Заполните код корреспондирующего счета бюджетного учета",mtError); Template.Field="SГ9С020М1"; Template.Frame=Iter; ^Cur; fi;
 if Field="RГ7С020М1": Знак="+"; else Знак="-"; fi;
 УслСч=Знак+SГ6С020М1_[Iter]+"/*."+SГ9С020М1[Iter];
 tmp="";
 if not ВР_УслКоррСч[iНастр]="": tmp="("+ВР_УслКоррСч[iНастр]+")"; fi;
 if ВидРасч[Iter]=0: УслСч=Раб.Бюджет2005.Объединить(УслСч,tmp,"&"); else УслСч=Раб.Бюджет2005.Объединить(УслСч,tmp,"&~"); fi;
 УслАн=Раб.Бюджет2005.Объединить(ОбщУслАн,if(УслАна[iНастр]="","","("+УслАна[iНастр]+")"),"&");
 УслАн=Раб.Бюджет2005.Объединить(УслАн,ПризнКонтр[Iter],"&");
 УслАн=Раб.Бюджет2005.Объединить(УслАн,if(УслКонтр="","","("+УслКонтр+")"),"&");
 if ПризнКонтр[Iter]="":
    УслАн=Раб.Бюджет2005.Объединить(УслАн,"~"+СправКонтр[iНастр],"&");
 fi;
 if НеУчитЗаклПр: УслАн=Раб.Бюджет2005.Объединить(УслАн,Раб.Парам_Отч.ИсклЗакл,"&"); fi;
 tmp="";
 if not ВР_УслАна[iНастр]="": tmp="("+ВР_УслАна[iНастр]+")"; fi;
 if ВидРасч[Iter]=0: УслАн=Раб.Бюджет2005.Объединить(УслАн,tmp,"&"); else УслАн=Раб.Бюджет2005.Объединить(УслАн,tmp,"&~"); fi;
 if Вал="": Rpt='"001"'; else Rpt='"003"'; fi;
 Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst".'+Rpt,ДН,ДК,УслСч,УслАн);
 ^Cur;
end;

Func Расшифр2_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field,УслСч,УслАн,Rpt,Знак:S;
var ОбщУслСч_,ОбщУслКД_,ОбщУслКР_,ОбщУслКИФД_,ТипКБК,МаскаСч:S;
var Iter:i;
 Template.HideEditor(false);
 if КодСч="": Message("Выберите код счета бюджетного учета",mtError); Template.Field="КодСч"; ^Cur; fi;
 iНастр=SearchInArray(УслКодСч,КодСч);
 if iНастр=-1: Message("Необходимо выполнить настройку формы",mtError); ОткрНастр(True); ^Cur; fi;
 Field=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 if SГ6С040М2[Iter]="": Message("Заполните номер (код) счета",mtError); Template.Field="SГ6С040М2"; Template.Frame=Iter; ^Cur; fi;
 if Field="RГ7С040М2" and fИтог[iНастр]=0: Знак="+";
   |Field="RГ8С040М2" and fИтог[iНастр]=0: Знак="-";
   |True: Знак="";
 fi;
 if fКодСч1[iНастр]="" or fКодСч1[iНастр]="1":
    УслСч=Знак+SГ6С040М2[Iter];
   else 
    if not ОбщУслКД="": ОбщУслКД_=Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКД,"КД","КБК",False)+".*."+Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКД,"КД","КОСГУ",False); else ОбщУслКД_=""; fi;
    if not ОбщУслКР="": ОбщУслКР_=Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКР,"ФКР","КБК",False)+".*."+Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКР,"ФКР","КОСГУ",False); else ОбщУслКР_=""; fi;
    if not ОбщУслКИФД="": ОбщУслКИФД_=Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКИФД,"КИФД","КБК",False)+".*."+Раб.Бюджет2005.ВзятьКодКБК(ОбщУслКИФД,"КИФД","КОСГУ",False); else ОбщУслКИФД_=""; fi;
    ОбщУслСч_=Раб.Бюджет2005.Объединить(ОбщУслКД_,ОбщУслКР_,"|");
    ОбщУслСч_=Раб.Бюджет2005.Объединить(ОбщУслСч_,ОбщУслКИФД_,"|");
    if not ОбщУслСч_="": ОбщУслСч_="("+ОбщУслСч_+")"; fi;
    ТипКБК=Раб.Бюджет2005.ТипКБКСчета(SГ6С040М2[Iter]);
    МаскаСч=Раб.Бюджет2005.ВзятьКодСчета(SГ6С040М2[Iter],ТипКБК,"СЧ9",False);
    if ТипКБК="ФКР": МаскаСч=Раб.Бюджет2005.ВзятьКодСчета(SГ6С040М2[Iter],ТипКБК,"РП",True)+".???????.???."+МаскаСч;
      |ТипКБК="КД":  МаскаСч=Раб.Бюджет2005.ВзятьКодСчета(SГ6С040М2[Iter],ТипКБК,"ПГР",True)+".?????.??.????."+МаскаСч;
      |ТипКБК="КИФД": МаскаСч=Раб.Бюджет2005.ВзятьКодСчета(SГ6С040М2[Iter],ТипКБК,"СТ",True)+".??.??.????."+МаскаСч;
    fi;
    УслСч=Раб.Бюджет2005.Объединить(Знак+МаскаСч,ОбщУслСч_,"&");
 fi;
 УслАн=Раб.Бюджет2005.Объединить(ОбщУслАн,if(УслАна[iНастр]="","","("+УслАна[iНастр]+")"),"&");
 УслАн=Раб.Бюджет2005.Объединить(УслАн,if(УслКонтр="","","("+УслКонтр+")"),"&");
 if НеУчитЗаклПр: УслАн=Раб.Бюджет2005.Объединить(УслАн,Раб.Парам_Отч.ИсклЗакл,"&"); fi;
 if Вал="": Rpt='"001"'; else Rpt='"003"'; fi;
 Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst".'+Rpt,ДН,ДК,УслСч,УслАн);
 ^Cur;
end;

Func Расшифр3_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field,УслСч,УслАн,Rpt,Знак:S;
var Iter:i;
 Template.HideEditor(false);
 if КодСч="": Message("Выберите код счета бюджетного учета",mtError); Template.Field="КодСч"; ^Cur; fi;
 iНастр=SearchInArray(УслКодСч,КодСч);
 if iНастр=-1: Message("Необходимо выполнить настройку формы",mtError); ОткрНастр(True); ^Cur; fi;
 Field=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 if SГ6С050М3[Iter]="": Message("Заполните номер (код) счета",mtError); Template.Field="SГ6С050М3"; Template.Frame=Iter; ^Cur; fi;
 if SГ9С050М3[Iter]="": Message("Заполните код корреспондирующего счета",mtError); Template.Field="SГ9С050М3"; Template.Frame=Iter; ^Cur; fi;
 if Field="RГ7С050М3" and fИтог[iНастр]=0: Знак="+";
   |Field="RГ8С050М3" and fИтог[iНастр]=0: Знак="-";
   |True: Знак="";
 fi;
 УслСч=Знак+SГ6С050М3[Iter]+"/*."+SГ9С050М3[Iter];
 УслСч=Раб.Бюджет2005.Объединить(УслСч,if(ВР_УслКоррСч[iНастр]="","","("+ВР_УслКоррСч[iНастр]+")"),"&~");
 УслАн=Раб.Бюджет2005.Объединить(ОбщУслАн,if(УслАна[iНастр]="","","("+УслАна[iНастр]+")"),"&");
 УслАн=Раб.Бюджет2005.Объединить(УслАн,if(УслКонтр="","","("+УслКонтр+")"),"&");
 if НеУчитЗаклПр: УслАн=Раб.Бюджет2005.Объединить(УслАн,Раб.Парам_Отч.ИсклЗакл,"&"); fi;
 УслАн=Раб.Бюджет2005.Объединить(УслАн,if(ВР_УслАна[iНастр]="","","("+ВР_УслАна[iНастр]+")"),"&~");
 if Вал="": Rpt='"001"'; else Rpt='"003"'; fi;
 Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst".'+Rpt,ДН,ДК,УслСч,УслАн);
 ^Cur;
end;

Func Расшифр4_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field,УслСч,УслАн,Rpt,Знак:S;
var Iter:i;
 Template.HideEditor(false);
 if КодСч="": Message("Выберите код счета бюджетного учета",mtError); Template.Field="КодСч"; ^Cur; fi;
 iНастр=SearchInArray(УслКодСч,КодСч);
 if iНастр=-1: Message("Необходимо выполнить настройку формы",mtError); ОткрНастр(True); ^Cur; fi;
 Field=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 if SГ6С060М4[Iter]="": Message("Заполните номер (код) счета",mtError); Template.Field="SГ6С060М4"; Template.Frame=Iter; ^Cur; fi;
 if SГ9С060М4[Iter]="": Message("Заполните код корреспондирующего счета",mtError); Template.Field="SГ9С060М4"; Template.Frame=Iter; ^Cur; fi;
 if Field="RГ7С060М4" and fИтог[iНастр]=0: Знак="+";
   |Field="RГ8С060М4" and fИтог[iНастр]=0: Знак="-";
   |True: Знак="";
 fi;
 УслСч=Знак+SГ6С060М4[Iter]+"/*."+SГ9С060М4[Iter];
 УслСч=Раб.Бюджет2005.Объединить(УслСч,if(ВР_УслКоррСч[iНастр]="","","("+ВР_УслКоррСч[iНастр]+")"),"&");
 УслАн=Раб.Бюджет2005.Объединить(ОбщУслАн,if(УслАна[iНастр]="","","("+УслАна[iНастр]+")"),"&");
 УслАн=Раб.Бюджет2005.Объединить(УслАн,if(УслКонтр="","","("+УслКонтр+")"),"&");
 if НеУчитЗаклПр: УслАн=Раб.Бюджет2005.Объединить(УслАн,Раб.Парам_Отч.ИсклЗакл,"&"); fi;
 УслАн=Раб.Бюджет2005.Объединить(УслАн,if(ВР_УслАна[iНастр]="","","("+ВР_УслАна[iНастр]+")"),"&");
 if Вал="": Rpt='"001"'; else Rpt='"003"'; fi;
 Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst".'+Rpt,ДН,ДК,УслСч,УслАн);
 ^Cur;
end;
2--Обработчики объектов шаблона-----
Proc cbНеУчитЗаклПр_OnChange(Sender: String);
 Перерасчет(False);
end;

Proc btnРасчет_OnClick(Sender: String);
 Перерасчет(False);
end;

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

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

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

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

Func ЕстьДанныеДляВыгрузки :Logical;
 if (Abs(RГ7С030_)+Abs(RГ8С030_))>0.00: ^True; fi;
 ^False;
end;

Func КлючИНН(ИНН_:String) :Logical;
var П :Integer;
 П=31*Int(SubStr(ИНН_,1,1))+
   29*Int(SubStr(ИНН_,2,1))+
   23*Int(SubStr(ИНН_,3,1))+
   19*Int(SubStr(ИНН_,4,1))+
   17*Int(SubStr(ИНН_,5,1))+
   13*Int(SubStr(ИНН_,6,1))+
    7*Int(SubStr(ИНН_,7,1))+
    5*Int(SubStr(ИНН_,8,1))+
    3*Int(SubStr(ИНН_,9,1));
 П=11-Int(П-11*Trunc(П/11));
 П=if(П>9:0,П);
 ^П=Int(SubStr(ИНН_,10,1));
end;

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

Proc Экспорт_TXT_ДФ; -- выгрузка в формат департамента финансов г.Москвы
var Путь, nameFile, Value, nameacc :String;
var FS, ii :Integer;
var FlagCreate :Logical;

 --УбратьЛишниеСтроки;

 if Year(ДК)<2000: Message("Дата отчета должна быть позже 2000 года.", mtWarning); Template.Field="ДАТАОТЧ"; Exit; fi;
 if УЧР_ИНН="" or not КлючИНН(УЧР_ИНН): Message("Некорректный ИНН.^MПроверьте реквизиты", mtError); Template.Field="УЧР_НАИМ"; Exit; fi;

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

    nameFile=Путь+"125"+Format("%.2d", Mon(AddMon(ДК, -1)))+Format("%.2d", Year(AddMon(ДК, -1))-2000)+"m1.txt";
    Try
      Try if ExistFile(nameFile): DeleteFile(nameFile); fi; Except end;
      FlagCreate=False;
      FS=TextFileCreate(nameFile);
      FlagCreate=True;
      -- Записываем заголовок
      TextFileWriteLn(FS, "ИНН="+УЧР_ИНН);
      TextFileWriteLn(FS, "ДАТА="+DateToString(ДК));
      TextFileWriteLn(FS, "КОДФ=125");
      nameacc=РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(КОДСЧ, ".", "");
      TextFileWriteLn(FS, "СЧЕТ="+nameacc);
      -- Записываем данные
      TextFileWriteLn(FS, "ТБ=01");
--      Value="2|000|00000000000|00|00000000000000000000000000|"+if(RГ7С030[1]<>0.00, Str(RГ7С030[1], 2), "0")+"|"+if(RГ8С030[1]<>0.00, Str(RГ8С030[1], 2), "0")+"|000000000";
      Value="2|000|00000000000|00|00000000000000000000000000|"+if(RГ7С030<>0.00, Str(RГ7С030, 2), "0")+"|"+if(RГ8С030<>0.00, Str(RГ8С030, 2), "0")+"|000000000";
      TextFileWriteLn(FS, Value);
      if (Abs(SumOfArray(RГ7С040М2, М2))+Abs(SumOfArray(RГ8С040М2, М2)))>0.00:
        Value="3|000|00000000000|00|00000000000000000000000000|"+if(SumOfArray(RГ7С040М2, М2)<>0.00, Str(SumOfArray(RГ7С040М2, М2), 2), "0")+"|"+if(SumOfArray(RГ8С040М2, М2)<>0.00, Str(SumOfArray(RГ8С040М2, М2), 2), "0")+"|000000000";
        TextFileWriteLn(FS, Value);
        for ii=1 to М2 do
          Value="3|"+SГ3С040М2[ii]+"|"+SГ4С040М2[ii]+"|"+SГ5С040М2[ii]+"|00000000000000000"+РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(SГ6С040М2[ii], ".", "")+"|"+if(RГ7С040М2[ii]<>0.00, Str(RГ7С040М2[ii], 2), "0")+"|"+if(RГ8С040М2[ii]<>0.00, Str(RГ8С040М2[ii], 2), "0")+"|000000000";
          TextFileWriteLn(FS, Value);
        od;
      fi;
      if (Abs(SumOfArray(RГ7С050М3, М3))+Abs(SumOfArray(RГ8С050М3, М3)))>0.00:
        Value="4|000|00000000000|00|00000000000000000000000000|"+if(SumOfArray(RГ7С050М3, М3)<>0.00, Str(SumOfArray(RГ7С050М3, М3), 2), "0")+"|"+if(SumOfArray(RГ8С050М3, М3)<>0.00, Str(SumOfArray(RГ8С050М3, М3), 2), "0")+"|000000000";
        TextFileWriteLn(FS, Value);
        for ii=1 to М3 do
          Value="4|"+SГ3С050М3[ii]+"|"+SГ4С050М3[ii]+"|"+SГ5С050М3[ii]+"|"+РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(SГ6С050М3[ii], ".", "")+"|"+if(RГ7С050М3[ii]<>0.00, Str(RГ7С050М3[ii], 2), "0")+"|"+if(RГ8С050М3[ii]<>0.00, Str(RГ8С050М3[ii], 2), "0")+"|"+РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(SГ9С050М3[ii], ".", "");
          TextFileWriteLn(FS, Value);
        od;
      fi;
      if (Abs(SumOfArray(RГ7С060М4, М4))+Abs(SumOfArray(RГ8С060М4, М4)))>0.00:
        Value="5|000|00000000000|00|00000000000000000000000000|"+if(SumOfArray(RГ7С060М4, М4)<>0.00, Str(SumOfArray(RГ7С060М4, М4), 2), "0")+"|"+if(SumOfArray(RГ8С060М4, М4)<>0.00, Str(SumOfArray(RГ8С060М4, М4), 2), "0")+"|000000000";
        TextFileWriteLn(FS, Value);
        for ii=1 to М4 do
          Value="5|"+SГ3С060М4[ii]+"|"+SГ4С060М4[ii]+"|"+SГ5С060М4[ii]+"|"+РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(SГ6С060М4[ii], ".", "")+"|"+if(RГ7С060М4[ii]<>0.00, Str(RГ7С060М4[ii], 2), "0")+"|"+if(RГ8С060М4[ii]<>0.00, Str(RГ8С060М4[ii], 2), "0")+"|"+РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(SГ9С060М4[ii], ".", "");
          TextFileWriteLn(FS, Value);
        od;
      fi;
      TextFileClose(FS);
      if ExistFile(nameFile): if EnqOkCancel("Открыть созданный файл выгрузки?", mtInformation)=cmOK: OpenEditor(nameFile); fi; fi;
    Except
      ЗакрытьФайлПоОшибке(FS, FlagCreate, nameFile);
      Raise;
    end;

 fi;

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;

Func Цвет(r:Integer; g:Integer; b:Integer) :Integer; -- цвет по стандарту ТБ 6.9
 ^(256*256*b+256*g+r);
end;

Proc ПодчеркнутыйТекстЯчеек(objSheet:AutoObject; X1:Integer; Y1:Integer; X2:Integer; Y2:Integer; Есть:Logical);
-- objSheet - ссылка на лист
-- X1, Y1   - координаты ячейки листа objSheet - левый верхний угол диапазона для объединения
-- X2, Y2   - координаты ячейки листа objSheet - правый нижний угол диапазона для объединения
-- Есть     - применяется или нет подчеркнутый текст
var xlsRangeRes, xlsRange1, xlsRange2, xlsFont :AutoObject;
 if X1>0 and X2>0 and Y1>0 and Y2>0 and X2>=X1 and Y2>=Y1:
   xlsRange1=AsAutoObject(objSheet.Cells[X1,Y1]);
   xlsRange2=AsAutoObject(objSheet.Cells[X2,Y2]);
   Try
     xlsRangeRes=AsAutoObject(objSheet.Range[xlsRange1, xlsRange2]);
     Try
       xlsFont=AsAutoObject(xlsRangeRes.Font);
       Try
         if Есть: xlsFont.Underline = 2; else xlsFont.Underline = -4142; fi;
         --xlUnderlineStyleSingle=2
         --xlUnderlineStyleNone=-4142
       Finally
         ClearVariable(xlsFont);
       end;
     Finally
       ClearVariable(xlsRangeRes);
     end;
   Finally
     ClearVariable(xlsRange1);
     ClearVariable(xlsRange2);
   end;
 fi;
end;

Proc УстановитьРазмерШрифтаЧастиСлова(objSheet:AutoObject; XX:Integer; YY:Integer; start:Integer; len:Integer; РазмерШрифта:Integer);
-- objSheet           - ссылка на лист
-- XX, YY             - координаты ячейки листа objSheet
-- start              - начальная позиции выделения части слова
-- len                - продолжительность выделения части слова
var xlsRng, xlsCrt, xlsFnt :AutoObject;
 xlsRng=AsAutoObject(objSheet.Cells[XX, YY]);
 Try
   xlsCrt=AsAutoObject(xlsRng.Characters(start, len));
   Try
     xlsFnt=AsAutoObject(xlsCrt.Font);
     Try
       xlsFnt.Size = РазмерШрифта;
     Finally
       ClearVariable(xlsFnt);
     end;
   Finally
     ClearVariable(xlsCrt);
   end;
 Finally
   ClearVariable(xlsRng);
 end;
end; 

Proc Экспорт_Excel;
var xlsApp, xlsBooks, xlsBook, xlsSheets, xlsSheet, xlsRng :AutoObject;
var localTS, localDS, xlNameFile, xlNameFolder, ExcelVersion, Value :String;
var начало, kol, max_kol, offsetRow, len, ii, Iter, maxIterCount, IterCount, IterSave :Integer;
var NoError, rusExcel, ExportWork :Logical;

 if not ЕстьДанныеДляВыгрузки: Message("Нет данных для выгрузки.^MПредварительно сделайте расчет формы.", mtWarning); Template.Object="btnРасчет"; Exit; fi;
 NoError=True;
 maxIterCount=300;
 offsetRow=0;
 kol=0;
 if ChooseFolder(xlNameFolder, "Выберите папку для сохранения файла экспорта...")=cmOK:
   начало=Time;
   xlNameFile=xlNameFolder+"ExportExcel0503125_"+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<2:
                   len=2-max_kol;
                   Try
                     for ii=1 to len do Try xlsSheet=AsAutoObject(xlsSheets.Add); Finally ClearVariable(xlsSheet); end; od;
                   Except
                     ClearVariable(xlsSheet);
                     Raise;
                   end;
                 fi;
                 kol=kol+1;
                 xlsSheet=AsAutoObject(xlsBook.Worksheets[kol]);
                 Try
                   xlsSheet.Name = "0503125";
                   ShowProgress(23, "Формируем титул...");
                   ProgressPos(1);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 01, 40.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 02, 06.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 03, 11.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 04, 08.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 05, 28.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 06, 14.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 07, 14.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 08, 14.0);
                   ProgressPos(2);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "СПРАВКА");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 02, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 11, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "КОДЫ");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 10, 0, True, False, False, 0, True);
                   ProgressPos(3);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "по консолидируемым расчетам");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 02, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 11, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "Форма по ОКУД");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "0503125");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Courier New", 10, 0, True, False, False, 0, True);
                   ProgressPos(4);
                   offsetRow=offsetRow+1;
                   Value="на "+Format("%.2d", Day(ДК))+" "+Месяца(Mon(ДК))+" "+Format("%.4d", Year(ДК))+" г.";
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "   "+Value+"   ");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 02, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True,  True, False, 0, True);
                   ПодчеркнутыйТекстЯчеек(xlsSheet, offsetRow, 02, offsetRow, 06, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "Дата");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, DateToString(ДК));
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(5);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Наименование финансового органа; органа, осуществляющего");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 08, offsetRow+3, 08);
                   ProgressPos(6);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "кассовое обслуживание исполнения бюджета;");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(7);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "главного распорядителя, распорядителя, получателя бюджетных средств,");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(8);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "главного администратора, администратора доходов бюджета,");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   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, offsetRow, 02);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, Учреждение);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 03, offsetRow+1, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlLeft,   1, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "по ОКПО");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, ОКПО);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(10);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "финансирования дефицита бюджета");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 02);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "Глава по БК");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, ППП);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(11);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Наименование бюджета (публично-правового образования)");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 02);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   УстановитьРазмерШрифтаЧастиСлова(xlsSheet, offsetRow, 01, 21, 33, 08);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, НаимБюдж);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 03, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlLeft,   1, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "по ОКТМО");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, ОКТМО);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(12);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Наименование вида деятельности");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 02);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, НаимВД);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 03, offsetRow, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlLeft,   1, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True,  True, False, 0, True);
                   ProgressPos(13);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "Код счета бюджетного учета");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 06, offsetRow, 07);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, КодСч);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(14);
                   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, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,   1, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(15);
                   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, РАБ.EXCEL.xlLeft,   1, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "по ОКЕИ");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, ОКЕИ);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(16);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow-13, 8, offsetRow, 8, True,  True,  True,  True, True,  True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow-12, 8, offsetRow, 8, True,  True,  True,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   ProgressPos(17);
                   РАБ.EXCEL.PrintSetup_ЧБ_Поля10(xlsApp, xlsSheet, False, 0, 0, 0, 0, True, False, True, 100);
                   ProgressPos(18);
                   offsetRow=offsetRow+2;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "КОНТРАГЕНТ");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 04);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "Номер счета бюджетного учета");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow+2, 05);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "Сумма");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 06, offsetRow, 07);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "Код корреспон-дирующего счета бюджетного учета");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 08, offsetRow+2, 08);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(19);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "наименование");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow+1, 01);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "код");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 02, offsetRow, 04);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, "по дебету");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 06, offsetRow+1, 06);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "по кредиту");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 07, offsetRow+1, 07);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(20);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "главы по БК");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "по ОКТМО");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "элемента бюджета");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True, False, False, 0, True);
                   ProgressPos(21);
                   offsetRow=offsetRow+1;
                   РАБ.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, 1, offsetRow, 8, True);
                   ProgressPos(22);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow-3, 1, offsetRow, 8, False, True, False, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   ProgressPos(23);
                   --
                   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; --Формирование шапки
   -- Основная таблица
   len=М1;
   if NoError:
     if flgНеВыгружать1Раздел: len=0; fi;
     if len>0:
       ShowProgress(len, "Формируем основную таблицу данных...");
       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["0503125"]);
                       Try
                         for ii=IterSave to len do
                           ProgressPos(ii);
                           offsetRow=offsetRow+1;
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, SГ1С020М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, SГ3С020М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, SГ4С020М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, SГ5С020М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, SГ6С020М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           if RГ7С020М1[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06, RГ7С020М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Г8С020М1[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, RГ8С020М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, SГ9С020М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                           --
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 01, offsetRow, 08, False,  True, False,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 02, offsetRow, 08,  True, False,  True, False, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                           --
                           if ii=len: 
                             РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow-ii, 2, offsetRow-ii, 8, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                             РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow+01, 2, offsetRow+01, 8, False, True, False, False, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                           fi;
                           IterCount=IterCount+1;
                           if IterCount>=maxIterCount: IterSave=IterSave+IterCount; IterCount=0; Break; fi;
                         od;
                         NoError=True;
                       Finally
                         ClearVariable(xlsSheet);
                       end;
                     Except
                       NoError=False;
                       ExportWork=False;
                       xlsBook.Close(False); -- закрыть книгу без сохранения
                     end;
                   Finally
                     --xlsBook.Close(True, xlNameFile);
                     xlsBook.Save;
                     xlsBook.Close(False); -- закрыть книгу без сохранения
                     ClearVariable(xlsBook); -- освободить объект книги
                   end;
                 Finally
                   ClearVariable(xlsBooks); -- освободить объект книг
                 end;
               Finally
                 ClearVariable(xlsApp); -- освободить объект Excel
               end;
             Except
               NoError=False;
               ExportWork=False;
               ClearVariable(xlsRng);
               ClearVariable(xlsSheet);
               ClearVariable(xlsSheets);
               ClearVariable(xlsBook);
               ClearVariable(xlsBooks);
               ClearVariable(xlsApp);
             end;
             if ii>=len: ExportWork=False; fi;
           else
             ExportWork=False;
           fi;
         end; -- while
       Finally
         CloseProgress;
       end;
     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["0503125"]);
                 Try
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 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);
                   РАБ.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.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   --
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow, 8, False,  True, False,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 8,  True,  True,  True,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Except
                 NoError=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;
         ClearVariable(xlsRng);
         ClearVariable(xlsSheet);
         ClearVariable(xlsSheets);
         ClearVariable(xlsBook);
         ClearVariable(xlsBooks);
         ClearVariable(xlsApp);
       end;
     fi; -- len>0:
   fi; --Основная таблица
   -- Таблица итогов
   if NoError:
     Iter=0;
     ShowProgress(if(М2>0,М2,1)+if(М3>0,М3,1)+if(М4>0,М4,1)+7, "Формируем таблицу итогов...");
     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["0503125"]);
                 Try
                   Iter=Iter+1;
                   ProgressPos(Iter);
                   offsetRow=offsetRow+1;
                   IterSave=offsetRow;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "ИТОГО:");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
--                   if RГ7С030[1]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06, RГ7С030[1], localDS, localTS); fi;
                   if RГ7С030<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06, RГ7С030, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True,  True, False, 0, True);
--                   if RГ8С030[1]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, RГ8С030[1], localDS, localTS); fi;
                   if RГ8С030<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, RГ8С030, localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   -- ПО НОМЕРУ (КОДУ) СЧЕТА
                   Iter=Iter+1;
                   ProgressPos(Iter);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "в том числе по номеру (коду) счета:");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if SumOfArray(RГ7С040М2, М2)<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06, SumOfArray(RГ7С040М2, М2), localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if SumOfArray(RГ8С040М2, М2)<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, SumOfArray(RГ8С040М2, М2), localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   len=М2;
                   if len>0:
                     for ii=1 to len do
                       Iter=Iter+1;
                       ProgressPos(Iter);
                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, SГ3С040М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, SГ4С040М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, SГ5С040М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, SГ6С040М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       if RГ7С040М2[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06, RГ7С040М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Г8С040М2[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, RГ8С040М2[ii], localDS, localTS); fi;
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "X");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     od;
                   else
                     Iter=Iter+1;
                     ProgressPos(Iter);
                     offsetRow=offsetRow+1;
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 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);
                     РАБ.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, "X");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   fi;
                   Iter=Iter+1;
                   ProgressPos(Iter);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "из них:");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False,  True, 0, True);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 02, offsetRow, 08);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   -- ДЕНЕЖНЫЕ РАСЧЕТЫ
                   Iter=Iter+1;
                   ProgressPos(Iter);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "денежные расчеты:");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if SumOfArray(RГ7С050М3, М3)<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06, SumOfArray(RГ7С050М3, М3), localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if SumOfArray(RГ8С050М3, М3)<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, SumOfArray(RГ8С050М3, М3), localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   len=М3;
                   if len>0:
                     for ii=1 to len do
                       Iter=Iter+1;
                       ProgressPos(Iter);
                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, SГ3С050М3[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, SГ4С050М3[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, SГ5С050М3[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, SГ6С050М3[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       if RГ7С050М3[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06, RГ7С050М3[ii], localDS, localTS); fi;
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       if RГ8С050М3[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, RГ8С050М3[ii], localDS, localTS); fi;
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, SГ9С050М3[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     od;
                   else
                     Iter=Iter+1;
                     ProgressPos(Iter);
                     offsetRow=offsetRow+1;
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 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);
                     РАБ.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.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   fi;
                   -- НЕДЕНЕЖНЫЕ РАСЧЕТЫ
                   Iter=Iter+1;
                   ProgressPos(Iter);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "неденежные расчеты:");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if SumOfArray(RГ7С060М4, М4)<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06, SumOfArray(RГ7С060М4, М4), localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   if SumOfArray(RГ8С060М4, М4)<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, SumOfArray(RГ8С060М4, М4), localDS, localTS); fi;
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "X");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   len=М4;
                   if len>0:
                     for ii=1 to len do
                       Iter=Iter+1;
                       ProgressPos(Iter);
                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, SГ3С060М4[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, SГ4С060М4[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, SГ5С060М4[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, SГ6С060М4[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       if RГ7С060М4[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06, RГ7С060М4[ii], localDS, localTS); fi;
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       if RГ8С060М4[ii]<>0.00: РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, RГ8С060М4[ii], localDS, localTS); fi;
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, SГ9С060М4[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     od;
                   else
                     Iter=Iter+1;
                     ProgressPos(Iter);
                     offsetRow=offsetRow+1;
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 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);
                     РАБ.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.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   fi;
                   --
                   Iter=Iter+1;
                   ProgressPos(Iter);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, IterSave, 2, offsetRow, 8, False, False, False, False,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, IterSave, 2, offsetRow, 8,  True,  True,  True,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Except
                 NoError=False;
                 xlsBook.Close(False); -- закрыть книгу без сохранения
               end;
             Finally
               --xlsBook.Close(True, xlNameFile);
               xlsBook.Save;
               xlsBook.Close(False); -- закрыть книгу без сохранения
               ClearVariable(xlsBook); -- освободить объект книги
             end;
           Finally
             ClearVariable(xlsBooks); -- освободить объект книг
           end;
         Finally
           ClearVariable(xlsApp); -- освободить объект Excel
         end;
       Except
         NoError=False;
         ClearVariable(xlsRng);
         ClearVariable(xlsSheet);
         ClearVariable(xlsSheets);
         ClearVariable(xlsBook);
         ClearVariable(xlsBooks);
         ClearVariable(xlsApp);
       end;
     Finally
       CloseProgress;
     end;
   fi; --Таблица итогов
   --НачальнаяСтрочка;
   if NoError:
     ShowProgress(7, "Заключительный этап... ");
     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["0503125"]);
                 Try
                   ProgressPos(1);
                   offsetRow=offsetRow+3;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "Руководитель");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 03, offsetRow, 04);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 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, 07, ФИОРук);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 5, offsetRow, 5, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 7, offsetRow, 8, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   ProgressPos(2);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "(подпись)");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.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, 5, offsetRow, 5, True);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8, True);
                   ProgressPos(3);
                   offsetRow=offsetRow+2;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "Главный бухгалтер");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 03, offsetRow, 04);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial", 09, 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, 07, ФИОБух);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True,  False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 5, offsetRow, 5, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow, 7, offsetRow, 8, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   ProgressPos(4);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "(подпись)");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, False, False, 0, True);
                   РАБ.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, 5, offsetRow, 5, True);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 7, offsetRow, 8, True);
                   ProgressPos(5);
                   offsetRow=offsetRow+2;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, '"____"  ________________  20_____ г.');
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 03, offsetRow, 05);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter,  0,  РАБ.EXCEL.xlCenter, True, "Arial", 08, 0, True, True, False, 0, True);
                   ProgressPos(6);
                   xlsRng=AsAutoObject(xlsSheet.Rows["1:"+Str(offsetRow)]);
                   Try xlsRng.AutoFit; Finally ClearVariable(xlsRng); end;
                   ProgressPos(7);
                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Except
                 NoError=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;
         ClearVariable(xlsRng);
         ClearVariable(xlsSheet);
         ClearVariable(xlsSheets);
         ClearVariable(xlsBook);
         ClearVariable(xlsBooks);
         ClearVariable(xlsApp);
       end;
     Finally
      CloseProgress;
     end;
   fi; --Заключительный этап
   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;



---------------------------------ВЫГРУЗКА в файл казначейства---------------------------------
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 ЗаписатьРаздел1(FS: integer) :String;
var num: integer;
var RES :String;
var SUM :Numeric;
var N: Numeric;
var Name :String;
var li: integer;
var i: Integer;
var ГР8: String;

--ЗадатьВыгружаемыеСтроки;
num = М1;
if num>0:
for li=1 to num do
RES="";
ГР8 = SГ9С020М1[li];
RES= SГ3С020М1[li] +"|"+SГ4С020М1[li]+"|"+SГ5С020М1[li]+"|";
Name= РАБ.БЮДЖЕТ2005.ВЗЯТЬКОДСЧЕТА(SГ6С020М1[li],"","ППП",false);
Name = РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(Name, ".","");
RES=RES+ Name+"|";
Name= РАБ.БЮДЖЕТ2005.ВЗЯТЬКОДСЧЕТА(SГ6С020М1[li],"","КБК",false);
Name = РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(Name, ".","");
RES=RES+ Name+"|";
Name= РАБ.БЮДЖЕТ2005.ВЗЯТЬКОДСЧЕТА(SГ6С020М1[li],"","ВД",false);
Name = РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(Name, ".","");
RES=RES+ Name+"|";
Name= РАБ.БЮДЖЕТ2005.ВЗЯТЬКОДСЧЕТА(SГ6С020М1[li],"","СЧ5",false);
Name = РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(Name, ".","");
RES=RES+ Name+"|";
Name= РАБ.БЮДЖЕТ2005.ВЗЯТЬКОДСЧЕТА(SГ6С020М1[li],"","КОСГУ",false);
Name = РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(Name, ".","");
RES=RES+ Name+"|";
ГР8 = РАБ.БЮДЖЕТ2005.ЗаменитьРазделительВНабореСлов(ГР8, ".","");
Name = SubStr(ГР8,1,1);
RES=RES+ Name+"|";
Name = SubStr(ГР8,2,5);
RES=RES+ Name+"|";
Name = SubStr(ГР8,7,Length(ГР8));
RES=RES+ Name+"|";
Name = Str(RГ7С020М1[li],2);
RES=RES+ Name+"|";
Name = Str(RГ8С020М1[li],2);
RES=RES+ Name+"|";



    --    for i=4 to 7 do
      --          Name="RГ"+Str(i)+"С"+ВыгружаемыеСтроки[li];
        --        N = GetVariableN(Name);
          --      SUM=N;
      --   RES=RES+if(round(SUM,Точн)<>0, Str(SUM,Точн), "0")+"|";
     --   od;
--if ПроверитьВыгружаемуюСтрокуР1(RES) = 1: TextFileWriteLn(FS, RES); fi;
TextFileWriteLn(FS, RES);
od;
fi;
^RES;
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Слэш(Путь)+СформироватьИмяФайла("225", "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, "КОДФ=225");
     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, "ПРП = 500");
     TextFileWriteLn(FS, "КСБУ="+Trim(КодСч));
     TextFileWriteLn(FS, "ОКТМО="+Trim(ОКТМО));
     TextFileWriteLn(FS, "#");
     -- Содержательная часть 1 раздела
     TextFileWriteLn(FS, "#@");
     TextFileWriteLn(FS, "ТБ=01");
     TextFileWriteLn(FS, "#$");
     value  = ЗаписатьРаздел1(FS);
     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=Путь+СформироватьИмяФайла("225", "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 Экспорт_XML_СО;
var file,folder:S;
 if ChooseFolder(folder, "Выберите папку для сохранения файла экспорта...")=cmOK:
    file = folder + "ТБ_ОТЧ__001__"+Format("%.4d", Year(ToDay))+Format("%.2d", Mon(ToDay))+Format("%.2d", Day(ToDay))+"_"+TimeToHMSstring_adv(Time, "")+".xml";
   РАБ.XML.ОЧИСТИТЬ;
   --Report
   РАБ.XML.ДобАттр("Дата",DateToString(Today));
   РАБ.XML.ДобАттр("ПО_Название","Турбо Бухгалтер 6.9 (Бюджет-157Н)");
   РАБ.XML.ДобАттр("ПО_Версия",Str(Версия.Сборка0)+if(Версия.Сборка1<>0,"."+Str(Версия.Сборка1),"")+Версия.Сборка2);
   РАБ.XML.ОткрытьТэгBuf("Выгрузка",False);
   РАБ.XML.ОткрытьТэг("Контрагенты",'');
    РАБ.XML.ОткрытьТэг("Учреждение",'');
     РАБ.XML.СоздатьТэг("КОД","К.0001",False);
     РАБ.XML.СоздатьТэг("ИМЯ",Учреждение,False);
     РАБ.XML.СоздатьТэг("КБП",selfКБП,False);
    РАБ.XML.ЗакрытьТэг;
   РАБ.XML.ЗакрытьТэг;
   РАБ.XML.ОткрытьТэг("Отчетности",'');
    РАБ.XML.ОткрытьТэг("Отчетность",'');
     РАБ.XML.СоздатьТэг("КОД","О.0001",False);
     РАБ.XML.СоздатьТэг("ИМЯ","Выгрузка из бухгалтерии",False);
     РАБ.XML.СоздатьТэг("НАЧАЛОПЕРИОДА",DateToString(ДН),False);
     РАБ.XML.СоздатьТэг("КОНЕЦПЕРИОДА",DateToString(ДК),False);
    РАБ.XML.ЗакрытьТэг;
   РАБ.XML.ЗакрытьТэг;
   РАБ.XML.ОткрытьТэг("Отчеты",'');
   ФормироватьXML;
   РАБ.XML.ЗакрытьТэг;
   РАБ.XML.ЗакрытьТэг;
   РАБ.XML.ЗаписьФайла(file,"1251");
   Message("Выгрузка завершена успешно");
 fi;
end;

Proc Экспорт_Формы;
var num :Integer;
 ClearVariable(Buf);
 Buf[1]="Выгрузка в файл (формат ДФ г.Москвы)";
 Buf[2]="Выгрузка в файл (формат ФК) [ + архивация]";
 Buf[3]="Выгрузка в файл (формат ФК) [только текст]";
 Buf[4]="Выгрузка в Excel";
 Buf[5]="Выгрузка для программы 'Сводная отчетность - Бюджет' (ТБ-XML)";

 num=Alternate("Выберите тип выгрузки...", Buf, -1, 1, 12);
 if num=1: Экспорт_TXT_ДФ;
 |  num=2: Экспорт_TXT_ФК(True);
 |  num=3: Экспорт_TXT_ФК(False);
 |  num=4: Экспорт_Excel;
 |  num=5: Экспорт_XML_СО;
 else Exit;
 fi;
end;

Proc btnOnClick(Sender:String); -- объекты при нажатии
 if Sender="btnExport"   : Экспорт_Формы;
 fi;
end;

2--
2-- События шаблона
proc OnOpen(Create: Logical);
 ИнициализацияНастр;
 КонтрольВерсии;
 Инициализация;
 Раб.Настр_Печать.Cfg("","ТББ.ОТЧЕТЫ.БАЛАНС.191Н.157Н.0503125.000.cfg");
 if Учреждение="": ЗаполнитьРекв(nil); fi;
end;

Proc AfterOpen(Destroy: Logical);
 ОткрНастр(False);
 ПрисвоитьТочность;
end;


КОНЕЦ
