-- Шаблон создан мастером бланков
-- 17.04.2008 10:22:39
--
БланкСШаблоном "Выгрузка инв карточек свыше 200000";
BTNNAME_MENU  :String="СПИСОК ФИ";
func путьxls:s;
 ^Раб.НФА.B01.ПутьSTD_RPO+"\НФА\CDF\2.3..xls";
-- ^PlanVar("НФА")+"\CDF\2.3..xls";
end;
ФлУслЦен3000_20000     :l;
ФлУслЦен20000_200000   :l;
ФлУслЦен200000_        :l;
ФлУслНеПроверятьДЭКСПЛ :l;
ФлУслНеПроверятьДУЧЕТ  :l;

--Правообладатель:s='Федеральное государственное учреждение "Главный военный клинический госпиталь имени академика Н.Н.Бурденко Министерства обороны Российской Федерации"';
датафильра_условие0:l;
датакучету_условие0:l;
датакучету_условие:d;

Правообладатель:s;
--ОГРН		 :s='1037739493901';
ОГРН	       :s;

--var путьxls:s='\\Aserv2000\TB69Net\Server\Rpo\Сетевая_НФА2008\2.3..xls';
var папка_выгруженныхxls:s='C:\';
var шаблф_:s='';
var папка_:s='';
--var должн1_:s='Начальник Федерального государственного учреждения "Главный военный клинический госпиталь имени академика Н.Н. Бурденко Министерства обороны Российской Федерации"';
var должн1_:s='Начальник Федерального государственного учреждения ""';
var должн2_:s='Начальник отдела учета федерального имущества Территориального управления Росимущества в г. Москве';
должн1:s=['Начальник Федерального государственного учреждения ""'];
должн2:s=['Начальник отдела учета федерального имущества Территориального управления Росимущества в г. Москве'];
--должн2:s=['Начальник реестра федерального имущества Территориального управления Федерального агентства по управлению федеральным имуществом по городу Москве'];
дата1_:s='01.11.09';
дата2_:s='';
var дата1:s=['01.11.09'];
var дата2:s=[''];
--ФИО1_:s='И.Б. Максимов';
--ФИО2_:s='Г.А. Герасимов';
ФИО1_:s='';
ФИО2_:s='';
var ФИО1:s=[''];
var ФИО2:s=[''];
var датафильра:d;
var датафильра_наличие:d;
var Фильтр:S='(ДАТ_ВЭКСП<'+datetostring(датафильра)+') and (ДАТ_ВЭКСП>'+datetostring(1.1.1800)+') and (СТОИМ_ОТЧ>200000)';
var Позиции:I;
var НФА[]:S;
var пп[]:I=$;
var файл:S='';
var УчНФА[]:S;
var ИмяНФА[]:S;
var ИнвВед[]:S;
var Датт[]:Д;
var Датт0[]:Д;
var Стоим[]:N;
var итогобал:N=суммамассива(Стоим,Позиции);
var СтоимАморт[]:N=-остаток('*.104.??.4??{'+НФА[$]+'&УЧН.'+trim(УчНФА[$])+'}',датафильра_наличие);
var итогоАм:N=суммамассива(СтоимАморт,Позиции);
var СтоимОст[]:N=Стоим[$]-СтоимАморт[$];
var итогоОст:N=суммамассива(СтоимОст,Позиции);
var Выгр[]:L;
var Ukey[]:S;
var ГлВыгр:L;
шаблФ:S=[путьxls];
папка:S=['C:\'];
var WA_CURRENT:i;
var N_REC_CURRENT:i;
var УПР_УФИ:i;
var Array_tmpS	 []:s;
var ИМЯ 	 []:s;
var Значение	 []:s;
var Переменная	 []:s;
var ТипПеременной[]:s;
var Обязательно  []:l;
var Разрешения	 []:s;
var Авторасчет	 []:s;
var АВТО	 []:s=if(Авторасчет[$]='','','Авторасчет');
var nn[]:i=$;
Proc ЗаполнитьВидыКартПоля;
var ss:s;
var t:i;
t=0;
ClearVariable(ИМЯ);ClearVariable(Значение);ClearVariable(Переменная);ClearVariable(ТипПеременной);
ClearVariable(УПР_УФИ);ClearVariable(Обязательно);ClearVariable(Разрешения);ClearVariable(Авторасчет);
  t=t+1;
  ИМЯ	       [t]='Реестровый номер федерального имущества (РНФИ)';
  Переменная   [t]='РНФИ';
  ТипПеременной[t]='S';
  Обязательно  [t]=false;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Государственный регистрационный знак';
  Переменная   [t]='ГРЗ';
  ТипПеременной[t]='S';
  Обязательно  [t]=false;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Инвентарный номер';
  Переменная   [t]='ИНВ_ВЕД';
  ТипПеременной[t]='S';
  Обязательно  [t]=true;
  Разрешения   [t]='ч';-- чтение
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Наименование';
  Переменная   [t]='';--'ОБЪЕКТ1+ОБЪЕКТ2+ОБЪЕКТ3';
  ТипПеременной[t]='S';
  Обязательно  [t]=true;
  Разрешения   [t]='чф=ЧФ_НАИМЕНОВАНИЕ_2_3';-- чтение по функции ЧФ_НАИМЕНОВАНИЕ_2_3
  Авторасчет   [t]='АВТО_НАИМЕНОВАНИЕ_2_3';
  t=t+1;
  ИМЯ	       [t]='Вид';
  Переменная   [t]='ВИД';
  ТипПеременной[t]='S';
  Обязательно  [t]=true;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]=''; -- авторасчет по функции АВТО_АВТО_ВИД_2_3
--  Авторасчет	 [t]='АВТО_АВТО_ВИД_2_3'; -- авторасчет по функции АВТО_АВТО_ВИД_2_3
  t=t+1;
  ИМЯ	       [t]='Марка, модель';
  Переменная   [t]='ЗАВОД_НОМ';
  ТипПеременной[t]='S';
  Обязательно  [t]=true;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Год выпуска';
  Переменная   [t]='ДАТА_ИЗГ';
  ТипПеременной[t]='D';
  Обязательно  [t]=true;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]='';-- авторасчет по функции АВТО_ДАТА_ИЗГ_2_3
--  Авторасчет	 [t]='АВТО_ДАТА_ИЗГ_2_3';-- авторасчет по функции АВТО_ДАТА_ИЗГ_2_3
  t=t+1;
  ИМЯ	       [t]='Назначение';
  Переменная   [t]='';
--  Переменная	 [t]='НФА_НАЗНАЧЕНИЕ';
  ТипПеременной[t]='C';
  Обязательно  [t]=true;
  Разрешения   [t]='чф=ЧФ_НФА_НАЗНАЧЕНИЕ_2_3';-- чтение
--  Разрешения	 [t]='ч|з';-- чтение и запись
--  Авторасчет	 [t]='АВТО_НФА_НАЗНАЧЕНИЕ_2_3';-- авторасчет по функции АВТО_НФА_НАЗНАЧЕНИЕ_2_3
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Правообладатель';
  Переменная   [t]=Правообладатель;
  ТипПеременной[t]='C';
  Обязательно  [t]=true;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
--  Авторасчет	 [t]='АВТО_УЧРЕЖДЕНИЕ_2_3';-- авторасчет по функции АВТО_УЧРЕЖДЕНИЕ_2_3
  t=t+1;
  ИМЯ	       [t]='Карта №';
  Переменная   [t]='3.1.';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='ОГРН';
  Переменная   [t]=ОГРН;
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Документы - основания возникновения права собственности Российской Федерации';
  Переменная   [t]='ДОК_ОГРАНИЧЕНИЯ';
  ТипПеременной[t]='S';
  Обязательно  [t]=false;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Наименование иного вещного права';
  Переменная   [t]='Оперативное управление';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Документы основания возникновения иного вещного права';
--  Переменная	 [t]='';
--  ТипПеременной[t]='C'; -- константа
--  Обязательно  [t]=false;
--  Разрешения	 [t]='ч';

  Переменная   [t]='ДОК_ОГРАНИЧЕНИЯ';
  ТипПеременной[t]='S';
  Обязательно  [t]=false;
  Разрешения   [t]='ч';-- чтение

  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Категория историко-культурного значения';
  Переменная   [t]='';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Регистрационный номер объекта культурного наследия, с которым связан объект движимого имущества';
  Переменная   [t]='';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Стоимость (тыс.рублей):';
  Переменная   [t]='';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]=' первоначальная';
  Переменная   [t]='СТОИМ_ОТЧ';
  ТипПеременной[t]='N'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='чф=ЧФ_СТОИМ_ОТЧ_2_3';
--  Разрешения	 [t]='чф=ЧФ_СТОИМ_ОТЧ_2_3|зф=ЗФ_СТОИМ_ОТЧ_2_3';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]=' остаточная';
  Переменная   [t]='';--СТОИМ_ОТЧ-СНАЧ_ЭКСП
  ТипПеременной[t]='N'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='чф=ЧФ_ОСТАТОЧНАЯ_2_3';-- чтение по функции ЧФ_ОСТАТОЧНАЯ_2_3
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]=' иная';
  Переменная   [t]='СТОИМ_ИНАЯ';--СТОИМ_ОТЧ-СНАЧ_ЭКСП
  ТипПеременной[t]='N'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='чф=ЧФ_СТОИМ_ИНАЯ_2_3|зф=ЗФ_СТОИМ_ИНАЯ_2_3';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]='Документы - основания:';
  Переменная   [t]='';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]=' изъятия из оборота';
  Переменная   [t]='ДОК_ИЗЪЯТИЯ';
  ТипПеременной[t]='s'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч|з';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ	       [t]=' ограничения оборота';
  Переменная   [t]='ДОК_ОГРАНИЧЕНИЯ';
  ТипПеременной[t]='s';
  Обязательно  [t]=false;
  Разрешения   [t]='ч|з';
  Авторасчет   [t]='';

  УПР_УФИ=t;
end;
func ЧитатьЗначение(t:i):s;
 var v,ss:s;
 var dd:d;
 var p:i;
-- Переменная
-- ТипПеременной
-- Обязательно
-- Разрешения
-- Авторасчет
 p=pos('ЧФ=',up(Разрешения[t]));
 if p>0:ss=trim(SubStr(Разрешения[t],p+3,255));
    ss=ВыделитьСлово(1,ss,'|');-- нашли имя функции на чтение!
    if ФункцияСуществует(ss):^ВыполнитьФункциюС(ss);fi;
--    trace(ss);
  | СловоВСтроке('ч',Разрешения[t],'|'):
    if ТипПеременной[t]='C':v=Переменная[t];
--     | true:v=GetVariableS(Переменная[t]);
     | true:
       if ТипПеременной[t]='s':v=getfields(WA_CURRENT,N_REC_CURRENT,Переменная[t]);
	| ТипПеременной[t]='n':v=str(getfieldn(WA_CURRENT,N_REC_CURRENT,Переменная[t]),2);
	| ТипПеременной[t]='d':v=datetostring(getfieldd(WA_CURRENT,N_REC_CURRENT,Переменная[t]));
       fi;
    fi;
    ^v;
 fi;
 ^'';
end;
proc ЗаполнитьЗначение(t:i);
    Значение[t]=ЧитатьЗначение(t);
end;
proc ЗаполнитьЗначения;
  var k,j:i;
  k=LengthOfArray(ИМЯ);
  for j=1..k do
    ЗаполнитьЗначение(j);
  od;
end;

2-- Общие процедуры и функции
Proc Очистить;
 ClearVariable(ИМЯ);
 ClearVariable(Значение);
 ClearVariable(Переменная);
 ClearVariable(ТипПеременной);

end;

func ЧФ_НАИМЕНОВАНИЕ_2_3:s;
 ^getfields(WA_CURRENT,N_REC_CURRENT,'ОБЪЕКТ1')+getfields(WA_CURRENT,N_REC_CURRENT,'ОБЪЕКТ2')+getfields(WA_CURRENT,N_REC_CURRENT,'ОБЪЕКТ3');
end;
func ЧФ_НФА_НАЗНАЧЕНИЕ_2_3:s;
 ^Name_A(ВыделитьСлова(1,3,getfields(WA_CURRENT,N_REC_CURRENT,'НФА'),'.')+'.');
end;


func ЧФ_ОСТАТОЧНАЯ_2_3:s;
 ^str((getfieldn(WA_CURRENT,N_REC_CURRENT,'СТОИМ_ОТЧ')-getfieldn(WA_CURRENT,N_REC_CURRENT,'СНАЧ_ЭКСП'))/1000,5);
end;
func ЧФ_СТОИМ_ОТЧ_2_3:s;
 ^str(getfieldn(WA_CURRENT,N_REC_CURRENT,'СТОИМ_ОТЧ')/1000,5);
end;
func ЧФ_СТОИМ_ИНАЯ_2_3:s;
 ^str(getfieldn(WA_CURRENT,N_REC_CURRENT,'СТОИМ_ИНАЯ')/1000,5);
end;
Proc Template_onRead; -- при считывании шаблона
 Очистить;
-- ЗаполнитьВидыКарт;
 ЗаполнитьВидыКартПоля;
 ЗаполнитьЗначения;

end;


var НФА_ИНВ[]:s;
var aAna[]   :S;

Proc btnЗагрузка_OnClick(Sender: String);
var OWA,i:I;
var len:i;
var ВременныйФайл, aVal1, aVal2, aDeb, aCre, aComment,КОДНФА,ИНВНОМ,ss: String;
var aSum1, aSum2,nn,цена,кол: Numeric;
var aDate,dd: Date;
var Rep :Report;
var j, k, y, x, z ,jj,tt:Integer;
var rec:record;
var ll:l;

ClearVariable(Позиции);
ClearVariable(НФА);
ClearVariable(УчНФА);
ClearVariable(ИмяНФА);
ClearVariable(ИнвВед);
ClearVariable(Датт);
ClearVariable(Датт0);
ClearVariable(Стоим);
ClearVariable(Выгр);
ClearVariable(Ukey);
  z=0;

-- OWA=OpenWorkArea('РПО_ИНВКАРТ_ОС','Номер',Фильтр);
-- try
--  x=Records(OWA);
--  ShowProgress(Records(OWA),'Загрузка данных из картотеки');
--  for i=1 to x do
--    ProgressPos(i);
--    z=z+1;
--    НФА[z]=GetFieldS(OWA,i,'НФА');
--    УчНФА[z]=GetFieldS(OWA,i,'ИНВ');
--    ИмяНФА[z]=GetFieldS(OWA,i,'НФА_ИМЯ');
--    ИнвВед[z]=GetFieldS(OWA,i,'ИНВ_ВЕД');
--    Датт[z]=GetFieldD(OWA,i,'ДАТ_ВЭКСП');
--    Стоим[z]=GetFieldN(OWA,i,'СТОИМ_ОТЧ');
--    Ukey[z]=RecordToString(GetRecordKey(OWA,i));
--    if остаток('*.101.??.???|*.102.??.???{'+НФА[z]+'&УЧН.'+trim(УчНФА[z])+'}',датафильра_наличие)<=200000:
--	НФА[z]='';
--	УчНФА[z]='';
--	ИмяНФА[z]='';
--	ИнвВед[z]='';
--	Датт[z]=1.1.100;
--	Стоим[z]=0;
--	Ukey[z]='';
--	z=z-1;
--    fi;
--  od;
--  CloseProgress;
-- finally
-- CloseWorkArea(OWA);
-- end;
-- Позиции=z;
-- if НФА[z]='':deleteframe(Позиции,Позиции);fi;

   ВременныйФайл=PlanVar('CACHE')+'\ВременныйФайлОстатков.jur';
   if ExistFile(ВременныйФайл): DeleteFile(ВременныйФайл); fi;

   len=TujReport(ВременныйФайл, 1.1.100, датафильра_наличие, '*.101.??.???|*.102.??.???', 'НФА.*&УЧН.*', "ДНФА|МОЛ|М|ДВИЖ_НФА|П|К|КТ|ЗН|ПБС", "", "", TujRepBalAccount+TujRepCombinedAna, False);
   if len>0:
     OpenTextJur(ВременныйФайл);
     ShowProgress(len, "Поиск НФА и расчет остатков...");
     Try
       ClearVariable(НФА_ИНВ);

       while not GetTransFromTextJur(aDate, aSum1, aVal1, aSum2, aVal2, aDeb, aCre, aAna, aComment) do
	 ProgressPos(y);y=y+1;
	 k=LengthOfArray(aAna);
	 if k>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);
		  aAna[i]=ss;
	       fi;
	       КОДНФА=aAna[i];
	     |	Match(aAna[i], "УЧН.*") or Match(aAna[i], "+УЧН.*"):
	       if SubStr(aAna[i], 1, 1)='+': ИНВНОМ=SubStr(aAna[i], 2, 255); else ИНВНОМ=aAna[i]; fi;
	     fi;
	   od;
	   if КОДНФА<>"" and ИНВНОМ<>"":
	      addinarray(НФА_ИНВ,true,false,КОДНФА+'&'+ИНВНОМ);
	   fi;
	 fi;
       end; -- while
     Finally
       CloseProgress;
       CloseTextJur;
       if ExistFile(ВременныйФайл): DeleteFile(ВременныйФайл); fi;
     end;
   fi;
   len=LengthOfArray(НФА_ИНВ);
   ShowProgress(len, "Поиск НФА с учетом условия на цены...");
   clearvariable(aAna);
   for i=1..len do
     ProgressPos(i);

     цена=остаток('*.101.??.???|*.102.??.???{'+НФА_ИНВ[i]+'}',датафильра_наличие);
     кол=остаток('*.101.??.???|*.102.??.???{'+НФА_ИНВ[i]+'}',датафильра_наличие,'КОЛ');
     if кол>=1:цена=цена/кол;fi;
     ll=false;

     if ФлУслЦен3000_20000 and not ll:
	ll=(цена>=3000 and цена<40000);
     fi;
     if ФлУслЦен20000_200000 and not ll:
	ll=(цена>=40000 and цена<200000);
     fi;
     if ФлУслЦен200000_ and not ll:
	ll=(цена>=200000);
     fi;
     if ll:
	AddInArray(aAna,true,false,НФА_ИНВ[i]);
--	  deletefromarray(НФА_ИНВ,i);i=i-1;len=len-1;
     fi;
   od;
   CopyArray(aAna,НФА_ИНВ);
   ClearVariable(aAna);
--   for i=1..позиции do
--     addinarray(aAna,true,false,НФА[i]+'&УЧН.'+trim(УчНФА[i]));
--   od;
--   ClearVariable(Array_tmpS);
--   len=LengthOfArray(НФА_ИНВ);
--   ShowProgress(len, "Сверка с карточками НФА данных расчета по проводкам...");
--   for i=1..len do
--     ProgressPos(i);
--     if SearchInArray(aAna,НФА_ИНВ[i],true)<1:addinarray(Array_tmpS,true,false,НФА_ИНВ[i]);fi;
--   od;
--   CopyArray(Array_tmpS,НФА_ИНВ);
--   ClearVariable(Array_tmpS);
--   ClearVariable(aAna);
   len=LengthOfArray(НФА_ИНВ);
   ShowProgress(len, "Добавление НФА с учетом условия на цены и даты ввода в эксплуатацию...");

   z=позиции;x=0;
   for i=1..len do
     ProgressPos(i);
     insertframe(позиции,позиции+1);
--     позиции=позиции+1;
     НФА  [позиции]=ВыделитьСлово(1,НФА_ИНВ[i],'&');
     УчНФА[позиции]=ВыделитьСлово(2,НФА_ИНВ[i],'&');
     УчНФА[позиции]=trim(SubStr(УчНФА[позиции],5,255));
     Датт [позиции]=Раб.НФА.B01.ВзятьДЭКСПЛ(НФА[позиции],'УЧН.'+УчНФА[позиции]);
     Датт0[позиции]=Раб.НФА.B01.ВзятьДУЧЕТ(НФА[позиции],'УЧН.'+УчНФА[позиции]);
     if ( ((Датт0[позиции]<=датакучету_условие и не датакучету_условие0) или (Датт0[позиции]>датакучету_условие и датакучету_условие0) )and Датт0[позиции]>1.1.1800) or ФлУслНеПроверятьДУЧЕТ:
	if ( ((Датт[позиции]<=датафильра и не датафильра_условие0) или (Датт[позиции]>датафильра и датафильра_условие0) )and Датт[позиции]>1.1.1800) or ФлУслНеПроверятьДЭКСПЛ:
--	  if (Датт[позиции]<датафильра and Датт[позиции]>1.1.1800)or ФлУслНеПроверятьДЭКСПЛ:
	  ИмяНФА[позиции]=Name_A(НФА[позиции]);
	  Стоим[позиции] =остаток('*.101.??.???|*.102.??.???{'+НФА_ИНВ[i]+'}',датафильра_наличие);
	  ss='ИНВВЕД.'+НФА[позиции]+'.УЧН.'+УчНФА[позиции];
	  if Name_A(ss)<>' ':
	     ИнвВед[позиции]=Name_A(ss);
	     rec=Признаквзапись(ss,false);
	     if rec<>nil:
		Ukey[позиции]=RecordToString(rec);
		dd=Раб.НФА.B01.ПолеПоПризнакуД(ss,'ДАТ_ВЭКСП');
		nn=Раб.НФА.B01.ПолеПоПризнакуЧ(ss,'СТОИМ_ОТЧ');
		ss='';
		if Датт[позиции]<>dd:
		   ss='Расчет:'+datetostring(Датт[позиции])+'<>Карточка:'+datetostring(dd);
		fi;
		if Стоим[позиции]<>nn:
		   ss=ss+' Расчет:'+str(Стоим[позиции],2)+'<>Карточка:'+str(nn);
		fi;
		ss=trim(ss);
		if ss<>'':trace('несоответствие в строке:'+str(позиции)+' по дате или стоимости '+ss);
		   z=z+1;
		fi;

   --		  Датт [позиции]=Раб.НФА.B01.ПолеПоПризнакуД(ss,'ДАТ_ВЭКСП');
   --		  Стоим[позиции]=Раб.НФА.B01.ПолеПоПризнакуЧ(ss,'СТОИМ_ОТЧ');
	      | true:x=x+1;
		trace('строка:'+str(позиции)+'- нет инв карточки');
	     fi;
	   | true:x=x+1;
	     trace('строка:'+str(позиции)+'- нет инв карточки');
	  fi;
	 | true: -- не прошло по дате в экспл
	   DeleteFrame(позиции,позиции);
	fi;
      | true: -- не прошло по дате принятия к учету
	DeleteFrame(позиции,позиции);
     fi;
   od;
   CloseProgress;

--   z=позиции-z;
--   if z>0:trace('Добавлено строк:'+str(z));fi;

   len=позиции;
--   ShowProgress(len, "Проверка достоверности");
--   z=0;
--   for i=1..len do
--     ProgressPos(i);
----	НФА[z]=GetFieldS(OWA,i,'НФА');
----	УчНФА[z]=GetFieldS(OWA,i,'ИНВ');
----	ИмяНФА[z]=GetFieldS(OWA,i,'НФА_ИМЯ');
----	ИнвВед[z]=GetFieldS(OWA,i,'ИНВ_ВЕД');
----	Датт[z]=GetFieldD(OWA,i,'ДАТ_ВЭКСП');
----	Стоим[z]=GetFieldN(OWA,i,'СТОИМ_ОТЧ');
----	Ukey[z]=RecordToString(GetRecordKey(OWA,i));
----	if остаток('*.101.??.???|*.102.??.???{'+НФА[z]+'&УЧН.'+trim(УчНФА[z])+'}',датафильра_наличие)<=200000:
----	  НФА[z]='';
----	  УчНФА[z]='';
----	  ИмяНФА[z]='';
----	  ИнвВед[z]='';
----	  Датт[z]=1.1.100;
----	  Стоим[z]=0;
----	  Ukey[z]='';
----	  z=z-1;
----	fi;

--     nn=остаток('*.101.??.???|*.102.??.???{'+НФА[i]+'&УЧН.'+trim(УчНФА[i])+'}',датафильра_наличие);
--     dd=Раб.НФА.B01.ВзятьДЭКСПЛ(НФА[i],'УЧН.'+УчНФА[i]);
--     ss='';
--     if Датт[i]<>dd:ss='Карточка:'+datetostring(Датт[i])+'<>'+datetostring(dd);fi;
--     if Стоим[i]<>nn:ss=ss+' Карточка:'+str(Стоим[i],2)+'<>'+str(nn);fi;
--     ss=trim(ss);
--     if ss<>'':trace('несоответствие в строке:'+str(i)+' по дате или стоимости '+ss);
--	  z=z+1;
--     fi;
--   od;
--   CloseProgress;
   if x>0:
      Trace('Всего ОС без инв карточек='+str(x));
   fi;
   ss='';
   if x>0:ss='Необходимо создать недастающие инвентарные карточки!';fi;
   if z>0:ss=ss+' Необходимо обновить инвентарные карточки!';fi;
   ss=trim(ss);
   if ss<>'':
      trace(ss);
      trace('[СЕРВИС]=>[Создание и обработка инвентарных карточек]');

   fi;

end;



Proc Выгружать_OnClick(Row: Integer; Col: Integer; Double: Logical);
var i:I;
if Double then
 ГлВыгр= not ГлВыгр;
 for i = 1 to ПОЗИЦИИ do  Выгр[i]=ГлВыгр; od;
 fi;
end;


Proc OnOpen(Create: Logical);
ЗаполнитьВидыКартПоля;
end;

Proc FillCell(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;
finally
ClearVariable(rng);
end;
end;


Proc btnВыгрузка_OnClick(Sender: String);
var текфайл:S;
var Exc,books,book,sheet:AutoObject;
var i,j:I;
if шаблф='' then if ChooseFile(шаблф,'Выберите шаблон','Файлы Excel|*.xls')=cmCancel then Exit; fi; fi;
if папка='' then if ChooseFolder(папка,'Выберите папку сохранения')=cmCancel then Exit; fi; fi;
Exc=CreateAutoObject('Excel.Application');
-- Exc.Visible=True;
 try
 books=AsAutoObject(Exc.workbooks);
 try
  ShowProgress(Позиции,'Выгрузка в Excel');
  for i= 1 to Позиции do
   if Выгр[i] then
    if Ukey[i]<>'':
      WA_CURRENT=OpenWorkArea('РПО_ИНВКАРТ_ОС','Номер','Ukey='+Ukey[i]);
      try
	n_Rec_CURRENT=1;
	текфайл=папка+'2.3.'+ИнвВед[i]+'.xls';
  --	  CopyFile(шаблф,текфайл);
	book=AsAutoObject(books.Open(шаблф));
	   try
	    book.saveAs(текфайл);
	    sheet=AsAutoObject(book.worksheets[1]);
	    try
	      sheet.Unprotect;
	      FillCell(sheet,8,2,'Лист 1.');
	      for j=1 to 23 do
	       FillCell(sheet,11+j,2,читатьзначение(j));
	      od;
	      FillCell(sheet,40,2,'Лист 2.');
	      FillCell(sheet,54,1,должн1);
	      FillCell(sheet,54,2,if(дата1='',' 	','')+дата1+' / 				     /	 '+ФИО1);
	      FillCell(sheet,56,1,должн2);
	      FillCell(sheet,56,2,if(дата2='',' 	','')+дата2+' / 				     /	 '+ФИО2);
  --		FillCell(sheet,54,1,'Начальник Федерального государственного учреждения "Главный военный клинический госпиталь имени академика Н.Н. Бурденко Министерства обороны Российской Федерации"');
  --		FillCell(sheet,54,2,'18.04.08 / 				     /	 И.Б. Максимов');
  --		FillCell(sheet,56,1,'Начальник реестра федерального имущества Территориального управления Федерального агентства по управлению федеральным имуществом по городу Москве');
  --		FillCell(sheet,56,2,'			 /					/   В.Г. Гатаулин');
	    finally
	    ClearVariable(sheet);
	    end;
	   book.Close(True);
	   finally
	   ClearVariable(book);
	   end;
      finally
      CloseWorkArea(WA_CURRENT);
      end;
     | true: trace('строка:'+str(i)+' нет выгрузки - отсутствует карточка');
    fi;
   fi;
  ProgressPos(i);
  od;
  CloseProgress;
  Message('Выгрузка завершена');
 finally
 ClearVariable(books);
 end;
--Exc.Visible=True;
Exc.Quit;
finally
ClearVariable(Exc);
end;


end;


Proc Строка_OnClick(Row: Integer; Col: Integer; Double: Logical);
var i,OWA:I;
i=AsInteger(Template.Frame);
if Double then 
 OpenCardFile('РПО_ИНВКАРТ_ОС','Ukey='+Ukey[i]);
-- OpenBlank('НФА.УФИ.КАРТОЧКА_УФИ_2_3',True,StringToRecord(Ukey[i]));
-- OWA=OpenWorkArea('РПО_ИНВКАРТ_ОС','Номер','Ukey='+Ukey[i]);
-- try
--    НФА[i]=GetFieldS(OWA,1,'НФА');
--    УчНФА[i]=GetFieldS(OWA,1,'ИНВ');
--    ИмяНФА[i]=GetFieldS(OWA,1,'НФА_ИМЯ');
--    ИнвВед[i]=GetFieldS(OWA,1,'ИНВ_ВЕД');
--    Датт[i]=GetFieldD(OWA,1,'ДАТ_ВЭКСП');
--    Стоим[i]=GetFieldN(OWA,1,'СТОИМ_ОТЧ');
-- finally
-- CloseWorkArea(OWA);
-- end;

fi;
end;


Func шаблф_OnEnter(FieldName: String; Iter: Integer): logical;
  if ChooseFile(шаблф,'Выберите шаблон','Файлы Excel|*.xls')=cmCancel then ^False; fi;
  Return False ;
end;


Func папка_OnEnter(FieldName: String; Iter: Integer): logical;
  if ChooseFolder(папка,'Выберите папку сохранения')=cmCancel then ^False; fi;
  Return False ;
end;


Proc шаблф_OnExit(FieldName: String; Iter: Integer);
PutVariableS(FieldName,'');
end;


Func файл_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var текфайл:S;
var Exc,books,book:AutoObject;
var i:I;
Template.HideEditor(True);
i=AsInteger(Template.Frame);
текфайл=папка+'2.3.'+ИнвВед[i]+'.xls';
if not ExistFile(текфайл) then Return ''; fi;
Exc=CreateAutoObject('Excel.Application');
-- Exc.Visible=True;
 try
 books=AsAutoObject(Exc.workbooks);
 try
   book=AsAutoObject(books.Open(текфайл));
   ClearVariable(book);
 finally
 ClearVariable(books);
 end;
Exc.Visible=True;
finally
ClearVariable(Exc);
end;
Return '';
end;



Функ шаблф__ПриВходе(Поле: Строка; Итер: Целое): Логич;
  шаблф=путьxls;
  ^false;
end;


Функ папка__ПриВходе(Поле: Строка; Итер: Целое): Логич;
  папка=папка_выгруженныхxls;
  ^false;
end;


Функ должн1__ПриВходе(Поле: Строка; Итер: Целое): Логич;
  должн1=должн1_;
  ^false;
end;
Функ должн2__ПриВходе(Поле: Строка; Итер: Целое): Логич;
  должн2=должн2_;
  ^false;
end;

Функ дата1__ПриВходе(Поле: Строка; Итер: Целое): Логич;
  дата1=дата1_;
  ^false;
end;
Функ дата2__ПриВходе(Поле: Строка; Итер: Целое): Логич;
  дата2=дата2_;
  ^false;
end;

Функ дата1_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
  дата1=DatetoString(Календарь(сегодня));
  Шаблон.HideEditor(false);
  Возврат '';
end;


Функ дата2_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
  дата2=DatetoString(Календарь(сегодня));
  Шаблон.HideEditor(false);
  Возврат '';
end;


Функ ФИО1__ПриВходе(Поле: Строка; Итер: Целое): Логич;
  ФИО1=ФИО1_;
  ^false;
end;


Функ ФИО2__ПриВходе(Поле: Строка; Итер: Целое): Логич;
  ФИО2=ФИО2_;
  ^false;
end;


Конец
