-- Шаблон создан мастером бланков
-- 16.08.2000 9:45:20
-- cell
БланкСШаблоном "Инвентаризационная опись с разбиением на страницы";

ТолькоМЗ :Logical;
СтрокНаЛисте:i=[45];
--СтрокНаШапке:i;
ШапкаСтрок:i=5;

ФактЕд :l;СтрокФактЕд :i;ИтогФактЕд []:n;ИтогЛФактЕд []:n;
ФактСум:l;СтрокФактСум:i;ИтогФактСум[]:n;ИтогЛФактСум[]:n;
БухЕд  :l;СтрокБухЕд  :i;ИтогБухЕд  []:n;ИтогЛБухЕд  []:n;
БухСум :l;СтрокБухСум :i;ИтогБухСум []:n;ИтогЛБухСум []:n;
НедЕд  :l;СтрокНедЕд  :i;ИтогНедЕд  []:n;ИтогЛНедЕд  []:n;
НедСум :l;СтрокНедСум :i;ИтогНедСум []:n;ИтогЛНедСум []:n;
ИзлЕд  :l;СтрокИзлЕд  :i;ИтогИзлЕд  []:n;ИтогЛИзлЕд  []:n;
ИзлСум :l;СтрокИзлСум :i;ИтогИзлСум []:n;ИтогЛИзлСум []:n;
ИтогоСчет1[]:s; -- текстовые итоговые строки для левой  части
ИтогоСчет2[]:s; -- текстовые итоговые строки для правой части
ИтогиСчет []:i;
СтрокИтого:i=if(ФактЕд  or БухЕд ,max(СтрокФактЕд ,СтрокБухЕд ))+
             if(ФактСум or БухСум,max(СтрокФактСум,СтрокБухСум))+
             if(НедЕд   or ИзлЕд ,max(СтрокНедЕд  ,СтрокИзлЕд ))+
             if(НедСум  or ИзлСум,max(СтрокНедСум ,СтрокИзлСум));

var Шапка_l:l;
var Шапка_s[]:s;
var Шапка_i[]:i;
var ИтогиЛиста_l:l;
var ИтогиЛиста_s[]:s;
var ИтогиЛиста_i[]:i;
var ИтогиСчета_l:l;
var ИтогиСчета_s[]:s;
var ИтогиСчета_i[]:i;



var FieldSender   :S;
var Buf[]         :S;
СоставКом     :S;
СоставКом1    :S;
Учреждение    :S;
ОКПОучреж     :S;
recКомиссия   :record;
Комиссия      :i;
ДолПредКом    :S;
ФИОПредКом    :S;
ДолЧленКом[]  :S;
ФИОЧленКом[]  :S;
НаименПР  []  :S;
Путь :String=PlanVar("НФА")+"\Отчеты\НФАОТЧ.lst";
Имяотчета:С= "Отчет (бланки, не менять!!!)";--+Имяформы
Заб:l=true;
Бал:l=true;
--Бал:l=false;
var ForSelect[]:s;

Секц_00:Секция;
Секц_0:Секция;
Секц_1:Секция;
Позиция1:handle;
Позиция2:handle;

Numer:s;
НаДату:S;
НаДатуD:d;
НаДата:S;
НаДат:S;
РЕКВП:s;
ОКПОLocal:s;
FIO_MOL:s; --=ИНФО.ФИЗЛИЦО.Фам+" "+ИНФО.ФИЗЛИЦО.Имя+" "+ИНФО.ФИЗЛИЦО.Отч;
DOLJ_MOL:s; --=ИНФО.ФИЗЛИЦО.Должность;
SIGNATURE:s;
N1:n;
N2:n;
SP[]:s;
СКЛ:s;СКЛН:s=Name_A(СКЛ);
МОЛ:s;МОЛН:s=Name_A(МОЛ);
FIO_MOL:s;
NN      []:I;
Name_val[]:s;
Num     []:s;
Ед_Изм  []:s;
SSS     []:n;
Высота  []:i;
Высота1 []:i;
Итоги1  []:l;
Итоги2  []:l; -- CellLinesCount
ColFact []:n; ColFact_:n=СуммаМассива(ColFact,Позиция1);
SumFact []:n; SumFact_:n=СуммаМассива(SumFact,Позиция1);
ColBuh  []:n; ColBuh_ :n=СуммаМассива(ColBuh ,Позиция1);
SumBuh  []:n; SumBuh_ :n=СуммаМассива(SumBuh ,Позиция1);

ColMin  []:n=deb(ColBuh[$]-ColFact[$]);ColMin_:n=СуммаМассива(ColMin,Позиция1);
SumMin  []:n=deb(SumBuh[$]-SumFact[$]);SumMin_:n=СуммаМассива(SumMin,Позиция1);
ColMax  []:n=deb(ColFact[$]-ColBuh[$]);ColMax_:n=СуммаМассива(ColMax ,Позиция1);
SumMax  []:n=deb(SumFact[$]-SumBuh[$]);SumMax_:n=СуммаМассива(SumMax ,Позиция1);
Remark  []:s;

На_основании:s;
На_основании1:s;
Проверка_Нал:s;
Place:s;
Zakluchenie:s;
person1:s;
person2:s;
дд:i;
дм:i;
дг:i;
--Признак:S;
proc clTable_0;
clearvariable(Высота  );
clearvariable(Высота1 );
clearvariable(Итоги1  );
clearvariable(Итоги2  );
clearvariable(ИтогиСчет);
clearvariable(ИтогФактЕд );
clearvariable(ИтогФактСум);
clearvariable(ИтогБухЕд  );
clearvariable(ИтогБухСум );
clearvariable(ИтогНедЕд  );
clearvariable(ИтогНедСум );
clearvariable(ИтогИзлЕд  );
clearvariable(ИтогИзлСум );
clearvariable(ИтогоСчет1 );
clearvariable(ИтогоСчет2 );
clearvariable(ИтогиСчет  );
clearvariable(ИтогЛФактЕд );
clearvariable(ИтогЛФактСум);
clearvariable(ИтогЛБухЕд  );
clearvariable(ИтогЛБухСум );
clearvariable(ИтогЛНедЕд  );
clearvariable(ИтогЛНедСум );
clearvariable(ИтогЛИзлЕд  );
clearvariable(ИтогЛИзлСум );
clearvariable(Шапка_s);
clearvariable(Шапка_i);
clearvariable(ИтогиЛиста_s);
clearvariable(ИтогиЛиста_i);
clearvariable(ИтогиСчета_s);
clearvariable(ИтогиСчета_i);
clearvariable(Шапка_l     );
clearvariable(ИтогиЛиста_l);
clearvariable(ИтогиСчета_l);

end;

proc clTable_Позиция1;
clTable_0;
clearvariable(NN      );
clearvariable(Name_val);
clearvariable(Num     );
clearvariable(Ед_Изм  );
clearvariable(SSS     );
clearvariable(ColFact );
clearvariable(SumFact );
clearvariable(ColBuh  );
clearvariable(SumBuh  );
clearvariable(ColMin  );
clearvariable(SumMin  );
clearvariable(ColMax  );
clearvariable(SumMax  );
clearvariable(Remark  );
clearvariable(SP      );
clearvariable(Позиция1);
clearvariable(НаименПР);

end;




proc ВставитьШапку(iter:i);-- копирует шапку в конец таблицы
 var x,y,yd,y1,yz,xz,c,iii,sss:i;
 var ШрифтСтиль,ШрифтРазмер,ШрифтЦвет,Выравнивание,ТипПоля:i;
 var Рамка,Формат,Содержимое:s;


   yd=AsInteger(Секц_0.RowsCount);
   Секц_0.RowsCount=yd+ШапкаСтрок;--Добавили строк на новую шапку
   iii=0;
   sss=0;
   yz=ШапкаСтрок;
   xz=AsInteger(Секц_0.ColsCount);
   for x=1..xz do
     for y=1..yz do
       if not Шапка_l:
         iii=iii+1;Шапка_i[iii]=КакЦелое (Секц_00.Cell(y,x,КлеткаЦвет        ,''));c           =Шапка_i[iii];
         iii=iii+1;Шапка_i[iii]=КакЦелое (Секц_00.Cell(y,x,КлеткаЦветШрифта  ,''));ШрифтЦвет   =Шапка_i[iii];
--         iii=iii+1;Шапка_i[iii]=КакЦелое (Секц_00.Cell(y,x,CellLinesCount    ,''));y1          =Шапка_i[iii];
         iii=iii+1;Шапка_i[iii]=КакЦелое (Секц_00.Cell(y,x,КлеткаСтильШрифта ,''));ШрифтСтиль  =Шапка_i[iii];
         iii=iii+1;Шапка_i[iii]=КакЦелое (Секц_00.Cell(y,x,КлеткаРазмерШрифта,''));ШрифтРазмер =Шапка_i[iii];
         iii=iii+1;Шапка_i[iii]=КакЦелое (Секц_00.Cell(y,x,КлеткаЦветШрифта  ,''));ШрифтЦвет   =Шапка_i[iii];
         sss=sss+1;Шапка_s[sss]=КакСтрока(Секц_00.Cell(y,x,КлеткаРамка       ,''));Рамка       =Шапка_s[sss];
         iii=iii+1;Шапка_i[iii]=КакЦелое (Секц_00.Cell(y,x,КлеткаВыравнивание,''));Выравнивание=Шапка_i[iii];
         sss=sss+1;Шапка_s[sss]=КакСтрока(Секц_00.Cell(y,x,КлеткаФормат      ,''));Формат      =Шапка_s[sss];
         iii=iii+1;Шапка_i[iii]=КакЦелое (Секц_00.Cell(y,x,КлеткаТипПоля     ,''));ТипПоля     =Шапка_i[iii];
         sss=sss+1;Шапка_s[sss]=КакСтрока(Секц_00.Cell(y,x,КлеткаСодержимое  ,''));Содержимое  =Шапка_s[sss];
        | true:
         iii=iii+1;c           =Шапка_i[iii];
         iii=iii+1;ШрифтЦвет   =Шапка_i[iii];
--         iii=iii+1;y1          =Шапка_i[iii];
         iii=iii+1;ШрифтСтиль  =Шапка_i[iii];
         iii=iii+1;ШрифтРазмер =Шапка_i[iii];
         iii=iii+1;ШрифтЦвет   =Шапка_i[iii];
         sss=sss+1;Рамка       =Шапка_s[sss];
         iii=iii+1;Выравнивание=Шапка_i[iii];
         sss=sss+1;Формат      =Шапка_s[sss];
         iii=iii+1;ТипПоля     =Шапка_i[iii];
         sss=sss+1;Содержимое  =Шапка_s[sss];
       fi;
--       Секц_0.Cell(y+yd,x,CellLinesCount    ,y1          );
       Секц_0.Cell(y+yd,x,КлеткаСтильШрифта ,ШрифтСтиль  );
       Секц_0.Cell(y+yd,x,КлеткаРазмерШрифта,ШрифтРазмер );
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаРамка       ,Рамка       );
       Секц_0.Cell(y+yd,x,КлеткаВыравнивание,Выравнивание);
       Секц_0.Cell(y+yd,x,КлеткаФормат      ,Формат      );
       Секц_0.Cell(y+yd,x,КлеткаТипПоля     ,ТипПоля     );
       Секц_0.Cell(y+yd,x,КлеткаСодержимое  ,Содержимое  );
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаЦвет        ,c           );
     od;
   od;
   Шапка_l2=true;
   yd=yd+1;
   for x=1..5 do
     Секц_0.CellLinks(x,1+yd,x,1+yd+2);
   od;
     Секц_0.CellLinks(15,1+yd,15,1+yd+2);
   Секц_0.CellLinks(6,1+yd,7,1+yd);
   Секц_0.CellLinks(9,1+yd,10,1+yd);
   Секц_0.CellLinks(11,1+yd,14,1+yd);
   for x=6..14 do
     Секц_0.CellLinks(x,2+yd,x,2+yd+1);
   od;
   Секц_0.Row   (yd,RowNewPage,true);
end;
proc ВставитьИтогиЛиста(С:i;ПО:i;j:i);
 var x,y,yd,y1,yz,xz,c,iii,sss:i;
 var ШрифтСтиль,ШрифтРазмер,ШрифтЦвет,Выравнивание,ТипПоля:i;
 var Рамка,Формат,Содержимое:s;
  for x=с..по do
  ИтогЛФактЕд [j]=ИтогЛФактЕд [j]+ColFact[x];
  ИтогЛФактСум[j]=ИтогЛФактСум[j]+SumFact[x];
  ИтогЛБухЕд  [j]=ИтогЛБухЕд  [j]+ColBuh [x];
  ИтогЛБухСум [j]=ИтогЛБухСум [j]+SumBuh [x];
  ИтогЛНедЕд  [j]=ИтогЛНедЕд  [j]+ColMin [x];
  ИтогЛНедСум [j]=ИтогЛНедСум [j]+SumMin [x];
  ИтогЛИзлЕд  [j]=ИтогЛИзлЕд  [j]+ColMax [x];
  ИтогЛИзлСум [j]=ИтогЛИзлСум [j]+SumMax [x];
  od;

   yd=AsInteger(Секц_0.RowsCount);
   Секц_0.RowsCount=yd+7;--Добавили строк на новые итоги

   yz=7;
   xz=AsInteger(Секц_00.ColsCount);
   iii=0;
   sss=0;
   for x=1..xz do
     for y=1..yz do
       if not ИтогиЛиста_l:
          iii=iii+1;
          ИтогиЛиста_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаЦвет        ,''));
          c           =ИтогиЛиста_i[iii];
          iii=iii+1;ИтогиЛиста_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаЦветШрифта  ,''));ШрифтЦвет   =ИтогиЛиста_i[iii];
--          iii=iii+1;ИтогиЛиста_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+6,x,CellLinesCount    ,''));y1          =ИтогиЛиста_i[iii];
          iii=iii+1;
          ИтогиЛиста_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаСтильШрифта ,''));
          ШрифтСтиль  =ИтогиЛиста_i[iii];
          iii=iii+1;ИтогиЛиста_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаРазмерШрифта,''));ШрифтРазмер =ИтогиЛиста_i[iii];
          iii=iii+1;ИтогиЛиста_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаЦветШрифта  ,''));ШрифтЦвет   =ИтогиЛиста_i[iii];
          sss=sss+1;ИтогиЛиста_s[sss]=КакСтрока(Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаРамка       ,''));Рамка       =ИтогиЛиста_s[sss];
          iii=iii+1;ИтогиЛиста_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаВыравнивание,''));Выравнивание=ИтогиЛиста_i[iii];
          sss=sss+1;ИтогиЛиста_s[sss]=КакСтрока(Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаФормат      ,''));Формат      =ИтогиЛиста_s[sss];
          iii=iii+1;ИтогиЛиста_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаТипПоля     ,''));ТипПоля     =ИтогиЛиста_i[iii];
          sss=sss+1;ИтогиЛиста_s[sss]=КакСтрока(Секц_00.Cell(y+ШапкаСтрок+6,x,КлеткаСодержимое  ,''));Содержимое  =ИтогиЛиста_s[sss];
        | true:

          iii=iii+1;c           =ИтогиЛиста_i[iii];
          iii=iii+1;ШрифтЦвет   =ИтогиЛиста_i[iii];
        --  iii=iii+1;y1          =ИтогиЛиста_i[iii];
          iii=iii+1;ШрифтСтиль  =ИтогиЛиста_i[iii];
          iii=iii+1;ШрифтРазмер =ИтогиЛиста_i[iii];
          iii=iii+1;ШрифтЦвет   =ИтогиЛиста_i[iii];
          sss=sss+1;Рамка       =ИтогиЛиста_s[sss];
          iii=iii+1;Выравнивание=ИтогиЛиста_i[iii];
          sss=sss+1;Формат      =ИтогиЛиста_s[sss];
          iii=iii+1;ТипПоля     =ИтогиЛиста_i[iii];
          sss=sss+1;Содержимое  =ИтогиЛиста_s[sss];
2       fi;
--       Секц_0.Cell(y+yd,x,CellLinesCount    ,y1          );
       Секц_0.Cell(y+yd,x,КлеткаСтильШрифта ,ШрифтСтиль  );
       Секц_0.Cell(y+yd,x,КлеткаРазмерШрифта,ШрифтРазмер );
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаРамка       ,Рамка       );
       Секц_0.Cell(y+yd,x,КлеткаВыравнивание,Выравнивание);
       Секц_0.Cell(y+yd,x,КлеткаТипПоля     ,ТипПоля     );
       Секц_0.Cell(y+yd,x,КлеткаФормат      ,Формат      );
       Секц_0.Cell(y+yd,x,КлеткаСодержимое  ,Содержимое  );
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаЦвет        ,c           );
     od;
   od;
   ИтогиЛиста_l2=true;
   yd=yd+1;
   Секц_0.CellLinks(1,yd,7 ,yd);
   Секц_0.CellLinks(9,yd,15,yd);
   yd=yd+1;
   Секц_0.CellLinks(1,yd,7 ,yd);
   Секц_0.CellLinks(9,yd,15,yd);
   Секц_0.Cell(yd,1,КлеткаСодержимое,'Итого по листу пронумеровано '+str(по-с+1)+' ('+сло_(по-с+1,'ДОКН')+')  порядковых  номеров');
   Секц_0.Cell(yd,9,КлеткаСодержимое,'с '+str(с)+' ('+сло_(с,'ДОК')+') до '+str(по)+' ('+сло_(по,'ДОК')+') включительно');
   yd=yd+1;
   Секц_0.CellLinks(1,yd,5,yd);
   Секц_0.Cell(yd,1,КлеткаСодержимое,'Итого по листу '+'');

   Секц_0.Cell(yd,6 ,КлеткаСодержимое,'ИтогЛФактЕд['+str(j)+']');
   Секц_0.Cell(yd,7 ,КлеткаСодержимое,'ИтогЛФактСум['+str(j)+']');
   Секц_0.Cell(yd,9 ,КлеткаСодержимое,'ИтогЛБухЕд['+str(j)+']');
   Секц_0.Cell(yd,10,КлеткаСодержимое,'ИтогЛБухСум['+str(j)+']');
   Секц_0.Cell(yd,11,КлеткаСодержимое,'ИтогЛНедЕд['+str(j)+']');
   Секц_0.Cell(yd,12,КлеткаСодержимое,'ИтогЛНедСум['+str(j)+']');
   Секц_0.Cell(yd,13,КлеткаСодержимое,'ИтогЛИзлЕд['+str(j)+']');
   Секц_0.Cell(yd,14,КлеткаСодержимое,'ИтогЛИзлСум['+str(j)+']');
   for y=yd+1..yd+4 do
    Секц_0.CellLinks(1,y,7 ,y);
    Секц_0.CellLinks(9,y,15,y);
   od;
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(факт-единиц прописью)'+сло_(ИтогЛФактЕд[j],'ЕД0'));Секц_0.Cell(yd,9,КлеткаСодержимое,'(бухучет-единиц прописью)'+сло_(ИтогЛБухЕд[j],'ЕД0'));
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(факт-сумма прописью)'+сло(ИтогЛФактСум[j]));       Секц_0.Cell(yd,9,КлеткаСодержимое,'(бухучет-сумма прописью)'+сло(ИтогЛБухСум[j]));
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(недостача-единиц прописью)'+сло_(ИтогЛНедЕд[j],'ЕД0'));Секц_0.Cell(yd,9,КлеткаСодержимое,'(излишки-единиц прописью)'+сло_(ИтогЛИзлЕд [j],'ЕД0'));
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(недостача-сумма прописью)'+сло(ИтогЛНедСум[j]));       Секц_0.Cell(yd,9,КлеткаСодержимое,'(излишки-сумма прописью)' +сло (ИтогЛИзлСум[j]));
end;

proc ВставитьИтогиВедомости;
 var x,y,yd,y1,yz,xz,c,iii,sss:i;
 var ШрифтСтиль,ШрифтРазмер,ШрифтЦвет,Выравнивание,ТипПоля:i;
 var Рамка,Формат,Содержимое:s;

   yd=AsInteger(Секц_0.RowsCount);
   Секц_0.RowsCount=yd+7;--Добавили строк на новые итоги

   yz=7;
   xz=AsInteger(Секц_00.ColsCount);
   iii=0;
   sss=0;
   for x=1..xz do
     for y=1..yz do
          iii=iii+1;c           =ИтогиЛиста_i[iii];
          iii=iii+1;ШрифтЦвет   =ИтогиЛиста_i[iii];
        --  iii=iii+1;y1          =ИтогиЛиста_i[iii];
          iii=iii+1;ШрифтСтиль  =ИтогиЛиста_i[iii];
          iii=iii+1;ШрифтРазмер =ИтогиЛиста_i[iii];
          iii=iii+1;ШрифтЦвет   =ИтогиЛиста_i[iii];
          sss=sss+1;Рамка       =ИтогиЛиста_s[sss];
          iii=iii+1;Выравнивание=ИтогиЛиста_i[iii];
          sss=sss+1;Формат      =ИтогиЛиста_s[sss];
          iii=iii+1;ТипПоля     =ИтогиЛиста_i[iii];
          sss=sss+1;Содержимое  =ИтогиЛиста_s[sss];
--       Секц_0.Cell(y+yd,x,CellLinesCount    ,y1          );
       Секц_0.Cell(y+yd,x,КлеткаСтильШрифта ,ШрифтСтиль  );
       Секц_0.Cell(y+yd,x,КлеткаРазмерШрифта,ШрифтРазмер );
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаРамка       ,Рамка       );
       Секц_0.Cell(y+yd,x,КлеткаВыравнивание,Выравнивание);
       Секц_0.Cell(y+yd,x,КлеткаТипПоля     ,ТипПоля     );
       Секц_0.Cell(y+yd,x,КлеткаФормат      ,Формат      );
       Секц_0.Cell(y+yd,x,КлеткаСодержимое  ,Содержимое  );
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаЦвет        ,c           );
     od;
   od;
   yd=yd+1;
   Секц_0.CellLinks(1,yd,7 ,yd);
   Секц_0.CellLinks(9,yd,15,yd);
   yd=yd+1;
   Секц_0.CellLinks(1,yd,7 ,yd);
   Секц_0.CellLinks(9,yd,15,yd);
   Секц_0.Cell(yd,1,КлеткаСодержимое,'Итого по ведомости пронумеровано '+str(Позиция1)+' ('+сло_(Позиция1,'ДОКН')+')  порядковых  номеров');
   Секц_0.Cell(yd,9,КлеткаСодержимое,'с '+str(1)+' ('+сло_(1,'ДОК')+') до '+str(Позиция1)+' ('+сло_(Позиция1,'ДОК')+') включительно');
   yd=yd+1;
   Секц_0.CellLinks(1,yd,5,yd);
   Секц_0.Cell(yd,1,КлеткаСодержимое,'Итого по ведомости '+'');

   Секц_0.Cell(yd,6 ,КлеткаСодержимое,'ColFact_');
   Секц_0.Cell(yd,7 ,КлеткаСодержимое,'SumFact_');
   Секц_0.Cell(yd,9 ,КлеткаСодержимое,'ColBuh_');
   Секц_0.Cell(yd,10,КлеткаСодержимое,'SumBuh_');
   Секц_0.Cell(yd,11,КлеткаСодержимое,'ColMin_');
   Секц_0.Cell(yd,12,КлеткаСодержимое,'SumMin_');
   Секц_0.Cell(yd,13,КлеткаСодержимое,'ColMax_');
   Секц_0.Cell(yd,14,КлеткаСодержимое,'SumMax_');
   for y=yd+1..yd+4 do
    Секц_0.CellLinks(1,y,7 ,y);
    Секц_0.CellLinks(9,y,15,y);
   od;
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(факт-единиц прописью)'+сло_(ColFact_,'ЕД0'));Секц_0.Cell(yd,9,КлеткаСодержимое,'(бухучет-единиц прописью)'+сло_(ColBuh_,'ЕД0'));
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(факт-сумма прописью)'+сло(SumFact_));       Секц_0.Cell(yd,9,КлеткаСодержимое,'(бухучет-сумма прописью)'+сло(SumBuh_));
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(недостача-единиц прописью)'+сло_(ColMin_,'ЕД0'));Секц_0.Cell(yd,9,КлеткаСодержимое,'(излишки-единиц прописью)'+сло_(ColMax_,'ЕД0'));
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(недостача-сумма прописью)'+сло(SumMin_));       Секц_0.Cell(yd,9,КлеткаСодержимое,'(излишки-сумма прописью)' +сло (SumMax_));
end;












--ИтогиСчета_s
--ИтогиСчета_i
--ИтогиСчета_l

proc ВставитьИтогиСчета(j:i;ИТ_000_00_до:s);
 var x,y,yd,y1,yz,xz,c,iii,sss:i;
 var ШрифтСтиль,ШрифтРазмер,ШрифтЦвет,Выравнивание,ТипПоля:i;
 var Рамка,Формат,Содержимое:s;
   yd=AsInteger(Секц_0.RowsCount);
   Секц_0.RowsCount=yd+5;--Добавили строк на новые итоги

   yz=5;
   xz=AsInteger(Секц_00.ColsCount);
   iii=0;
   sss=0;
   for x=1..xz do
     for y=1..yz do
--     for y=1..yz+1 do
       if not ИтогиСчета_l:
          iii=iii+1;ИтогиСчета_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаЦвет        ,''));c           =ИтогиСчета_i[iii];
          iii=iii+1;ИтогиСчета_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаЦветШрифта  ,''));ШрифтЦвет   =ИтогиСчета_i[iii];
--          iii=iii+1;ИтогиСчета_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+1,x,CellLinesCount    ,''));y1          =ИтогиСчета_i[iii];
          iii=iii+1;ИтогиСчета_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаСтильШрифта ,''));ШрифтСтиль  =ИтогиСчета_i[iii];
          iii=iii+1;ИтогиСчета_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаРазмерШрифта,''));ШрифтРазмер =ИтогиСчета_i[iii];
          iii=iii+1;ИтогиСчета_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаЦветШрифта  ,''));ШрифтЦвет   =ИтогиСчета_i[iii];
          sss=sss+1;ИтогиСчета_s[sss]=КакСтрока(Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаРамка       ,''));Рамка       =ИтогиСчета_s[sss];
          iii=iii+1;ИтогиСчета_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаВыравнивание,''));Выравнивание=ИтогиСчета_i[iii];
          sss=sss+1;ИтогиСчета_s[sss]=КакСтрока(Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаФормат      ,''));Формат      =ИтогиСчета_s[sss];
          iii=iii+1;ИтогиСчета_i[iii]=КакЦелое (Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаТипПоля     ,''));ТипПоля     =ИтогиСчета_i[iii];
          sss=sss+1;ИтогиСчета_s[sss]=КакСтрока(Секц_00.Cell(y+ШапкаСтрок+1,x,КлеткаСодержимое  ,''));Содержимое  =ИтогиСчета_s[sss];
        | true:

          iii=iii+1;c           =ИтогиСчета_i[iii];
          iii=iii+1;ШрифтЦвет   =ИтогиСчета_i[iii];
    --      iii=iii+1;y1          =ИтогиСчета_i[iii];
          iii=iii+1;ШрифтСтиль  =ИтогиСчета_i[iii];
          iii=iii+1;ШрифтРазмер =ИтогиСчета_i[iii];
          iii=iii+1;ШрифтЦвет   =ИтогиСчета_i[iii];
          sss=sss+1;Рамка       =ИтогиСчета_s[sss];
          iii=iii+1;Выравнивание=ИтогиСчета_i[iii];
          sss=sss+1;Формат      =ИтогиСчета_s[sss];
          iii=iii+1;ТипПоля     =ИтогиСчета_i[iii];
          sss=sss+1;Содержимое  =ИтогиСчета_s[sss];
2       fi;
--       Секц_0.Cell(y+yd,x,CellLinesCount    ,y1          );
       Секц_0.Cell(y+yd,x,КлеткаСтильШрифта ,ШрифтСтиль  );
       Секц_0.Cell(y+yd,x,КлеткаРазмерШрифта,ШрифтРазмер );
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаРамка       ,Рамка       );
       Секц_0.Cell(y+yd,x,КлеткаВыравнивание,Выравнивание);
       Секц_0.Cell(y+yd,x,КлеткаТипПоля     ,ТипПоля     );
       Секц_0.Cell(y+yd,x,КлеткаФормат      ,Формат      );
       Секц_0.Cell(y+yd,x,КлеткаСодержимое  ,Содержимое  );
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаЦвет        ,c           );
     od;
   od;
   ИтогиСчета_l2=true;
   yd=yd+1;
   Секц_0.CellLinks(1,yd,5,yd);
   Секц_0.Cell(yd,1,КлеткаСодержимое,'Итого по счету '+ИТ_000_00_до);
--   Секц_0.CellLinks(yd,1,yd,5);

   Секц_0.Cell(yd,6 ,КлеткаСодержимое,'ИтогФактЕд['+str(j)+']');
   Секц_0.Cell(yd,7 ,КлеткаСодержимое,'ИтогФактСум['+str(j)+']');
   Секц_0.Cell(yd,9 ,КлеткаСодержимое,'ИтогБухЕд['+str(j)+']');
   Секц_0.Cell(yd,10,КлеткаСодержимое,'ИтогБухСум['+str(j)+']');
   Секц_0.Cell(yd,11,КлеткаСодержимое,'ИтогНедЕд['+str(j)+']');
   Секц_0.Cell(yd,12,КлеткаСодержимое,'ИтогНедСум['+str(j)+']');
   Секц_0.Cell(yd,13,КлеткаСодержимое,'ИтогИзлЕд['+str(j)+']');
   Секц_0.Cell(yd,14,КлеткаСодержимое,'ИтогИзлСум['+str(j)+']');
   for y=yd+1..yd+4 do
    Секц_0.CellLinks(1,y,7 ,y);
    Секц_0.CellLinks(9,y,15,y);
   od;
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(факт-единиц прописью)'+сло_(ИтогФактЕд[j],'ЕД0'));Секц_0.Cell(yd,9,КлеткаСодержимое,'(бухучет-единиц прописью)'+сло_(ИтогБухЕд[j],'ЕД0'));
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(факт-сумма прописью)'+сло(ИтогФактСум[j]));       Секц_0.Cell(yd,9,КлеткаСодержимое,'(бухучет-сумма прописью)'+сло(ИтогБухСум[j]));
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(недостача-единиц прописью)'+сло_(ИтогНедЕд[j],'ЕД0'));Секц_0.Cell(yd,9,КлеткаСодержимое,'(излишки-единиц прописью)'+сло_(ИтогИзлЕд [j],'ЕД0'));
   yd=yd+1;Секц_0.Cell(yd,1,КлеткаСодержимое,'(недостача-сумма прописью)'+сло(ИтогНедСум[j]));       Секц_0.Cell(yd,9,КлеткаСодержимое,'(излишки-сумма прописью)' +сло (ИтогИзлСум[j]));

end;
proc ВставитьСтроку(i:i);
 var x,y,yd,y1,yz,xz,c,:i;
 var ШрифтСтиль,ШрифтРазмер,ШрифтЦвет,Выравнивание,ТипПоля:i;
 var Рамка,Формат,Содержимое:s;
   yd=AsInteger(Секц_0.RowsCount);
   Секц_0.RowsCount=yd+1;--Добавили строк на новые итоги

   yz=1;
   xz=AsInteger(Секц_00.ColsCount);
   for x=1..xz do
     for y=1..yz+1 do
       c           =КакЦелое (Секц_00.Cell(y+ШапкаСтрок,x,КлеткаЦвет        ,''));
       ШрифтЦвет   =КакЦелое (Секц_00.Cell(y+ШапкаСтрок,x,КлеткаЦветШрифта  ,''));
       y1          =КакЦелое (Секц_00.Cell(y+ШапкаСтрок,x,CellLinesCount    ,''));
       ШрифтСтиль  =КакЦелое (Секц_00.Cell(y+ШапкаСтрок,x,КлеткаСтильШрифта ,''));
       ШрифтРазмер =КакЦелое (Секц_00.Cell(y+ШапкаСтрок,x,КлеткаРазмерШрифта,''));
       ШрифтЦвет   =КакЦелое (Секц_00.Cell(y+ШапкаСтрок,x,КлеткаЦветШрифта  ,''));
       Рамка       =КакСтрока(Секц_00.Cell(y+ШапкаСтрок,x,КлеткаРамка       ,''));
       Выравнивание=КакЦелое (Секц_00.Cell(y+ШапкаСтрок,x,КлеткаВыравнивание,''));
       Формат      =КакСтрока(Секц_00.Cell(y+ШапкаСтрок,x,КлеткаФормат      ,''));
       ТипПоля     =КакЦелое (Секц_00.Cell(y+ШапкаСтрок,x,КлеткаТипПоля     ,''));
       Содержимое  =КакСтрока(Секц_00.Cell(y+ШапкаСтрок,x,КлеткаСодержимое  ,''));
--       Секц_0.Cell(y+yd,x,CellLinesCount    ,y1          );
       Секц_0.Cell(y+yd,x,КлеткаСтильШрифта ,ШрифтСтиль  );
       Секц_0.Cell(y+yd,x,КлеткаРазмерШрифта,ШрифтРазмер );
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаРамка       ,Рамка       );
       Секц_0.Cell(y+yd,x,КлеткаВыравнивание,Выравнивание);
       Секц_0.Cell(y+yd,x,КлеткаТипПоля     ,ТипПоля     );
       Секц_0.Cell(y+yd,x,КлеткаФормат      ,Формат      );
       Секц_0.Cell(y+yd,x,КлеткаСодержимое  ,Содержимое+if(Содержимое<>'','['+str(i)+']',''));
       Секц_0.Cell(y+yd,x,КлеткаЦветШрифта  ,ШрифтЦвет   );
       Секц_0.Cell(y+yd,x,КлеткаЦвет        ,c           );
     od;
   od;
end;

FUNC КалДат(Об:с;Итер:Ц):d;
 Var DTMP :Date;
 Var d:d;
    DTMP=КАЛЕНДАРЬ;
       d=DTMP;
      ^d;
КОНЕЦ;

Func КаленДату(Об:с;Итер:Ц):l;
Var d:d;
clearvariable(НаДату);
clearvariable(НаДатуD);
НаДатуD=КАЛЕНДАРЬ;
d=НаДатуD;
дд=день(d);
дм=мес (d);
дг=год (d);
НаДату=Str(день(d))+" "+месяца(мес(d))+" "+Str(год(d))+"г.";
^False;
End;

Func КаленДат(Об:с;Итер:Ц):l;
Var d:d;
d=КалДат("",1);
НаДат=Str(день(d))+" "+месяца(мес(d))+" "+Str(год(d))+"г.";
^False;
End;

Func КаленДата(Об:с;Итер:Ц):l;
Var d:d;
d=КалДат("",1);
НаДата=Str(день(d))+" "+месяца(мес(d))+" "+Str(год(d))+"г.";
 ^False;
End;
Proc УдалитьПустыеСтроки;
var i,j:i;
 for i=1..Позиция1 do j=Позиция1+1-i;
   if ColFact[j]=0 и SumFact[j]=0 и ColBuh[j]=0 и SumBuh[j]=0: DeleteFrame(Позиция1,j);fi;
 od;
End;
Proc refresh_bln;
--var РабОбл:i;
var sld,sldk:n;
var t,p,ttt:i;
var Признак,ss,ss1,st,a,УслИСТ,dusl,dusl1,bbb:S;
var R:record;
var Rep,Rep1:report;
var kKol, kSum :Numeric;
if (СКЛ="") or (МОЛ=""):message("Пожалуйста,выберете значения в полях "+'"'+"Структурное подразделение"+'"'+","+'"'+"Материально ответственное лицо"+'"');
           if СКЛ=""  :Template.Field="СКЛН"  ; fi;
           if МОЛ=""  :Template.Field="МОЛН"  ; fi;
  exit;
fi;
--ВставитьШапку(1);
clTable_Позиция1;
  if Заб и Бал:УслИСТ='';
   | Заб:УслИСТ='забаланс';
   | Бал:УслИСТ='баланс';
  fi;
--message(УслИСТ);
for ttt=0..3 do
  if ttt=0:dusl='ЗАБ.??.???.??&(' ;bbb='ЗАБ.';dusl1='ЗАБ.??.???.??' ;
   | ttt=1:dusl='*.1.10?.??.???&(';bbb='  1.';dusl1='*.1.10?.??.???';
   | ttt=2:dusl='*.2.10?.??.???&(';bbb='  2.';dusl1='*.2.10?.??.???';
   | ttt=3:dusl='*.3.10?.??.???&(';bbb='  3.';dusl1='*.3.10?.??.???';
  fi;             --              "ЗАБ.??.???.??&(*.101.??.???|*.102.??.???|*.105.??.???|ЗАБ.??.???.??)"
  if ТолькоМЗ:
  --  Rep = RepOpen(Путь+"|"+ИмяОтчета+УслИСТ,dusl+'*.101.08.???|*.105.03.???|*.105.04.???|*.105.05.???|ЗАБ.??.101.08|ЗАБ.??.105.??)',СКЛ+'&'+МОЛ+'&НФА.*&~УЧН.*', НаДатуD, НаДатуD+1,'','НФА');
    Rep = RepOpen(Путь+"|"+ИмяОтчета+УслИСТ, dusl+"*.?.105.??.???|ЗАБ.??.105.??)", СКЛ+'&'+МОЛ+'&НФА.*', НаДатуD-1, НаДатуD,'','НФА');
  else
    Rep = RepOpen(Путь+"|"+ИмяОтчета+УслИСТ, dusl+'*.101.??.???|*.102.??.???|*.105.??.???|ЗАБ.??.???.??)',СКЛ+'&'+МОЛ+'&НФА.*&~УЧН.*', НаДатуD-1, НаДатуD,'','НФА');
  fi;
--  trace(УслИСТ);
  try
    RepReset(Rep);
    while RepNext(Rep) do
      a = RepIdent(Rep);
      if RepSalDof(Rep,отчСверн,"КОЛ")<>0 or RepSaldof(Rep,отчСверн,"РУБ")<>0:
        InsertFrame(Позиция1, Позиция1+1);
        st=SubStr(a,5,6);
        НаименПР[Позиция1]=a;
        Name_val[Позиция1]=st+'('+bbb+') '+ЕСЛИ(ДЛИНА(Наим_П(a))>0,Наим_П(a),a);
        Ед_Изм  [Позиция1]=Unit(a);
        ColBuh[Позиция1]=RepSalDof(Rep,отчСверн,"КОЛ");
        SumBuh[Позиция1]=RepSaldof(Rep,отчСверн,"РУБ");
        ColFact[Позиция1]=ColBuh[Позиция1];
        SumFact[Позиция1]=SumBuh[Позиция1];
        SSS[Позиция1]=if(ColFact[Позиция1]<>0:SumFact[Позиция1]/ColFact[Позиция1],0);
      fi;
    end;
  finally
    Rep = RepClose(Rep);
  end;
  if not ТолькоМЗ:
    Rep = RepOpen(Путь+"|"+ИмяОтчета+УслИСТ,dusl+'*.101.??.???|*.102.??.???|ЗАБ.??.101.??|*.102.??)',СКЛ+'&'+МОЛ+'&(НФА.101.01.*|НФА.101.02.*|НФА.101.03.*|НФА.101.04.*|НФА.101.05.*|НФА.101.06.*|НФА.101.08.*|НФА.102.*)&УЧН.*', НаДатуD-1, НаДатуD,'','НФА');
  --  trace(УслИСТ);
    try
      RepReset(Rep);
      while RepNext(Rep) do
        a = RepIdent(Rep);
        st=SubStr(a,5,6);
        if RepSalDof(Rep,отчСверн,"КОЛ")<>0 or RepSaldof(Rep,отчСверн,"РУБ")<>0:
          ss=st;
  --        ss='*.'+SubStr(a,5,6);
          ClearVariable(ForSelect);
          for transaction t=dusl+'*.'+ss+'.???|*.'+ss+'){'+СКЛ+'&'+МОЛ+'&'+a+'&УЧН.*}',1.1.100,НаДатуD do
            ss1=' '+ПроводАналитика(t)+' ';
            p=pos(' УЧН.',ss1);ss1=SubStr(ss1,p+5,255);
            p=pos(' ',ss1);ss1=SubStr(ss1,1,p-1);
            if ПоискВМассиве(ForSelect,ss1,true)<0:
              kKol=Остаток(dusl+'*.'+ss+'.???|*.'+ss+'){'+СКЛ+'&'+МОЛ+'&'+a+'&УЧН.'+ss1+'}',НаДатуD,"КОЛ");
              kSum=Остаток(dusl+'*.'+ss+'.???|*.'+ss+'){'+СКЛ+'&'+МОЛ+'&'+a+'&УЧН.'+ss1+'}',НаДатуD,"РУБ");
              if not (kKol=0 and kSum=0):
                ВставитьВМассивСорт(ForSelect,ss1);
                InsertFrame(Позиция1, Позиция1+1);
                НаименПР[Позиция1] =a;
                Name_val[Позиция1]=st+'('+bbb+') '+ЕСЛИ(ДЛИНА(Наим_П(a))>0,Наим_П(a),a);
    --            Name_val[Позиция1]=a+' '+ЕСЛИ(ДЛИНА(Наим_П(a))>0,Наим_П(a),a);
                Ед_Изм  [Позиция1]=Unit(a);
                ColFact[Позиция1]=Остаток(dusl+'*.'+ss+'.???|*.'+ss+'){'+СКЛ+'&'+МОЛ+'&'+a+'&УЧН.'+ss1+'}',НаДатуD,"КОЛ");
                SumFact[Позиция1]=Остаток(dusl+'*.'+ss+'.???|*.'+ss+'){'+СКЛ+'&'+МОЛ+'&'+a+'&УЧН.'+ss1+'}',НаДатуD,"РУБ");
                ColBuh[Позиция1]=ColFact[Позиция1];
                SumBuh[Позиция1]=SumFact[Позиция1];
                NUM[Позиция1]=ss1;
                SSS[Позиция1]=if(ColFact[Позиция1]<>0:SumFact[Позиция1]/ColFact[Позиция1],0);
    --            НаименПР[Позиция1] =bbb+a;
              fi;
            fi;
          od;
        fi;
      end;
    finally
      Rep = RepClose(Rep);
    end;
  fi;
od;
УдалитьПустыеСтроки;
СортироватьСекцию(Позиция1,'Name_val');
for t=1..Позиция1 do nn[t]=t; od;
End;
--СтрокНаЛисте:i;
--СтрокНаШапке:i;

--ФактЕд :l;СтрокФактЕд :i;ИтогФактЕд []:n;
--ФактСум:l;СтрокФактСум:i;ИтогФактСум[]:n;
--БухЕд  :l;СтрокБухЕд  :i;ИтогБухЕд  []:n;
--БухСум :l;СтрокБухСум :i;ИтогБухСум []:n;
--НедЕд  :l;СтрокНедЕд  :i;ИтогНедЕд  []:n;
--НедСум :l;СтрокНедСум :i;ИтогНедСум []:n;
--ИзлЕд  :l;СтрокИзлЕд  :i;ИтогИзлЕд  []:n;
--ИзлСум :l;СтрокИзлСум :i;ИтогИзлСум []:n;
--ИтогоСчет1[]:s; -- текстовые итоговые строки для левой  части
--ИтогоСчет2[]:s; -- текстовые итоговые строки для правой части
--NN      []:I;
--Name_val[]:s;
--Num     []:s;
--Ед_Изм  []:s;
--SSS     []:n;
--Высота  []:n;
--Высота1 []:n;
--Итоги1  []:l;
--Итоги2  []:l; -- CellLinesCount
--ColFact []:n; ColFact_:n;--=СуммаМассива(ColFact,Позиция1);
--SumFact []:n; SumFact_:n;--=СуммаМассива(SumFact,Позиция1);
--ColBuh  []:n; ColBuh_ :n;--=СуммаМассива(ColBuh ,Позиция1);
--SumBuh  []:n; SumBuh_ :n;--=СуммаМассива(SumBuh ,Позиция1);

--ColMin  []:n=deb(ColBuh[$]-ColFact[$]);ColMin_:n;--=СуммаМассива(ColMin,Позиция1);
--SumMin  []:n=deb(SumBuh[$]-SumFact[$]);SumMin_:n;--=СуммаМассива(SumMin,Позиция1);
--ColMax  []:n=deb(ColFact[$]-ColBuh[$]);ColMax_:n;--=СуммаМассива(ColMax ,Позиция1);
--SumMax  []:n=deb(SumFact[$]-SumBuh[$]);SumMax_:n;--=СуммаМассива(SumMax ,Позиция1);
--Remark  []:s;

--    vLinesCount = AsInteger(Section1.Cell(1, 1, CellLinesCount, 'Oops Oops Oops Oops Oops Oops Oops Oops'));
--    vLinesCount = AsInteger(Section1.Cell(1, 1, CellLinesCount, ''));
proc Расчет0;
var ИТ_000_00_до,ИТ_000_00:s;
var i,j,k,НаТекущемЛистеС,НаТекущемЛистеПо,ТекЛист,t:i;
clTable_0;
Секц_0.RowsCount=5;
УдалитьПустыеСтроки;
СортироватьСекцию(Позиция1,'Name_val');
for t=1..Позиция1 do nn[t]=t; od;

ИТ_000_00='';ИТ_000_00_до='';
j=0;
i=1;
ТекЛист=0;
  Высота[i]=max(AsInteger(Секц_1.Cell(1, 2,CellLinesCount,Name_val[i])),
                AsInteger(Секц_1.Cell(1, 3,CellLinesCount,Num     [i])),
                AsInteger(Секц_1.Cell(1, 4,CellLinesCount,Ед_Изм  [i])),
                AsInteger(Секц_1.Cell(1,15,CellLinesCount,Remark  [i])));
  ИТ_000_00_до=SubStr(Name_val[i],1,11);
--  ИТ_000_00_до=SubStr(НаименПР[i],1,11);
  j=j+1;
  ИтогФактЕд [j]=ИтогФактЕд [j]+ColFact[i];
  ИтогФактСум[j]=ИтогФактСум[j]+SumFact[i];
  ИтогБухЕд  [j]=ИтогБухЕд  [j]+ColBuh [i];
  ИтогБухСум [j]=ИтогБухСум [j]+SumBuh [i];
  ИтогНедЕд  [j]=ИтогНедЕд  [j]+ColMin [i];
  ИтогНедСум [j]=ИтогНедСум [j]+SumMin [i];
  ИтогИзлЕд  [j]=ИтогИзлЕд  [j]+ColMax [i];
  ИтогИзлСум [j]=ИтогИзлСум [j]+SumMax [i];
for i=2..Позиция1 do
  Высота[i]=max(AsInteger(Секц_1.Cell(1, 2,CellLinesCount,Name_val[i])),
                AsInteger(Секц_1.Cell(1, 3,CellLinesCount,Num     [i])),
                AsInteger(Секц_1.Cell(1, 4,CellLinesCount,Ед_Изм  [i])),
                AsInteger(Секц_1.Cell(1,15,CellLinesCount,Remark  [i])));
  ИТ_000_00=SubStr(Name_val[i],1,11);
--  ИТ_000_00=SubStr(НаименПР[i],1,11);
  if ИТ_000_00<>ИТ_000_00_до:ИТ_000_00_до=ИТ_000_00;ИтогиСчет[i-1]=j;Итоги1[i-1]=true;j=j+1;fi;
  ИтогФактЕд [j]=ИтогФактЕд [j]+ColFact[i];
  ИтогФактСум[j]=ИтогФактСум[j]+SumFact[i];
  ИтогБухЕд  [j]=ИтогБухЕд  [j]+ColBuh [i];
  ИтогБухСум [j]=ИтогБухСум [j]+SumBuh [i];
  ИтогНедЕд  [j]=ИтогНедЕд  [j]+ColMin [i];
  ИтогНедСум [j]=ИтогНедСум [j]+SumMin [i];
  ИтогИзлЕд  [j]=ИтогИзлЕд  [j]+ColMax [i];
  ИтогИзлСум [j]=ИтогИзлСум [j]+SumMax [i];
od;
ИтогиСчет[i-1]=j;Итоги1[i-1]=true;
k=0;НаТекущемЛистеС=1;НаТекущемЛистеПо=0;
for i=1..Позиция1 do
  k=k+Высота[i];
  if Итоги1[i]:k=k+5;fi;
  if k>СтрокНаЛисте-ШапкаСтрок-7:-- если превышение, то откат на 1 строку назад
     ТекЛист=ТекЛист+1;
     НаТекущемЛистеПо=i-1;
     ВставитьИтогиЛиста(НаТекущемЛистеС,НаТекущемЛистеПо,ТекЛист); -- рисуем итоги листа
     -- рисуем итоги листа
     НаТекущемЛистеС=i;
     ВставитьШапку(1);
     -- рисуем Шапку
     k=Высота[i];
     ВставитьСтроку(i);
     if Итоги1[i]:
        k=k+5;
        ВставитьИтогиСчета(ИтогиСчет[i],SubStr(Name_val[i],1,12)); -- рисуем итоги счета, если нужно
--        ВставитьИтогиСчета(ИтогиСчет[i],SubStr(НаименПР[i],5,6)); -- рисуем итоги счета, если нужно
     fi;

   | true:-- рисуем строку
     ВставитьСтроку(i);
     if Итоги1[i]:
--        ВставитьИтогиСчета(ИтогиСчет[i],SubStr(НаименПР[i],5,6)); -- рисуем итоги счета, если нужно
        ВставитьИтогиСчета(ИтогиСчет[i],SubStr(Name_val[i],1,12)); -- рисуем итоги счета, если нужно
     fi;
  fi;
od;
     ТекЛист=ТекЛист+1;
     НаТекущемЛистеПо=i-1;
     ВставитьИтогиЛиста(НаТекущемЛистеС,НаТекущемЛистеПо,ТекЛист); -- рисуем итоги листа
     ВставитьИтогиВедомости; -- рисуем итоги ведомости


end;
proc Расчет(ob:s);
 refresh_bln;
Расчет0;
beep;
Message('Расчет завершен!');
end;
proc Расчет1(ob:s);
Расчет0;
beep;
Message('Пересчет итогов завершен!');
end;

Func ВыборКонтр(S:S;I:I):L;
var R:Record;
var filter:S;
    РЕКВП=AnaElection("К.*");
refresh_bln;
^false;
end;

Func ВыборСклад(S:S;I:I):L;
var R:Record;
var n:i;
var Сч:s;
var sss:s;
refresh_bln;
^false;
refresh_bln;
end;

Proc Шаблон_приОткрытии (Create:L);
-- РАБ.Вспом.CheckLicense;
-- refresh_bln;
end;

proc closebln(ob:l);
--clearvariable(Numer    );
--clearvariable(НаДату   );
--clearvariable(НаДатуD  );
--clearvariable(НаДата   );
--clearvariable(НаДат    );
--clearvariable(РЕКВП    );
--clearvariable(ОКПОLocal);
--clearvariable(FIO_MOL  );
--clearvariable(DOLJ_MOL );
--clearvariable(SIGNATURE);
--clearvariable(SP       );
--clearvariable(СКЛ      );
--clearvariable(МОЛ      );
--clearvariable(FIO_MOL  );
--clearvariable(NN       );
--clearvariable(Name_val );
--clearvariable(Num      );
--clearvariable(Ед_Изм   );
--clearvariable(SSS      );
--clearvariable(ColFact  );
--clearvariable(SumFact  );
--clearvariable(дд       );
--clearvariable(дм       );
--clearvariable(дг       );
--clearvariable(Позиция1 );
end;
Proc ВыборКонтрагента(ПЕРВ:L; МЫ:L; РО:L; REC:Record);
-- ПЕРВ - первая организация в "шапке" (учреждение, организации-заказчика, организации-получателя)
--   МЫ - собственные реквизиты
--   РО - выбор контрагента через рабочую область
--  REC - если РО=True, то в REC ссылка на контрагента, иначе REC=NIL
var ОРГАН, ОКПО :S;
var RO :I;
 ОРГАН=""; ОКПО="";
 if not(РО):
   REC=NIL;
   if МЫ:
     REC=OpenCardFile("Контрагент", "Наше=True and GroupAttr=0", NIL, crdRecordOnly);
   else
     REC=OpenCardFile("Контрагент", "Наше=False", NIL, crdRecordOnly);
   fi;
 fi;
 if REC<>NIL:
   -- Реквизиты контрагента
   RO=OpenWorkArea("Контрагент", "", "UKey="+RecordToString(REC));
   Try
     if Records(RO)=1: ОРГАН=GetFieldS(RO, 1, "КОРИМЯ"); ОКПО=GetFieldS(RO, 1, "ОКПО"); fi;
   Finally
     CloseWorkArea(RO);
   end;
 fi;
 if ПЕРВ:
   Учреждение =ОРГАН; ОКПОучреж=ОКПО;
 else
--   Исполнитель=ОРГАН; ОКПОИспол=ОКПО;
 fi;
end;

Proc ВыборКомиссии;
var REC :Record;
var ss :s;
var RO, OA, Num, i  :I;
 REC=OpenCardFile("Комиссия", "", NIL, crdRecordOnly);
 if REC<>NIL:RECКомиссия=REC;
   ClearVariable(ДолЧленКом);
   ClearVariable(ФИОЧленКом);
   ClearVariable(Комиссия);
   RO=OpenWorkArea("Комиссия", "", "UKey="+RecordToString(REC));
   Try
     if Records(RO)=1:
       ДолПредКом=GetFieldS(RO, 1, "ПРЕДСД"); 
       ФИОПредКом=GetFieldS(RO, 1, "ПРЕДСФ");
       СоставКом=ДолПредКом+'-'+ФИОПредКом;
       OA=OpenArray(RO, 1, "ЧЛЕНКОМ","");
       Num=Records(OA);
       if Num>0:
         Try
           for i=1..Num do
             Try InsertFrame(Комиссия, i); Except end;
              ДолЧленКом[i]=GetFieldS(OA, i, "ЧЛЕНД");
              ФИОЧленКом[i]=GetFieldS(OA, i, "ЧЛЕНФ");
              ss=' '+ДолЧленКом[i]+'-'+ФИОЧленКом[i];
              if Length(СоставКом+ss)>254:СоставКом=СоставКом+' '+ДолЧленКом[i]+'-'+ФИОЧленКом[i];
               | true: СоставКом1=СоставКом1+' '+ДолЧленКом[i]+'-'+ФИОЧленКом[i];
              fi;
           od;
         Finally
           CloseWorkArea(OA);
         end;
       fi;
     fi;
   Finally
     CloseWorkArea(RO);
   end;
 fi;
end;

2-- Обработчики событий полей, объектов и шаблона
2-- События полей
Func Field_onEnter(Field:S; Iter:I) :L;
var n   :I;
var tmp :S;
 FieldSender=Field;
-- if Match(Field, 'A?'): ДобавитьУдалитьСтроки(Field, Iter, True) ; ^False;
-- |  Match(Field, 'D?'): ДобавитьУдалитьСтроки(Field, Iter, False); ^False;
-- fi;
 if Field="Учреждение"  or Field="ОКПОучреж"
                         : n=0; ClearVariable(Buf);
                           Buf[1]='"Собственные" реквизиты'; 
                           Buf[2]='Сторонние организации';
                           n=Alternate("Выберите тип контрагента", Buf, -1);
                           if n<>0: ВыборКонтрагента(True , if(n=1, True, False), False, NIL); fi;
                           ^False;
 |  Field="ДолПредКом" or Field="ФИОПредКом"
                         : ВыборКомиссии; ^False;
 |  Field="СКЛН":tmp=ВыборПризнака('М.*');
    if tmp<>'':СКЛ=tmp;
     | true:СКЛ='М.*';
    fi;
 |  Field="МОЛН":tmp=ВыборПризнака('МОЛ.*');
    if tmp<>'':МОЛ=tmp;
     | true:МОЛ='МОЛ.*';
    fi;
--                         : if СписМатер[Iter].СчКредита="" :
--                             tmp=AccountElection(МаскаСчМат);
--                           else
--                             tmp=PickCorrAccount(СписМатер[Iter].СчКредита, True);
--                           fi;
--                           if tmp="": ^False; fi;
--                           СписМатер[Iter].СчДебета=tmp;
--                           ^False;
-- |  Field="СчКредита"
--                         : if СписМатер[Iter].СчДебета="" :
--                             tmp=AccountElection(МаскаСчМат);
--                           else
--                             tmp=PickCorrAccount(СписМатер[Iter].СчДебета, False);
--                           fi;
--                           if tmp="": ^False; fi;
--                           СписМатер[Iter].СчКредита=tmp;
--                           ^False;
 fi;
 ^True;
end;

Proc Field_onExit(Field:S; Iter:I);
 if Field="Учреждение"  or Field="ОКПОучреж" :
   if Учреждение="" : ОКПОучреж=""; fi;
 |  Field="ДолПредКом"                                                                  :
   if ДолПредКом="" : ФИОПредКом=""; ClearVariable(Комиссия); fi;
 |  Field="ФИОПредКом"                                                                  :
   if ФИОПредКом="" : ДолПредКом=""; ClearVariable(Комиссия); fi;
 fi;
end;



Конец
