-- Шаблон создан мастером бланков
-- 17.02.2007 13:19:07
--
БланкСШаблоном "Выгрузка сведений об операциях с целевыми субсидиями";

var Упр:I;
btnРейс: Object;
fВЛВС:L=[False];
var fПравила:L=True;
XXXXX:S;
var ДатаРейс:D;
var DD:S=if(Day(ДатаРейс)<10, Str(Day(ДатаРейс)), Chr(65+Day(ДатаРейс)-10));
var M:S=if(Mon(ДатаРейс)<10,Str(Mon(ДатаРейс)),""+Chr(65+Mon(ДатаРейс)-10));
НомРейс_:I;
var НомРейс :S=if(fВЛВС,Раб.Бюджет2005.Format36(1007+НомРейс_),Раб.Бюджет2005.Format36(НомРейс_));
ИмяРейс_:S;
var ИмяРейс:S=if(fПравила,XXXXX+DD+НомРейс+".TS"+M,ИмяРейс_);
Путь:S;

Учр:Record;
УчрНаим:S;
var ДН:D=[ToDay];
var ДК:D=[ToDay];
ИсклВыгруж:L=[True];
Секрет:I;
flagОтдРейс:L;

var ВзятьИзДок_Учр:S="Заполнить из уведомления";

var A:S="+";
var D:S="-";

var пп[]:i=$;
var ГодДок[]:S;
var ГодДок_:S="";
var ДатаДок[]:D;
var Контр[]:S;
var НомРеестр[]:S;
var СумДок[]:N;
var Msg[]:S;
var Msg_:S="";
var Err[]:I;
var ErrT[]:S;
var Wrng[]:I;
var WrngT[]:S;
var Cmt[]:I;
var Key[]:Record;
var FTmp[]:S;
var FName[]:S;

var ВсегоСумДок:N=SumOfArray(СумДок,Упр);

Folder:S;

var Buf[]:S;

var BufE[]:S;
var BufW[]:S;
var BufC[]:S;

var SelfCrd:S='РПО_СВЕД_СУБС';

FmtN:I=[-1];
var FmtCFG[]:S;
FmtCFG_:S;
var FmtXSLT[]:S;
FmtXSLT_:S;
var FmtName[]:S;
var FmtName_:S=if(FmtN=0,"XML (служебный формат)",FmtName[FmtN]);

--
--Процедуры и функции -------------
Proc Очистить (Iter:I);
 if Iter=0:
    ClearVariable(Упр);
    ClearVariable(ГодДок);
    ClearVariable(ДатаДок);
    ClearVariable(Контр);
    ClearVariable(СумДок);
    ClearVariable(НомРеестр);
    ClearVariable(Msg);
    ClearVariable(Err);
    ClearVariable(Wrng);
    ClearVariable(Cmt);
    ClearVariable(Key);
   else
    ГодДок[Iter]="";
    ДатаДок[Iter]=1.1.100;
    Контр[Iter]="";
    СумДок[Iter]=0;
    НомРеестр[Iter]="";
    Msg[Iter]="";
    Err[Iter]=0;
    Wrng[Iter]=0;
    Cmt[Iter]=0;
    Key[Iter]=nil;
 fi;
end;

Func ПолучитьФильтр(Iter:I; Rec:Record):S;
var F,tmp:S;
 F="УЧР="+RecordToString(Учр);--+" and Секрет="+Str(Секрет);"УЧИТЫВАТЬ and
 if Iter=0:
    if ИсклВыгруж: F=Раб.Бюджет2005.Объединить(F,"ДатаРейс=1.1.100 and НомРейс=0"," and "); fi;
    if ДН>1.1.100 and ДК>1.1.100: tmp="ДатаДок>="+DateToString(ДН)+" and ДатаДок<="+DateToString(ДК);
      |ДН=1.1.100 and ДК>1.1.100: tmp="ДатаДок<="+DateToString(ДК);
      |ДН>1.1.100 and ДК=1.1.100: tmp="ДатаДок>="+DateToString(ДН);
    fi;
    F=Раб.Бюджет2005.Объединить(F,tmp," and ");
   else
    tmp=if(Rec=nil,"","UKey="+RecordToString(Rec));
    F=Раб.Бюджет2005.Объединить(F,tmp," and ");
 fi;
 ^F;
end;

Proc ЗагрузитьДок (Iter:I; F:S);
var OWA,n,nr:I;
var i:i;
 Очистить(Iter);
 OWA=OpenWorkArea(SelfCrd,"ДатаДок",F);
 Try
  nr=Records(OWA);
  ShowProgress(nr,"Загрузка...");
  for n=1..nr do
   ProgressPos(n);
   if Iter=0: 
      i=InsertFrame(Упр,n)-1;
     else 
      i=Iter; 
   fi;
   ГодДок[i]=GetFieldS(OWA,n,"ГОД");
   ДатаДок[i]=GetFieldD(OWA,n,"ДАТАДОК");
   Key[i]=GetRecordKey(OWA,n);
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
end;

Func ПроверитьУникальность(Rec:Record; Iter:I):L;
var z:i;
 z=SearchInArray(Key,Rec,False,1);
 if not z=-1:
    if z=Iter: z=SearchInArray(Key,Rec,False,z+1); fi;
    if not z=-1: Message("Повторный ввод сведений",mtError); ^False; fi;
 fi;
 ^True;
end;

Proc УдалитьПустыеСтроки;
var Iter:i;
 Iter=1;
 While Iter<=Упр do
  if Key[Iter]=nil: DeleteFrame(Упр,Iter);
   else 
    Iter=Iter+1;
  fi; 
 od;
end;

Proc НаОшибку (Flag:L);
var i:I;
 for  i= 1 to Упр do
  if (Flag and Err[i]>0) or (not Flag and Wrng[i]>0): Template.Field='Msg'; Template.Frame=i; Exit; fi;
 od;
end;

proc ВыгрузитьРейс;
var n,i1,У1,n1,n2,nn:I;
var OWAПП:I;
var xml,xslt:S;
var xml_A,xml_A1:AutoObject;
  if flagОтдРейс then У1=Упр; else У1=1; fi;
  for i1=1..У1 do
    if flagОтдРейс then ShowProgress(Упр,"Формирование рейса...."); fi;
    OWAПП=OpenWorkArea(SelfCrd,"","1=0");
    try
      if i1>1 then НомРейс_=НомРейс_+1; fi;
      if not flagОтдРейс then ShowProgress(Упр,"Формирование рейса...."); fi;
      if flagОтдРейс then
         n1=i1; n2=i1;
        else
         n1=1; n2=Упр;
      fi;

      xml=Раб.Бюджет2005.Контроль2Слэш(PlanVar("Cache")+"\"+GetGuid+".xml");
      РАБ.XML.ОЧИСТИТЬ;
      for n=n1 .. n2 do
        ProgressPos(n);
        Раб.XML.ДобАттр("Ukey",RecordToString(Key[n]));
        РАБ.XML.ОткрытьТэгBuf("TS",False);
        РАБ.КАРТВXML.ВыгрузкаСведСубс(Key[n]);
        РАБ.XML.ЗакрытьТэг;
        SetFilter(OWAПП,"Ukey="+RecordToString(Key[n]));
        BeginChanging(OWAПП,False);
        Try
          nn=PutFieldD(OWAПП,1,"ДатаРейс",ДатаРейс);
          nn=PutFieldI(OWAПП,1,"НомРейс",НомРейс_);
          nn=PutFieldL(OWAПП,1,"ВБанк",True);
         EndChanging(OWAПП);
        Except
         CancelChanging(OWAПП);
        end;
        Wrng[n]=0;
        Err[n]=0;
        FName[n]=Folder+ИмяРейс;
        Msg[n]='Данные успешно выгружены в файл:'+FName[n];

      od;
      РАБ.XML.ToTopLev;

      РАБ.XML.ДобАттр("progname","Турбо Бухгалтер 6.9 Бюджет-157н");
      РАБ.XML.ДобАттр("progver",SubStr(Str(Версия.Сборка0)+if(Версия.Сборка1<>0,"."+Str(Версия.Сборка1),"")+Версия.Сборка2,1,20));
      РАБ.XML.ДобАттр("datepack",dateToString(ДатаРейс));
      РАБ.XML.ДобАттр("numpack",НомРейс);
      РАБ.XML.ФормированиеТэга("pack","",False,False,2);
      РАБ.XML.ЗаписьФайла(xml,"1251");
      try
        xml_A=Раб.XML.LOADXML2OLE(xml);
        Раб.ВыгрузкиXML.КОНВЕРТИРОВАТЬXML(FmtN,xml_A,Folder+ИмяРейс);
      finally
        ClearVariable(xml_A);
        DeleteFile(xml);
      end;
    finally
      CloseWorkArea(OWAПП);
      CloseProgress;
    end;
  od;
  if not flagОтдРейс then
     Message("Рейс '"+Folder+ИмяРейс+"' успешно сформирован.");
--     btnОпись.Enabled=True;
     if EnqOkCancel("Открыть рейс для просмотра ?")=cmOk: ExecuteProgram("NotePad "+Folder+ИмяРейс); fi;
    else
     НомРейс_=НомРейс_+1;
  fi;
end;

Func ПроверитьШапку:L;
    if ДатаРейс=1.1.100: Message("Введите дату формирования документов (рейса)",mtError); Template.Field="ДатаРейс"; ^False; fi;
    if НомРейс_=0: Message("Введите порядковый номер рейса",mtError);  Template.Field="НомРейс_"; ^False; fi;
    if fВЛВС:
       if НомРейс_<1 or НомРейс_>288: Message("Выход за границы диапазона номеров 1..288 для выделенной ЛВС",mtError); Template.Field="НомРейс_"; ^False; fi;
      else
       if НомРейс_<1 or НомРейс_>1007: Message("Выход за границы диапазона номеров 1..1007",mtError); Template.Field="НомРейс_"; ^False; fi;
    fi;
    if fПравила:
       if XXXXX="": Message("Введите код организации",mtError); Template.Field="XXXXX"; ^False; fi;
       if not Length(XXXXX)=5: Message("Длина кода организации должна быть 5 символов",mtError); Template.Field="XXXXX"; ^False; fi;
      else
       if ИмяРейс="": Message("Введите имя рейса",mtError); Template.Field="ИмяРейс"; ^False; fi;
    fi;
    if Учр=nil or УчрНаим="": Message("Выберите плательщика",mtError); Template.Field="УчрНаим"; ^False; fi;
^True;
end;

Func Проверить(Iter:I):L;
var n,nr,n2,nr2,z1,z2,i:i;
var xml,xslt:S;
var xml_A,xml_A1,Err_A:AutoObject;
 if Iter=0:
    УдалитьПустыеСтроки;
    if Key[1]=nil: Message("Заполните список выгружаемых документов",mtError); ^False; fi;
 fi;
 if Iter>0: z1=Iter; z2=Iter; Msg[Iter]=""; Wrng[Iter]=0; Err[Iter]=0;
   |True: z1=1; z2=Упр;  ClearVariable(Msg); ClearVariable(Wrng); ClearVariable(Err);
 fi;
 if z2-z1>0: ShowProgress(z2-z1,"Проверка...."); fi;
 Try
  for n=z1..z2 do
   ProgressPos(n);
   if FmtN=0:
      xslt="";
     else
      xslt=Раб.Бюджет2005.PathPart(FmtXSLT[FmtN],"path")+"\"+Раб.Бюджет2005.PathPart(FmtXSLT[FmtN],"filename")+"_val.xsl";
   fi;
   if ExistFile(xslt):
      xml=Раб.Бюджет2005.Контроль2Слэш(PlanVar("Cache")+"\"+GetGuid+".xml");
      РАБ.XML.ОЧИСТИТЬ;
      Раб.XML.ДобАттр("Ukey",recordToString(Key[n]));
      РАБ.XML.ОткрытьТэгBuf("TS",False);
      РАБ.КАРТВXML.ВыгрузкаСведСубс(Key[n]);
      РАБ.XML.ЗакрытьТэг;
      РАБ.XML.ЗаписьФайла(xml,"1251");
      try
        xml_A=Раб.XML.LOADXML2OLE(xml);
        try
          Err_A=РАБ.ВыгрузкиXML.ПроверитьXML(FmtN,xml_A);--Раб.XML.XSLT_Ole2Ole(xml_A,xslt);--fk2008-03_val.xsl");
          ErrT[n]=РАБ.ВыгрузкиXML.ТекстОшибок(Err_A,"1");--Раб.XML.ПростойXPath(Err_A,"/errors/error[@must=1]",".",chr(13));
          Err[n]=РАБ.ВыгрузкиXML.ЧислоОшибок(Err_A,"1");
          WrngT[n]=РАБ.ВыгрузкиXML.ТекстОшибок(Err_A,"0");--Раб.XML.ПростойXPath(Err_A,"/errors","error[@must=0]",chr(13));
          Wrng[n]=РАБ.ВыгрузкиXML.ЧислоОшибок(Err_A,"0");--Int(Раб.XML.ПростойXPath(Err_A,"/errors","count(error[@must=0])",""));
          Msg[n]=if(Err[n]>0,"Ошибка! "+ErrT[n],'')+if(Wrng[n]>0,"Предупреждение! "+WrngT[n],'');
        finally
          ClearVariable(Err_A);
        end;
      finally
        ClearVariable(xml_A);
        DeleteFile(xml);
      end;

    fi;
   if Msg[n]='': Msg[n]="Проверка пройдена"; fi;
  od;

 Finally
  CloseProgress;
 end;

 ^True;
end;


Proc НомРейсСлед;
var OWA,nr:I;
 if ДатаРейс=1.1.100: Message("Введите дату формирования документов (файла)",mtError); Template.Field="ДатаРейс"; Exit; fi;
 OWA=OpenWorkArea(SelfCrd,"НомРейс","ДатаРейс>="+DateToString(ДатаРейс)+" and ДатаРейс<="+DateToString(ДатаРейс));
 Try
  Nr=Records(OWA);
  if Nr=0: 
     НомРейс_=1;
    else
     НомРейс_=GetFieldI(OWA,Nr,"НомРейс")+1;
     if fВЛВС:
        if НомРейс_<1 or НомРейс_>288 : Message("Выход за границы диапазона номеров 1..288 для выделенной ЛВС",mtError); fi;
       else
        if НомРейс_<1 or НомРейс_>1007: Message("Выход за границы диапазона номеров 1..1007",mtError); fi;
     fi;
  fi;
 Finally
  CloseWorkArea(OWA);
 end;
end;

Func НомРейсИспользуется (ДР:D; НР:I):L;
var OWA,nr:I;
 OWA=OpenWorkArea(SelfCrd,"","НомРейс="+Str(НР)+" and ДатаРейс>="+DateToString(ДР)+" and ДатаРейс<="+DateToString(ДР)+" and "+if(fВЛВС,"ВЛВС","not ВЛВС"));
 Try
  if Records(OWA)=0: ^False; else ^True; fi;
 Finally
  CloseWorkArea(OWA);
 end;
end;

Proc ЗагрузитьРейс (ДР:D; НР:I);
 ЗагрузитьДок (0,"НомРейс="+Str(НР)+" and ДатаРейс>="+DateToString(ДР)+" and ДатаРейс<="+DateToString(ДР));
 if not Key[1]=nil:
    Учр=GetCardFieldR(SelfCrd,Key[1],"Учр");
    УчрНаим=GetCardFieldS(SelfCrd,Key[1],"Учр.КорИмя");
    XXXXX=GetCardFieldS(SelfCrd,Key[1],"Учр.РПО_КБП");
--    Секрет=GetCardFieldI(SelfCrd,Key[1],"Секрет");
 fi;
 Проверить(0);
end;

Proc ЗаполнитьЗаказчика(Rec: Record);
 if not Rec=nil:
    Учр=Rec;
    УчрНаим=GetCardFieldS("Контрагент",Rec,"КорИмя");
    XXXXX=GetCardFieldS("Контрагент",Rec,"РПО_КБП");
    if not Length(XXXXX)=5: XXXXX=""; fi;
 fi;
end;
--Процедуры и функции -------------
--
--Обработчики событий полей шаблона-----
Func FmtName_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:I;
  tmp=Alternate("Выберите формат выгрузки",FmtName,-1,FmtN,12);
  if tmp>0:
     FmtN=tmp;
     if Упр>1 and ГодДок[1]<>'':
        Проверить(0);
     fi;
    FmtCFG_=FmtCFG[FmtN];
    FmtXSLT_=FmtXSLT[FmtN];

  fi;
  Return False;
end;

Proc FmtName_OnExit(FieldName: String; Iter: Integer);
  FmtN=0;
end;

Func XXXXX_onValidate (Field:S; Iter:I; Value:S):L;
 if not Length(Value)=5: Message("Длина кода должна быть 5 символов",mtError); ^false; fi;
 ^True;
end;

Func XXXXX_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec:Record;
var tmp:S;
 Template.HideEditor(False);
 Rec=OpenCardFile("Контрагент","--Наше",nil,crdRecordOnly);
 if Rec=nil: ^Cur; fi;
 Учр=Rec;
 УчрНаим=GetCardFieldS("Контрагент",Rec,"КорИмя");
 tmp=GetCardFieldS("Контрагент",Rec,"РПО_КБП");
 if not Length(tmp)=5: Message("Длина кода должна быть 5 символов",mtError); ^Cur; fi;
 XXXXX=tmp;
 Return Cur;
end;

Proc ДатаРейс_OnExit(FieldName: String; Iter: Integer);
 if not ДатаРейс=1.1.100: НомРейсСлед; fi;
end;

Func ДатаРейс_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:D;
 Template.HideEditor(False);
 tmp=Calendar;
 if tmp=1.1.100: ^Cur; fi;
 ДатаРейс=tmp;
 НомРейсСлед;
 Return Cur;
end;

Func НомРейс_onEnter (Field:S; Iter:I):L;
 if ДатаРейс=1.1.100: Message("Введите дату формирования документов (рейса)",mtError); Template.Field="ДатаРейс"; ^False; fi;
 ^True;
end;

Func НомРейс_onValidate (Field:S; Iter:I; Value:I):L;
 if fВЛВС:
    if Value<1 or Value>288: Message("Выход за границы диапазона номеров 1..288 для выделенной ЛВС",mtError); ^False; fi;
   else
    if Value<1 or Value>1007: Message("Выход за границы диапазона номеров 1..1007",mtError); ^False; fi;
 fi;
 if НомРейсИспользуется(ДатаРейс, Value)=False: ^True; fi;
 if EnqOkCancel("Рейс с номером "+Str(Value)+" за дату "+DateToString(ДатаРейс)+" существует."+Chr(13)+"Загрузить документы данного рейса ?",mtWarning)=cmCancel: ^True; fi;
 ЗагрузитьРейс(ДатаРейс,Value);
 ^True;
end;

Func НомРейс_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var OWA,nr,n:I;
 Template.HideEditor(False);
 ClearVariable(Buf);
 OWA=OpenWorkArea(SelfCrd,"НомРейс","not ДатаРейс=1.1.100 and ДатаРейс="+DateToString(ДатаРейс));
 Try
  nr=Records(OWA);
  for n=1..nr do
   Buf[n]="Рейс №"+Str(GetFieldI(OWA,n,"НомРейс"))+" от "+GetFieldS(OWA,n,"ДатаРейс");
  od;
 Finally
  CloseWorkArea(OWA);
 end;
 if nr=0: Message("За "+DateToString(ДатаРейс)+" выгрузка не производилась"); ^Cur; fi;
 n=Alternate("Список рейсов",Buf,-1,1,12);
 if n=0: ^Cur; fi;
 n=Int(SubStr(Buf[n],7,Pos(" от",Buf[n])-7));
 ЗагрузитьРейс(ДатаРейс,n);
 Return Cur;
end;

Func Путь_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var i:I;
 Template.HideEditor(False);
 i=ChooseFolder(Путь,"Выберите путь выгрузки");
 Return Cur;
end;

Func УчрНаим_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=OpenCardFile("Контрагент","--Наше",Учр,crdRecordOnly);
 ЗаполнитьЗаказчика(Rec);
 Очистить(0);
 Return False;
end;

Proc УчрНаим_OnExit(FieldName: String; Iter: Integer);
  Очистить(0);
end;

Func ВзятьИзЗВЗ_Учр_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=OpenCardFile(SelfCrd,"--Учитывать");
 if not Rec=nil:
    ЗаполнитьЗаказчика(GetCardFieldR(SelfCrd,Rec,"Учр"));
    Очистить(0);
 fi;
 Return False;
end;

Proc Д_OnExit(FieldName: String; Iter: Integer);
 Очистить(0);
end;

Func Д_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:D;
var Field:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 tmp=Calendar;
 if tmp=1.1.100: ^Cur; fi;
 PutVariableD(Field,tmp);
 Очистить(0);
 Return Cur;
end;

Func Секрет_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="0 -- Не секретно";
 Buf[2]="1 -- ДСП";
 Buf[3]="2 -- Секретно";
 Buf[4]="3 -- Совершенно секретно";
 Buf[5]="4 -- Особой важности";
 n=Alternate("Признак секретности",Buf,-1,Секрет+1,12);
 if n=0: ^False; fi;
 n=n-1;
 Секрет=n;
 fВЛВС=Секрет>1;
 if not ДатаРейс=1.1.100: НомРейсСлед; fi;
 Очистить(0);
 Return False;
end;

Proc Секрет_OnExit(FieldName: String; Iter: Integer);
 fВЛВС=Секрет>1;
 if not ДатаРейс=1.1.100: НомРейсСлед; fi;
end;

Func A_onEnter (Field:String; Iter:Integer):Logical;
 InsertFrame(Упр,Iter+1);
 ^false;
end;

Func D_onEnter (Field:String; Iter:Integer):Logical;
 DeleteFrame(Упр,Iter);
 ^false;
end;

Func Док_onEnter(FieldName: String; Iter: Integer): logical;
var Rec:Record;
var F:S;
var OWA:I;
 if Учр=nil or УчрНаим="": Message("Выберите собственные реквизиты",mtError); Template.Field="УчрНаим"; ^False; fi;
 F=ПолучитьФильтр(Iter,nil);
 if FieldName="НомДок_":
    Rec=Раб.Поиск.ВыборИзКартотеки("Выбор заявки",SelfCrd,"НомерДок|ДатаДок:D|РеквП:R#Контрагент@КорИмя","Номер заявки|Дата заявки|Контрагент",F);
   else
    Rec=OpenCardFile(SelfCrd,"--"+F,Key[Iter]);
 fi;
 if not Rec=nil:
    if ПроверитьУникальность(Rec,Iter):
       ЗагрузитьДок(Iter,ПолучитьФильтр(Iter,Rec));
       Проверить(Iter);
    fi;
 fi;
 Return False;
end;

Proc Док_onExit(FieldName: String; Iter: Integer);
 Очистить(Iter);
end;

Func НомДок_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Template.HideEditor(False);
 Док_onEnter(AsString(Template.Field),AsInteger(Template.Frame));
 Return Cur;
end;

Func Msg_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if not Key[Iter]=nil:
    if Match(Msg[Iter],"Заявка успешно выгружена в файл:*"):
       ExecuteProgram("NotePad '"+FName[Iter]+"'");
      else
       OpenBlank("Документы.Лбо.СВЕД_СУБСИДИИ",True,Key[Iter]);
       Проверить(Iter);
    fi;
 fi;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРейс_onClick (Obj:S);
 if not ПроверитьШапку: Exit; fi;
 if not Проверить(0): Exit; fi;
 if not SumOfArray(Err,Упр)=0: Message("В результате проверки обнаружено ошибок: "+Str(SumOfArray(Err,Упр))+Chr(13)+"Формирование рейса отменено",mtError); Exit; fi;
 if not SumOfArray(Wrng,Упр)=0:
    if EnqOkCancel("В результате проверки обнаружено предупреждений :"+Str(SumOfArray(Wrng,Упр))+" Игнорировать предупреждения ?",mtWarning)=cmCancel:  Exit; fi;
 fi;
 if Путь="":
    if ChooseFolder(Folder,"Сохранить как")=cmCancel: Message("Отказ от формирования рейса"); Exit; fi;
   else
    Folder=Путь;
 fi;
 ВыгрузитьРейс;
end;

Proc BtnСЭД_OnClick(Sender: String);
var tmp:S;
var hПуть:S;
 Try
  hПуть=Путь;
  tmp=Раб.вспом.СЭД.ПолучитьПапку("UF","exp");
   if tmp="" or Not ExistsFolder(tmp) then
    if tmp="" then
      Message("Отказ от формирования рейса, каталог не задан");
     else 
      Message("Отказ от формирования рейса, каталог не найден");
    fi;
    exit;
   else 
    Путь=tmp;
    btnРейс_onClick(Sender);
  fi;
 Finally
  Путь=hПуть;
 end;
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;

Proc btnСледНом_onClick (Obj:S);
 if ДатаРейс=1.1.100: Message("Введите дату формирования документов (рейса)",mtError); Template.Field="ДатаРейс"; Exit; fi;
 НомРейсСлед;
end;

Proc cbИсклВыгруж_OnChange(Sender: String);
 Очистить(0);
end;

Proc btnОчистить_onClick (Obj:S);
 if EnqOkCancel("Список будет очищен, продолжить ?",mtWarning)=cmCancel: Exit; fi;
 Очистить(0);
end;

Proc btnЗагрузить_onClick(Sender: String);
 if Учр=nil or УчрНаим="": Message("Выберите собственные реквизиты",mtError); Template.Field="УчрНаим"; Exit; fi;
 ЗагрузитьДок(0,ПолучитьФильтр(0,nil));
 Проверить(0);
end;

Proc btnПроверить_onClick (Obj:S);
 Проверить(0);
end;

Proc btnНаОшибку_OnClick(Sender: String);
 if SumOfArray(Err)=0 then 
    if SumOfArray(Wrng)=0 then Message('Ошибок не обнаружено'); Exit; fi;
    НаОшибку(False);
   else
    НаОшибку(True);
 fi;
end;

--Обработчики событий объектов шаблона-----
--
--Обработчики событий шаблона -----
Proc Template_onOpen(Create:L);
var Rec: Record;
var isXML:L;
 ДатаРейс=ToDay;
 НомРейсСлед;
 if XXXXX="" or Учр=nil:
    Rec=Раб.Бюджет2005.НашРекв;
    ЗаполнитьЗаказчика(Rec);
 fi;
 if Раб.XML.Installed(true):
    Раб.ВыгрузкиXML.Fmt_Инит("TS",FmtCFG_,FmtXSLT_);
    ClearVariable(FmtCfg );
    ClearVariable(FmtXSLT);
    ClearVariable(FmtName);
    CopyArray(Раб.ВыгрузкиXML.FmtCfg ,FmtCfg );
    CopyArray(Раб.ВыгрузкиXML.FmtXSLT,FmtXSLT);
    CopyArray(Раб.ВыгрузкиXML.FmtName,FmtName);
 fi;
 if FmtN = -1:
   FmtN = LengthOfArray(FmtCfg);
 fi;
end;

Proc Template_onClose(Destroy:L);
-- Очистить;
end;
--Обработчики событий шаблона -----
--




Конец
