--
--
-- Разработка бланка: ТБ.БЮДЖЕТ
БЛАНКСШАБЛОНОМ [03.04.2007] "ф.0503x69 Сведения по дебиторской и кредиторской задолженности";

var Казенное   :Logical=True;
--var Казенное   :Logical=False;

var HeadTxt_NamFrm :String = if(Казенное, "Сведения по дебиторской и кредиторской задолженности", "Сведения по дебиторской и кредиторской задолженности учреждения");
var HeadTxt_codFrm :String = if(Казенное, "0503169", "0503769");
var HeadTxt_SГ01С1 :String = if(Казенное, Chr(13)+"Номер (код) счета"+Chr(13)+"бюджетного учета", Chr(13)+"Номер счета"+Chr(13)+"бухгалтерского учета");
var HeadTxt_Razd02 :String = if(Казенное, "2. Сведения о просроченной задолженности", "2. Аналитическая информация о просроченной задолженности");

var SelfBln        :String = if(Казенное, "ОТЧЕТЫ.БАЛАНС.191Н.0503169", "ОТЧЕТЫ.БАЛАНС.33Н.0503769");

-- Зона авто-идентификации отчета
Ф_ОКУД       :String = HeadTxt_codFrm;
Ф_ИНСТР_КОД  :String = if(Казенное, "191н", "33н");
Ф_РЕД_КОД    :String = if(Казенное, "157н", "139н");
Ф_ДЕЙСТВ_С   :Date   = if(Казенное, 01.04.2015, 01.04.2015);
Ф_ДЕЙСТВ_ПО  :Date   = if(Казенное,    1.1.100,    1.1.100);
-- конец зоны авто-идентификации отчета

2--0 2Общие настроечные переменные

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

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

var ОбщУслВД   :String  = РАБ.ПАРАМ_ОТЧ.ОбщУслВД;
var ВД         :String  = РАБ.ПАРАМ_ОТЧ.ВД;
var НаимВД     :String  = РАБ.ПАРАМ_ОТЧ.ВД_;

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

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

var ОбщУслАн   :String  = if(РАБ.ПАРАМ_ОТЧ.ОбщУслАн="","","("+РАБ.ПАРАМ_ОТЧ.ОбщУслАн+")");

var ОбщУслКД   :String  = РАБ.ПАРАМ_ОТЧ.ОбщУслКД;
var ОбщУслКР   :String  = РАБ.ПАРАМ_ОТЧ.ОбщУслКР;
var ОбщУслКИФД :String  = РАБ.ПАРАМ_ОТЧ.ОбщУслКИФД;

УЧР_НАИМ :String;
УЧР_ИНН  :String;
УЧР_SREC :Record;

var defDebMask :String = "*.?.205.??.*|*.?.206.??.*|*.?.208.??.*|*.?.209.??.*|*.?.210.05.*|*.?.210.10.*|*.?.303.??.*";
var defCreMask :String = "*.?.205.??.*|*.?.208.??.*|*.?.209.??.*|*.?.302.??.*|*.?.303.??.*|*.3.304.01.*|*.?.304.02.*|*.?.304.03.*|*.?.304.04.*";

-- 2Объекты
btnClose   :Object;
МенюСекц   :Object;
О01        :Object; --общие отчетные
О02        :Object; --общие отчетные
О03        :Object; --общие отчетные
О04        :Object; --общие отчетные
О05        :Object; --общие отчетные
Р01        :Object; --расчетные
Р02        :Object; --расчетные
Р03        :Object; --расчетные
Р04        :Object; --расчетные
Ф01        :Object; --форма
Ф02        :Object; --форма
Ф03        :Object; --форма
Ф04        :Object; --форма
Ф05        :Object; --форма
Ф06        :Object; --форма
Ф07        :Object; --форма
Н01        :Object; --настроечные
Н02        :Object; --настроечные
Н03        :Object; --настроечные
Н04        :Object; --настроечные
Н05        :Object; --настроечные
Н06        :Object; --настроечные
var mР0    :Integer=4;
var mФ0    :Integer=7;
var mН0    :Integer=6;

2--0 2Кнопки
var ФокусО  :String="";
var ФокусР  :String="";
var ФокусФ  :String="";
var ФокусН  :String="";
var aДЗ     :String="+";
var dДЗ     :String="-";
var aКЗ     :String="+";
var dКЗ     :String="-";
var aРТ     :String="+";
var dРТ     :String="-";
var кнпМ01  :String="Расчетная (рабочая) таблица";
var кнпМ02  :String="Отчетная форма";
var кнпМ03  :String="Настройки бланка (отчета)";
var кнпН01  :String="Восстановить значения по умолчанию";
var кнпН02  :String="Проверить настройку";
var кнпР01  :String="Расчет таблицы";
var кнпР02  :String="Печать таблицы";
var кнпР03  :String="Очистка таблицы";
var кнпР04  :String="Экспорт таблицы в Excel";
var кнпР05  :String="Выгрузка в формат ДФ г. Москва";
var кнпФ01  :String="Заполнить форму";
var кнпФ02  :String="Печать формы";
var кнпФ03  :String="Очистка формы";
var кнпФ04  :String="Экспорт формы в Excel";
currКнопка  :Integer=[1];

var VisibleНаимВД :Logical = not Казенное;

2--0 2Переменные
var ОтчGUID    :String;
var НстGUID    :String;
var НстВерсия  :Integer=150410;
var ТекВерсия  :Integer;
Режим          :Integer;
var ВидЗадолжн :String=if(Режим=1, "Кредиторская", "Дебиторская");

2--0 2Массивы
var УпрДЗ     :Integer;
var УслСчДЗ[] :String;
var УслАнДЗ[] :String;
var СправДЗ[] :String;
var СправДЗ_[]:String=СправДЗ[$];
var ФтрОС_Д[] :Integer;
var ФтрОС_Д_[]:Integer=ФтрОС_Д[$];

var УпрКЗ     :Integer;
var УслСчКЗ[] :String;
var УслАнКЗ[] :String;
var СправКЗ[] :String;
var СправКЗ_[]:String=СправКЗ[$];
var ФтрОС_К[] :Integer;
var ФтрОС_К_[]:Integer=ФтрОС_К[$];

var ЭлементКБК :Integer=[0];       var ЭлементКБК_ :Integer=ЭлементКБК;
var НаверхСчет :Logical=[True];    var НаверхСчет_ :Logical=НаверхСчет;
var ВидИмяКонт :Integer=[0];       var ВидИмяКонт_ :Integer=ВидИмяКонт;
var NewList_2R :Logical=[False];   var NewList_2R_ :Logical=NewList_2R;

var BufREP[]  :String;
var BufKey[]  :String;
var BufСЧТ[]  :String;
var BufКСГ[]  :String;
var BufАНА[]  :String;
var BufСУМ[]  :Numeric;

М0 :Integer;
М1 :Integer;

SГ01С1М1[] :String;   -- Номер (код) счета бюджетного учета
RГ02С1М1[] :Numeric;  -- Сумма задолженности, руб. на начало года ВСЕГО
RГ03С1М1[] :Numeric;  -- Сумма задолженности, руб. на начало года долгосрочная
RГ04С1М1[] :Numeric;  -- Сумма задолженности, руб. на начало года просроченная
RГ05С1М1[] :Numeric;  -- Сумма задолженности, руб. на конец отчетного периода ВСЕГО
RГ06С1М1[] :Numeric;  -- Сумма задолженности, руб. на конец отчетного периода долгосрочная
RГ07С1М1[] :Numeric;  -- Сумма задолженности, руб. на конец отчетного периода просроченная
DГ08С1М1[] :Date;     -- Просроченная задолженность - дата возникновения
DГ09С1М1[] :Date;     -- Просроченная задолженность - дата исполнения по правовому основанию
SГ10С1М1[] :String;   -- Дебитор (кредитор) ИНН
SГ11С1М1[] :String;   -- Дебитор (кредитор) наименование
SГ12С1М1[] :String;   -- Причины образования - код
SГ13С1М1[] :String;   -- Причины образования - пояснения
ДК_AnaМ1[] :String;   -- Аналитика справочника контрагента
АВТО_М1[]  :Logical;  -- Авторасчет (не ручное заполнение)
GUID_М0    :String;
GUID_М1    :String;

SORT_KEY[] :String;
RГ02С0М0[] :Numeric;
RГ03С0М0[] :Numeric;
RГ04С0М0[] :Numeric;
RГ05С0М0[] :Numeric;
RГ06С0М0[] :Numeric;
RГ07С0М0[] :Numeric;
KEYS_LVL[] :Integer;

М2 :Integer;

SГ01С1М2[] :String;   -- Номер (код) счета
RГ02С1М2[] :Numeric;  -- Сумма, руб.
DГ03С1М2[] :Date;     -- Просроченная задолженность - дата возникновения
DГ04С1М2[] :Date;     -- Просроченная задолженность - дата исполнения по правовому основанию
SГ05С1М2[] :String;   -- Дебитор (кредитор) ИНН
SГ06С1М2[] :String;   -- Дебитор (кредитор) наименование
SГ07С1М2[] :String;   -- Причины образования - код
SГ08С1М2[] :String;   -- Причины образования - пояснения
ДК_AnaМ2[] :String;   -- Аналитика справочника контрагента

var RГ02С1 :Numeric=SumOfArray(RГ02С1М1, М1);
var RГ03С1 :Numeric=SumOfArray(RГ03С1М1, М1);
var RГ04С1 :Numeric=SumOfArray(RГ04С1М1, М1);
var RГ05С1 :Numeric=SumOfArray(RГ05С1М1, М1);
var RГ06С1 :Numeric=SumOfArray(RГ06С1М1, М1);
var RГ07С1 :Numeric=SumOfArray(RГ07С1М1, М1);

2--0 2Вспом.массивы

var Buf[]  :String;
var Clr[]  :Integer;

-- Для выгрузки ДФ
var O1_KEY[] :String;
var O1_SГ1[] :String;
var O1_NГ2[] :Numeric;
var O1_NГ3[] :Numeric;
var O1_NГ4[] :Numeric;
var O1_NГ5[] :Numeric;
var O2_KEY[] :String;
var O2_SГ1[] :String;
var O2_NГ2[] :Numeric;
var O2_SГ3[] :String;
var O2_SГ4[] :String;
var O2_SГ5[] :String;
var O2_SГ6[] :String;

2--0 2Процедуры и функции

Proc ОчисткаТблРсчта;
 ClearVariable(М1);
 ClearVariable(SГ01С1М1);
 ClearVariable(RГ02С1М1);
 ClearVariable(RГ03С1М1);
 ClearVariable(RГ04С1М1);
 ClearVariable(RГ05С1М1);
 ClearVariable(RГ06С1М1);
 ClearVariable(RГ07С1М1);
 ClearVariable(DГ08С1М1);
 ClearVariable(DГ09С1М1);
 ClearVariable(SГ10С1М1);
 ClearVariable(SГ11С1М1);
 ClearVariable(SГ12С1М1);
 ClearVariable(SГ13С1М1);
 ClearVariable(ДК_AnaМ1);
 ClearVariable(АВТО_М1);
 GUID_М1="";
end;

Proc ОчисткаТблФормы_Данные;
 ClearVariable(М0);
 ClearVariable(SORT_KEY);
 ClearVariable(RГ02С0М0);
 ClearVariable(RГ03С0М0);
 ClearVariable(RГ04С0М0);
 ClearVariable(RГ05С0М0);
 ClearVariable(RГ06С0М0);
 ClearVariable(RГ07С0М0);
 ClearVariable(KEYS_LVL);
 GUID_М0="";
 --
 ClearVariable(М2);
 ClearVariable(SГ01С1М2);
 ClearVariable(RГ02С1М2);
 ClearVariable(DГ03С1М2);
 ClearVariable(DГ04С1М2);
 ClearVariable(SГ05С1М2);
 ClearVariable(SГ06С1М2);
 ClearVariable(SГ07С1М2);
 ClearVariable(SГ08С1М2);
 ClearVariable(ДК_AnaМ2);
end;

Proc ОчиститьМассивыДФ;
-- ClearVariable(O1_KEY);
-- ClearVariable(O1_SГ1);
-- ClearVariable(O1_NГ2);
-- ClearVariable(O1_NГ3);
-- ClearVariable(O1_NГ4);
-- ClearVariable(O1_NГ5);
-- ClearVariable(O2_KEY);
-- ClearVariable(O2_SГ1);
-- ClearVariable(O2_NГ2);
-- ClearVariable(O2_SГ3);
-- ClearVariable(O2_SГ4);
-- ClearVariable(O2_SГ5);
-- ClearVariable(O2_SГ6);
end;

Proc ОчисткаТблФормы_Секция;
var OffsetCol, ii :Integer;

 OffsetCol=1;
 Ф03.RowsCount=1;
 Ф03.Row(1, RowVisible, False);
 Ф03.CellLinks(OffsetCol+1, 1, -1, -1);
 for ii=1 to 7 do
   Ф03.Cell(1, OffsetCol+ii,  CellContents, "", True);
   Ф03.Cell(1, OffsetCol+ii,  CellFontStyle, 0);
   Ф03.Cell(1, OffsetCol+ii,  CellFontSize,  8);
   Ф03.Cell(1, OffsetCol+ii,  CellFontColor, coBlack);
   Ф03.Cell(1, OffsetCol+ii,  CellBgColor,   coTransparent);
   Ф03.Cell(1, OffsetCol+ii,  CellAlignment, 2);
   Ф03.Cell(1, OffsetCol+ii,  CellBorder, "2,1,2,1");
   Ф03.Cell(1, OffsetCol+ii,  CellWrap, True);
 od;
 Ф03.Row(1, RowVisible, True);

 Ф04.Row(1, RowVisible, False);
 for ii=2 to 7 do
   Ф04.Cell(1, OffsetCol+ii,  CellContents, "", True);
   Ф04.Cell(1, OffsetCol+ii, CellFontStyle , fsBold);
   Ф04.Cell(1, OffsetCol+ii, CellFontSize  , 9);
   Ф04.Cell(1, OffsetCol+ii, CellFontColor , coBlack);
   Ф04.Cell(1, OffsetCol+ii, CellBgColor   , coTransparent);
   Ф04.Cell(1, OffsetCol+ii, CellAlignment , 1);
   Ф04.Cell(1, OffsetCol+ii, CellBorder    , "1,2,1,1");
   Ф04.Cell(1, OffsetCol+ii, CellWrap      , True);
 od;
 Ф04.Row(1, RowVisible, True);

end;

Proc ОчисткаТблФормы;
 ОчисткаТблФормы_Данные;
 ОчисткаТблФормы_Секция;
end;

Proc ОчиститьТаблицы;
 ОчисткаТблРсчта;
 ОчисткаТблФормы;
end;

Proc Очистить;
 ClearVariable(Buf);
 ClearVariable(Clr);
 ClearVariable(СправДЗ_);
 ClearVariable(СправКЗ_);
 ClearVariable(ФтрОС_Д_);
 ClearVariable(ФтрОС_К_);
 --
 ClearVariable(BufREP);
 ClearVariable(BufKey);
 ClearVariable(BufСЧТ);
 ClearVariable(BufКСГ);
 ClearVariable(BufАНА);
 ClearVariable(BufСУМ);
 ОчиститьМассивыДФ;
end;

Proc ПрисвоитьТочностьСекц(Форма:Logical);
var si, cc, rr, ci, ri, maxnum :Integer;
var Obj :Object;
var Msk, SecNam :String;
 Msk=",##0."+if(Точн<1, "", RepStr("0", Точн))+";;-";
 maxnum=if(Форма, mФ0, mР0);
 SecNam=if(Форма, "Ф0", "Р0");
 for si=1 to maxnum do
   if FindObject(SecNam+Str(si), Obj):
     rr=AsInteger(Obj.RowsCount);
     cc=AsInteger(Obj.ColsCount);
     if rr>0 and cc>0:
       for ri=1 to rr do
         for ci=1 to cc do
           if Match(Up(AsString(Obj.Cell(ri, ci, CellContents, ""))), "R*"): Obj.Cell(ri, ci, CellFormat, Msk); fi;
         od;
       od;
     fi;
   fi;
 od;
end;

Proc ПрисвоитьТочность;
 ПрисвоитьТочностьСекц(False);
 ПрисвоитьТочностьСекц(True);
end;

Proc СекцииНастр(NameObj:String; Видимо:Logical);
var GotoField :String;
var ii, len :Integer;
var Work :Logical;
var Obj :Object;
 if NameObj="Р0": GotoField="ФокусР"; len=mР0; Work=True;
 |  NameObj="Ф0": GotoField="ФокусФ"; len=mФ0; Work=True;
 |  NameObj="Н0": GotoField="ФокусН"; len=mН0; Work=True;
 else Work=False;
 fi;
 if Work:
   for ii=1 to len do
     if FindObject(NameObj+Str(ii), Obj): Obj.Visible=Видимо; fi;
   od;
   if Видимо: Template.Field=GotoField; fi;
 fi;
end;

Proc НастрУмолч;

 ТекВерсия=НстВерсия;

 ClearVariable(УпрДЗ);
 ClearVariable(УслСчДЗ);
 ClearVariable(УслАнДЗ);
 ClearVariable(СправДЗ);
 ClearVariable(ФтрОС_Д);

 ClearVariable(УпрКЗ);
 ClearVariable(УслСчКЗ);
 ClearVariable(УслАнКЗ);
 ClearVariable(СправКЗ);
 ClearVariable(ФтрОС_К);

 if Казенное:

   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.205.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=1; СправДЗ[УпрДЗ]="К.*";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.206.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=0; СправДЗ[УпрДЗ]="К.*";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.208.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=1; СправДЗ[УпрДЗ]="МОЛ.*";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.209.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=1; СправДЗ[УпрДЗ]="Ф.*";
--   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.210.05.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=0; СправДЗ[УпрДЗ]="";
--   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.210.11.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=0; СправДЗ[УпрДЗ]="";
--   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.210.12.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=0; СправДЗ[УпрДЗ]="";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.303.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=1; СправДЗ[УпрДЗ]="";


   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.205.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=2; СправКЗ[УпрКЗ]="К.*";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.208.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=2; СправКЗ[УпрКЗ]="МОЛ.*";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.209.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=2; СправКЗ[УпрКЗ]="Ф.*";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.302.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]="К.*";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.303.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=2; СправКЗ[УпрКЗ]="";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.3.304.01.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]="";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.304.02.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]="";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.304.03.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]="";
--   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.304.04.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]=""; --авторы инструкции 2015 начудили?

 else

   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.205.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=1; СправДЗ[УпрДЗ]="К.*";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.206.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=0; СправДЗ[УпрДЗ]="К.*";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.208.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=1; СправДЗ[УпрДЗ]="МОЛ.*";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.209.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=1; СправДЗ[УпрДЗ]="Ф.*";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.210.05.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=0; СправДЗ[УпрДЗ]="";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.210.11.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=0; СправДЗ[УпрДЗ]="";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.210.12.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=0; СправДЗ[УпрДЗ]="";
   InsertFrame(УпрДЗ,УпрДЗ+1); УслСчДЗ[УпрДЗ]="*.?.303.??.*"; УслАнДЗ[УпрДЗ]=""; УслАнДЗ[УпрДЗ]=""; ФтрОС_Д[УпрДЗ]=1; СправДЗ[УпрДЗ]="";


   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.205.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=2; СправКЗ[УпрКЗ]="К.*";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.208.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=2; СправКЗ[УпрКЗ]="МОЛ.*";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.209.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=2; СправКЗ[УпрКЗ]="Ф.*";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.302.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]="К.*";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.303.??.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=2; СправКЗ[УпрКЗ]="";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.3.304.01.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]="";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.304.02.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]="";
   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.304.03.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]="";
--   InsertFrame(УпрКЗ,УпрКЗ+1); УслСчКЗ[УпрКЗ]="*.?.304.04.*"; УслАнКЗ[УпрКЗ]=""; УслАнКЗ[УпрКЗ]=""; ФтрОС_К[УпрКЗ]=0; СправКЗ[УпрКЗ]=""; --авторы инструкции 2015 начудили?

 fi;

 ЭлементКБК=0;
 НаверхСчет=True;
 ВидИмяКонт=0;
 NewList_2R=False;

end;

Proc НастройкаБланка(toSave:Logical);
var Value :String;
var ii :Integer;

 if НстGUID="" or toSave: НстGUID=GetGUID; fi;
 if РАБ.НАСТР.Начать(SelfBln, 0, НстВерсия, "", НстGUID):
   РАБ.НАСТР.Добавить("ТекВерсия", "I");
   РАБ.НАСТР.Добавить("УпрДЗ", "I");
   for ii=1 to УпрДЗ do
     Value="["+Str(ii)+"]";
     РАБ.НАСТР.Добавить("УслСчДЗ"+Value, "S");
     РАБ.НАСТР.Добавить("УслАнДЗ"+Value, "S");
     РАБ.НАСТР.Добавить("СправДЗ"+Value, "S");
     РАБ.НАСТР.Добавить("ФтрОС_Д"+Value, "I");
   od;
   РАБ.НАСТР.Добавить("УпрКЗ", "I");
   for ii=1 to УпрКЗ do
     Value="["+Str(ii)+"]";
     РАБ.НАСТР.Добавить("УслСчКЗ"+Value, "S");
     РАБ.НАСТР.Добавить("УслАнКЗ"+Value, "S");
     РАБ.НАСТР.Добавить("СправКЗ"+Value, "S");
     РАБ.НАСТР.Добавить("ФтрОС_К"+Value, "I");
   od;
   РАБ.НАСТР.Добавить("ЭлементКБК", "I");
   РАБ.НАСТР.Добавить("НаверхСчет", "L");
   РАБ.НАСТР.Добавить("ВидИмяКонт", "I");
   РАБ.НАСТР.Добавить("NewList_2R", "L");
   if toSave:
     РАБ.НАСТР.СОХРАНИТЬ;
   else
     НстGUID=РАБ.НАСТР.ЗАГРУЗИТЬ("", "");
     if НстGUID="": НастрУмолч; fi;
   fi;
 fi;

end;

Proc КонтрольВерсии;
 НастройкаБланка(False);
 if not ТекВерсия=НстВерсия:
   НастрУмолч;
   НастройкаБланка(True);
   Message("Настройка отчета актуализирована!", mtInformation);
 fi;
end;

Proc Восстановить_НастрУмолч;
 if EnqOkCancel("Восстановить значения по умолчанию?", mtWarning)=cmOk:
   НастрУмолч;
   НастройкаБланка(True);
   Message("Значение по умолчанию восстановлены.", mtInformation);
 fi;
end;

Func ПроверитьУсловия(varСч:String; varАн:String; Iter1:Integer; Iter2:Integer; Txt:String) :Logical;
var Acc, Sgn, vСч1, vСч2, vАн1, vАн2 :String;
var FlagAcc :Logical;
var ii :Integer;

 vСч1=GetVariableS(varСч+"["+Str(Iter1)+"]");
 vСч2=GetVariableS(varСч+"["+Str(Iter2)+"]");
 FlagAcc=False;
 ClearVariable(Buf);
 if (Length(vСч1)+Length(vСч2))>250:
   ii=0;
   for Account Acc=vСч1, Sort do
     ii=ii+1;
     Buf[ii]=Acc;
   od;
   for Account Acc=vСч2, Sort do
     if SearchInArray(Buf, Acc, True, 1)>0: FlagAcc=True; Break; fi;
   od;
 else
   for Account Acc="("+vСч1+")&("+vСч2+")" do
     FlagAcc=True;
     Break;
   od;
 fi;
 if not FlagAcc: ^True; fi;
 vАн1=GetVariableS(varАн+"["+Str(Iter1)+"]");
 vАн2=GetVariableS(varАн+"["+Str(Iter2)+"]");
 if vАн1="" and vАн2="": Trace("Ошибка! Условие отбора "+txt+" по счетам "+vСч1+" (стр.№"+Str(Iter1)+") пересекается с условием отбора "+vСч2+" (стр.№"+Str(Iter2)+")"); ^False; fi;
 if not vАн1="": vАн1="("+vАн1+")"; fi;
 if not vАн2="": vАн2="("+vАн2+")"; fi;
 for Sign Sgn=РАБ.БЮДЖЕТ2005.Объединить(vАн1, vАн2, "&") do
   Trace("Ошибка! Условие отбора "+txt+" по счетам "+vСч1+" и аналитике "+vАн1+" (стр.№"+Str(Iter1)+") пересекается с условием отбора счетов "+vСч2+" и аналитике "+vАн2+" (стр.№"+Str(Iter2)+")");
   ^False;
 od;
 ^True;
end;

Func ПроверитьУсловияПересечения_ДЕБ_КРЕ :Logical;
var ii, jj :Integer;
 if УпрДЗ>0 and УпрКЗ>0:
   for ii=1 to УпрДЗ do
     for jj=1 to УпрКЗ do
       if УслСчДЗ[ii]=УслСчКЗ[jj] and УслАнДЗ[ii]=УслАнКЗ[jj] and СправДЗ[ii]=СправКЗ[jj]:
         if ФтрОС_Д[ii]=ФтрОС_К[jj]:
           if ФтрОС_Д[ii]=0 and ФтрОС_К[jj]=0: Trace("Ошибка! Дублирование параметров отчета [свернутый  остаток по маске счета "+УслСчДЗ[ii]+if(УслАнДЗ[ii]="", "", " и аналитике "+УслАнДЗ[ii])+"] в дебеторской и кредиторской части расчета"); ^True;
           |  ФтрОС_Д[ii]=1 and ФтрОС_К[jj]=1: Trace("Ошибка! Дублирование параметров отчета [дебетовый  остаток по маске счета "+УслСчДЗ[ii]+if(УслАнДЗ[ii]="", "", " и аналитике "+УслАнДЗ[ii])+"] в дебеторской и кредиторской части расчета"); ^True;
           |  ФтрОС_Д[ii]=2 and ФтрОС_К[jj]=2: Trace("Ошибка! Дублирование параметров отчета [кредитовый остаток по маске счета "+УслСчДЗ[ii]+if(УслАнДЗ[ii]="", "", " и аналитике "+УслАнДЗ[ii])+"] в дебеторской и кредиторской части расчета"); ^True;
           fi;
         else
           if ФтрОС_Д[ii]=0 and ФтрОС_К[jj]=1: Trace("Ошибка! Пересечение остатков. По маске счета "+УслСчДЗ[ii]+if(УслАнДЗ[ii]="", "", " и аналитике "+УслАнДЗ[ii])+" - в дебеторской части расчета указан свернутый остаток, а в кредиторской части расчета - дебетовый");  ^True;
           |  ФтрОС_Д[ii]=0 and ФтрОС_К[jj]=2: Trace("Ошибка! Пересечение остатков. По маске счета "+УслСчДЗ[ii]+if(УслАнДЗ[ii]="", "", " и аналитике "+УслАнДЗ[ii])+" - в дебеторской части расчета указан свернутый остаток, а в кредиторской части расчета - кредитовый"); ^True;
           |  ФтрОС_Д[ii]=1 and ФтрОС_К[jj]=0: Trace("Ошибка! Пересечение остатков. По маске счета "+УслСчДЗ[ii]+if(УслАнДЗ[ii]="", "", " и аналитике "+УслАнДЗ[ii])+" - в кредиторской части расчета указан свернутый остаток, а в дебеторской части расчета - дебетовый");  ^True;
           |  ФтрОС_Д[ii]=2 and ФтрОС_К[jj]=0: Trace("Ошибка! Пересечение остатков. По маске счета "+УслСчДЗ[ii]+if(УслАнДЗ[ii]="", "", " и аналитике "+УслАнДЗ[ii])+" - в кредиторской части расчета указан свернутый остаток, а в дебеторской части расчета - кредитовый"); ^True;
           fi;
         fi;
       fi;
     od;
   od;
 fi;
 ^False;
end;

Func ПроверкаНастр :Logical;
var Iter1,Iter2 :Integer;
var Err :Logical;

 ClearTrace(True);

 Iter1=1;
 while Iter1<=УпрДЗ do
   if УслСчДЗ[Iter1]="" and УслАнДЗ[Iter1]="" and СправДЗ[Iter1]="":
     DeleteFrame(УпрДЗ, Iter1);
   else
     if УслСчДЗ[Iter1]="": Message("Условие отбора по счетам пустое.", mtError); Template.Field="УслСчДЗ"; Template.Frame=Iter1; ^False; fi;
     if not (ФтрОС_Д[Iter1]=0 or ФтрОС_Д[Iter1]=1 or ФтрОС_Д[Iter1]=2): ФтрОС_Д[Iter1]=0; fi;
     Iter1=Iter1+1;
   fi;
 end; --while

 Iter2=1;
 while Iter2<=УпрКЗ do
   if УслСчКЗ[Iter2]="" and УслАнКЗ[Iter2]="" and СправКЗ[Iter2]="":
     DeleteFrame(УпрКЗ, Iter2);
   else
     if УслСчКЗ[Iter2]="": Message("Условие отбора по счетам пустое.", mtError); Template.Field="УслСчКЗ"; Template.Frame=Iter2; ^False; fi;
     if not (ФтрОС_К[Iter2]=0 or ФтрОС_К[Iter2]=1 or ФтрОС_К[Iter2]=2): ФтрОС_К[Iter2]=0; fi;
     Iter2=Iter2+1;
   fi;
 end; --while

 if УпрДЗ=0 and УпрКЗ=0:
   if УпрДЗ=0: InsertFrame(УпрДЗ, УпрДЗ+1); fi;
   if УпрКЗ=0: InsertFrame(УпрКЗ, УпрКЗ+1); fi;
   Message("Необходимо выполнить настройку формы", mtWarning);
   ^False;
 fi;

 Err=False;
 for Iter1=1 to УпрДЗ do
   for Iter2=(Iter1+1) to УпрДЗ do
     if ПроверитьУсловия("УслСчДЗ", "УслАнДЗ", Iter1, Iter2, "дебиторской задолженности")=False:  Err=True; fi;
   od;
 od;

 for Iter1=1 to УпрКЗ do
   for Iter2=(Iter1+1) to УпрКЗ do
     if ПроверитьУсловия("УслСчКЗ", "УслАнКЗ", Iter1, Iter2, "кредиторской задолженности")=False: Err=True; fi;
   od;
 od;

 if not Err: Err=ПроверитьУсловияПересечения_ДЕБ_КРЕ; fi;

 if Err: Message("Обнаружены ошибки в условиях отбора!", mtError); ^False; fi;

 ^True;
end;

Proc ПроверитьНастройку;
 if ПроверкаНастр: Message("Ошибок не обнаружено.", mtInformation); fi;
end;

Proc ВидЗадолжн_Выбор;
var num :Integer;
 ClearVariable(Buf);
 Buf[1]="Дебиторская";
 Buf[2]="Кредиторская";
 num=Alternate("Вид задолженности", Buf, -1, (Режим+1), 12);
 if num=0: Exit; fi;
 Режим=(num-1);
 ОчиститьТаблицы;
end;

Proc НеПустаяТаблица;
var nn :Integer;
 if УпрДЗ<1: Try nn=InsertFrame(УпрДЗ, 1); Except end; fi;
 if УпрКЗ<1: Try nn=InsertFrame(УпрКЗ, 1); Except end; fi;
 if М1   <1: Try nn=InsertFrame(М1,    1); Except end; fi;
 if М2   <1: Try nn=InsertFrame(М2,    1); Except end; fi;
end;

Proc ДобавитьУдалитьСтроку(FieldName:String; Iter:Integer);
var nn :Integer;
 if FieldName="AДЗ": Try nn=InsertFrame(УпрДЗ, Iter+1); Except end;
 |  FieldName="AКЗ": Try nn=InsertFrame(УпрКЗ, Iter+1); Except end;
 |  FieldName="AРТ": Try nn=InsertFrame(М1,    Iter+1); Except end;
 |  FieldName="DДЗ": if EnqOkCancel("Вы уверены что хотите удалить данную строчку?", mtConfirmation)=cmOk: Try DeleteFrame(УпрДЗ, Iter); НеПустаяТаблица; Except end; fi;
 |  FieldName="DКЗ": if EnqOkCancel("Вы уверены что хотите удалить данную строчку?", mtConfirmation)=cmOk: Try DeleteFrame(УпрКЗ, Iter); НеПустаяТаблица; Except end; fi;
 |  FieldName="DРТ": if EnqOkCancel("Вы уверены что хотите удалить данную строчку?", mtConfirmation)=cmOk: Try DeleteFrame(М1,    Iter); НеПустаяТаблица; Except end; fi;
 fi;
end;

Proc ВидимостьОтчетныхТаблиц_Меню(TV1:Logical; TV2:Logical; TV3:Logical);
var sysTxt, sysShd :Integer;

 sysTxt=РАБ.ЦВЕТА.GetColor("coBtnText");
 sysShd=РАБ.ЦВЕТА.GetColor("coBtnShadow");

 МенюСекц.Cell(3, 3, CellFontColor, if(TV1, sysTxt, sysShd));
 МенюСекц.Cell(3, 5, CellFontColor, if(TV2, sysTxt, sysShd));
 МенюСекц.Cell(3, 7, CellFontColor, if(TV3, sysTxt, sysShd));

end;

Proc ВидимостьОтчетныхТаблиц_Work(p1v:Logical; p2v:Logical; p3v:Logical);
var FLG :Logical;

 if p1v or p2v: FLG=True; else FLG=False; fi;

 if FLG and currКнопка=3: НастройкаБланка(True); else НастройкаБланка(False); fi;

 О01.Visible=FLG;
 О02.Visible=FLG;
 О03.Visible=FLG;

 СекцииНастр("Р0", p1v);
 СекцииНастр("Ф0", p2v);
 СекцииНастр("Н0", p3v);

 ВидимостьОтчетныхТаблиц_Меню(p1v, p2v, p3v);

end;

Proc ValidateОтчетSectionInit;
 if not (currКнопка>0 and currКнопка<4): currКнопка=1; fi;
 if currКнопка=1: ВидимостьОтчетныхТаблиц_Work(True , False, False);
 |  currКнопка=2: ВидимостьОтчетныхТаблиц_Work(False, True , False);
 |  currКнопка=3: ВидимостьОтчетныхТаблиц_Work(False, False, True );
 else             ВидимостьОтчетныхТаблиц_Work(False, False, False);
 fi;
end;

Func СоотвКОСГУ(aКОСГУ:String; isДеб:Logical) :String;
var Value :String;
 Value=SubStr(aКОСГУ, 1, 1);
 if isДеб:
   if Value="4": Value="3";
   |  Value="6": Value="5";
   |  Value="7": Value="8";
   fi;
 else
   if Value="3": Value="4";
   |  Value="5": Value="6";
   |  Value="8": Value="7";
   fi;
 fi;
 ^Trim(Value+SubStr(aКОСГУ, 2, 255));
end;

Proc ReadJur(FILE:String; COUNT:Integer; ОТЧVOC:String);
var aVal1, aVal2, aDeb, aCre, aComment, КОДСЧ, КОСГУ, ANA, SVRKEY :String;
var aSum1, aSum2, SUM :Numeric;
var ii, len, jj, pp :Integer;
var СЧДЕБ :Logical;
var aDate :Date;

 if not ExistFile(FILE): Exit; fi;
 ClearVariable(BufKey);
 ClearVariable(BufСЧТ);
 ClearVariable(BufКСГ);
 ClearVariable(BufАНА);
 ClearVariable(BufСУМ);
 ShowProgress(COUNT, "Расчет...");
 OpenTextJur(FILE);
 Try
   ii=0;
   while not GetTransFromTextJur(aDate, aSum1, aVal1, aSum2, aVal2, aDeb, aCre, Buf, aComment) do
     ii=ii+1;
     ProgressPos(ii);
     if aDeb="00" or aDeb="00Z": КОДСЧ=aCre; СЧДЕБ=False; fi;
     if aCre="00" or aCre="00Z": КОДСЧ=aDeb; СЧДЕБ=True;  fi;
     if (aVal1='' or aVal1=BaseCurrency) and aSum1<>0.00: if СЧДЕБ: SUM=aSum1; else SUM=-aSum1; fi;
     |  (aVal2='' or aVal2=BaseCurrency) and aSum2<>0.00: if СЧДЕБ: SUM=aSum2; else SUM=-aSum2; fi;
     else SUM=0.00;
     fi;
     КОСГУ=РАБ.БЮДЖЕТ2005.ВзятьКодСчета(КОДСЧ, "", "КОСГУ", False);
     КОСГУ=СоотвКОСГУ(КОСГУ, not Режим=1);
     КОДСЧ=РАБ.БЮДЖЕТ2005.ВзятьКодСчета(КОДСЧ, "", "АН",    True );
     ANA="";
     if not ОТЧVOC="":
       len=LengthOfArray(Buf);
       if len>0:
         for jj=1 to len do
           ANA=РАБ.БЮДЖЕТ2005.ВзятьСловоИзНабораПоМаске(Buf[jj], " ", ОТЧVOC, "");
           if not ANA="": Break; fi;
         od;
       fi;
     fi;
     SVRKEY=КОДСЧ+" "+ANA;
     pp=SearchInArray(BufKey, SVRKEY, True, 1);
     if pp=-1:
       pp=InsertInArraySort(BufKey, SVRKEY);
       InsertInArray(BufСЧТ, pp, КОДСЧ);
       InsertInArray(BufКСГ, pp, КОСГУ);
       InsertInArray(BufАНА, pp, ANA);
       InsertInArray(BufСУМ, pp, SUM);
     else
       BufСУМ[pp]=BufСУМ[pp]+SUM;
     fi;
   end; --while not GetTransFromTextJur
 Finally
   CloseTextJur;
   CloseProgress;
 end;

end;

Func ДебиторКредитор_ПрименитьНаименование(Code:String; Mode:Integer) :String;
var RES, Text :String;
 RES="";
 if Code<>"":
   Text=Trim(Name_A(Code));
   if Text="": Text=Code; fi;
   if Mode=1: RES="["+Code+"] - "+Text;
   |  Mode=2: RES=Text+" - ["+Code+"]";
   |  Mode=3: RES=Code;
   else       RES=Text;
   fi;
 fi;
 ^RES;
end;

Proc ДобавитьСтр(Iter:Integer; fSign:Integer; наНачало:Logical; RК:Integer; RС:Integer);
var KEY, ANA, СЧТ, Value :String;
var num, pp, ii :Integer;
var REC :Record;
 СЧТ=BufСЧТ[Iter]+"."+BufКСГ[Iter];
 ANA=BufАНА[Iter];
 KEY=РАБ.БЮДЖЕТ2005.ВзятьКодСчета(BufСЧТ[Iter], "", "СЧ6", False)+" "+СЧТ+" "+ANA;
 num=SearchInArray(BufREP, KEY, True, 1);
 if num=-1:
   ii=InsertInArraySort(BufREP, KEY);
   InsertFrame(М1, ii);
   SГ01С1М1[ii]=СЧТ;
   if наНачало: RГ02С1М1[ii]=BufСУМ[Iter]*fSign; else RГ05С1М1[ii]=BufСУМ[Iter]*fSign; fi;
   ДК_AnaМ1[ii]=ANA;
   SГ11С1М1[ii]=ДебиторКредитор_ПрименитьНаименование(ДК_AnaМ1[ii], ВидИмяКонт);
   REC=SignToRecord(ДК_AnaМ1[ii], False);
   if REC<>NIL:
     Value=Up(SignCardFile(ДК_AnaМ1[ii], False));
     if Value="КОНТРАГЕНТ" and RК>0: pp=GetRecordNumber(RК, REC); if pp>0: SГ10С1М1[ii]=Trim(GetFieldS(RК, pp, "ИНН")); fi;
     --|  Value="СОТРУДНИКИ" and RС>0: pp=GetRecordNumber(RС, REC); if pp>0: SГ10С1М1[ii]=Trim(GetFieldS(RС, pp, "ИНН")); fi;
     |  Value="СОТРУДНИКИ" and RС>0: pp=GetRecordNumber(RС, REC); if pp>0: SГ10С1М1[ii]="0000000000"; fi;
     fi;
   fi;
   АВТО_М1[ii]=True; -- авторасчет (не ручное заполнение)
 else
   if наНачало:
     RГ02С1М1[num]=RГ02С1М1[num]+(BufСУМ[Iter]*fSign);
   else
     RГ05С1М1[num]=RГ05С1М1[num]+(BufСУМ[Iter]*fSign);
   fi;
 fi;
end;

Func НужнаСумма(aSum:Numeric; aТочн:Integer; aТипОст:Integer) :Logical;
var calcSum :Numeric;
 calcSum=Round(aSum, aТочн);
 if not calcSum=0.00:
   if aТипОст=1: if calcSum>0.00: ^True; fi; -- дебетовый остаток
   |  aТипОст=2: if calcSum<0.00: ^True; fi; -- кредитовый остаток
   else ^True; -- свернутый остаток
   fi;
 fi;
 ^False;
end;

Proc Расчет;
var ACC, ANA, FN, ОбщУслСч_, ОбщУслКД_, ОбщУслКР_, ОбщУслКИФД_, УслСжатияАн :String;
var sgn, ii, num, len, jj, R1, R2 :Integer;

 if not ПроверкаНастр: ВидимостьОтчетныхТаблиц_Work(False, False, True); currКнопка=3; Exit; fi;
 Refresh;
 Очистить;
 ОчисткаТблРсчта;
 ОчисткаТблФормы;
 --
 РАБ.БЮДЖЕТ2005.РежимМаски="?";
 if not ОбщУслКД=""   : ОбщУслКД_   = РАБ.БЮДЖЕТ2005.ВзятьКодКБК(ОбщУслКД  , "КД"  , "КБК", False)+".*"; else ОбщУслКД_  =""; fi;
 if not ОбщУслКР=""   : ОбщУслКР_   = РАБ.БЮДЖЕТ2005.ВзятьКодКБК(ОбщУслКР  , "ФКР" , "КБК", False)+".*"; else ОбщУслКР_  =""; fi;
 if not ОбщУслКИФД="" : ОбщУслКИФД_ = РАБ.БЮДЖЕТ2005.ВзятьКодКБК(ОбщУслКИФД, "КИФД", "КБК", False)+".*"; else ОбщУслКИФД_=""; fi;
 ОбщУслСч_ = РАБ.БЮДЖЕТ2005.Объединить(ОбщУслКД_, ОбщУслКР_,"|");
 ОбщУслСч_ = РАБ.БЮДЖЕТ2005.Объединить(ОбщУслСч_, ОбщУслКИФД_,"|");
 if not ОбщУслСч_="": ОбщУслСч_ = "("+ОбщУслСч_+")"; fi;
 ОбщУслСч_ = РАБ.БЮДЖЕТ2005.Объединить(ОбщУслСч_, ОбщУслВД, "&");
 --
 ClearVariable(BufREP);
 --
 R1=OpenWorkArea("КОНТРАГЕНТ", "", "");
 R2=OpenWorkArea("СОТРУДНИКИ", "", "");
 Try
   if Режим=1:
     sgn=-1;
     for ii=1 to УпрКЗ do
       ACC=РАБ.БЮДЖЕТ2005.Объединить("("+УслСчКЗ[ii]+")", ОбщУслСч_, "&");
       if not УслАнКЗ[ii]="": ANA="("+УслАнКЗ[ii]+")"; else ANA=""; fi;
       ANA=РАБ.БЮДЖЕТ2005.Объединить(ANA, ОбщУслАн, "&");
       УслСжатияАн=РАБ.БЮДЖЕТ2005.СписокСправ(ACC, 0, "");
       if not СправКЗ[ii]="": УслСжатияАн=РАБ.БЮДЖЕТ2005.УдалитьСловоИзНабораПоМаске(УслСжатияАн, "|", СправКЗ[ii], "|"); fi;
       ACC=РАБ.БЮДЖЕТ2005.Объединить(ACC, УслВал, "'");
       --
       FN=PlanVar("CACHE")+"\"+GetGUID;
       num=TujReport(FN, 1.1.100, 2ДН0, ACC, ANA, УслСжатияАн, "", "", TujRepBalAccount+TujRepNoNullBal+TujRepZabalance+TujRepCombinedAna, False);
       if num>0:
         ReadJur(FN, num, СправКЗ[ii]);
         len=LengthOfArray(BufKey);
         if len>0:
           for jj=1 to len do
             --if not Round(BufСУМ[jj], Точн)=0.00: ДобавитьСтр(jj, sgn, True,  R1, R2); fi; --расчет до 2015
             if НужнаСумма(BufСУМ[jj], Точн, ФтрОС_К[ii]): ДобавитьСтр(jj, sgn, True,  R1, R2); fi;
           od;
         fi;
       fi;
       if ExistFile(FN): Try DeleteFile(FN); Except end; fi;
       FN=PlanVar("CACHE")+"\"+GetGUID;
       num=TujReport(FN, 1.1.100, 2ДК0, ACC, ANA, УслСжатияАн, "", "", TujRepBalAccount+TujRepNoNullBal+TujRepZabalance+TujRepCombinedAna, False);
       if num>0:
         ReadJur(FN, num, СправКЗ[ii]);
         len=LengthOfArray(BufKey);
         if len>0:
           for jj=1 to len do
             --if not Round(BufСУМ[jj], Точн)=0.00: ДобавитьСтр(jj, sgn, False, R1, R2); fi; --расчет до 2015
             if НужнаСумма(BufСУМ[jj], Точн, ФтрОС_К[ii]): ДобавитьСтр(jj, sgn, False,  R1, R2); fi;
           od;
         fi;
       fi;
       if ExistFile(FN): Try DeleteFile(FN); Except end; fi;
     od;
   else
     sgn=1;
     for ii=1 to УпрДЗ do
       ACC=РАБ.БЮДЖЕТ2005.Объединить("("+УслСчДЗ[ii]+")", ОбщУслСч_, "&");
       if not УслАнДЗ[ii]="": ANA="("+УслАнДЗ[ii]+")"; else ANA=""; fi;
       ANA=РАБ.БЮДЖЕТ2005.Объединить(ANA, ОбщУслАн, "&");
       УслСжатияАн=РАБ.БЮДЖЕТ2005.СписокСправ(ACC, 0, "");
       if not СправДЗ[ii]="": УслСжатияАн=РАБ.БЮДЖЕТ2005.УдалитьСловоИзНабораПоМаске(УслСжатияАн, "|", СправДЗ[ii], "|"); fi;
       ACC=РАБ.БЮДЖЕТ2005.Объединить(ACC, УслВал, "'");
       --
       FN=PlanVar("CACHE")+"\"+GetGUID;
       num=TujReport(FN, 1.1.100, 2ДН0, ACC, ANA, УслСжатияАн, "", "", TujRepBalAccount+TujRepNoNullBal+TujRepZabalance+TujRepCombinedAna, False);
       if num>0:
         ReadJur(FN, num, СправДЗ[ii]);
         len=LengthOfArray(BufKey);
         if len>0:
           for jj=1 to len do
             --if not Round(BufСУМ[jj], Точн)=0.00: ДобавитьСтр(jj, sgn, True,  R1, R2); fi; --расчет до 2015
             if НужнаСумма(BufСУМ[jj], Точн, ФтрОС_Д[ii]): ДобавитьСтр(jj, sgn, True,  R1, R2); fi;
           od;
         fi;
       fi;
       if ExistFile(FN): Try DeleteFile(FN); Except end; fi;
       FN=PlanVar("CACHE")+"\"+GetGUID;
       num=TujReport(FN, 1.1.100, 2ДК0, ACC, ANA, УслСжатияАн, "", "", TujRepBalAccount+TujRepNoNullBal+TujRepZabalance+TujRepCombinedAna, False);
       if num>0:
         ReadJur(FN, num, СправДЗ[ii]);
         len=LengthOfArray(BufKey);
         if len>0:
           for jj=1 to len do
             --if not Round(BufСУМ[jj], Точн)=0.00: ДобавитьСтр(jj, sgn, False, R1, R2); fi; --расчет до 2015
             if НужнаСумма(BufСУМ[jj], Точн, ФтрОС_Д[ii]): ДобавитьСтр(jj, sgn, False,  R1, R2); fi;
           od;
         fi;
       fi;
       if ExistFile(FN): Try DeleteFile(FN); Except end; fi;
     od;
   fi;
 Finally
   CloseWorkArea(R1);
   CloseWorkArea(R2);
 end;
 --
 ОтчGUID=РАБ.ПАРАМ_ОТЧ.ОтчGUID;
 GUID_М1=GetGuid;
 Message("Расчет завершен", mtInformation);
end;

Proc Перерасчет(Flag:Logical);
var Msg :String;

 if ДН>=ДК:     Message("Дата начада периода превышает дату окончания периода", mtError); РАБ.ПАРАМ_ОТЧ.Взять("ДК",1); Template.Field="ДН";     Exit; fi;
 if ДК=1.1.100: Message("Выберите отчетный период", mtError);                             РАБ.ПАРАМ_ОТЧ.Взять("ДК",1); Template.Field="ДК";     Exit; fi;
 if ВД="":      Message("Выберите вид детятельности");                                                                 Template.Field="НАИМВД"; Exit; fi;
 if Flag: Msg="Параметры отчета изменились."+Chr(13); else Msg=""; fi;

 if EnqOkCancel(Msg+'Выполнить расчет?'+chr(13)+'Набранные вручную данные будут утеряны', mtWarning)=cmOK: Расчет; НеПустаяТаблица; fi;

end;

Proc ИмпортТаблицы_Данные(СчетПервый:Logical; НаборЭлементов:Integer);
var vT, valСЧ5, valСЧ8, valСЧТ, valGR1, valGR2, valGR3, valGR4, valКБК :String;
var KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, Value :String;
var ii, len, xx, pp, jj, aa, lvl :Integer;
var Work, Нереальная :Logical;

 len=LengthOfArray(SГ01С1М1);
 if len>0 and (Abs(RГ02С1)+Abs(RГ05С1))>0.00: Work=True; else Work=False; fi;
 if Work:
   ОчисткаТблФормы_Данные;
   xx=0;
   ShowProgress(len, "Импорт данных...");
   Try
     2for ii=1 to len do
       ProgressPos(ii);
       --???.????.???????.???.?.???.??.???
       --???.?.??.?????.??.????.?.???.??.???
       --???.??.??.??.??.??.????.?.???.??.???
       --123456789012345678901234567890123456
       --0        1         2         3
       vT=""; valСЧ5=""; valСЧ8=""; valСЧТ=""; valGR1=""; valGR2=""; valGR3=""; valGR4="";
       if (Abs(RГ04С1М1[ii])+Abs(RГ07С1М1[ii]))>0.00: Нереальная=True; else Нереальная=False; fi;
       if Match(SГ01С1М1[ii], "???.????.???????.???.?.???.??.???")    : vT="1"; -- КР
                                                                        valСЧ5=SubStr(SГ01С1М1[ii], 22, 05);  --    +".$$.$$$";
                                                                        valСЧ8=SubStr(SГ01С1М1[ii], 22, 08);  --       +".$$$";
                                                                        valСЧТ=SubStr(SГ01С1М1[ii], 22, 12);  --;
                                                                        if НаборЭлементов>0:
                                                                          valGR1=SubStr(SГ01С1М1[ii], 01, 03);--+".$$$$.$$$$$$$.$$$";
                                                                          valGR2=SubStr(SГ01С1М1[ii], 01, 08);--     +".$$$$$$$.$$$";
                                                                          valGR3=SubStr(SГ01С1М1[ii], 01, 16);--             +".$$$";
                                                                          valGR4=SubStr(SГ01С1М1[ii], 01, 20);
                                                                        fi;
       |  Match(SГ01С1М1[ii], "???.?.??.?????.??.????.?.???.??.???")  : vT="2"; -- КД
                                                                        valСЧ5=SubStr(SГ01С1М1[ii], 24, 05);  --    +".$$.$$$";
                                                                        valСЧ8=SubStr(SГ01С1М1[ii], 24, 08);  --       +".$$$";
                                                                        valСЧТ=SubStr(SГ01С1М1[ii], 24, 12);
                                                                        if НаборЭлементов>0:
                                                                          valGR1=SubStr(SГ01С1М1[ii], 01, 03);--+".$.$$.$$$$$.$$.$$$$";
                                                                          valGR2=SubStr(SГ01С1М1[ii], 01, 08);--     +".$$$$$.$$.$$$$";
                                                                          valGR3=SubStr(SГ01С1М1[ii], 01, 14);--           +".$$.$$$$";
                                                                          valGR4=SubStr(SГ01С1М1[ii], 01, 22);
                                                                        fi;
       |  Match(SГ01С1М1[ii], "???.??.??.??.??.??.????.?.???.??.???") : vT="3"; --ФД
                                                                        valСЧ5=SubStr(SГ01С1М1[ii], 25, 05);  --+    ".$$.$$$";
                                                                        valСЧ8=SubStr(SГ01С1М1[ii], 25, 08);  --+       ".$$$";
                                                                        valСЧТ=SubStr(SГ01С1М1[ii], 25, 12);
                                                                        if НаборЭлементов>0:
                                                                          valGR1=SubStr(SГ01С1М1[ii], 01, 03);--+".$$.$$.$$.$$.$$.$$$$";
                                                                          valGR2=SubStr(SГ01С1М1[ii], 01, 09);--      +".$$.$$.$$.$$$$";
                                                                          valGR3=SubStr(SГ01С1М1[ii], 01, 15);--            +".$$.$$$$";
                                                                          valGR4=SubStr(SГ01С1М1[ii], 01, 23);
                                                                        fi;
       fi;
       if СчетПервый:
         --1.302.00.000#000.0000.0000000.000
         --1.302.26.000#000.0000.0000000.000
         --1.302.26.730#000.0000.0000000.000
         --1.302.26.730#185.0000.0000000.000
         --1.302.26.730#185.0209.0000000.000
         --1.302.26.730#185.0209.0010800.000
         --1.302.26.730#185.0209.0010800.244
         vT="0";
         if НаборЭлементов=0: KEY1=vT+"#"+valСЧ5+"# #"; KEY2=vT+"#"+valСЧ8+"# #";  KEY3=vT+"#"+valСЧТ+"# #"; KEY4="";                           KEY5="";                           KEY6="";                           KEY7="";
         |  НаборЭлементов=1: KEY1=vT+"#"+valСЧ5+"# #"; KEY2=vT+"#"+valСЧ8+"# #";  KEY3=vT+"#"+valСЧТ+"# #"; KEY4=vT+"#"+valСЧТ+"#"+valGR1+"#"; KEY5="";                           KEY6="";                           KEY7="";
         |  НаборЭлементов=2: KEY1=vT+"#"+valСЧ5+"# #"; KEY2=vT+"#"+valСЧ8+"# #";  KEY3=vT+"#"+valСЧТ+"# #"; KEY4=vT+"#"+valСЧТ+"#"+valGR1+"#"; KEY5=vT+"#"+valСЧТ+"#"+valGR2+"#"; KEY6="";                           KEY7="";
         |  НаборЭлементов=3: KEY1=vT+"#"+valСЧ5+"# #"; KEY2=vT+"#"+valСЧ8+"# #";  KEY3=vT+"#"+valСЧТ+"# #"; KEY4=vT+"#"+valСЧТ+"#"+valGR1+"#"; KEY5=vT+"#"+valСЧТ+"#"+valGR2+"#"; KEY6=vT+"#"+valСЧТ+"#"+valGR3+"#"; KEY7="";
         |  НаборЭлементов=4: KEY1=vT+"#"+valСЧ5+"# #"; KEY2=vT+"#"+valСЧ8+"# #";  KEY3=vT+"#"+valСЧТ+"# #"; KEY4=vT+"#"+valСЧТ+"#"+valGR1+"#"; KEY5=vT+"#"+valСЧТ+"#"+valGR2+"#"; KEY6=vT+"#"+valСЧТ+"#"+valGR3+"#"; KEY7=vT+"#"+valСЧТ+"#"+valGR4+"#";
         fi;
       else
         --185.0000.0000000.000#0.000.00.000
         --185.0209.0000000.000#0.000.00.000
         --185.0209.0010800.000#0.000.00.000
         --185.0209.0010800.244#0.000.00.000
         --185.0209.0010800.244#1.302.00.000
         --185.0209.0010800.244#1.302.26.000
         --185.0209.0010800.244#1.302.26.730
         valКБК=if(НаборЭлементов=0, " ", valGR4);
         if НаборЭлементов=0: vT="0"; fi;
         if НаборЭлементов=0: KEY1="";                KEY2="";                  KEY3="";                  KEY4="";                  KEY5=vT+"#"+valКБК+"#"+valСЧ5+"#"; KEY6=vT+"#"+valКБК+"#"+valСЧ8+"#"; KEY7=vT+"#"+valКБК+"#"+valСЧТ+"#";
         |  НаборЭлементов=1: KEY1="0#"+valGR1+"# #"; KEY2="";                  KEY3="";                  KEY4="";                  KEY5=vT+"#"+valКБК+"#"+valСЧ5+"#"; KEY6=vT+"#"+valКБК+"#"+valСЧ8+"#"; KEY7=vT+"#"+valКБК+"#"+valСЧТ+"#";
         |  НаборЭлементов=2: KEY1="0#"+valGR1+"# #"; KEY2=vT+"#"+valGR2+"# #"; KEY3="";                  KEY4="";                  KEY5=vT+"#"+valКБК+"#"+valСЧ5+"#"; KEY6=vT+"#"+valКБК+"#"+valСЧ8+"#"; KEY7=vT+"#"+valКБК+"#"+valСЧТ+"#";
         |  НаборЭлементов=3: KEY1="0#"+valGR1+"# #"; KEY2=vT+"#"+valGR2+"# #"; KEY3=vT+"#"+valGR3+"# #"; KEY4="";                  KEY5=vT+"#"+valКБК+"#"+valСЧ5+"#"; KEY6=vT+"#"+valКБК+"#"+valСЧ8+"#"; KEY7=vT+"#"+valКБК+"#"+valСЧТ+"#";
         |  НаборЭлементов=4: KEY1="0#"+valGR1+"# #"; KEY2=vT+"#"+valGR2+"# #"; KEY3=vT+"#"+valGR3+"# #"; KEY4=vT+"#"+valGR4+"# #"; KEY5=vT+"#"+valКБК+"#"+valСЧ5+"#"; KEY6=vT+"#"+valКБК+"#"+valСЧ8+"#"; KEY7=vT+"#"+valКБК+"#"+valСЧТ+"#";
         fi;
       fi;
       lvl=0;
       for aa=1 to 7 do
         if aa=1: Value=Trim(KEY1);
         |  aa=2: Value=Trim(KEY2);
         |  aa=3: Value=Trim(KEY3);
         |  aa=4: Value=Trim(KEY4);
         |  aa=5: Value=Trim(KEY5);
         |  aa=6: Value=Trim(KEY6);
         |  aa=7: Value=Trim(KEY7);
         fi;
         if Value<>"":
           lvl=lvl+1;
           pp=SearchInArray(SORT_KEY, Value, True, 1);
           if pp>0:
             jj=pp;
             RГ02С0М0[jj]=RГ02С0М0[jj]+RГ02С1М1[ii];
             RГ03С0М0[jj]=RГ03С0М0[jj]+RГ03С1М1[ii];
             RГ04С0М0[jj]=RГ04С0М0[jj]+RГ04С1М1[ii];
             RГ05С0М0[jj]=RГ05С0М0[jj]+RГ05С1М1[ii];
             RГ06С0М0[jj]=RГ06С0М0[jj]+RГ06С1М1[ii];
             RГ07С0М0[jj]=RГ07С0М0[jj]+RГ07С1М1[ii];
           else
             jj=InsertInArraySort(SORT_KEY, Value);
             InsertInArray(RГ02С0М0, jj, RГ02С1М1[ii]);
             InsertInArray(RГ03С0М0, jj, RГ03С1М1[ii]);
             InsertInArray(RГ04С0М0, jj, RГ04С1М1[ii]);
             InsertInArray(RГ05С0М0, jj, RГ05С1М1[ii]);
             InsertInArray(RГ06С0М0, jj, RГ06С1М1[ii]);
             InsertInArray(RГ07С0М0, jj, RГ07С1М1[ii]);
             InsertInArray(KEYS_LVL, jj, lvl);
           fi;
         fi;
       od;
       if Нереальная:
         xx=xx+1;
         SГ01С1М2[xx]=SГ01С1М1[ii];
         RГ02С1М2[xx]=RГ07С1М1[ii];
         DГ03С1М2[xx]=DГ08С1М1[ii];
         DГ04С1М2[xx]=DГ09С1М1[ii];
         SГ05С1М2[xx]=SГ10С1М1[ii];
         SГ06С1М2[xx]=SГ11С1М1[ii];
         SГ07С1М2[xx]=SГ12С1М1[ii];
         SГ08С1М2[xx]=SГ13С1М1[ii];
         ДК_AnaМ2[xx]=ДК_AnaМ1[ii];
       fi;
     2od;
   Finally
     CloseProgress;
   end;
   М2=LengthOfArray(SГ01С1М2);
   М0=LengthOfArray(SORT_KEY);
   GUID_М0=GUID_М1;
 else
   Message("Нет данных для импорта.^MПредварительно выполните расчет таблицы", mtWarning);
   ВидимостьОтчетныхТаблиц_Work(True , False, False);
   currКнопка=1;
 fi;

end;

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

Func СтрокапоКодуСчета(Acc:String) :String;
 if Match(Acc, "?.???"):        ^("Итого по счету: "+Acc);
 |  Match(Acc, "?.???.??"):     ^("Итого по коду счета: "+Acc);
 |  Match(Acc, "?.???.??.???"): ^(RepStr(" ", 15)+Acc);
 else ^Acc;
 fi;
end;

Proc ИмпортТаблицы_Построение;
var OffsetCol, iiTable, len, hh, KOL, color :Integer;
var СтрокаОтчета, SpaceStr, tmp1, tmp2 :String;

 len=LengthOfArray(SORT_KEY);
 if len>0:
   ShowProgress(len+2, "Построение формы...");
   Try
     ProgressPos(1);
     ОчисткаТблФормы_Секция;
     ProgressPos(2);
     ClearVariable(Clr);
     Clr[1]=Цвет(255, 204, 153);
     Clr[2]=Цвет(255, 255, 153);
     Clr[3]=Цвет(204, 255, 204);
     Clr[4]=Цвет(153, 204, 255);
     Clr[5]=Цвет(204, 255, 255);
     Clr[6]=Цвет(255, 153, 204);
     Clr[7]=Цвет(204, 153, 255);
     Clr[8]=Цвет(230, 230, 230);

     OffsetCol=1;
     Ф03.RowsCount=len;

     for iiTable=1 to len do
       ProgressPos(iiTable+2);
       SpaceStr=RepStr(" ", (KEYS_LVL[iiTable]-1)*2);
       if НаверхСчет:
         tmp1=Trim(ExtractWord(2, SORT_KEY[iiTable], "#")); -- счет
         tmp2=Trim(ExtractWord(3, SORT_KEY[iiTable], "#")); -- КБК
         if tmp1<>"" and tmp2 ="": color=Clr[1]; СтрокаОтчета = SpaceStr+СтрокапоКодуСчета(tmp1);
         |  tmp1<>"" and tmp2<>"": color=Clr[2]; СтрокаОтчета = RepStr(" ", 10)+tmp2;
         fi;
       else
         if ЭлементКБК>0:
           tmp1=Trim(ExtractWord(2, SORT_KEY[iiTable], "#")); -- КБК
           tmp2=Trim(ExtractWord(3, SORT_KEY[iiTable], "#")); -- счет
           if tmp1<>"" and tmp2="":  color=Clr[1]; СтрокаОтчета = SpaceStr+СтрокапоКодуСчета(tmp1);
           |  tmp1<>"" and tmp2<>"": color=Clr[2]; СтрокаОтчета = RepStr(" ", 10)+СтрокапоКодуСчета(tmp2);
           fi;
         else
           tmp1=Trim(ExtractWord(2, SORT_KEY[iiTable], "#")); -- КБК
           tmp2=Trim(ExtractWord(3, SORT_KEY[iiTable], "#")); -- счет
           if tmp1 ="" and tmp2<>"": color=Clr[1]; СтрокаОтчета = SpaceStr+СтрокапоКодуСчета(tmp2);
           |  tmp1<>"" and tmp2<>"": color=Clr[2]; СтрокаОтчета = RepStr(" ", 10)+СтрокапоКодуСчета(tmp2);
           fi;
         fi;
       fi;
       color=if(ЭлементКБК=0, Clr[KEYS_LVL[iiTable]], color);
       hh=asInteger(Ф03.Row(iiTable, RowHeight, ""));
       if Round(hh/50, 0)>1: hh=50; fi;
       KOL=asInteger(Ф03.Cell(iiTable, OffsetCol+01, CellLinesCount, СтрокаОтчета));
       if KOL>1: Ф03.Row(iiTable, RowHeight, hh*KOL); else Ф03.Row(iiTable-1, RowHeight, hh); fi;

       Ф03.Cell(iiTable, OffsetCol+01, CellFontStyle , 0);
       Ф03.Cell(iiTable, OffsetCol+01, CellFontSize  , 9);
       Ф03.Cell(iiTable, OffsetCol+01, CellFontColor , coBlack);
       Ф03.Cell(iiTable, OffsetCol+01, CellBgColor   , color);
       Ф03.Cell(iiTable, OffsetCol+01, CellAlignment , 0);
       Ф03.Cell(iiTable, OffsetCol+01, CellBorder    , "2,1,1,1");
       Ф03.Cell(iiTable, OffsetCol+01, CellWrap      , True);
       Ф03.Cell(iiTable, OffsetCol+01, CellContents  , СтрокаОтчета);

       Ф03.Cell(iiTable, OffsetCol+02, CellFontStyle , 0);
       Ф03.Cell(iiTable, OffsetCol+02, CellFontSize  , 9);
       Ф03.Cell(iiTable, OffsetCol+02, CellFontColor , coBlack);
       Ф03.Cell(iiTable, OffsetCol+02, CellBgColor   , color);
       Ф03.Cell(iiTable, OffsetCol+02, CellAlignment , 1);
       Ф03.Cell(iiTable, OffsetCol+02, CellBorder    , "1,1,1,1");
       Ф03.Cell(iiTable, OffsetCol+02, CellWrap      , True);
       Ф03.Cell(iiTable, OffsetCol+02, CellContents  , if(Round(RГ02С0М0[iiTable], Точн)<>0.00, Trim(Format("%17.2N", RГ02С0М0[iiTable])), ""));

       Ф03.Cell(iiTable, OffsetCol+03, CellFontStyle , 0);
       Ф03.Cell(iiTable, OffsetCol+03, CellFontSize  , 9);
       Ф03.Cell(iiTable, OffsetCol+03, CellFontColor , coBlack);
       Ф03.Cell(iiTable, OffsetCol+03, CellBgColor   , color);
       Ф03.Cell(iiTable, OffsetCol+03, CellAlignment , 1);
       Ф03.Cell(iiTable, OffsetCol+03, CellBorder    , "1,1,1,1");
       Ф03.Cell(iiTable, OffsetCol+03, CellWrap      , True);
       Ф03.Cell(iiTable, OffsetCol+03, CellContents  , if(Round(RГ03С0М0[iiTable], Точн)<>0.00, Trim(Format("%17.2N", RГ03С0М0[iiTable])), ""));

       Ф03.Cell(iiTable, OffsetCol+04, CellFontStyle , 0);
       Ф03.Cell(iiTable, OffsetCol+04, CellFontSize  , 9);
       Ф03.Cell(iiTable, OffsetCol+04, CellFontColor , coBlack);
       Ф03.Cell(iiTable, OffsetCol+04, CellBgColor   , color);
       Ф03.Cell(iiTable, OffsetCol+04, CellAlignment , 1);
       Ф03.Cell(iiTable, OffsetCol+04, CellBorder    , "1,1,1,1");
       Ф03.Cell(iiTable, OffsetCol+04, CellWrap      , True);
       Ф03.Cell(iiTable, OffsetCol+04, CellContents  , if(Round(RГ04С0М0[iiTable], Точн)<>0.00, Trim(Format("%17.2N", RГ04С0М0[iiTable])), ""));

       Ф03.Cell(iiTable, OffsetCol+05, CellFontStyle , 0);
       Ф03.Cell(iiTable, OffsetCol+05, CellFontSize  , 9);
       Ф03.Cell(iiTable, OffsetCol+05, CellFontColor , coBlack);
       Ф03.Cell(iiTable, OffsetCol+05, CellBgColor   , color);
       Ф03.Cell(iiTable, OffsetCol+05, CellAlignment , 1);
       Ф03.Cell(iiTable, OffsetCol+05, CellBorder    , "1,1,2,1");
       Ф03.Cell(iiTable, OffsetCol+05, CellWrap      , True);
       Ф03.Cell(iiTable, OffsetCol+05, CellContents  , if(Round(RГ05С0М0[iiTable], Точн)<>0.00, Trim(Format("%17.2N", RГ05С0М0[iiTable])), ""));

       Ф03.Cell(iiTable, OffsetCol+06, CellFontStyle , 0);
       Ф03.Cell(iiTable, OffsetCol+06, CellFontSize  , 9);
       Ф03.Cell(iiTable, OffsetCol+06, CellFontColor , coBlack);
       Ф03.Cell(iiTable, OffsetCol+06, CellBgColor   , color);
       Ф03.Cell(iiTable, OffsetCol+06, CellAlignment , 1);
       Ф03.Cell(iiTable, OffsetCol+06, CellBorder    , "1,1,1,1");
       Ф03.Cell(iiTable, OffsetCol+06, CellWrap      , True);
       Ф03.Cell(iiTable, OffsetCol+06, CellContents  , if(Round(RГ06С0М0[iiTable], Точн)<>0.00, Trim(Format("%17.2N", RГ06С0М0[iiTable])), ""));

       Ф03.Cell(iiTable, OffsetCol+07, CellFontStyle , 0);
       Ф03.Cell(iiTable, OffsetCol+07, CellFontSize  , 9);
       Ф03.Cell(iiTable, OffsetCol+07, CellFontColor , coBlack);
       Ф03.Cell(iiTable, OffsetCol+07, CellBgColor   , color);
       Ф03.Cell(iiTable, OffsetCol+07, CellAlignment , 1);
       Ф03.Cell(iiTable, OffsetCol+07, CellBorder    , "1,1,1,1");
       Ф03.Cell(iiTable, OffsetCol+07, CellWrap      , True);
       Ф03.Cell(iiTable, OffsetCol+07, CellContents  , if(Round(RГ07С0М0[iiTable], Точн)<>0.00, Trim(Format("%17.2N", RГ07С0М0[iiTable])), ""));

     od;

     iiTable=1;
     Ф04.Cell(iiTable, OffsetCol+02, CellFontStyle , fsBold);
     Ф04.Cell(iiTable, OffsetCol+02, CellFontSize  , 9);
     Ф04.Cell(iiTable, OffsetCol+02, CellFontColor , coBlack);
     Ф04.Cell(iiTable, OffsetCol+02, CellBgColor   , coTransparent);
     Ф04.Cell(iiTable, OffsetCol+02, CellAlignment , 1);
     Ф04.Cell(iiTable, OffsetCol+02, CellBorder    , "1,2,1,1");
     Ф04.Cell(iiTable, OffsetCol+02, CellWrap      , True);
     Ф04.Cell(iiTable, OffsetCol+02, CellContents  , if(Round(RГ02С1, Точн)<>0.00, Trim(Format("%17.2N", RГ02С1)), ""));

     Ф04.Cell(iiTable, OffsetCol+03, CellFontStyle , fsBold);
     Ф04.Cell(iiTable, OffsetCol+03, CellFontSize  , 9);
     Ф04.Cell(iiTable, OffsetCol+03, CellFontColor , coBlack);
     Ф04.Cell(iiTable, OffsetCol+03, CellBgColor   , coTransparent);
     Ф04.Cell(iiTable, OffsetCol+03, CellAlignment , 1);
     Ф04.Cell(iiTable, OffsetCol+03, CellBorder    , "1,2,1,1");
     Ф04.Cell(iiTable, OffsetCol+03, CellWrap      , True);
     Ф04.Cell(iiTable, OffsetCol+03, CellContents  , if(Round(RГ03С1, Точн)<>0.00, Trim(Format("%17.2N", RГ03С1)), ""));

     Ф04.Cell(iiTable, OffsetCol+04, CellFontStyle , fsBold);
     Ф04.Cell(iiTable, OffsetCol+04, CellFontSize  , 9);
     Ф04.Cell(iiTable, OffsetCol+04, CellFontColor , coBlack);
     Ф04.Cell(iiTable, OffsetCol+04, CellBgColor   , coTransparent);
     Ф04.Cell(iiTable, OffsetCol+04, CellAlignment , 1);
     Ф04.Cell(iiTable, OffsetCol+04, CellBorder    , "1,2,1,1");
     Ф04.Cell(iiTable, OffsetCol+04, CellWrap      , True);
     Ф04.Cell(iiTable, OffsetCol+04, CellContents  , if(Round(RГ04С1, Точн)<>0.00, Trim(Format("%17.2N", RГ04С1)), ""));

     Ф04.Cell(iiTable, OffsetCol+05, CellFontStyle , fsBold);
     Ф04.Cell(iiTable, OffsetCol+05, CellFontSize  , 9);
     Ф04.Cell(iiTable, OffsetCol+05, CellFontColor , coBlack);
     Ф04.Cell(iiTable, OffsetCol+05, CellBgColor   , coTransparent);
     Ф04.Cell(iiTable, OffsetCol+05, CellAlignment , 1);
     Ф04.Cell(iiTable, OffsetCol+05, CellBorder    , "1,2,1,1");
     Ф04.Cell(iiTable, OffsetCol+05, CellWrap      , True);
     Ф04.Cell(iiTable, OffsetCol+05, CellContents  , if(Round(RГ05С1, Точн)<>0.00, Trim(Format("%17.2N", RГ05С1)), ""));

     Ф04.Cell(iiTable, OffsetCol+06, CellFontStyle , fsBold);
     Ф04.Cell(iiTable, OffsetCol+06, CellFontSize  , 9);
     Ф04.Cell(iiTable, OffsetCol+06, CellFontColor , coBlack);
     Ф04.Cell(iiTable, OffsetCol+06, CellBgColor   , coTransparent);
     Ф04.Cell(iiTable, OffsetCol+06, CellAlignment , 1);
     Ф04.Cell(iiTable, OffsetCol+06, CellBorder    , "1,2,1,1");
     Ф04.Cell(iiTable, OffsetCol+06, CellWrap      , True);
     Ф04.Cell(iiTable, OffsetCol+06, CellContents  , if(Round(RГ06С1, Точн)<>0.00, Trim(Format("%17.2N", RГ06С1)), ""));

     Ф04.Cell(iiTable, OffsetCol+07, CellFontStyle , fsBold);
     Ф04.Cell(iiTable, OffsetCol+07, CellFontSize  , 9);
     Ф04.Cell(iiTable, OffsetCol+07, CellFontColor , coBlack);
     Ф04.Cell(iiTable, OffsetCol+07, CellBgColor   , coTransparent);
     Ф04.Cell(iiTable, OffsetCol+07, CellAlignment , 1);
     Ф04.Cell(iiTable, OffsetCol+07, CellBorder    , "1,2,1,1");
     Ф04.Cell(iiTable, OffsetCol+07, CellWrap      , True);
     Ф04.Cell(iiTable, OffsetCol+07, CellContents  , if(Round(RГ07С1, Точн)<>0.00, Trim(Format("%17.2N", RГ07С1)), ""));
   Finally
     CloseProgress;
   end;
 fi;

end;

Proc ИмпортТаблицы_Выполнить;
 ИмпортТаблицы_Данные(НаверхСчет, ЭлементКБК);
 ИмпортТаблицы_Построение;
 НеПустаяТаблица;
end;

Func ПерестроениеИмпорта :Logical;
 if EnqOkCancel("Параметры отчета субитогов изменились.^MНеобходимо очитстить отчетную форму^MВыполнить?")=cmOk:
   ОчисткаТблФормы;
   НеПустаяТаблица;
   ^True;
 fi;
 ^False;
end;

Proc Расчет_ТБЛ_ТблРсчта;
 Перерасчет(False);
end;

Proc Расчет_ТБЛ_ТблФормы;
 if EnqOkCancel("Выполнить импорт данных таблицы расчета?", mtWarning)=cmOK: ИмпортТаблицы_Выполнить; fi;
end;

Proc Печать_ТБЛ_ТблРсчта;
 if EnqOkCancel("Напечатать расчетную таблицу?", mtWarning)=cmOK:
   РАБ.НАСТР_ПЕЧАТЬ.Prn("", "", "ТББ.ОТЧЕТЫ.БАЛАНС.191Н.0503169.А75.cfg", "", 1);
 fi;
end;

Proc Печать_ТБЛ_ТблФормы;
 if EnqOkCancel("Напечатать отчетную форму?", mtWarning)=cmOK:
   РАБ.НАСТР_ПЕЧАТЬ.Prn("", "", "ТББ.ОТЧЕТЫ.БАЛАНС.191Н.0503169.А00.cfg", "", 1);
 fi;
end;

Proc ОчисткаТБЛ_ТблРсчта;
 if EnqOkCancel("Все данные будут очищены.^MВы уверены?")=cmOk: ОчисткаТблРсчта; НеПустаяТаблица; fi;
end;

Proc ОчисткаТБЛ_ТблФормы;
 if EnqOkCancel("Все данные будут очищены.^MВы уверены?")=cmOk: ОчисткаТблФормы; НеПустаяТаблица; fi;
end;

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

Proc ЗаписатьЯчейку_ФмтДат(objSheet:AutoObject; X:Integer; Y:Integer; flgRusExcel:Logical; tbDate:Date);
-- * ЗАПИСАТЬ ДАТУ В ОБЫЧНОМ ФОРМАТЕ - ДД ММ ГГГГ *
-- objSheet      - ссылка на лист
-- X, Y          - координаты ячейки листа objSheet
-- tbDate        - дата
var xlsRange :AutoObject;
--ММ.ГГГГ;@
--mm/yyyy;@
 xlsRange=AsAutoObject(objSheet.Cells[X,Y]);
 Try
   if flgRusExcel:
     xlsRange.NumberFormatLocal = 'ММ.ГГГГ';
   else
     xlsRange.NumberFormat      = 'MM/YYYY';
   fi;
   if tbDate>1.1.1900: xlsRange.Value2 = tbDate; fi;
 Finally
   ClearVariable(xlsRange);
 end;
end;


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

 len=LengthOfArray(SГ01С1М1);
 if len>0 and (Abs(RГ02С1)+Abs(RГ05С1))>0.00: ExportWork=True; else ExportWork=False; fi;
 if not ExportWork: Message("Нет данных для выгрузки.^MПредварительно выполните расчет таблицы.", mtWarning); Template.Field="кнпР01"; Exit; fi;

 NoError=True;
 kol=0;
 if ChooseFolder(xlNameFolder, "Выберите папку для сохранения файла экспорта...")=cmOK:
   начало=Time;
   xlNameFile=xlNameFolder+"ER_"+HeadTxt_codFrm+"_"+Format("%.4d", Year(ToDay))+Format("%.2d", Mon(ToDay))+Format("%.2d", Day(ToDay))+"_"+TimeToHMSstring_adv(Time, "")+".xls";
   if ExistFile(xlNameFile): DeleteFile(xlNameFile); fi;
   if ExistFile(xlNameFile+"x"): DeleteFile(xlNameFile+"x"); fi; -- для версий Офиса 2007 или старше
   --
   if NoError:
     xlsApp=CreateAutoObject('Excel.Application');
     Try
       ExcelVersion=asString(xlsApp.Version);
       if Int(ExcelVersion)>=12 or ExcelVersion="12.0": xlNameFile=xlNameFile+"x"; fi;
       ShowProgress(0, "Подготовка...");
       Try
         xlsApp.EnableEvents=False;   -- отключить события
         xlsApp.AutomationSecurity=3; -- отключить макросы
         --
         rusExcel=РАБ.EXCEL.РусскийExcel(xlsApp);
         localDS=asString(xlsApp.International[РАБ.EXCEL.xlDecimalSeparator]);
         localTS=asString(xlsApp.International[РАБ.EXCEL.xlThousandsSeparator]);
         maxIterCount=300;
         --
         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:
                   Try
                     Try xlsSheet=AsAutoObject(xlsSheets.Add); Finally ClearVariable(xlsSheet); end;
                   Except
                     ClearVariable(xlsSheet);
                     Raise;
                   end;
                 fi;
                 kol=kol+1;
                 xlsSheet=AsAutoObject(xlsBook.Worksheets[kol]);
                 Try
                   xlsSheet.Name = HeadTxt_codFrm;
                   ShowProgress(15, "Формируем титул...");
                   xx=0;
                   offsetRow=0;
                   --

                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 01, 26.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 02, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 03, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 04, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 05, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 06, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 07, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 08, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 09, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 10, 10.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 11, 26.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 12, 10.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 13, 26.0);

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 12, "Код формы по ОКУД");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);

                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 13, 2HeadTxt_codFrm0);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 13, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазона(xlsSheet, offsetRow, 13, offsetRow, 13, True, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+2;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, 2HeadTxt_NamFrm0);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 1, offsetRow, 13);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 12, 0, True,  True, False, 0, True);

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+2;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, "Вид деятельности");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 2, НаимВД);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 13);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 2, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 10, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 13, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, "Вид задолженности");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 2, ВидЗадолжн);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 13);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 2, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 10, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 13, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+2;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, if(Казенное, "Номер (код) счета"+Chr(10)+"бюджетного учета", "Номер счета"+Chr(10)+"бухгалтерского учета"));
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 1, offsetRow+3, 1);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);

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

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

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

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

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

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

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

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

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

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

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

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

                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "ИНН");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 10, offsetRow+1, 10);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "наименование");
                   РАБ.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);

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 3, "долгосрочная");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 3, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);

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

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

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow,  1,  "1");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow,  1, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow,  2,  "2");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow,  2, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow,  3,  "3");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow,  3, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow,  4,  "4");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow,  4, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow,  5,  "5");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow,  5, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow,  6,  "6");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow,  6, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow,  7,  "7");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow,  7, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow,  8,  "8");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow,  8, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow,  9,  "9");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow,  9, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, "10");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, "11");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 12, "12");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 13, "13");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 13, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 1, offsetRow, 13, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-4, 1, offsetRow, 13, True, True, True, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.АвтоВыравниваниеСтрок(xlsSheet, 1, offsetRow);
                   xx=xx+1; ProgressPos(xx);

                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Finally
                 ClearVariable(xlsSheets);
               end;
             Except
               NoError=False;
               xlsBook.Close(False); -- закрыть книгу без сохранения
             end;
           Finally
             xlsBook.Close(True, xlNameFile);
             ClearVariable(xlsBook); -- освободить объект книги
           end;
         Finally
           ClearVariable(xlsBooks); -- освободить объект книг
         end;
       Finally
         ClearVariable(xlsApp); -- освободить объект Excel
         CloseProgress;
       end;
     Except
       NoError=False;
       ClearVariable(xlsRng);
       ClearVariable(xlsSheet);
       ClearVariable(xlsSheets);
       ClearVariable(xlsBook);
       ClearVariable(xlsBooks);
       ClearVariable(xlsApp);
     end;
   fi; --NoError

   -- таблица
   if NoError:
     len=М1;
     if len>0:
       ShowProgress(len, "Формируем таблицу...");
       Try
         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[HeadTxt_codFrm]);
                       Try

                         for ii=IterSave to len do
                           ProgressPos(ii);
                           offsetRow=offsetRow+1;
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, SГ01С1М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           if RГ02С1М1[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 02,  RГ02С1М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           if RГ03С1М1[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 03,  RГ03С1М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           if RГ04С1М1[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 04,  RГ04С1М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           if RГ05С1М1[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 05,  RГ05С1М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           if RГ06С1М1[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06,  RГ06С1М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           if RГ07С1М1[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07,  RГ07С1М1[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           2ЗаписатьЯчейку_ФмтДат0(xlsSheet, offsetRow, 08, rusExcel, DГ08С1М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                           2ЗаписатьЯчейку_ФмтДат0(xlsSheet, offsetRow, 09, rusExcel, DГ09С1М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 09, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 10, SГ10С1М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 10, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 11, SГ11С1М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 11, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 12, SГ12С1М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 12, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 13, SГ13С1М1[ii]);
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 13, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                           --
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow, 13, 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;
                         if ii>=len:
                           offsetRow=offsetRow+1;
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "ВСЕГО:");
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight, 1,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, True, False, 0, True);
                           if RГ02С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 02,  RГ02С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, True, False, 0, True);
                           if RГ03С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 03,  RГ03С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, True, False, 0, True);
                           if RГ04С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 04,  RГ04С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, True, False, 0, True);
                           if RГ05С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 05,  RГ05С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, True, False, 0, True);
                           if RГ06С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06,  RГ06С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, True, False, 0, True);
                           if RГ07С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07,  RГ07С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, True, False, 0, True);
                           --
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 7, True,   True,  True,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                         fi;

                         NoError=True;
                       Finally
                         ClearVariable(xlsSheet);
                       end;
                     Except
                       NoError=False;
                       ExportWork=False;
                       xlsBook.Close(False); -- закрыть книгу без сохранения
                     end;
                   Finally
                     xlsBook.Save;
                     xlsBook.Close(False); -- закрыть книгу без сохранения
                     ClearVariable(xlsBook); -- освободить объект книги
                   end;
                 Finally
                   ClearVariable(xlsBooks); -- освободить объект книг
                 end;
               Finally
                 ClearVariable(xlsApp); -- освободить объект Excel
               end;
             Except
               NoError=False;
               ExportWork=False;
               ClearVariable(xlsRng);
               ClearVariable(xlsSheet);
               ClearVariable(xlsSheets);
               ClearVariable(xlsBook);
               ClearVariable(xlsBooks);
               ClearVariable(xlsApp);
             end;
             if ii>=len: ExportWork=False; fi;
           else
             ExportWork=False;
           fi;
         end; -- while
       Finally
        CloseProgress;
       end;
     fi; -- len>0:
   fi; --NoError
   -- Заключительный этап
   if NoError:
     len=EnqOkCancel("Экспорт завершен!^MВремя работы - "+TimeToHMSstring_adv(Time-начало, ":")+Chr(13)+"Открыть файл экспорта?", mtInformation);
     if len=cmOK:
       xlsApp=CreateAutoObject('Excel.Application');
       Try
         Try
           xlsApp.EnableEvents=False;   -- отключить события
           xlsApp.AutomationSecurity=3; -- отключить макросы
           xlsBooks=AsAutoObject(xlsApp.Workbooks); -- получить объект Workbooks
           Try
             xlsBook=AsAutoObject(xlsBooks.Open(xlNameFile));
             Try
               xlsApp.Visible=True;  -- сделать видимым Excel
             Finally
               ClearVariable(xlsBook); -- освободить объект книги
             end;
           Finally
             ClearVariable(xlsBooks); -- освободить объект книг
           end;
         Finally
           ClearVariable(xlsApp);
         end;
       Except
         ClearVariable(xlsApp);
       end;
     fi;
   fi;
 fi; -- ChooseFolder

end;

Func ЕстьДанныеДляВыгрузкиФормы :Logical;
var num :Integer;
 num=asInteger(Ф03.RowsCount);
 if num>1: ^True;
 |  num=1: if Trim(asString(Ф03.Cell(1, 2, CellContents, "")))<>"": ^True; fi;
 fi;
 ^False;
end;

Func GetLevel(Value:String) :Integer;
var num :Integer;
 num=Length(Value)-Length(TrimLeft(Value));
 if num>0:
   if num>00 and num<03: ^1;
   |  num>02 and num<05: ^2;
   |  num>04 and num<07: ^3;
   |  num>06 and num<09: ^4;
   |  num>08 and num<11: ^5;
   |  num>10 and num<13: ^6;
   |  num>14: ^7;
   else ^8;
   fi;
 fi;
 ^0;
end;

Proc ЭкспортXLS_ТблФормы;
var xlsApp, xlsBooks, xlsBook, xlsSheets, xlsSheet, xlsRng :AutoObject;
var начало, kol, max_kol, offsetRow, len, ii, CellColor, xx, maxIterCount, IterCount, IterSave, lvl :Integer;
var localTS, localDS, xlNameFile, xlNameFolder, ExcelVersion, Value :String;
var NoError, rusExcel, ExportWork :Logical;

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

 NoError=True;
 kol=0;
 if ChooseFolder(xlNameFolder, "Выберите папку для сохранения файла экспорта...")=cmOK:
   начало=Time;
   xlNameFile=xlNameFolder+"EF_"+HeadTxt_codFrm+"_"+Format("%.4d", Year(ToDay))+Format("%.2d", Mon(ToDay))+Format("%.2d", Day(ToDay))+"_"+TimeToHMSstring_adv(Time, "")+".xls";
   if ExistFile(xlNameFile): DeleteFile(xlNameFile); fi;
   if ExistFile(xlNameFile+"x"): DeleteFile(xlNameFile+"x"); fi; -- для версий Офиса 2007 или старше
   --
   if NoError:
     xlsApp=CreateAutoObject('Excel.Application');
     Try
       ExcelVersion=asString(xlsApp.Version);
       if Int(ExcelVersion)>=12 or ExcelVersion="12.0": xlNameFile=xlNameFile+"x"; fi;
       ShowProgress(0, "Подготовка...");
       Try
         xlsApp.EnableEvents=False;   -- отключить события
         xlsApp.AutomationSecurity=3; -- отключить макросы
         --
         rusExcel=РАБ.EXCEL.РусскийExcel(xlsApp);
         localDS=asString(xlsApp.International[РАБ.EXCEL.xlDecimalSeparator]);
         localTS=asString(xlsApp.International[РАБ.EXCEL.xlThousandsSeparator]);
         maxIterCount=300;
         --
         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<3:
                   len=3-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 = HeadTxt_codFrm+"_0";
                   ShowProgress(09, "Формируем титульную страницу...");
                   xx=0;
                   offsetRow=0;
                   --

                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 1, 22.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 2, 50.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 3, 18.0);

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 2, "Код формы по ОКУД");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 2, РАБ.EXCEL.xlRight,  1, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);

                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 3, 2HeadTxt_CodFrm0);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 3, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 10, 0, True, False, False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазона(xlsSheet, offsetRow, 3, offsetRow, 3, True, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+2;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, "Вид деятельности");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 2, НаимВД);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 3);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 2, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 10, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 3, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, "Вид задолженности");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 2, ВидЗадолжн);
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 2, offsetRow, 3);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 2, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 10, 0, True,  True, False, 0, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow, 3, False, False, False, True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

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

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

                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Finally
                 ClearVariable(xlsSheets);
               end;
             Except
               NoError=False;
               xlsBook.Close(False); -- закрыть книгу без сохранения
             end;
           Finally
             xlsBook.Close(True, xlNameFile);
             ClearVariable(xlsBook); -- освободить объект книги
           end;
         Finally
           ClearVariable(xlsBooks); -- освободить объект книг
         end;
       Finally
         ClearVariable(xlsApp); -- освободить объект Excel
         CloseProgress;
       end;
     Except
       NoError=False;
       ClearVariable(xlsRng);
       ClearVariable(xlsSheet);
       ClearVariable(xlsSheets);
       ClearVariable(xlsBook);
       ClearVariable(xlsBooks);
       ClearVariable(xlsApp);
     end;
   fi; --NoError
   -- 1-ая таблица (заголовки)
   if NoError:
     xlsApp=CreateAutoObject('Excel.Application');
     Try
       Try
         xlsApp.EnableEvents=False;   -- отключить события
         xlsApp.AutomationSecurity=3; -- отключить макросы
         xlsBooks=AsAutoObject(xlsApp.Workbooks); -- получить объект Workbooks
         Try
           xlsBook=AsAutoObject(xlsBooks.Open(xlNameFile));
           Try
             Try
               xlsSheets=AsAutoObject(xlsBook.Sheets);
               Try
                 kol=kol+1;
                 xlsSheet=AsAutoObject(xlsBook.Worksheets[kol]);
                 Try
                   xlsSheet.Name = HeadTxt_codFrm+"_1";
                   ShowProgress(11, "Формируем таблицу 1...");
                   xx=0;
                   offsetRow=0;
                   --

                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 1, 45.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 2, 14.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 3, 14.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 4, 14.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 5, 14.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 6, 14.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 7, 14.0);

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, "1. Сведения о дебиторской (кредиторской) задолженности");
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 1, offsetRow, 5);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlLeft,   0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 10, 0, True,  True, False, 0, True);

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, if(Казенное, "Номер (код) счета"+Chr(10)+"бюджетного учета", "Номер счета"+Chr(10)+"бухгалтерского учета"));
                   РАБ.EXCEL.ОбъединитьЯчейкиДиапазона(xlsSheet, offsetRow, 1, offsetRow+3, 1);
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);

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

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

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

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

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

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

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 3, "долгосрочная");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 3, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);

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

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

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, "1");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 2, "2");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 2, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 3, "3");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 3, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 4, "4");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 4, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 5, "5");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 5, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 6, "6");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 6, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 7, "7");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 7, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 1, offsetRow, 7, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-4, 1, offsetRow, 7, False, True, False, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);

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

                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.АвтоВыравниваниеСтрок(xlsSheet, 1, offsetRow);

                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Finally
                 ClearVariable(xlsSheets);
               end;
             Except
               NoError=False;
               xlsBook.Close(False); -- закрыть книгу без сохранения
             end;
           Finally
             xlsBook.Save;           -- принудительно сохраняем и...
             xlsBook.Close(False);   -- ... закрываем книгу без сохранения
             ClearVariable(xlsBook); -- освободить объект книги
           end;
         Finally
           ClearVariable(xlsBooks); -- освободить объект книг
         end;
       Finally
         ClearVariable(xlsApp); -- освободить объект Excel
         CloseProgress;
       end;
     Except
       NoError=False;
       ClearVariable(xlsRng);
       ClearVariable(xlsSheet);
       ClearVariable(xlsSheets);
       ClearVariable(xlsBook);
       ClearVariable(xlsBooks);
       ClearVariable(xlsApp);
     end;
   fi; --NoError
   -- 1-ая таблица (данные)
   if NoError:
     len=asInteger(Ф03.RowsCount);
     if len>0:
       ShowProgress(len+1, "Формируем таблицу 1 (данные)...");
       Try
         IterCount=0;
         IterSave=1;
         ExportWork=True;
         offsetRow=6; -- строки заголовков
         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[HeadTxt_codFrm+"_1"]);
                       Try
                         for ii=IterSave to len do
                           ProgressPos(ii);
                           offsetRow=offsetRow+1;
                           Value=asString(Ф03.Cell(ii, 2, CellContents, ""));
                           lvl=GetLevel(Value);
                           CellColor=asInteger(Ф03.Cell(ii, 2, CellBgColor, ""));
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, Trim(Value));
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft, lvl,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, CellColor, False);
                           if RГ02С0М0[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 02,  RГ02С0М0[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, CellColor, False);
                           if RГ03С0М0[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 03,  RГ03С0М0[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, CellColor, False);
                           if RГ04С0М0[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 04,  RГ04С0М0[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, CellColor, False);
                           if RГ05С0М0[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 05,  RГ05С0М0[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, CellColor, False);
                           if RГ06С0М0[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06,  RГ06С0М0[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, CellColor, False);
                           if RГ07С0М0[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07,  RГ07С0М0[ii], localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, CellColor, False);
                           --
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow, 7, True,   True,  True,   True,  True,   True,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow, 7, True,  False,  True,  False, False,  False,  False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                           --
                           IterCount=IterCount+1;
                           if IterCount>=maxIterCount: IterSave=IterSave+IterCount; IterCount=0; Break; fi;
                         od;
                         if ii>=len:
                           offsetRow=offsetRow+1;
                           РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, "ВСЕГО:");
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlRight, 01,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                           if RГ02С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 02,  RГ02С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                           if RГ03С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 03,  RГ03С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                           if RГ04С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 04,  RГ04С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                           if RГ05С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 05,  RГ05С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                           if RГ06С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 06,  RГ06С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                           if RГ07С1<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 07,  RГ07С1, localDS, localTS); fi;
                           РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlRight, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                           --
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 1, offsetRow-1, 7, True,   True,  True,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,         7, 1, offsetRow-1, 7, False,  True, False,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow  , 7, True,   True,  True,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                           РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, offsetRow, 2, offsetRow  , 7, True,   True,  True,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                         fi;

                         if offsetRow>6: РАБ.EXCEL.АвтоВыравниваниеСтрок(xlsSheet, 7, offsetRow); fi;

                         NoError=True;
                       Finally
                         ClearVariable(xlsSheet);
                       end;
                     Except
                       NoError=False;
                       ExportWork=False;
                       xlsBook.Close(False); -- закрыть книгу без сохранения
                     end;
                   Finally
                     xlsBook.Save;
                     xlsBook.Close(False); -- закрыть книгу без сохранения
                     ClearVariable(xlsBook); -- освободить объект книги
                   end;
                 Finally
                   ClearVariable(xlsBooks); -- освободить объект книг
                 end;
               Finally
                 ClearVariable(xlsApp); -- освободить объект Excel
               end;
             Except
               NoError=False;
               ExportWork=False;
               ClearVariable(xlsRng);
               ClearVariable(xlsSheet);
               ClearVariable(xlsSheets);
               ClearVariable(xlsBook);
               ClearVariable(xlsBooks);
               ClearVariable(xlsApp);
             end;
             if ii>=len: ExportWork=False; fi;
           else
             ExportWork=False;
           fi;
         end; -- while
       Finally
        CloseProgress;
       end;
     fi; -- len>0:
   fi; --NoError
   -- 2-ая таблица
   if NoError:
     xlsApp=CreateAutoObject('Excel.Application');
     Try
       Try
         xlsApp.EnableEvents=False;   -- отключить события
         xlsApp.AutomationSecurity=3; -- отключить макросы
         xlsBooks=AsAutoObject(xlsApp.Workbooks); -- получить объект Workbooks
         Try
           xlsBook=AsAutoObject(xlsBooks.Open(xlNameFile));
           Try
             Try
               xlsSheets=AsAutoObject(xlsBook.Sheets);
               Try
                 kol=kol+1;
                 xlsSheet=AsAutoObject(xlsBook.Worksheets[kol]);
                 Try
                   xlsSheet.Name = HeadTxt_codFrm+"_2";
                   ShowProgress(11+М2, "Формируем таблицу 2...");
                   xx=0;
                   offsetRow=0;
                   --

                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 1, 28.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 2, 14.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 3, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 4, 12.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 5, 10.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 6, 23.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 7, 10.0);
                   РАБ.EXCEL.УстановитьШиринуСтолбцаСимвол(xlsSheet, 8, 23.0);

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

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

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

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

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

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 3, "возникновения");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 3, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 4, "исполнения по правовому основанию");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 4, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

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

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

                   xx=xx+1; ProgressPos(xx);
                   offsetRow=offsetRow+1;
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 1, "1");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 1, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 2, "2");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 2, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 3, "3");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 3, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 4, "4");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 4, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 5, "5");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 5, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 6, "6");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 6, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 7, "7");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 7, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                   РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 8, "8");
                   РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 8, РАБ.EXCEL.xlCenter, 0, РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);

                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.НадстрочноеНачертаниеДиапазона(xlsSheet, offsetRow, 1, offsetRow, 8, True);
                   РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet,  offsetRow-2, 1, offsetRow, 8, False, True, False, True, True, True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                   xx=xx+1; ProgressPos(xx);
                   РАБ.EXCEL.PrintSetup_ЧБ_Поля10(xlsApp, xlsSheet, False, 0, 0, 0, 0, True, False, True, 99);
                   xx=xx+1; ProgressPos(xx);

                   len=М2;
                   if len>0:
                     for ii=1 to len do
                       ProgressPos(8+ii);
                       offsetRow=offsetRow+1;
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 01, SГ01С1М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       if RГ02С1М2[ii]<>0.00:  РАБ.EXCEL.ЗаписатьЯчейкуЧисло(xlsSheet, offsetRow, 02,  RГ02С1М2[ii], localDS, localTS); fi;
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);

                       2ЗаписатьЯчейку_ФмтДат0(xlsSheet, offsetRow, 03, rusExcel, DГ03С1М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                       2ЗаписатьЯчейку_ФмтДат0(xlsSheet, offsetRow, 04, rusExcel, DГ04С1М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);

                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 05, SГ05С1М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 06, SГ06С1М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 07, SГ07С1М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                       РАБ.EXCEL.ЗаписатьЯчейкуТекст(xlsSheet, offsetRow, 08, SГ08С1М2[ii]);
                       РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 08, 0, True, False, False, 0, True);
                     od;
                   else
                     -- если таблица пустая то пишем 1 строчку
                     len=1;
                     offsetRow=offsetRow+1;
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 01, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 02, РАБ.EXCEL.xlRight,  0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 03, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 04, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 05, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 06, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 07, РАБ.EXCEL.xlCenter, 0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                     РАБ.EXCEL.ФорматироватьЯчейку(xlsSheet, offsetRow, 08, РАБ.EXCEL.xlLeft,   0,  РАБ.EXCEL.xlCenter, True, "Arial Cur", 09, 0, True, False, False, 0, True);
                   fi;

                   xx=xx+1; ProgressPos(xx);
                   if offsetRow>4:
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, 5, 1, offsetRow, 8, True,   True,  True,  True,  True,  True, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlThin);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, 5, 1, offsetRow, 5, True,   True,  True,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                     РАБ.EXCEL.УстановитьВсеГраницыДиапазонаИвнутри(xlsSheet, 5, 7, offsetRow, 7, True,   True,  True,  True, False, False, False, False, РАБ.EXCEL.xlContinuous, РАБ.EXCEL.xlMedium);
                   fi;

                   xx=xx+1; ProgressPos(xx);
                   if offsetRow>0: РАБ.EXCEL.АвтоВыравниваниеСтрок(xlsSheet, 1, offsetRow); fi;
                   xx=xx+1; ProgressPos(xx);

                   --
                   NoError=True;
                 Finally
                   ClearVariable(xlsSheet);
                 end;
               Finally
                 ClearVariable(xlsSheets);
               end;
             Except
               NoError=False;
               xlsBook.Close(False); -- закрыть книгу без сохранения
             end;
           Finally
             xlsBook.Save;           -- принудительно сохраняем и...
             xlsBook.Close(False);   -- ... закрываем книгу без сохранения
             ClearVariable(xlsBook); -- освободить объект книги
           end;
         Finally
           ClearVariable(xlsBooks); -- освободить объект книг
         end;
       Finally
         ClearVariable(xlsApp); -- освободить объект Excel
         CloseProgress;
       end;
     Except
       NoError=False;
       ClearVariable(xlsRng);
       ClearVariable(xlsSheet);
       ClearVariable(xlsSheets);
       ClearVariable(xlsBook);
       ClearVariable(xlsBooks);
       ClearVariable(xlsApp);
     end;
   fi; --NoError
   -- Заключительный этап
   if NoError:
     len=EnqOkCancel("Экспорт завершен!^MВремя работы - "+TimeToHMSstring_adv(Time-начало, ":")+Chr(13)+"Открыть файл экспорта?", mtInformation);
     if len=cmOK:
       xlsApp=CreateAutoObject('Excel.Application');
       Try
         Try
           xlsApp.EnableEvents=False;   -- отключить события
           xlsApp.AutomationSecurity=3; -- отключить макросы
           xlsBooks=AsAutoObject(xlsApp.Workbooks); -- получить объект Workbooks
           Try
             xlsBook=AsAutoObject(xlsBooks.Open(xlNameFile));
             Try
               xlsApp.Visible=True;  -- сделать видимым Excel
             Finally
               ClearVariable(xlsBook); -- освободить объект книги
             end;
           Finally
             ClearVariable(xlsBooks); -- освободить объект книг
           end;
         Finally
           ClearVariable(xlsApp);
         end;
       Except
         ClearVariable(xlsApp);
       end;
     fi;
   fi;
 fi; -- ChooseFolder

end;

Proc ПараметрыОтчета(FieldName:String);
var Flag :Logical;
 if FieldName="НАИМВД": FieldName="ВД"; fi;
 Flag=РАБ.ПАРАМ_ОТЧ.Взять(FieldName, 1);
 ОтчGUID=ОтчGUID;
 if Flag or not ОтчGUID=РАБ.ПАРАМ_ОТЧ.ОтчGUID: Перерасчет(True); ПрисвоитьТочность; fi;
end;

Func Субитоги_ЭлементКБК_Выбрать(PrevValue:Integer) :Integer;
var num, NewValue :Integer;
 ClearVariable(Buf);
 Buf[1]="ТОЛЬКО Счет";
 Buf[2]="Счет + Глава";
 Buf[3]="Счет + Глава + Подраздел";
 Buf[4]="Счет + Глава + Подраздел + Целевая статья";
 Buf[5]="Счет + Глава + Подраздел + Целевая статья + Вид расходов";
 num=Alternate("Выберите настройку...", Buf, -1, PrevValue+1, 12);
 if num>0: NewValue=num-1; fi;
 if NewValue<>PrevValue: if ПерестроениеИмпорта: ^NewValue; fi; fi;
 ^PrevValue;
end;

Proc Раздел2_сНовойСтраницы(даНовСтр:Logical);
 Ф04.Row(3, RowNewPage, даНовСтр); -- проверять координаты !!!
end;

Func ВидНаименования_ДебитораКредитора_Выбрать(PrevValue:Integer) :Integer;
var num, NewValue :Integer;
 ClearVariable(Buf);
 Buf[1]="Наименование";
 Buf[2]="[Код] - Наименование";
 Buf[3]="Наименование - [Код]";
 Buf[4]="Код";
 num=Alternate("Выберите настройку...", Buf, -1, PrevValue+1, 12);
 if num>0: NewValue=num-1; fi;
 if NewValue<>PrevValue: ^NewValue; else ^PrevValue; fi;
end;

Proc ВидНаименования_ДебитораКредитора_Применить(Mode:Integer);
var len, ii :Integer;
 ShowProgress((М1+М2), "Применение настроек...");
 Try
   len=М1; if len>0: for ii=1 to len do ProgressPos(ii);    SГ11С1М1[ii]=ДебиторКредитор_ПрименитьНаименование(ДК_AnaМ1[ii], Mode); od; fi;
   len=М2; if len>0: for ii=1 to len do ProgressPos(ii+М1); SГ06С1М2[ii]=ДебиторКредитор_ПрименитьНаименование(ДК_AnaМ2[ii], Mode); od; fi;
 Finally
   CloseProgress;
 end;
end;

Proc ВидНаименования_ДебитораКредитора;
var NewVal, OldVal :Integer;
 OldVal=ВидИмяКонт;
 NewVal=ВидНаименования_ДебитораКредитора_Выбрать(OldVal);
 if NewVal<>OldVal: ВидИмяКонт=NewVal; ВидНаименования_ДебитораКредитора_Применить(NewVal); fi;
end;

Func ПривестиСчет_ПравильныйВИД(srcAcc:String; grpAcc:Integer) :String;
var RES, IST, AC1, AC2, ZeroStr, KlasStr :String;
 RES="";
 ZeroStr="00000000000000000";
 if Match(srcAcc, "???.????.???????.???.?.???.??.???")    : IST=SubStr(srcAcc, 22, 1); AC1=SubStr(srcAcc, 24, 3); AC2=SubStr(srcAcc, 28, 2); KlasStr="000"+SubStr(srcAcc, 5, 4)+"0000000000";
 |  Match(srcAcc, "???.?.??.?????.??.????.?.???.??.???")  : IST=SubStr(srcAcc, 24, 1); AC1=SubStr(srcAcc, 26, 3); AC2=SubStr(srcAcc, 30, 2); KlasStr="000"+SubStr(srcAcc, 5, 1)+SubStr(srcAcc, 7, 2)+SubStr(srcAcc, 10, 5)+SubStr(srcAcc, 16, 2)+SubStr(srcAcc, 19, 4);
 |  Match(srcAcc, "???.??.??.??.??.??.????.?.???.??.???") : IST=SubStr(srcAcc, 25, 1); AC1=SubStr(srcAcc, 27, 3); AC2=SubStr(srcAcc, 31, 2); KlasStr="000"+SubStr(srcAcc, 5, 2)+SubStr(srcAcc, 8, 2)+SubStr(srcAcc, 11, 2)+SubStr(srcAcc, 14, 2)+SubStr(srcAcc, 17, 2)+SubStr(srcAcc, 20, 4);
                 --123456789012345678901234567890123456
                 --0        1         2         3
 else ^"";
 fi;
 if grpAcc=2: RES=ZeroStr+IST+AC1+  "00000";
 |  grpAcc=1: RES=ZeroStr+IST+AC1+AC2+"000";
 |  grpAcc=0: RES=KlasStr+IST+AC1+AC2+"000";
 else         RES=IST+AC1+AC2+"000";
 fi;
 ^RES;
end;

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

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

--Func ПроверитьЗаполнение_НереальноеВзысканиеЗадолженности :Logical;
--var len, ii :Integer;
--var Work :Logical;
-- len=LengthOfArray(SГ1С1М1);
-- if len>0 and (Abs(RГ2С1)+Abs(RГ4С1))>0.00:
--   for ii=1 to len do
--     if (Abs(RГ3С1М1[ii])+Abs(RГ5С1М1[ii]))>0.00: Work=True; else Work=False; fi;
--     if Work:
--       if IГ6С1М1[ii]<1950 or IГ6С1М1[ii]>2050 : Message("Год задолженности должен быть в диапазоне 1950..2050 гг.", mtWarning); Template.Field="IГ6С1М1"; Template.Frame=ii; ^False; fi;
--       if Trim(SГ7С1М1[ii])=""                 : Message("Не заполнен ИНН.^MПроверьте реквизиты контрагента",        mtWarning); Template.Field="SГ7С1М1"; Template.Frame=ii; ^False; fi;
--       if not КлючИНН(SГ7С1М1[ii])             : Message("Некорректный ИНН.^MПроверьте реквизиты контрагента",       mtWarning); Template.Field="SГ7С1М1"; Template.Frame=ii; ^False; fi;
--     fi;
--   od;
-- fi;
-- ^True;
--end;

--Func ЗаменитьСимволСтрокиВпозиции(valStr:String; repChar:String; repPos:Integer) :String;
--var tmpFirst, tmpLast, out :String;
--var len :Integer;
-- tmpFirst=""; tmpLast=""; out="";
-- len=Length(valStr);
-- if repPos<1: repPos=1; fi;
-- if repPos>len or repChar="" or valStr="": ^valStr; fi;
-- repChar=SubStr(repChar, 1, 1);
-- if repPos>1: tmpFirst=SubStr(valStr, 1, repPos-1); else tmpFirst=""; fi;
-- if repPos<len: tmpLast=SubStr(valStr, repPos+1, len-repPos); else tmpLast=""; fi;
-- out=tmpFirst+repChar+tmpLast;
-- ^out;
--end;

--Func УдалитьРазделитель(Value:String) :String;
--var nn :Integer;
-- nn=Pos("|", Value);
-- while nn>0 do Value=ЗаменитьСимволСтрокиВпозиции(Value, "_", nn); nn=Pos("|", Value); od;
-- ^Value;
--end;


Proc ВыгрузкаДФ_ТблРсчта;
 Message("Экспорт требует доработки под новые изменения!");
--var nameFile, Путь, KEY1, KEY2, KEY3, Value, SRT0, SRT1, SORTKEY :String;
--var Work, FlagCreate, Нереальная :Logical;
--var len, ii, FS, pp, jj, xx :Integer;

-- len=LengthOfArray(SГ1С1М1);
-- if len>0 and (Abs(RГ2С1)+Abs(RГ4С1))>0.00: Work=True; else Work=False; fi;
-- if not Work: Message("Нет данных для выгрузки.^MПредварительно выполните расчет таблицы.", mtWarning); Template.Field="кнпР01"; Exit; fi;
-- if Year(ДК)<2000: Message("Дата отчета должна быть позже 2000 года.", mtWarning); Template.Field="ДК"; Exit; fi;
-- if Day(ДК)<>1: Message("Для выгрузки в файл требуется отчет расчитанный на '1' число.", mtWarning); Template.Field="ДК"; Exit; fi;
-- if УЧР_ИНН="" or not КлючИНН(УЧР_ИНН): Message("Некорректный ИНН.^MПроверьте реквизиты", mtError);  Template.Field="УЧР_НАИМ"; Exit; fi;
-- if not ПроверитьЗаполнение_НереальноеВзысканиеЗадолженности: Exit; fi;
-- --
-- if ChooseFolder(Путь, "Выберите папку для сохранения файла выгрузки...")=cmOk:

--    nameFile=Путь+"169"+Format("%.2d", Mon(AddMon(ДК, -1)))+Format("%.2d", Year(AddMon(ДК, -1))-2000)+"m1.txt";
--    Try
--      Try if ExistFile(nameFile): DeleteFile(nameFile); fi; Except end;
--      FlagCreate=False;
--      FS=TextFileCreate(nameFile);
--      FlagCreate=True;
--      -- Записываем заголовок
--      TextFileWriteLn(FS, "ИНН="+УЧР_ИНН);
--      TextFileWriteLn(FS, "ДАТА="+DateToString(ДК));
--      TextFileWriteLn(FS, "КОДФ=169");
--      -- Расчетная часть
--      ShowProgress(len+1, "Подготовка данных...");
--      Try
--        ОчиститьМассивыДФ;
--        for ii=1 to len do
--          ProgressPos(ii);
--          if (Abs(RГ3С1М1[ii])+Abs(RГ5С1М1[ii]))>0.00: Нереальная=True; else Нереальная=False; fi;
--          SRT0=ПривестиСчет_ПравильныйВИД(SГ1С1М1[ii],-1);
--          SRT1=SubStr(SRT0, 1, 4)+"00000";
--          KEY1=ПривестиСчет_ПравильныйВИД(SГ1С1М1[ii], 2);
--          KEY2=ПривестиСчет_ПравильныйВИД(SГ1С1М1[ii], 1);
--          KEY3=ПривестиСчет_ПравильныйВИД(SГ1С1М1[ii], 0);
--          --
--          for xx=1 to 3 do
--            if xx=1: Value=Trim(KEY1); SORTKEY=SRT1+"#"+Value;
--            |  xx=2: Value=Trim(KEY2); SORTKEY=SRT0+"#"+Value;
--            |  xx=3: Value=Trim(KEY3); SORTKEY=SRT0+"#"+Value;
--            fi;
--            if Value<>"":
--              pp=SearchInArray(O1_KEY, SORTKEY, True, 1);
--              if pp>0:
--                jj=pp;
--                O1_NГ2[jj]=O1_NГ2[jj]+RГ2С1М1[ii];
--                O1_NГ3[jj]=O1_NГ3[jj]+RГ3С1М1[ii];
--                O1_NГ4[jj]=O1_NГ4[jj]+RГ4С1М1[ii];
--                O1_NГ5[jj]=O1_NГ5[jj]+RГ5С1М1[ii];
--              else
--                jj=InsertInArraySort(O1_KEY, SORTKEY);
--                InsertInArray(O1_SГ1, jj, Value);
--                InsertInArray(O1_NГ2, jj, RГ2С1М1[ii]);
--                InsertInArray(O1_NГ3, jj, RГ3С1М1[ii]);
--                InsertInArray(O1_NГ4, jj, RГ4С1М1[ii]);
--                InsertInArray(O1_NГ5, jj, RГ5С1М1[ii]);
--              fi;
--            fi;
--          od;
--          if Нереальная and KEY3<>"":
--            SORTKEY=KEY3+"#"+SГ7С1М1[ii];
--            pp=SearchInArray(O2_SГ1, SORTKEY, True, 1);
--            if pp>0:
--              jj=pp;
--              O2_NГ2[jj]=O2_NГ2[jj]+RГ5С1М1[ii];
--            else
--              jj=InsertInArraySort(O2_KEY, SORTKEY);
--              InsertInArray(O2_SГ1, jj, KEY3);
--              InsertInArray(O2_NГ2, jj, RГ5С1М1[ii]);
--              InsertInArray(O2_SГ3, jj, Str(IГ6С1М1[ii]));
--              InsertInArray(O2_SГ4, jj, SГ7С1М1[ii]);
--              InsertInArray(O2_SГ5, jj, УдалитьРазделитель(SГ8С1М1[ii]));
--              InsertInArray(O2_SГ6, jj, УдалитьРазделитель(SГ9С1М1[ii]));
--            fi;
--          fi;
--        od;
--        len=LengthOfArray(O1_SГ1);
--        if len>0:
--          -- вставляем строчку итогов на 1 позицию
--          ProgressPos(len+1);
--          InsertInArray(O1_SГ1, 1, "00000000000000000000000000");
--          InsertInArray(O1_NГ2, 1, RГ2С1);
--          InsertInArray(O1_NГ3, 1, RГ3С1);
--          InsertInArray(O1_NГ4, 1, RГ4С1);
--          InsertInArray(O1_NГ5, 1, RГ5С1);
--        fi;
--      Finally
--        CloseProgress;
--      end;
--      -- Записываем результаты расчета
--      -- 1 раздел
--      len=LengthOfArray(O1_SГ1);
--      if len>0:
--        TextFileWriteLn(FS, "ТБ="+if(Режим=1, "03", "01"));
--        for ii=1 to len do
--          Value=O1_SГ1[ii]+"|"+if(O1_NГ2[ii]<>0.00, Str(O1_NГ2[ii], 2), "0")+"|"+if(O1_NГ3[ii]<>0.00, Str(O1_NГ3[ii], 2), "0")+"|"+if(O1_NГ4[ii]<>0.00, Str(O1_NГ4[ii], 2), "0")+"|"+if(O1_NГ5[ii]<>0.00, Str(O1_NГ5[ii], 2), "0");
--          TextFileWriteLn(FS, Value);
--        od;
--      fi;
--      -- 2 раздел
--      len=LengthOfArray(O2_KEY);
--      if len>0:
--        TextFileWriteLn(FS, "ТБ="+if(Режим=1, "04", "02"));
--        for ii=1 to len do
--          Value=O2_SГ1[ii]+"|"+if(O2_NГ2[ii]<>0.00, Str(O2_NГ2[ii], 2), "0")+"|"+O2_SГ3[ii]+"|"+O2_SГ4[ii]+"|";
--          TextFileAppendLn(FS, Value);
--          TextFileAppendLn(FS, O2_SГ5[ii]);
--          TextFileAppendLn(FS, "|");
--          TextFileAppendLn(FS, O2_SГ6[ii]);
--          TextFileWriteLn(FS, "");
--        od;
--      fi;

--      TextFileClose(FS);
--      if ExistFile(nameFile): if EnqOkCancel("Открыть созданный файл выгрузки?", mtInformation)=cmOK: OpenEditor(nameFile); fi; fi;
--    Except
--      ЗакрытьФайлПоОшибке(FS, FlagCreate, nameFile);
--      Raise;
--    end;

-- fi; -- ChooseFolder

end;

Proc ВзятьРеквизиты(saveREC:Record; Auto:Logical);
var RO, num :Integer;
var REC :Record;
 if Auto:
   if Trim(УЧР_НАИМ)="":
     RO=OpenWorkArea("КОНТРАГЕНТ", "", "НАШЕ");
     Try
       num=Records(RO);
       if num<1: REC=NIL;
       |  num=1: REC=GetRecordKey(RO, 1);
       |  num>1: REC=GetRecordKey(RO, 1);
                 SetFilter(RO, "НАШЕ and РПО_УМОЛЧАНИЕ");
                 if Records(RO)>0: REC=GetRecordKey(RO, 1); fi;
       fi;
       if REC=NIL and saveREC<>NIL: REC=saveREC; fi;
       if REC<>NIL:
         SetFilter(RO, "UKey="+RecordToString(REC));
         if Records(RO)=1:
            УЧР_НАИМ = GetFieldS(RO, 1, "КОРИМЯ");
            УЧР_ИНН  = GetFieldS(RO, 1, "ИНН");
            УЧР_SREC = REC;
         fi;
       fi;
     Finally
       CloseWorkArea(RO);
     end;
   fi;
 else
   REC=OpenCardFile("КОНТРАГЕНТ", "НАШЕ", saveREC, crdRecordOnly);
   if REC=NIL: Exit; fi;
   RO=OpenWorkArea("КОНТРАГЕНТ", "", "UKey="+RecordToString(REC));
   Try
     if Records(RO)=1:
        УЧР_НАИМ = GetFieldS(RO, 1, "КОРИМЯ");
        УЧР_ИНН  = GetFieldS(RO, 1, "ИНН");
        УЧР_SREC = REC;
     fi;
   Finally
     CloseWorkArea(RO);
   end;
 fi;
end;

Func Выбор_УсловиеОтбораСуммыОстатка(CurVal:Integer; onExit:Logical) :Integer;
var NewVal, num :Integer;
 if onExit: 
   NewVal=0;
 else
   ClearVariable(Buf);
   Buf[1]="Отбор остатка - свернутый";
   Buf[2]="Отбор остатка - дебетовый";
   Buf[3]="Отбор остатка - кредитовый";
   num=Alternate("Выберите условие:", Buf, -1, CurVal+1, 12);
   if num>0: NewVal=num-1; fi;
 fi;
 ^(if(NewVal<>CurVal, NewVal, CurVal));
end;

2-- События клеток
Func Field_onEnter(Field:String; Iter:Integer): Logical; -- на входе в клетку
var Flag :Logical;
 if Field="ДН"          : ПараметрыОтчета(Field); ^False;
 |  Field="ДК"          : ПараметрыОтчета(Field); ^False;
 |  Field="НаимВД"      : ПараметрыОтчета(Field); ^False;
 |  Field="ВидЗадолжн"  : ВидЗадолжн_Выбор; ^False;
 |  Field="ЭлементКБК_" : ЭлементКБК=Субитоги_ЭлементКБК_Выбрать(ЭлементКБК); ^False;
 |  Field="НаверхСчет_" : Flag=НаверхСчет; НаверхСчет = not НаверхСчет; if not ПерестроениеИмпорта: НаверхСчет=Flag;  fi; ^False;
 |  Field="ВидИмяКонт_" : ВидНаименования_ДебитораКредитора;  ^False;
 |  Field="NewList_2R_" : NewList_2R = not NewList_2R; Раздел2_сНовойСтраницы(NewList_2R); ^False;
 |  Field="AДЗ"         : ДобавитьУдалитьСтроку(Field, Iter); ^False;
 |  Field="AКЗ"         : ДобавитьУдалитьСтроку(Field, Iter); ^False;
 |  Field="AРТ"         : ДобавитьУдалитьСтроку(Field, Iter); ^False;
 |  Field="DДЗ"         : ДобавитьУдалитьСтроку(Field, Iter); ^False;
 |  Field="DКЗ"         : ДобавитьУдалитьСтроку(Field, Iter); ^False;
 |  Field="DРТ"         : ДобавитьУдалитьСтроку(Field, Iter); ^False;
 |  Field="кнпМ01"      : ВидимостьОтчетныхТаблиц_Work(True , False, False); currКнопка=1; ^False;
 |  Field="кнпМ02"      : ВидимостьОтчетныхТаблиц_Work(False, True , False); currКнопка=2; if GUID_М0=GUID_М1 and GUID_М1<>"": ИмпортТаблицы_Построение; else ОчисткаТблФормы; НеПустаяТаблица; fi; ^False;
 |  Field="кнпМ03"      : ВидимостьОтчетныхТаблиц_Work(False, False, True ); currКнопка=3; ^False;
 |  Field="кнпР01"      : Расчет_ТБЛ_ТблРсчта; ^False;
 |  Field="кнпР02"      : Печать_ТБЛ_ТблРсчта; ^False;
 |  Field="кнпР03"      : ОчисткаТБЛ_ТблРсчта; ^False;
 |  Field="кнпР04"      : ЭкспортXLS_ТблРсчта; ^False;
 |  Field="кнпР05"      : ВыгрузкаДФ_ТблРсчта; ^False;
 |  Field="кнпФ01"      : Расчет_ТБЛ_ТблФормы; ^False;
 |  Field="кнпФ02"      : Печать_ТБЛ_ТблФормы; ^False;
 |  Field="кнпФ03"      : ОчисткаТБЛ_ТблФормы; ^False;
 |  Field="кнпФ04"      : ЭкспортXLS_ТблФормы; ^False;
 |  Field="кнпН01"      : Восстановить_НастрУмолч; ^False;
 |  Field="кнпН02"      : ПроверитьНастройку; ^False;
 |  Field="УЧР_НАИМ"    : ВзятьРеквизиты(УЧР_SREC, False); ^False;
 |  Field="ФтрОС_Д_"    : ФтрОС_Д[Iter]=Выбор_УсловиеОтбораСуммыОстатка(ФтрОС_Д[Iter], False); ^False;
 |  Field="ФтрОС_К_"    : ФтрОС_К[Iter]=Выбор_УсловиеОтбораСуммыОстатка(ФтрОС_К[Iter], False); ^False;
 fi;
 ^True;
end;

Proc Field_onExit(Field:String; Iter:Integer); -- на выходе из клетки
 if Field="SГ11С1М1" : if SГ11С1М1[Iter]="": SГ10С1М1[Iter]=""; fi;
 |  Field="УЧР_НАИМ" : if УЧР_НАИМ="": УЧР_ИНН=""; fi;
 |  Field="ФтрОС_Д_" : ФтрОС_Д[Iter]=Выбор_УсловиеОтбораСуммыОстатка(ФтрОС_Д[Iter], True);
 |  Field="ФтрОС_К_" : ФтрОС_К[Iter]=Выбор_УсловиеОтбораСуммыОстатка(ФтрОС_К[Iter], True);
 fi;
end;

Func Field_OnValidateI(Field:String; Iter:Integer; Value:Integer) :Logical;
 if Value<0 : Message('Нельзя вводить отрицательное число.', mtError); ^False; fi;
 --if Field="IГ6С1М1": if Value<1950 or Value>2100: Message("Некорректный год возникновения задолженности!", mtWarning); ^False; fi; fi;
 ^True;
end;

Func SГ01С1М1_OnLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var msk :String;
var num :Integer;
 Template.HideEditor(False);
 num=AsInteger(Template.Frame);
 msk=AccountElection(if(Режим=1, defCreMask, defDebMask), False, SГ01С1М1[num]);
 if msk="": ^Cur; fi;
 SГ01С1М1[num]=msk;
 ^Cur;
end;

Func ВыборДаты(srcDate:Date) :Date;
var memDate :Date;
 if srcDate>1.1.100: memDate=Calendar(srcDate); else memDate=Calendar(ToDay); fi;
 if not memDate<=1.1.100: ^memDate; else ^srcDate; fi;
end;

Func GetDate :Date;  -- считываем в заданном поле дату
var nameField :String;
var iterFrame :Integer;
 nameField= asString(Template.Field);
 iterFrame=asInteger(Template.Frame);
 if nameField="DГ08С1М1" : ^DГ08С1М1[iterFrame];
 |  nameField="DГ09С1М1" : ^DГ09С1М1[iterFrame];
 fi;
end;

Proc SetDate(Value:Date); -- устанавливаем в заданном поле дату; Value - значение даты, которое необходимо присвоить
var nameField :String;
var iterFrame :Integer;
 nameField= asString(Template.Field);
 iterFrame=asInteger(Template.Frame);
 if nameField="DГ08С1М1" : DГ08С1М1[iterFrame]=Value;
 |  nameField="DГ09С1М1" : DГ09С1М1[iterFrame]=Value;
 fi;
end;

Func Дата_ПростойВыбор_onLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
 Template.HideEditor(False);
 SetDate(ВыборДаты(GetDate));
 ^"";
end;

Func РасшифровкаСумм_OnLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var ОбщУслКД_, ОбщУслКР_, ОбщУслКИФД_, ОбщУслСч_, Fld, Value, Acc, Sgn, УслСчт, УслАна, NameRep :String;
var Itr, num, ii :Integer;
var dbr, der :Date;
 Template.HideEditor(False);
 Itr=AsInteger(Template.Frame);
 Fld=AsString(Template.Field);
 if not АВТО_М1[Itr]: if EnqOkCancel("Данная сумма введена вручную.^MПродолжить?", mtConfirmation)=cmCancel: ^Cur; fi; fi;
 if SГ01С1М1[Itr]="": Message("Необходим счет бюджетного учета", mtError); Template.Field="SГ01С1М1"; Template.Frame=Itr; ^Cur; fi;
 --if ДК_AnaМ1[Itr]="": Message("Введите дебитора (кредитора)",  mtError); Template.Field="SГ11С1М1"; Template.Frame=Itr; ^Cur; fi;
 if not ОбщУслКД=""   : ОбщУслКД_   = РАБ.БЮДЖЕТ2005.ВзятьКодКБК(ОбщУслКД,   "КД",  "КБК", False)+".*"; else ОбщУслКД_   =""; fi;
 if not ОбщУслКР=""   : ОбщУслКР_   = РАБ.БЮДЖЕТ2005.ВзятьКодКБК(ОбщУслКР,   "ФКР", "КБК", False)+".*"; else ОбщУслКР_   =""; fi;
 if not ОбщУслКИФД="" : ОбщУслКИФД_ = РАБ.БЮДЖЕТ2005.ВзятьКодКБК(ОбщУслКИФД, "КИФД","КБК", False)+".*"; else ОбщУслКИФД_ =""; fi;
 ОбщУслСч_ = РАБ.БЮДЖЕТ2005.Объединить(ОбщУслКД_, ОбщУслКР_,   "|");
 ОбщУслСч_ = РАБ.БЮДЖЕТ2005.Объединить(ОбщУслСч_, ОбщУслКИФД_, "|");
 if not ОбщУслСч_="": ОбщУслСч_="("+ОбщУслСч_+")"; fi;
 if Match(SГ01С1М1[Itr], "???.????.???????.???.?.???.??.???")    : Value=SubStr(SГ01С1М1[Itr], 1, 29)+".???";
 |  Match(SГ01С1М1[Itr], "???.?.??.?????.??.????.?.???.??.???")  : Value=SubStr(SГ01С1М1[Itr], 1, 31)+".???";
 |  Match(SГ01С1М1[Itr], "???.??.??.??.??.??.????.?.???.??.???") : Value=SubStr(SГ01С1М1[Itr], 1, 32)+".???";
 else Value="";
 fi;
 if Value="":
   Message("Недопустимый формат (кода) счета "+Value, mtError); Template.Field="SГ01С1М1"; Template.Frame=Itr; ^Cur;
 else
   УслСчт=РАБ.БЮДЖЕТ2005.Объединить(Value, ОбщУслСч_, "&");
 fi;
 УслАна=РАБ.БЮДЖЕТ2005.Объединить(ОбщУслАн, ДК_AnaМ1[Itr], "&");
 ClearVariable(Buf);
 Buf[1]="Отчет по счетам";
 Buf[2]="Отчет по проводкам";
 num=Alternate("Варианты детализации",Buf,-1,1,12);
 if num=0: ^Cur; fi;
 Value="";
 if Режим=1:
   for ii=1 to УпрКЗ do
     if not УслАнКЗ[ii]="" and not УслСчКЗ[ii]="":
       for Account Acc = РАБ.БЮДЖЕТ2005.Объединить(УслСчт, "("+УслСчКЗ[ii]+")", "&") do
         for Sign Sgn  = РАБ.БЮДЖЕТ2005.Объединить(УслАна, "("+УслАнКЗ[ii]+")", "&") do
           Value=РАБ.БЮДЖЕТ2005.Объединить(Value, "("+УслАнКЗ[ii]+")", "|");
           Break;
         od;
         Break;
       od;
     fi;
   od;
 else
   for ii=1 to УпрДЗ do
     if not УслАнДЗ[ii]="" and not УслСчДЗ[ii]="":
       for Account Acc = РАБ.БЮДЖЕТ2005.Объединить(УслСчт, "("+УслСчДЗ[ii]+")", "&") do
         for Sign Sgn  = РАБ.БЮДЖЕТ2005.Объединить(УслАна, "("+УслАнДЗ[ii]+")", "&") do
           Value=РАБ.БЮДЖЕТ2005.Объединить(Value, "("+УслАнДЗ[ii]+")", "|");
           Break;
         od;
         Break;
       od;
     fi;
   od;
 fi;
 УслАна=РАБ.БЮДЖЕТ2005.Объединить(УслАна, Value, "&");
 -- *** --
 if fld="RГ02С1М1": dbr=Dat(1, 1, Year(ДН)-1); der=ДН;
 |  fld="RГ05С1М1": dbr=ДН; der=ДК;
 fi;
 if not УслВал="":
   if num=1:
     if УслВал=BaseCurrency: NameRep='"009"'; else NameRep='"009В"'; fi;
     Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst".'+NameRep, dbr, der, УслСчт, УслАна);
   |  num=2:
     if УслВал=BaseCurrency: NameRep='"001"'; else NameRep='"003"'; fi;
     Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst".'+NameRep, dbr, der, УслСчт ,УслАна);
   fi;
 else
   if num=1: Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst"."009"', dbr, der, УслСчт, УслАна);
   |  num=2: Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst"."001"', dbr, der, УслСчт, УслАна);
   fi;
 fi;
 ^Cur;
end;

Func ДебиторКредитор_OnLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var Value, MSK :String;
var Iter :Integer;
var REC :Record;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if SГ01С1М1[Iter]="": Message("Введите счет бюджетного учета", mtError); Template.Field="SГ01С1М1"; Template.Frame=Iter; ^Cur; fi;
 RefreshAna;
 MSK=РАБ.БЮДЖЕТ2005.СписокСправ(SГ01С1М1[Iter], 0, "");
 Value=AnaElection(MSK, False, False, ДК_AnaМ1[Iter]);
 if Value="": ^Cur; fi;
 ДК_AnaМ1[Iter]=Value;
-- SГ11С1М1[Iter]=Trim(Name_A(ДК_AnaМ1[Iter]));
-- if SГ11С1М1[Iter]="": SГ11С1М1[Iter]=ДК_AnaМ1[Iter]; fi;
 SГ11С1М1[Iter]=ДебиторКредитор_ПрименитьНаименование(ДК_AnaМ1[Iter], ВидИмяКонт);
 REC=SignToRecord(ДК_AnaМ1[Iter], False);
 if REC<>NIL:
   Value=Up(SignCardFile(ДК_AnaМ1[Iter], False));
   if Value="КОНТРАГЕНТ": SГ10С1М1[Iter]=Trim(GetCardFieldS(Value, REC, "ИНН"));
--   |  Value="СОТРУДНИКИ": SГ10С1М1[Iter]=Trim(GetCardFieldS(Value, REC, "ИНН"));
   |  Value="СОТРУДНИКИ": SГ10С1М1[Iter]="0000000000";
   fi;
 fi;
 ^Cur;
end;

Func УСЛСЧТ_OnVerify(FieldName:String; Iter:Integer; Value:String) :Logical;
var SUM :Numeric;
 Try SUM=Saldo(Value, 1.1.100); Except Raise; ^False; end;
 ^True;
end;

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

Func УСЛАН_OnEnter(FieldName:String; Iter:Integer) :Logical;
var Value :String;
 if FieldName="УслАнДЗ": Value=УслСчДЗ[Iter]; FieldName="УслСчДЗ";
 |  FieldName="УслАнКЗ": Value=УслСчКЗ[Iter]; FieldName="УслСчКЗ";
 fi;
 if Value="": Message("Заполните условие отбора по счетам", mtError); Template.Field=FieldName; Template.Frame=Iter; ^False; fi;
 ^True;
end;

Func УСЛАН_OnVerify(FieldName: String; Iter: Integer; Value: String) :Logical;
var SUM :Numeric;
 Try SUM=Saldo("{"+Value+"}", 1.1.100); Except Raise; ^False; end;
 ^True;
end;

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

Func СПРАВ_OnEnter(FieldName:String; Iter:Integer) :Logical;
var Value, Field :String;
var num :Integer;
 if FieldName="СправДЗ_": Value=УслСчДЗ[Iter]; Field="УслСчДЗ";
 |  FieldName="СправКЗ_": Value=УслСчКЗ[Iter]; Field="УслСчКЗ";
 fi;
 if Value="": Message("Заполните условие отбора по счетам", mtError); Template.Field=Field; Template.Frame=Iter; ^False; fi;
 FieldName=SubStr(FieldName, 1, Length(FieldName)-1)+"["+Str(Iter)+"]";
 Value=РАБ.БЮДЖЕТ2005.СписокСправ(Value, 0, "");
 CopyArray(РАБ.БЮДЖЕТ2005.BufСправ, Buf);
 num=Alternate("Аналитические справочники", Buf, -1, 1, 12);
 if num=0: ^False; fi;
 Value=SubStr(Buf[num], 1, Pos(" --", Buf[num])-1);
 if WordInString(Value, GetVariableS(FieldName), "|"): Message("Повторный ввод справочника "+Value+"!", mtError); ^False; fi;
 Value=РАБ.БЮДЖЕТ2005.Объединить_Диалог(GetVariableS(FieldName), Value, "|=ИЛИ;_=ЗАМЕНИТЬ","_");
 PutVariableS(FieldName, Value);
 ^False;
end;

Proc СПРАВ_onExit(Field:String; Iter:Integer);
var Value, FieldName :String;
 FieldName=SubStr(Field, 1, Length(Field)-1)+"["+Str(Iter)+"]";
 Value=РАБ.БЮДЖЕТ2005.УдалитьСловоИзНабора_Диалог(GetVariableS(FieldName), "|");
 PutVariableS(FieldName, Value);
end;

2-- События объектов
Proc btnOnClick(Sender:String); -- объекты при нажатии
 if Sender="btnClose" : Close;
 |  Sender=""         :
 fi;
end;

Proc CopyCfgPrn(Cfg:String);
var OK :Logical;
 OK=ExistFile(РАБ.БЮДЖЕТ2005.Контроль2Слэш(PlanVar("INI")+"\"+Cfg));
 if OK:
   Try
     DeleteFile(РАБ.БЮДЖЕТ2005.Контроль2Слэш(PlanVar("INI")+"\"+Cfg));
     РАБ.НАСТР_ПЕЧАТЬ.CreateCfg(PlanVar('Общие')+'\Настройки\', Cfg);
   Except
   end;
 else
   РАБ.НАСТР_ПЕЧАТЬ.CreateCfg(PlanVar('Общие')+'\Настройки\', Cfg);
 fi;
end;

2-- События шаблона
Proc Template_OnOpen(Create:Logical); -- при открытии шаблона
 Очистить;
 currКнопка=1;
 CopyCfgPrn("ТББ.ОТЧЕТЫ.БАЛАНС.191Н.0503169.А00.cfg");
 CopyCfgPrn("ТББ.ОТЧЕТЫ.БАЛАНС.191Н.0503169.А75.cfg");
 CopyCfgPrn("ТББ.ОТЧЕТЫ.БАЛАНС.191Н.0503169.П00.cfg");
end;

Proc Template_AfterOpen(Create:Logical); -- после открытия шаблона
 КонтрольВерсии;
 ValidateОтчетSectionInit;
 НеПустаяТаблица;
 ПрисвоитьТочность;
 Раздел2_сНовойСтраницы(NewList_2R);
 if УЧР_НАИМ="": ВзятьРеквизиты(УЧР_SREC, True); fi;
 Template.Field="ФокусО";
end;

Proc Template_OnClose(Destroy:Logical); -- при закрытии шаблона
 Очистить;
end;

КОНЕЦ -- бланка