-- Шаблон создан мастером бланков
-- 03.11.2003 10:22:19
--
БланкСШаблоном "Работа с шаблоном, массивы,константы,функции";
2-- Константы матучета
2-- символы в обычных шрифтах
   ch_параграф	      :s=''+chr(167);
   ch_е       :s=''+chr(168);
   ch_C       :s=''+chr(169);
   ch_R       :s=''+chr(174);
   ch_плюс_минус      :s=''+chr(177);
   ch_N       :s=''+chr(185);

2-- символы в 'symbol' шрифте
   ch_S_сумма	      :s=''+chr(229);
   ch_S_галка	      :s=''+chr(214);
   ch_S_влево	      :s=''+chr(220);
   ch_S_вверх	      :s=''+chr(221);
   ch_S_вправо	      :s=''+chr(222);
   ch_S_вниз	      :s=''+chr(223);
   ch_S_ввод	      :s=''+chr(191);
   ch_S_меньше_равно  :s=''+chr(163);
   ch_S_больше_равно  :s=''+chr(179);
   ch_S_не_равно      :s=''+chr(185);
   ch_S_примерно_равно:s=''+chr(187);
2-- символы в 'WingDings' шрифте
   ch_S_Wвлево	      :s='п';
   ch_S_Wвверх	      :s='с';
   ch_S_Wвправо       :s='р';
   ch_S_Wвниз	      :s='т';

   ch_S_Wпред_меню    :s='З';
   ch_S_Wзакрыть_окно :s='ы';-- крестик
   ch_S_Wзакр_папка   :s='0';
   ch_S_Wоткр_папка   :s='1';
   ch_S_Wоткр_док     :s='2';-- заполненый загнутый листок
   ch_S_Wдок	      :s='3';-- заполненый листок

   ch_S_Wкопировать   :s='4';-- стопка страниц
   ch_S_Wсохранить    :s='<';-- дискета 3,5"
   ch_S_Wсохранить1   :s='=';-- дискета 5"
   ch_S_Wвырезать     :s='#';-- ножницы
   ch_S_Wудалить      :s='ы';-- x

   ch_S_Wсправочник   :s='&';-- книга
   ch_S_Wсообщение    :s='*';-- запечатанный конверт

   ch_S_Wвыбор_галка  :s='ь';-- галка
   ch_S_Wвыбор_да     :s='ю';-- галка в квадратике
   ch_S_Wвыбор_крест  :s='x';-- крест в квадратике
   ch_S_Wвыбор_пусто  :s='o';-- пустой квадратик

   ch_S_Wкн_пуск      :s='я';-- значек windows

   ch_S_Wзаморозить   :s='T';-- снежинка
   ch_S_Wфлаг	      :s='O';-- флаг на ветру
   ch_S_Wсмайлик_хор  :s='J';-- смайлик улыбка
   ch_S_Wсмайлик_нор  :s='K';-- смайлик нормально
   ch_S_Wсмайлик_плох :s='L';-- смайлик плохо
   ch_S_Wочки	      :s='$';-- очки (поиск, просмотр)
2-- символы в 'WebDings' шрифте
   ch_S_Webсвернуть	  :s='0';
   ch_S_Webразвернуть	  :s='1';
   ch_S_Webсвернуть_в_окно:s='2';
   ch_S_Webзакрыть_окно   :s='r';
   ch_S_Webнастройки	  :s='@';--инструменты значка панель настроек
   ch_S_Webцентр_упр	  :s='H';--значек домашняя страница
   ch_S_Webсеть 	  :s='В';--значек локальная сеть
   ch_S_Webкарта_мира	  :s='ы';--карта_мира
   ch_S_Webзамок_закрыт   :s='П';--замок_закрыт
   ch_S_Webзамок_открыт   :s='Р';--замок_открыт
   ch_S_Webключ 	  :s='С';--ключ к замку
   ch_S_Webкалькулятор	  :s='Л';--калькулятор
   ch_S_Webземной_шар	  :s='э';--земной шар
   ch_S_Webмолния	  :s='~';--молния
   ch_S_Webмолния1	  :s='+';--молния в облаке
   ch_S_Webобновить	  :s='`';--стрелки по квадрату
   ch_S_Webглаз 	  :s='N';--глаз(режим просмотра или проверки)
   ch_S_Webлупа 	  :s='L';--Лупа(поиск, просмотр)

2-- Имена картотек

2-- Переменные для обмена информацией между бланками


2-- Пути к файлам...
--   def :s=PlanVar('MyBuh')+'\Операции\';
--   def_mu_false:s=
НомерИНВ[]:s;
var st	[]:s;
var it	[]:i;
var codi[]:i;
var cods[]:s;
var LastSection:s;
var CellMethods[]:i;	-- целочисленные методы клетки
var CountCellMethods:i; -- длина массива CellMethods
var iCellMethods    :i; -- координата начала целочисленных значений в CellMethods
var lCellMethods    :i; -- координата начала логических значений в CellMethods
var sCellMethods    :i; -- координата начала строковых значений в CellMethods
var iCellMethodsValue[]:i; -- целочисленные значения данных клетки в секции
var lCellMethodsValue[]:l; -- логические значения данных клетки в секции
var sCellMethodsValue[]:s; -- строковые значения данных клетки в секции

var ColMethods	     []:i; -- целочисленные методы столбца
var CountColMethods    :i; -- длина массива ColMethods
var nColMethods        :i; -- координата начала числовых значений в ColMethods
var lColMethods        :i; -- координата начала логических значений в ColMethods
var nColMethodsValue []:i; -- числовых значения данных столбца в секции
var lColMethodsValue []:l; -- логические значения данных столбца в секции

var RowMethods	     []:i; -- целочисленные методы строки
var CountRowMethods    :i; -- длина массива RowMethods
var nRowMethods        :i; -- координата начала числовых значений в RowMethods
var lRowMethods        :i; -- координата начала логических значений в RowMethods
var nRowMethodsValue []:i; -- числовых значения данных строки в секции
var lRowMethodsValue []:l; -- логические значения данных строки в секции
var CellLinksValue   []:s; -- значения параметров для слияния клеток в секции
var SecCols	  :i;
var SecRows	  :i;
var SecCanPrint   :L;
var SecVisible	  :L;
var SecFrameCount :I;
var SecOnInsert   :S;
var SecAfterInsert:S;
var SecOnDelete   :S;
var SecAfterDelete:S;

-- данные для секции "ШАПКА"
var LastSection1:s;
var CellMethods1[]:i;	 -- целочисленные методы клетки
var CountCellMethods1:i; -- длина массива CellMethods
var iCellMethods1    :i; -- координата начала целочисленных значений в CellMethods
var lCellMethods1    :i; -- координата начала логических значений в CellMethods
var sCellMethods1    :i; -- координата начала строковых значений в CellMethods
var iCellMethodsValue1[]:i; -- целочисленные значения данных клетки в секции
var lCellMethodsValue1[]:l; -- логические значения данных клетки в секции
var sCellMethodsValue1[]:s; -- строковые значения данных клетки в секции

var ColMethods1       []:i; -- целочисленные методы столбца
var CountColMethods1	:i; -- длина массива ColMethods
var nColMethods1	:i; -- координата начала числовых значений в ColMethods
var lColMethods1	:i; -- координата начала логических значений в ColMethods
var nColMethodsValue1 []:i; -- числовых значения данных столбца в секции
var lColMethodsValue1 []:l; -- логические значения данных столбца в секции

var RowMethods1       []:i; -- целочисленные методы строки
var CountRowMethods1	:i; -- длина массива RowMethods
var nRowMethods1	:i; -- координата начала числовых значений в RowMethods
var lRowMethods1	:i; -- координата начала логических значений в RowMethods
var nRowMethodsValue1 []:i; -- числовых значения данных строки в секции
var lRowMethodsValue1 []:l; -- логические значения данных строки в секции
var CellLinksValue1   []:s; -- значения параметров для слияния клеток в секции
var SecCols1	   :i;
var SecRows1	   :i;
var SecCanPrint1   :L;
var SecVisible1    :L;
var SecFrameCount1 :I;
var SecOnInsert1   :S;
var SecAfterInsert1:S;
var SecOnDelete1   :S;
var SecAfterDelete1:S;

Proc LoadSectionlMethods1;
var t:i;
  if CountCellMethods1>0:exit;fi;
  t=0;
  ClearVariable(РАБ.НФА.B02.CellMethods1);
  t=t+1;CellMethods1[t]=CellFieldType ; -- integer		   1
  t=t+1;CellMethods1[t]=CellFontStyle ; -- integer		   2
  t=t+1;CellMethods1[t]=CellFontSize  ; -- integer		   3
  t=t+1;CellMethods1[t]=CellFontColor ; -- integer		   4
  t=t+1;CellMethods1[t]=CellAlignment ; -- integer		   5
  t=t+1;CellMethods1[t]=CellBgColor   ; -- integer		   6
  t=t+1;CellMethods1[t]=CellBevel     ; --logical		   7
  t=t+1;CellMethods1[t]=CellWrap      ; --logical		   8
--  t=t+1;CellMethods1[t]=CellReadOnly	; --logical		     9
--  t=t+1;CellMethods1[t]=CellLookup	; --logical		     0
--  t=t+1;CellMethods1[t]=CellRequired	; --logical		     1
  t=t+1;CellMethods1[t]=CellBorder    ; --string		   3
  t=t+1;CellMethods1[t]=CellFormat    ; --string		   4
--  t=t+1;CellMethods1[t]=CellHint	; --string		     5
  t=t+1;CellMethods1[t]=CellContents  ; --string		   2
--  t=t+1;CellMethods[t]=CellEventOnEnter   ; -- КлеткаСобытиеПриВходе	    6
--  t=t+1;CellMethods[t]=CellEventOnVerify  ; -- КлеткаСобытиеПриПроверке   7
--  t=t+1;CellMethods[t]=CellEventOnExit    ; -- КлеткаСобытиеПриВыходе     8
--  t=t+1;CellMethods[t]=CellEventOnType    ; -- КлеткаСобытиеПриНаборе     9
--  t=t+1;CellMethods[t]=CellEventOnLookup  ; -- КлеткаСобытиеПриОбзоре     0
--  t=t+1;CellMethods[t]=CellEventOnClick   ; -- КлеткаСобытиеПриНажатии    21

--  t=t+1;CellMethods[t]=CellLinesCount;--t=22
--  t=t+1;CellMethods[t]=CellValue     ;--t=23 --*
--  t=t+1;CellMethods[t]=CellText      ;--t=24 --string
  CountCellMethods1=t;
  iCellMethods1=1;
  lCellMethods1=7;
  sCellMethods1=9;

  t=0;
  ClearVariable(РАБ.НФА.B02.ColMethods1);
  t=t+1;ColMethods1[t]=ColVisible ; -- logical
  t=t+1;ColMethods1[t]=ColWidth   ; -- real
  t=t+1;ColMethods1[t]=ColLeft	  ; -- real
  CountColMethods1=t-1;-- не берем данные только для чтения (ColLeft)
  lColMethods1=1;
  nColMethods1=2;

  t=0;
  ClearVariable(РАБ.НФА.B02.RowMethods1);
--  t=t+1;RowMethods1[t]=RowVisible ; -- logical
  t=t+1;RowMethods1[t]=RowNewPage ; -- logical
  t=t+1;RowMethods1[t]=RowHeight  ; -- real
  t=t+1;RowMethods1[t]=RowTop	  ; -- real
  CountRowMethods1=t-1;-- не берем данные только для чтения (RowTop)
  lRowMethods1=1;
  nRowMethods1=2;
end;
Func LoadSection1(NameSection:s):l;
var CurrentSection:Object;
var x,y,xyt,xy,t:i;
  if FindObject(NameSection,CurrentSection):
     LoadSectionlMethods1;
     SecCols1	    =AsInteger(CurrentSection.ColsCount  );
     SecRows1	    =AsInteger(CurrentSection.RowsCount  );
--     SecCanPrint1   =AsLogical(CurrentSection.CanPrint   );
--     SecVisible1    =AsLogical(CurrentSection.Visible    );
--     SecFrameCount1 =AsInteger(CurrentSection.FrameCount );
--     SecOnInsert1   =AsString (CurrentSection.OnInsert   );
--     SecAfterInsert1=AsString (CurrentSection.AfterInsert);
--     SecOnDelete1   =AsString (CurrentSection.OnDelete   );
--     SecAfterDelete1=AsString (CurrentSection.AfterDelete);

     --ClearVariable(РАБ.НФА.B02.CellLinksValue1   );
     ClearVariable(РАБ.НФА.B02.iCellMethodsValue1);
     ClearVariable(РАБ.НФА.B02.lCellMethodsValue1);
     ClearVariable(РАБ.НФА.B02.sCellMethodsValue1);

     ClearVariable(РАБ.НФА.B02.nColMethodsValue1);
     ClearVariable(РАБ.НФА.B02.lColMethodsValue1);
     ClearVariable(РАБ.НФА.B02.nRowMethodsValue1);
     ClearVariable(РАБ.НФА.B02.lRowMethodsValue1);

     for y=1..SecRows1 do -- считываем параметры строк
       xyt=(y-1)*(nRowMethods1-lRowMethods1)-lRowMethods1+1;
       for t=lRowMethods1..nRowMethods1-1 do -- логические параметры
	 lRowMethodsValue1[xyt+t]=AsLogical(CurrentSection.Row(y,RowMethods1[t],''));
       od;
       xyt=(y-1)*(CountRowMethods1+1-nRowMethods1)-nRowMethods1+1;
       for t=nRowMethods1..CountRowMethods1 do -- логические параметры
	 nRowMethodsValue1[xyt+t]=AsInteger(CurrentSection.Row(y,RowMethods1[t],''));
       od;
     od;
     for y=1..SecCols1 do -- считываем параметры столбцов
       xyt=(y-1)*(nColMethods1-lColMethods1)-lColMethods1+1;
       for t=lColMethods1..nColMethods1-1 do -- логические параметры
	 lColMethodsValue1[xyt+t]=AsLogical(CurrentSection.Column(y,ColMethods1[t],''));
       od;
       xyt=(y-1)*(CountColMethods1+1-nColMethods1)-nColMethods1+1;
       for t=nColMethods1..CountColMethods1 do -- логические параметры
	 nColMethodsValue1[xyt+t]=AsInteger(CurrentSection.Column(y,ColMethods1[t],''));
       od;
     od;

     for y=1..SecRows1 do
       for x=1..SecCols1 do
	 xy=(y-1)*SecCols1+x;
	 xyt=(xy-1)*(lCellMethods1-iCellMethods1)-iCellMethods1+1;
	 for t=iCellMethods1..lCellMethods1-1 do
	   iCellMethodsValue1[xyt+t]=AsInteger(CurrentSection.Cell(y,x,CellMethods1[t],''));
	 od;
	 xyt=(xy-1)*(sCellMethods1-lCellMethods1)-lCellMethods1+1;
	 for t=lCellMethods1..sCellMethods1-1 do
	   lCellMethodsValue1[xyt+t]=AsLogical(CurrentSection.Cell(y,x,CellMethods1[t],''));
	 od;
	 xyt=(xy-1)*(CountCellMethods1+1-sCellMethods1)-sCellMethods1+1;
	 for t=sCellMethods1..CountCellMethods1 do
	   sCellMethodsValue1[xyt+t]=AsString(CurrentSection.Cell(y,x,CellMethods1[t],''));
	   if CellMethods1[t]=CellContents:
	      if AsInteger(CurrentSection.Cell(y,x,CellFieldType,''))<>cftStaticText:
		 if pos('[',sCellMethodsValue1[xyt+t])<1 and length(trim(sCellMethodsValue1[xyt+t]))>0:
		   sCellMethodsValue1[xyt+t]=sCellMethodsValue1[xyt+t]+'[';
		 fi;
	      fi;
	   fi;
	 od;
       od;
     od;
   | true:^false;
  fi;
  LastSection1=NameSection;
  ^true;
2end;

-- данные для секции "ДНО"
var LastSection2:s;
var CellMethods2[]:i;	 -- целочисленные методы клетки
var CountCellMethods2:i; -- длина массива CellMethods
var iCellMethods2    :i; -- координата начала целочисленных значений в CellMethods
var lCellMethods2    :i; -- координата начала логических значений в CellMethods
var sCellMethods2    :i; -- координата начала строковых значений в CellMethods
var iCellMethodsValue2[]:i; -- целочисленные значения данных клетки в секции
var lCellMethodsValue2[]:l; -- логические значения данных клетки в секции
var sCellMethodsValue2[]:s; -- строковые значения данных клетки в секции

var ColMethods2       []:i; -- целочисленные методы столбца
var CountColMethods2	:i; -- длина массива ColMethods
var nColMethods2	:i; -- координата начала числовых значений в ColMethods
var lColMethods2	:i; -- координата начала логических значений в ColMethods
var nColMethodsValue2 []:i; -- числовых значения данных столбца в секции
var lColMethodsValue2 []:l; -- логические значения данных столбца в секции

var RowMethods2       []:i; -- целочисленные методы строки
var CountRowMethods2	:i; -- длина массива RowMethods
var nRowMethods2	:i; -- координата начала числовых значений в RowMethods
var lRowMethods2	:i; -- координата начала логических значений в RowMethods
var nRowMethodsValue2 []:i; -- числовых значения данных строки в секции
var lRowMethodsValue2 []:l; -- логические значения данных строки в секции
var CellLinksValue2   []:s; -- значения параметров для слияния клеток в секции
var SecCols2	   :i;
var SecRows2	   :i;
var SecCanPrint2   :L;
var SecVisible2    :L;
var SecFrameCount2 :I;
var SecOnInsert2   :S;
var SecAfterInsert2:S;
var SecOnDelete2   :S;
var SecAfterDelete2:S;
Proc LoadSectionlMethods2;
var t:i;
  if CountCellMethods2>0:exit;fi;
  t=0;
  ClearVariable(РАБ.НФА.B02.CellMethods2);
  t=t+1;CellMethods2[t]=CellFieldType ; -- integer		   1
  t=t+1;CellMethods2[t]=CellFontStyle ; -- integer		   2
  t=t+1;CellMethods2[t]=CellFontSize  ; -- integer		   3
  t=t+1;CellMethods2[t]=CellFontColor ; -- integer		   4
  t=t+1;CellMethods2[t]=CellAlignment ; -- integer		   5
  t=t+1;CellMethods2[t]=CellBgColor   ; -- integer		   6
  t=t+1;CellMethods2[t]=CellBevel     ; --logical		   7
  t=t+1;CellMethods2[t]=CellWrap      ; --logical		   8
--  t=t+1;CellMethods2[t]=CellReadOnly	; --logical		     9
--  t=t+1;CellMethods2[t]=CellLookup	; --logical		     0
--  t=t+1;CellMethods2[t]=CellRequired	; --logical		     1
  t=t+1;CellMethods2[t]=CellBorder    ; --string		   3
  t=t+1;CellMethods2[t]=CellFormat    ; --string		   4
--  t=t+1;CellMethods2[t]=CellHint	; --string		     5
  t=t+1;CellMethods2[t]=CellContents  ; --string		   2
--  t=t+1;CellMethods[t]=CellEventOnEnter   ; -- КлеткаСобытиеПриВходе	    6
--  t=t+1;CellMethods[t]=CellEventOnVerify  ; -- КлеткаСобытиеПриПроверке   7
--  t=t+1;CellMethods[t]=CellEventOnExit    ; -- КлеткаСобытиеПриВыходе     8
--  t=t+1;CellMethods[t]=CellEventOnType    ; -- КлеткаСобытиеПриНаборе     9
--  t=t+1;CellMethods[t]=CellEventOnLookup  ; -- КлеткаСобытиеПриОбзоре     0
--  t=t+1;CellMethods[t]=CellEventOnClick   ; -- КлеткаСобытиеПриНажатии    21

--  t=t+1;CellMethods[t]=CellLinesCount;--t=22
--  t=t+1;CellMethods[t]=CellValue     ;--t=23 --*
--  t=t+1;CellMethods[t]=CellText      ;--t=24 --string
  CountCellMethods2=t;
  iCellMethods2=1;
  lCellMethods2=7;
  sCellMethods2=9;

  t=0;
  ClearVariable(РАБ.НФА.B02.ColMethods2);
  t=t+1;ColMethods2[t]=ColVisible ; -- logical
  t=t+1;ColMethods2[t]=ColWidth   ; -- real
  t=t+1;ColMethods2[t]=ColLeft	  ; -- real
  CountColMethods2=t-1;-- не берем данные только для чтения (ColLeft)
  lColMethods2=1;
  nColMethods2=2;

  t=0;
  ClearVariable(РАБ.НФА.B02.RowMethods2);
--  t=t+1;RowMethods1[t]=RowVisible ; -- logical
  t=t+1;RowMethods2[t]=RowNewPage ; -- logical
  t=t+1;RowMethods2[t]=RowHeight  ; -- real
  t=t+1;RowMethods2[t]=RowTop	  ; -- real
  CountRowMethods2=t-1;-- не берем данные "только для чтения (RowTop)"
  lRowMethods2=1;
  nRowMethods2=2;
end;
Func LoadSection2(NameSection:s):l;
var CurrentSection:Object;
var x,y,xyt,xy,t:i;
  if FindObject(NameSection,CurrentSection):
     LoadSectionlMethods2;
     SecCols2	    =AsInteger(CurrentSection.ColsCount  );
     SecRows2	    =AsInteger(CurrentSection.RowsCount  );
--     SecCanPrint2   =AsLogical(CurrentSection.CanPrint   );
--     SecVisible2    =AsLogical(CurrentSection.Visible    );
--     SecFrameCount2 =AsInteger(CurrentSection.FrameCount );
--     SecOnInsert2   =AsString (CurrentSection.OnInsert   );
--     SecAfterInsert2=AsString (CurrentSection.AfterInsert);
--     SecOnDelete2   =AsString (CurrentSection.OnDelete   );
--     SecAfterDelete2=AsString (CurrentSection.AfterDelete);

     --ClearVariable(РАБ.НФА.B02.CellLinksValue2   );
     ClearVariable(РАБ.НФА.B02.iCellMethodsValue2);
     ClearVariable(РАБ.НФА.B02.lCellMethodsValue2);
     ClearVariable(РАБ.НФА.B02.sCellMethodsValue2);

     ClearVariable(РАБ.НФА.B02.nColMethodsValue2);
     ClearVariable(РАБ.НФА.B02.lColMethodsValue2);
     ClearVariable(РАБ.НФА.B02.nRowMethodsValue2);
     ClearVariable(РАБ.НФА.B02.lRowMethodsValue2);

     for y=1..SecRows2 do -- считываем параметры строк
       xyt=(y-1)*(nRowMethods2-lRowMethods2)-lRowMethods2+1;
       for t=lRowMethods2..nRowMethods2-1 do -- логические параметры
	 lRowMethodsValue2[xyt+t]=AsLogical(CurrentSection.Row(y,RowMethods2[t],''));
       od;
       xyt=(y-1)*(CountRowMethods2+1-nRowMethods2)-nRowMethods2+1;
       for t=nRowMethods2..CountRowMethods2 do -- логические параметры
	 nRowMethodsValue2[xyt+t]=AsInteger(CurrentSection.Row(y,RowMethods2[t],''));
       od;
     od;
     for y=1..SecCols2 do -- считываем параметры столбцов
       xyt=(y-1)*(nColMethods2-lColMethods2)-lColMethods2+1;
       for t=lColMethods2..nColMethods2-1 do -- логические параметры
	 lColMethodsValue2[xyt+t]=AsLogical(CurrentSection.Column(y,ColMethods2[t],''));
       od;
       xyt=(y-1)*(CountColMethods2+1-nColMethods2)-nColMethods2+1;
       for t=nColMethods2..CountColMethods2 do -- логические параметры
	 nColMethodsValue2[xyt+t]=AsInteger(CurrentSection.Column(y,ColMethods2[t],''));
       od;
     od;

     for y=1..SecRows2 do
       for x=1..SecCols2 do
	 xy=(y-1)*SecCols2+x;
	 xyt=(xy-1)*(lCellMethods2-iCellMethods2)-iCellMethods2+1;
	 for t=iCellMethods2..lCellMethods2-1 do
	   iCellMethodsValue2[xyt+t]=AsInteger(CurrentSection.Cell(y,x,CellMethods2[t],''));
	 od;
	 xyt=(xy-1)*(sCellMethods2-lCellMethods2)-lCellMethods2+1;
	 for t=lCellMethods2..sCellMethods2-1 do
	   lCellMethodsValue2[xyt+t]=AsLogical(CurrentSection.Cell(y,x,CellMethods2[t],''));
	 od;
	 xyt=(xy-1)*(CountCellMethods2+1-sCellMethods2)-sCellMethods2+1;
	 for t=sCellMethods2..CountCellMethods2 do
	   sCellMethodsValue2[xyt+t]=AsString(CurrentSection.Cell(y,x,CellMethods2[t],''));
	   if CellMethods2[t]=CellContents:
	      if AsInteger(CurrentSection.Cell(y,x,CellFieldType,''))<>cftStaticText:
		 if pos('[',sCellMethodsValue2[xyt+t])<1 and length(trim(sCellMethodsValue2[xyt+t]))>0:
		   sCellMethodsValue2[xyt+t]=sCellMethodsValue2[xyt+t]+'[';
		 fi;
	      fi;
	   fi;
	 od;
       od;
     od;
   | true:^false;
  fi;
  LastSection2=NameSection;
  ^true;
2end;






Proc LoadSectionlMethods;
var t:i;
  if CountCellMethods>0:exit;fi;
  t=0;
  ClearVariable(РАБ.НФА.B02.CellMethods);
  t=t+1;CellMethods[t]=CellFieldType ; -- integer		  1
  t=t+1;CellMethods[t]=CellFontStyle ; -- integer		  2
  t=t+1;CellMethods[t]=CellFontSize  ; -- integer		  3
--  t=t+1;CellMethods[t]=CellFontColor ; -- integer		    4
  t=t+1;CellMethods[t]=CellAlignment ; -- integer		  5
--  t=t+1;CellMethods[t]=CellBgColor   ; -- integer		    6
  t=t+1;CellMethods[t]=CellBevel     ; --logical		  7
  t=t+1;CellMethods[t]=CellWrap      ; --logical		  8
--  t=t+1;CellMethods[t]=CellReadOnly  ; --logical		    9
--  t=t+1;CellMethods[t]=CellLookup    ; --logical		    0
--  t=t+1;CellMethods[t]=CellRequired  ; --logical		    1
  t=t+1;CellMethods[t]=CellContents  ; --string 		  2
  t=t+1;CellMethods[t]=CellBorder    ; --string 		  3
  t=t+1;CellMethods[t]=CellFormat    ; --string 		  4
--  t=t+1;CellMethods[t]=CellHint      ; --string		    5
--  t=t+1;CellMethods[t]=CellEventOnEnter   ; -- КлеткаСобытиеПриВходе	    6
--  t=t+1;CellMethods[t]=CellEventOnVerify  ; -- КлеткаСобытиеПриПроверке   7
--  t=t+1;CellMethods[t]=CellEventOnExit    ; -- КлеткаСобытиеПриВыходе     8
--  t=t+1;CellMethods[t]=CellEventOnType    ; -- КлеткаСобытиеПриНаборе     9
--  t=t+1;CellMethods[t]=CellEventOnLookup  ; -- КлеткаСобытиеПриОбзоре     0
--  t=t+1;CellMethods[t]=CellEventOnClick   ; -- КлеткаСобытиеПриНажатии    21

--  t=t+1;CellMethods[t]=CellLinesCount;--t=22
--  t=t+1;CellMethods[t]=CellValue     ;--t=23 --*
--  t=t+1;CellMethods[t]=CellText      ;--t=24 --string
  CountCellMethods=t;
  iCellMethods=1;
  lCellMethods=5;
  sCellMethods=7;

  t=0;
  ClearVariable(РАБ.НФА.B02.ColMethods);
  t=t+1;ColMethods[t]=ColVisible ; -- logical
  t=t+1;ColMethods[t]=ColWidth	 ; -- real
  t=t+1;ColMethods[t]=ColLeft	 ; -- real
  CountColMethods=t-1;-- не берем данные только для чтения (ColLeft)
  lColMethods=1;
  nColMethods=2;

  t=0;
  ClearVariable(РАБ.НФА.B02.RowMethods);
--  t=t+1;RowMethods[t]=RowVisible ; -- logical
  t=t+1;RowMethods[t]=RowNewPage ; -- logical
  t=t+1;RowMethods[t]=RowHeight  ; -- real
  t=t+1;RowMethods[t]=RowTop	 ; -- real
  CountRowMethods=t-1;-- не берем данные только для чтения (RowTop)
  lRowMethods=1;
  nRowMethods=2;
end;
2-- Раздел, возвращающий наименование показателя по его коду
2Func0 NameColor(i:i):s;
 if i=coBlack	   :^'coBlack	    Черный	    ';
  | i=coWhite	   :^'coWhite	    Белый	    ';
  | i=coMaroon	   :^'coMaroon	    ТемноКрасный    ';
  | i=coRed	   :^'coRed	    Красный	    ';
  | i=coTeal	   :^'coTeal	    ТемноАква	    ';
  | i=coAqua	   :^'coAqua	    Аква	    ';
  | i=coNavy	   :^'coNavy	    ТемноСиний	    ';
  | i=coBlue	   :^'coBlue	    Синий	    ';
  | i=coLime	   :^'coLime	    Салатовый	    ';
  | i=coGreen	   :^'coGreen	    Зелёный	    ';
  | i=coOlive	   :^'coOlive	    Оливковый	    ';
  | i=coYellow	   :^'coYellow	    Желтый	    ';
  | i=coGray	   :^'coGray	    Серый	    ';
  | i=coLtGray	   :^'coLtGray	    СветлоСерый     ';
  | i=coPurple	   :^'coPurple	    Фиолетовый	    ';
  | i=coFuchsia    :^'coFuchsia     Розовый	    ';
  | i=coTransparent:^'coTransparent Прозрачный	    ';
--  | i=coBackground :^'coBackground  Задний план     ';
--  | i=coDkGray     :^'coDkGray      ТемноСерый      ';
--  | i=coSilver     :^'coSilver      Серебреный      ';
  | true:^str(i);
 fi;
2End0;
2Proc0 GetCodsColor; -- заполняет массив РАБ.НФА.B02.codi кодами стандартных констант цветов
  ClearVariable(РАБ.НФА.B02.codi);
  codi[01]=coBlack	;
  codi[02]=coWhite	;
  codi[03]=coMaroon	;
  codi[04]=coRed	;
  codi[05]=coTeal	;
  codi[06]=coAqua	;
  codi[07]=coNavy	;
  codi[08]=coBlue	;
  codi[09]=coLime	;
  codi[10]=coGreen	;
  codi[11]=coOlive	;
  codi[12]=coYellow	;
  codi[13]=coGray	;
  codi[14]=coLtGray	;
  codi[15]=coPurple	;
  codi[16]=coFuchsia	;
  codi[17]=coTransparent;
2End0;
2Proc0 ВзятьКодыЦвета;GetCodsColor;2End0;

2Func0 ИмяЦвета(i:i):s;^NameColor(i);2End0;

2Func0 NameCellMethod(i:i):s;
 if i=CellFontStyle :^'CellFontStyle |КлеткаСтильШрифта    ';--integer
  | i=CellFontSize  :^'CellFontSize  |КлеткаРазмерШрифта   ';--integer
  | i=CellFontColor :^'CellFontColor |КлеткаЦветШрифта	   ';--integer
  | i=CellAlignment :^'CellAlignment |КлеткаВыравнивание   ';--integer
  | i=CellBgColor   :^'CellBgColor   |КлеткаЦвет	   ';--integer
  | i=CellBorder    :^'CellBorder    |КлеткаБордюр	   ';--logical
  | i=CellBevel     :^'CellBevel     |КлеткаРамка	   ';--string
  | i=CellWrap	    :^'CellWrap      |КлеткаСвертка	   ';--logical
  | i=CellFormat    :^'CellFormat    |КлеткаФормат	   ';--string
  | i=CellReadOnly  :^'CellReadOnly  |КлеткаТолкоВывод	   ';--logical
  | i=CellText	    :^'CellText      |КлеткаТекст	   ';--string
  | i=CellContents  :^'CellContents  |КлеткаСодержимое	   ';--string
  | i=CellHint	    :^'CellHint      |КлеткаПодсказка	   ';--string
  | i=CellFieldType :^'CellFieldType |КлеткаТипПоля	   ';--integer
  | i=CellLookup    :^'CellLookup    |КлеткаСКнопкой	   ';--logical
  | i=CellLinesCount:^'CellLinesCount|КлеткаКоличествоСтрок';--integer
  | i=CellValue     :^'CellValue     |КлеткаЗначение	   ';--string
  | true:^str(i);
 fi;
2End0;
2Func0 ИмяКлеткаМетод(i:i):s;^NameCellMethod(i);2End0;
2Proc0 GetCodsCellMethod; -- заполняет массив РАБ.НФА.B02.codi кодами стандартных констант КлеткаМетод
var t:i;
  t=0;
  ClearVariable(РАБ.НФА.B02.codi);
t=t+1;codi[t]=CellFontStyle ;
t=t+1;codi[t]=CellFontSize  ;
t=t+1;codi[t]=CellFontColor ;
t=t+1;codi[t]=CellAlignment ;
t=t+1;codi[t]=CellBgColor   ;
t=t+1;codi[t]=CellBorder    ;
t=t+1;codi[t]=CellBevel     ;
t=t+1;codi[t]=CellWrap	    ;
t=t+1;codi[t]=CellFormat    ;
t=t+1;codi[t]=CellReadOnly  ;
t=t+1;codi[t]=CellHint	    ;
t=t+1;codi[t]=CellFieldType ;
t=t+1;codi[t]=CellLookup    ;
t=t+1;codi[t]=CellContents  ;
t=t+1;codi[t]=CellEventOnEnter	 ; -- КлеткаСобытиеПриВходе
t=t+1;codi[t]=CellEventOnVerify  ; -- КлеткаСобытиеПриПроверке
t=t+1;codi[t]=CellEventOnExit	 ; -- КлеткаСобытиеПриВыходе
t=t+1;codi[t]=CellEventOnType	 ; -- КлеткаСобытиеПриНаборе
t=t+1;codi[t]=CellEventOnLookup  ; -- КлеткаСобытиеПриОбзоре
t=t+1;codi[t]=CellEventOnClick	 ; -- КлеткаСобытиеПриНажатии
t=t+1;codi[t]=CellLinesCount;--t=21
t=t+1;codi[t]=CellValue     ;--t=22
t=t+1;codi[t]=CellText	    ;--t=23
2End0;
2Proc0 ВзятьКодыКлеткаМетод;GetCodsCellMethod;2End0;
2Func0 NameCellFieldType(i:i):s;
 if i=cftStaticText	 :^'cftStaticText    |ктпСтатическийТекст';
  | i=cftCommonField	 :^'cftCommonField   |ктпОбщееПоле	 ';
  | i=cftStringField	 :^'cftStringField   |ктпСтроковоеПоле	 ';
  | i=ктпЧисловоеПоле	 :^'cftNumberField   |ктпЧисловоеПоле	 ';
  | i=cftDateField	 :^'cftDateField     |ктпПолеДаты	 ';
  | i=ктпПеречислимоеПоле:^'cftFieldEnum     |ктпПеречислимоеПоле';
  | i=cftReferenceField  :^'cftReferenceField|ктпСсылочноеПоле	 ';
  | i=cftCalcField	 :^'cftCalcField     |ктпВычислимоеПоле  ';
 fi;
2End0;
2Func0 ИмяКлеткаТипПоля(i:i):s;^NameCellFieldType(i);2End0;
2Proc0 GetCodsCellFieldType; -- заполняет массив РАБ.НФА.B02.codi кодами стандартных констант КлеткаТипПоля
  ClearVariable(РАБ.НФА.B02.codi);
  codi[01]=cftStaticText      ;
  codi[02]=cftCommonField     ;
  codi[03]=cftStringField     ;
  codi[04]=ктпЧисловоеПоле    ;
  codi[05]=cftDateField       ;
  codi[06]=ктпПеречислимоеПоле;
  codi[07]=cftReferenceField  ;
  codi[08]=cftCalcField       ;
2End0;
2Proc0 ВзятьКодыКлеткаТипПоля;GetCodsCellFieldType;2End0;

2Func0 NameCellAlignment(i:i):s;
 if i=0:^'по левому краю ';
  | i=1:^'по правому краю';
  | i=2:^'центрирование  ';
 fi;
2End0;
2Func0 ИмяКлеткаВыравнивание(i:i):s;^NameCellAlignment(i);2End0;
2Proc0 GetCodsCellAlignment; -- заполняет массив РАБ.НФА.B02.codi кодами стандартных констант КлеткаВыравнивание
  ClearVariable(РАБ.НФА.B02.codi);
  codi[01]=0;
  codi[02]=1;
  codi[03]=2;
2End0;
2Proc0 ВзятьКодыКлеткаВыравнивание;GetCodsCellAlignment;2End0;
2Func0 NameCellBevel(i:i):s;
 if i=0:^'нет бордюра';
  | i=1:^'бордюр тонкий';
  | i=2:^'бордюр толстый';
 fi;
2End0;
2Func0 ИмяКлеткаРамка(i:i):s;^NameCellBevel(i);2End0;

2Func0 NameCellFontStyle(i:i):s;
var i1:i;
var ss:s;
 if i=0:^'Обычн';fi;
 if i>7:ss='Зачерк '	 ;i=i-8;fi;
 if i>3:ss=ss+'Подчерк ' ;i=i-4;fi;
 if i>1:ss=ss+'Наклон '  ;i=i-2;fi;
 if i>0:ss=ss+'Жирность ';i=i-1;fi;
 if i<>0:^str(i);
  | true:^ss;
 fi;
2End0;
2Func0 ИмяКлеткаСтильШрифта(i:i):s;^NameCellFontStyle(i);2End0;
2Proc0 GetCodsCellFontStyle; -- заполняет массив РАБ.НФА.B02.codi кодами стандартных констант КлеткаСтильШрифта
 var j:i;
  ClearVariable(РАБ.НФА.B02.codi);
  for j=1..17 do
    codi[j]=j-1;
  od;
2End0;
2Proc0 ВзятьКодыКлеткаСтильШрифта;GetCodsCellFontStyle;2End0;

2-- Окончание [Раздел, возвращающий наименование показателя по его коду]


2Func 0ВыборФорматаКлетки(ТипПоляКлетки:s):s;
-- ТипПоляКлетки=(ч или ц или n или i)=>число
-- ТипПоляКлетки=(d или д)=>дата
var j,k:i;

ТипПоляКлетки=up(ТипПоляКлетки);
ClearVariable(РАБ.НФА.B02.st);

if pos(ТипПоляКлетки,'ЧЦNI')>0:
    St[1]=',##0.######;;0--точно';
    St[2]=',##0.00;;0--до копеек с нулями';
    St[3]=',##0.00####;;0--точно с нулями для копеек';
    St[4]=',##0;;0--до целых';
  | pos(ТипПоляКлетки,'ДD')>0:
    St[1]='dddd dd mmmm yyyy г.--[пятница 13 мая 2005 г.]';
    St[2]='dd mmmm yyyy--[13 мая 2005]';
    St[3]='dd/mm/yyyy--[13.05.2005]';
    St[4]='dd/mm/yy--[13.05.05]';
 fi;
 j=Alternate('Выбор формата поля',St,-1);
 if j>0:^ВыделитьСлово(1,St[j],'--');fi;
 ^'';
2end;

2Func0 Выбор_КлеткаСтильШрифта(curv_i:i):i;
var j,j0,j00,k,curvi_new:i;
var curv_s,curv,curvs_new:s;
var razd:s;
razd='--';
clearvariable(Раб.НФА.B02.st);
clearvariable(Раб.НФА.B02.it);
--  if v=trim('КлеткаСтильШрифта '):curv_i=CS_КлСтильШрифта [Итер];curv=Раб.НФА.B02.NameCellFontStyle(curv_i);
     st[1]='Отмена';
     st[2]='Выбрать';
     st[3]='====================================='+razd+'====================';
     for j=0..15 do
       st[j+4]=NameCellFontStyle(j)+razd+if(curv_i=j,'<= старое','');
     od;
     curvi_new=curv_i;
     j=curvi_new+4;
     while j>2 do
       if j>3:j0=j;fi;
       j=alternatetree('',Раб.НФА.B02.st,35,j,12,'#','к выбору','значение',25,false);
       if j>3:
	 st[j0]=NameCellFontStyle(j0-4)+razd;
	 st[j]=NameCellFontStyle(j-4)+razd+'<= новое';
	 curvi_new=j-4;
	 st[curv_i+4]=NameCellFontStyle(curv_i)+razd+'<= старое';
       fi;
     od;
     if j=2:^curvi_new;
      | true:^curv_i;
     fi;
2end;
2Func0 Выбор_КлеткаЦвет(curv_i:i):i;
var j,j0,j00,k,curvi_new:i;
var curv_s,curv,curvs_new:s;
var razd:s;
razd='--';
clearvariable(Раб.НФА.B02.st);
clearvariable(Раб.НФА.B02.it);
--   | v=trim('КлеткаЦветШрифта  '):curv_i=CS_КлЦветШрифта  [Итер];curv=Раб.НФА.B02.NameColor(curv_i);
     GetCodsColor;
     st[1]='Отмена';
     st[2]='Выбрать';
     st[3]='====================================='+razd+'====================';
     for j=1..17 do
       st[j+4]=NameColor(codi[j])+razd;
       if curv_i=codi[j]:
	  st[j+4]=st[j+4]+'<= старое';
	  j0=j+4;
	  j00=j+4;
       fi;
     od;
     curvi_new=curv_i;
     j=j00;
     while j>2 do
       if j>3:j0=j;fi;
       j=alternatetree('',Раб.НФА.B02.st,35,j,12,'#','к выбору','значение',25,false);
       if j>3:
	 st[j0]=NameColor(codi[j0-4])+razd;
	 st[j]=NameColor(codi[j-4])+razd+'<= новое';
	 curvi_new=codi[j-4];
	 st[j00]=NameColor(codi[j00-4])+razd+'<= старое';
       fi;
     od;
     if j=2:^curvi_new;
      | true:^curv_i;
     fi;
2end;

2Func0 Выбор_КлеткаВыравнивание(curv_i:i):i;
var j,j0,j00,k,curvi_new:i;
var curv_s,curv,curvs_new:s;
var razd:s;
razd='--';
clearvariable(Раб.НФА.B02.st);
clearvariable(Раб.НФА.B02.it);
     st[1]='Отмена';
     st[2]='Выбрать';
     st[3]='====================================='+razd+'====================';
     for j=0..15 do
       st[j+4]=NameCellAlignment(j)+razd+if(curv_i=j,'<= старое','');
     od;
     curvi_new=curv_i;
     j=curvi_new+4;
     while j>2 do
       if j>3:j0=j;fi;
       j=alternatetree('',Раб.НФА.B02.st,35,j,12,'#','к выбору','значение',25,false);
       if j>3:
	 st[j0]=NameCellAlignment(j0-4)+razd;
	 st[j]=NameCellAlignment(j-4)+razd+'<= новое';
	 curvi_new=j-4;
	 st[curv_i+4]=NameCellAlignment(curv_i)+razd+'<= старое';
       fi;
     od;
     if j=2:^curvi_new;
      | true:^curv_i;
     fi;
2end;
2Func0 Выбор_КлБордюр(curv_l:l):l;
var j,j0,j00,k,curvi_new,curv_i:i;
var curvl_new:l;
var curv_s,curv,curvs_new:s;
var razd:s;
razd='--';
clearvariable(Раб.НФА.B02.st);
clearvariable(Раб.НФА.B02.it);
     curv_i=if(curv_l,1,0);
     st[1]='Отмена';
     st[2]='Выбрать';
     st[3]='====================================='+razd+'====================';
     for j=0..1 do
       st[j+4]	=if(j=0,'Бордюр выкл','Бордюр вкл')+razd+if(curv_i=j  ,'<= старое','');
     od;
     curvi_new=curv_i;
     j=curvi_new+4;
     while j>2 do
       if j>3:j0=j;fi;
       j=alternatetree('',st,35,j,12,'#','к выбору','значение',25,false);
       if j>3:
	 st[j0]=if((j0-4)=0,'Бордюр выкл','Бордюр вкл')+razd;
	 st[j]=if((j-4)=0,'Бордюр выкл','Бордюр вкл')+razd+'<= новое';
	 curvi_new=j-4;
	 st[curv_i+4]=if(curv_i=0,'Бордюр выкл','Бордюр вкл')+razd+'<= старое';
       fi;
     od;

     if j=2:^curvi_new=1;
      | true:^curv_i=1;
     fi;
2end;

2Func0 Выбор_КлеткаРамка(curv_s:s):s;
var j,j0,j00,k,curvi_new:i;
var curv,curvs_new:s;
var razd:s;
razd='--';
clearvariable(Раб.НФА.B02.st);
clearvariable(Раб.НФА.B02.it);
     it[1]=int(ВыделитьСлово(1,curv_s,','));
     it[2]=int(ВыделитьСлово(2,curv_s,','));
     it[3]=int(ВыделитьСлово(3,curv_s,','));
     it[4]=int(ВыделитьСлово(4,curv_s,','));

     st[1]='Отмена';
     st[2]='Выбрать';
     st[3]='====================================='+razd+'====================';
     st[4]='ЛЕВО____'+NameCellBevel(it[1])+razd+NameCellBevel(it[1]);
     st[5]='ВЕРХ____'+NameCellBevel(it[2])+razd+NameCellBevel(it[2]);
     st[6]='ПРАВО___'+NameCellBevel(it[3])+razd+NameCellBevel(it[3]);
     st[7]='НИЗ_____'+NameCellBevel(it[4])+razd+NameCellBevel(it[4]);
     j=4;
     while j>2 do
--	 if j>3:j0=j;fi;
       j=alternatetree('',st,35,j,12,'#','Старое значение','Новое значение',20,false);
       if j>3:
	 it[j-3]=it[j-3]+1;if it[j-3]>2:it[j-3]=0;fi;
	 st[j]=ВыделитьСлово(1,st[j],razd)+razd+NameCellBevel(it[j-3]);
       fi;
     od;
     if j=2:^str(it[1])+','+str(it[2])+','+str(it[3])+','+str(it[4]);
      | true:^curv_s;
     fi;
2end;

2Func0 Выбор_КлеткаСвертка(curv_l:l):l;
var j,j0,j00,k,curvi_new,curv_i:i;
var curvl_new:l;
var curv_s,curv,curvs_new:s;
var razd:s;
razd='--';
clearvariable(Раб.НФА.B02.st);
clearvariable(Раб.НФА.B02.it);
     curv_i=if(curv_l,1,0);

     st[1]='Отмена';
     st[2]='Выбрать';
     st[3]='====================================='+razd+'====================';
     for j=0..1 do
       st[j+4]	=if(j=0,'Свертка выкл','Свертка вкл')+razd+if(curv_i=j	,'<= старое','');
     od;
     curvi_new=curv_i;
     j=curvi_new+4;
     while j>2 do
       if j>3:j0=j;fi;
       j=alternatetree('',st,35,j,12,'#','к выбору','значение',25,false);
       if j>3:
	 st[j0]=if((j0-4)=0,'Свертка выкл','Свертка вкл')+razd;
	 st[j]=if((j-4)=0,'Свертка выкл','Свертка вкл')+razd+'<= новое';
	 curvi_new=j-4;
	 st[curv_i+4]=if(curv_i=0,'Свертка выкл','Свертка вкл')+razd+'<= старое';
       fi;
     od;

     if j=2:^curvi_new=1;
      | true:^curv_i=1;
     fi;
2end;

2Func0 Выбор_КлеткаТолькоВывод(curv_l:l):l;
var j,j0,j00,k,curvi_new,curv_i:i;
var curvl_new:l;
var curv_s,curv,curvs_new:s;
var razd:s;
razd='--';
clearvariable(Раб.НФА.B02.st);
clearvariable(Раб.НФА.B02.it);
     curv_i=if(curv_l,1,0);

     st[1]='Отмена';
     st[2]='Выбрать';
     st[3]='====================================='+razd+'====================';
     for j=0..1 do
       st[j+4]	=if(j=0,'Только вывод выкл','Только вывод вкл')+razd+if(curv_i=j  ,'<= старое','');
     od;
     curvi_new=curv_i;
     j=curvi_new+4;
     while j>2 do
       if j>3:j0=j;fi;
       j=alternatetree('',st,35,j,12,'#','к выбору','значение',25,false);
       if j>3:
	 st[j0]=if((j0-4)=0,'Только вывод выкл','Только вывод вкл')+razd;
	 st[j]=if((j-4)=0,'Только вывод выкл','Только вывод вкл')+razd+'<= новое';
	 curvi_new=j-4;
	 st[curv_i+4]=if(curv_i=0,'Только вывод выкл','Только вывод вкл')+razd+'<= старое';
       fi;
     od;

     if j=2:^curvi_new=1;
      | true:^curv_i=1;
     fi;
2end;
2Func0 Выбор_КлеткаСКнопкой(curv_l:l):l;
var j,j0,j00,k,curvi_new,curv_i:i;
var curvl_new:l;
var curv_s,curv,curvs_new:s;
var razd:s;
razd='--';
clearvariable(Раб.НФА.B02.st);
clearvariable(Раб.НФА.B02.it);
     curv_i=if(curv_l,1,0);

     st[1]='Отмена';
     st[2]='Выбрать';
     st[3]='====================================='+razd+'====================';
     for j=0..1 do
       st[j+4]	=if(j=0,'С кнопкой выкл','С кнопкой вкл')+razd+if(curv_i=j  ,'<= старое','');
     od;
     curvi_new=curv_i;
     j=curvi_new+4;
     while j>2 do
       if j>3:j0=j;fi;
       j=alternatetree('',st,35,j,12,'#','к выбору','значение',25,false);
       if j>3:
	 st[j0]=if((j0-4)=0,'С кнопкой выкл','С кнопкой вкл')+razd;
	 st[j]=if((j-4)=0,'С кнопкой выкл','С кнопкой вкл')+razd+'<= новое';
	 curvi_new=j-4;
	 st[curv_i+4]=if(curv_i=0,'С кнопкой выкл','С кнопкой вкл')+razd+'<= старое';
       fi;
     od;

     if j=2:^curvi_new=1;
      | true:^curv_i=1;
     fi;
2end;

2Func0 Выбор_СтбВидим(curv_l:l):l;
var j,j0,j00,k,curvi_new,curv_i:i;
var curvl_new:l;
var curv_s,curv,curvs_new:s;
var razd:s;
razd='--';
clearvariable(Раб.НФА.B02.st);
clearvariable(Раб.НФА.B02.it);
     curv_i=if(curv_l,1,0);
     st[1]='Отмена';
     st[2]='Выбрать';
     st[3]='====================================='+razd+'====================';
     for j=0..1 do
       st[j+4]	=if(j=0,'Столбец скрыт','Столбец видимый')+razd+if(curv_i=j  ,'<= старое','');
     od;
     curvi_new=curv_i;
     j=curvi_new+4;
     while j>2 do
       if j>3:j0=j;fi;
       j=alternatetree('',st,35,j,12,'#','к выбору','значение',25,false);
       if j>3:
	 st[j0]=if((j0-4)=0,'Столбец скрыт','Столбец видимый')+razd;
	 st[j]=if((j-4)=0,'Столбец скрыт','Столбец видимый')+razd+'<= новое';
	 curvi_new=j-4;
	 st[curv_i+4]=if(curv_i=0,'Столбец скрыт','Столбец видимый')+razd+'<= старое';
       fi;
     od;

     if j=2:^curvi_new=1;
      | true:^curv_i=1;
     fi;
2end;

Func LoadSection(NameSection:s):l;
var CurrentSection:Object;
var x,y,xyt,xy,t:i;
  if FindObject(NameSection,CurrentSection):
     LoadSectionlMethods;
     SecCols	   =AsInteger(CurrentSection.ColsCount	);
     SecRows	   =AsInteger(CurrentSection.RowsCount	);
--     SecCanPrint   =AsLogical(CurrentSection.CanPrint   );
--     SecVisible    =AsLogical(CurrentSection.Visible	  );
--     SecFrameCount =AsInteger(CurrentSection.FrameCount );
--     SecOnInsert   =AsString (CurrentSection.OnInsert   );
--     SecAfterInsert=AsString (CurrentSection.AfterInsert);
--     SecOnDelete   =AsString (CurrentSection.OnDelete   );
--     SecAfterDelete=AsString (CurrentSection.AfterDelete);

     --ClearVariable(РАБ.НФА.B02.CellLinksValue   );
     ClearVariable(РАБ.НФА.B02.iCellMethodsValue);
     ClearVariable(РАБ.НФА.B02.lCellMethodsValue);
     ClearVariable(РАБ.НФА.B02.sCellMethodsValue);

     ClearVariable(РАБ.НФА.B02.nColMethodsValue);
     ClearVariable(РАБ.НФА.B02.lColMethodsValue);
     ClearVariable(РАБ.НФА.B02.nRowMethodsValue);
     ClearVariable(РАБ.НФА.B02.lRowMethodsValue);

     for y=1..SecRows do -- считываем параметры строк
       xyt=(y-1)*(nRowMethods-lRowMethods)-lRowMethods+1;
       for t=lRowMethods..nRowMethods-1 do -- логические параметры
	 lRowMethodsValue[xyt+t]=AsLogical(CurrentSection.Row(y,RowMethods[t],''));
       od;
       xyt=(y-1)*(CountRowMethods+1-nRowMethods)-nRowMethods+1;
       for t=nRowMethods..CountRowMethods do -- логические параметры
	 nRowMethodsValue[xyt+t]=AsInteger(CurrentSection.Row(y,RowMethods[t],''));
       od;
     od;
     for y=1..SecCols do -- считываем параметры столбцов
       xyt=(y-1)*(nColMethods-lColMethods)-lColMethods+1;
       for t=lColMethods..nColMethods-1 do -- логические параметры
	 lColMethodsValue[xyt+t]=AsLogical(CurrentSection.Column(y,ColMethods[t],''));
       od;
       xyt=(y-1)*(CountColMethods+1-nColMethods)-nColMethods+1;
       for t=nColMethods..CountColMethods do -- логические параметры
	 nColMethodsValue[xyt+t]=AsInteger(CurrentSection.Column(y,ColMethods[t],''));
       od;
     od;

     for y=1..SecRows do
       for x=1..SecCols do
	 xy=(y-1)*SecCols+x;
	 xyt=(xy-1)*(lCellMethods-iCellMethods)-iCellMethods+1;
	--длинамассива(test);

	 for t=iCellMethods..lCellMethods-1 do
	   iCellMethodsValue[xyt+t]=AsInteger(CurrentSection.Cell(y,x,CellMethods[t],''));
	 od;
	 xyt=(xy-1)*(sCellMethods-lCellMethods)-lCellMethods+1;
	 for t=lCellMethods..sCellMethods-1 do
	   lCellMethodsValue[xyt+t]=AsLogical(CurrentSection.Cell(y,x,CellMethods[t],''));
	 od;
	 xyt=(xy-1)*(CountCellMethods+1-sCellMethods)-sCellMethods+1;
	 for t=sCellMethods..CountCellMethods do
	   sCellMethodsValue[xyt+t]=AsString(CurrentSection.Cell(y,x,CellMethods[t],''));
	   if CellMethods[t]=CellContents:
	      if AsInteger(CurrentSection.Cell(y,x,CellFieldType,''))<>cftStaticText:
	 if pos('[',sCellMethodsValue[xyt+t])<1 and length(trim(sCellMethodsValue[xyt+t]))>0:
	   sCellMethodsValue[xyt+t]=sCellMethodsValue[xyt+t]+'[';
	 fi;
--	   if ПеременнаяСуществует(sCellMethodsValue[xyt+t]):
--	   fi;
	      fi;
	   fi;
	 od;
       od;
     od;
   | true:^false;
  fi;
  LastSection='NameSection';
  ^true;
2end;
--СекРеквМК.CellLinks(5, 2, 7, 4); объединяем в секции "СекРеквМК" 5, 6, 7 столбцы и 2, 3 и 4 строки в одну клетку
--	      xl,yl,xr,yr

Func AddSection(NameSectionFrom:s;NameSectionTo:s;iter0:i;iter1:i;FullCopy:l;SetOnlyRead:l;PageEnd:i;showmsg:s):i;
var CurrentSection:Object;
var x,y,xyt,xy,t,WriteRow,iter,NotIter:i;
var new,ll:l;
  if showmsg<>'':ОкноВыполненияПоказать(iter1,showmsg);fi;
  if LastSection<>NameSectionFrom:--подгрузка секции при необходимости
     if not LoadSection(NameSectionFrom):^-1;fi;-- не нашли секцию "откуда"
  fi;
  new=false;
  if not FindObject(NameSectionTo,CurrentSection):^-2;fi;-- не нашли секцию "куда"
  if SecCols<>AsInteger(CurrentSection.ColsCount  ):CurrentSection.ColsCount=SecCols;new=true;fi; -- если кол столбцов не совпадает то рисуем всю секцию с нуля
  if new:WriteRow=0;
   | true:WriteRow=AsInteger(CurrentSection.RowsCount);
  fi;
  WriteRow=WriteRow-SecRows;
  for y=1..SecCols do -- считываем параметры столбцов
    xyt=(y-1)*(nColMethods-lColMethods)-lColMethods+1;
    for t=lColMethods..nColMethods-1 do -- логические параметры
	CurrentSection.Column(y,ColMethods[t],lColMethodsValue[xyt+t]);
    od;
    xyt=(y-1)*(CountColMethods+1-nColMethods)-nColMethods+1;
    for t=nColMethods..CountColMethods do -- числовые параметры
      CurrentSection.Column(y,ColMethods[t],nColMethodsValue[xyt+t]);
    od;
  od;
  CurrentSection.RowsCount=WriteRow+SecRows*(iter1-iter0+1);-- добавили в секцию строк для формирования страницы
  for iter=iter0..iter1 do
    WriteRow=WriteRow+SecRows;
--    CurrentSection.RowsCount=WriteRow+SecRows;-- добавили в секцию строк для формирования
    for y=1..SecRows do
      -- параметры строк начало
      xyt=(y-1)*(nRowMethods-lRowMethods)-lRowMethods+1;
      for t=lRowMethods..nRowMethods-1 do -- логические параметры
	  CurrentSection.Row(y+WriteRow,RowMethods[t],lRowMethodsValue[xyt+t]);
      od;
      xyt=(y-1)*(CountRowMethods+1-nRowMethods)-nRowMethods+1;
      for t=nRowMethods..CountRowMethods do -- числовые параметры
	if not(not FullCopy and RowMethods[t]=RowHeight):-- если не полное копирование, то не копируем значение высоты строк
	  CurrentSection.Row(y+WriteRow,RowMethods[t],nRowMethodsValue[xyt+t]);
	fi;
      od;
      -- параметры строк конец
      -- параметры клеток для каждойстроки начало
      for x=1..SecCols do
	xy=(y-1)*SecCols+x;
	xyt=(xy-1)*(CountCellMethods+1-sCellMethods)-sCellMethods+1;
	for t=sCellMethods..CountCellMethods do
	  if trim(sCellMethodsValue[xyt+t])<>'':
	    if CellMethods[t]=CellContents:-- подстановка координат итераций
	       if pos('[',sCellMethodsValue[xyt+t])>1 and pos(']',sCellMethodsValue[xyt+t])<1:
		  CurrentSection.Cell(y+WriteRow,x,CellMethods[t],sCellMethodsValue[xyt+t]+str(iter)+']');
		| true:CurrentSection.Cell(y+WriteRow,x,CellMethods[t],sCellMethodsValue[xyt+t]);
	       fi;
	     | true:CurrentSection.Cell(y+WriteRow,x,CellMethods[t],sCellMethodsValue[xyt+t]);
	    fi;
	  fi;
	od;
	xyt=(xy-1)*(lCellMethods-iCellMethods)-iCellMethods+1;
	for t=iCellMethods..lCellMethods-1 do
	  CurrentSection.Cell(y+WriteRow,x,CellMethods[t],iCellMethodsValue[xyt+t]);
	od;
	xyt=(xy-1)*(sCellMethods-lCellMethods)-lCellMethods+1;
	for t=lCellMethods..sCellMethods-1 do
	  if lCellMethodsValue[xyt+t]:
	    CurrentSection.Cell(y+WriteRow,x,CellMethods[t],lCellMethodsValue[xyt+t]);
	  fi;
	od;
	if SetOnlyRead:
	   CurrentSection.Cell(y+WriteRow,x,CellReadOnly,true);
	   CurrentSection.Cell(y+WriteRow,x,CellLookup,false);
	fi;
      od;
    od;
    if PageEnd>0:
       ll=not ll;
--	 CurrentSection.Column(1,ColVisible,ll);
--	 ОкноВыполненияЗакрыть;
--	 ОкноВыполненияПоказать(iter1,showmsg);
       if showmsg<>'':Шаблон.Поле='итогоФакт';fi;
       if showmsg<>'':ОкноВыполненияПоложение(iter);fi;
--	 CurrentSection.Column(1,ColVisible,true);
       if showmsg<>'':CurrentSection.Column(SecCols,ColVisible,true);fi;
       if showmsg<>'':CurrentSection.Column(SecCols,ColVisible,false);fi;
       if showmsg<>'':ОкноВыполненияПоказать(iter1,showmsg);fi;
       if AsInteger(CurrentSection.Row(WriteRow+1,RowTop,''))>PageEnd:
	  NotIter=iter1-iter+1;
	  CurrentSection.RowsCount=WriteRow;-- убрали лишние строки
	  if showmsg<>'':ОкноВыполненияЗакрыть;fi;
	  ^NotIter;
       fi;
    fi;

    t=LengthOfArray(CellLinksValue);
    for x=1..t do
      CurrentSection.CellLinks(int(ВыделитьСлово(1,CellLinksValue[x],',')),int(ВыделитьСлово(2,CellLinksValue[x],','))+WriteRow,int(ВыделитьСлово(3,CellLinksValue[x],',')),int(ВыделитьСлово(4,CellLinksValue[x],','))+WriteRow);
    od;
  od;
  if iter0>iter1:NotIter=0;fi;
  if showmsg<>'':ОкноВыполненияЗакрыть;fi;
  ^NotIter;
2end;
Func AddSection1(NameSectionFrom:s;NameSectionTo:s;iter0:i;iter1:i;FullCopy:l;SetOnlyRead:l;PageEnd:i;showmsg:s):i;
var CurrentSection:Object;
var x,y,xyt,xy,t,WriteRow,iter,NotIter:i;
var new:l;
  if showmsg<>'':ShowProgress(iter1-iter0+1,showmsg);fi;
  if LastSection<>NameSectionFrom:--подгрузка секции при необходимости
     if not LoadSection1(NameSectionFrom):^-1;fi;-- не нашли секцию "откуда"
  fi;
  new=false;
  if not FindObject(NameSectionTo,CurrentSection):^-2;fi;-- не нашли секцию "куда"
  if SecCols1<>AsInteger(CurrentSection.ColsCount  ):CurrentSection.ColsCount=SecCols1;new=true;fi; -- если кол столбцов не совпадает то рисуем всю секцию с нуля
  if new:WriteRow=0;
   | true:WriteRow=AsInteger(CurrentSection.RowsCount);
  fi;
  WriteRow=WriteRow-SecRows1;
  for y=1..SecCols1 do -- считываем параметры столбцов
    xyt=(y-1)*(nColMethods1-lColMethods1)-lColMethods1+1;
    for t=lColMethods1..nColMethods1-1 do -- логические параметры
	CurrentSection.Column(y,ColMethods1[t],lColMethodsValue1[xyt+t]);
    od;
    xyt=(y-1)*(CountColMethods1+1-nColMethods1)-nColMethods1+1;
    for t=nColMethods1..CountColMethods1 do -- числовые параметры
      CurrentSection.Column(y,ColMethods1[t],nColMethodsValue1[xyt+t]);
    od;
  od;
--  CurrentSection.RowsCount=WriteRow+(iter1-iter0+1)*SecRows+SecRows;-- добавили в секцию строк для формирования
  for iter=iter0..iter1 do
    WriteRow=WriteRow+SecRows1;
    CurrentSection.RowsCount=WriteRow+SecRows1;-- добавили в секцию строк для формирования
    if PageEnd>0:
       CurrentSection.Column(1,ColVisible,false);
       if showmsg<>'':ОкноВыполненияПоложение(iter-iter0+2);fi;
       CurrentSection.Column(1,ColVisible,true);
       if AsInteger(CurrentSection.Row(WriteRow+1,RowTop,''))>PageEnd:
	  NotIter=iter1-iter+1;
	  CurrentSection.RowsCount=WriteRow;-- убрали лишние строки
	  if showmsg<>'':ОкноВыполненияЗакрыть;fi;
	  ^NotIter;
       fi;
    fi;
    for y=1..SecRows1 do
      -- параметры строк начало
      xyt=(y-1)*(nRowMethods1-lRowMethods1)-lRowMethods1+1;
      for t=lRowMethods1..nRowMethods1-1 do -- логические параметры
	  CurrentSection.Row(y+WriteRow,RowMethods1[t],lRowMethodsValue1[xyt+t]);
      od;
      xyt=(y-1)*(CountRowMethods1+1-nRowMethods1)-nRowMethods1+1;
      for t=nRowMethods1..CountRowMethods1 do -- числовые параметры
	if not(not FullCopy and RowMethods1[t]=RowHeight):-- если не полное копирование, то не копируем значение высоты строк
	  CurrentSection.Row(y+WriteRow,RowMethods1[t],nRowMethodsValue1[xyt+t]);
	fi;
      od;
      -- параметры строк конец
      -- параметры клеток для каждойстроки начало
      for x=1..SecCols1 do
	xy=(y-1)*SecCols1+x;
	xyt=(xy-1)*(lCellMethods1-iCellMethods1)-iCellMethods1+1;
	for t=iCellMethods1..lCellMethods1-1 do
	  CurrentSection.Cell(y+WriteRow,x,CellMethods1[t],iCellMethodsValue1[xyt+t]);
	od;
	xyt=(xy-1)*(sCellMethods1-lCellMethods1)-lCellMethods1+1;
	for t=lCellMethods1..sCellMethods1-1 do
	  if lCellMethodsValue1[xyt+t]:
	    CurrentSection.Cell(y+WriteRow,x,CellMethods1[t],lCellMethodsValue1[xyt+t]);
	  fi;
	od;
	xyt=(xy-1)*(CountCellMethods1+1-sCellMethods1)-sCellMethods1+1;
	for t=sCellMethods1..CountCellMethods1 do
	  if trim(sCellMethodsValue1[xyt+t])<>'':
	    if CellMethods1[t]=CellContents:-- подстановка координат итераций
	       if pos('[',sCellMethodsValue1[xyt+t])>1 and pos(']',sCellMethodsValue1[xyt+t])<1:
		  CurrentSection.Cell(y+WriteRow,x,CellMethods1[t],sCellMethodsValue1[xyt+t]+str(iter)+']');
		| true:CurrentSection.Cell(y+WriteRow,x,CellMethods1[t],sCellMethodsValue1[xyt+t]);
	       fi;
	     | true:CurrentSection.Cell(y+WriteRow,x,CellMethods1[t],sCellMethodsValue1[xyt+t]);
	    fi;
	  fi;
	od;
	if SetOnlyRead:
	   CurrentSection.Cell(y+WriteRow,x,CellReadOnly,true);
	   CurrentSection.Cell(y+WriteRow,x,CellLookup,false);
	fi;
      od;
    od;
    CurrentSection.Column(SecCols1,ColVisible,true);
    CurrentSection.Column(SecCols1,ColVisible,false);
    if showmsg<>'':ОкноВыполненияПоложение(iter);fi;
    t=LengthOfArray(CellLinksValue1);
    for x=1..t do
      CurrentSection.CellLinks(int(ВыделитьСлово(1,CellLinksValue1[x],',')),int(ВыделитьСлово(2,CellLinksValue1[x],','))+WriteRow,int(ВыделитьСлово(3,CellLinksValue1[x],',')),int(ВыделитьСлово(4,CellLinksValue1[x],','))+WriteRow);
    od;
  od;
  if iter0>iter1:NotIter=0;fi;
  if showmsg<>'':ОкноВыполненияЗакрыть;fi;
  ^NotIter;
2end;

Func AddSection2(NameSectionFrom:s;NameSectionTo:s;iter0:i;iter1:i;FullCopy:l;SetOnlyRead:l;PageEnd:i;showmsg:s):i;
var CurrentSection:Object;
var x,y,xyt,xy,t,WriteRow,iter,NotIter:i;
var new:l;
  if showmsg<>'':ShowProgress(iter1-iter0+1,showmsg);fi;
  if LastSection<>NameSectionFrom:--подгрузка секции при необходимости
     if not LoadSection2(NameSectionFrom):^-1;fi;-- не нашли секцию "откуда"
  fi;
  new=false;
  if not FindObject(NameSectionTo,CurrentSection):^-2;fi;-- не нашли секцию "куда"
  if SecCols2<>AsInteger(CurrentSection.ColsCount  ):CurrentSection.ColsCount=SecCols2;new=true;fi; -- если кол столбцов не совпадает то рисуем всю секцию с нуля
  if new:WriteRow=0;
   | true:WriteRow=AsInteger(CurrentSection.RowsCount);
  fi;
  WriteRow=WriteRow-SecRows2;
  for y=1..SecCols2 do -- считываем параметры столбцов
    xyt=(y-1)*(nColMethods2-lColMethods2)-lColMethods2+1;
    for t=lColMethods2..nColMethods2-1 do -- логические параметры
	CurrentSection.Column(y,ColMethods2[t],lColMethodsValue2[xyt+t]);
    od;
    xyt=(y-1)*(CountColMethods2+1-nColMethods2)-nColMethods2+1;
    for t=nColMethods2..CountColMethods2 do -- числовые параметры
      CurrentSection.Column(y,ColMethods2[t],nColMethodsValue2[xyt+t]);
    od;
  od;
--  CurrentSection.RowsCount=WriteRow+(iter1-iter0+1)*SecRows+SecRows;-- добавили в секцию строк для формирования
  for iter=iter0..iter1 do
    WriteRow=WriteRow+SecRows2;
    CurrentSection.RowsCount=WriteRow+SecRows2;-- добавили в секцию строк для формирования
    if PageEnd>0:
       CurrentSection.Column(1,ColVisible,false);
       if showmsg<>'':ОкноВыполненияПоложение(iter-iter0+2);fi;
       CurrentSection.Column(1,ColVisible,true);
       if AsInteger(CurrentSection.Row(WriteRow+1,RowTop,''))>PageEnd:
	  NotIter=iter1-iter+1;
	  CurrentSection.RowsCount=WriteRow;-- убрали лишние строки
	  if showmsg<>'':ОкноВыполненияЗакрыть;fi;
	  ^NotIter;
       fi;
    fi;
    for y=1..SecRows2 do
      -- параметры строк начало
      xyt=(y-1)*(nRowMethods2-lRowMethods2)-lRowMethods2+1;
      for t=lRowMethods2..nRowMethods2-1 do -- логические параметры
	  CurrentSection.Row(y+WriteRow,RowMethods2[t],lRowMethodsValue2[xyt+t]);
      od;
      xyt=(y-1)*(CountRowMethods2+1-nRowMethods2)-nRowMethods2+1;
      for t=nRowMethods2..CountRowMethods2 do -- числовые параметры
	if not(not FullCopy and RowMethods2[t]=RowHeight):-- если не полное копирование, то не копируем значение высоты строк
	  CurrentSection.Row(y+WriteRow,RowMethods2[t],nRowMethodsValue2[xyt+t]);
	fi;
      od;
      -- параметры строк конец
      -- параметры клеток для каждойстроки начало
      for x=1..SecCols2 do
	xy=(y-1)*SecCols2+x;
	xyt=(xy-1)*(lCellMethods2-iCellMethods2)-iCellMethods2+1;
	for t=iCellMethods2..lCellMethods2-1 do
	  CurrentSection.Cell(y+WriteRow,x,CellMethods2[t],iCellMethodsValue2[xyt+t]);
	od;
	xyt=(xy-1)*(sCellMethods2-lCellMethods2)-lCellMethods2+1;
	for t=lCellMethods2..sCellMethods2-1 do
	  if lCellMethodsValue2[xyt+t]:
	    CurrentSection.Cell(y+WriteRow,x,CellMethods2[t],lCellMethodsValue2[xyt+t]);
	  fi;
	od;
	xyt=(xy-1)*(CountCellMethods2+1-sCellMethods2)-sCellMethods2+1;
	for t=sCellMethods2..CountCellMethods2 do
	  if trim(sCellMethodsValue2[xyt+t])<>'':
	    if CellMethods2[t]=CellContents:-- подстановка координат итераций
	       if pos('[',sCellMethodsValue2[xyt+t])>1 and pos(']',sCellMethodsValue2[xyt+t])<1:
		  CurrentSection.Cell(y+WriteRow,x,CellMethods2[t],sCellMethodsValue2[xyt+t]+str(iter)+']');
		| true:CurrentSection.Cell(y+WriteRow,x,CellMethods2[t],sCellMethodsValue2[xyt+t]);
	       fi;
	     | true:CurrentSection.Cell(y+WriteRow,x,CellMethods2[t],sCellMethodsValue2[xyt+t]);
	    fi;
	  fi;
	od;
	if SetOnlyRead:
	   CurrentSection.Cell(y+WriteRow,x,CellReadOnly,true);
	   CurrentSection.Cell(y+WriteRow,x,CellLookup,false);
	fi;
      od;
    od;
    CurrentSection.Column(SecCols2,ColVisible,true);
    CurrentSection.Column(SecCols2,ColVisible,false);
    if showmsg<>'':ОкноВыполненияПоложение(iter);fi;
    t=LengthOfArray(CellLinksValue2);
    for x=1..t do
      CurrentSection.CellLinks(int(ВыделитьСлово(1,CellLinksValue2[x],',')),int(ВыделитьСлово(2,CellLinksValue2[x],','))+WriteRow,int(ВыделитьСлово(3,CellLinksValue2[x],',')),int(ВыделитьСлово(4,CellLinksValue2[x],','))+WriteRow);
    od;
  od;
  if iter0>iter1:NotIter=0;fi;
  if showmsg<>'':ОкноВыполненияЗакрыть;fi;
  ^NotIter;
2end;



proc ЗаморозкаОбластиБланка;
 var obj:object;
 var x,y,xx,yy:i;
   yy=КакЦелое(Шаблон.Кадр   );
   xx=КакЦелое(Шаблон.Столбец);
 if Найтиобъект(AsString(Template.Name),obj):
   x=КакЦелое(obj.Столбец(xx,ColLeft,''));
   y=КакЦелое(obj.Строка(yy,RowTop,''));
   Шаблон.Заморозить(x,y);
--   message('x='+str(x)+'   y='+str(y)+chr(13)+'Столбец='+str(xx)+'   Кадр='+str(yy));
 fi;
end;
proc РазморозкаОбластиБланка;
   Шаблон.Заморозить(0,0);
end;

proc ОбновитьШаблон(Обновить:l);
 if Обновить:ShowProgress(1,'');CloseProgress;fi;
end;

Proc ШаблонПриОткрытии(l:l);
end;
Proc ШаблонПриЗакрытии(l:l);end;
--Proc ШаблонПриСчитывании;end;
--Proc ШаблонПриОтмене;end;
Конец

2-- Переменные для обмена информацией между бланками