БланкСШаблоном "Единая инвентаризационная опись ОКУД:0504087-МИНФИН, 0504087-МО, 0317001-ИНВ1, 0317004-ИНВ4", Редактор ИНВВЕДОМОСТЬ_0504087;
--БЛАНКСШАБЛОНОМ[20.04.2006] "Инвентаризационная опись по объектам нефинансовых активов";
-- Редакция ЗАО "Агентство 'Русспромоценка'"
2-- Переменные
--РАСЧИТАН_ВИД_ИТОГИ:l #Флаг_ЗАБ21    #ФлСчВприм_
ИспользоватьSQL:l;
токсировкадолж:s;
токсировкаподп:s;
var BTNNAME_MENU:s='форма ОКУД 0504087/0317001/0317004';
var SORT_MENU:s='10';
RazmNFA:i=[8];
var fileXLS:s;
var Позиции_:i;
var итоги_редактирование:i;
var Разрешенные106:s;
ФлСчВприм:l;
ИмяИзИНВКАРТЫ:l;
var ФлСчВприм_:S='счет в код НФА';
ФЛ106:object;
ФЛ106_значение:l;
ФЛ_НФАКОД:l;
ФЛ_АНРАЗР:l;
ФЛ_НЕТ_КТ:l;
Разрыв3стр:l;
--var ФЛ106_значение:l=length(Разрешенные106)>0;
НетИтогиПропись:l;
--СекцПояс     :Object;   --СтрокиПояс :Integer;
--СекцЗакл     :Object;   --СтрокиЗакл :Integer;
--СекцКомиссия :Object;   --Комиссия   :Integer;
СекцТаблШапка_0504087_МО:Object;
СекцТабл_0504087_МО     :Object;
СекцТаблИтог_0504087_МО :Object;
СекцТаблИтог1_0504087_МО:Object;

СекцТаблШапка_0317001:Object;
СекцТабл_0317001     :Object;
СекцТаблИтог_0317001 :Object;
СекцТаблИтог1_0317001:Object;

СекцТаблШапка_0317004:Object;
СекцТабл_0317004     :Object;
СекцТаблИтог_0317004 :Object;
СекцТаблИтог1_0317004:Object;
СекцТаблШапка_0317009:Object;
СекцТабл_0317009     :Object;
СекцТаблИтог_0317009 :Object;
СекцТаблИтог1_0317009:Object;

СекцТаблШапка_0504087   :Object;
СекцТабл_0504087        :Object;
СекцТаблИтог_0504087    :Object;
СекцТаблИтог1_0504087   :Object;
Секц1СТР1_0504087       :Object;
Секц1СТР2_0504087       :Object;
Секц1СТР3_0504087       :Object;
Секц1СТР4_0504087       :Object;
Секц1СТР5_0504087       :Object;
Секц1СТР6_0504087       :Object;
Секц1СТР7_0504087       :Object;
Секц1СТР8_0504087       :Object;
СекцПояс_0504087        :Object;
СекцЗакл_0504087        :Object;
СекцКомиссия_0504087    :Object;

Секц1СТР1_0504087_МО    :Object;
Секц1СТР2_0504087_МО    :Object;
Секц1СТР3_0504087_МО    :Object;
Секц1СТР4_0504087_МО    :Object;
Секц1СТР5_0504087_МО    :Object;
Секц1СТР6_0504087_МО    :Object;
Секц1СТР7_0504087_МО    :Object;
Секц1СТР8_0504087_МО    :Object;
СекцПояс_0504087_МО     :Object;
СекцЗакл_0504087_МО     :Object;
СекцКомиссия_0504087_МО :Object;

СекцИтог_0504087_0 :Object;
СекцИтог_0504087   :Object;
Прим_Список             :i;
СекцПрим_Список         :Object;
ПРИМ_ПОЛЕ    []         :String;
ПРИМ_ТИП     []         :String;
ПРИМ_ОПИСАНИЕ[]         :String;

СекцШапка    :Object;
СекцДопУсл   :Object;
BtnOLEXls    :Object;
btnClose:Object; btnРасчет:Object;
ScanTo:Object; ScanFrom:Object;
cbБал:Object; cbЗаб:Object; cbФакт:Object; cbUseМХЭ:Object; cbРазбСч:Object; cbнетПО:Object;
var OldDate      :Date;
var StoreANA     :String;
var Пользов      :String;
var A            :String="+";
var D            :String="-";
var I1           :String="все";
var I2           :String="все";
var I3           :String="все";
var ИмяОтчета    :String="Отчет (бланки, не менять!!!)"; --Имя отчета для инвентаризации
var Buf[]        :String;
var Фокус        :String;
var ИМЯ_ПО_      :String=if(Name_A(КОД_ПО) <>"" and Name_A(КОД_ПО) <>" ", Name_A(КОД_ПО) , if(КОД_ПО="П.*", "Все подразделения", КОД_ПО));
var ИМЯ_МОЛ_     :String=if(Name_A(КОД_МОЛ)<>"" and Name_A(КОД_МОЛ)<>" ", Name_A(КОД_МОЛ), if(КОД_МОЛ="МОЛ.*", "Все материально ответственные лица", КОД_МОЛ));
var ИМЯ_МХЭ_     :String=if(Name_A(КОД_МХЭ)<>"" and Name_A(КОД_МХЭ)<>" ", Name_A(КОД_МХЭ), if(КОД_МХЭ="М.*", "Все местонахождения", КОД_МХЭ));

--
sort2:s='2';
sort2_2:s='';
sort3:s='3';
sort3_2:s='';
sort4:s='4';
sort5:s='5';
sort6:s='6';
sort7:s='7';
sort8:s='8';
sort9:s='9';
sort10:s='10';
sort10_2:s='';
sort11:s='11';
sort12:s='12';
sort12_2:s='';
sort13:s='13';
sort14:s='14';
sort15:s='15';
sort16:s='16';
sort17:s='17';
sort18:s='18';
sort19:s='19';
ДОППРИЗНН[] :String=Name_A(СтрокиДопУсл[$].ДОППРИЗН);
--
nn1          :String;
nn9          :String;

--
var УслДЕБ[] :String;
var УслКРЕ[] :String;
var УслАНА[] :String;

var aAna[]   :String;
var НФА_ИНВ[]:String;
var НФА_ИНВ_КОЛ[]:n;
var НФА_ИНВ_СУМ[]:n;

-- Таблица
var NN[]      :String=Str($);
var СЧЕТ_      []:s;
var НФА_имя_[]     :String;
var НФА_код_[]     :String;
var АНРАЗР_    []:s;
var НФА_код_0[]    :String=if(ФЛ_НФАКОД,НФА_код_[$]+if(ФлСчВприм,chr(13)+СЧЕТ_[$],''),if(ФлСчВприм,СЧЕТ_[$],''))+if(ФЛ_АНРАЗР,' '+АНРАЗР_[$],'');

var Инвен_[]       :String;
var Вид_П1    :Integer=[0];
var НомерИНВ_[]:String=РАБ.НФА.FUNC_LIB.FormatInvAna(НФА_код_[$], Инвен_[$], Вид_П1, "б/н", Chr(13));

var ЕдИзм_[]       :String;
var Цена_[]        :Numeric;
var колФакт_[]     :Numeric;
var сумФакт_[]     :Numeric;
var итогоФакт :Numeric=SumOfArray(сумФакт_, ПОЗИЦИИ_);
var колУчет_[]     :Numeric;
var сумУчет_[]     :Numeric;
var итогоУчет :Numeric=SumOfArray(сумУчет_, ПОЗИЦИИ_);
var колMin[]  :Numeric=if(неРез,0,Deb(колУчет_[$]-колФакт_[$]));
var сумMin[]  :Numeric=if(неРез,0,Deb(сумУчет_[$]-сумФакт_[$]));
-- неРез
var итогоMin  :Numeric=SumOfArray(сумMin, ПОЗИЦИИ_);
var колMax[]  :Numeric=if(неРез,0,Deb(колФакт_[$]-колУчет_[$]));
var сумMax[]  :Numeric=if(неРез,0,Deb(сумФакт_[$]-сумУчет_[$]));
var итогоMax  :Numeric=SumOfArray(сумMax, ПОЗИЦИИ_);
var Примеч_[]      :String;
var НеПовтор[]:String;
var КОД_       []:s;
var ДОКАРЕНДА_ []:s;
var ДОКРЕГ_    []:s;
var ГОДВЫПУСКА_[]:d;
--var АНРАЗР_    []:s;
var СЧЕТРАЗР_  []:s;
var ИНВ_ИМЯ_   []:s;
var НОМЕРИНВ_  []:s;
var ЗН_        []:s;
var КОМПЛЕКТ_  []:i;
var УЧКОМПЛЕКТ_[]:l;
var ШТРИХКОД_  []:s;
var РУЧНОЙВВОД_[]:l;
var РАЗРЫВСТР_ []:l;
var Высотастр_ []:i;
КомНаЛистах:l;
var ПОЗИЦИИ_Field_v:s;
var ПОЗИЦИИ_Field_v_s:s;
var ПОЗИЦИИ_Field_v_d:d;
var ПОЗИЦИИ_Field_v_n:n;
var ПОЗИЦИИ_Field_v_l:l;
var ПОЗИЦИИ_Field_v_i:i;
var ПОЗИЦИИ_Fields_s:s='НФА_КОД_ КОД_ ДОКАРЕНДА_ ДОКРЕГ_ ИНВЕН_ АНРАЗР_ СЧЕТРАЗР_ НФА_ИМЯ_ ИНВ_ИМЯ_ СЧЕТ_ НОМЕРИНВ_ ЕДИЗМ_ ЗН_ ШТРИХКОД_ ПРИМЕЧ_';
var ПОЗИЦИИ_Fields_d:s='ГОДВЫПУСКА_';
var ПОЗИЦИИ_Fields_n:s='ЦЕНА_ КОЛФАКТ_ СУМФАКТ_ КОЛУЧЕТ_ СУМУЧЕТ_';
var ПОЗИЦИИ_Fields_l:s='УЧКОМПЛЕКТ_ РУЧНОЙВВОД_ РАЗРЫВСТР_';
var ПОЗИЦИИ_Fields_i:s='КОМПЛЕКТ_ ВЫСОТАСТР_';
var ПОЗИЦИИ_modif:l;
var ПОЗИЦИИ_Field_onEnterIn:l;
--var upfield   :i=100;
--var downfield :i=100;
--var leftfield :i=100;
--var rightfield:i=100;
--var hpage     :i=2100;
--var wpage     :i=2900;
--var kalc      :i=71;
var  h_itog:i=[260];
var  h_up:i=[260];
var  h1:i=int(((hpage-upfield-downfield)/kalc)*100)-h_itog;
--var  h1:i=int(((hpage-upfield-downfield-h_itog)/kalc)*100);
var  h0:i;
var итогоКолФакт:n=суммамассива(колФакт_,позиции_);
var итогоКолУчет:n=суммамассива(колУчет_,позиции_);
var итогоКолMin :n=суммамассива(колMin  ,позиции_);
var итогоКолMax :n=суммамассива(колMax  ,позиции_);
var ПрописьНомеров:s=сло_(позиции_,'ДОКН')+' ном.';
var ПрописьФактКол:s=if(НетИтогиПропись or итогоКолФакт=0.00,'',сло_(итогоКолФакт,'ЕД3'));
var ПрописьФактСум:s=if(НетИтогиПропись or    итогоФакт=0.00,'',сло_(итогоФакт));
var ПрописьУчетКол:s=if(НетИтогиПропись,'',сло_(итогоКолУчет,'ЕД3'));
var ПрописьУчетСум:s=if(НетИтогиПропись,'',сло_(итогоУчет));
var ПрописьМинКол:s=if(НетИтогиПропись или НеРез,'',сло_(итогоКолMin,'ЕД3'));
var ПрописьМинСум:s=if(НетИтогиПропись или НеРез,'',сло_(итогоMin));
var ПрописьМаксКол:s=if(НетИтогиПропись или НеРез,'',сло_(итогоКолMax,'ЕД3'));
var ПрописьМаксСум:s=if(НетИтогиПропись или НеРез,'',сло_(итогоMax));

Proc ВнешнийВид_прописидоп;
var ll:l;
    ll=кодформы='0504087_МО';
       СекцИтог_0504087_0.Column(4, ColVisible, ll);
       СекцИтог_0504087.Column(4, ColVisible, ll);
end;
Proc ВнешнийВид_редактирование;
  var ll:l;
  var i,j,z,x:i;
  var СЕКЦ_СПИСОК,ss,СЕКЦ_СПИСОК_дубль,кодформы_дубль:S;
  var объект_СЕКЦ_СПИСОК:объект;
  var объект_Шапка,объект_строки_редактирование,объект_строки_рисованные,объект_итоги:объект;
  ClearVariable(buf);
  buf[1]='0504087';
  buf[2]='0504087_МО';
  buf[3]='0317001';
  buf[4]='0317004';
  buf[5]='0317009';
  j=LengthOfArray(buf);
  СЕКЦ_СПИСОК='СЕКЦТАБЛИТОГ1_ СЕКЦТАБЛ_ СЕКЦТАБЛШАПКА_ Секц1СТР1_ Секц1СТР2_ Секц1СТР3_ Секц1СТР4_ Секц1СТР5_ Секц1СТР6_ Секц1СТР7_ Секц1СТР8_ СекцПояс_ СекцЗакл_ СекцКомиссия_';
  СЕКЦ_СПИСОК_дубль='Секц1СТР7_0504087_МО СекцЗакл_0504087_МО Секц1СТР5_0504087_МО СекцКомиссия_0504087_МО Секц1СТР6_0504087_МО Секц1СТР1_0504087_МО Секц1СТР8_0504087_МО';
  кодформы_дубль='0504087_МО 0317001 0317004';
  z=КоличествоСлов(СЕКЦ_СПИСОК,' ');
  for i=1..j do
     for x=1..z do
         ss=ВыделитьСлово(x,СЕКЦ_СПИСОК,' ')+buf[i];
         ll=findobject(ss,объект_СЕКЦ_СПИСОК);
         if ll:
            ll=кодформы=buf[i] или (Слововстроке(кодформы,кодформы_дубль,' ') и Слововстроке(ss,СЕКЦ_СПИСОК_дубль,' '));
            объект_СЕКЦ_СПИСОК.visible=ll;
         fi;
     od;
  od;
  СЕКЦ_СПИСОК='СЕКЦТАБЛИТОГ_';
  z=КоличествоСлов(СЕКЦ_СПИСОК,' ');
  for i=1..j do
     for x=1..z do
         ll=findobject(ВыделитьСлово(x,СЕКЦ_СПИСОК,' ')+buf[i],объект_СЕКЦ_СПИСОК);
         if ll:
            ll=false;
            объект_СЕКЦ_СПИСОК.visible=ll;
            объект_СЕКЦ_СПИСОК.canprint=ll;
         fi;
     od;
  od;

--  z=КоличествоСлов(СЕКЦ_СПИСОК,' ');
--  for i=1..j do
--     for x=1..z do
--         ll=findobject(ВыделитьСлово(x,СЕКЦ_СПИСОК,' ')+buf[i],объект_СЕКЦ_СПИСОК);
--         if ll:
--            ll=кодформы=buf[i];
--            объект_СЕКЦ_СПИСОК.visible=ll;
--         fi;
--     od;
--  od;

--Секц1СТР7_0504087_МО СекцЗакл_0504087_МО Секц1СТР5_0504087_МО СекцКомиссия_0504087_МО Секц1СТР6_0504087_МО Секц1СТР1_0504087_МО Секц1СТР8_0504087_МО
--         ll=findobject('СЕКЦТАБЛШАПКА_'+buf[i],объект_Шапка);
--         ll=findobject('СЕКЦТАБЛ_'+buf[i],объект_строки_редактирование);
--         ll=findobject('СЕКЦТАБЛИТОГ_'+buf[i],объект_строки_рисованные);
--         ll=findobject('СЕКЦТАБЛИТОГ1_'+buf[i],объект_итоги);
--         ll=кодформы=buf[i];
--         объект_Шапка.visible=ll;
--         объект_строки_редактирование.visible=ll;
--         объект_строки_рисованные.visible=false;
--         объект_строки_рисованные.canprint=false;
--         объект_итоги.visible=ll;

  итоги_редактирование=1;
  ВнешнийВид_прописидоп;
end;

func кодформы_имя(кодформы_код:s):s;
  if кодформы_код='0504087_МО':^'0504087 - Мин обороны';
   | кодформы_код='0317001'   :^'0317001 - ИНВ1';
   | кодформы_код='0317004'   :^'0317004 - ИНВ3';
   | кодформы_код='0317009'   :^'0317009 - ИНВ8а';
   | кодформы_код='0504087'   :^'0504087 - минфин';
  fi;
  ^'0504087 - минфин';
end;
func кодформы_имя_ОКУД(кодформы_код:s):s;
  if кодформы_код='0504087_МО':^'0504087';
   | кодформы_код='0317001'   :^'0317001';
   | кодформы_код='0317004'   :^'0317004';
   | кодформы_код='0317009'   :^'0317009';
   | кодформы_код='0504087'   :^'0504087';
  fi;
  ^'0504087';
end;
var кодформы_ОКУД:s=кодформы_имя_ОКУД(кодформы);
var кодформы_:s=кодформы_имя(кодформы);
func кодформы_Выбор:s;
 var curentкодформы,i:i;
    if кодформы='0504087'   :curentкодформы=1;
     | кодформы='0504087_МО':curentкодформы=2;
     | кодформы='0317001'   :curentкодформы=3;
     | кодформы='0317004'   :curentкодформы=4;
     | кодформы='0317009'   :curentкодформы=5;
    fi;
    ClearVariable(Buf);
--    Buf[1]='0504087_МО - Мин обороны';
--    Buf[2]='0504087 - минфин';

    buf[1]='0504087 - минфин';
    buf[2]='0504087_МО - Мин обороны';
    buf[3]='0317001 - ИНВ-1';
    buf[4]='0317004 - ИНВ-4';
--    buf[5]='0317009 - ИНВ8а(драг.мет.)';
    i=alternate('Внешний вид инв.ведомости',Buf,-1,curentкодформы);
    if i<1 or curentкодформы=i:^кодформы;fi;
    ^trim(ВыделитьСлово(1,Buf[i],' '));
end;
func кодформы_стр_итого_по_описи(кодформы_код:s):s;
  if кодформы_код='0504087_МО':^'Форма 0504087  с.3';
   | кодформы_код='0317001'   :^'3-я страница формы № ИНВ-1';
   | кодформы_код='0317004'   :^'4-я страница формы № ИНВ-3';
   | кодформы_код='0317009'   :^'0317009';
   | кодформы_код='0504087'   :^'Форма 0504087  с.4';
  fi;
  ^'Форма 0504087  с.4';
end;
var стр_итого_по_описи:s=кодформы_стр_итого_по_описи(кодформы);
var итоги_0504087:l=кодформы='0504087' or кодформы='0504087_МО';
var не_итоги_0504087:l=не итоги_0504087;
func ПоляПрим_Выбор:s;
 var t:i;
 ClearVariable(Buf);
 t=0;
 t=t+1;buf[t]='НОМЕРБУМ         --инв карт№#Номер инвентарной карточки (бумажный)                     ';
 t=t+1;buf[t]='ОБЪЕКТ1          --имя1 #Наименование объекта (полное)                             ';
 t=t+1;buf[t]='ОБЪЕКТ2          --имя2 #Наименование объекта (полное)                             ';
 t=t+1;buf[t]='ОБЪЕКТ3          --имя3 #Наименование объекта (полное)                             ';
 t=t+1;buf[t]='ОКОФ             --ОКОФ #ОКОФ                                                     ';
 t=t+1;buf[t]='СТРПОДР          --подр #Структурное подразделение                                 ';
 t=t+1;buf[t]='НФА_НАЗНАЧЕНИЕ   --назн #НАЗНАЧЕНИЕ                                                ';
 t=t+1;buf[t]='ИЗГОТОВИТЕЛЬ     --изг #ИЗГОТОВИТЕЛЬ                                              ';
 t=t+1;buf[t]='ОКПОИЗГ          --изг ОКПО #ИЗГОТОВИТЕЛЬ ОКПО                                         ';
 t=t+1;buf[t]='СЧЕТНФА          --счет #Счет бюджетного учета НФА                                 ';
 t=t+1;buf[t]='ПАСПОРТ          --Паспорт #Паспорт, свидетельство чертеж (проект, модель, тип, марка)';
 t=t+1;buf[t]='ЗАВОД_НОМ        --Зав№#Заводской номер                                           ';
 t=t+1;buf[t]='ИНОЙ_НОМ         --иной№#Иной номер                                                ';
 t=t+1;buf[t]='НОМ_ВЭКСП        --акт№#Номер акта ввода в эксплуатацию                           ';
 t=t+1;buf[t]='ОПРИХ_ЖО         --#ОПРИХОДОВАНИЕ ЖО                                          ';
 t=t+1;buf[t]='ВЫБЫТ_ЖО         --#ВЫБЫТИЕ ЖО                                               ';
 t=t+1;buf[t]='ВЫБЫТ_ПРИЧ       --выб прич #ВЫБЫТИЕ ПРИЧИНА                                          ';
 t=t+1;buf[t]='РНФИ             --РНФИ№#Реестровый номер федерального имущества (РНФИ)            ';
 t=t+1;buf[t]='ГРЗ              --ГРЗ #Государственный регистрационный знак                      ';
 t=t+1;buf[t]='ВИД              --вид ФИ #Вид                                                       ';
 t=t+1;buf[t]='ДОК_ИЗЪЯТИЯ      --док изъят #документы изъятия из оборота                              ';
 t=t+1;buf[t]='ДОК_ОГРАНИЧЕНИЯ  --док огр #документы ограничения оборота                             ';
 t=t+1;buf[t]='КАРТА            --картаФИ№#номер карты                                               ';
 t=t+1;buf[t]='DD               --дата инв карт #Дата инвентарной карточки (дата принятия к учету)         ';
 t=t+1;buf[t]='ДАТА_ИЗГ         --дата изг #Дата выпуска (изготовления)                               ';
 t=t+1;buf[t]='ДАТ_ВЭКСП        --дата экспл #Дата акта ввода в эксплуатацию                            ';
 t=t+1;buf[t]='LAST_DATE        --дата посл аморт #Последняя дата начисления                                 ';
 t=t+1;buf[t]='ОПРИХ_ДАТА       --дата оприх #ОПРИХОДОВАНИЕ ДАТА                                        ';
 t=t+1;buf[t]='ВЫБЫТ_ДАТА       --дата выб #ВЫБЫТИЕ ДАТА                                             ';
 t=t+1;buf[t]='СНЯТИЕ_С_УЧЕТА   --#СНЯТИЕ С УЧЕТА                                            ';
 t=t+1;buf[t]='НОМЕР            --инв карт электр№#Номер инвентарной карточки (электронный)                  ';
 t=t+1;buf[t]='АМОРТ_ГРУП       --аморт гр #Группа амортизации                                        ';
 t=t+1;buf[t]='АМОРТ_СРОК       --аморт срок #Срок полезного использования (лет)                        ';
 t=t+1;buf[t]='ПЕРВ_СТОИМ       --бал стоим перв #Балансовая стоимость                                      ';
 t=t+1;buf[t]='П_СУММА_МЕС      --аморт в мес #Сумма месячная амортизации                                ';
 t=t+1;buf[t]='П_АМОРТ_НАКОП    --аморт всего #Накопленная амортизация                                   ';
 t=t+1;buf[t]='СТОИМ_ОТЧ        --бал стоим #Балансовая стоимость на дату отчета                       ';
 t=t+1;buf[t]='СНАЧ_ЭКСП        --аморт нач #Начислено с начала в эксплуатации                         ';
 t=t+1;buf[t]='СТОИМ_ИНАЯ       --стоим иная #иная стоимость                                            ';
 t=AlternateTree('Выбор поля',Buf,-1,1,10,'--','ПОЛЕ','ОПИСАНИЕ');
 if t>0:^buf[t];fi;
 ^'';
end;

func высота_секции(секц:s):i;
var res,h,y:i;
var obj:object;
if findobject(секц,obj):
   h=AsInteger(obj.rowscount);
   for y=1..h do res=res+AsInteger(obj.row(y,RowHeight,''));od;
fi;
^res;
end;
proc drow(итоги:l);
  var итогоСтрФактКол,итогоСтрФактСум,итогоСтрБухКол,итогоСтрБухСум:n;
  var y,x,z,h,lastn,x_MO,Сдвиг_0317001,Сдвиг_0317001_1:i;
  var sss:s;
  var ll:l;
  var объект_Шапка,объект_строки_редактирование,объект_строки_рисованные,объект_итоги:объект;
     ll=findobject('СЕКЦТАБЛШАПКА_'+кодформы,объект_Шапка);
     ll=findobject('СЕКЦТАБЛ_'+кодформы,объект_строки_редактирование);
     ll=findobject('СЕКЦТАБЛИТОГ_'+кодформы,объект_строки_рисованные);
     ll=findobject('СЕКЦТАБЛИТОГ1_'+кодформы,объект_итоги);
  итоги_редактирование=0;
--  h_itog=165;
--  h1=int(((hpage-upfield-downfield-h_itog)/kalc)*100);
--  h0=260;
  объект_строки_рисованные.RowsCount=1;
  объект_строки_рисованные.RowsCount=Позиции_;
  z=0;
--var ПрописьНомеров:s=сло_(позиции_,'ДОКН')+' ном.';
--var ПрописьФактКол:s=сло_(суммамассива(колФакт_,позиции_),'ЕД3');
--var ПрописьФактСум:s=сло_(итогоФакт);
  lastn=0;
  if кодформы='0504087'   :h_up=высота_секции('СекцТаблШапка_0504087');
   | кодформы='0504087_МО':h_up=высота_секции('СекцТаблШапка_0504087_МО');
   | кодформы='0317001'   :h_up=высота_секции('СекцТаблШапка_0317001');
   | кодформы='0317004'   :h_up=высота_секции('СекцТаблШапка_0317004');
  fi;
  h_itog=высота_секции('СекцИтог_0504087_0');
--  h_itog=220;
  h0=h_up;
--  trace(str(h_up));


  showprogress(Позиции_,'Обработка строк');
  for y=1..Позиции_ do --рисуем без итогов и запоминаем высоту строк
    ОкноВыполненияПоложение(y);

    if итоги:
      h=ВЫСОТАСТР_[y];
      h0=h0+h;
      if h0>h1:
         h0=h;
         x=5;
         x_MO=0;
         if кодформы='0504087':x_MO=-4;
          | кодформы='0317001':x_MO=-2;
          | кодформы='0317004':x_MO=-1;
         fi;
         if кодформы='0317004':Сдвиг_0317001=1;
          | true: Сдвиг_0317001=0;
         fi;

         объект_строки_рисованные.RowsCount=Позиции_+z+4;
         объект_строки_рисованные.Cell(y+z+0,x,CellFontSize,8);
         --объект_строки_рисованные.Cell(y+z+0,x,CellFieldType,cftNumericField);
         --объект_строки_рисованные.Cell(y+z+0,x,CellBorder,'1,1,1,1');
         объект_строки_рисованные.Cell(y+z+0,x,CellAlignment,0);
         объект_строки_рисованные.Cell(y+z+0,x,CellContents,'Итого по странице:');
         объект_строки_рисованные.CellLinks(x, y+z+0, x+1+Сдвиг_0317001, y+z+0);


         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellFontSize,8);
         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellBorder,'1,1,1,1');
         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellAlignment,2);
         if not Факт:sss='';
          | true:
            sss=format('%.3n',(суммамассива(колФакт_,y-1)-суммамассива(колФакт_,lastn)));if sss='0.000': sss='';fi;
         fi;
         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellContents,sss);

         if кодформы='0317001':
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellAlignment,2);
            if not Факт:sss='';
             | true:
               sss=format('%.2n',суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn));if sss='0.00': sss='';fi;
            fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellContents,sss);
            объект_строки_рисованные.CellLinks(x+7+3+x_MO, y+z, x+7+4+x_MO-Сдвиг_0317001, y+z);

            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колУчет_,y-1)-суммамассива(колУчет_,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellContents,sss);

            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумУчет_,y-1)-суммамассива(сумУчет_,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellContents,sss);

            объект_строки_рисованные.CellLinks(x+7+6+x_MO, y+z, x+7+7+x_MO-Сдвиг_0317001, y+z);


          | кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellAlignment,2);
            if not Факт:sss='';
             | true:
               sss=format('%.2n',суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn));if sss='0.00': sss='';fi;
            fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellContents,sss);
--            объект_строки_рисованные.CellLinks(x+7+3+x_MO, y+z, x+7+4+x_MO-Сдвиг_0317001, y+z);

            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колУчет_,y-1)-суммамассива(колУчет_,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO ,CellContents,sss);

            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумУчет_,y-1)-суммамассива(сумУчет_,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO,CellContents,sss);

--            объект_строки_рисованные.CellLinks(x+7+6+x_MO, y+z, x+7+7+x_MO-Сдвиг_0317001, y+z);
          | true:
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellAlignment,2);
            if not Факт:sss='';
             | true:
               sss=format('%.2n',суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn));if sss='0.00': sss='';fi;
            fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellContents,sss);
         fi;
         if кодформы<>'0317001' and кодформы<>'0317004':
            if кодформы='0504087':x_MO=-2;fi;
            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колУчет_,y-1)-суммамассива(колУчет_,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellContents,sss);
            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумУчет_,y-1)-суммамассива(сумУчет_,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellContents,sss);

            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колMin,y-1)-суммамассива(колMin,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellContents,sss);
            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумMin,y-1)-суммамассива(сумMin,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellContents,sss);

            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колMax,y-1)-суммамассива(колMax,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellContents,sss);
            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумMax,y-1)-суммамассива(сумMax,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellContents,sss);
         fi;
            ------------------------------------------------------
         объект_строки_рисованные.Cell(y+z+1,x,CellFontSize,9);
         объект_строки_рисованные.Cell(y+z+1,x,CellAlignment,0);
         объект_строки_рисованные.Cell(y+z+1,x,CellContents,'а) количество порядковых номеров: '+сло_(y-1-lastn,'ДОКН')+' ном.');
         if кодформы='0317001':
            объект_строки_рисованные.CellLinks(x, y+z+1, x+4+Сдвиг_0317001, y+z+1);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks(x, y+z+1, x+4+Сдвиг_0317001, y+z+1);
          | true:
            объект_строки_рисованные.CellLinks(x, y+z+1, x+7, y+z+1);
         fi;
         ------------------------------------------------------
         объект_строки_рисованные.Cell(y+z+2,x,CellFontSize,9);
         объект_строки_рисованные.Cell(y+z+2,x,CellAlignment,0);
         объект_строки_рисованные.Cell(y+z+2,x,CellContents,'б)общее колич единиц фактически: '+if(НетИтогиПропись or (суммамассива(колФакт_,y-1)-суммамассива(колФакт_,lastn))=0.00,'',сло_(суммамассива(колФакт_,y-1)-суммамассива(колФакт_,lastn),'ЕД3')));
         if кодформы='0317001' or кодформы='0317004':
            объект_строки_рисованные.CellLinks(x, y+z+2, x+5+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.CellLinks(x, y+z+2, x+7, y+z+2);
         fi;
         ------------------------------------------------------
         объект_строки_рисованные.Cell(y+z+3,x,CellFontSize,9);
         объект_строки_рисованные.Cell(y+z+3,x,CellAlignment,0);
         объект_строки_рисованные.Cell(y+z+3,x,CellContents,'в) на сумму фактически: '+if(НетИтогиПропись or (суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn))=0.00,'',сло_(суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn))));
         if кодформы='0317001' or кодформы='0317004':
            объект_строки_рисованные.CellLinks(x, y+z+3, x+5+Сдвиг_0317001, y+z+3);
          | true:
            объект_строки_рисованные.CellLinks(x, y+z+3, x+7, y+z+3);
         fi;
         ------------------------------------------------------
         if КомНаЛистах:
         if кодформы='0317001':Сдвиг_0317001=-4;Сдвиг_0317001_1=-1;
          | кодформы='0317004':Сдвиг_0317001=-4;Сдвиг_0317001_1=-2;
          | true: Сдвиг_0317001=0;Сдвиг_0317001_1=0;
         fi;
         ------------------------------------------------------
         if кодформы='0317001' or кодформы='0317004' :
            объект_строки_рисованные.Cell(y+z+1,x+ 8+Сдвиг_0317001-Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+1,x+ 8+Сдвиг_0317001-Сдвиг_0317001_1,CellAlignment,1);-- по правому краю
            объект_строки_рисованные.Cell(y+z+1,x+ 8+Сдвиг_0317001-Сдвиг_0317001_1,CellContents,'Председатель комиссии '+ДолПредКом);
            объект_строки_рисованные.CellLinks( x+ 8+Сдвиг_0317001-Сдвиг_0317001_1, y+z+1, x+13+Сдвиг_0317001, y+z+1);
          | true:
            объект_строки_рисованные.Cell(y+z+1,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+1,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellAlignment,1);-- по правому краю
            объект_строки_рисованные.Cell(y+z+1,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellContents,'Председатель комиссии '+ДолПредКом);
            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+1, x+13+Сдвиг_0317001, y+z+1);
         fi;
         объект_строки_рисованные.CellLinks( x+14+Сдвиг_0317001, y+z+1, x+15+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
         объект_строки_рисованные.Cell(y+z+1,x+14+Сдвиг_0317001,CellBorder,'0,0,0,1');
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+1,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+1,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+1,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,ФИОПредКом);
          | true:
            объект_строки_рисованные.Cell(y+z+1,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+1,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+1,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,ФИОПредКом);
         fi;
         if кодформы='0317001':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+17+Сдвиг_0317001, y+z+1);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+18+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
          | кодформы='0504087':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
          | кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+18+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
         fi;
         ------------------------------------------------------
         if Комиссия>0:
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellBorder,'0,0,0,1');
--            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+2, x+10+Сдвиг_0317001, y+z+2);
            объект_строки_рисованные.Cell(y+z+2,x+12+Сдвиг_0317001,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+2,x+12+Сдвиг_0317001,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+2,x+12+Сдвиг_0317001,CellContents,Комиссия[1].ФИОЧленКом);
--            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.Cell(y+z+2,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellBorder,'0,0,0,1');
            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+2, x+10+Сдвиг_0317001, y+z+2);
            объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellContents,Комиссия[1].ФИОЧленКом);
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
         fi;
         if кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+12+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
         fi;
         fi;
         if Комиссия>1:
         объект_строки_рисованные.CellLinks( x+14+Сдвиг_0317001, y+z+2, x+15+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2);
         объект_строки_рисованные.Cell(y+z+2,x+14+Сдвиг_0317001,CellBorder,'0,0,0,1');
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+2,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+2,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+2,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[2].ФИОЧленКом);
          | true:
            объект_строки_рисованные.Cell(y+z+2,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+2,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+2,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[2].ФИОЧленКом);
         fi;
         if кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2, x+18+Сдвиг_0317001, y+z+2);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2, x+16+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2, x+17+Сдвиг_0317001, y+z+2);
         fi;
         fi;
         ------------------------------------------------------
         if Комиссия>2:
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellBorder,'0,0,0,1');
--            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+2, x+10+Сдвиг_0317001, y+z+2);
            объект_строки_рисованные.Cell(y+z+3,x+12+Сдвиг_0317001,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+3,x+12+Сдвиг_0317001,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+3,x+12+Сдвиг_0317001,CellContents,Комиссия[3].ФИОЧленКом);
--            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.Cell(y+z+3,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellBorder,'0,0,0,1');
            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+3, x+10+Сдвиг_0317001, y+z+3);
            объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellContents,Комиссия[3].ФИОЧленКом);
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
         fi;
         if кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+12+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
          | true:
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
         fi;

--         объект_строки_рисованные.Cell(y+z+3,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellBorder,'0,0,0,1');
--         объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+3, x+10+Сдвиг_0317001, y+z+3);
--         объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellFontSize,8);
--         объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellAlignment,0);-- по левому краю
--         объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellContents,Комиссия[3].ФИОЧленКом);
--         объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
         fi;
         if Комиссия>3:
         объект_строки_рисованные.CellLinks( x+14+Сдвиг_0317001, y+z+3, x+15+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3);
         объект_строки_рисованные.Cell(y+z+3,x+14+Сдвиг_0317001,CellBorder,'0,0,0,1');
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+3,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+3,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+3,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[4].ФИОЧленКом);
          | true:
            объект_строки_рисованные.Cell(y+z+3,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+3,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+3,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[4].ФИОЧленКом);
         fi;
         if кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3, x+18+Сдвиг_0317001, y+z+3);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3, x+16+Сдвиг_0317001, y+z+3);
          | true:
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3, x+17+Сдвиг_0317001, y+z+3);
         fi;
         fi;
         fi;

         lastn=y-1;
         РАЗРЫВСТР_[y]=true;
         z=z+4;
         объект_строки_рисованные.Row(y+z, RowNewPage, true);
--         объект_строки_рисованные.RowsCount=Позиции+z;

      fi;
    fi;
    x=5;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'NN['+str(y)+']');
    ------------------------------------------------------
    x=6;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,RazmNFA);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
    if кодформы='0317001':
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,0,1');
     | true:
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    fi;
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,0);
    if кодформы='0317004':
       объект_строки_рисованные.Cell(y+z,x,CellContents,'СЧЕТРАЗР_['+str(y)+']');
     | true:
       объект_строки_рисованные.Cell(y+z,x,CellContents,'НФА_имя_['+str(y)+']');
    fi;
    ------------------------------------------------------
    x=7;--  3
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
    if кодформы='0317001':
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'0,1,1,1');
     | кодформы='0317004':
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,0,1');
     | true:
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    fi;
    if кодформы='0317004':
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,0);
       объект_строки_рисованные.Cell(y+z,x,CellContents,'НФА_имя_['+str(y)+']');
     | true:
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
       объект_строки_рисованные.Cell(y+z,x,CellContents,'НФА_код_0['+str(y)+']');
    fi;
    ------------------------------------------------------
    if кодформы='0504087_МО' or кодформы='0317001':
       x_MO=0;
       x=8;--  3
       объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
       объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
       объект_строки_рисованные.Cell(y+z,x,CellContents,'ДОКАРЕНДА_['+str(y)+']');
       ------------------------------------------------------
       x=9;--  3
       объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
       объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftDateField);
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
       объект_строки_рисованные.Cell(y+z,x,CellFormat,'yyyy');
       объект_строки_рисованные.Cell(y+z,x,CellContents,'ГОДВЫПУСКА_['+str(y)+']');
       ------------------------------------------------------
     | кодформы='0317004':
       x_MO=0;
       x=8;--  3
       объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
       объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftDateField);
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'0,1,1,1');
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
       объект_строки_рисованные.Cell(y+z,x,CellFormat,'mmm/yyyy');
       объект_строки_рисованные.Cell(y+z,x,CellContents,'ГОДВЫПУСКА_['+str(y)+']');
       ------------------------------------------------------
       x=9;--  3
       объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
       объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
       объект_строки_рисованные.Cell(y+z,x,CellContents,'НФА_код_0['+str(y)+']');
       ------------------------------------------------------
     | кодформы='0504087':
       x_MO=-2;
    fi;
    x=10+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
    if кодформы='0317004':
       объект_строки_рисованные.Cell(y+z,x,CellContents,'ЕдИзм_['+str(y)+']');
     | true:
       объект_строки_рисованные.Cell(y+z,x,CellContents,'НомерИНВ_['+str(y)+']');
    fi;
    ------------------------------------------------------
    if кодформы='0504087_МО' or кодформы='0317001':
       x_MO=0;
       x=11;--  3
       объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
       объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
       объект_строки_рисованные.Cell(y+z,x,CellContents,'ЗН_['+str(y)+']');
       ------------------------------------------------------
       x=12;--  3
       объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
       объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
       объект_строки_рисованные.Cell(y+z,x,CellContents,'ДОКРЕГ_['+str(y)+']');
     | кодформы='0317004':
       x_MO=0;
       x=11;--  3
       объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
       объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
       объект_строки_рисованные.Cell(y+z,x,CellContents,'Цена_['+str(y)+']');
       объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
       ------------------------------------------------------
       x=12+x_MO;
       объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
       объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
       объект_строки_рисованные.Cell(y+z,x,CellContents,'НомерИНВ_['+str(y)+']');
       ------------------------------------------------------
     | кодформы='0504087':
       x_MO=-4;
    fi;
    ------------------------------------------------------
    if кодформы='0317001':
    x=13+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,0,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'колФакт_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.#####;; ');
    ------------------------------------------------------
    x=14+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,7);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'0,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'ЕдИзм_['+str(y)+']');
    ------------------------------------------------------
    x=15+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'сумФакт_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
    ------------------------------------------------------
    x=16+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,0,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'колУчет_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.#####;; ');
    ------------------------------------------------------
    x=17+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,7);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'0,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'ЕдИзм_['+str(y)+']');
    ------------------------------------------------------
    x=18+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'сумУчет_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
    ------------------------------------------------------
     | кодформы='0317004':
    x=13;--  3
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'ДОКРЕГ_['+str(y)+']');
    x=14+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'колФакт_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.#####;; ');
    ------------------------------------------------------
    x=15+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'сумФакт_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
    ------------------------------------------------------
    x=16+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'колУчет_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.#####;; ');
    ------------------------------------------------------
    x=17+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'сумУчет_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
    ------------------------------------------------------

     | true:
    x=13+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'ЕдИзм_['+str(y)+']');
    ------------------------------------------------------
    x=14+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'Цена_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
    ------------------------------------------------------
    x=15+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'колФакт_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.#####;; ');
    ------------------------------------------------------
    x=16+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'сумФакт_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
    ------------------------------------------------------
    if кодформы='0504087':
       x=14;
       объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
       объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
       объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
       объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
       объект_строки_рисованные.Cell(y+z,x,CellContents,'NN['+str(y)+']');
       x_MO=-2;
    fi;
    ------------------------------------------------------
    x=17+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'колУчет_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.#####;; ');
    ------------------------------------------------------
    x=18+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'сумУчет_['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
    ------------------------------------------------------
    x=19+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'колMin['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.#####;; ');
    ------------------------------------------------------
    x=20+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'сумMin['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
    ------------------------------------------------------
    x=21+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'колMax['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.#####;; ');
    ------------------------------------------------------
    x=22+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftNumericField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,1);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'сумMax['+str(y)+']');
    объект_строки_рисованные.Cell(y+z,x,CellFormat,',##0.00;; ');
    ------------------------------------------------------
    x=23+x_MO;
    объект_строки_рисованные.Cell(y+z,x,CellFontSize,8);
    объект_строки_рисованные.Cell(y+z,x,CellFieldType,cftStringField);
    объект_строки_рисованные.Cell(y+z,x,CellBorder,'1,1,1,1');
    объект_строки_рисованные.Cell(y+z,x,CellAlignment,2);
    объект_строки_рисованные.Cell(y+z,x,CellContents,'Примеч_['+str(y)+']');
    ------------------------------------------------------
    fi;
    объект_строки_рисованные.CellLinks(x, y+z, x, y+z);
--    x=36;
--    объект_строки_рисованные.Cell(y,x,CellFontSize,8);
--    объект_строки_рисованные.Cell(y,x,CellFieldType,cftCommonField);
--    объект_строки_рисованные.Cell(y,x,CellBorder,'1,1,1,1');
--    объект_строки_рисованные.Cell(y,x,CellAlignment,2);
--    объект_строки_рисованные.Cell(y,x,CellContents,'РАЗРЫВСТР_['+str(y)+']');
    ------------------------------------------------------
--  #NN  #НФА_имя_ #НФА_код_  #НомерИНВ_  #ЕдИзм_ #Цена_  #колФакт_  #сумФакт_ #NN  #колУчет_ #сумУчет_ 
--#колMin #сумMin #колMax #сумMax #Примеч_        #Инвен_ #КОД_   #ДОКАРЕНДА_     #ДОКРЕГ_        #АНРАЗР_        #СЧЕТРАЗР_      #ИНВ_ИМЯ_       #СЧЕТ_  #ЗН_    #ШТРИХКОД_      #ГОДВЫПУСКА_    #УЧКОМПЛЕКТ_    #РУЧНОЙВВОД_    #КОМПЛЕКТ_      #РАЗРЫВСТР_     #ВЫСОТАСТР_
  od;

    if итоги:
         x=5;  --y=y-1;
         x_MO=0;
         if кодформы='0504087':x_MO=-4;
          | кодформы='0317001':x_MO=-2;
          | кодформы='0317004':x_MO=-1;
         fi;
         if кодформы='0317004':Сдвиг_0317001=1;
          | true: Сдвиг_0317001=0;
         fi;

         объект_строки_рисованные.RowsCount=Позиции_+z+4;
         объект_строки_рисованные.Cell(y+z+0,x,CellFontSize,8);
         --объект_строки_рисованные.Cell(y+z+0,x,CellFieldType,cftNumericField);
         --объект_строки_рисованные.Cell(y+z+0,x,CellBorder,'1,1,1,1');
         объект_строки_рисованные.Cell(y+z+0,x,CellAlignment,0);
         объект_строки_рисованные.Cell(y+z+0,x,CellContents,'Итого по странице:');
         объект_строки_рисованные.CellLinks(x, y+z+0, x+1+Сдвиг_0317001, y+z+0);


         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellFontSize,8);
         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellBorder,'1,1,1,1');
         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellAlignment,2);
         if not Факт:sss='';
          | true:
            sss=format('%.3n',(суммамассива(колФакт_,y-1)-суммамассива(колФакт_,lastn)));if sss='0.000': sss='';fi;
         fi;
         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellContents,sss);

         if кодформы='0317001':
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellAlignment,2);
            if not Факт:sss='';
             | true:
               sss=format('%.2n',суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn));if sss='0.00': sss='';fi;
            fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellContents,sss);
            объект_строки_рисованные.CellLinks(x+7+3+x_MO, y+z, x+7+4+x_MO-Сдвиг_0317001, y+z);

            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колУчет_,y-1)-суммамассива(колУчет_,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellContents,sss);

            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумУчет_,y-1)-суммамассива(сумУчет_,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellContents,sss);

            объект_строки_рисованные.CellLinks(x+7+6+x_MO, y+z, x+7+7+x_MO-Сдвиг_0317001, y+z);


          | кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellAlignment,2);
            if not Факт:sss='';
             | true:
               sss=format('%.2n',суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn));if sss='0.00': sss='';fi;
            fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellContents,sss);
--            объект_строки_рисованные.CellLinks(x+7+3+x_MO, y+z, x+7+4+x_MO-Сдвиг_0317001, y+z);

            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колУчет_,y-1)-суммамассива(колУчет_,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO ,CellContents,sss);

            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумУчет_,y-1)-суммамассива(сумУчет_,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO,CellContents,sss);

--            объект_строки_рисованные.CellLinks(x+7+6+x_MO, y+z, x+7+7+x_MO-Сдвиг_0317001, y+z);
          | true:
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellAlignment,2);
            if not Факт:sss='';
             | true:
               sss=format('%.2n',суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn));if sss='0.00': sss='';fi;
            fi;
            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellContents,sss);
         fi;
         if кодформы<>'0317001' and кодформы<>'0317004':
            if кодформы='0504087':x_MO=-2;fi;
            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колУчет_,y-1)-суммамассива(колУчет_,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellContents,sss);
            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумУчет_,y-1)-суммамассива(сумУчет_,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellContents,sss);

            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колMin,y-1)-суммамассива(колMin,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellContents,sss);
            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумMin,y-1)-суммамассива(сумMin,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellContents,sss);

            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellAlignment,2);
            sss=format('%.3n',суммамассива(колMax,y-1)-суммамассива(колMax,lastn));if sss='0.000': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellContents,sss);
            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellBorder,'1,1,1,1');
            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellAlignment,2);
            sss=format('%.2n',суммамассива(сумMax,y-1)-суммамассива(сумMax,lastn));if sss='0.00': sss='';fi;
            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellContents,sss);
         fi;
            ------------------------------------------------------
         объект_строки_рисованные.Cell(y+z+1,x,CellFontSize,9);
         объект_строки_рисованные.Cell(y+z+1,x,CellAlignment,0);
         объект_строки_рисованные.Cell(y+z+1,x,CellContents,'а) количество порядковых номеров: '+сло_(y-1-lastn,'ДОКН')+' ном.');
         if кодформы='0317001':
            объект_строки_рисованные.CellLinks(x, y+z+1, x+4+Сдвиг_0317001, y+z+1);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks(x, y+z+1, x+4+Сдвиг_0317001, y+z+1);
          | true:
            объект_строки_рисованные.CellLinks(x, y+z+1, x+7, y+z+1);
         fi;
         ------------------------------------------------------
         объект_строки_рисованные.Cell(y+z+2,x,CellFontSize,9);
         объект_строки_рисованные.Cell(y+z+2,x,CellAlignment,0);
         объект_строки_рисованные.Cell(y+z+2,x,CellContents,'б)общее колич единиц фактически: '+if(НетИтогиПропись or (суммамассива(колФакт_,y-1)-суммамассива(колФакт_,lastn))=0.00,'',сло_(суммамассива(колФакт_,y-1)-суммамассива(колФакт_,lastn),'ЕД3')));
         if кодформы='0317001' or кодформы='0317004':
            объект_строки_рисованные.CellLinks(x, y+z+2, x+5+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.CellLinks(x, y+z+2, x+7, y+z+2);
         fi;
         ------------------------------------------------------
         объект_строки_рисованные.Cell(y+z+3,x,CellFontSize,9);
         объект_строки_рисованные.Cell(y+z+3,x,CellAlignment,0);
         объект_строки_рисованные.Cell(y+z+3,x,CellContents,'в) на сумму фактически: '+if(НетИтогиПропись or (суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn))=0.00,'',сло_(суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn))));
         if кодформы='0317001' or кодформы='0317004':
            объект_строки_рисованные.CellLinks(x, y+z+3, x+5+Сдвиг_0317001, y+z+3);
          | true:
            объект_строки_рисованные.CellLinks(x, y+z+3, x+7, y+z+3);
         fi;
         ------------------------------------------------------
         if КомНаЛистах:
         if кодформы='0317001':Сдвиг_0317001=-4;Сдвиг_0317001_1=-1;
          | кодформы='0317004':Сдвиг_0317001=-4;Сдвиг_0317001_1=-2;
          | true: Сдвиг_0317001=0;Сдвиг_0317001_1=0;
         fi;
         ------------------------------------------------------
         if кодформы='0317001' or кодформы='0317004' :
            объект_строки_рисованные.Cell(y+z+1,x+ 8+Сдвиг_0317001-Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+1,x+ 8+Сдвиг_0317001-Сдвиг_0317001_1,CellAlignment,1);-- по правому краю
            объект_строки_рисованные.Cell(y+z+1,x+ 8+Сдвиг_0317001-Сдвиг_0317001_1,CellContents,'Председатель комиссии '+ДолПредКом);
            объект_строки_рисованные.CellLinks( x+ 8+Сдвиг_0317001-Сдвиг_0317001_1, y+z+1, x+13+Сдвиг_0317001, y+z+1);
          | true:
            объект_строки_рисованные.Cell(y+z+1,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+1,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellAlignment,1);-- по правому краю
            объект_строки_рисованные.Cell(y+z+1,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellContents,'Председатель комиссии '+ДолПредКом);
            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+1, x+13+Сдвиг_0317001, y+z+1);
         fi;
         объект_строки_рисованные.CellLinks( x+14+Сдвиг_0317001, y+z+1, x+15+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
         объект_строки_рисованные.Cell(y+z+1,x+14+Сдвиг_0317001,CellBorder,'0,0,0,1');
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+1,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+1,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+1,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,ФИОПредКом);
          | true:
            объект_строки_рисованные.Cell(y+z+1,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+1,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+1,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,ФИОПредКом);
         fi;
         if кодформы='0317001':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+17+Сдвиг_0317001, y+z+1);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+18+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
          | кодформы='0504087':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
          | кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+18+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
         fi;
         ------------------------------------------------------
         if Комиссия>0:
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellBorder,'0,0,0,1');
--            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+2, x+10+Сдвиг_0317001, y+z+2);
            объект_строки_рисованные.Cell(y+z+2,x+12+Сдвиг_0317001,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+2,x+12+Сдвиг_0317001,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+2,x+12+Сдвиг_0317001,CellContents,Комиссия[1].ФИОЧленКом);
--            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.Cell(y+z+2,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellBorder,'0,0,0,1');
            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+2, x+10+Сдвиг_0317001, y+z+2);
            объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellContents,Комиссия[1].ФИОЧленКом);
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
         fi;
         if кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+12+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
         fi;
         fi;
         if Комиссия>1:
         объект_строки_рисованные.CellLinks( x+14+Сдвиг_0317001, y+z+2, x+15+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2);
         объект_строки_рисованные.Cell(y+z+2,x+14+Сдвиг_0317001,CellBorder,'0,0,0,1');
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+2,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+2,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+2,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[2].ФИОЧленКом);
          | true:
            объект_строки_рисованные.Cell(y+z+2,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+2,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+2,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[2].ФИОЧленКом);
         fi;
         if кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2, x+18+Сдвиг_0317001, y+z+2);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2, x+16+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2, x+17+Сдвиг_0317001, y+z+2);
         fi;
         fi;
         ------------------------------------------------------
         if Комиссия>2:
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellBorder,'0,0,0,1');
--            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+2, x+10+Сдвиг_0317001, y+z+2);
            объект_строки_рисованные.Cell(y+z+3,x+12+Сдвиг_0317001,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+3,x+12+Сдвиг_0317001,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+3,x+12+Сдвиг_0317001,CellContents,Комиссия[3].ФИОЧленКом);
--            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
          | true:
            объект_строки_рисованные.Cell(y+z+3,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellBorder,'0,0,0,1');
            объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+3, x+10+Сдвиг_0317001, y+z+3);
            объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellContents,Комиссия[3].ФИОЧленКом);
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
         fi;
         if кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+12+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
          | true:
            объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
         fi;

--         объект_строки_рисованные.Cell(y+z+3,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellBorder,'0,0,0,1');
--         объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+3, x+10+Сдвиг_0317001, y+z+3);
--         объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellFontSize,8);
--         объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellAlignment,0);-- по левому краю
--         объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellContents,Комиссия[3].ФИОЧленКом);
--         объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
         fi;
         if Комиссия>3:
         объект_строки_рисованные.CellLinks( x+14+Сдвиг_0317001, y+z+3, x+15+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3);
         объект_строки_рисованные.Cell(y+z+3,x+14+Сдвиг_0317001,CellBorder,'0,0,0,1');
         if кодформы='0317004':
            объект_строки_рисованные.Cell(y+z+3,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+3,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+3,x+17+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[4].ФИОЧленКом);
          | true:
            объект_строки_рисованные.Cell(y+z+3,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
            объект_строки_рисованные.Cell(y+z+3,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
            объект_строки_рисованные.Cell(y+z+3,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[4].ФИОЧленКом);
         fi;
         if кодформы='0504087_МО':
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3, x+18+Сдвиг_0317001, y+z+3);
          | кодформы='0317004':
            объект_строки_рисованные.CellLinks( x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3, x+16+Сдвиг_0317001, y+z+3);
          | true:
            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3, x+17+Сдвиг_0317001, y+z+3);
         fi;
         fi;
         fi;

--         x_MO=0;
--         if кодформы='0504087':x_MO=-4;
--          | кодформы='0317001':x_MO=-2;
--         fi;
--         объект_строки_рисованные.RowsCount=Позиции_+z+4;
--         объект_строки_рисованные.Cell(y+z+0,x,CellFontSize,8);
--         --объект_строки_рисованные.Cell(y+z+0,x,CellFieldType,cftNumericField);
--         --объект_строки_рисованные.Cell(y+z+0,x,CellBorder,'1,1,1,1');
--         объект_строки_рисованные.Cell(y+z+0,x,CellAlignment,0);
--         объект_строки_рисованные.Cell(y+z+0,x,CellContents,'Итого по странице:');


--         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellFontSize,8);
--         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellBorder,'1,1,1,1');
--         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellAlignment,2);
--         if not Факт:sss='';
--          | true:
--            sss=format('%.3n',(суммамассива(колФакт_,y-1)-суммамассива(колФакт_,lastn)));if sss='0.000': sss='';fi;
--         fi;
--         объект_строки_рисованные.Cell(y+z+0,x+6+4+x_MO,CellContents,sss);

--         if кодформы='0317001':

--            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellAlignment,1);
--            if not Факт:sss='';
--             | true:
--               sss=format('%.2n',суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn));if sss='0.00': sss='';fi;
--            fi;
--            объект_строки_рисованные.Cell(y+z+0,x+7+5+x_MO,CellContents,sss);
--            объект_строки_рисованные.CellLinks(x+7+3+x_MO, y+z, x+7+4+x_MO, y+z);

--            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellAlignment,1);
--            sss=format('%.3n',суммамассива(колУчет_,y-1)-суммамассива(колУчет_,lastn));if sss='0.000': sss='';fi;
--            объект_строки_рисованные.Cell(y+z+0,x+7+6+x_MO ,CellContents,sss);

--            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellAlignment,1);
--            sss=format('%.2n',суммамассива(сумУчет_,y-1)-суммамассива(сумУчет_,lastn));if sss='0.00': sss='';fi;
--            объект_строки_рисованные.Cell(y+z+0,x+7+8+x_MO,CellContents,sss);

--            объект_строки_рисованные.CellLinks(x+7+6+x_MO, y+z, x+7+7+x_MO, y+z);


--          | true:
--            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellAlignment,1);
--            if not Факт:sss='';
--             | true:
--               sss=format('%.2n',суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn));if sss='0.00': sss='';fi;
--            fi;
--            объект_строки_рисованные.Cell(y+z+0,x+7+4+x_MO,CellContents,sss);
--         fi;
--         if кодформы<>'0317001':
--            if кодформы='0504087':x_MO=-2;fi;
--            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellAlignment,1);
--            sss=format('%.3n',суммамассива(колУчет_,y-1)-суммамассива(колУчет_,lastn));if sss='0.000': sss='';fi;
--            объект_строки_рисованные.Cell(y+z+0,x+10+2+x_MO ,CellContents,sss);
--            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellAlignment,1);
--            sss=format('%.2n',суммамассива(сумУчет_,y-1)-суммамассива(сумУчет_,lastn));if sss='0.00': sss='';fi;
--            объект_строки_рисованные.Cell(y+z+0,x+11+2+x_MO,CellContents,sss);

--            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellAlignment,1);
--            sss=format('%.3n',суммамассива(колMin,y-1)-суммамассива(колMin,lastn));if sss='0.000': sss='';fi;
--            объект_строки_рисованные.Cell(y+z+0,x+12+2+x_MO ,CellContents,sss);
--            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellAlignment,1);
--            sss=format('%.2n',суммамассива(сумMin,y-1)-суммамассива(сумMin,lastn));if sss='0.00': sss='';fi;
--            объект_строки_рисованные.Cell(y+z+0,x+13+2+x_MO,CellContents,sss);

--            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellAlignment,1);
--            sss=format('%.3n',суммамассива(колMax,y-1)-суммамассива(колMax,lastn));if sss='0.000': sss='';fi;
--            объект_строки_рисованные.Cell(y+z+0,x+14+2+x_MO ,CellContents,sss);
--            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellFontSize,8);
--            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellBorder,'1,1,1,1');
--            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellAlignment,1);
--            sss=format('%.2n',суммамассива(сумMax,y-1)-суммамассива(сумMax,lastn));if sss='0.00': sss='';fi;
--            объект_строки_рисованные.Cell(y+z+0,x+15+2+x_MO,CellContents,sss);
--         fi;
--            объект_строки_рисованные.CellLinks(x, y+z+0, x+1, y+z+0);
--            ------------------------------------------------------
--         объект_строки_рисованные.Cell(y+z+1,x,CellFontSize,8);
--         --объект_строки_рисованные.Cell(y+z+1,x,CellFieldType,cftNumericField);
--         --объект_строки_рисованные.Cell(y+z+1,x,CellBorder,'1,1,1,1');
--         объект_строки_рисованные.Cell(y+z+1,x,CellAlignment,0);
--         объект_строки_рисованные.Cell(y+z+1,x,CellContents,'а) количество порядковых номеров');
--         объект_строки_рисованные.CellLinks(x, y+z+1, x+1, y+z+1);
--         объект_строки_рисованные.Cell(y+z+1,x+2,CellContents,сло_(y-1-lastn,'ДОКН')+' ном.');
--         объект_строки_рисованные.Cell(y+z+1,x+2,CellBorder,'0,0,0,1');
--         if кодформы='0317001':
--            объект_строки_рисованные.CellLinks(x+2, y+z+1, x+5, y+z+1);
--          | true:
--            объект_строки_рисованные.CellLinks(x+2, y+z+1, x+7, y+z+1);
--         fi;
--         ------------------------------------------------------
--         объект_строки_рисованные.Cell(y+z+2,x,CellFontSize,8);
--         --объект_строки_рисованные.Cell(y+z+1,x,CellFieldType,cftNumericField);
--         --объект_строки_рисованные.Cell(y+z+1,x,CellBorder,'1,1,1,1');
--         объект_строки_рисованные.Cell(y+z+2,x,CellAlignment,0);
--         объект_строки_рисованные.Cell(y+z+2,x,CellContents,'б)общее колич единиц фактически');
--         объект_строки_рисованные.CellLinks(x, y+z+2, x+1, y+z+2);
--         объект_строки_рисованные.Cell(y+z+2,x+2,CellContents,if(НетИтогиПропись or (суммамассива(колФакт_,y-1)-суммамассива(колФакт_,lastn))=0.00,'',сло_(суммамассива(колФакт_,y-1)-суммамассива(колФакт_,lastn),'ЕД3')));
--         объект_строки_рисованные.Cell(y+z+2,x+2,CellBorder,'0,0,0,1');
--         if кодформы='0317001':
--            объект_строки_рисованные.CellLinks(x+2, y+z+2, x+5, y+z+2);
--          | true:
--            объект_строки_рисованные.CellLinks(x+2, y+z+2, x+7, y+z+2);
--         fi;
----         объект_строки_рисованные.CellLinks(x+2, y+z+2, x+7, y+z+2);
--         ------------------------------------------------------
--         объект_строки_рисованные.Cell(y+z+3,x,CellFontSize,8);
--         --объект_строки_рисованные.Cell(y+z+1,x,CellFieldType,cftNumericField);
--         --объект_строки_рисованные.Cell(y+z+1,x,CellBorder,'1,1,1,1');
--         объект_строки_рисованные.Cell(y+z+3,x,CellAlignment,0);
--         объект_строки_рисованные.Cell(y+z+3,x,CellContents,'в) на сумму фактически');
--         объект_строки_рисованные.CellLinks(x, y+z+3, x+1, y+z+3);
--         объект_строки_рисованные.Cell(y+z+3,x+2,CellContents,if(НетИтогиПропись or (суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn))=0.00,'',сло_(суммамассива(сумФакт_,y-1)-суммамассива(сумФакт_,lastn))));
--         объект_строки_рисованные.Cell(y+z+3,x+2,CellBorder,'0,0,0,1');
--         if кодформы='0317001':
--            объект_строки_рисованные.CellLinks(x+2, y+z+3, x+5, y+z+3);
--          | true:
--            объект_строки_рисованные.CellLinks(x+2, y+z+3, x+7, y+z+3);
--         fi;
----         объект_строки_рисованные.CellLinks(x+2, y+z+3, x+7, y+z+3);
--         ------------------------------------------------------
--         if КомНаЛистах:
--         if кодформы='0317001':Сдвиг_0317001=-3;Сдвиг_0317001_1=-1;
--          | true: Сдвиг_0317001=0;Сдвиг_0317001_1=0;
--         fi;
--         ------------------------------------------------------
--         объект_строки_рисованные.Cell(y+z+1,x+ 9+Сдвиг_0317001,CellFontSize,8);
--         объект_строки_рисованные.CellLinks( x+14+Сдвиг_0317001, y+z+1, x+15+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
--         объект_строки_рисованные.Cell(y+z+1,x+14+Сдвиг_0317001,CellBorder,'0,0,0,1');
--         объект_строки_рисованные.Cell(y+z+1,x+ 9+Сдвиг_0317001,CellAlignment,1);-- по правому краю
--         объект_строки_рисованные.Cell(y+z+1,x+ 9+Сдвиг_0317001,CellContents,'Председатель комиссии '+ДолПредКом);
--         объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001, y+z+1, x+13+Сдвиг_0317001, y+z+1);
--         объект_строки_рисованные.Cell(y+z+1,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
--         объект_строки_рисованные.Cell(y+z+1,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
--         объект_строки_рисованные.Cell(y+z+1,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,ФИОПредКом);
--         if кодформы='0317001':
--            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
--         fi;
--         ------------------------------------------------------
--         if Комиссия>0:
--         объект_строки_рисованные.Cell(y+z+2,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellBorder,'0,0,0,1');
--         объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+2, x+10+Сдвиг_0317001, y+z+2);
--         объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellFontSize,8);
--         объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellAlignment,0);-- по левому краю
--         объект_строки_рисованные.Cell(y+z+2,x+11+Сдвиг_0317001,CellContents,Комиссия[1].ФИОЧленКом);
--         объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+2, x+13+Сдвиг_0317001, y+z+2);
--         fi;
--         if Комиссия>1:
--         объект_строки_рисованные.CellLinks( x+14+Сдвиг_0317001, y+z+2, x+15+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2);
--         объект_строки_рисованные.Cell(y+z+2,x+14+Сдвиг_0317001,CellBorder,'0,0,0,1');
--         объект_строки_рисованные.Cell(y+z+2,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
--         объект_строки_рисованные.Cell(y+z+2,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
--         объект_строки_рисованные.Cell(y+z+2,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[2].ФИОЧленКом);
--         объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2, x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+2);
----         if кодформы='0317001':
----            объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1, x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+1);
----         fi;
--         fi;
--         ------------------------------------------------------
--         if Комиссия>2:
--         объект_строки_рисованные.Cell(y+z+3,x+ 9+Сдвиг_0317001-Сдвиг_0317001_1,CellBorder,'0,0,0,1');
--         объект_строки_рисованные.CellLinks( x+ 9+Сдвиг_0317001-Сдвиг_0317001_1, y+z+3, x+10+Сдвиг_0317001, y+z+3);
--         объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellFontSize,8);
--         объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellAlignment,0);-- по левому краю
--         объект_строки_рисованные.Cell(y+z+3,x+11+Сдвиг_0317001,CellContents,Комиссия[3].ФИОЧленКом);
--         объект_строки_рисованные.CellLinks( x+11+Сдвиг_0317001, y+z+3, x+13+Сдвиг_0317001, y+z+3);
--         fi;
--         if Комиссия>3:
--         объект_строки_рисованные.CellLinks( x+14+Сдвиг_0317001, y+z+3, x+15+Сдвиг_0317001, y+z+3);
--         объект_строки_рисованные.Cell(y+z+3,x+14+Сдвиг_0317001,CellBorder,'0,0,0,1');
--         объект_строки_рисованные.Cell(y+z+3,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellFontSize,8);
--         объект_строки_рисованные.Cell(y+z+3,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellAlignment,0);-- по левому краю
--         объект_строки_рисованные.Cell(y+z+3,x+16+Сдвиг_0317001+Сдвиг_0317001_1,CellContents,Комиссия[4].ФИОЧленКом);
--         объект_строки_рисованные.CellLinks( x+16+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3, x+17+Сдвиг_0317001+Сдвиг_0317001_1, y+z+3);
--         fi;
--         fi;

         z=z+4;
--         объект_строки_рисованные.Row(y+z, RowNewPage, true);
--         объект_строки_рисованные.RowsCount=Позиции+z;

--      fi;
    fi;
    ОкноВыполнениязакрыть;

объект_строки_редактирование.visible=false;
объект_строки_рисованные.visible=true;
объект_строки_рисованные.canprint=true;
end;
proc save_drow;
  var итогоСтрФактКол,итогоСтрФактСум,итогоСтрБухКол,итогоСтрБухСум:n;
  var y,h:i;
  var ll:l;
  var объект_Шапка,объект_строки_редактирование,объект_строки_рисованные,объект_итоги:объект;
--     ll=findobject('СЕКЦТАБЛШАПКА_'+кодформы,объект_Шапка);
--     ll=findobject('СЕКЦТАБЛ_'+кодформы,объект_строки_редактирование);
     ll=findobject('СЕКЦТАБЛИТОГ_'+кодформы,объект_строки_рисованные);
--     ll=findobject('СЕКЦТАБЛИТОГ1_'+кодформы,объект_итоги);

--  h_itog=350;
--  h1=int(((hpage-upfield-downfield-h_itog)/kalc)*100);
  h0=h_up;
--  объект_строки_рисованные.RowsCount=Позиции;
  showprogress(Позиции_,'Обработка строк');
  for y=1..Позиции_ do --запоминаем высоту строк
    ОкноВыполненияПоложение(y);
   h=AsInteger(объект_строки_рисованные.Row(y, RowHeight, ''));--trace(str(h));
   h0=h0+h;
   if h0>h1:h0=h;РАЗРЫВСТР_[y-1]=true;
      объект_строки_рисованные.Row(y, RowNewPage, true);
   fi;
   ВЫСОТАСТР_[y]=h;
  od;
    ОкноВыполнениязакрыть;

end;
2-- 0П2роцедуры и функции0 для работы с Excel
Func GetCellFormula(Sheet:AutoObject; x:I;y:i):String;
var rng: AutoObject;
var Res:S;
Res='';
rng=AsAutoObject(Sheet.Cells[x,y]);
try
 res=AsString(rng.Formula);
finally
ClearVariable(rng);
end;
^Res;
end;

Proc FillCell(Bold:Logical;lock:Logical;Sheet:AutoObject; x:I;y:i;Val:String);
var rng,fnt: AutoObject;
var I:i;
rng=AsAutoObject(Sheet.Cells[x,y]);
try
  rng.Formula=Val;
  if not Lock then
    rng.Locked=False;
    fnt=AsAutoObject(rng.Interior);
    try
      fnt.ColorIndex=8;
      fnt.Pattern=1;
    finally
    ClearVariable(fnt);
    end;
    fnt=AsAutoObject(rng.Font);
    try
      fnt.Color=16711680;
      fnt.FontStyle="Bold Italic";
    finally
    ClearVariable(fnt);
    end;

   fi;
  if Bold  then
    fnt=AsAutoObject(rng.Font);
    try
    fnt.FontStyle="Bold";
    finally
    ClearVariable(fnt);
    end;
    fi;
finally
ClearVariable(rng);
end;
end;
2-- Общие процедуры и функции
Proc Очистить;
 ClearVariable(колMin); ClearVariable(колMax); ClearVariable(сумMin); ClearVariable(сумMax);
 ClearVariable(УслДЕБ); ClearVariable(УслКРЕ); ClearVariable(УслАНА);
 ClearVariable(aAna); ClearVariable(НФА_ИНВ);ClearVariable(НФА_ИНВ_КОЛ);ClearVariable(НФА_ИНВ_СУМ);
 ClearVariable(Buf); ClearVariable(NN); ClearVariable(НеПовтор);
end;

Proc ОчиститьТаблицу;
 ClearVariable(ПОЗИЦИИ_   );
 ClearVariable(НФА_КОД_   );
 ClearVariable(НФА_КОД_0  );
 ClearVariable(КОД_       );
 ClearVariable(ДОКАРЕНДА_ );
 ClearVariable(ДОКРЕГ_    );
 ClearVariable(ГОДВЫПУСКА_);
 ClearVariable(ИНВЕН_     );
 ClearVariable(АНРАЗР_    );
 ClearVariable(СЧЕТРАЗР_  );
 ClearVariable(НФА_ИМЯ_   );
 ClearVariable(ИНВ_ИМЯ_   );
 ClearVariable(СЧЕТ_      );
 ClearVariable(НОМЕРИНВ_  );
 ClearVariable(ЕДИЗМ_     );
 ClearVariable(ЗН_        );
 ClearVariable(КОМПЛЕКТ_  );
 ClearVariable(УЧКОМПЛЕКТ_);
 ClearVariable(ШТРИХКОД_  );
 ClearVariable(ЦЕНА_      );
 ClearVariable(КОЛФАКТ_   );
 ClearVariable(СУМФАКТ_   );
 ClearVariable(КОЛУЧЕТ_   );
 ClearVariable(СУМУЧЕТ_   );
 ClearVariable(ПРИМЕЧ_    );
 ClearVariable(РУЧНОЙВВОД_);
 ClearVariable(РАЗРЫВСТР_ );
 ClearVariable(ВЫСОТАСТР_ );
 Очистить;
end;
Proc set_ПОЗИЦИИ_modif(v:l);
     ПОЗИЦИИ_modif=v;
     if v:Numer=Numer;fi;
end;
func ff(ff:s):s;
ff='|'+ff+'_='+ff;
^ff;
end;
Проц LoadTr_sql;
var z,j:i;
var lst,field_to_field:ls;
var ss:s;
var crd_sql1,crd_sql2,crd_sql3,crd_tbb:s;
crd_sql2=GetRealCardfileName('ИНВВЕДОМОСТЬ_0504087');
crd_sql1=SubStr(crd_sql2,1,length(crd_sql2)-1)+'@ПОЗИЦИИ]';
crd_tbb ='ИНВВЕДОМОСТЬ_0504087';
field_to_field='НФА_КОД_=НФА_КОД';
lst='';
ss='КОД ДОКАРЕНДА ДОКРЕГ ГОДВЫПУСКА ИНВЕН АНРАЗР СЧЕТРАЗР НФА_ИМЯ ИНВ_ИМЯ СЧЕТ ЕДИЗМ ЗН КОМПЛЕКТ УЧКОМПЛЕКТ РАЗРЫВСТР ВЫСОТАСТР ШТРИХКОД ЦЕНА КОЛФАКТ СУМФАКТ КОЛУЧЕТ СУМУЧЕТ ПРИМЕЧ РУЧНОЙВВОД';
z=КоличествоСлов(ss,' ');
for j=1..z do
  field_to_field=field_to_field+ff(ВыделитьСлово(j,ss,' '));
od;
--ss='ИСКЛ КМНТ_ КМНТ1 КМНТ2 КМНТ3 СЧДЕБ1 СЧКРЕ1 СЧДЕБ2 СЧКРЕ2 СЧДЕБ3 СЧКРЕ3 НЕТАМОРТ EDIT';
--z=КоличествоСлов(ss,' ');
--for j=1..z do
--  field_to_field=field_to_field+ff(ВыделитьСлово(j,ss,' '));
--od;
     lst=lst+' '+trim('        SELECT *                   ');
     lst=lst+' '+trim('          FROM '+crd_sql1+' crd1 WITH (NOLOCK)                       ');
--     lst=lst+' '+trim('          , '+crd_sql2+' crd2 WITH (NOLOCK)                       ');
     lst=lst+' '+trim('          WHERE                               ');
     lst=lst+' '+trim('          crd1.cardukey='+str(recordtointeger(current)));
     lst=lst+' '+trim('order by crd1.UKEY ASC                               ');

--z=Раб.НФА.B00sql.COUNTinCRD('РПО_НФА_СПРАВКА',GetRealCardfileName('РПО_НФА_СПРАВКА_ПРОВОДКИ'),'',false );
z=Раб.SQL.LoadRowsSelect(crd_tbb,lst,true,field_to_field,'');

--message(str(z));
end;


Proc СчитатьПОЗИЦИИ;
 var z:i;
 ОчиститьТаблицу;
 Очистить;
 showprogress(ПОЗИЦИИ,'Считывание данных инвентаризации...');
 if SQLQueryEnabled and ИспользоватьSQL:
    LoadTr_sql;
    closeprogress;
    ПОЗИЦИИ_=ПОЗИЦИИ;
    ПОЗИЦИИ_modif=false;
    exit;
 fi;
 for z=1..ПОЗИЦИИ do
     progresspos(z);
     НФА_КОД_   [z]=ПОЗИЦИИ[z].НФА_КОД    ;
     КОД_       [z]=ПОЗИЦИИ[z].КОД        ;
     ДОКАРЕНДА_ [z]=ПОЗИЦИИ[z].ДОКАРЕНДА  ;
     ДОКРЕГ_    [z]=ПОЗИЦИИ[z].ДОКРЕГ     ;
     ГОДВЫПУСКА_[z]=ПОЗИЦИИ[z].ГОДВЫПУСКА ;
     ИНВЕН_     [z]=ПОЗИЦИИ[z].ИНВЕН      ;
     АНРАЗР_    [z]=ПОЗИЦИИ[z].АНРАЗР     ;
     СЧЕТРАЗР_  [z]=ПОЗИЦИИ[z].СЧЕТРАЗР   ;
     НФА_ИМЯ_   [z]=ПОЗИЦИИ[z].НФА_ИМЯ    ;
     ИНВ_ИМЯ_   [z]=ПОЗИЦИИ[z].ИНВ_ИМЯ    ;
     СЧЕТ_      [z]=ПОЗИЦИИ[z].СЧЕТ       ;
--     НОМЕРИНВ_  [z]=ПОЗИЦИИ[z].НОМЕРИНВ   ;
     ЕДИЗМ_     [z]=ПОЗИЦИИ[z].ЕДИЗМ      ;
     ЗН_        [z]=ПОЗИЦИИ[z].ЗН         ;
     КОМПЛЕКТ_  [z]=ПОЗИЦИИ[z].КОМПЛЕКТ   ;
     УЧКОМПЛЕКТ_[z]=ПОЗИЦИИ[z].УЧКОМПЛЕКТ ;
     РАЗРЫВСТР_ [z]=ПОЗИЦИИ[z].РАЗРЫВСТР  ;
     ВЫСОТАСТР_ [z]=ПОЗИЦИИ[z].ВЫСОТАСТР  ;
     ШТРИХКОД_  [z]=ПОЗИЦИИ[z].ШТРИХКОД   ;
     ЦЕНА_      [z]=ПОЗИЦИИ[z].ЦЕНА       ;
     КОЛФАКТ_   [z]=ПОЗИЦИИ[z].КОЛФАКТ    ;
     СУМФАКТ_   [z]=ПОЗИЦИИ[z].СУМФАКТ    ;
     КОЛУЧЕТ_   [z]=ПОЗИЦИИ[z].КОЛУЧЕТ    ;
     СУМУЧЕТ_   [z]=ПОЗИЦИИ[z].СУМУЧЕТ    ;
     ПРИМЕЧ_    [z]=ПОЗИЦИИ[z].ПРИМЕЧ     ;
     РУЧНОЙВВОД_[z]=ПОЗИЦИИ[z].РУЧНОЙВВОД ;
 od;
 closeprogress;
 ПОЗИЦИИ_=ПОЗИЦИИ;
 ПОЗИЦИИ_modif=false;
end;

Proc СохранитьПОЗИЦИИ;
 var z,k:i;
 showprogress(ПОЗИЦИИ_,'Сохранение данных инвентаризации...');
 for z=1..ПОЗИЦИИ_ do
     progresspos(z);
     if z>ПОЗИЦИИ:insertframe(ПОЗИЦИИ,z);fi;
     if not ПОЗИЦИИ[z].НФА_КОД    =НФА_КОД_   [z]:ПОЗИЦИИ[z].НФА_КОД    =НФА_КОД_   [z];fi;
     if not ПОЗИЦИИ[z].КОД        =КОД_       [z]:ПОЗИЦИИ[z].КОД        =КОД_       [z];fi;
     if not ПОЗИЦИИ[z].ДОКАРЕНДА  =ДОКАРЕНДА_ [z]:ПОЗИЦИИ[z].ДОКАРЕНДА  =ДОКАРЕНДА_ [z];fi;
     if not ПОЗИЦИИ[z].ДОКРЕГ     =ДОКРЕГ_    [z]:ПОЗИЦИИ[z].ДОКРЕГ     =ДОКРЕГ_    [z];fi;
     if not ПОЗИЦИИ[z].ГОДВЫПУСКА =ГОДВЫПУСКА_[z]:ПОЗИЦИИ[z].ГОДВЫПУСКА =ГОДВЫПУСКА_[z];fi;
     if not ПОЗИЦИИ[z].ИНВЕН      =ИНВЕН_     [z]:ПОЗИЦИИ[z].ИНВЕН      =ИНВЕН_     [z];fi;
     if not ПОЗИЦИИ[z].АНРАЗР     =АНРАЗР_    [z]:ПОЗИЦИИ[z].АНРАЗР     =АНРАЗР_    [z];fi;
     if not ПОЗИЦИИ[z].СЧЕТРАЗР   =СЧЕТРАЗР_  [z]:ПОЗИЦИИ[z].СЧЕТРАЗР   =СЧЕТРАЗР_  [z];fi;
     if not ПОЗИЦИИ[z].НФА_ИМЯ    =НФА_ИМЯ_   [z]:ПОЗИЦИИ[z].НФА_ИМЯ    =НФА_ИМЯ_   [z];fi;
     if not ПОЗИЦИИ[z].ИНВ_ИМЯ    =ИНВ_ИМЯ_   [z]:ПОЗИЦИИ[z].ИНВ_ИМЯ    =ИНВ_ИМЯ_   [z];fi;
     if not ПОЗИЦИИ[z].СЧЕТ       =СЧЕТ_      [z]:ПОЗИЦИИ[z].СЧЕТ       =СЧЕТ_      [z];fi;
     if not ПОЗИЦИИ[z].НОМЕРИНВ   =НОМЕРИНВ_  [z]:ПОЗИЦИИ[z].НОМЕРИНВ   =НОМЕРИНВ_  [z];fi;
     if not ПОЗИЦИИ[z].ЕДИЗМ      =ЕДИЗМ_     [z]:ПОЗИЦИИ[z].ЕДИЗМ      =ЕДИЗМ_     [z];fi;
     if not ПОЗИЦИИ[z].ЗН         =ЗН_        [z]:ПОЗИЦИИ[z].ЗН         =ЗН_        [z];fi;
     if not ПОЗИЦИИ[z].КОМПЛЕКТ   =КОМПЛЕКТ_  [z]:ПОЗИЦИИ[z].КОМПЛЕКТ   =КОМПЛЕКТ_  [z];fi;
     if not ПОЗИЦИИ[z].УЧКОМПЛЕКТ =УЧКОМПЛЕКТ_[z]:ПОЗИЦИИ[z].УЧКОМПЛЕКТ =УЧКОМПЛЕКТ_[z];fi;
     if not ПОЗИЦИИ[z].РАЗРЫВСТР  =РАЗРЫВСТР_ [z]:ПОЗИЦИИ[z].РАЗРЫВСТР  =РАЗРЫВСТР_ [z];fi;
     if not ПОЗИЦИИ[z].ВЫСОТАСТР  =ВЫСОТАСТР_ [z]:ПОЗИЦИИ[z].ВЫСОТАСТР  =ВЫСОТАСТР_ [z];fi;
     if not ПОЗИЦИИ[z].ШТРИХКОД   =ШТРИХКОД_  [z]:ПОЗИЦИИ[z].ШТРИХКОД   =ШТРИХКОД_  [z];fi;
     if not ПОЗИЦИИ[z].ЦЕНА       =ЦЕНА_      [z]:ПОЗИЦИИ[z].ЦЕНА       =ЦЕНА_      [z];fi;
     if not ПОЗИЦИИ[z].КОЛФАКТ    =КОЛФАКТ_   [z]:ПОЗИЦИИ[z].КОЛФАКТ    =КОЛФАКТ_   [z];fi;
     if not ПОЗИЦИИ[z].СУМФАКТ    =СУМФАКТ_   [z]:ПОЗИЦИИ[z].СУМФАКТ    =СУМФАКТ_   [z];fi;
     if not ПОЗИЦИИ[z].КОЛУЧЕТ    =КОЛУЧЕТ_   [z]:ПОЗИЦИИ[z].КОЛУЧЕТ    =КОЛУЧЕТ_   [z];fi;
     if not ПОЗИЦИИ[z].СУМУЧЕТ    =СУМУЧЕТ_   [z]:ПОЗИЦИИ[z].СУМУЧЕТ    =СУМУЧЕТ_   [z];fi;
     if not ПОЗИЦИИ[z].ПРИМЕЧ     =ПРИМЕЧ_    [z]:ПОЗИЦИИ[z].ПРИМЕЧ     =ПРИМЕЧ_    [z];fi;
     if not ПОЗИЦИИ[z].РУЧНОЙВВОД =РУЧНОЙВВОД_[z]:ПОЗИЦИИ[z].РУЧНОЙВВОД =РУЧНОЙВВОД_[z];fi;
 od;

 if ПОЗИЦИИ>ПОЗИЦИИ_:showprogress(ПОЗИЦИИ-ПОЗИЦИИ_,'Сохранение данных инвентаризации...');fi;
 k=ПОЗИЦИИ;
 for z=ПОЗИЦИИ_+1..k do
     progresspos(z);
   deleteframe(ПОЗИЦИИ,ПОЗИЦИИ_+1);
 od;
 closeprogress;
 ПОЗИЦИИ_modif=false;
end;

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

Func GetDate :Date;  -- считываем в заданном поле дату
var name :String;
 name=AsString(Template.Field);
 if name="НаДату":    ^НаДату;
 |  name="ДатПриИнв": ^ДатПриИнв;
 |  name="ДатНачИнв": ^ДатНачИнв;
 |  name="ДатКонИнв": ^ДатКонИнв;
 |  name="ДатРасИнв": ^ДатРасИнв;
 |  name="ДатПояИнв": ^ДатПояИнв;
 |  name="ДатКомИнв": ^ДатКомИнв;
 fi;
end;

Proc SetDate(Value:Date); -- устанавливаем в заданном поле дату; Value - значение даты, которое необходимо присвоить
var name :String;
 name=AsString(Template.Field);
 if name="НаДату":    НаДату=Value;
 |  name="ДатПриИнв": ДатПриИнв=Value;
 |  name="ДатНачИнв": ДатНачИнв=Value;
 |  name="ДатКонИнв": ДатКонИнв=Value;
 |  name="ДатРасИнв": ДатРасИнв=Value;
 |  name="ДатПояИнв": ДатПояИнв=Value;
 |  name="ДатКомИнв": ДатКомИнв=Value;
 fi;
end; 

Func Объединить(Value1:String; Value2:String; Separator:String) :String;
var Ret :String;
 if Value1<>"" and Value2<>"": Ret=Value1+Separator+Value2;
 |  Value1= "" and Value2<>"": Ret=Value2;
 |  Value1<>"" and Value2="" : Ret=Value1;
 |  True: Ret="";
 fi;
 ^Ret;
end;

Proc УдалитьПустыеСтроки;
var nn :Integer;
 nn=1;
 while nn<=Позиции_ do if колУчет_[nn]=0 and сумУчет_[nn]=0: Try DeleteFrame(Позиции_, nn); Except end; else nn=nn+1; fi; od;
end;

Proc НачальнаяИтерация;
 if   СтрокиПоясН<1: Try InsertFrame(СтрокиПоясН,   1); Except end; fi;
 if   СтрокиЗакл<1: Try InsertFrame(СтрокиЗакл,   1); Except end; fi;
 if      Позиции_<1: Try InsertFrame(Позиции_,      1); Except end; fi;
 if СтрокиДопУсл<1: Try InsertFrame(СтрокиДопУсл, 1); Except end; fi;
 if Прим_Список<1: Try InsertFrame(Прим_Список, 1); Except end; fi;
end;

Proc ДобавитьСтроку(ИмяСекц:String; Iter:Integer);
 if match(ИмяСекц,"СекцПояс_*"): Try InsertFrame(СтрокиПоясН,   Iter+1); Except end;
 |  match(ИмяСекц,"СекцЗакл_*")  : Try InsertFrame(СтрокиЗакл,   Iter+1); Except end;
 |  match(ИмяСекц,"СЕКЦТАБЛ_*") : Try InsertFrame(Позиции_,      Iter+1);set_ПОЗИЦИИ_modif(true); Except end;
 |  ИмяСекц="СекцДопУсл"        : Try InsertFrame(СтрокиДопУсл, Iter+1); Except end;
 |  ИмяСекц="СекцПрим_Список"   : Try InsertFrame(Прим_Список, Iter+1); Except end;
 fi;
end;

Proc УдалитьСтроку(ИмяСекц:String; Iter:Integer);
 if СООТВ(ИмяСекц,"СекцПояс_*"):
   if СтрокиПоясН>1:
     Try DeleteFrame(СтрокиПоясН, Iter); Except end;
   else 
     Try DeleteFrame(СтрокиПоясН, Iter); Except end; Try InsertFrame(СтрокиПоясН, Iter); Except end;
   fi;
 |  СООТВ(ИмяСекц,"СекцЗакл_*"):
   if СтрокиЗакл>1: 
     Try DeleteFrame(СтрокиЗакл, Iter); Except end; 
   else
     Try DeleteFrame(СтрокиЗакл, Iter); Except end; Try InsertFrame(СтрокиЗакл, Iter); Except end; 
   fi;
 |  match(ИмяСекц,"СЕКЦТАБЛ_*"):
   if Позиции_>1:
     Try DeleteFrame(Позиции_,    Iter); Except set_ПОЗИЦИИ_modif(true);end;
   else
     Try DeleteFrame(Позиции_,    Iter); Except set_ПОЗИЦИИ_modif(true);end; Try InsertFrame(Позиции_,    Iter); Except end;
   fi;
 |  ИмяСекц="СекцДопУсл":
   if СтрокиДопУсл>1:
     Try DeleteFrame(СтрокиДопУсл, Iter); Except end;
   else
     Try DeleteFrame(СтрокиДопУсл, Iter); Except end; Try InsertFrame(СтрокиДопУсл, Iter); Except end;
   fi;
 |  ИмяСекц="СекцПрим_Список":
   if Прим_Список>1:
     Try DeleteFrame(Прим_Список, Iter); Except end;
   else
     Try DeleteFrame(Прим_Список, Iter); Except end; Try InsertFrame(Прим_Список, Iter); Except end;
   fi;
 fi;
end;


Func ОтменитьИзмененияУсловийОтчета :Logical;
var FF :Logical;
var qq :Integer;
 FF=False;
 УдалитьПустыеСтроки;
 if ПОЗИЦИИ_>0:
   qq=EnqOkCancel("Условия отбора данных для формирования описи"+Chr(13)+
                  "инвентарных карточек по учету основных средств изменились!"+Chr(13)+
                  "Очистить отчет?", mtConfirmation);
   if qq=cmOk    : Очистить; ОчиститьТаблицу;
   |  qq=cmCancel: FF=True;
   fi;
 fi;
 НачальнаяИтерация;
 ^FF;
end;

Proc Реквизиты;
var REC :Record;
var RO :Integer;
 REC=SignToRecord("К."+УЧРЕЖ_КОД);
 REC=OpenCardFile("КОНТРАГЕНТ", "НАШЕ", REC, crdRecordOnly);
 if REC=NIL: Exit; fi;
 RO=OpenWorkArea("КОНТРАГЕНТ", "", "Ukey="+RecordToString(REC));
 Try
   if Records(RO)=1:
     УЧРЕЖ_КОД = GetFieldS(RO, 1, "ПРИЗНАК");
     УЧРЕЖ_ИМЯ = GetFieldS(RO, 1, "КОРИМЯ");
     ОКПО      = GetFieldS(RO, 1, "ОКПО");
   fi;
 Finally
   CloseWorkArea(RO);
 end;
end;
Proc ВыборКомиссии;
var REC :Record;
var RO, OA, num, i :Integer;
 REC=OpenCardFile("КОМИССИЯ", "", NIL, crdRecordOnly);
 if REC<>NIL:
   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 to num do
             Try InsertFrame(Комиссия, i); Except end;
             Комиссия[i].ДОЛЧЛЕНКОМ=GetFieldS(OA, i, "ЧЛЕНД");
             Комиссия[i].ФИОЧЛЕНКОМ=GetFieldS(OA, i, "ЧЛЕНФ");
           od;
         Finally
           CloseWorkArea(OA);
         end;
       fi;
     fi;
   Finally
     CloseWorkArea(RO);
   end;
 fi;
end;


Proc ЗаполнитьСубСчета(СЧ:String);
 var j:i;
 ClearVariable(Buf);
 if СЧ="НФА":
   Buf[1]="101 - Основные средства";
   Buf[2]="102 - Нематериальные активы";
   Buf[3]="103 - Непроизведенные активы";
   Buf[4]="105 - Материальные запасы";
   Buf[5]="106 - Капитальные вложения";
--   Buf[6]="КБК - ";
 |  СЧ="101":
   Buf[01]="...";
   Buf[02]="101.?? - Все основные средства";
   Buf[03]="101.01 - Жилые помещения";
   Buf[04]="101.02 - Нежилые помещения";
   Buf[05]="101.03 - Сооружения";
   Buf[06]="101.04 - Машины и оборудование";
   Buf[07]="101.05 - Транспортные средства";
   Buf[08]="101.06 - Производственный и хозяйственный инвентарь";
   Buf[09]="101.07 - Библиотечный фонд";
   Buf[10]="101.08 - Прочие основные средства";
 |  СЧ="102":
   Buf[1]="...";
   Buf[2]="102.00 - Нематериальные активы";
 |  СЧ="103":
   Buf[1]="...";
   Buf[2]="103.?? - Все непроизведенные активы";
   Buf[3]="103.01 - Земля";
   Buf[4]="103.02 - Ресурсы недр";
   Buf[5]="103.03 - Прочие непроизведенные активы";
 |  СЧ="105":
   Buf[1]="...";
   Buf[2]="105.?? - Все материальные запасы";
   Buf[3]="105.01 - Медикаменты и перевязочные средства";
   Buf[4]="105.02 - Продукты питания";
   Buf[5]="105.03 - Горюче-смазочные материалы";
   Buf[6]="105.04 - Строительные материалы";
   Buf[7]="105.05 - Мягкий инвентарь";
   Buf[8]="105.06 - Прочие материальные запасы";
   Buf[9]="105.07 - Готовая продукция";
 |  СЧ="106":
   Buf[1]="..."; j=1;
   if pos('106.01',Разрешенные106)>0:j=j+1;Buf[j]="106.01 - Капитальные вложения в ОС";fi;
   if pos('106.02',Разрешенные106)>0:j=j+1;Buf[j]="106.02 - Капитальные вложения в НМА";fi;
   if pos('106.03',Разрешенные106)>0:j=j+1;Buf[j]="106.03 - Капитальные вложения в НПА";fi;
   if pos('106.04',Разрешенные106)>0:j=j+1;Buf[j]="106.04 - Капитальные вложения в материалы";fi;
 fi;
end;
Func ВзятьМаскуНомСч(НомСч0:s):s;
var tmp:s;
   if Match(НомСч0, "???.????.??????*.???.?.101.??*"): tmp=ExtractWords(6,2,НомСч0,'.');
   |  Match(НомСч0, "???.????.??????*.???.?.102.??*"): tmp=ExtractWords(6,2,НомСч0,'.');
   |  Match(НомСч0, "???.????.??????*.???.?.103.??*"): tmp=ExtractWords(6,2,НомСч0,'.');
   |  Match(НомСч0, "???.????.??????*.???.?.105.??*"): tmp=ExtractWords(6,2,НомСч0,'.');
   |  Match(НомСч0, "???.????.??????*.???.?.106.??*"): tmp=ExtractWords(6,2,НомСч0,'.');
   |  Match(НомСч0, "ЗАБ.101.??*"): tmp=ExtractWords(2,2,НомСч0,'.');
   |  Match(НомСч0, "ЗАБ.102.??*"): tmp=ExtractWords(2,2,НомСч0,'.');
   |  Match(НомСч0, "ЗАБ.103.??*"): tmp=ExtractWords(2,2,НомСч0,'.');
   |  Match(НомСч0, "ЗАБ.105.??*"): tmp=ExtractWords(2,2,НомСч0,'.');
   |  Match(НомСч0, "ЗАБ.106.??*"): tmp=ExtractWords(2,2,НомСч0,'.');
   |  Match(НомСч0, "101.??*"): tmp=SubStr(НомСч0, 1, 6);
   |  Match(НомСч0, "102.??*"): tmp=SubStr(НомСч0, 1, 6);
   |  Match(НомСч0, "103.??*"): tmp=SubStr(НомСч0, 1, 6);
   |  Match(НомСч0, "105.??*"): tmp=SubStr(НомСч0, 1, 6);
   |  Match(НомСч0, "106.??*"): tmp=SubStr(НомСч0, 1, 6);
   else ^'';
   fi;
   if SubStr(tmp,5,1)='0':tmp=SubStr(tmp,1,4)+'?'+SubStr(tmp,6,1);fi;
   if SubStr(tmp,6,1)='0':tmp=SubStr(tmp,1,5)+'?';fi;
   ^tmp;
end;

Func ВыборСчетаУчетаНФА0(НомСч0:s):s;
var nn, k, kk, mm :Integer;
var tmp,tmp1 :String;
var OK, Edit :Logical;
 OK=True; nn=0; ClearVariable(Buf);
 if НомСч0<>"":
   Edit=True;
   tmp=SubStr(НомСч0, 1, 6);
   if Match(НомСч0, "???.????.??????*.???.?.101.??*"): tmp=ExtractWords(6,2,НомСч0,'.'); k=1;
   |  Match(НомСч0, "???.????.??????*.???.?.102.??*"): tmp=ExtractWords(6,2,НомСч0,'.'); k=2;
   |  Match(НомСч0, "???.????.??????*.???.?.103.??*"): tmp=ExtractWords(6,2,НомСч0,'.'); k=3;
   |  Match(НомСч0, "???.????.??????*.???.?.105.??*"): tmp=ExtractWords(6,2,НомСч0,'.'); k=4;
   |  Match(НомСч0, "???.????.??????*.???.?.106.??*"): tmp=ExtractWords(6,2,НомСч0,'.'); k=5;
   |  Match(НомСч0, "ЗАБ.101.??*"): tmp=ExtractWords(2,2,НомСч0,'.'); k=1;
   |  Match(НомСч0, "ЗАБ.102.??*"): tmp=ExtractWords(2,2,НомСч0,'.'); k=2;
   |  Match(НомСч0, "ЗАБ.103.??*"): tmp=ExtractWords(2,2,НомСч0,'.'); k=3;
   |  Match(НомСч0, "ЗАБ.105.??*"): tmp=ExtractWords(2,2,НомСч0,'.'); k=4;
   |  Match(НомСч0, "ЗАБ.106.??*"): tmp=ExtractWords(2,2,НомСч0,'.'); k=5;
   |  Match(tmp, "101.??"): k=1;
   |  Match(tmp, "102.??"): k=2;
   |  Match(tmp, "103.??"): k=3;
   |  Match(tmp, "105.??"): k=4;
   |  Match(tmp, "106.??"): k=5;
   else k=0;
   fi;
   if tmp<>"": kk=Int(SubStr(tmp, 6, 1))+1; else kk=1; fi;
 else
   Edit=False; k=1; kk=1;
 fi;
 while OK do
   ЗаполнитьСубСчета("НФА");
   if not(Edit):
     nn=Alternate("Выберите счет учета НФА", Buf, -1, k, 12);
   else
     nn=k;
   fi;
   if nn<>0: tmp=Buf[nn]; k=nn; fi;
   if nn=0: OK=False;
   |  nn=1: ЗаполнитьСубСчета("101");
   |  nn=2: ЗаполнитьСубСчета("102");
   |  nn=3: ЗаполнитьСубСчета("103");
   |  nn=4: ЗаполнитьСубСчета("105");
   |  nn=5: ЗаполнитьСубСчета("106");
   fi;
   while OK do
     if Edit:
       mm=Alternate("Выберите субсчет счета '"+tmp+"'", Buf, -1, kk+1, 12);
       Edit=False;
     else
       mm=Alternate("Выберите субсчет счета '"+tmp+"'", Buf, -1, 1, 12);
     fi;
     if mm=0: OK=False;
     |  mm=1: kk=1; Break;
     else ^Buf[mm]; OK=False;
     fi;
   od;
 od;
 ^НомСч0;
end;

Proc ВыборСчетаУчетаНФА;
var temp:s;
 temp = ВыборСчетаУчетаНФА0(НомСч);
 if НомСч<>temp:
   НомСч=temp;
 fi;
end;

Proc ИнициализироватьУсловияИнвентарныхНомеров;
 ClearVariable(УслКРЕ); ClearVariable(УслДЕБ); ClearVariable(УслАНА);
 УслДЕБ[1] ="???.????.???????.???.?.101.??.310&~(*.101.37.310)";
 УслКРЕ[1] ="(???.????.???????.???.?.???.??.???&(*.106.?1.310|*.304.04.310))|(???.?.??.?????.??.????.?.401.1?.1??&(*.1?.14?|*.1?.15?|*.1?.180))|00";
 УслАНА[1] ="";

 УслДЕБ[2] ="???.????.???????.???.?.102.??.320";
 УслКРЕ[2] ="(???.????.???????.???.?.???.??.???&(*.106.32.?20|*.304.04.320))|(???.?.??.?????.??.????.?.401.1?.1??&(*.1?.14?|*.1?.15?|*.1?.180))|00";
 УслАНА[2] ="";

 УслДЕБ[3]="((*.?.101.??.310&~(*.?.101.37.310))|*.?.102.??.320)&???.????.???????.???.?.???.??.???";
 УслКРЕ[3]="((*.?.101.??.310&~(*.?.101.37.310))|*.?.102.??.320)&???.????.???????.???.?.???.??.???";
 УслАНА[3]="";

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

 УслДЕБ[5] ="(ЗАБ.??.101.??&~(ЗАБ.??.101.?7))|ЗАБ.??.102.??|ЗАБ.??.103.??";
 УслКРЕ[5] ="(ЗАБ.??.101.??&~(ЗАБ.??.101.?7))|ЗАБ.??.102.??|ЗАБ.??.103.??|ЗАБАЛАНС";
 УслАНА[5] ="";
end;

Func СчетСоотвМаске(СЧ:String; УСЛсч:String) :Logical;
-- СЧ должно являтся полным значением, а не маской!
var Acc :String;
 if УСЛсч="": ^False; fi;
 if Name_S(СЧ)=" ": ^False; fi;
 УСЛсч="("+УСЛсч+")";
 for Account Acc=УСЛсч, Sort do if СЧ=Acc: ^True; fi; od;
 ^False;
end;

Func ПризнакСоотвМаске(Призн:String; УСЛан:String) :Logical;
-- Призн должно являтся полным значением, а не маской!
var Ana :String;
 if УСЛан="": ^False; fi;
 if Name_A(Призн)=" ": ^False; fi;
 if УСЛан="*": ^True; fi;
 for Sign Ana=УСЛан, Sort do if Призн=Ana: ^True; fi; od;
 ^False;
end;

Func ПризнакИзСтрокиАналитикиПроводки(x:Integer; VOC:String; ДебПров:Logical) :String;
-- x - номер проводки
var p :Integer;
var sep, ANA :String;
 sep=""; ANA="";
 p=TransNumSign(x, sep+VOC+".");
 if p>0: ANA=TransSignName(x, p); ^ANA; fi;
 if ДебПров: sep="+"; else sep="-"; fi;
 p=TransNumSign(x, sep+VOC+".");
 if p>0: ANA=TransSignName(x, p); ^SubStr(ANA, 2, 255); fi;
 ^ANA;
end;

Func НомерСчета_Маску(StrAcc:String) :String;
var Work :Logical;
var RES, Value :String;
 Work=False;
 StrAcc=Trim(SubStr(StrAcc, 1, 6));
 if Match(StrAcc, "101.??"): Work=True;
 |  Match(StrAcc, "102.??"): Work=True;
 |  Match(StrAcc, "103.??"): Work=True;
 |  Match(StrAcc, "105.??"): Work=True;
 |  Match(StrAcc, "106.??"): Work=True;
 else ^"10?.??";
 fi;
 RES="";
 if Work:
   Value=StrAcc;
   if Match(StrAcc, "10?.0?"): StrAcc=SubStr(Value, 1, 4)+"?"+SubStr(Value, 6, 1); fi;
   if Work: 
     Value=SubStr(StrAcc, 5, 1);
     if not Pos(Value, "?1234")      > 0: Work=False; fi;
   fi;
   if Work: 
     Value=SubStr(StrAcc, 6, 1);
     if not Pos(Value, "?123456789") > 0: Work=False; fi;
   fi;
   if Work: RES=StrAcc; fi;
 fi;
 if RES="": RES=SubStr(StrAcc, 1, 4)+"??"; fi;
 ^RES;
end;

Proc РасчетВыполнить2;
var Путь, УслСч, УслОтб, ANA, КОДНФА, tmp,tmp1,tmp2,tmp_, ИНВНОМ, СЧД,АНРАЗР_0 :String;
var ВременныйФайл, aVal1, aVal2, aDeb, aCre, aComment,ss,ssss,znak: String;
var aSum1, aSum2,kolcur,sumcur,nnn: Numeric;
var aDate: Date;
var Rep :Report;
var len, i, j, k, y, x, z ,jj,tt,dd,mm,yyyy:Integer;
var Flag : Logical;
var REC  : Record;
var list_s,list_d,list_i,list_n,  :String ;

list_s='НОМЕРБУМ ОБЪЕКТ1 ОБЪЕКТ2 ОБЪЕКТ3 ОКОФ СТРПОДР НФА_НАЗНАЧЕНИЕ ИЗГОТОВИТЕЛЬ ОКПОИЗГ СЧЕТНФА ПАСПОРТ ЗАВОД_НОМ ИНОЙ_НОМ НОМ_ВЭКСП ОПРИХ_ЖО ВЫБЫТ_ЖО ВЫБЫТ_ПРИЧ РНФИ ГРЗ ВИД ДОК_ИЗЪЯТИЯ ДОК_ОГРАНИЧЕНИЯ КАРТА';
list_d='DD ДАТА_ИЗГ ДАТ_ВЭКСП LAST_DATE ОПРИХ_ДАТА ВЫБЫТ_ДАТА СНЯТИЕ_С_УЧЕТА';
list_i='НОМЕР АМОРТ_ГРУП';
list_n='АМОРТ_СРОК ПЕРВ_СТОИМ П_СУММА_МЕС П_АМОРТ_НАКОП СТОИМ_ОТЧ СНАЧ_ЭКСП СТОИМ_ИНАЯ';

 ОчиститьТаблицу;
 if Заб and Бал      : УслСч="";
 |  Заб and Бал=False: УслСч="забаланс";
 |  Заб=False and Бал: УслСч="баланс";
 fi;
 Путь=PlanVar("НФА")+"\Отчеты\НФАОТЧ.lst";
 УслОтб="";
 if РазбСч:
   УслОтб="";
   if match(НомСч,'???.????.???????.???.?.10?.??.???') or match(НомСч,'???.????.????????.???.?.10?.??.???') or match(НомСч,'ЗАБ.??.1??.??'):
       if (Заб and match(НомСч,'ЗАБ.??.1??.??')) or( Бал and match(НомСч,'???.????.???????.???.?.10?.??.???') or match(НомСч,'???.????.????????.???.?.10?.??.???')):
           УслОтб=НомСч;
           if match(УслОтб,'???.????.???????*.???.?.10?.??.000'):
              УслОтб=ExtractWords(1,7,УслОтб,'.')+'.???';
           fi;
       fi;
    | true:
       if Бал: УслОтб=Объединить(УслОтб, "*.?."+НомерСчета_Маску(НомСч)+".???", "|"); fi;
       if Заб: УслОтб=Объединить(УслОтб, "ЗАБ.??."+НомерСчета_Маску(НомСч), "|"); fi;
   fi;
--   if Заб: УслОтб=Объединить(УслОтб, "ЗАБ.??."+SubStr(НомСч,1,6), "|"); fi;
 else
   УслОтб='';
   if Бал:УслОтб=Объединить(УслОтб,'((*.?.101.??.???|*.?.102.??.???|*.?.105.??.???)&???.????.???????.???.*)', "|"); fi;
   if Заб:УслОтб=Объединить(УслОтб,'(ЗАБ.??.???.??)', "|"); fi;
   if ФЛ106_значение:УслОтб=Объединить(УслОтб,Разрешенные106, "|"); fi;
--   if Заб and Бал      : УслОтб="((*.?.101.0?.???|*.?.102.01.???|*.?.105.0?.???)&???.????.???????.???.*)|???.??.*.103.0?.???|ЗАБ.??.???.??";
--   |  Заб and Бал=False: УслОтб="ЗАБ.??.???.??";
--   |  Заб=False and Бал: УслОтб="((*.?.101.0?.???|*.?.102.01.???|*.?.105.0?.???)&???.????.???????.???.*)|???.??.*.103.0?.???";
--   fi;
 fi;
 ANA="";
 if нетПО=False: ANA=Объединить(ANA, КОД_ПО, "&"); fi;
 ANA=Объединить(ANA, КОД_МОЛ, "&");
 if UseМХЭ: ANA=Объединить(ANA, КОД_МХЭ, "&"); fi;
 --
 for z=1 to СтрокиДопУсл do ANA=Объединить(ANA, СтрокиДопУсл[z].ДОППРИЗН, "&"); od;
 z=0;
 Flag=True;
 if Flag:
   ВременныйФайл=PlanVar('CACHE')+'\ВременныйФайлОстатков.jur';
   if ExistFile(ВременныйФайл): DeleteFile(ВременныйФайл); fi;
   ss=УслОтб;
   x=0;
   if Бал or ФЛ106_значение:x=x+TujRepBalAccount;fi;
   if Заб                  :x=x+TujRepZabalance ;fi;
                            x=x+TujRepCombinedAna;
--   if Заб and Бал      : x=TujRepBalAccount+TujRepNoNullBal+TujRepZabalance+TujRepCombinedAna;--ss="*.?.101.??.???|*.?.102.??.???|*.?.105.??.???|(ЗАБ.??.???.??)";
--   |  Заб and Бал=False: x=                 TujRepNoNullBal+TujRepZabalance+TujRepCombinedAna;--ss="ЗАБ.??.???.??";
--   |  Заб=False and Бал: x=TujRepBalAccount+TujRepNoNullBal+                TujRepCombinedAna;--ss="*.?.101.??.???|*.?.102.??.???|*.?.105.??.???";
--   fi;
--   tmp=if(РазбСч, УслОтб, ss);
   tmp=УслОтб;
   if ФЛ_НЕТ_КТ:
      len=TujReport(ВременныйФайл, 1.1.100, НаДату, tmp, Объединить(ANA, "НФА.*", "&"), "ДНФА|МОЛ|М|ДВИЖ_НФА|П|ИЗВ_ВХ|НАР_ВХ|ТТН_ВХ|ПЕРИОД|КТ", "", "", x, False);
    | true:
      len=TujReport(ВременныйФайл, 1.1.100, НаДату, tmp, Объединить(ANA, "НФА.*", "&"), "ДНФА|МОЛ|М|ДВИЖ_НФА|П|ИЗВ_ВХ|НАР_ВХ|ТТН_ВХ|ПЕРИОД", "", "", x, False);
   fi;
   if len>0:
     OpenTextJur(ВременныйФайл);
     ShowProgress(len, "Поиск НФА и расчет остатков...");
     Try
       j=1; y=1; 
       ClearVariable(НФА_ИНВ);
       ClearVariable(НФА_ИНВ_КОЛ);
       ClearVariable(НФА_ИНВ_СУМ);

       while not GetTransFromTextJur(aDate, aSum1, aVal1, aSum2, aVal2, aDeb, aCre, aAna, aComment) do
         ProgressPos(y);
         y=y+1;kolcur=0;sumcur=aSum1;
         if aSum2<>0:sumcur=aSum2;fi;
         k=LengthOfArray(aAna);
         if aDeb="00" or aDeb="00Z":znak='-';
          | true:znak='+';
         fi;
         if k>0:
           КОДНФА=""; ИНВНОМ=" "; АНРАЗР_0=" ";
           for i=1 to k do 
             if Match(aAna[i], "НФА.*"):
               x=Pos(":", aAna[i]);
               if x>0:
                  ss=SubStr(aAna[i], 1, x-1);
                  kolcur=round(trim(SubStr(aAna[i],x+1,255)),точность(ss));
                  aAna[i]=ss;
               fi;
               КОДНФА=aAna[i];
             |  Match(aAna[i], "УЧН.*") or Match(aAna[i], znak+"УЧН.*"):
               if SubStr(aAna[i], 1, 1)=znak: ИНВНОМ=SubStr(aAna[i], 2, 255); else ИНВНОМ=aAna[i]; fi;
             |  Match(aAna[i], "КТ.*") or Match(aAna[i], znak+"КТ.*"):
               if SubStr(aAna[i], 1, 1)=znak: АНРАЗР_0=Раб.НФА.B01.ab(АНРАЗР_0,' ',SubStr(aAna[i], 2, 255)); else АНРАЗР_0=Раб.НФА.B01.ab(АНРАЗР_0,' ',aAna[i]); fi;
             |  Match(aAna[i], "ЗН.*") or Match(aAna[i], znak+"ЗН.*"):
               if SubStr(aAna[i], 1, 1)=znak: АНРАЗР_0=Раб.НФА.B01.ab(АНРАЗР_0,' ',SubStr(aAna[i], 2, 255)); else АНРАЗР_0=Раб.НФА.B01.ab(АНРАЗР_0,' ',aAna[i]); fi;-- АНРАЗР_0=SubStr(aAna[i], 2, 255); else АНРАЗР_0=aAna[i]; fi;


             fi;
           od;
           if КОДНФА<>"" and ИНВНОМ<>"":
             tmp="";
             if aDeb="00" or aDeb="00Z": tmp=aCre;kolcur=-1*kolcur;sumcur=-1*sumcur; fi;
             if aCre="00" or aCre="00Z": tmp=aDeb; fi;
             if Match(tmp, "???.????.??????*.???.?.105.??.???")    : tmp=SubStr(tmp, 1, 30)+"???";ИНВНОМ=' ';
             |  Match(tmp, "???.????.??????*.???.?.106.??.???")    : tmp=SubStr(tmp, 1, 30)+"???";ИНВНОМ=' '; if не(ФЛ106_значение and Match(КОДНФА,'НФА.106.*')):tmp='';fi;-- учет на 106 только НФА.106.*
             |  Match(tmp, "???.????.??????*.???.?.10?.??.???")    : tmp=SubStr(tmp, 1, 30)+"???";
             |  Match(tmp, "???.??.??.??.??.??.????.?.10?.??.???") : tmp=SubStr(tmp, 1, 33)+"???";
             |  Match(tmp, "ЗАБ.??.10?.??")                        : tmp=tmp;ИНВНОМ=' ';
             else tmp="";
             fi;
             if tmp<>"": 
                ssss=КОДНФА+"|"+ИНВНОМ+"|"+АНРАЗР_0+"|"+tmp;
                jj=SearchInArray(НФА_ИНВ,ssss,true);
                if jj<1:jj=InsertInArraySort(НФА_ИНВ,ssss);
                   InsertInArray(НФА_ИНВ_КОЛ,jj,0);
                   InsertInArray(НФА_ИНВ_СУМ,jj,0);
                fi;
                НФА_ИНВ_КОЛ[jj]=НФА_ИНВ_КОЛ[jj]+kolcur;
                НФА_ИНВ_СУМ[jj]=НФА_ИНВ_СУМ[jj]+sumcur;

                j=j+1;

             fi;
           fi;
         fi;
       end; -- while
     Finally
       CloseProgress;
       CloseTextJur;
       if ExistFile(ВременныйФайл): DeleteFile(ВременныйФайл); fi;
     end;
   fi;
   len=LengthOfArray(НФА_ИНВ);
   if len>0:
     ShowProgress(len, "Обработка НФА...");
       for i=1 to len do
         ProgressPos(i);
         КОДНФА   =ExtractWord(1, НФА_ИНВ[i], "|");
         ИНВНОМ   =trim(ExtractWord(2, НФА_ИНВ[i], "|"));
         АНРАЗР_0 =trim(ExtractWord(3, НФА_ИНВ[i], "|"));
            СЧД   =ExtractWord(4, НФА_ИНВ[i], "|");

         if length(ИНВНОМ)>1:
             nnn=if(НФА_ИНВ_КОЛ[i]<>0: НФА_ИНВ_СУМ[i]/НФА_ИНВ_КОЛ[i], НФА_ИНВ_СУМ[i]);
             if nnn<=3000: -- только для 148н_2009
                ssss=SubSTR(СЧД,23,5);
                if ssss='.101.' or ssss='.102.': -- убираем УЧН
                   -- копируем сумму и количество в раннее объявленную строчку без учн
                   j=SearchInArray(НФА_ИНВ,КОДНФА+'| |'+АНРАЗР_0+'|'+СЧД,true);
                   if j>0:
                      len=len-1;
                      НФА_ИНВ_КОЛ[j]=НФА_ИНВ_КОЛ[j]+НФА_ИНВ_КОЛ[i];
                      НФА_ИНВ_СУМ[j]=НФА_ИНВ_СУМ[j]+НФА_ИНВ_СУМ[i];
                      DeleteFromArray(НФА_ИНВ_КОЛ,i);
                      DeleteFromArray(НФА_ИНВ_СУМ,i);
                      DeleteFromArray(НФА_ИНВ,i);
                      i=i-1;
                   fi;
                fi;
             fi;
         fi;
       od;
     ShowProgress(len, "Обработка НФА, заполнение инв.описи...");
     Try
       for i=1 to len do
         ProgressPos(i);
         КОДНФА   =ExtractWord(1, НФА_ИНВ[i], "|");
         ИНВНОМ   =trim(ExtractWord(2, НФА_ИНВ[i], "|"));
         АНРАЗР_0 =trim(ExtractWord(3, НФА_ИНВ[i], "|"));
            СЧД   =ExtractWord(4, НФА_ИНВ[i], "|");

         if length(ИНВНОМ)>1:
             nnn=if(НФА_ИНВ_КОЛ[i]<>0: НФА_ИНВ_СУМ[i]/НФА_ИНВ_КОЛ[i], НФА_ИНВ_СУМ[i]);
             if nnn<=3000:
                ssss=SubSTR(СЧД,23,5);
                if ssss='.101.' or ssss='.102.': -- убираем УЧН
                   -- копируем сумму и количество в раннее объявленную строчку без учн
                   j=SearchInArray(НФА_ИНВ,КОДНФА+'| |'+АНРАЗР_0+'|'+СЧД,true);
                   if j>0:
                      НФА_ИНВ_КОЛ[j]=НФА_ИНВ_КОЛ[j]+НФА_ИНВ_КОЛ[i];
                      НФА_ИНВ_СУМ[j]=НФА_ИНВ_СУМ[j]+НФА_ИНВ_СУМ[i];
                   fi;
                fi;
             fi;
         fi;

         z=z+1;
         НФА_код_  [z]=КОДНФА;
         Инвен_    [z]=ИНВНОМ;
         АНРАЗР_   [z]=АНРАЗР_0;
         СЧЕТ_     [z]=СЧД;
         if length(СЧД)=33             :СЧЕТРАЗР_ [z]=SubStr(СЧД,24,6);СЧЕТ_[z]=SubStr(СЧД,1,30)+'000';
          | соотв(СЧД,'ЗАБ.??.???.??') :СЧЕТРАЗР_ [z]=SubStr(СЧД,8,6);
         fi;
         tmp=Name_A(КОДНФА);
         if Length(tmp)>0: НФА_имя_[z]=tmp; else НФА_имя_[z]=КОДНФА; fi;
         tmp=Name_A("ИНВВЕД."+КОДНФА+'.'+ИНВНОМ);
         if tmp=" ":
           --Примеч[z]="Инв. карточка не создана";
           Примеч_[z]="";
           tt=pos(' ЗН.',' '+АНРАЗР_[z]);
           if tt>0:
              ЗН_[z]=SubStr(АНРАЗР_[z]+' ',tt,255);
              ЗН_[z]=SubStr(ЗН_[z],1,pos(' ',ЗН_[z]));
--              if соотв(АНРАЗР_ [z],'ЗН.*'):ЗН_[z]=SubStr(АНРАЗР_[z],4,255);fi;
           fi;
         else
             REC=SignToRecord("ИНВВЕД."+КОДНФА+'.'+ИНВНОМ, False);
             if REC<>NIL:
               ИНВ_ИМЯ_   [z]=trim(GetCardFieldS("РПО_ИНВКАРТ_ОС", REC, "Объект1"));
               if ИмяИзИНВКАРТЫ:
                  if ИНВ_ИМЯ_[z]<>'':НФА_имя_[z]=ИНВ_ИМЯ_[z];fi;
               fi;
               ДОКРЕГ_    [z]=GetCardFieldS("РПО_ИНВКАРТ_ОС", REC, "ПАСПОРТ");
               ЗН_        [z]=trim(GetCardFieldS("РПО_ИНВКАРТ_ОС", REC, "ЗАВОД_НОМ"));
               if ЗН_[z]='':
                  tt=pos(' ЗН.',' '+АНРАЗР_[z]);
                  if tt>0:
                     ЗН_[z]=SubStr(АНРАЗР_[z]+' ',tt,255);
                     ЗН_[z]=SubStr(ЗН_[z],1,pos(' ',ЗН_[z]));
                  fi;
               fi;
               ГОДВЫПУСКА_[z]=GetCardFieldD("РПО_ИНВКАРТ_ОС", REC, "ДАТА_ИЗГ");
               if Прим:
                  tmp1='';
                  for tt=1..Прим_Список do
                    tmp1=trim(up(ПРИМ_ПОЛЕ[tt]));
                    if tmp1<>'':
                       if кодформы<>'0504087_МО' or  (pos(tmp1,'ПАСПОРТ ЗАВОД_НОМ ДАТА_ИЗГ')<1 and кодформы='0504087_МО'):
                          if pos(tmp1,list_s)>0:tmp2=GetCardFieldS("РПО_ИНВКАРТ_ОС", REC, tmp1);
                           | pos(tmp1,list_d)>0:tmp2=DateToString(GetCardFieldd("РПО_ИНВКАРТ_ОС", REC, tmp1));
                           | pos(tmp1,list_i)>0:tmp2=str(GetCardFieldI("РПО_ИНВКАРТ_ОС", REC, tmp1));
                           | pos(tmp1,list_n)>0:tmp2=str(GetCardFieldN("РПО_ИНВКАРТ_ОС", REC, tmp1),2);
                           | true:tmp2='';
                          fi;
                          if tmp2<>'':tmp2=Раб.НФА.B01.ab(ПРИМ_ТИП[tt],'',tmp2);fi;
                          Примеч_[z]=Раб.НФА.B01.ab(Примеч_[z],chr(13),tmp2);
                       fi;
                    fi;
                  od;
--                  Примеч_[z]="иной/н:"+GetCardFieldS("РПО_ИНВКАРТ_ОС", REC, "ИНОЙ_НОМ")+'  '+str(Раб.НФА.B01.ПОЛЕПОПРИЗНАКУЧ(КОДНФА,'СРОКАМ'),2)+' лет';
               fi;
               if Раб.Штрихкод.ЭлИнвВкл then
                 Штрихкод_[z]=GetCardFieldS("РПО_ИНВКАРТ_ОС", REC, "ШТРИХКОД");
                fi;
             fi;
         fi;

         if ГОДВЫПУСКА_[z]=1.1.100:tmp='';dd=1;mm=1;yyyy=100;
            if match(АНРАЗР_0,'КТ.????') or match(АНРАЗР_0,'КТ.????.??') or match(АНРАЗР_0,'КТ.????.??.??'):
               tmp=SubStr(АНРАЗР_0,4,255);
             | match(АНРАЗР_0,'КТ.?.????') or match(АНРАЗР_0,'КТ.?.????.??') or match(АНРАЗР_0,'КТ.?.????.??.??'):
               tmp=SubStr(АНРАЗР_0,6,255);
             | match(АНРАЗР_0,'КТ.?.П_????.*') or match(АНРАЗР_0,'КТ.?_Э_????.*'):
               tmp=SubStr(АНРАЗР_0,8,10);
            fi;
            yyyy=int(ВыделитьСлово(1,tmp,'.'));
            if yyyy>1800 and yyyy<2020:
               mm=int(ВыделитьСлово(2,tmp,'.'));
               if mm>0 and mm<13:
                  dd=int(ВыделитьСлово(3,tmp,'.'));
                  if dd>0 and dd<32:
                   | true:dd=1;
                  fi;
                | true:mm=1;
               fi;
               ГОДВЫПУСКА_[z]=dat(dd,mm,yyyy);
             | true:yyyy=100;
            fi;
         fi;
         if ГОДВЫПУСКА_[z]=1.1.100:
            ГОДВЫПУСКА_[z]=Раб.НФА.B01.ВзятьМИН_ДУЧЕТ_ДЭКСПЛ(КОДНФА,ИНВНОМ);
         fi;

         ЕдИзм_[z]=Unit(КОДНФА);
         колУчет_[z]=НФА_ИНВ_КОЛ[z];
         сумУчет_[z]=НФА_ИНВ_СУМ[z];
         if Факт: колФакт_[z]=колУчет_[z]; сумФакт_[z]=сумУчет_[z]; else колФакт_[z]=0; сумФакт_[z]=0; fi;
         Цена_[z]=if(колУчет_[z]<>0: сумУчет_[z]/колУчет_[z], 0);
       od;
     Finally
       CloseProgress;
     end;
   fi;
 fi;
 ПОЗИЦИИ_=z;
 УдалитьПустыеСтроки;
   ShowProgress(0, "Идет сортировка...");
     SortSection(ПОЗИЦИИ_, "НФА_КОД_");
   CloseProgress;
 Очистить;
 ClearVariable(NN);
end;

Proc Расчет;
var msg, fld, tmp, Acc, Voc ,ss:String;
var tb :Numeric;
var Err, OK :Logical;
var nn, i, num, j, k :Integer;
 Err=False; msg=""; fld="";
 if НАДАТУ=1.1.100: Err=True; fld="НАДАТУ" ; msg="Не указана дата формирования данных инвентаризационной описи!"; fi;
 if КОД_ПО=""     : Err=True; fld="ИМЯ_ПО_" ; msg="Не указано структурное подразделение для^Mформирования данных инвентаризационной описи!"; fi;
 if КОД_МОЛ=""    : Err=True; fld="ИМЯ_МОЛ_"; msg="Не указано материально ответственное лицо для^Mформирования данных инвентаризационной описи!"; fi;
 if РАЗБСЧ and НОМСЧ="": 
                    Err=True; fld="НОМСЧ";   msg="Указан флаг 'Составить отчет только для выбранного субсчета' и^Mне указан номер счета для формирования данных инвентаризационной описи!";
 fi;
 if Err: Message(msg, mtWarning); Template.Field=fld; Exit; fi;
 if Бал=False and Заб=False and ФЛ106_значение=False:
   Message("Для расчета необходимо включить флажок^Mбалансовых и (или) забалансовых счетов! и (или) учитывать 106", mtWarning);
   Template.Object="cbБал";
   Exit;
 fi;
 ClearVariable(Buf);
 ClearVariable(НеПовтор);
 if Бал and Заб:ss="*.10?.??.???|ЗАБ.??.10?.??";
  | Бал:ss="*.10?.??.???";
  | Заб:ss="ЗАБ.??.10?.??";
 fi;
 for Account Acc=ss do
   tmp=Объединить(SignsMask(Acc, True), SignsMask(Acc,False), "|");
   if SearchInArray(Buf, tmp, True)=-1: nn=InsertInArraySort(Buf, tmp); fi;
 od;
 nn=LengthOfArray(Buf);
 for i=1 to nn do
   tmp=Buf[i];
   num=WordsCount(tmp, "|");
   for j=1 to num do
     Voc=ExtractWord(j, tmp, "|");
     if Voc<>"":
       if SearchInArray(НеПовтор, Voc, True)=-1:
         k=InsertInArraySort(НеПовтор, Voc);
       fi;
     fi;
   od;
 od;
 OK=True;
-- if нетПО=False: if SearchInArray(НеПовтор, "П.*", True)>0: OK=True; else OK=False; fi; fi;
-- if OK: if UseМХЭ: if SearchInArray(НеПовтор, "М.*", True)>0: OK=True; else OK=False; fi; fi; fi;
-- if OK: if SearchInArray(НеПовтор, "МОЛ.*", True)>0: OK=True; else OK=False; fi; fi;
-- if OK: if SearchInArray(НеПовтор, "НФА.*", True)>0: OK=True; else OK=False; fi; fi;
-- if OK: if SearchInArray(НеПовтор, "УЧН.*", True)>0: OK=True; else OK=False; fi; fi;
 tb=Time;
 РасчетВыполнить2;
-- if OK: РасчетВыполнить2; else РасчетВыполнить1; fi;
 if неКолНоль:
    for j=1..ПОЗИЦИИ_ do
      if колУчет_[j]=0:
         deleteframe(ПОЗИЦИИ_,j);
         j=j-1;
      fi;
    od;
 fi;
 set_ПОЗИЦИИ_modif(true);
 Message("Расчет завершен.^MВремя работы "+Str(Time-tb)+"с.", mtInformation);
end;

Proc ВЕксел;
var Exc,Books,rng,book,sheet,bord,fnt:AutoObject;
var i,j,tophi,custop:I;
var upd:S;
--if ChooseFile(fileXLS,"Выберите шаблон....","Файлы XLS(*.xls)|*.xls")=cmCancel: Exit; fi;
Exc=CreateAutoObject('Excel.Application');
 --Exc.Visible=True;
 try
 books=AsAutoObject(Exc.workbooks);
  try
  book=AsAutoObject(books.Open(fileXLS));
  ShowProgress(ПОЗИЦИИ_,'Выгрузка в Excel');
   try
    sheet=AsAutoObject(book.worksheets[2]);
    try
     custop=5;
     for i=1 to ПОЗИЦИИ_ do
         FillCell(False,True,Sheet,i+custop,1,NN[i]);
         FillCell(False,True,Sheet,i+custop,2,НФА_имя_[i]);
         FillCell(False,True,Sheet,i+custop,3,НФА_код_[i]);
         FillCell(False,True,Sheet,i+custop,4,НомерИНВ_[i]);
         FillCell(False,True,Sheet,i+custop,5,ЕдИзм_[i]);
--         FillCell(False,True,Sheet,i+custop,6,Str(Цена[i],2));
--         FillCell(False,True,Sheet,i+custop,7,Str(колФакт[i],2));
--         FillCell(False,True,Sheet,i+custop,8,Str(сумФакт[i],2));
         rng=AsAutoObject(Sheet.Rows[Str(i+custop)+":"+Str(i+custop)]);
         try
          rng.AutoFit;
         finally
          ClearVariable(rng);
         end;
         ProgressPos(i); Hint('Выгрузка '+Str(i)+' из '+Str(ПОЗИЦИИ_));
     od;
     sheet.Protect("TB_B");
    finally
    ClearVariable(sheet);
    end;
    fileXLS='Инвентаризация.XLS';
    if ChooseFile(fileXLS,"Выберите имя нового файла....","Файлы XLS(*.xls)|*.xls")=cmOk:
      book.SaveAs(fileXLS);
    fi;
    Exc.Visible=True;
   finally
   ClearVariable(book);
   CloseProgress;
   end;
  finally
  ClearVariable(books);
  end;
 finally
 ClearVariable(Exc);
 end;


end;

2-- События клеток
Func Field_onEnter(Field:String; Iter:Integer) :Logical; -- на входе в клетку
var tmp :String;
var REC :Record;
 if Field="УЧРЕЖ_ИМЯ" or Field="ОКПО": Реквизиты; ^False;
 |  Field="ИМЯ_ПО_"  : StoreANA=КОД_ПО;
                      tmp=AnaElection("П.*", False, False, КОД_ПО);
                      if tmp="": ^False; fi;
                      КОД_ПО=tmp;
                      if КОД_ПО<>StoreANA: if ОтменитьИзмененияУсловийОтчета: КОД_ПО=StoreANA; fi; fi;
                      ^False;
 |  Field="ИМЯ_МОЛ_" : StoreANA=КОД_МОЛ;
                      tmp=AnaElection("МОЛ.*", False, False, КОД_МОЛ);
                      if tmp="": ^False; fi;
                      КОД_МОЛ=tmp;
                      if КОД_МОЛ<>StoreANA: if ОтменитьИзмененияУсловийОтчета: КОД_МОЛ=StoreANA; fi; fi;
                      REC=SignToRecord(КОД_МОЛ);
                      if REC=NIL: МОЛДОЛЖ=""; else МОЛДОЛЖ=GetCardFieldS("СОТРУДНИКИ", REC, "ДОЛЖНОСТЬ.ДОЛЖ"); fi;
                      ^False;
 |  Field="ИМЯ_МХЭ_" : StoreANA=КОД_МХЭ;
                      tmp=AnaElection("М.*", False, False, КОД_МХЭ);
                      if tmp="": ^False; fi;
                      КОД_МХЭ=tmp;
                      if КОД_МХЭ<>StoreANA: if ОтменитьИзмененияУсловийОтчета: КОД_МХЭ=StoreANA; fi; fi;
--                      МЕСТОИНВ="["+КОД_МХЭ+"] - "+ИМЯ_МХЭ;
                      МЕСТОИНВ="["+КОД_МХЭ+"] - "+Name_a(КОД_МХЭ);

                      ^False;
 |  Field="НаДату"  : OldDate=НаДату;
 |  Field="I1"      : StoreANA=КОД_ПО; КОД_ПО="П.*";
                      if КОД_ПО <>StoreANA: if ОтменитьИзмененияУсловийОтчета: КОД_ПО =StoreANA; fi; fi;
                      ^False;
 |  Field="I2"      : StoreANA=КОД_МОЛ; КОД_МОЛ="МОЛ.*";
                      if КОД_МОЛ<>StoreANA: if ОтменитьИзмененияУсловийОтчета: КОД_МОЛ=StoreANA; fi; fi;
                      ^False;
 |  Field="I3"      : StoreANA=КОД_МХЭ; КОД_МХЭ="М.*";
                      if КОД_МХЭ<>StoreANA: if ОтменитьИзмененияУсловийОтчета: КОД_МХЭ=StoreANA; else МЕСТОИНВ=""; fi; fi;
                      ^False;
 |  Field="ДОЛПРЕДКОМ" or Field="ФИОПРЕДКОМ": ВыборКомиссии; ^False;
 |  Field="НОМСЧ"   : ВыборСчетаУчетаНФА; ^False;
 |  Field="A"       : tmp=asString(Template.Name); ДобавитьСтроку(tmp, Iter); ^False;
 |  Field="D"       : tmp=asString(Template.Name);  УдалитьСтроку(tmp, Iter); ^False;
 |  Field="кодформы_":tmp=кодформы_Выбор;if кодформы<>tmp:кодформы=tmp;ВнешнийВид_редактирование;fi; ^False;
 fi;
 ^True;
end; 

Proc Field_onExit(Field:String; Iter:Integer); -- на выходе из клетки
 if Field="УЧРЕЖ_ИМЯ" or
    Field="ОКПО"      : if УЧРЕЖ_ИМЯ="": УЧРЕЖ_КОД=""; ОКПО=""; fi;
 |  Field="НаДату"    : if НаДату<>OldDate: if ОтменитьИзмененияУсловийОтчета: НаДату=OldDate; fi; fi;
 |  Field="ДОЛПРЕДКОМ": if ДолПредКом="": ФИОПредКом=""; ClearVariable(Комиссия); fi;
 |  Field="ФИОПРЕДКОМ": if ФИОПредКом="": ДолПредКом=""; ClearVariable(Комиссия); fi;
 fi;
end;
Func ПОЗИЦИИ_Field_onEnter(Field: Строка; Iter: Целое): Логич;
var Field0:s;
  Field0=Field+'['+str(Iter)+']';
  if pos(Field,ПОЗИЦИИ_Fields_s)>0:ПОЗИЦИИ_Field_v_s=GetVariables(Field0);
   | pos(Field,ПОЗИЦИИ_Fields_n)>0:ПОЗИЦИИ_Field_v_n=GetVariablen(Field0);
   | pos(Field,ПОЗИЦИИ_Fields_d)>0:ПОЗИЦИИ_Field_v_d=GetVariabled(Field0);
   | pos(Field,ПОЗИЦИИ_Fields_l)>0:ПОЗИЦИИ_Field_v_l=GetVariablel(Field0);
   | pos(Field,ПОЗИЦИИ_Fields_i)>0:ПОЗИЦИИ_Field_v_i=GetVariablei(Field0);
  fi;
  ПОЗИЦИИ_Field_onEnterIn=true;
  ^true  ;
end;
Proc ПОЗИЦИИ_Field_onExit(Field:String; Iter:Integer); -- на выходе из клетки
var ll:l;
var Field0:s;
  if ПОЗИЦИИ_modif:ПОЗИЦИИ_Field_onEnterIn=false;exit;fi;
  if not ПОЗИЦИИ_Field_onEnterIn:--сработала кнопка delete
     ПОЗИЦИИ_Field_onEnterIn=false;
       set_ПОЗИЦИИ_modif(true);
     exit;
  fi;
  ПОЗИЦИИ_Field_onEnterIn=false;
  Field0=Field+'['+str(Iter)+']';
  if pos(Field,ПОЗИЦИИ_Fields_s)>0:ll=ПОЗИЦИИ_Field_v_s=GetVariables(Field0);
   | pos(Field,ПОЗИЦИИ_Fields_n)>0:ll=ПОЗИЦИИ_Field_v_n=GetVariablen(Field0);
   | pos(Field,ПОЗИЦИИ_Fields_d)>0:ll=ПОЗИЦИИ_Field_v_d=GetVariabled(Field0);
   | pos(Field,ПОЗИЦИИ_Fields_l)>0:ll=ПОЗИЦИИ_Field_v_l=GetVariablel(Field0);
   | pos(Field,ПОЗИЦИИ_Fields_i)>0:ll=ПОЗИЦИИ_Field_v_i=GetVariablei(Field0);
  fi;
  if not ll:
     set_ПОЗИЦИИ_modif(true);
  fi;
--message(Field);
end;

Func ПО_onLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var КОД, ИМЯ, tmp, name, in :String;
var p1, p2 :Integer;
 Template.HideEditor(False);
 name=AsString(Template.Field);
 tmp="";
 if name="МЕСТОИНВ": tmp=МЕСТОИНВ; fi;
 p1=Pos("[", tmp);
 p2=Pos("]", tmp);
 if p1>0 and p2>0 then
   in=SubStr(tmp, p1+1, p2-p1-1);
   if ValidSign(in)=False or Name_A(in)=" " then in=""; fi;
 fi;
 tmp="";
 tmp=AnaElection("М.*", False, False, in);
 if tmp="": ^Cur; fi;
 КОД=tmp; ИМЯ=if(Name_A(КОД)<>"" and Name_A(КОД)<>" ", Name_A(КОД), КОД);
 if name="МЕСТОИНВ": МЕСТОИНВ="["+КОД+"] - "+ИМЯ; fi;
 ^"";
end;

Func Дата_onLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var dd, ddSave : Date;
var name :String;
 Template.HideEditor(False);
 name=asString(Template.Field);
 ddSave=GetDate;
 dd=ВыборДаты(ddSave);
 if name="НаДату":
   if dd<>ddSave:
     if ОтменитьИзмененияУсловийОтчета: dd=ddSave; fi;
   fi;
 fi;
 SetDate(dd);
 ^"";
end;

Func МОЛ_onLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var tmp, СТРДОЛ :String;
var REC :Record;
 Template.HideEditor(False);
 StoreANA=КОД_МОЛ;
 tmp=AnaElection("МОЛ.*", False, False, КОД_МОЛ);
 if tmp="": ^Cur; fi;
 if tmp<>StoreANA: if ОтменитьИзмененияУсловийОтчета: tmp=StoreANA; fi; fi;
 REC=SignToRecord(tmp);
 if REC=NIL: СТРДОЛ=""; else СТРДОЛ=GetCardFieldS("СОТРУДНИКИ", REC, "ДОЛЖНОСТЬ.ДОЛЖ"); fi;
 МОЛДОЛЖ=СТРДОЛ; КОД_МОЛ=tmp;
 ^"";
end;

Func СУМФАКТ_onLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var Iter  :Integer;
var name :String;
 Template.HideEditor(False);
 name=asString(Template.Field);
 Iter=asInteger(Template.Frame);
 if колФакт_[Iter]=0:
   Message("Для пересчета суммы фактического наличия^Mнеобходимо ввести количество фактического наличия!", mtWarning); 
   Template.Field="колФакт_";
   Template.Frame=Iter;
   ^Cur;
 fi;
 сумФакт_[Iter]=Round(Цена_[Iter]*колФакт_[Iter], 2);
 ^"";
end;

Func ДОПСПР_onLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var Iter  :Integer;
var name :String;
 Template.HideEditor(False);
 name=asString(Template.Field);
 Iter=asInteger(Template.Frame);
 СтрокиДопУсл[Iter].ДОПСПР=AnaElection("*&~(ДНФА.*|ДНФАid.*|КОМИССИЯ.*|МОЛ.*|М.*|П.*|СЧ107Н.*|ТМЦ.*)", True);
 ^"";
end;


Func ДОППРИЗН_onLookup(Sect:String; Row:Integer; Col:Integer; Cur:String) :String;
var Iter  :Integer;
var name, tmp :String;
 Template.HideEditor(False);
 name=asString(Template.Field);
 Iter=asInteger(Template.Frame);
 if СтрокиДопУсл[Iter].ДОПСПР<>"": tmp=GetAnaGlossary(СтрокиДопУсл[Iter].ДОПСПР); else tmp=""; fi;
 if tmp="" or tmp=" ": Message("Не выбран справочник!", mtWarning); Template.Field="ДОПСПР_"; Template.Frame=Iter; ^Cur; fi;
 СтрокиДопУсл[Iter].ДОППРИЗН=AnaElection(СтрокиДопУсл[Iter].ДОПСПР);
 ^"";
end;

Proc MyPrn (Bln:S; Path:S; Cfg:S; Device:S; Count:I; shB:I; shE:I; Книга:L);
var Flag:L;
var n:i;
 if Cfg="": Message("Не указан конфигурационный файл. Печать невозможна",mtError); Exit; fi;
 if Path="": Path=Раб.Бюджет2005.Контроль2Слэш(PlanVar("STD_RPO")+"\Общие\Настройки\"); fi;
 if not ExistFile(Раб.Бюджет2005.Контроль2Слэш(Path+Cfg)):
    Message("Конфигурационный файл '"+Path+Cfg+"' не найден"+Chr(13)+"Будет использована настройка по умолчанию",mtWarning);
    if Device<>"": Print(Bln,"",Device); else Print(Bln); fi;
    Exit;
 fi;
 if not ExistFile(Раб.Бюджет2005.Контроль2Слэш(PlanVar("INI")+"\"+Cfg)): Flag=РАБ.НАСТР_ПЕЧАТЬ.CreateCfg(Path,Cfg); else Flag=True; fi;
 if not Flag: Message("Ошибка создания конфигурационного файла"+Chr(13)+"Будет использована настройка по умолчанию",mtWarning); Cfg=""; fi;
 if shB<1: shB=1; fi;
 if shE<shB: shE=shB; fi;
 for n=1..Count do
  if Device<>"": Print(Bln,Cfg,Device,Книга,shB,shE); else Print(Bln,Cfg,"",Книга,shB,shE); fi;
 od;
end;

2-- События объектов

Proc ПЕЧАТЬ="ПЕЧАТЬ";
var nn :Integer;
 nn=Enquiry("ПЕЧАТЬ", "Выберите ориентацию страницы...", "Отмена;Все стр. книжная;1 стр. книжная, 2 и далее альбомная;Все стр. альбомная", mtConfirmation);
 if nn=2: MyPrn("", PlanVar("НФА")+"\Настройки\", "RPO_0504087_000.cfg", "", 1, 1, 999, True);
 |  nn=3: MyPrn("", PlanVar("НФА")+"\Настройки\", "RPO_0504087_100.cfg", "", 1, 1, 1, True); MyPrn("", PlanVar("НФА")+"\Настройки\", "RPO_0504087_000.cfg", "", 1, 2, 999, False);
 |  nn=4: MyPrn("", PlanVar("НФА")+"\Настройки\", "RPO_0504087_000.cfg", "", 1, 1, 999, False);
 else Exit;
 fi;
end;

Proc btnOnClick(Sender:String); -- объекты при нажатии
 if Sender="btnClose" : Close;
 |  Sender="btnРасчет": Расчет;
 fi;
end;

Proc cbUseМХЭ_onChange(Sender:String);
 СекцШапка.CanPrint=UseМХЭ;
end;

2-- События шаблона
Proc Template_OnOpen(Create:Logical); -- при открытии шаблона
var tmp :String;
var tmpi :i;
 СекцШапка.CanPrint=UseМХЭ;
 ScanTo.Visible=Раб.Штрихкод.ЭлИнвВкл;
 ScanFrom.Visible=Раб.Штрихкод.ЭлИнвВкл;
 tmp=UserName(AliasName("РПО_ИНВКАРТ_ОС"));
 Пользов=if(tmp<>"", "Пользователь - "+tmp, "Пользователь локальной версии");
 РАБ.НАСТР_ПЕЧАТЬ.Cfg(PlanVar('НФА')+'\Настройки\',"RPO_0504087_000.cfg"); -- стандартная настройка
 РАБ.НАСТР_ПЕЧАТЬ.Cfg(PlanVar('НФА')+'\Настройки\',"RPO_0504087_00A.cfg"); -- стандартная настройка
 if НаДату=1.1.100 then НаДату=ToDay; fi;
  tmp='';
  if searchinarray(РАБ.НФА.INI_SETUP.НФА_ГРНФА,'106.01')>0:tmp=tmp+'|*.106.?1.???';fi;
  if searchinarray(РАБ.НФА.INI_SETUP.НФА_ГРНФА,'106.02')>0:tmp=tmp+'|*.106.32.???';fi;
  if searchinarray(РАБ.НФА.INI_SETUP.НФА_ГРНФА,'106.03')>0:tmp=tmp+'|*.106.13.???';fi;
  if searchinarray(РАБ.НФА.INI_SETUP.НФА_ГРНФА,'106.04')>0:tmp=tmp+'|*.106.34.???';fi;
--  tmpi   =            searchinarray(РАБ.НФА.INI_SETUP.НФА_ГРНФА,'106.01');
--  if tmpi>0:if РАБ.НФА.INI.НФА_ГРНФА_РАЗРЕШЕНА[tmpi]:tmp=tmp+'|106.01';fi;fi;
--  tmpi   =            searchinarray(РАБ.НФА.INI_SETUP.НФА_ГРНФА,'106.02');
--  if tmpi>0:if РАБ.НФА.INI.НФА_ГРНФА_РАЗРЕШЕНА[tmpi]:tmp=tmp+'|106.02';fi;fi;
--  tmpi   =            searchinarray(РАБ.НФА.INI_SETUP.НФА_ГРНФА,'106.03');
--  if tmpi>0:if РАБ.НФА.INI.НФА_ГРНФА_РАЗРЕШЕНА[tmpi]:tmp=tmp+'|106.03';fi;fi;
--  tmpi   =            searchinarray(РАБ.НФА.INI_SETUP.НФА_ГРНФА,'106.04');
--  if tmpi>0:if РАБ.НФА.INI.НФА_ГРНФА_РАЗРЕШЕНА[tmpi]:tmp=tmp+'|106.04';fi;fi;
  Разрешенные106=tmp;
  if Разрешенные106<>'':
     Разрешенные106=SubStr(Разрешенные106,2,255);
     ФЛ106.Enabled=true;
--     ФЛ106_значение
   | true:ФЛ106_значение=false;
  fi;
end;

Proc Template_AfterOpen(Create:Logical); -- после открытия шаблона
-- Template.Object="btnClose";
  fileXLS=PlanVar("БУХ")+"\0504087.xlt";
  Template.Field="Фокус";
  BtnOLEXls.Enabled=existfile(fileXLS);
end;
Proc TEMPLATE_ONREAD;
if pos('#'+кодформы+'#','#0504087#0317001#0317004#0317008#0317009#0504087_МО#')<1:кодформы='0504087';fi;
--if кодформы<>'0504087_МО':кодформы='0504087_МО';
--   if kalc<>62:kalc=62;fi;
--fi;
ВнешнийВид_редактирование;
 СчитатьПОЗИЦИИ;
 НачальнаяИтерация;
--объект_строки_рисованные.visible=false;
--объект_строки_рисованные.canprint=false;
--итоги_редактирование=1;
if ТекущееСостояние=КартСостВставлена:
   if not UseМХЭ         :UseМХЭ          =true;fi;
   if not нетПО          :нетПО           =true;fi;
   if not Бал            :Бал             =true;fi;
   if not Заб            :Заб             =true;fi;
   if not неРез          :неРез           =true;fi;
   if not НетИтогиПропись:НетИтогиПропись =true;fi;
   if upfield   =0 :upfield   =100  ;fi;
   if downfield =0 :downfield =100  ;fi;
   if leftfield =0 :leftfield =100  ;fi;
   if rightfield=0 :rightfield=100  ;fi;
   if hpage     =0 :hpage     =2100 ;fi;
   if wpage     =0 :wpage     =2900 ;fi;
   if kalc      =0 :kalc      =100  ;fi;
fi;
 СекцШапка.CanPrint=UseМХЭ;
  СекцТабл_0504087_МО.клетка(1, 6, CellFontSize, RazmNFA);
  СекцТабл_0504087.клетка(1, 6, CellFontSize, RazmNFA);
  СекцТабл_0317001.клетка(1, 6, CellFontSize, RazmNFA);
  СекцТабл_0317004.клетка(1, 6, CellFontSize, RazmNFA);
  СекцТабл_0317009.клетка(1, 6, CellFontSize, RazmNFA);
end;
func TEMPLATE_ONVALIDATE:l;
 if ИМЯ_ПО <>ИМЯ_ПО_ :ИМЯ_ПО =ИМЯ_ПО_ ;fi;
 if ИМЯ_МОЛ<>ИМЯ_МОЛ_:ИМЯ_МОЛ=ИМЯ_МОЛ_;fi;
 if ИМЯ_МХЭ<>ИМЯ_МХЭ_:ИМЯ_МХЭ=ИМЯ_МХЭ_;fi;

 if ПОЗИЦИИ_modif:СохранитьПОЗИЦИИ;fi;
^true;
end;

Proc TEMPLATE_ONCANCEL;
  TEMPLATE_ONREAD;
end;


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



Функ sort_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
  Шаблон.СкрытьРедактор(false);
  if (ВопрДаОтказ("Сортировать по данному столбцу?") = кмдВерно) :
   ShowProgress(0, "Идет сортировка...");
     if Сек='СекцТаблШапка_0504087_МО':Сек='СекцТабл_0504087_МО';
      | Сек='СекцТаблШапка_0504087':Сек='СекцТабл_0504087';
      | Сек='СекцТаблШапка_0317001':Сек='СекцТабл_0317001';
      | Сек='СекцТаблШапка_0317004':Сек='СекцТабл_0317004';
      | Сек='СекцТаблШапка_0317009':Сек='СекцТабл_0317009';
     fi;
     SortSection(Сек, Столб,true,false);  --СекцТабл_0504087
   CloseProgress;
  fi;
  set_ПОЗИЦИИ_modif(true);
  Возврат '' ;
end;
var ForSelect[]:s;
var ForSelectN[]:n;
var ForSelectN1[]:n;
2Func РасчетОстатков0(СПР:s;УслОстатков:s):s;-- вычисляет остатки по нескольким справочникам сразу
 var j,jj,k,t,z,j1,j2,sj1,sj2:i;
 var ncol,nsum:n;
 var a,ss,услсч,услсчостнфа,услпризн,Путь,Имяотчета:s;
 var r:report;
 var услсчl:l;
 var auto,rep:l;

 ClearVariable(ForSelect);
 ClearVariable(ForSelectN);
 ClearVariable(ForSelectN1);
   auto=автообработка;
   rep =ОбработкаРеп ;
   РАБ.НФА.B01.set_all_auto(auto,rep,false);
   РАБ.НФА.B01.Reset_all_auto(auto,rep,false);

     услсч  = "*.101.*|*.102.*|*.103.*|*.105.*";
     if ФЛ106_значение:
        --услсч  = "*.101.*|*.102.*|*.105.*|*.106.*";
        услсч  = "*.106.*";
     fi;
     Путь     =PlanVar("НФА")+"\Отчеты\НФАОТЧ.lst";
     Имяотчета="Отчет (бланки, не менять!!!)";
       r=RepOpen(Путь+"|"+ИмяОтчета,услсч,СПР+'.*&'+УслОстатков, НаДату, НаДату+1,'',СПР);

        RepReset(r);
        while RepNext(r) do
          ss= trim(RepIdent(r));
              nsum=RepSalDof(r,отчСверн,"РУБ");
              ncol=RepSalDof(r,отчСверн,"КОЛ");
              if nsum<>0 or ncol<>0:
                 addinarray(ForSelect,true,false,ss);
--                 jj=ПоискВмассиве(ForSelect,ss,true);
--                 if jj<1:jj=ВставитьВмассивСорт(ForSelect,ss);
--                         ВставитьВмассив(ForSelectN,jj,ncol);
--                         ВставитьВмассив(ForSelectN1,jj,nsum);
--                         j=j+1;
--                  | true:ForSelectN[jj] =ForSelectN[jj] +ncol;
--                         ForSelectN1[jj]=ForSelectN1[jj]+nsum;
--                 fi;
              fi;
        od;
       r=RepClose(r);
   j=ДлинаМассива(ForSelect);
   for k=1..j do
     ForSelect[k]=ForSelect[k]+' '+Name_A(ForSelect[k]);
   od;
   if j=0:Message('Отсутствуют остатки для параметра'+chr(13)+СПР,mtWarning);^'';
    | j=1:
     ^ВыделитьСлово(1,ForSelect[1],' ');
    | j>1: t=Альтернатива(Name_A(СПР+'.'),ForSelect,-1,0,12);
           if t>0:^ВыделитьСлово(1,ForSelect[t],' ');
           fi;
           Message('Отказ от выбора для параметра'+chr(13)+СПР,mtWarning);^'';
   fi;
^'';
2end0;

2Func 0ВыборСчетаОстатки(услсч0:s;УслОстатков:s):s;-- вычисляет остатки по нескольким справочникам сразу
 var j,jj,k,t,z,j1,j2,sj1,sj2:i;
 var ncol,nsum:n;
 var a,ss,услсч,услсчостнфа,услпризн,Путь,Имяотчета:s;
 var r:report;
 var услсчl:l;
 var auto,rep:l;

 ClearVariable(ForSelect);
 ClearVariable(ForSelectN);
 ClearVariable(ForSelectN1);
   auto=автообработка;
   rep =ОбработкаРеп ;
   РАБ.НФА.B01.set_all_auto(auto,rep,false);
   РАБ.НФА.B01.Reset_all_auto(auto,rep,false);

     услсч  = "*.101.*|*.102.*|*.103.*|*.105.*";
     if ФЛ106_значение:
        --услсч  = "*.101.*|*.102.*|*.105.*|*.106.*";
        услсч  = "*.106.*";
     fi;
     Путь     =PlanVar("НФА")+"\Отчеты\НФАОТЧ.lst";
     Имяотчета="НФА_СЧЕТА";
       r=RepOpen(Путь+"|"+ИмяОтчета,услсч0+'&('+услсч+')',УслОстатков, НаДату, НаДату+1);

        RepReset(r);
        while RepNext(r) do
          ss= trim(RepIdent(r));
              nsum=RepSalDof(r,отчСверн,"РУБ");
              ncol=RepSalDof(r,отчСверн,"КОЛ");
              if nsum<>0 or ncol<>0:
                 if match(ss,'???.????.???????.???.?.???.??.???') or match(ss,'???.????.????????.???.?.???.??.???'):
                    ss=ExtractWords(1,7,ss,'.')+'.000';
                 fi;
                 addinarray(ForSelect,true,false,ss);
--                 jj=ПоискВмассиве(ForSelect,ss,true);
--                 if jj<1:jj=ВставитьВмассивСорт(ForSelect,ss);
--                         ВставитьВмассив(ForSelectN,jj,ncol);
--                         ВставитьВмассив(ForSelectN1,jj,nsum);
--                         j=j+1;
--                  | true:ForSelectN[jj] =ForSelectN[jj] +ncol;
--                         ForSelectN1[jj]=ForSelectN1[jj]+nsum;
--                 fi;
              fi;
        od;
       r=RepClose(r);
   j=ДлинаМассива(ForSelect);
   for k=1..j do
     ForSelect[k]=ForSelect[k]+' '+Name_A(ForSelect[k]);
   od;
   ss='';
   if j=0:Message('Отсутствуют остатки по счетам',mtWarning);
    | j=1:ss=ВыделитьСлово(1,ForSelect[1],' ');
    | j>1: t=Альтернатива('',ForSelect,-1,0,12);
           if t>0 : ss=ВыделитьСлово(1,ForSelect[t],' ');
            | true: Message('Отказ от выбора счета!',mtWarning);
           fi;
   fi;
   ClearVariable(ForSelect);
^ss;
2end0;



var кнПО :s='';
var кнМОЛ:s='';
var кнМХЭ:s='';
Функ кн_ПриВходе(Поле: Строка; Итер: Целое): Логич;
 var УслОстатков:s;
 var УслП,УслМОЛ,УслМ,ss:s;
 if UseМХЭ:УслМ=КОД_МХЭ;
  | true:УслМ='';
 fi;
 if нетПО:УслП='';
  | true:УслП=КОД_ПО;
 fi;
 УслМОЛ=КОД_МОЛ;
 if Поле='кнМОЛ':
     УслМОЛ='МОЛ.*';
     УслОстатков=Раб.НФА.B01.ab(УслМ,'&',УслП);
     УслОстатков=Раб.НФА.B01.ab(УслОстатков,'&',УслМОЛ);
     ss=2РасчетОстатков0('МОЛ',УслОстатков);
  | Поле='кнМХЭ':if UseМХЭ:УслМ='М.*';УслОстатков=Раб.НФА.B01.ab(УслМ,'&',УслП);УслОстатков=Раб.НФА.B01.ab(УслОстатков,'&',УслМОЛ);ss=2РасчетОстатков0('М',УслОстатков);fi;
  | Поле='кнПО' :if не нетПО:УслП='П.*';УслОстатков=Раб.НФА.B01.ab(УслМ,'&',УслП);УслОстатков=Раб.НФА.B01.ab(УслОстатков,'&',УслМОЛ);ss=2РасчетОстатков0('П',УслОстатков);fi;
 fi;
 if Поле='кнМОЛ':КОД_МОЛ=ss;
  | Поле='кнМХЭ':КОД_МХЭ=ss;
                      МЕСТОИНВ="["+КОД_МХЭ+"] - "+Name_a(КОД_МХЭ);

  | Поле='кнПО' :КОД_ПО =ss;
 fi;
 ^false  ;
end;

--2344

Проц Кнопка1_ПриНажатии(Отправитель: Строка);
 var ii,j:i;
 var ss:s;
 if БланкОткрыт('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК'):
    Close('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК');
 fi;
 OpenBlank('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК',false);
 if ПеременнаяСуществует('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.ПОЗИЦИИ'):
    ClearVariable(РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.ПОЗИЦИИ );
    ClearVariable(РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.НФА_ИМЯ );
    ClearVariable(РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.НФА_КОД );
    ClearVariable(РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.ИНВЕН);
    ClearVariable(РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.ЕДИЗМ   );
    ClearVariable(РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.ПРИМЕЧ  );
    j=0;
    putvariablei('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.Transf',Вид_П1);
    for ii=1..ПОЗИЦИИ_ do
      if length(НОМЕРИНВ_[ii])>2:j=j+1;ss=str(j);
         putvariables('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.НФА_ИМЯ['+ss+']',НФА_ИМЯ_ [ii]);
         putvariables('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.НФА_КОД['+ss+']',НФА_КОД_ [ii]);
         putvariables('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.ИНВЕН['+ss+']',ИНВЕН_[ii]);
         putvariables('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.ЕДИЗМ['+ss+']',ЕДИЗМ_   [ii]);
         putvariables('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.ПРИМЕЧ['+ss+']',ПРИМЕЧ_  [ii]);
---Заменить впоследствии на нормальный!
    --    putvariables('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.Штрихкод['+ss+']',РАБ.НФА.FUNC_LIB.FormatInvAna(НФА_код_[ii], Инвен_[ii], 3, "0",''));
      fi;
    od;
    putvariablei('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.ПОЗИЦИИ',j);
    putvariables('РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.КМНТ',ИМЯ_МХЭ);

 fi;
end;
2proc ОткрытьБланкПоПризнаку  -- Открывает бланк редактор на соответствующий признак
(
Признак:s;
Модально:l
);
var CrdFile:s;
 CrdFile=SignCardFile(Признак);
 if CrdFile<>'':
  OpenBlank('НФА.ДОКУМЕНТЫ.КАРТОЧКИ.ОКУД_0504031',Модально,SignToRecord(Признак));
 fi;
end;

Функ НомерИНВ_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
  var ss:s;
  ШАБЛОН.hideeditor(false);
  if Name_A(НФА_код_[Стр])<>' ' and Name_A(Инвен_[Стр])<>' ':
     ss='ИНВВЕД.'+НФА_код_[Стр]+'.'+Инвен_[Стр];
     if Name_A(ss)<>' ':
        2ОткрытьБланкПоПризнаку0(ss,false);
        Возврат Тек ;
     fi;
  fi;
  Message('Карточка не создана!');
  Возврат Тек ;
end;



Proc BtnOLEXls_OnClick(Sender: String);
ВЕксел;
end;





Проц Кнопка2_ПриНажатии(Отправитель: Строка);
 drow(false);
end;


Проц Кнопка3_ПриНажатии(Отправитель: Строка);
 save_drow;
 drow(true);

end;

Proc Button1_OnClick(Sender: String);
       ВнешнийВид_редактирование;
end;

Proc ScanTo_OnClick(Sender: String);
СохранитьПозиции;
EditorApply;
if Раб.Штрихкод.ВСканер('UKEY='+recordtostring(current)) then Message('Выгрузка завершена'); fi;
end;


Proc ScanFrom_OnClick(Sender: String);
var i:I;
 СохранитьПозиции;
 EditorApply;
 if Раб.Штрихкод.ИзСканера('UKEY='+recordtostring(current)) then Message('Загрузка завершена'); fi;
 СчитатьПОЗИЦИИ;
 for i=1 to ПОЗИЦИИ do
   сумФакт_[i]=Round(Цена_[i]*колФакт_[i], 2);
 od;
end;

--РАБ.НАСТР_ПЕЧАТЬ.ReadCfg('','RPO_0504087_000');

Проц RazmNFA_ПриВыходе(Поле: Строка; Итер: Целое);
  if RazmNFA<8:RazmNFA=8;fi;

end;

func ПриВходеФлаг(Поле: Строка; Итер: Целое): Логич;
 if Поле='ФлСчВприм'     or Поле='ФлСчВприм_'     :ФлСчВприм     =not ФлСчВприм     ;
 fi;
  ^false;
end;




Функ ПРИМ_ПОЛЕ_ПриВходе(Поле: Строка; Итер: Целое): Логич;
 var ss:s;
 ss=ПоляПрим_Выбор;
 if ss='':^false;fi;
 ПРИМ_ПОЛЕ    [Итер]=trim(ВыделитьСлово(1,ss,'--'));
 ПРИМ_ОПИСАНИЕ[Итер]=trim(ВыделитьСлово(2,ss,'--'));
 ПРИМ_ТИП     [Итер]=(ВыделитьСлово(1,ПРИМ_ОПИСАНИЕ[Итер],'#'));
 ПРИМ_ОПИСАНИЕ[Итер]=trim(ВыделитьСлово(2,ПРИМ_ОПИСАНИЕ[Итер],'#'));
  Возврат false ;
end;

var RazmNFA_:s='';
Функ RazmNFA__ПриВходе(Поле: Строка; Итер: Целое): Логич;
  СекцТабл_0504087_МО.клетка(1, 6, CellFontSize, RazmNFA);
  СекцТабл_0504087.клетка(1, 6, CellFontSize, RazmNFA);
  СекцТабл_0317001.клетка(1, 6, CellFontSize, RazmNFA);
  СекцТабл_0317004.клетка(1, 6, CellFontSize, RazmNFA);
  СекцТабл_0317009.клетка(1, 6, CellFontSize, RazmNFA);
  Возврат  false;
end;


func ВыборПолногоСчета(Поле: Строка; Итер: Целое): Логич;
var НомСч0,ss:s;
var z:i;
  if not РазбСч:
    message('Нельзя выбрать счет пока не установлен флаг^M[Составить отчет только для выбранного субсчета]');
    ^false  ;
  fi;

   НомСч0=ВзятьМаскуНомСч(НомСч);
   if Бал: 
     if НомСч0<>'':ss="*.?."+НомСч0+".???";
      | true:ss="*.?.101.??.???|*.?.102.??.???|*.?.103.??.???|*.?.105.??.???|*.?.108.??.???";
        if ФЛ106_значение:ss=ss+'|*.?.106.??.???';fi;
     fi;
   fi;
   if Заб: 
     if НомСч0<>'':
        НомСч0=Объединить(ss, "ЗАБ.??."+НомСч0, "|");
      | true:
        НомСч0=Объединить(ss, "ЗАБ.??.10?.??", "|");
     fi;
    | true:НомСч0=ss;
   fi;
   ss='';
   if not нетПО: ss=КОД_ПО; fi;
   ss=Объединить(ss, КОД_МОЛ, "&");
   if UseМХЭ: ss=Объединить(ss, КОД_МХЭ, "&"); fi;
   for z=1 to СтрокиДопУсл do ss=Объединить(ss, СтрокиДопУсл[z].ДОППРИЗН, "&"); od;

    ss=ВыборСчетаОстатки(НомСч0,ss);
    if ss<>'' and ss<>НомСч:
       НомСч=ss;
    fi;
  ^false  ;
end;


КОНЕЦ -- конец бланка
