-- Шаблон создан мстером бланков
-- 29.05.2000 14:38:01
БланкСШаблоном "Выписанные извещения", РЕДАКТОР РПО_Извещения_Исх;

var НоваяЗапись:L=(CurrentState=crdusInserted);

fQCMF:L;

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

var Def_МаскаСчДеб:S="*.?.104.??.*|*.?.304.04.*|*.?.401.20.241|*.?.401.20.251|ЗАБАЛАНС";
var Def_МаскаПолучСчКре:S="*.?.104.??.*|*.?.304.04.*|*.?.401.10.151|*.?.401.10.180|ЗАБАЛАНС";

var recОтправ:Record;
var Отправ_:S;
var ЗначНомОрд:S;
var ЗначНомОрд_:S=SubStr(ЗначНомОрд,4,255);
var ЗначСодерж:S;
var МаскаСчДеб:S=[Def_МаскаСчДеб];
var ЗначПризн:S;
var МаскаПолучСчКре:S=[Def_МаскаПолучСчКре];
var ФорматНомер:I;
var ФорматНомер_:S=if(ФорматНомер=0,"Простой номер","Номер с префиксом");
var fПодчинен:L;
var fПодчинен_:S=if(fПодчинен,"Да","Нет");
var ТитулВ1:S;
var ТитулВ2:S;

КолКопий:I=[2];

var НомерПростой:L=((ФорматНомер=0 and Префикс="") or Префикс="");
var НомерПрефикс:L=not НомерПростой;

var Префикс_:S=if(Префикс=" ","",Префикс); --Фильтр на пробел на работает

var ОтправИмя_:S=ОтправРекв.КорИмя+"   "+ОтправРекв.ПочтАдрес;

var НаимПодр:S=if(Name_A(Подр)="" or Name_A(Подр)=" ",Подр,Name_A(Подр));
var A:S=if(Проводить,"","+");
var D:S=if(Проводить,"","-");
var ПолучИмя_:S=ПолучРекв.КорИмя+"   "+ПолучРекв.ПочтАдрес;
var ПолучИмяКопия_[]:S=Получ[$].Рекв.КорИмя+"   "+Получ[$].Рекв.ПочтАдрес;

var НомОрд_:S=SubStr(НомОрд,4,255);

var A1:S=A; 
var AA1:S=if(Проводить,"","++");
var D1:S=D; 

var Призн_[]:S=Позиции[$].Призн;
var ПризнДеб_[]:S=Позиции[$].ПризнДеб;
var ПризнКре_[]:S=Позиции[$].ПризнКре;

var ИтогоСум:N=SumOfArray(Позиции[].Сум,Позиции);
var ИтогоСумРуб:N=SumOfArray(Позиции[].СумРуб,Позиции);
var ИтогоПолучСум:N=SumOfArray(Позиции[].ПолучСум,Позиции);
var ИтогоПолучСумРуб:N=SumOfArray(Позиции[].ПолучСумРуб,Позиции);

var РасчетОбр:S=if(Проводить,"","Рассчитать обороты");

var Обр[]:S=if($=1,"Обороты в журнал операций","");
var recCurrent:record;
var ИсклПризн:S="ПБС.*|ЖО.*";

var Buf[]:S;
var Buf1[]:S;
var BufN[]:N;
var BufN1[]:N;

-- массивы для функции [ИнициализироватьУсловия] --
var УслДЕБ[]       :String;
var УслКРЕ[]       :String;
var УслАНА[]       :String;
---------------------------------------------------

---------------------------------------------------
--     оформление секции СекцияАвтоДОК           --
var СекцияАвтоДОК_УПР:L=ДНФАid<>0 or RECCRD<>0;
ПоказыватьИменаГруппНФА:l;
ТипСвертки:i;
func ИмяТипаСвертки(i:i):s;
  if i=0:^'0 без свертки(по умолчанию)';fi;
  if i=1:^'1 по счету НФА (101)';fi;
  if i=2:^'2 по счету и субсчету НФА (101.04)';fi;
  if i=3:^'3 по счету и субсчету и 1 группе НФА (101.04.ПОСУДА)';fi;
  if i=4:^'4 по НФА (в разрезе наименований)';fi;
  if i=5:^'5 по НФА + ИНВ номеру';fi;
  if i=6:^'6 без свертки(с разбитием по аналитике)';fi;
  if i=7:^'7 Наряд Период РБС П';fi;
  ^'Не определен!';
end;
var ВыводТипСвертки          :s=ИмяТипаСвертки(ТипСвертки);
var Btn_К_ОСН_ДОК            :s='Перейти к основному документу';
var Btn_РасчетАВТО_ДОК       :s=if(Проводить,'','Заполнить из основного документа');
var Btn_ТипСвертки           :s='Способ заполнения';
--     оформление секции СекцияАвтоДОК           --
---------------------------------------------------

cbПроводить  :Object;
cbВозврат2   :Object;
btnДВозврат2 :Object;
edДВозврат2  :Object;
btnПолучСум  :Object;
btnЗакрыть   :Object;
btnПечать    :Object;
edКолКопий   :Object;
btnНастр     :Object;
cbЗакрытьДок :Object;

S0 : Section;
S1 : Section;
S2 : Section;
S3 : Section;
S4 : Section;
S5 : Section;
S6 : Section;
S7 : Section;
S8 : Section;
S9 : Section;
S10: Section;
S11: Section;
S12: Section;
СекцияАвтоДОК:Section;

var nS:I=12;

hНомОрд:S;
var hСчДеб:S;
var hСчКре:S;
var hПризн:S;
hДолжИспол:S;
hИсполнитель:S;
storeПрефикс:S=[" "];
var storeРазделит:S=["/"];

var BufField[]:S;
var BufColorBg[]:I;
var BufColorFo[]:I;
var FlagInit:L;

var SelfCrd:S="РПО_Извещения_Исх";
var SelfCfg:S="ТББ.ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ИСХ_69Н.000.cfg";
var SelfBln:S="ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ИСХ_69Н";

var НастрGUID:S;

var NumSplitVoc:I=5;

var RefreshTurnOnRead:L;

var inПодр:S;
var inMode:S;
var inCrd:S;
var inRecCrd:I;
var inBlnCrd:S;
--
--Процедуры и функции -------------                           
Proc Настр(aСохр:L);
var Flag:L;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать("ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ИСХ_69Н",0,0,"",НастрGUID):
    Раб.Настр.Добавить("recОтправ","R");
    Раб.Настр.Добавить("Отправ_","S");
    Раб.Настр.Добавить("ФорматНомер","I");
    Раб.Настр.Добавить("ЗначНомОрд","S");
    Раб.Настр.Добавить("ЗначСодерж","S");
    Раб.Настр.Добавить("МаскаСчДеб","S");
    Раб.Настр.Добавить("ЗначПризн","S");
    Раб.Настр.Добавить("МаскаПолучСчКре","S");
    Раб.Настр.Добавить("fПодчинен","L");
    Раб.Настр.Добавить("ТитулВ1","S");
    Раб.Настр.Добавить("ТитулВ2","S");
    Раб.Настр.Добавить("storeРазделит","S");
    if aСохр: 
       Раб.Настр.Сохранить; 
      else 
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
          Flag=ExecuteFuncL("НастрПоУмолч_onEnter","Натр",1);
          storeРазделит="/";
       fi;
    fi;
 fi;
end;

Proc Инициализация;
var Obj:Object;
var s,r,rr,c,cc,n,l,bgColor:i;
var Field:S;
 ClearVariable(BufField);
 ClearVariable(BufColorBg);
 ClearVariable(BufColorFo);
 for s=1..nS do
  if FindObject("S"+Str(s),Obj):
     rr=asInteger(Obj.RowsCount);
     cc=asInteger(Obj.ColsCount);
     for r=1 ..rr  do
      for c=1 ..cc  do
       Try
        BgColor=asInteger(Obj.Cell(r,c,CellBgColor,""));
        if BgColor=coAqua or BgColor=coTeal:
           Field=asString(Obj.Cell(r,c,CellContents,"",False));
           if SearchInArray(BufField,Field,True)=-1:
              n=InsertInArraySort(BufField,Field);
              InsertInArray(BufColorBg,n,BgColor);
           fi;
        fi;
       Except
       end;
      od;
     od;
  fi;
 od;
 --Фрейм Получ может быть скрыт
 if SearchInArray(BufField,"ПолучИмяКопия_",True)=-1:
    n=InsertInArraySort(BufField,"ПолучИмяКопия_");
    InsertInArray(BufColorBg,n,coTeal);
 fi;
 --
 l=LengthOfArray(BufField);
 for n=1..l do
  if BufColorBg[n]=coTeal: BufColorFo[n]=coWhite;
    |True: BufColorFo[n]=coBlack;
  fi;
 od;
end;

Proc ПоказыватьДополнительнуюСтрочку(Use:Logical);
 S9.Row(2, RowVisible, Use);
end;

Proc Оформление;
var s,c,r,cc,rr,n:i;
var Obj: Object;
var Field:S;
 cbПроводить.Caption=if(ДНФАID=0 and RECCRD=0,"Проводить","Учитывать");
 btnДВозврат2.Enabled=not Возврат2;
 edДВозврат2.Enabled=not Возврат2;
 btnПолучСум.Enabled=not Возврат2;
 S0.Row(1,RowVisible,not ТитулВ1="");
 S0.Row(2,RowVisible,not ТитулВ2="");
 for s=1..nS do
  if FindObject("S"+Str(s),Obj):
     rr=asInteger(Obj.RowsCount);
     cc=asInteger(Obj.ColsCount);
     for r=1 .. rr do
      for c=1 .. cc do
       Try
        Field=asString(Obj.Cell(r,c,CellContents,"",False));
        n=SearchInArray(BufField,Field,True);
        if not n=-1:
           if (Проводить and not (s=9 and c>9)) or (s=9 and c>9 and Проводить and Возврат2):
              Obj.Cell(r,c,CellFontColor,coBlack);
              Obj.Cell(r,c,CellBgColor,coTransparent);
              Obj.Cell(r,c,CellReadOnly,True);
             else
              Obj.Cell(r,c,CellFontColor,BufColorFo[n]);
              Obj.Cell(r,c,CellBgColor,BufColorBg[n]);
              Obj.Cell(r,c,CellReadOnly,False);
           fi;
        fi;
       Except
       end;
      od;
     od;
  fi;
 od;
end;

Proc ОткрНастр (Flag:L);
 УпрН=Flag;
 cbПроводить.Visible=not Flag;
 cbВозврат2.Visible=not Flag;
 btnДВозврат2.Visible=not Flag;
 edДВозврат2.Visible=not Flag;
 btnПолучСум.Visible=not Flag;
 btnЗакрыть.Visible=not Flag;
 btnПечать.Visible=not Flag;
 edКолКопий.Visible=not Flag;
 btnНастр.Visible=not Flag;
 cbЗакрытьДок.Visible=not Flag and Раб.Бюджет2005.Сетевая;
end;

Proc НеПустаяТаблица;
 if Позиции<1: InsertFrame(Позиции,1); fi;
end;

Proc УдалитьПустыеСтроки;
var Iter:i;
 Iter=1;
 While Iter<=Позиции do
  if Позиции[Iter].Содерж=""     and
     Позиции[Iter].СчДеб=""      and
     Позиции[Iter].СчКре=""      and
     Позиции[Iter].Призн=""      and
     Позиции[Iter].ПризнДеб=""   and
     Позиции[Iter].ПризнКре=""   and
     Позиции[Iter].Сум=0         and
     Позиции[Iter].ПолучСчДеб="" and
     Позиции[Iter].ПолучСчКре="" and
     Позиции[Iter].ПолучСум=0: DeleteFrame(Позиции,Iter);
    else
     Iter=Iter+1;
  fi;
 od;
end;

Proc ОбработатьНомер(aНомерБум:S);
var tmp:i;
var F,Field:S;
 tmp=Int(aНомерБум);
 if tmp=0:
    F="not UKey="+RecordToString(Current);
    if ФорматНомер=0:
       Field="НомерБум";
      else
       Field="НомерП";
       F="Префикс='"+Префикс_+"' and "+F;
    fi;
    if ДатаИзв=1.1.100:
       tmp=РАБ.ОБЛ.СледСУчетомГодаФ(SelfCrd,"Номер","ДатаИзв",F);
      else
       tmp=РАБ.ОБЛ.СледСУчетомДатыФ(SelfCrd,"Номер","ДатаИзв",ДатаИзв,F);
    fi;
    if aНомерБум="": PutVariableS(Field,Str(tmp)); fi;
 fi;
 if not Номер=tmp:
    Номер=tmp;
    if Раб.Бюджет2005.Сетевая: EditorApply; fi;
 fi;
end;

Proc ОбработатьДату (prevДата:D; newДата:D);
var prevYYYY,newYYYY:I;
 prevYYYY=Year(prevДата);
 newYYYY=Year(newДата);
 if prevYYYY=newYYYY: Exit; fi;
 if not prevYYYY=100:
    if EnqOkCancel("Изменился отчетный год ("+Str(prevYYYY)+") документа, получить номер документа соответствуещего года ("+Str(newYYYY)+") ?",mtWarning)=cmCancel: Exit; fi;
 fi;
 ОбработатьНомер("");
 Template.Field=if(ФорматНомер=0,"НомерБум","НомерП");
end;

Func УникальностьПолуч (Rec:Record; Iter:I):I;
var n:i;
 for n=1..Получ do
  if Получ[n].РЕКВ=Rec and not n=Iter: ^n; fi;
 od;
 ^0;
end;

Proc ЗаполнитьРекв (Prefix:S; Rec: Record);
var tmp:S;
 PutVariableR(Prefix+"Рекв",Rec);
 if Prefix="Отправ" or Prefix="Получ":
    RefreshAna;
    tmp=CardFileRecSign("Контрагент","Признак","ПБС",Rec,"");
    if Name_A(tmp)=" ": tmp=""; fi;
    PutVariableS(Prefix+"Признак",tmp);
 fi;
 if Prefix="Отправ":
    ОтправФИОРук=ОтправРекв.ФИОРук;
    ОтправФИОБух=ОтправРекв.ФиоБух;
 fi;
end;

Proc ДобавитьВышестоящие;
var Rec,StoreRec:Record;
 if not fПодчинен: Exit; fi;
 StoreRec=nil; --Антизацикливатель, может быть ссылка самого на себя
 Rec=ПолучРекв.РПО_Подчинен;
 While not Rec=nil and not Rec=StoreRec and not Rec=ПолучРекв do
  if УникальностьПолуч(Rec,0)=0:
     InsertFrame(Получ,Получ+1);
     Получ[Получ].Рекв=Rec;
  fi;
  StoreRec=Rec;
  Rec=Получ[Получ].Рекв.РПО_Подчинен;
 od;
end;

Proc ПолучитьДопАн(Iter:I);
var Справ,ПризнБК,ПризнКОСГУ,ТипКБК,tmp:S;
 if not Name_S(Позиции[Iter].СчДеб)=" " and not Name_S(Позиции[Iter].СчКре)=" ":
    Справ=Раб.Бюджет2005.СписокСправ(Позиции[Iter].СчДеб+"|"+Позиции[Iter].СчКре,0,"");
    ТипКБК=Раб.Бюджет2005.ТипКБКСчета(Позиции[Iter].СчДеб);
    ПризнБК="";
    if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|",ТипКБК+".*","")="":
       ПризнБК=ТипКБК;
    fi;
    if not ПризнБК="":
       ПризнБК=ПризнБК+"."+Раб.Бюджет2005.ВзятьКодСчета(Позиции[Iter].СчДеб,ТипКБК,"БК",False);
       if Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Позиции[Iter].ПризнДеб," ","ФКР.*|КД.*|КИФД.*","|")="":
          Позиции[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Позиции[Iter].Призн," ",ПризнБК,"ФКР.*|КД.*|КИФД.*","|");
         else
          Позиции[Iter].ПризнДеб=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Позиции[Iter].ПризнДеб," ",ПризнБК,"ФКР.*|КД.*|КИФД.*","|");
       fi;
    fi;
    if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","КОСГУ.*","")="":
       ПризнКОСГУ="КОСГУ."+Раб.Бюджет2005.ВзятьКодСчета(Позиции[Iter].СчДеб,ТипКБК,"КОСГУ",False);
       if not ПризнКОСГУ="КОСГУ.":
          tmp=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Позиции[Iter].ПризнДеб," ","КОСГУ.*","");
          if tmp="":
             tmp=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Позиции[Iter].Призн," ","КОСГУ.*","");
             if not Match(tmp,ПризнКОСГУ+"!"):
                Позиции[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Позиции[Iter].Призн," ",ПризнКОСГУ,"КОСГУ.*","|");
             fi;
            else
             if not Match(tmp,ПризнКОСГУ+"!"):
                Позиции[Iter].ПризнДеб=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Позиции[Iter].ПризнДеб," ",ПризнКОСГУ,"КОСГУ.*","|");
             fi;
          fi;
       fi;
    fi;
 fi;
end;

Proc ОбновитьПризн(Iter:I);
var tmp:S;
var n1,n2:i;
 if Iter=-1: n1=1; n2=Позиции; else n1=Iter; n2=Iter; fi;
 for Iter=n1..n2 do
  if not Name_S(Позиции[Iter].СчДеб)=" " and not Name_S(Позиции[Iter].СчКре)=" ":
     tmp=Раб.Бюджет2005.СписокСправ(Позиции[Iter].СчДеб+"|"+Позиции[Iter].СчКре,0,"");
     Позиции[Iter].Призн=Раб.Бюджет2005.ПривестиВСоотвНаборСлов(Позиции[Iter].Призн," ",tmp,"|");
     Позиции[Iter].ПризнДеб=Раб.Бюджет2005.ПривестиВСоотвНаборСлов(Позиции[Iter].ПризнДеб," ",tmp,"|");
     Позиции[Iter].ПризнКре=Раб.Бюджет2005.ПривестиВСоотвНаборСлов(Позиции[Iter].ПризнКре," ",tmp,"|");
     if not ЗначПризн="" and Позиции[Iter].Призн="" and Позиции[Iter].ПризнДеб="" and Позиции[Iter].ПризнКре="":
        Позиции[Iter].Призн=ЗначПризн;
     fi;
     ПолучитьДопАн(Iter);
  fi;
 od;
end;

Proc РасчетОборотов;
var Iter,z:I;
var Key:S;
 RefreshTurnOnRead=False;
 ClearVariable(Buf);
 ClearVariable(Обороты);
 УдалитьПустыеСтроки;
 for Iter=1..Позиции do
  Key=Позиции[Iter].СчДеб+"#"+Позиции[Iter].СчКре;
  z=SearchInArray(Buf,Key,True);
  if z=-1:
     z=InsertInArraySort(Buf,Key);
     z=InsertFrame(Обороты,z);
     Обороты[z].СчДеб=Позиции[Iter].СчДеб;
     Обороты[z].СчКре=Позиции[Iter].СчКре;
     Обороты[z].Сум=Позиции[Iter].Сум;
     Обороты[z].СумРуб=Позиции[Iter].СумРуб;
    else
     Обороты[z].Сум=Обороты[z].Сум+Позиции[Iter].Сум;
     Обороты[z].СумРуб=Обороты[z].СумРуб+Позиции[Iter].СумРуб;
  fi;
 od;
end;

Func ПроверитьВозврат:L;
var Iter:i;
 if ДВозврат2=1.1.100: Message("Укажите дату ответного извещения",mtError); Template.Object="edДВозврат2"; ^False; fi;
 if ДВозврат2<ДатаИзв: Message("Дата ответного извещенияния не можеть быть ранее даты извещения",mtError); Template.Object="edДВозврат2"; ^False; fi;
 for Iter=1..Позиции do
  if Позиции[Iter].ПолучСум=0 and Позиции[Iter].ПолучСумРуб=0:
     if EnqOkCancel("Не указанна сумма подтверждения. Игнорировать ?",mtWarning)=cmCancel: Template.Field="ПолучСум"; Template.Frame=Iter; ^False; fi;
  fi;
  if Валюта=BaseCurrency and not Позиции[Iter].ПолучСумРуб=0: Message("Сумму в рублях возможно ввести, только для валюты, отличной от базовой ("+BaseCurrency+")",mtError); Template.Field="ПолучСумРуб"; Template.Frame=Iter; ^False; fi;
 od;
 ^True;
end;

Func Проверить:L;
var Iter:i;
var tmp:S;
var Transit:L;
 Refresh;
 Transit=False;
 if НомерПрефикс: НомерБум=Префикс+Разделит+НомерП; fi;
 if НомерБум="": Message("Заполните номер извещения",mtError); Template.Field=if(НомерПрефикс,"НомерП","НомерБум"); ^False; fi;
 if ДатаИзв=1.1.100: Message("Заполните дату извещения",mtError); Template.Field="ДатаИзв"; ^False; fi;
 if ПолучРекв=nil: Message("Заполните учреждение (получатель)",mtError); Template.Field="ПолучИмя_"; ^False; fi;
 if ПолучПризнак="": Message("Заполните аналитический признак учреждения (получателя)",mtError); Template.Field="ПолучПризнак"; ^False; fi;
 if Name_A(ПолучПризнак)=" ": Message("Неизвестный аналитический признак учреждения (получателя) '"+ПолучПризнак+"'",mtError); Template.Field="ПолучПризнак"; ^False; fi;
 if ДатаОрд=1.1.100: Message("Заполните дату операции",mtError); Template.Field="ДатаОрд"; ^False; fi;
 if Датаорд<ДатаИзв: Message("Дата операции не может быть ранее даты документа",mtError); Template.Field="ДатаОрд"; ^False; fi;
 if Валюта="": Валюта=BaseCurrency; fi;
 if Name_C(Валюта)=" ": Message("Неизвестный идентификатор валюты "+Валюта,mtError); Template.Field="Валюта"; Template.Frame=Iter; ^False; fi;
 УдалитьПустыеСтроки;
 if Позиции=0: Message("Заполните табличную часть извещения",mtError); Template.Field="Содерж"; Template.Frame=1; ^False; fi;
 if RecCrd=0:
    Раб.КСА.Начать;
    for Iter=1..Позиции do
     Раб.КСА.Добавить(Позиции[Iter].СчДеб);
     Раб.КСА.Добавить(Позиции[Iter].СчКре);
    od;
    if Раб.КСА.Закончить(True): Message("Добавление новых счетов закончено"); fi;
 fi;
 Раб.Бюджет.ПроверитьПризнакиНачать;
 ShowProgress(Позиции,"Проверка...");
 Try
  for Iter=1..Позиции do
   ProgressPos(Iter);
   if Позиции[Iter].СчДеб="": Message("Введите счет дебета",mtError); Template.Field="СчДеб"; Template.Frame=Iter; ^False; fi;
   if Позиции[Iter].СчКре="": Message("Введите счет кредита",mtError); Template.Field="СчКре";Template.Frame=Iter; ^False; fi;
   if Name_S(Позиции[Iter].СчДеб)=" ": Message("Неизвестный счет "+Позиции[Iter].СчДеб,mtError); Template.Field="СчДеб"; Template.Frame=Iter; ^False; fi;
   if Name_S(Позиции[Iter].СчКре)=" ": Message("Неизвестный счет "+Позиции[Iter].СчКре,mtError); Template.Field="СчКре"; Template.Frame=Iter; ^False; fi;
   if Correspond(Позиции[Iter].СчДеб,Позиции[Iter].СчКре)=False: Message("Счета не могут корреспондировать: "+Позиции[Iter].СчДеб+"/"+Позиции[Iter].СчКре,mtError); Template.Field="СчДеб"; Template.Frame=Iter; ^False; fi;
   if Позиции[Iter].Сум=0 and Позиции[Iter].СумРуб=0: Message("Введите сумму",mtError); Template.Field="Сум"; Template.Frame=Iter; ^False; fi;
   if Валюта=BaseCurrency and not Позиции[Iter].СумРуб=0: Message("Сумму в рублях возможно ввести, только для валюты, отличной от базовой ("+BaseCurrency+")",mtError); Template.Field="СумРуб"; Template.Frame=Iter; ^False; fi;
   if not СекцияАвтоДОК_УПР and RecCrd=0:
      if Позиции[Iter].ПризнДеб="" and Позиции[Iter].ПризнКре="":
         if not Раб.Бюджет.ПроверитьПризнакиОбязательные(Позиции[Iter].СчДеб,Позиции[Iter].СчКре,Trim(Подр+" "+Позиции[Iter].Призн),ИсклПризн): Template.Field="Призн_"; Template.Frame=Iter; ^False; fi;
         if not Раб.Бюджет.ПроверитьПризнакиСвязанные(Позиции[Iter].СчДеб,Позиции[Iter].СчКре,Trim(Подр+" "+Позиции[Iter].Призн),ИсклПризн): Template.Field="Призн_"; Template.Frame=Iter; ^False; fi;
        else
         if not Раб.Бюджет.ПроверитьПризнакиОбязательные(Позиции[Iter].СчДеб,"",Trim(Позиции[Iter].Призн+" "+Позиции[Iter].ПризнДеб),ИсклПризн): Template.Field="ПризнДеб_"; Template.Frame=Iter; ^False; fi;
         if not Раб.Бюджет.ПроверитьПризнакиОбязательные("",Позиции[Iter].СчКре,Trim(Позиции[Iter].Призн+" "+Позиции[Iter].ПризнКре),ИсклПризн): Template.Field="ПризнКре_"; Template.Frame=Iter; ^False; fi;
         if not Раб.Бюджет.ПроверитьПризнакиСвязанные(Позиции[Iter].СчДеб,"",Trim(Позиции[Iter].Призн+" "+Позиции[Iter].ПризнДеб),ИсклПризн): Template.Field="ПризнДеб_"; Template.Frame=Iter; ^False; fi;
         if not Раб.Бюджет.ПроверитьПризнакиСвязанные("",Позиции[Iter].СчКре,Trim(Позиции[Iter].Призн+" "+Позиции[Iter].ПризнКре),ИсклПризн): Template.Field="ПризнКре_"; Template.Frame=Iter; ^False; fi;
      fi;
   fi;
   --Проверка ЖО
   if not СекцияАвтоДОК_УПР and RecCrd=0:
      tmp=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(ИсклПризн,"|","ЖО.*","");
      tmp=Раб.Бюджет2005.Объединить(tmp,Раб.Бюджет2005.ПризнВСправ(Trim(Позиции[Iter].Призн+" "+Позиции[Iter].ПризнДеб+" "+Позиции[Iter].ПризнКре)," ",".*"),"|");
      tmp=Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(tmp," ","|");
      if not Раб.Бюджет.ПроверитьПризнакиОбязательные(Позиции[Iter].СчДеб,Позиции[Iter].СчКре,НомОрд,tmp): Template.Field="НомОрд_"; Template.Frame=Iter; ^False; fi;
      if not Раб.Бюджет.ПроверитьПризнакиСвязанные(Позиции[Iter].СчДеб,Позиции[Iter].СчКре,НомОрд,tmp): Template.Field="НомОрд_"; Template.Frame=Iter; ^False; fi;
   fi;
   --
   tmp=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Позиции[Iter].Призн," ","ПБС.*","");
   if not tmp="": Message("Повторный ввод признака получателя '"+tmp+"'",mtError); Template.Field="Призн_"; Template.Frame=Iter; ^False; fi;
   tmp=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Позиции[Iter].ПризнДеб," ","ПБС.*","");
   if not tmp="": Message("Повторный ввод признака получателя '"+tmp+"'",mtError); Template.Field="ПризнДеб_"; Template.Frame=Iter; ^False; fi;
   tmp=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Позиции[Iter].ПризнКре," ","ПБС.*","");
   if not tmp="": Message("Повторный ввод признака получателя '"+tmp+"'",mtError); Template.Field="ПризнКре_"; Template.Frame=Iter; ^False; fi;
   if not Transit:
      Transit=Позиции[Iter].СчДеб=Позиции[Iter].СчКре;
      if not Transit:
         Transit=Раб.Бюджет2005.ВзятьКодСчета(Позиции[Iter].СчДеб,"","СЧ5",False)=Раб.Бюджет2005.ВзятьКодСчета(Позиции[Iter].СчКре,"","СЧ5",False);
      fi;
   fi;
  od;
  if Transit:
     if ОтправПризнак="": Message("Заполните аналитический признак учреждения (отправителя)",mtError); Template.Field="ОтправПризнак"; ^False; fi;
     if Name_A(ОтправПризнак)=" ": Message("Неизвестный аналитический признак учреждения (отправителя) '"+ОтправПризнак+"'",mtError); Template.Field="ОтправПризнак"; ^False; fi;
  fi;
  РасчетОборотов;
  if Возврат2:
     if not ПроверитьВозврат: ^False; fi;
  fi;
 Finally
  CloseProgress;
 end;
^True;
end;

Proc НоваяЗаписьНомер_Обработка;
       if not recОтправ=nil:
          ЗаполнитьРекв("Отправ",recОтправ);
         else 
          ЗаполнитьРекв("Отправ",Раб.Бюджет2005.НашРекв);
       fi;
       if not ФорматНомер=0:
          Префикс=storeПрефикс;
          Разделит=storeРазделит;
          if Префикс="": Префикс=" "; fi;
       fi;
       ОбработатьНомер("");
       if ЗначНомОрд="": НомОрд=hНомОрд; else НомОрд=ЗначНомОрд; fi;
       ДатаОрд=ДатаИзв;
       Валюта=BaseCurrency;
       ДатаОтправ=ДатаИзв;
       Исполнитель=hИсполнитель;
end;

Proc Заполнить_GUID;
var t:i;
  for t=1..ПОЗИЦИИ do
    if ПОЗИЦИИ[t].GUID='':ПОЗИЦИИ[t].GUID=GetGUID;fi;
  od;
end;
Proc ИнициализироватьУсловия(дляПРИХОДА:Logical);
 ClearVariable(УслДЕБ); ClearVariable(УслКРЕ); ClearVariable(УслАНА);

 if дляПРИХОДА:

   УслДЕБ[1] = "(*.?.101.?4.310|*.?.101.?5.310|*.?.101.?6.310|*.?.101.?8.310)&???.????.???????.???.?.???.??.???";
   УслКРЕ[1] ="(*.304.04.310|*.106.?1.410)&???.????.???????.???.?.???.??.???|00|(*.14?|*.15?|*.180)&???.?.??.?????.??.????.?.401.10.???";
   УслАНА[1] = "";

   УслДЕБ[2] = "???.????.???????.???.?.102.31.320";
   УслКРЕ[2] ="(*.304.04.320|*.106.?2.420)&???.????.???????.???.?.???.??.???|00|(*.14?|*.15?|*.180)&???.?.??.?????.??.????.?.401.10.???";
   УслАНА[2] = "";

   УслДЕБ[3] = "???.??.??.??.??.??.????.?.103.??.330";
   УслКРЕ[3] = "???.??.??.??.??.??.????.?.106.?3.430|00";
   УслАНА[3] = "";

   УслДЕБ[4] = "ЗАБ.??.101.04|ЗАБ.??.101.05|ЗАБ.??.101.06|ЗАБ.??.101.09";
   УслКРЕ[4] = "ЗАБАЛАНС";
   УслАНА[4] = "";

 else

   УслДЕБ[1] = "(???.????.???????.???.?.???.??.???&(*.104.??.410|*.304.04.310|*.401.0?.24?|*.401.0?.25?|*.401.0?.27?))|(???.?.??.?????.??.????.?.???.??.???&(*.401.0?.17?|*.401.0?.180))";
   УслКРЕ[1] = "(*.?.101.?4.410|*.?.101.?5.410|*.?.101.?6.410|*.?.101.?8.410)&???.????.???????.???.?.???.??.???";
   УслАНА[1] = "";

   УслДЕБ[2] = "(???.????.???????.???.?.???.??.???&(*.304.04.320|*.401.0?.24?|*.401.0?.25?|*.401.0?.27?))|(???.?.??.?????.??.????.?.???.??.???&(*.401.0?.17?|*.401.0?.180))";
   УслКРЕ[2] = "???.????.???????.???.?.102.31.420";
   УслАНА[2] = "";

   УслДЕБ[3] = "(???.????.???????.???.?.???.??.???&(*.304.04.340|*.?.401.0?.24?|*.?.401.0?.25?|*.?.401.0?.27?))|(???.??.??.??.??.??.????.?.???.??.???&(*.?.401.0?.17?|*.?.401.0?.180))";
   УслКРЕ[3] = "???.????.???????.???.?.105.??.440";
   УслАНА[3] = "";

   УслДЕБ[4] = "ЗАБАЛАНС";
   УслКРЕ[4] = "ЗАБ.??.101.??|ЗАБ.??.105.??";
   УслАНА[4] = "";

 fi;
end;

Proc РасчетАВТО_ДОК; -- заполнение данными из основного документа
 var t,tt,z,nsig1,ii,j,k:i;
 var wa_control,rs,ROднфа,len, RECID_REF :i;
 var Режим,OK,Проверять104:l;
 var signs,ss,ИНВ,ss0,ss1,ss2, ПБС :s;
 var CRDwork, BLNwork, ДНФАID_16, fld_ДАТЫ_ОПЕР, УслАнПров, МаскаСЧ, УслПР :String;
 var dBT,dET:d;
 var REC :Record;

 if Проводить: Exit; fi;
 OK=False;
 RECID_REF=0;
 REC=NIL;
 if CRD<>"" and CRD<>"РПО_ОПЕРАЦИИДНФА":
   CRDwork   = CRD;
   if CRDwork='РПО_ДЕНДОК_РАСХОД' or CRDwork='РПО_ДЕНДОК_ПРИХОД':
     Message('Документ сформирован из подсистемы учета денежных документов!^MЗаполнение производится непосредственно из основного документа!', mtWarning);
     Template.Field='Btn_К_ОСН_ДОК';
     Exit;
   fi;
   RECID_REF=RECCRD;
   if RECID_REF=0 and ДНФАID<>0: RECID_REF=ДНФАID; fi; -- на всякий случай
   if RECID_REF<>0:
     BLNwork        = BLNCRD;
     REC            = IntegerToRecord(Abs(RECID_REF));
     ДНФАID_16      = Str16(Abs(RECID_REF));
     fld_ДАТЫ_ОПЕР  = РАБ.БЮДЖЕТ2005.ПолеДатыПроводкиКартотеки(CRDwork);
     if fld_ДАТЫ_ОПЕР="": fld_ДАТЫ_ОПЕР = 'ДАТАОПЕР'; fi;
   fi;
 else
   CRDwork   = "РПО_ОПЕРАЦИИДНФА";
   RECID_REF = ДНФАID;
   if RECID_REF=0 and RECCRD<>0: RECID_REF=RECCRD; fi;
   if RECID_REF<>0:
     BLNwork        = "НФА.ЖУР.ОПЕРАЦИИДНФА";
     REC            = IntegerToRecord(Abs(RECID_REF));
     ДНФАID_16      = Str16(Abs(RECID_REF));
     fld_ДАТЫ_ОПЕР  = 'ДАТОПЕР';
   fi;
 fi;
 if REC<>NIL: OK=RecordExists(CRDwork, REC); fi;
 if not OK: Message("Не найден операционный документ^Mиз которого сформирован текущий документ.^MРасчет невозможен!", mtError); Exit; fi;

 МаскаСЧ=МаскаСчДеб;
 Режим=AutoRefresh;
 ToggleAutoRefresh(False);
 ROднфа=OpenWorkArea(CRDwork, "", "Ukey="+RecordToString(REC));
 ShowProgress(3, "Считывание информации основного документа ...");
 Try
   ProgressPos(1);
   Refresh(False);
   ProgressPos(2);
   ИнициализироватьУсловия(False);
   dBT=GetFieldD(ROднфа, 1, fld_ДАТЫ_ОПЕР);
   dET=dBT+1;
   len=LengthOfArray(УслАНА);
   if CRDwork='РПО_НФА_СПРАВКА':
      wa_control=OpenWorkArea('РПО_НФА_СПРАВКА_ПРОВОДКИ','','НФА_СПРАВКА="'+GetFieldS(ROднфа, 1, "НФА_СПРАВКА")+'"');
      rs=records(wa_control);
      УслАнПров='{ПБС.*&НФА.*';
      УслАнПров=Раб.Бюджет2005.ОбъединитьУсловияКонтроль256(УслАнПров,GetFieldS(ROднфа, 1, "МХЭ_ОТККОД_ОБЩ"),'&',true,false);
      УслАнПров=Раб.Бюджет2005.ОбъединитьУсловияКонтроль256(УслАнПров,GetFieldS(ROднфа, 1, "МОЛ_ОТККОД"),'&',true,false);
      ss=GetFieldS(ROднфа, 1, "ДОП_АН_КОД");
      ss=Раб.Бюджет2005.ЗаменаПодстрокиВсе(ss,'  ',' ');
      ss=Раб.Бюджет2005.ЗаменаПодстрокиВсе(ss,' ','&');
      УслАнПров=Раб.Бюджет2005.ОбъединитьУсловияКонтроль256(УслАнПров,ss,'&',true,false);
      УслАнПров=Раб.Бюджет2005.ОбъединитьУсловияКонтроль256(УслАнПров,'НФА_СПРАВКА.'+str(GetFieldI(ROднфа, 1, "СПОСОБ_РАСЧЕТА")),'&',true,false)+"}";
      УслПР=МаскаСЧ+УслАнПров;
    | CRDwork='РПО_ОПЕРАЦИИДНФА':
      УслПР=МаскаСЧ+"{ПБС.*&НФА.*&ДНФАID."+Str16(Abs(RECID_REF))+"&ДНФА."+GetFieldS(ROднфа, 1, "АН_ДНФА")+"}";
    | CRDwork='РПО_ДЕНДОК_РАСХОД' or CRDwork='РПО_ДЕНДОК_ПРИХОД': 
      УслПР=МаскаСЧ+"{ПБС.*&ДЕНДОК.*&ДНФАID."+Str16(Abs(RECID_REF));
      ss=trim(GetFieldS(ROднфа, 1, "ОБЩПРИЗН"));
      ss=Раб.Бюджет2005.ЗаменаПодстрокиВсе(ss,'  ',' ');
      ss=Раб.Бюджет2005.ЗаменаПодстроки(ss,' ','&');
      ss=Раб.Бюджет2005.ОбъединитьУсловияКонтроль256(ss,trim(GetFieldS(ROднфа, 1, "ПРИЗНПОДР")),'&',true,true);
      УслПР=Раб.Бюджет2005.ОбъединитьУсловияКонтроль256(УслПР,ss,'&',true,false)+"}";
    | true:
      УслПР=МаскаСЧ+"{ПБС.*&ДНФАID."+Str16(Abs(RECID_REF))+"}";
   fi;
   ProgressPos(3);


 ClearVariable(Позиции);
 ClearVariable(buf);
 ClearVariable(buf1);
 ClearVariable(BufN);
 ClearVariable(BufN1);
 z=0;
 ПБС="";
 Проверять104=false;
 for счета ss='('+МаскаСЧ+')&*.?.104.??.???' do
  Проверять104=true;break;
 od;
 for transaction t=УслПР,dBT,dET do
     if CRDwork='РПО_НФА_СПРАВКА':ok=GetRecordNumber(wa_control,TransRecord(k))>0;
      | true:ok=TransCardFile(t)=CRDwork;
     fi;
     if ok:
        if Проверять104:
           if match(ПроводДеб(t),'*.?.104.??.???'):
              ok=(not match(ПроводКре(t),'*.?.104.??.???')) and Раб.Бюджет2005.СоотвСчетаМаске(ПроводКре(t),МаскаСЧ,false);
            | true:
              ok=(not match(ПроводДеб(t),'*.?.104.??.???')) and Раб.Бюджет2005.СоотвСчетаМаске(ПроводДеб(t),МаскаСЧ,false);
           fi;
         | true:
              ok=Раб.Бюджет2005.СоотвСчетаМаске(ПроводДеб(t),МаскаСЧ,false) and not Раб.Бюджет2005.СоотвСчетаМаске(ПроводКре(t),МаскаСЧ,false);
        fi;
        if ok:
           --ДобавитьВмассив(ForSelect,true,false,ПроводКоличПризнак(t)+ИНВ+'#'+str(t));
           if ТипСвертки=0:--0 без свертки(по умолчанию)
              ss0=ПроводКоличПризнак(t)+'#'+ПроводДеб(t)+'#'+ПроводКре(t)+'#'+ПроводАналитика(t);
            | ТипСвертки=1:-- свертка по счету НФА (101)
              ss0=ВыделитьСлова(1,2,ПроводКоличПризнак(t),'.')+'.'+'#'+ПроводДеб(t)+'#'+ПроводКре(t);
            | ТипСвертки=2:-- свертка по счету и субсчету НФА (101.04)
              ss0=ВыделитьСлова(1,3,ПроводКоличПризнак(t),'.')+'.'+'#'+ПроводДеб(t)+'#'+ПроводКре(t);
            | ТипСвертки=3:-- счету и субсчету и 1 группе НФА (101.04.ПОСУДА)
              ss0=ВыделитьСлова(1,4,ПроводКоличПризнак(t),'.')+'.'+'#'+ПроводДеб(t)+'#'+ПроводКре(t);
            | ТипСвертки=4:-- свертка по наименованиям НФА
              ss0=ПроводКоличПризнак(t)+'#'+ПроводДеб(t)+'#'+ПроводКре(t);
            | ТипСвертки=5:-- свертка по наименованиям НФА + ИНВ
              signs=' '+ПроводАналитика(t)+' ';
              nsig1=pos(' УЧН.',signs);
              if nsig1>0:
                ИНВ=Удалить(signs,1,nsig1);
                nsig1=pos(' ',ИНВ);
                ИНВ=Удалить(ИНВ,nsig1,255);
                ss='ИНВВЕД.'+ПроводКоличПризнак(t)+'.'+ИНВ;
                if Name_A(ss)<>' ':ИНВ=ss;fi;
              fi;
              ss0=ПроводКоличПризнак(t)+'|'+ИНВ+'#'+ПроводДеб(t)+'#'+ПроводКре(t)+'#'+str(ПроводСумма(t,'КОЛ'),3);
            | ТипСвертки=6:-- 0 без свертки(с расшифровкой по аналитике)
              z=ПроводПризнаков(t);
              signs=ПроводКоличПризнак(t);ss0=signs;
              for ii=1..z do
                ss=ПроводИмяПризн(t,ii);
                if pos(SubStr(ss,1,1),'+-')>0:ss=Удалить(ss,1,1);fi;
                if ss<>ss0:signs=signs+'|'+ss;fi;
              od;
              ss0=signs+'#'+ПроводДеб(t)+'#'+ПроводКре(t);
            | ТипСвертки=7:-- Наряд, Период, РБС ,П
              z=ПроводПризнаков(t);
              signs='';ss0=signs;
--              signs=ПроводКоличПризнак(t);ss0=signs;
              for ii=1..z do
                ss=up(ПроводИмяПризн(t,ii));
                if pos(SubStr(ss,1,1),'+-')>0:ss=Удалить(ss,1,1);fi;
                if pos(ВыделитьСлово(1,ss,'.')+' ','П ПЕРИОД РБС НАР_ИС ')>0:
                   if ss<>ss0:signs=signs+'|'+ss;fi;
                fi;
              od;
              ss0=signs+'#'+ПроводДеб(t)+'#'+ПроводКре(t);
           fi;
           if ПБС='': ПБС=РАБ.УПП.LIB.ПризнакИзСтрокиАналитикиПроводки(t, "ПБС", False); fi;
           if ПБС='': ПБС=РАБ.УПП.LIB.ПризнакИзСтрокиАналитикиПроводки(t, "ПБС", true); fi;
           z=ПоискВмассиве(buf,ss0,true);
           if z<1:z=ВставитьВмассивСорт(buf,ss0);ВставитьВмассив(BufN,z,0);ВставитьВмассив(BufN1,z,0);ВставитьВмассив(Buf1,z,ПроводЕдиница(t)+'#'+str(ПроводТочность(t)));fi;
           BufN[z]=BufN[z]+ПроводСумма(t);
           BufN1[z]=BufN1[z]+ПроводСумма(t,'КОЛ');
        fi;
     fi;
 od;
 Finally
   CloseProgress;
   CloseWorkArea(ROднфа);
   if CRDwork='РПО_НФА_СПРАВКА':
      CloseWorkArea(wa_control);
   fi;
   ToggleAutorefresh(Режим);
 end;

 z=ДлинаМассива(buf);
 for ii=1..z do
  InsertFrame(Позиции,Позиции+1);

  Позиции[Позиции].СЧДЕБ     =ВыделитьСлово(2,buf[ii],'#');
  Позиции[Позиции].СЧКРЕ     =ВыделитьСлово(3,buf[ii],'#');
  Позиции[Позиции].СУМ       =BufN[ii];

  ss0='';
  ss=ВыделитьСлово(1,ВыделитьСлово(1,buf[ii],'#'),'|');
  if ПоказыватьИменаГруппНФА and ТипСвертки<>7:
     tt=КоличествоСлов(ss,'.');
     if SubStr(ss,Длина(ss),1)<>'.':signs='/'+Name_A(ss);
      | true:signs='';tt=tt+1;
     fi;
     if tt<4:k=tt-1;
      | true:k=3;
     fi;
     for j=k..tt-1 do
       ss0=ss0+'/'+Name_A(ВыделитьСлова(1,j,ss,'.')+'.');
     od;
     ss0=ss0+signs;
   | true:if ТипСвертки<>7:ss0=chr(13)+Name_A(ss);fi;
  fi;

  ss=up(ВыделитьСлово(1,buf[ii],'#'));
  tt=КоличествоСлов(ss,'|');
  if ТипСвертки=7:
     ss2='';
     for j=1..tt do
      signs=ВыделитьСлово(j,ss,'|');
      ss1=ВыделитьСлово(1,signs,'.');--имя справочника
      if pos(ss1+' ','П ПЕРИОД РБС ')>0:
         ss2=ss2+' '+signs;
      fi;
      if pos(ss1+' ','ПЕРИОД НАР_ИС ')>0:
         if ss1='ПЕРИОД':
            ss0=ss0+' (Имущество '+ВыделитьСлово(2,signs,'.')+' года)';
          | ss1='НАР_ИС':
            if pos('Выписаные наряды',Name_A(signs))=1:
               ss0=ss0+' НАРЯД'+SubStr(Name_A(signs),17,255);
             | true:
               ss0=ss0+' '+Name_A(signs);
            fi;
          | true:
            ss0=ss0+' '+Name_A(signs);
         fi;
      fi;
     od;
     Позиции[Позиции].ПРИЗН=trim(ss2);

   | true:
     for j=2..tt do
       ss0=ss0+chr(13)+Name_A(ВыделитьСлово(j,ss,'|'));
     od;
  fi;
  ss0=Удалить(ss0,1,1);
  Позиции[Позиции].СОДЕРЖ    =ss0;
  if Соотв(Позиции[Позиции].СЧДЕБ,'*.?.104.??.???') or Соотв(Позиции[Позиции].СЧКре,'*.?.104.??.???'):
     Позиции[Позиции].СОДЕРЖ='Амортизация '+Позиции[Позиции].СОДЕРЖ;
   | true:
     if ТипСвертки=5:
        Позиции[Позиции].СОДЕРЖ=format('%s[%.*n %s]',Позиции[Позиции].СОДЕРЖ,int(ВыделитьСлово(2,buf1[ii],'#')),bufn1[ii],ВыделитьСлово(1,buf1[ii],'#'));
     fi;
  fi;
 od;
 if not ПБС="":
    Rec=SignToRecord(ПБС);
    if Rec=nil: Message("Аналитический признак получателя должен быть картотечным",mtError);
     | true:
       ПолучПризнак=ПБС;
       if not ПолучРекв=Rec:
          ClearVariable(Получ);
          ПолучРекв=Rec;
          ДобавитьВышестоящие;
       fi;
    fi;
 fi;


 ДатаИзв  = dBT;
 Заполнить_GUID;
 РасчетОборотов;  
 if Номер=0:
    НоваяЗаписьНомер_Обработка;
    if Раб.Бюджет2005.Сетевая: EditorApply; fi;
 fi;

end;

Func СоздатьДокИз (aMode:S; aCrd:S; aRecCrd: Record; aBlnCrd:S; aTarget:Record): Record;
 inMode=if(aMode="","СОЗДАТЬ",aMode);
 inCrd=aCrd;
 inRecCrd=RecordToInteger(aRecCrd);
 inBlnCrd=aBlnCrd;
 OpenBlank(SelfBln,True,aTarget);
 ^StringToRecord(inMode);
end;

--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func НастрПоУмолч_onEnter (Field:S; Iter:I):L;
 recОтправ=nil;
 Отправ_="";
 ФорматНомер=0;
 ЗначНомОрд="";
 ЗначСодерж="";
 МаскаСчДеб=Def_МаскаСчДеб;
 ЗначПризн="";
 МаскаПолучСчКре=Def_МаскаПолучСчКре;
 fПодчинен=False;
 if Field="НастрПоУмолч": Message("Восстановлены значения по умолчанию"); fi;
 ^False;
end;

Func НастрЗакр_onEnter(FieldName: String; Iter: Integer): logical;
 ОткрНастр(False);
 Настр(True);
 Оформление;
 ^False;
end;

Func МаскаСч_OnVerify(FieldName: String; Iter: Integer; Value: S): Logical;
var z:n;
 z=Saldo(Value,1.1.100);
 ^True;
end;

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

Func Flag_onEnter(FieldName: String; Iter: Integer): logical;
 FieldName=SubStr(FieldName,1,Length(FieldName)-1);
 PutVariableL(FieldName,not GetVariableL(FieldName));
 Return False;
end;

Func ФорматНомер_OnEnter(FieldName: String; Iter: Integer): logical;
 if ФорматНомер=0: 
    ФорматНомер=1;
    Префикс=StoreПрефикс;
    if Префикс="": Префикс=" "; fi;
    Разделит=StoreРазделит;
   else 
    ФорматНомер=0; 
    Префикс="";
    Разделит="";
 fi;
 ^False;
end;

Func НомерБум_OnEnter(FieldName: String; Iter: Integer): logical;
 if ФорматНомер=1 and НомерПростой: Префикс=" "; ^False; fi;
 Return True;
end;

Proc Номер_OnExit(FieldName: String; Iter: Integer);
var tmp:S;
 if ФорматНомер=1 and НомерПростой: Префикс=" "; fi;
 if FieldName="Префикс" or FieldName="Разделит":
    storeПрефикс=Префикс;
    storeРазделит=Разделит;
    ОбработатьНомер("");
   else
    tmp=GetVariableS(FieldName);
    if not tmp="": ОбработатьНомер(tmp); fi;
 fi;
end;

Func Номер_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Template.HideEditor(False);
 if ФорматНомер=1 and НомерПростой: Префикс=" "; fi;
 ОбработатьНомер("");
 ^Cur;
end;

Proc Разделит_OnExit(FieldName: String; Iter: Integer);
 if Разделит="": Разделит="/"; fi;
 storeРазделит=Разделит;
 Настр(True);
end;

Func ДатаИзв_OnVerify(FieldName: String; Iter: Integer; Value: Date): Logical;
var prevДатаИзв:D;
 prevДатаИзв=ДатаИзв;
 ДатаИзв=Value;
 ОбработатьДату(prevДатаИзв,ДатаИзв);
 Return True;
end;

Proc ДатаИзв_OnExit(FieldName: String; Iter: Integer);
 if FieldName="ДатаИзв":
    if ДатаОрд=1.1.100: ДатаОрд=ДатаИзв; fi;
 fi;
end;

Func Дата_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:d;
var FieldName:S;
 Template.HideEditor(False);
 tmp=Calendar;
 if not tmp=1.1.100:
    FieldName=AsString(Template.Field);
    ДатаИзв_OnExit(FieldName,1);
    ОбработатьДату(ДатаИзв,tmp);
    PutVariableD(FieldName,tmp);
 fi;
 ^Cur;
end;

Func Отправ_onEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=ОткрытьКартотеку("Контрагент","Наше",ОтправРекв);
 if not Rec=nil:
    if FieldName="Отправ_":
       recОтправ=Rec;
       Отправ_=GetCardFieldS("Контрагент",Rec,"КорИмя")+",  "+GetCardFieldS("Контрагент",Rec,"ПочтАдрес");
      else
       ЗаполнитьРекв("Отправ",Rec);
    fi;
 fi;
 ^false;
end;

Func НаимПодр_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
var Rec: Record;
 tmp=AnaElection("П.*");
 if not tmp="":
    Подр=tmp;
    for Iter=1..Позиции do
     Позиции[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Позиции[Iter].Призн," ","П.*","");
     Позиции[Iter].ПризнДеб=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Позиции[Iter].ПризнДеб," ","П.*","");
     Позиции[Iter].ПризнКре=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Позиции[Iter].ПризнКре," ","П.*","");
    od;
 fi;
 ^False;
end;

Proc Рекв_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Field,Bln,Prefix:S;
var Iter:I;
 if Double:
    Field=AsString(Template.Field);
    Iter=AsInteger(Template.Frame);
    if Match(Field,"Отправ*") and ОтправРекв=nil: Message("Выберите учреждение (отправитель)",mtError); Template.Field="ОтправИмя_"; Exit;
      |Match(Field,"Получ*") and ПолучРекв=nil: Message("Выберите учреждение (получатель)",mtError); Template.Field="ПолучИмя_"; Exit;
      |Match(Field,"Рекв*") and Получ[Iter].Рекв=nil: Message("Выберите учреждение (получатель)",mtError); Template.Field="ПолучИмяКопия_"; Template.Frame=Iter; Exit;
    fi;
    Prefix=SubStr(Field,1,Pos(".",Field)-1); 
    if Prefix="Рекв": Prefix="Получ["+Str(Iter)+"]."+Prefix; fi;
    Field=SubStr(Field,Pos(".",Field)+1,255);
    Bln="РАБ.ВСПОМ.КОНТРАГЕНТ_ИНФОДОП";
    ExecuteProc("Инфо.Контрагент.Вызвать",GetVariableR(Prefix),Bln,Field,0);
 fi;
end;

Func ПризнПБС_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,FieldRec:S;
var Rec: Record;
 FieldRec=SubStr(FieldName,1,Pos("Призн",FieldName)-1)+"Рекв";
 PutVariableS(FieldName,CardFileRecSign("Контрагент","Признак","ПБС",GetVariableR(FieldRec),""));
 tmp=AnaElection("ПБС.*",False,False,GetVariableS(FieldName));
 if not tmp="":
    Rec=SignToRecord(tmp);
    if Rec=nil: Message("Аналитический признак должен быть картотечным",mtError); ^False; fi;
    if FieldName="ПолучПризнак":
       if not ПолучРекв=Rec: 
          ClearVariable(Получ); 
          ПолучРекв=Rec;
          ДобавитьВышестоящие;
       fi;
      else
       PutVariableR(FieldRec,Rec);
    fi;
    PutVariableS(FieldName,tmp);
 fi;
 Return False;
end;

Func Получ_onEnter(FieldName: String; Iter: Integer): logical;
var Rec:record;
 if FieldName="ПолучИмя_": Rec=ПолучРекв; else Rec=Получ[Iter].Рекв; fi;
 if Iter>0:
    Rec=ОткрытьКартотеку("Контрагент","РПО_ПБС",Rec);
   else
    Rec=Раб.Поиск.ВыборИзКартотеки("Выбор учреждения (получателя)","КОНТРАГЕНТ","ПРИЗНАК|ПОЛНИМЯ|КОРИМЯ|ИНН|РПО_КБП","Код|Полное имя|Краткое имя|ИНН|Код по сводному реестру","РПО_ПБС");
    Iter=Abs(Iter);
 fi;
 if not Rec=nil:
    if FieldName="ПолучИмя_":
       if not ПолучРекв=Rec: 
          ClearVariable(Получ);
       fi;
       ЗаполнитьРекв("Получ",Rec);
      else 
       if not УникальностьПолуч(Rec,Iter)=0: Message("Повторный ввод получателя",mtError); ^False; fi;
       ЗаполнитьРекв("Получ["+Str(Iter)+"].",Rec);
    fi;
    ДобавитьВышестоящие;
 fi;
 ^false;
end;

Func Получ_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Template.HideEditor(False);
 Получ_onEnter(AsString(Template.Field),-AsInteger(Template.Frame));
 Return Cur;
end;

Func НомОрд_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:s;
 FieldName=SubStr(FieldName,1,Length(FieldName)-1);
 tmp=AnaElection("ЖО.*");
 if not tmp="":
    PutVariableS(FieldName,tmp);
    hНомОрд=tmp;
 fi;
 Return False;
end;

Proc НомОрд_OnExit(FieldName: String; Iter: Integer);
 FieldName=SubStr(FieldName,1,Length(FieldName)-1);
 PutVariableS(FieldName,"");
 hНомОрд="";
end;

Func Содерж_OnEnter(FieldName: String; Iter: Integer): logical;
 НеПустаяТаблица;
 if Позиции[Iter].Содерж="":
    Позиции[Iter].Содерж=ЗначСодерж;
 fi;
 Return True;
end;

Func Валюта_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
var Cur:S;
 ClearVariable(Buf);
 n=0;
 for Currencies Cur="*" do
  n=n+1;
  Buf[n]=Up(Cur)+" --"+Name_C(Cur);
 od;
 n=Alternate("Валюта",Buf,-1,1,12);
 if not n=0:
    Валюта=SubStr(Buf[n],1,3);
    if Валюта=BaseCurrency:
       for n=1..Позиции do
        Позиции[Iter].СумРуб=0;
        Позиции[Iter].ПолучСумРуб=0;
       od;
    fi;
 fi;
 Return False;
end;

Func A_onEnter(FieldName: String; Iter: Integer): logical;
 if not Проводить:
    if AsString(Template.Name)="S5":
       InsertFrame(Получ,Получ+1);
       Template.Field="ПолучИмяКопия_";
       Template.Frame=Получ;
      else
       InsertFrame(Получ,Iter+1);
    fi;
 fi;
 ^False;
end;

Func D_onEnter(Field:S; Iter:I):L;
 if not Проводить:
    DeleteFrame(Получ,Iter);
 fi;
 ^False;
end;

Func A1_onEnter(FieldName: String; Iter: Integer): logical;
var z:i;
 if not Проводить:
    z=InsertFrame(Позиции,Iter+1);
    if FieldName="AA1":
       Позиции[z].Содерж=Позиции[Iter].Содерж;
       Позиции[z].Содерж2=Позиции[Iter].Содерж2;
       Позиции[z].Содерж3=Позиции[Iter].Содерж3;
       Позиции[z].СчДеб=Позиции[Iter].СчДеб;
       Позиции[z].СчКре=Позиции[Iter].СчКре;
       Позиции[z].Призн=Позиции[Iter].Призн;
       Позиции[z].ПризнДеб=Позиции[Iter].ПризнДеб;
       Позиции[z].ПризнКре=Позиции[Iter].ПризнКре;
       Позиции[z].ПолучСчДеб=Позиции[Iter].ПолучСчДеб;
       Позиции[z].ПолучСчКре=Позиции[Iter].ПолучСчКре;
    fi;
 fi;
 ^False;
end;

Func D1_onEnter (Field:S; Iter:I):L;
 if not Проводить:
    DeleteFrame(Позиции,Iter);
 fi;
 ^False;
end;

Func СчДеб_onEnter (Field:S; Iter:I):L;
var tmp:s;
 НеПустаяТаблица;
 if МаскаСчДеб="":
    if Позиции[Iter].СчДеб="":
       if Позиции[Iter].СчКре="":
          tmp=hСчДеб;
         else
          tmp=Раб.Бюджет2005.ВзятьКодСчета(Позиции[Iter].СчКре,"","ВД",True)+"."+Раб.Бюджет2005.ВзятьКодСчета(hСчДеб,"","СЧ8",False);
       fi;
      else
       tmp=Позиции[Iter].СчДеб;
    fi;
    tmp=PickCorrAccount(Позиции[Iter].СчКре,True,tmp);
   else
    if Позиции[Iter].СчДеб="": tmp=hСчДеб; else tmp=Позиции[Iter].СчДеб; fi;
    tmp=AccountElection(МаскаСчДеб,False,tmp);
 fi;
 if not tmp="":
    Позиции[Iter].СчДеб=tmp;
    hСчДеб=tmp;
    if not Позиции[Iter].СчКре="":
       if Correspond(Позиции[Iter].СчДеб,Позиции[Iter].СчКре)=False: Позиции[Iter].СчКре=""; ^False; fi;
       ОбновитьПризн(Iter);
    fi;
 fi;
 ^false;
end;

Func СчКре_onEnter (Field:S; Iter:I):L;
var tmp:s;
 НеПустаяТаблица;
 if Позиции[Iter].СчКре="":
    if Позиции[Iter].СчДеб="":
       tmp=hСчКре;
      else
       tmp=Раб.Бюджет2005.ВзятьКодСчета(Позиции[Iter].СчДеб,"","ВД",True)+"."+Раб.Бюджет2005.ВзятьКодСчета(hСчКре,"","СЧ8",False);
    fi;
   else
    tmp=Позиции[Iter].СчКре;
 fi;
 tmp=PickCorrAccount(Позиции[Iter].СчДеб,False,tmp);
 if not tmp="":
    Позиции[Iter].СчКре=tmp;
    hСчКре=tmp;
    if not Позиции[Iter].СчДеб="":
       if Correspond(Позиции[Iter].СчДеб,Позиции[Iter].СчКре)=False: Позиции[Iter].СчДеб=""; ^False; fi;
       ОбновитьПризн(Iter);
    fi;
 fi;
 ^false;
end;

Func Призн_onEnter(Field:S; Iter:I):L;
var tmp,Voc:s;
 if Field="ЗначПризн":
    tmp=МаскаСчДеб;
   else
    НеПустаяТаблица;
    if Name_S(Позиции[Iter].СчДеб)=" ": Message("Введите счет дебета",mtError); Template.Field="СчДеб"; Template.Frame=Iter; ^False; fi;
    if Name_S(Позиции[Iter].СчКре)=" ": Message("Введите счет кредита",mtError); Template.Field="СчКре"; Template.Frame=Iter; ^False; fi;
    if Field="ПризнДеб_": tmp=Позиции[Iter].СчДеб; if WordsCount(Позиции[Iter].ПризнДеб," ")>=NumSplitVoc: Message("Превышено максимальное количество справочников ("+Str(NumSplitVoc)+") для аналитики по дебету",mtError); ^False; fi;
      |Field="ПризнКре_": tmp=Позиции[Iter].СчКре; if WordsCount(Позиции[Iter].ПризнКре," ")>=NumSplitVoc: Message("Превышено максимальное количество справочников ("+Str(NumSplitVoc)+") для аналитики по кредиту",mtError); ^False; fi;
      |True: tmp=Позиции[Iter].СчДеб+"|"+Позиции[Iter].СчКре;
    fi;
    if Позиции[Iter].Призн="" and Позиции[Iter].ПризнДеб="" and Позиции[Iter].ПризнКре="":
       if not ЗначПризн="":
          Позиции[Iter].Призн=ЗначПризн;
       fi;
       ПолучитьДопАн(Iter);
    fi;
 fi;
 tmp=Раб.Бюджет2005.СписокСправ(tmp,0,ИсклПризн);
 if tmp="": Message("Аналитические признаки не требуются"); ^False; fi;
 tmp=AnaElection(tmp+"|(*&~*.*)",False,False,hПризн);
 if not tmp="":
    Voc=SubStr(tmp,1,Pos(".",tmp));
    if Voc="": Voc=tmp; else Voc=Voc+"*"; fi;
    if Field="ЗначПризн":
       ЗначПризн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(ЗначПризн," ",tmp,Voc,"");
      |Field="Призн_":
       Позиции[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Позиции[Iter].Призн," ",tmp,Voc,"");
       Позиции[Iter].ПризнДеб=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Позиции[Iter].ПризнДеб," ",Voc,"");
       Позиции[Iter].ПризнКре=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Позиции[Iter].ПризнКре," ",Voc,"");
      |True:
       if Field="ПризнДеб_": Позиции[Iter].ПризнДеб=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Позиции[Iter].ПризнДеб," ",tmp,Voc,"");
         |Field="ПризнКре_": Позиции[Iter].ПризнКре=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Позиции[Iter].ПризнКре," ",tmp,Voc,"");
       fi;
       Позиции[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Позиции[Iter].Призн," ",Voc,"");
    fi;
    if voc="П.*":
       Подр="";
    fi;
    hПризн=tmp;
 fi;
end;

Proc Призн_OnExit(Field:S; Iter:I);
 НеПустаяТаблица;
 if Field="ЗначПризн": ЗначПризн=Раб.Бюджет2005.УдалитьСловоИзНабора_Диалог2(ЗначПризн," ","Name_A");
   else
    Field="Позиции["+Str(Iter)+"]."+SubStr(Field,1,Length(Field)-1);
    PutVariableS(Field,Раб.Бюджет2005.УдалитьСловоИзНабора_Диалог2(GetVariables(Field)," ","Name_A"));
 fi;
end;

Func СумРуб_OnEnter(FieldName: String; Iter: Integer): logical;
 if Валюта=BaseCurrency or Валюта="":
    Message("Сумму в рублях возможно ввести, только для валюты, отличной от базовой ("+BaseCurrency+")",mtWarning);
    Template.Field="Валюта";
    ^False;
 fi;
 Return True;
end;

Func ПолучСч_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var FieldName:S;
var Iter:I;
 Template.HideEditor(False);
 FieldName=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 Cur=AccountElection(if(FieldName="ПолучСчДеб","",МаскаПолучСчКре),False,if(FieldName="ПолучСчДеб",Позиции[Iter].СчКре,Позиции[Iter].СчДеб));
 if not Cur="":
    FieldName="Позиции["+Str(AsInteger(Template.Frame))+"]."+AsString(Template.Field);
    PutVariableS(FieldName,Cur);
 fi;
 Return Cur;
end;

Func ПолучСум_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 Позиции[Iter].ПолучСум=Позиции[Iter].Сум;
 Позиции[Iter].ПолучСумРуб=Позиции[Iter].СумРуб;
 Return Cur;
end;

Func РасчетОбр_OnEnter(FieldName: String; Iter: Integer): logical;
 if not Проводить:
    РасчетОборотов;
 fi;
 Return False;
end;

Func ФИО_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec:Record;
var Value,FieldName:S;
 Template.HideEditor(False);
 Rec=OpenCardFile("Сотрудники");
 if not Rec=nil:
    FieldName=AsString(Template.Field);
    if FieldName="ДолжИспол" or FieldName="Исполнитель":
       ДолжИспол=GetCardFieldS("Сотрудники",rec,"Должность.Долж");
       Исполнитель=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
       hДолжИспол=ДолжИспол;
       hИсполнитель=Исполнитель;
      else
       Value=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
       PutVariableS(FieldName,Value);
    fi;
 fi;
 ^Cur;
end;

Proc Исполнитель_OnExit(FieldName: String; Iter: Integer);
 hДолжИспол=ДолжИспол;
 hИсполнитель=Исполнитель;
end;
--Обработчики событий полей шаблона-----
--
--
--Обработчики событий объектов шаблона-----
Proc cbПроводить_onChange (Obj:S);
 if not Проводить:
    Проводить=EnqOkCancel("Вы уверены что хотите исключить данный документ из обработки ?",mtWarning)=cmCancel;
   else
    Проводить=Проверить;
 fi;
 cbПроводить.State=Проводить;
 Оформление;
 EditorApply;
end;

Proc btnНастр_onClick (Obj:S);
 Настр(False);
 ОткрНастр(True);
end;

Proc cbВозврат2_onChange  (Obj:S);
 if Возврат2: 
    Возврат2=ПроверитьВозврат;
 fi;
 cbВозврат2.State=Возврат2;
 Оформление;
 EditorApply;
end;

Proc btnДВозврат2_onClick (Obj:S);
var tmp:d;
 tmp=Calendar;
 if tmp=1.1.100: Exit; fi;
 ДВозврат2=tmp;
end;

Proc btnПолучСум_OnClick(Sender: String);
var Iter:I;
 for Iter=1..Позиции do
  Позиции[Iter].ПолучСум=Позиции[Iter].Сум;
  Позиции[Iter].ПолучСумРуб=Позиции[Iter].СумРуб;
 od;
 Message("Ивещение подтвержденно на сумму "+Format("%.2N",ИтогоПолучСум));
end;

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

Proc btnПечать_onClick (Obj:S);
 if КолКопий<=0: КолКопий=1; fi;
 if КолКопий>10:
    if EnqOkCancel("Вы уверены, что хотите распечатать "+Str(КолКопий)+" копий документа ?")=cmCancel:
       Message("Отказ от печати"); 
       Exit;
    fi;
 fi;
 Раб.Настр_Печать.Prn("","",SelfCfg,"",КолКопий);
end;

Proc cbЗакрытьДок_OnChange(Sender: String);
var State:I;
 if ClosedModFob and not fQCMF:
    State=Enquiry("","Документ будет закрыт от изменений^MВнимание!^MПосле установки данного флага, если вы необладаете достаточными правами, вы НЕ СМОЖЕТЕ снять данный флаг^MПродолжить ?","Отмена;Да;Больше не спрашивать",mtWarning);
    if State=1: ClosedModFob=False; cbЗакрытьДок.State=ClosedModFob; Exit;
      |State=3: fQCMF=True;
    fi;
 fi;
 EditorApply;
end;

Func OnInsert(SectName: String): Logical;
 Return not Проводить;
end;

Func OnDelete(SectName: String; Iter: Integer): Logical;
 Return not Проводить;
end;

Func ПриВходе(FieldName: String; Iter: Integer): logical; -- обработчики секции СекцияАвтоДОК
 var OK:l;
 var ii:i;
 var rec:record;
 var CRD_АвтоДОК,bln_АвтоДОК:s;
  if FieldName='ПоказыватьИменаГруппНФА':ПоказыватьИменаГруппНФА=not ПоказыватьИменаГруппНФА;
   | FieldName='Btn_К_ОСН_ДОК'    :
     OK=False;
     if CRD<>"" and RECCRD<>0 : CRD_АвтоДОК = CRD               ; bln_АвтоДОК = BLNCRD;                 REC=IntegerToRecord(Abs(RECCRD));
     | True:                    CRD_АвтоДОК = "РПО_ОПЕРАЦИИДНФА"; bln_АвтоДОК = "НФА.ЖУР.ОПЕРАЦИИДНФА"; REC=IntegerToRecord(Abs(ДНФАID));
     fi;
     if REC<>NIL and CRD_АвтоДОК<>"" and bln_АвтоДОК<>"": OK=RecordExists(CRD_АвтоДОК, REC); fi;
     if not OK: Message("Не найден операционный документ из которого сформирован текущий документ!", mtWarning); ^False; fi;
     if ModalMode:Close;fi;
     OpenBlank(bln_АвтоДОК,false,rec);
--   if CRDднфа='РПО_ДЕНДОК_РАСХОД' or CRDднфа='РПО_ДЕНДОК_ПРИХОД':fДАТОПЕР='ДАТА';fi;
   | FieldName='Btn_РасчетАВТО_ДОК':РасчетАВТО_ДОК;
   | FieldName='Btn_ТипСвертки':
      ОчиститьПеременную(buf);
      for ii=0..7 do
        buf[ii+1]=ИмяТипаСвертки(ii);
      od;
      ii=Alternate('',buf,-1,ТипСвертки+1,12);
      if ii>0:ii=ii-1;
         ТипСвертки=ii;
      fi;
  fi;
  ^false;
end;

--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 FlagInit=True;
 Раб.Настр_Печать.Cfg("",SelfCfg);
end;

Proc AfterOpen(Destroy: Logical);
 Инициализация;
 Оформление;
 FlagInit=False;
 cbЗакрытьДок.Visible=Раб.Бюджет2005.Сетевая;
end;

Proc onRead;
 if recCurrent<>nil:
    if recCurrent<>Current:
       recCurrent=Current(recCurrent);
    fi;
    recCurrent=nil;
 fi;
 ОткрНастр(False);
 Настр(False);
 if НоваяЗапись:
    if Номер=0:
       ДатаИзв=ToDay;
       НоваяЗаписьНомер_Обработка;
      else
       ОбработатьНомер("");
    fi;
    Проводить=False;
    Возврат2=False;
    ClosedModFob=False;
    ДНФАID=0;
    RECCRD=0;
    CRD="";
    BLNCRD="";
    is69н=True;
    if inMode="СОЗДАТЬ":
       RecCrd=inRecCrd;
       Crd=inCrd;
       BlnCrd=inBlnCrd;
    fi;
    if Раб.Бюджет2005.Сетевая or inMode="СОЗДАТЬ": EditorApply; fi;
    if inMode="СОЗДАТЬ":
       inMode=RecordToString(Current);
       Close;
    fi;
   else
    if Номер=0:
       НоваяЗаписьНомер_Обработка;
       if Раб.Бюджет2005.Сетевая: EditorApply; fi;
    fi;
 fi;
 if not FlagInit: Оформление; fi;
 if RefreshTurnOnRead:
    РасчетОборотов;
    EditorApply;
 fi;
end;

Func OnVerify: Logical;
 if not Сумма=ИтогоСум: Сумма=ИтогоСум; fi;
 if not СуммаРуб=ИтогоСумРуб: СуммаРуб=ИтогоСумРуб; fi;
 if not СуммаПолуч=ИтогоПолучСум: СуммаПолуч=ИтогоПолучСум; fi;
 if not СуммаРубПолуч=ИтогоПолучСумРуб: СуммаРубПолуч=ИтогоПолучСумРуб; fi;
 if НомерПрефикс: НомерБум=Префикс+Разделит+НомерП; fi;
 if Валюта="": Валюта=BaseCurrency; fi;
 Заполнить_GUID;
 is69н=True;
 ^True;
end;
--Обработчики событий шаблона -----
--

Func ЭтоПравильныйПризнак(Value:String) :String;
var ii, len, intChars :Integer;
var RES, Chars :String;
 RES="";
 len=Length(Value);
 if len>0:
   for ii=1 to len do
     Chars=SubStr(Value, ii, 1);
     intChars=Ascii(Chars);
     if (intChars>= 48 and intChars<= 57) or  -- цифры
        (intChars>= 65 and intChars<= 90) or  -- латиница заглавные
         intChars=95                      or  -- нижнее подчеркивание
        (intChars>= 97 and intChars<=122) or  -- латиница строчные
        (intChars>=192 and intChars<=255):    -- национальный алфавит
           RES=RES+Chars; else RES=RES+"_";
     fi;
   od;
 fi;
 ^RES;
end;

Func СоздатьИмяФайлаИзвещения(aNameFolder:String; ПБСКОД:String; НОМИЗВ:String; ДАТИЗВ:Date) :String;
var aNameFile, Value :String;
var num, ii :Integer;
 aNameFile="";
 Value=ЭтоПравильныйПризнак(ПБСКОД);
 ПБСКОД="";
 num=WordsCount(Value, "_");
 if num>0:
   for ii=1 to num do
     ПБСКОД=РАБ.БЮДЖЕТ2005.Объединить(ПБСКОД, ExtractWord(ii, Value, "_"), "_");
   od;
 fi;
 if ПБСКОД="": ПБСКОД="ПБС_000"; fi;
 Value=ЭтоПравильныйПризнак(НОМИЗВ);
 НОМИЗВ="";
 num=WordsCount(Value, "_");
 if num>0:
   for ii=1 to num do
     НОМИЗВ=РАБ.БЮДЖЕТ2005.Объединить(НОМИЗВ, ExtractWord(ii, Value, "_"), "_");
   od;
 fi;
 if НОМИЗВ="": НОМИЗВ="номер_БН"; fi;
 if not ДАТИЗВ>1.1.2000: ДАТИЗВ=ToDay; fi;
 aNameFile=aNameFolder+"ИЗВ_для_"+ПБСКОД+"_номер_"+НОМИЗВ+"_от_"+Format("%.4d", Year(ДАТИЗВ))+Format("%.2d", Mon(ДАТИЗВ))+Format("%.2d", Day(ДАТИЗВ))+".xls";
 ^aNameFile;
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 ExportIZV_toExcel(thisREC:Record; xlNameFolder:String; ЗапросОткрытияФайла:Logical; aНачало:Integer) :Logical;
var xlsApp, xlsBooks, xlsBook, xlsSheets, xlsSheet, xlsRng, xlsWnd :AutoObject;
var изв_ПБСКОД, изв_НОМИЗВ, изв_Отпрв_ИМЯК, изв_Отпрв_ОКПО, изв_Отпрв_ПППК, изв_Получ_ИМЯК, изв_Получ_ОКПО, изв_Получ_ПППК, изв_НОМОРД, изв_ФИОРУК, изв_ФИОБУХ, изв_ФИОИСП :String;
var xlNameFile, ExcelVersion, localDS, localTS, Value :String;
var RO, RK, OA, ii, max_kol, kol, len, offsetRow, ZagolRow, изв_КОЛДОК, IterCount, IterSave, maxIterCount :Integer;
var изв_ДАТИЗВ, изв_ДАТОРД, изв_ДАТВЗВ, изв_ДАТПДП :Date;
var OK_export, NoError, rusExcel, ExportWork :Logical;
var изв_ИтгСумОтп, изв_ИтгСумПол, SUM, hRow :Numeric;
var изв_ОтпрвРекв, изв_ПолучРекв :Record;

 OK_export=False;
 if thisREC<>NIL:
   RO=OpenWorkArea(ДОКУМЕНТЫ.ЦЕНТРСНАБ.ИЗВЕЩ_ИСХ_69Н.SelfCrd, "", "UKey="+RecordToString(thisREC));
   RK=OpenWorkArea("КОНТРАГЕНТ", "", "1=0");
   Try
     if Records(RO)=1:
       Hint("");
       --
       изв_ДАТИЗВ=1.1.100; изв_ДАТОРД=1.1.100; изв_ДАТВЗВ=1.1.100; изв_ДАТПДП=1.1.100; изв_ОтпрвРекв=NIL; изв_ПолучРекв=NIL; изв_КОЛДОК=0;
       изв_ПБСКОД=""; изв_НОМИЗВ=""; изв_Отпрв_ИМЯК=""; изв_Отпрв_ОКПО=""; изв_Отпрв_ПППК=""; изв_Получ_ИМЯК=""; изв_Получ_ОКПО=""; изв_Получ_ПППК=""; изв_НОМОРД=""; изв_ФИОРУК=""; изв_ФИОБУХ=""; изв_ФИОИСП="";
       --
       изв_ПБСКОД=Trim(GetFieldS(RO, 1, "ПОЛУЧПРИЗНАК"));
       изв_НОМИЗВ=Trim(GetFieldS(RO, 1, "НОМЕРБУМ"));
       изв_ДАТИЗВ=GetFieldD(RO, 1, "ДАТАИЗВ");
       изв_ОтпрвРекв=GetFieldR(RO, 1, "ОТПРАВРЕКВ");
       изв_ПолучРекв=GetFieldR(RO, 1, "ПОЛУЧРЕКВ");
       Value=Trim(GetFieldS(RO, 1, "НОМОРД"));
       изв_НОМОРД=Trim(SubStr(Value, 4, 255));
       изв_ДАТОРД=GetFieldD(RO, 1, "ДАТАОРД");
       изв_ДАТВЗВ=GetFieldD(RO, 1, "ДВОЗВРАТ2");
       изв_ФИОРУК=Trim(GetFieldS(RO, 1, "ОТПРАВФИОРУК"));
       изв_ФИОБУХ=Trim(GetFieldS(RO, 1, "ОТПРАВФИОБУХ"));
       изв_ДАТПДП=GetFieldD(RO, 1, "ДАТАОТПРАВ");
       изв_ФИОИСП=Trim(GetFieldS(RO, 1, "ИСПОЛНИТЕЛЬ"));
       изв_КОЛДОК=GetFieldI(RO, 1, "КОЛДОК");
       if изв_ОтпрвРекв<>NIL:
         SetFilter(RK, "UKey="+RecordToString(изв_ОтпрвРекв));
         if Records(RK)=1:
           изв_Отпрв_ИМЯК=Trim(GetFieldS(RK, 1, "КОРИМЯ"))+"   "+Trim(GetFieldS(RK, 1, "ПОЧТАДРЕС"));
           изв_Отпрв_ОКПО=Trim(GetFieldS(RK, 1, "ОКПО"));
           изв_Отпрв_ПППК=Trim(GetFieldS(RK, 1, "РПО_ППП"));
         fi;
       fi;
       if изв_ПолучРекв<>NIL:
         SetFilter(RK, "UKey="+RecordToString(изв_ПолучРекв));
         if Records(RK)=1:
           изв_Получ_ИМЯК=Trim(GetFieldS(RK, 1, "КОРИМЯ"))+"   "+Trim(GetFieldS(RK, 1, "ПОЧТАДРЕС"));
           изв_Получ_ОКПО=Trim(GetFieldS(RK, 1, "ОКПО"));
           изв_Получ_ПППК=Trim(GetFieldS(RK, 1, "РПО_ППП"));
         fi;
       fi;
       xlNameFile=СоздатьИмяФайлаИзвещения(xlNameFolder, изв_ПБСКОД, изв_НОМИЗВ, изв_ДАТИЗВ);
       if ExistFile(xlNameFile): DeleteFile(xlNameFile); fi;
       if ExistFile(xlNameFile+"x"): DeleteFile(xlNameFile+"x"); fi; -- для версий Офиса 2007 или старше
       NoError=True;
       if NoError:
         xlsApp=CreateAutoObject('Excel.Application');
         Try
           ExcelVersion=asString(xlsApp.Version);
           if Int(ExcelVersion)>=12 or ExcelVersion="12.0": xlNameFile=xlNameFile+"x"; fi;
           Try
             xlsApp.EnableEvents=False;   -- отключить события
             xlsApp.AutomationSecurity=3; -- отключить макросы
             --
             rusExcel=РАБ.EXCEL.РусскийExcel(xlsApp);
             localDS=asString(xlsApp.International[РАБ.EXCEL.xlDecimalSeparator]);
             localTS=asString(xlsApp.International[РАБ.EXCEL.xlThousandsSeparator]);
--             xlsApp.StandardFont     = "Arial Cur";
--             xlsApp.StandardFontSize = 08;
             maxIterCount=500;
             kol=0;
             --
             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<1:
                       len=1; --len=1-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 = "извещение";

                       xlsWnd=AsAutoObject(xlsSheet.Cells);
                       Try
                         xlsRng=AsAutoObject(xlsWnd.Font);
                         Try
                           xlsRng.Name = "Arial Cur";
                           xlsRng.Size = 09;
                         Finally
                           ClearVariable(xlsRng);
                         end;
                       Finally
                         ClearVariable(xlsWnd);
                       end;

                       Hint("Формируем шапку...");

                       offsetRow=0;
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 01, 21.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 02, 14.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 03, 04.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 04, 16.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 05, 08.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 06, 08.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 07, 14.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 08, 16.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 09, 04.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 10, 12.0);
                       РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 11, 14.0);

                       РАБ.EXCEL.PrintSetup_ЧБ_Поля10(xlsApp, xlsSheet, False, 0, 0, 0, 0, True, False, True, 99);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "ИЗВЕЩЕНИЕ №");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 06);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 10, 0, True,  True, False, 0, True);

                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, изв_НОМИЗВ);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 10, 0, True,  True, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "КОДЫ");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, "Форма по ОКУД");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow, 10);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "0504805");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 03, "от");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуДату_Прописью(xlsSheet, offsetRow, 04, rusExcel, изв_ДАТИЗВ, if(изв_ДАТИЗВ>1.1.2000, False, True));
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 07);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True,  True, False, 0, True);
                       РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 04, offsetRow, 07, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "Дата");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуДату( xlsSheet, offsetRow, 11, rusExcel, изв_ДАТИЗВ, if(изв_ДАТИЗВ>1.1.2000, False, True));
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "по ОКПО");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, изв_Отпрв_ОКПО);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Учреждение (отправитель)");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, изв_Отпрв_ИМЯК);
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 02, offsetRow, 08);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 02, offsetRow, 08, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "главы по БК");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, изв_Отпрв_ПППК);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "по ОКПО");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, изв_Получ_ОКПО);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Учреждение (получатель)");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, изв_Получ_ИМЯК);
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 02, offsetRow, 08);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 02, offsetRow, 08, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "главы по БК");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, изв_Получ_ПППК);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow-6, 11, offsetRow, 11, True,   True,  True,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                       РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow-5, 11, offsetRow, 11, True,   True,  True,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 11);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Настоящим подтверждается осуществлением расчетов между учреждениями с отражением следующих записей:");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 11);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True,  True, False, 0, True);

                       Hint("Формируем таблицу...");
                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Содержание записи");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow+2, 03);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "Учреждение (отправитель)");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 07);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "Учреждение (получатель)");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 08, offsetRow, 11);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "номер счета");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 06);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "Сумма,"+Chr(10)+"РУБ.");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 07, offsetRow+1, 07);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "номер счета");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 08, offsetRow, 10);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "Сумма,"+Chr(10)+"РУБ.");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow+1, 11);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "дебет");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "кредит");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 06);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "дебет");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, "кредит");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow, 10);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "1");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 03);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "2");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "3");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 06);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "4");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "5");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, "6");
                       РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow, 10);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "7");
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                       РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 01, offsetRow, 11, True);
                       РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow-3, 01, offsetRow, 11, True,   True,  True,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                       --

                       NoError=True;

                       if NoError:
                         Try
                           xlsWnd=AsAutoObject(xlsApp.ActiveWindow);
                           xlsWnd.DisplayGridlines = False;
                         Finally
                           ClearVariable(xlsWnd);
                         end;
                         РАБ.EXCEL.АвтоВыравниваниеСтрок(xlsSheet, 1, offsetRow);
                       fi;

                     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
           end;
         Except
           NoError=False;
           ClearVariable(xlsRng);
           ClearVariable(xlsSheet);
           ClearVariable(xlsSheets);
           ClearVariable(xlsBook);
           ClearVariable(xlsBooks);
           ClearVariable(xlsApp);
           ClearVariable(xlsWnd);
         end;
       fi; --NoError
       if NoError:
         ZagolRow=offsetRow; -- строки заголовков
         offsetRow=offsetRow+1;
         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["извещение"]);
                       Try

                         OA=OpenArray(RO, 1, "2Позиции0", "", "");
                         Try
                           len=Records(OA);
                           if len>0:

                             изв_ИтгСумОтп=0.00; изв_ИтгСумПол=0.00;
                             for ii=IterSave to len do

                               Try
                                 xlsRng=AsAutoObject(xlsSheet.Rows[Str(offsetRow)+":"+Str(offsetRow)]);
                                 Value=Trim(GetFieldS(OA, ii, "2Содерж0"));
                                 if Length(Value)>50: hRow=asReal(xlsRng.RowHeight); xlsRng.RowHeight = 2*hRow; fi;
                                 РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+0, 01, 2Value0);
                                 РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+0, 01, offsetRow+0, 03);
                                 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                               Finally
                                 ClearVariable(xlsRng);
                               end;

                               Try
                                 xlsRng=AsAutoObject(xlsSheet.Rows[Str(offsetRow+1)+":"+Str(offsetRow+1)]);
                                 Value=Trim(GetFieldS(OA, ii, "2Содерж20"));
                                 if Length(Value)>50: hRow=asReal(xlsRng.RowHeight); xlsRng.RowHeight = 2*hRow; fi;
                                 РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+1, 01, 2Value0);
                                 РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+1, 01, offsetRow+1, 03);
                                 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                               Finally
                                 ClearVariable(xlsRng);
                               end;

                               Try
                                 xlsRng=AsAutoObject(xlsSheet.Rows[Str(offsetRow+2)+":"+Str(offsetRow+2)]);
                                 Value=Trim(GetFieldS(OA, ii, "2Содерж30"));
                                 if Length(Value)>50: hRow=asReal(xlsRng.RowHeight); xlsRng.RowHeight = 2*hRow; fi;
                                 РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+2, 01, 2Value0);
                                 РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+2, 01, offsetRow+2, 03);
                                 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                               Finally
                                 ClearVariable(xlsRng);
                               end;

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+0, 04, Trim(GetFieldS(OA, ii, "2СчДеб0")));
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow+2, 04);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+0, 05, Trim(GetFieldS(OA, ii, "2СчКре0")));
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow+2, 06);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               SUM=GetFieldN(OA, ii, "2Сум0");
                               изв_ИтгСумОтп=изв_ИтгСумОтп+SUM;
                               if 2SUM0<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, 2SUM0, localDS, localTS); fi;
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 07, offsetRow+2, 07);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,    0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+0, 08, Trim(GetFieldS(OA, ii, "2ПолучСчДеб0")));
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 08, offsetRow+2, 08);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow+0, 09, Trim(GetFieldS(OA, ii, "2ПолучСчКре0")));
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow+2, 10);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 09, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               SUM=GetFieldN(OA, ii, "2ПолучСум0");
                               изв_ИтгСумПол=изв_ИтгСумПол+SUM;
                               if 2SUM0<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 11, 2SUM0, localDS, localTS); fi;
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow+2, 11);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,    0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow+2, 11, True, True, True, True, True, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

                               offsetRow=offsetRow+3;
                               IterCount=IterCount+1;
                               if IterCount>=maxIterCount: IterSave=IterSave+IterCount; IterCount=0; Break; fi;

                             od;
                             if ii>=len:
                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Итого:");
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 03);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "X");
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "X");
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 06);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               if 2изв_ИтгСумОтп0<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, 2изв_ИтгСумОтп0, localDS, localTS); fi;
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "X");
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, "X");
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow, 10);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               if 2изв_ИтгСумПол0<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 11, 2изв_ИтгСумПол0, localDS, localTS); fi;
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 04, offsetRow, 11, True,   True,  True,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                             fi;
                             NoError=True;
                             --if NoError: РАБ.EXCEL.АвтоВыравниваниеСтрок(xlsSheet, ZagolRow+1, offsetRow); fi; -- гробит увеличение высоты строк

                           else

                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+0, 01, offsetRow+0, 03);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+1, 01, offsetRow+1, 03);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+1, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow+2, 01, offsetRow+2, 03);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+2, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow+2, 04);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow+2, 06);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 07, offsetRow+2, 07);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,    0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 08, offsetRow+2, 08);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow+2, 10);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow+0, 09, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 11, offsetRow+2, 11);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,    0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow+2, 11, True, True, True, True, True, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

                             offsetRow=offsetRow+3;
                             РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Итого:");
                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 03);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,  1,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "X");
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, "X");
                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 06);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "X");
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, "X");
                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow, 10);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                             РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 04, offsetRow, 11, True,   True,  True,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                             NoError=True;

                           fi;
                         Finally
                           CloseWorkArea(OA);
                         end;

                       Finally
                         ClearVariable(xlsSheet);
                       end;
                     Except
                       NoError=False;
                       ExportWork=False;
                       xlsBook.Close(False); -- закрыть книгу без сохранения
                     end;
                   Finally
                     xlsBook.Save;
                     xlsBook.Close(False); -- закрыть книгу без сохранения
                     ClearVariable(xlsBook); -- освободить объект книги
                   end;
                 Finally
                   ClearVariable(xlsBooks); -- освободить объект книг
                 end;
               Finally
                 ClearVariable(xlsApp); -- освободить объект Excel
               end;
             Except
               NoError=False;
               ExportWork=False;
               ClearVariable(xlsRng);
               ClearVariable(xlsSheet);
               ClearVariable(xlsSheets);
               ClearVariable(xlsBook);
               ClearVariable(xlsBooks);
               ClearVariable(xlsApp);
             end;
             if ii>=len: ExportWork=False; fi;
           else
             ExportWork=False;
           fi;
         end; -- while
       fi; --NoError
       if NoError:
         offsetRow=offsetRow+1;
         ZagolRow=offsetRow; -- строки заголовков
         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["извещение"]);
                       Try
                         OA=OpenArray(RO, 1, "2Обороты0", "", "");
                         Try
                           len=Records(OA);
                           if len>0:
                             for ii=IterSave to len do

                               offsetRow=offsetRow+1;
                               if ii=1:
                                 РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Обороты в журнал операций");
                                 РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 03);
                                 РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,2,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                               fi;

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, Trim(GetFieldS(OA, ii, "2СчДеб0")));
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, Trim(GetFieldS(OA, ii, "2СчКре0")));
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 06);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               SUM=GetFieldN(OA, ii, "2Сум0");
                               if 2SUM0<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07, 2SUM0, localDS, localTS); fi;
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, Trim(GetFieldS(OA, ii, "2ПолучСчДеб0")));
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 09, Trim(GetFieldS(OA, ii, "2ПолучСчКре0")));
                               РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow, 10);
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               SUM=GetFieldN(OA, ii, "2ПолучСум0");
                               if 2SUM0<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 11, 2SUM0, localDS, localTS); fi;
                               РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                               РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, ZagolRow+1, 4, offsetRow, 11, True, True, True, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

                               IterCount=IterCount+1;
                               if IterCount>=maxIterCount: IterSave=IterSave+IterCount; IterCount=0; Break; fi;

                             od;

                             NoError=True;
                             if NoError: РАБ.EXCEL.АвтоВыравниваниеСтрок(xlsSheet, ZagolRow+1, offsetRow); fi;
                           else
                             offsetRow=offsetRow+1;
                             РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Обороты в журнал операций");
                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 01, offsetRow, 03);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight,2,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 05, offsetRow, 06);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                             РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 09, offsetRow, 10);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                             РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                             РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, ZagolRow+1, 4, offsetRow, 11, True, True, True, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

                             NoError=True;

                           fi;
                         Finally
                           CloseWorkArea(OA);
                         end;
                       Finally
                         ClearVariable(xlsSheet);
                       end;
                     Except
                       NoError=False;
                       ExportWork=False;
                       xlsBook.Close(False); -- закрыть книгу без сохранения
                     end;
                   Finally
                     xlsBook.Save;
                     xlsBook.Close(False); -- закрыть книгу без сохранения
                     ClearVariable(xlsBook); -- освободить объект книги
                   end;
                 Finally
                   ClearVariable(xlsBooks); -- освободить объект книг
                 end;
               Finally
                 ClearVariable(xlsApp); -- освободить объект Excel
               end;
             Except
               NoError=False;
               ExportWork=False;
               ClearVariable(xlsRng);
               ClearVariable(xlsSheet);
               ClearVariable(xlsSheets);
               ClearVariable(xlsBook);
               ClearVariable(xlsBooks);
               ClearVariable(xlsApp);
             end;
             if ii>=len: ExportWork=False; fi;
           else
             ExportWork=False;
           fi;
         end; -- while
       fi; --NoError
       if NoError:
         offsetRow=offsetRow+1;
         ZagolRow=offsetRow; -- строки заголовков
         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["извещение"]);
                   Try

                     offsetRow=offsetRow+1;
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Приложение:");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     if изв_КОЛДОК>0: РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, Str(изв_КОЛДОК)); fi;
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 02, offsetRow, 02, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "документов");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                     offsetRow=offsetRow+2;
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Руководитель учреждения");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 02, offsetRow, 02, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, изв_ФИОРУК);
                     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 05);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 04, offsetRow, 05, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "Руководитель учреждения");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 08, offsetRow, 08, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 10, offsetRow, 11, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

                     offsetRow=offsetRow+1;
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "(отправитель)");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "(подпись)");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 02, offsetRow, 02, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "(расшифровка подписи)");
                     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 05);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 04, offsetRow, 05, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "(получатель)");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "(подпись)");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 08, offsetRow, 08, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "(расшифровка подписи)");
                     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11, True);

                     offsetRow=offsetRow+2;
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Главный бухгалтер учреждения");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 02, offsetRow, 02, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, изв_ФИОБУХ);
                     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 05);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 04, offsetRow, 05, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "Главный бухгалтер учреждения");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 08, offsetRow, 08, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 10, offsetRow, 11, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

                     offsetRow=offsetRow+1;
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "(отправитель)");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 02, "(подпись)");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 02, offsetRow, 02, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, "(расшифровка подписи)");
                     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 05);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 04, offsetRow, 05, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, "(получатель)");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, "(подпись)");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 08, offsetRow, 08, True);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "(расшифровка подписи)");
                     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 10, offsetRow, 11, True);

                     offsetRow=offsetRow+2;
                     РАБ.EXCEL.ЗаписатьЯчейкуДату_Прописью(xlsSheet, offsetRow, 01, rusExcel, изв_ДАТПДП, if(изв_ДАТПДП>1.1.2000, False, True));
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 01, offsetRow, 01, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.ЗаписатьЯчейкуДату_Прописью(xlsSheet, offsetRow, 07, rusExcel, изв_ДАТВЗВ, if(изв_ДАТВЗВ>1.1.2000, False, True));
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 07, offsetRow, 07, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

                     offsetRow=offsetRow+2;
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "Исполнитель");
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 02, offsetRow, 02, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 04, изв_ФИОИСП);
                     РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 04, offsetRow, 05);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                   Finally
                     ClearVariable(xlsSheet);
                   end;
                 Except
                   NoError=False;
                   ExportWork=False;
                   xlsBook.Close(False); -- закрыть книгу без сохранения
                 end;
               Finally
                 xlsBook.Save;
                 xlsBook.Close(False); -- закрыть книгу без сохранения
                 ClearVariable(xlsBook); -- освободить объект книги
               end;
             Finally
               ClearVariable(xlsBooks); -- освободить объект книг
             end;
           Finally
             ClearVariable(xlsApp); -- освободить объект Excel
           end;
         Except
           NoError=False;
           ExportWork=False;
           ClearVariable(xlsRng);
           ClearVariable(xlsSheet);
           ClearVariable(xlsSheets);
           ClearVariable(xlsBook);
           ClearVariable(xlsBooks);
           ClearVariable(xlsApp);
         end;
       fi; --NoError
       -- Заключительный этап
       if NoError and ЗапросОткрытияФайла:
         len=EnqOkCancel("Экспорт завершен!^MВремя работы - "+TimeToHMSstring_adv(Time-aНачало, ":")+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; --if Records(RO)=1
   Finally
     CloseWorkArea(RK);
     CloseWorkArea(RO);
   end;
 fi;
 OK_export=if(NoError, True, False);
 ^OK_export;
end;

Proc btnExportExcel_OnClick(Sender: String);
var kk, num, ii, начало :Integer;
var ЗапросНаОткрытиеФайла :Logical;
var PathToSave :String;
 if not Проводить: Message("Экспорт в Excel возможен только^Mдля проведенных (учтенных) операций.", mtWarning); Exit; fi;
 if not CurrentState=CrdusUnmodified and not CurrentState=CrdusDeleted and not CurrentState=CrdusUndefined: EditorApply; fi;
 if CurrentState=CrdusUnmodified: 
   if ChooseFolder(PathToSave, "Выберите папку для сохранения файла экспорта...")=cmOK:
     kk=0; num=1; начало=Time;
     ЗапросНаОткрытиеФайла=True;
     RefreshAna;
     ShowProgress(num, "Экспорт извещений...");
     Try
       for ii=1 to num  do
         ProgressPos(ii);
         if ExportIZV_toExcel(Current, PathToSave, ЗапросНаОткрытиеФайла, начало): kk=kk+1; fi;
       od;
     Finally
       CloseProgress;
     end;
     if kk>0 and not ЗапросНаОткрытиеФайла: Message("Экспорт завершен!^MЭкспортировано "+Str(kk)+" извещений.^MВремя работы - "+TimeToHMSstring_adv(Time-начало, ":")+".", mtInformation); fi;
   fi;
 fi;
end;


Конец
