-- Шаблон создан мастером бланков
-- 19.11.2008 18:12:27
--
БланкСШаблоном "Связывание таблиц договоров";

fВыгрузLink:L;
fВыгрузГЭК:L;
fВыгрузOld:L;

Link:S;
F:S;
State:S;

var crdДоговор:S="РПО_Договор";
var crdДоговорКБК:S="РПО_Договор_Позиции";
var crdДоговорТМЦ:S="РПО_Договор_Позиции_ТМЦ";
var crdДоговорГЭК:S="РПО_ГЭК";
var crdДоговорБО:S="РПО_Свед_БО";
var crdДоговор_Признак:S="РПО_Договор_Признак";
var crdДоговорСкан:S="РПО_Скан_Док";
var crdДоговорФайлы:S="РПО_Список_Файлов";

var hField:S;
var Buf[]:S;

var BufR1[]:Record;
var BufR2[]:Record;
var BufR3[]:Record;
var BufR4[]:Record;
var BufR5[]:Record;
var BufR6[]:Record;
var BufR7[]:Record;
var BufR8[]:Record;

var FName:S;
--
--Процедуры и функции -------------
Func ТипКартПоле(vКарт:S; vПоле:S):S;
var Ret:S;
var Тип:I;
  Тип=GetCardFileFieldType(vКарт,vПоле);
  if Тип=mtlREAL: Ret="REAL";
    |Тип=mtlINTEGER: Ret="INTEGER";
    |Тип=mtlBOOLEAN: Ret="BOOLEAN";
    |Тип=mtlSTRING: Ret="STRING";
    |Тип=mtlDATE: Ret="DATE";
    |Тип=mtlSUBTAB: Ret="SUBTAB";
    |Тип=mtlREF: Ret=GetCardFileByRefField(vКарт,vПоле);
    |Тип=mtlTimed: Ret="TIMED";
    |True: Ret="";
  fi;
  ^Ret;
end;

Func ВыбратьКартПоле(vКарт:S):S;
var n,nn,z,zz:i;
var tmp,tmp2:S;
 ClearVariable(Buf);
 nn=GetCardFileFields(vКарт,Buf,mtlAll);
 n=1;
 While not Buf[n]="" do
  if GetCardFileFieldType(vКарт,Buf[n])=mtlSUBTAB:
     DeleteFromArray(Buf,n);
    else
     Buf[n]=Buf[n]+"  :"+ТипКартПоле(vКарт,Buf[n])+" --"+GetCardFileFieldComment(vКарт,Buf[n]);
     n=n+1;
  fi;
 od;
 nn=LengthOfArray(Buf);
 z=0;
 tmp=ExtractWord(2,hField,":");
 if ExtractWord(1,hField,":")=vКарт and not tmp="":
    zz=LengthOfArray(Buf);
    for z=1..zz do
     tmp2=SubStr(Buf[z],1,Pos(" --",Buf[z])-1);
     tmp2=SubStr(tmp2,1,Pos("  :",tmp2)-1);
     if tmp=tmp2: Break; fi;
    od;
    if z>zz: z=0; fi;
 fi;
 n=AlternateTree("Список полей картотеки "+vКарт,Buf,-1,z,12,"@","Картотека","Наименование",-1,False);
 if n=0: ^""; fi;
 tmp=SubStr(Buf[n],1,Pos(" --",Buf[n])-1);
 tmp=SubStr(tmp,1,Pos("  :",tmp)-1);
 hField=vКарт+":"+tmp;
 ^tmp;
end;

Func Вызвать(aLink:S; aF:S; aSave:L; aSaveГЭК:L; aPath:S):L;
 Раб.Вспом.Договор_Связать_Табл.Link=aLink;
 Раб.Вспом.Договор_Связать_Табл.F=aF;
 Раб.Вспом.Договор_Связать_Табл.fВыгрузLink=aSave;
 Раб.Вспом.Договор_Связать_Табл.fВыгрузГЭК=aSaveГЭК;
 Раб.Вспом.Договор_Связать_Табл.FName=aPath;
 ExecuteProc("Раб.Вспом.Договор_Связать_Табл.btnРасчет_OnClick","Вызвать");
 ^True;
end;

Func ЭкспортКартотекиПоФильтру(vКарт :String; vФильтр :String; vCRD_Файл :String; fUKey:L) :Logical;
var file :String;
var num,n,nn :Integer;
var Rec:Record;
 if (vКарт='' or not ExistsCardFile(vКарт)) and vCRD_Файл='': ^False; fi;
 if Match(vФильтр,"BufR*"):
    if vФильтр="BufR1": nn=LengthOfArray(BufR1);
      |vФильтр="BufR2": nn=LengthOfArray(BufR2);
      |vФильтр="BufR3": nn=LengthOfArray(BufR3);
      |vФильтр="BufR4": nn=LengthOfArray(BufR4);
      |vФильтр="BufR5": nn=LengthOfArray(BufR5);
      |vФильтр="BufR6": nn=LengthOfArray(BufR6);
      |vФильтр="BufR7": nn=LengthOfArray(BufR7);
      |vФильтр="BufR8": nn=LengthOfArray(BufR8);
    fi;
    if nn=0: ^False; fi;
 fi;
 file=PlanVar('CACHE')+'\'+GetGUID+'.bro';
 Try
  num=TextFileCreate(file,false);
  Try
   TextFileWriteLn(num,'[Header]',false);
   TextFileWriteLn(num,'_EnabledFltr=1',false);
   if Match(vФильтр,"BufR*"):
      TextFileAppendLn(num,'_Fltr=');
      for n=1..nn do
       if vФильтр="BufR1": Rec=BufR1[n];
	 |vФильтр="BufR2": Rec=BufR2[n];
	 |vФильтр="BufR3": Rec=BufR3[n];
	 |vФильтр="BufR4": Rec=BufR4[n];
	 |vФильтр="BufR5": Rec=BufR5[n];
	 |vФильтр="BufR6": Rec=BufR6[n];
	 |vФильтр="BufR7": Rec=BufR7[n];
	 |vФильтр="BufR8": Rec=BufR8[n];
       fi;
       TextFileAppendLn(num,'UKey='+RecordToString(Rec));
       if nn>1 and n<nn:
	  TextFileAppendLn(num,'or ');
       fi;
      od;
      TextFileWriteLn(num,'',false);
     else
      TextFileWriteLn(num,'_Fltr='+vФильтр,false);
   fi;
   TextFileWriteLn(num,'TableName='+vКарт,false);
  Finally
   TextFileClose(num);
  end;
  ExportCard( ieCRD,	--  Формат CRD
	      file,	--  Картотека (браузер)
	      vCRD_Файл,--  Файл (путь)
	      true,	--  Учитывать фильтр браузера
	      false,	--  Выгружать только видимые поля
	      false,	--  Выгружать разыменованные поля
	      fUKey,	--  Выгружать c UKEY
	      false,	--  Указать столбец для EXCEL
	      True,	--  Выгружать служебные поля
	      false,	--  Выгружать в DOS-кодировке
	      false);	--  Выгружать таблицы по ссылкам

 Finally
  if ExistFile(file): DeleteFile(file); fi;
 end;
 Return true;
end;

Proc КопирГЭК (aLink:S; Цель:S; fTxt:S);
var OWA,n,nn,i,z:i;
var Folder,File,Folder_:S;
var Flag,fNEF:L;
var Ист:S;
 fNEF=True;
 Ист=Раб.Вспом.Сканер.RootFolderImage;
 if Раб.Настр.Начать("РАБ.ВСПОМ.СКАНЕР",0,0,"",GetGUID):
    Ист=Раб.Настр.ВзятьЗначение("RootFolderImage");
 fi;
 if Ист="": Message("Не указана папка источник ГЭК",mtError); Exit; fi;
 if not ExistsFolder(Ист): Message("Папка "+Ист+" не существует",mtError); Exit; fi;
 if Цель="": Message("Укажите целевую папку",mtError); Exit; fi;
 if Ист=Цель:Message("Папка не должны быть равны",mtError); Exit; fi;
 ClearTrace(True);
 if not ExistsFolder(Цель): CreateFolder(Цель); fi;
 OWA=OpenWorkArea("РПО_ГЭК","ДОК;ЗАПИСЬ;ЛИСТ",if(aLink="BufR4","","Link='"+aLink+"'"));
 Try
  if aLink="BufR4":
     nn=LengthOfArray(BufR4);
    else
     nn=Records(OWA);
  fi;
  ShowProgress(nn,"Выгрузка ГЭК....");
  Folder_="";
  for n=1..nn do
   ProgressPos(n);
   if aLink="BufR4":
      z=GetRecordNumber(OWA,BufR4[n]);
     else
      z=n;
   fi;
   Folder=GetFieldS(OWA,z,"Папка");
   File=GetFieldS(OWA,z,"Файл");
   if ExistFile(Раб.Бюджет2005.Контроль2Слэш(Ист+"\"+Folder+"\"+File)):
      if not Folder=Folder_:
	 CreateFolder(Раб.Бюджет2005.Контроль2Слэш(Цель+"\"+Folder));
	 if not ExistsFolder(Раб.Бюджет2005.Контроль2Слэш(Цель+"\"+Folder)): Message("Целевая папка "+Раб.Бюджет2005.Контроль2Слэш(Цель+"\"+Folder)+" не существует",mtError); Exit; fi;
	 Folder_=Folder;
      fi;
      if fNEF:
	 Flag=not ExistFile(Раб.Бюджет2005.Контроль2Слэш(Цель+"\"+Folder+"\"+File));
	 if not Flag:
	    WriteLn(fTxt,Раб.Бюджет2005.Контроль2Слэш(Folder+"\"+File));
	 fi;
	else
	 Flag=True;
      fi;
      if Flag:
	 CopyFile(Раб.Бюджет2005.Контроль2Слэш(Ист+"\"+Folder+"\"+File),Раб.Бюджет2005.Контроль2Слэш(Цель+"\"+Folder+"\"+File));
	 i=i+1;
	 WriteLn(fTxt,Раб.Бюджет2005.Контроль2Слэш(Folder+"\"+File));
      fi;
     else
      Trace("Файл "+Раб.Бюджет2005.Контроль2Слэш(Ист+"\"+Folder+"\"+File)+" не найден");
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 Message("Копирование ГЭК завершено "+Str(i)+" из "+Str(nn));
end;
--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func Link_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Template.HideEditor(False);
 Link=GetGUID;
 State="";
 Return Cur;
end;

Proc OnExit(FieldName: String; Iter: Integer);
 State="";
end;


Func F_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var OWA:I;
 OWA=OpenWorkArea(crdДоговор,"",Value);
 Try
 Finally
  CloseWorkArea(OWA);
 end;
 ^True;
end;

Func F_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:S;
 tmp=ВыбратьКартПоле(crdДоговор);
 if tmp="": Template.HideEditor(False); ^Cur; fi;
 Cur=Cur+tmp;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_OnClick(Sender: String);
var OWA1,n1,nr1:i;
var OWA2,n2,nr2:i;
var OWA3,n3,nr3:i;
var OWA4,n4,nr4:i;
var OWA5,n5,nr5:i;
var OWA6,n6,nr6:i;
var OWA7,n7,nr7:i;
var OWA8,n8,nr8:i;
var z,p2,p3,p4,p5,p6,p7,p8:I;
var Rec: Record;
var fTxt:S;
var isNet:L;
 if (Sender="btnРасчет" and fВыгрузLink) or (Sender="Вызвать" and fВыгрузLink and Fname=""):
    if ChooseFolder(FName,"Выберите папку для экспорта")=cmCancel: Message("Отказ от операции"); Exit; fi;
 fi;
 ClearVariable(BufR1);
 ClearVariable(BufR2);
 ClearVariable(BufR3);
 ClearVariable(BufR4);
 ClearVariable(BufR5);
 ClearVariable(BufR6);
 ClearVariable(BufR7);
 ClearVariable(BufR8);
 State="";
 isNet=Раб.Бюджет2005.Сетевая;
 if fВыгрузOld:
    isNet=False;
 fi;
 OWA1=OpenWorkArea(crdДоговор,"",F);
 Try
  OWA2=OpenWorkArea(crdДоговорКБК,"Договор");
  Try
   OWA3=OpenWorkArea(crdДоговорТМЦ,"Договор");
   Try
    OWA4=OpenWorkArea(crdДоговорГЭК,"Запись","ДОК='"+crdДоговор+"'");
    Try
     OWA5=OpenWorkArea(crdДоговорБО,"ДОГОВОР","not ДОГОВОР=nil");
     Try
      OWA6=OpenWorkArea(crdДоговор_Признак,"ДОГОВОР","not ДОГОВОР=nil");
      Try
       OWA7=OpenWorkArea(crdДоговорСкан,"Запись","ДОК='"+crdДоговор+"'");
       Try
	OWA8=OpenWorkArea(crdДоговорФайлы,"Запись","ДОК='"+crdДоговор+"'");
	Try
	 nr1=Records(OWA1);
	 nr2=Records(OWA2);
	 nr3=Records(OWA3);
	 nr4=Records(OWA4);
	 nr5=Records(OWA5);
	 nr6=Records(OWA6);
	 nr7=Records(OWA7);
	 nr8=Records(OWA8);
	 if not nr1=0:
	    if Sender="btnРасчет": ShowProgress(nr1,"Обработано..."); fi;
	    for n1=1..nr1 do
	     if Sender="btnРасчет": ProgressPos(n1); fi;
	     Rec=GetRecordKey(OWA1,n1);
	     AddInArray(BufR1,True,False,Rec);
	     --
	     if not isNet or not fВыгрузLink:
		BeginChanging(OWA1,False);
		Try
		 if not GetFieldS(OWA1,n1,"Link")=Link: z=PutFieldS(OWA1,n1,"Link",Link); fi;
		 EndChanging(OWA1);
		Except
		 CancelChanging(OWA1);
		 State="Ошибка! Договор="+RecordToString(Rec)+Chr(13)+"Обработано договоров "+Str(n1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6);
		 Raise;
		end;
	     fi;
	     --
	     if n2+1<=nr2:
		if not GetFieldR(OWA2,n2+1,"Договор")=Rec:
		   z=Search(OWA2,n2+1,Rec);
		  else
		   z=n2+1;
		fi;
		if not z=0:
		   if not isNet or not fВыгрузLink:
		      BeginChanging(OWA2,False);
		      Try
		       While GetFieldR(OWA2,z,"Договор")=Rec do
			if not GetFieldS(OWA2,z,"Link")=Link: z=PutFieldS(OWA2,z,"Link",Link); fi;
			p2=p2+1;
			n2=z;
			z=z+1;
			if z>nr2: Break; fi;
		       od;
		       EndChanging(OWA2);
		      Except
		       CancelChanging(OWA2);
		       State="Ошибка! Договор="+RecordToString(Rec)+Chr(13)+"Обработано договоров "+Str(n1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6);
		       Raise;
		      end;
		     else
		      While GetFieldR(OWA2,z,"Договор")=Rec do
		       AddInArray(BufR2,True,False,GetRecordKey(OWA2,z));
		       p2=p2+1;
		       n2=z;
		       z=z+1;
		       if z>nr2: Break; fi;
		      od;
		   fi; --if not isNet or not fВыгрузLink:
		fi; --if not z=0:
	     fi; --if n2+1<=nr2:
	     --
	     if n3+1<=nr3:
		if not GetFieldR(OWA3,n3+1,"Договор")=Rec:
		   z=Search(OWA3,n3+1,Rec);
		  else
		   z=n3+1;
		fi;
		if not z=0:
		   if not isNet or not fВыгрузLink:
		      BeginChanging(OWA3,False);
		      Try
		       While GetFieldR(OWA3,z,"Договор")=Rec do
			if not GetFieldS(OWA3,z,"Link")=Link: z=PutFieldS(OWA3,z,"Link",Link); fi;
			p3=p3+1;
			n3=z;
			z=z+1;
			if z>nr3: Break; fi;
		       od;
		       EndChanging(OWA3);
		      Except
		       CancelChanging(OWA3);
		       State="Ошибка! Договор="+RecordToString(Rec)+Chr(13)+"Обработано договоров "+Str(n1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6);
		       Raise;
		      end;
		     else
		      While GetFieldR(OWA3,z,"Договор")=Rec do
		       AddInArray(BufR3,True,False,GetRecordKey(OWA3,z));
		       p3=p3+1;
		       n3=z;
		       z=z+1;
		       if z>nr3: Break; fi;
		      od;
		   fi; --if not isNet or not fВыгрузLink:
		fi; --if not z=0:
	     fi; --if n3+1<=nr3:
	     --
	     if n4+1<=nr4:
		if not GetFieldI(OWA4,n4+1,"Запись")=RecordToInteger(Rec):
		   z=Search(OWA4,n4+1,RecordToInteger(Rec));
		  else
		   z=n4+1;
		fi;
		if not z=0:
		   if not isNet or not fВыгрузLink:
		      BeginChanging(OWA4,False);
		      Try
		       While GetFieldI(OWA4,z,"Запись")=RecordToInteger(Rec) do
			if not GetFieldS(OWA4,z,"Link")=Link: z=PutFieldS(OWA4,z,"Link",Link); fi;
			p4=p4+1;
			n4=z;
			z=z+1;
			if z>nr4: Break; fi;
		       od;
		       EndChanging(OWA4);
		      Except
		       CancelChanging(OWA4);
		       State="Ошибка! Договор="+RecordToString(Rec)+Chr(13)+"Обработано договоров "+Str(n1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6);
		       Raise;
		      end;
		     else
		      While GetFieldI(OWA4,z,"Запись")=RecordToInteger(Rec) do
		       AddInArray(BufR4,True,False,GetRecordKey(OWA4,z));
		       p4=p4+1;
		       n4=z;
		       z=z+1;
		       if z>nr4: Break; fi;
		      od;
		   fi;	--if not isNet or not fВыгрузLink:
		fi; --if not z=0:
	     fi; --if n4+1<=nr4:
	     --
	     if n5+1<=nr5:
		if not GetFieldR(OWA5,n5+1,"Договор")=Rec:
		   z=Search(OWA5,n5+1,RecordToInteger(Rec));
		  else
		   z=n5+1;
		fi;
		if not z=0:
		   if not isNet or not fВыгрузLink:
		      BeginChanging(OWA5,False);
		      Try
		       While GetFieldR(OWA5,z,"Договор")=Rec do
			if not GetFieldS(OWA5,z,"Link")=Link: z=PutFieldS(OWA5,z,"Link",Link); fi;
			p5=p5+1;
			n5=z;
			z=z+1;
			if z>nr5: Break; fi;
		       od;
		       EndChanging(OWA5);
		      Except
		       CancelChanging(OWA5);
		       State="Ошибка! Договор="+RecordToString(Rec)+Chr(13)+"Обработано договоров "+Str(n1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6);
		       Raise;
		      end;
		     else
		      While GetFieldR(OWA5,z,"Договор")=Rec do
		       AddInArray(BufR5,True,False,GetRecordKey(OWA5,z));
		       p5=p5+1;
		       n5=z;
		       z=z+1;
		       if z>nr5: Break; fi;
		      od;
		   fi; --if not isNet or not fВыгрузLink:
		fi; --if not z=0:
	     fi; --if n5+1<=nr5:
	     --
	     if n6+1<=nr6:
		if not GetFieldR(OWA6,n6+1,"Договор")=Rec:
		   z=Search(OWA6,n6+1,RecordToInteger(Rec));
		  else
		   z=n6+1;
		fi;
		if not z=0:
		   if not isNet or not fВыгрузLink:
		      BeginChanging(OWA6,False);
		      Try
		       While GetFieldR(OWA6,z,"Договор")=Rec do
			if not GetFieldS(OWA6,z,"Link")=Link: z=PutFieldS(OWA6,z,"Link",Link); fi;
			p6=p6+1;
			n6=z;
			z=z+1;
			if z>nr6: Break; fi;
		       od;
		       EndChanging(OWA6);
		      Except
		       CancelChanging(OWA6);
		       State="Ошибка! Договор="+RecordToString(Rec)+Chr(13)+"Обработано договоров "+Str(n1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6);
		       Raise;
		      end;
		     else
		      While GetFieldR(OWA6,z,"Договор")=Rec do
		       AddInArray(BufR6,True,False,GetRecordKey(OWA6,z));
		       p6=p6+1;
		       n6=z;
		       z=z+1;
		       if z>nr6: Break; fi;
		      od;
		   fi; --if not isNet or not fВыгрузLink:
		fi; --if not z=0:
	     fi; --if n6+1<=nr6:
	     --
	     if n7+1<=nr7:
		if not GetFieldI(OWA7,n7+1,"Запись")=RecordToInteger(Rec):
		   z=Search(OWA7,n7+1,RecordToInteger(Rec));
		  else
		   z=n7+1;
		fi;
		if not z=0:
		   if not isNet or not fВыгрузLink:
		      BeginChanging(OWA7,False);
		      Try
		       While GetFieldI(OWA7,z,"Запись")=RecordToInteger(Rec) do
			if not GetFieldS(OWA7,z,"Link")=Link: z=PutFieldS(OWA7,z,"Link",Link); fi;
			p7=p7+1;
			n7=z;
			z=z+1;
			if z>nr7: Break; fi;
		       od;
		       EndChanging(OWA7);
		      Except
		       CancelChanging(OWA7);
		       State="Ошибка! Договор="+RecordToString(Rec)+Chr(13)+"Обработано договоров "+Str(n1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6)+", Сканов перв. док. "+Str(p7)+" из "+Str(nr7);
		       Raise;
		      end;
		     else
		      While GetFieldI(OWA7,z,"Запись")=RecordToInteger(Rec) do
		       AddInArray(BufR7,True,False,GetRecordKey(OWA7,z));
		       p7=p7+1;
		       n7=z;
		       z=z+1;
		       if z>nr7: Break; fi;
		      od;
		   fi; --if not isNet or not fВыгрузLink:
		 fi; --if not z=0:
	     fi; --if n7+1<=nr7:
	     --
	     if n8+1<=nr8:
		if not GetFieldI(OWA8,n8+1,"Запись")=RecordToInteger(Rec):
		   z=Search(OWA8,n8+1,RecordToInteger(Rec));
		  else
		   z=n8+1;
		fi;
		if not z=0:
		   if not isNet or not fВыгрузLink:
		      BeginChanging(OWA8,False);
		      Try
		       While GetFieldI(OWA8,z,"Запись")=RecordToInteger(Rec) do
			if not GetFieldS(OWA8,z,"Link")=Link: z=PutFieldS(OWA8,z,"Link",Link); fi;
			p8=p8+1;
			n8=z;
			z=z+1;
			if z>nr8: Break; fi;
		       od;
		       EndChanging(OWA8);
		      Except
		       CancelChanging(OWA8);
		       State="Ошибка! Договор="+RecordToString(Rec)+Chr(13)+"Обработано договоров "+Str(n1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6)+", Сканов перв. док. "+Str(p7)+" из "+Str(nr7)+", Прикрепленных файлов "+Str(p8)+" из "+Str(nr8);
		       Raise;
		      end;
		     else
		      While GetFieldI(OWA8,z,"Запись")=RecordToInteger(Rec) do
		       AddInArray(BufR8,True,False,GetRecordKey(OWA8,z));
		       p8=p8+1;
		       n8=z;
		       z=z+1;
		       if z>nr8: Break; fi;
		      od;
		   fi; --if not isNet or not fВыгрузLink:
		fi; --if not z=0:
	     fi; --if n8+1<=nr8:
	    od; --for n1=1..nr1 do
	 fi; --if not nr1=0:
	Finally
	 CloseWorkArea(OWA8);
	end;
       Finally
	CloseWorkArea(OWA7);
       end;
      Finally
       CloseWorkArea(OWA6);
      end;
     Finally
      CloseWorkArea(OWA5);
     end;
    Finally
     CloseWorkArea(OWA4);
    end;
   Finally
    CloseWorkArea(OWA3);
   end;
  Finally
   CloseWorkArea(OWA2);
  end;
 Finally
  CloseWorkArea(OWA1);
  if Sender="btnРасчет": CloseProgress; fi;
 end;
 OWA4=OpenWorkArea(crdДоговорГЭК,"Док;Запись","1=0");
 Try
  if not isNet or not fВыгрузLink:
     OWA7=OpenWorkArea(crdДоговорСкан,"","Link='"+Link+"'");
     Try
      BeginChanging(OWA4,False);
      Try
       nr7=Records(OWA7);
       for n7=1..nr7 do
	SetFilter(OWA4,"ДОК='"+crdДоговорСкан+"' and Запись="+Str(RecordToInteger(GetRecordKey(OWA7,n7))));
	nr4=Records(OWA4);
	for n4=1..nr4 do
	 if not GetFieldS(OWA4,z,"Link")=Link: z=PutFieldS(OWA4,z,"Link",Link); p4=p4+1; fi;
	od;
       od;
       EndChanging(OWA4);
      Except
       CancelChanging(OWA4);
       State="Ошибка! Договор="+RecordToString(Rec)+Chr(13)+"Обработано договоров "+Str(n1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6)+", Сканов перв. док. "+Str(p7)+" из "+Str(nr7)+", Прикрепленных файлов "+Str(p8)+" из "+Str(nr8);
       Raise;
      End;
     Finally
      CloseWorkArea(OWA7);
     end;
    else
     if not z=0:
	nr7=LengthOfArray(BufR7);
	for n7=1..nr7 do
	 SetFilter(OWA4,"ДОК='"+crdДоговорСкан+"' and Запись="+Str(RecordToInteger(BufR7[n7])));
	 nr4=Records(OWA4);
	 for n4=1..nr4 do
	  AddInArray(BufR4,True,False,GetRecordKey(OWA4,z));
	 od;
	od;
     fi;
     p4=LengthOfArray(BufR4);
  fi; --if not isNet or not fВыгрузLink:
 Finally
  CloseWorkArea(OWA4);
 end;
 State="Обработано договоров "+Str(n1-1)+" из "+Str(nr1)+", КБК "+Str(p2)+" из "+Str(nr2)+", ТМЦ "+Str(p3)+" из "+Str(nr3)+", ГЭК "+Str(p4)+" из "+Str(nr4)+", БО "+Str(p5)+" из "+Str(nr5)+", Признаков "+Str(p6)+" из "+Str(nr6);
 if fВыгрузLink:
    fTxt=Раб.Бюджет2005.Контроль2Слэш(FName+"\.Выгрузка");
    CreateFile(fTxt);
    ЭкспортКартотекиПоФильтру(crdДоговор,if(isNet,"BufR1","Link='"+Link+"'"),Раб.Бюджет2005.Контроль2Слэш(FName+"\"+crdДоговор),True);
    WriteLn(fTxt,crdДоговор+"="+Str(n1-1));
    ЭкспортКартотекиПоФильтру(crdДоговорКБК,if(isNet,"BufR2","Link='"+Link+"'"),Раб.Бюджет2005.Контроль2Слэш(FName+"\"+crdДоговорКБК),True);
    WriteLn(fTxt,crdДоговорКБК+"="+Str(p2));
    ЭкспортКартотекиПоФильтру(crdДоговорТМЦ,if(isNet,"BufR3","Link='"+Link+"'"),Раб.Бюджет2005.Контроль2Слэш(FName+"\"+crdДоговорТМЦ),True);
    WriteLn(fTxt,crdДоговорТМЦ+"="+Str(p3));
    ЭкспортКартотекиПоФильтру(crdДоговорГЭК,if(isNet,"BufR4","Link='"+Link+"'"),Раб.Бюджет2005.Контроль2Слэш(FName+"\"+crdДоговорГЭК),True);
    WriteLn(fTxt,crdДоговорГЭК+"="+Str(p4));
    ЭкспортКартотекиПоФильтру(crdДоговорБО,if(isNet,"BufR5","Link='"+Link+"'"),Раб.Бюджет2005.Контроль2Слэш(FName+"\"+crdДоговорБО),True);
    WriteLn(fTxt,crdДоговорБО+"="+Str(p5));
    ЭкспортКартотекиПоФильтру(crdДоговор_Признак,if(isNet,"BufR6","Link='"+Link+"'"),Раб.Бюджет2005.Контроль2Слэш(FName+"\"+crdДоговор_Признак),True);
    WriteLn(fTxt,crdДоговор_Признак+"="+Str(p6));
    ЭкспортКартотекиПоФильтру(crdДоговорСкан,if(isNet,"BufR7","Link='"+Link+"'"),Раб.Бюджет2005.Контроль2Слэш(FName+"\"+crdДоговорСкан),True);
    WriteLn(fTxt,crdДоговорСкан+"="+Str(p7));
    ЭкспортКартотекиПоФильтру(crdДоговорФайлы,if(isNet,"BufR8","Link='"+Link+"'"),Раб.Бюджет2005.Контроль2Слэш(FName+"\"+crdДоговорФайлы),True);
    WriteLn(fTxt,crdДоговорФайлы+"="+Str(p8));
    if Sender="btnРасчет":
       Message("Операция выгрузки завершена");
    fi;
 fi;
 if fВыгрузГЭК:
    fTxt=Раб.Бюджет2005.Контроль2Слэш(FName+"\.ВыгрузкаГЭК");
    CreateFile(fTxt);
    КопирГЭК(if(isNet,"BufR4","Link='"+Link+"'"),FName+"\ГЭК",fTxt);
 fi;
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
--Обработчики событий шаблона -----
--

Конец

