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

var Упр:I;

cbОтдРейс:Object;

Путь:String;

FlagЛВС  :L;
FlagПравила:L=[True];
flagОтдРейс:L;
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(FlagЛВС, Раб.Бюджет2005.Format36(1007+НомРейс_), Раб.Бюджет2005.Format36(НомРейс_));
ИмяРейс_:S;
var ИмяРейс:S=if(FlagПравила,XXXXX+DD+НомРейс+".AP"+M,ИмяРейс_);

Секрет:I;
Вид:I;
var ДН:D=[ToDay];
var ДК:D=[ToDay];
Рекв:Record;
Банк:Record;
FlagВБанк:L;
Отправ:S;
ОтправБанк:S;

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

var пп[]:i=$;
var НомРР[]:S;
var ДатаРР[]:D;
var ПолучРР[]:S;
var Msg[]:S;
var Wrng[]:I;
var Err[]:I;
var WrngT[]:S;
var ErrT[]:S;
var UKey[]:S;
var FNam[]:S;
var CRC[]:I;
var Msg_:S="";

var accept:String;

Folder:S;

var SelfCrd:S="РПО_РР_ИСХ";

var Buf[]:S;

var ВерхРегистр:L;
var ПравилоКуда:I=[2];
--
--Процедуры и функции -------------
Proc Инициализация;
var i:i;
 accept='';
 for i=32..123 do
  accept=accept+chr(i);
 od;
 accept=accept+chr(125);
 accept=accept+chr(126);
 for i=192..255 do
  accept=accept+chr(i); 
 od;
 accept=accept+chr(185);
 accept=accept+chr(184);
 accept=accept+chr(168);
end;

Proc AddMsg(warn:string;Iter:I;Crit:L);
 if Err[Iter]=0 then ErrT[Iter]=''; else if crit: ErrT[Iter]=ErrT[Iter]+Chr(13); fi; fi;
 if Wrng[Iter]=0 then WrngT[Iter]=''; else if not crit: WrngT[Iter]=WrngT[Iter]+Chr(13); fi; fi;
 if Crit :
    ErrT[Iter]=ErrT[Iter]+warn;
    Err[Iter]=Err[Iter]+1;
   else
    WrngT[Iter]=WrngT[Iter]+warn;
    Wrng[Iter]=Wrng[Iter]+1;
 fi;
 Msg[Iter]=if(Err[Iter]>0,"Ошибка! "+ErrT[Iter]+chr(13),'')+if(Wrng[Iter]>0,"Предупреждение! "+WrngT[Iter],'');
end;

Proc ЗначНастр;
var OWA,OA,nr,n2,nr2:I;
var ID:S;
 OWA=OpenWorkArea("РПО_СТАТУС","","ID='"+SelfCrd+"'");
 Try
  nr=Records(OWA);
  if not nr=0:
     OA=OpenArray(OWA,1,"Позиции","");
     nr2=Records(OA);
     for n2=1..nr2 do
      ID=GetFieldS(OA,n2,"ID");
      if ID="ВерхРегистр": ВерхРегистр=GetFieldL(OA,n2,"VAL_L");
        |ID="ПравилоКуда": ПравилоКуда=GetFieldI(OA,n2,"VAL_I");
      fi;
     od;
  fi;
 Finally
  CloseWorkArea(OWA);
 end;
end;

func fixN(Mystring:S):string;
var tmp:S;
 tmp=Trim(Mystring);
 ^if(ВерхРегистр,Up(tmp),tmp);
end;

proc НаОшибку;
var i:I;
 for  i= 1 to Упр do
   if Err[i]>0: Template.Field='Msg'; Template.Frame=i; Exit; fi;
 od;
end;

proc НаПредупр;
var i:I;
 for  i= 1 to Упр do
   if Wrng[i]>0: Template.Field='Msg'; Template.Frame=i; Exit; fi;
 od;
end;

func ПроверкаНаСтандарт (Must:I; Len:I; MyField:String;FieldName: String; Iter:I):S;
var Res:S;
var i:integer;
--Must -1 - не важно
--      0 - предупреждать
--      1 - ошибка
Res='';
if MyField="" then
   if Must=0: AddMsg('Поле "'+FieldName+'" не заполнено.',Iter,False); ^'';
     |Must=1: AddMsg('Обязательное поле "'+FieldName+'" не заполнено.',Iter,True); ^'';
   fi;
fi;
for i= 1..Length(MyField) do
  if not(Pos(SubStr(MyField,i,1),accept)>0):
    if res='':Res='Поле "'+FieldName;
      else res=res+';';
    fi;
  res=res+'" содержит недопустимый символ('+SubStr(MyField,i,1)+') на позиции ' +Str(i);
  fi;
end;
if Length(MyField)>Abs(Len) then AddMsg('Поле "'+FieldName+'" превышает максимальную длину(' + Str(Abs(Len))+')',Iter,True);
  |Len>0 and Length(MyField)<Len and Length(MyField)>0 then AddMsg('Поле "'+FieldName+'" меньше обязательной длины(' + Str(Len)+')',Iter,True);
fi;
if res<>'' then res=res+'.'; fi;
^Res;
end;

Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(НомРР);
 ClearVariable(ДатаРР);
 ClearVariable(ПолучРР);
 ClearVariable(Msg);
 ClearVariable(Wrng);
 ClearVariable(Err);
 ClearVariable(UKey);
 ClearVariable(CRC);
--if Упр<1: InsertFrame(Упр,1); fi;
end;

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

Func Проверить(Iter:I; Full:L):L;
var OWA,RO,OA,n,n2,nr2,z1,z2:i;
var tmp:S;
 if Iter=0: 
    УдалитьПустыеСтроки; 
    if Ukey[1]="": Message("Заполните список выгружаемых расходных расписаний",mtError);
     if Упр<1: InsertFrame(Упр,1); fi;
    ^False; fi;
 fi;
 if Full:
    if ДатаРейс=1.1.100: Message("Введите дату формирования документов (рейса)",mtError); Template.Field="ДатаРейс"; ^False; fi;
    if НомРейс_=0: Message("Введите порядковый номер рейса",mtError);  Template.Field="НомРейс_"; ^False; fi;
    if FlagЛВС:
       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 FlagПравила:
       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;
 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;
 OWA=OpenWorkArea(SelfCrd,"","1=0");
 if z2-z1>0: ShowProgress(z2-z1,"Проверка...."); fi;
 Try
  for n=z1..z2 do
   ProgressPos(n);
   SetFilter(OWA,"UKey="+UKey[n]);
   if Records(OWA)>0:
      if SearchInArray(Ukey,Ukey[n],False,n+1)>0 then AddMsg("Строка дублирует строку№"+Str(SearchInArray(Ukey,Ukey[n],False,n+1)),n,True); fi;
      if GetFieldL(OWA,1,"Учитывать")=False: AddMsg("Флаг 'Учитывать' в расходном расписании не установлен",n,True);   fi;
      if GetFieldR(OWA,1,"РБС")=nil: AddMsg("Не указан распорядитель",n,True);  fi;
      if GetFieldR(OWA,1,"РБС_БАНК")=nil: AddMsg("Не указан ОФК распорядителя ",n,True);  fi;
      if GetFieldR(OWA,1,"ПБС")=nil: AddMsg("Не указан получатель",n,True);  fi;
      if GetFieldR(OWA,1,"ПБС_БАНК")=nil: AddMsg("Не указан ОФК получателя",n,True);  fi;
      tmp=ПроверкаНаСтандарт (1,5,GetFieldS(OWA,1,"РБС.РПО_КБП"),"Код распорядителя средств",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-255,Up(GetFieldS(OWA,1,"РБС.ПОЛНИМЯ")),"Полное наименование распорядителя средств",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OWA,1,"РБС.РПО_ПОЛНИМЯ2")),"Полное наименование распорядителя средств",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-5,Up(НомРейс),"Номер рейса",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,4,GetFieldS(OWA,1,"РБС_БАНК.РПО_ОФК_КОД"),"Код ТОФК распорядителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-255,Up(GetFieldS(OWA,1,"РБС_БАНК.РПО_ОФК_ИМЯ")),"Наименование органа ФК распорядителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OWA,1,"РБС_БАНК.РПО_ОФК_ИМЯ2")),"Наименование органа ФК распорядителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,1,GetFieldS(OWA,1,"РБС_БАНК.РПО_КОДБЮДЖ"),"Уровень бюджета распорядителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,3,Up(GetFieldS(OWA,1,"ГЛАВА")),"Код главного распорядителя средств",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-255,Up(GetFieldS(OWA,1,"ГРБС")),"Полное наименование главного распорядителя средств",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,11,GetFieldS(OWA,1,"РБС_БАНК.РПО_ЛСЧЕТ"),"Номер лицевого счета распорядителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-255,GetFieldS(OWA,1,"РБС_БАНК.РПО_НАИМБЮДЖ"),"Наименование бюджета",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-255,Up(GetFieldS(OWA,1,"РБС_БАНК.РПО_ФО_НАИМ1")),"Наименование финансового органа распорядителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OWA,1,"РБС_БАНК.РПО_ФО_НАИМ2")),"Наименование финансового органа распорядителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-100,Up(GetFieldS(OWA,1,"ДолжнРук")),"Должность Руководителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-50,Up(GetFieldS(OWA,1,"ФИОРУК")),"ФИО Руководителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-100,Up(GetFieldS(OWA,1,"ДОЛЖНИСП")),"Должность отвественнго исполнителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-50,Up(GetFieldS(OWA,1,"ФИОИСП")),"ФИО отвественнго исполнителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-50,Up(GetFieldS(OWA,1,"ТелИсп")),"Телефон отвественнго исполнителя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-13,Up(GetFieldS(OWA,1,"НОМЕРДОК")),"Номер расходного расписания",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      if GetFieldD(OWA,1,"ДатаПодписи")=1.1.100: AddMsg("Не указана дата подписи расходного расписания руководителем",n,True);  fi;
      if GetFieldD(OWA,1,"ДатаПодписиИсп")=1.1.100: AddMsg("Не указана дата подписи расходного расписания исполнителем",n,True);  fi;
      if GetFieldD(OWA,1,"ДАТАДОК")=1.1.100: AddMsg("Не указана дата расходного расписания",n,True);  fi;
      if GetFieldD(OWA,1,"ДАТАВД1")<>1.1.100 or GetFieldD(OWA,1,"ДАТАВД2")<>1.1.100 or GetFieldD(OWA,1,"ДАТАВД3")<>1.1.100 then
         if GetFieldD(OWA,1,"ДАТАВД1")=1.1.100: AddMsg("Не указана дата введения в действие 1 раздела",n,True);  fi;
         if GetFieldD(OWA,1,"ДАТАВД2")=1.1.100: AddMsg("Не указана дата введения в действие 2 раздела",n,True);  fi;
         if GetFieldD(OWA,1,"ДАТАВД3")=1.1.100: AddMsg("Не указана дата введения в действие 3 раздела",n,True);  fi;
      fi;
      if GetFieldD(OWA,1,"ДАТАВД")=1.1.100 and GetFieldD(OWA,1,"ДАТАВД1")=1.1.100 and GetFieldD(OWA,1,"ДАТАВД2")=1.1.100 and GetFieldD(OWA,1,"ДАТАВД3")=1.1.100: AddMsg("Не указана дата введения в действие расходного расписания",n,True);  fi;
      if  GetFieldI(OWA,1,"СЕКРЕТ")>4 then AddMsg('Признак секретности заполнен некорректно',n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,5,Up(GetFieldS(OWA,1,"ПБС.РПО_КБП")),"Код получателя средств",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,-255,Up(GetFieldS(OWA,1,"ПБС.ПОЛНИМЯ")),"Полное наименование получателя средств",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OWA,1,"ПБС.РПО_ПОЛНИМЯ2")),"Полное наименование получателя средств",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (0,4,Up(GetFieldS(OWA,1,"ПБС_БАНК.РПО_ОФК_КОД")),"Код ТОФК получателя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (0,-255,Up(GetFieldS(OWA,1,"ПБС_БАНК.РПО_ОФК_ИМЯ")),"Наименование органа ФК получателя",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OWA,1,"СпецУказ")),"Специальные указания",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OWA,1,"СпецУказ2")),"Специальные указания",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OWA,1,"СпецУказ3")),"Специальные указания",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OWA,1,"СпецУказ4")),"Специальные указания",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-5,Up(GetFieldS(OWA,1,"КодСпецУказ")),"Код специального указания",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (1,2,(GetFieldS(OWA,1,"АССИГН_ТипКБК")),"Тип КБК",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      tmp=ПроверкаНаСтандарт (-1,-15,GetFieldS(OWA,1,"Иной_Ном_ЗаявКР"),"Номер заявки на кассовый расход",n);
      if tmp<>"" : AddMsg(tmp,n,True);   fi;
      if GetFieldS(OWA,1,"СпецУказ")="" and GetFieldS(OWA,1,"СпецУказ2")="" and GetFieldS(OWA,1,"СпецУказ3")="" and GetFieldS(OWA,1,"СпецУказ4")="" and not GetFieldS(OWA,1,"КодСпецУказ")="": AddMsg('Заполните специальные указания',n,True); fi;
      if not GetFieldS(OWA,1,"СпецУказ")="" and not GetFieldS(OWA,1,"СпецУказ2")="" and not GetFieldS(OWA,1,"СпецУказ3")="" and not GetFieldS(OWA,1,"СпецУказ4")="" and GetFieldS(OWA,1,"КодСпецУказ")="": AddMsg('Заполните код специального указания',n,True); fi;
      if  GetFieldI(OWA,1,"ПБС.РПО_ПРИЗНРЕОРГ")>3 then AddMsg('Признак реорганизацмм заполнен некорректно',n,True);   fi;
      OA=OpenArray(OWA,1,"АССИГН","");
      Nr2=Records(OA);
      for n2=1.. nr2 do
        tmp=GetFieldS(OA,n2,"БК")+GetFieldS(OA,n2,"КОСГУ");
        Раб.Бюджет2005.РежимМаски='?';
        --Проверка КБК!!!
        tmp=ПроверкаНаСтандарт (-1,-20,Up(GetFieldS(OA,1,"ДопКл")),"Код цели ассигнований(строка№"+Str(n2)+")",n);
        if tmp<>"" : AddMsg(tmp,n,True);   fi;
        tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OA,1,"Примеч")),"Примечание к строке ассигнований(строка№"+Str(n2)+")",n);
        if tmp<>"" : AddMsg(tmp,n,True);   fi;
      od;
      CloseWorkArea(OA);
      OA=OpenArray(OWA,1,"ЛБО","");
      Nr2=Records(OA);
      for n2=1.. nr2 do
        tmp=GetFieldS(OA,n2,"БК")+GetFieldS(OA,n2,"КОСГУ");
        Раб.Бюджет2005.РежимМаски='?';
        --Проверка КБК!!!
        tmp=ПроверкаНаСтандарт (-1,-20,Up(GetFieldS(OA,1,"ДопКл")),"Код цели лимитов БО(строка№"+Str(n2)+")",n);
        if tmp<>"" : AddMsg(tmp,n,True);   fi;
        tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OA,1,"Примеч")),"Примечание к строке лимитов БО(строка№"+Str(n2)+")",n);
        if tmp<>"" : AddMsg(tmp,n,True);   fi;
      od;
      CloseWorkArea(OA);
      OA=OpenArray(OWA,1,"ПОФ","");
      Nr2=Records(OA);
      for n2=1.. nr2 do
        tmp=GetFieldS(OA,n2,"БК")+GetFieldS(OA,n2,"КОСГУ");
        Раб.Бюджет2005.РежимМаски='?';
        --Проверка КБК!!!
        tmp=ПроверкаНаСтандарт (-1,-20,Up(GetFieldS(OA,1,"ДопКл")),"Код цели объемов финансирования(строка№"+Str(n2)+")",n);
        if tmp<>"" : AddMsg(tmp,n,True);   fi;
        tmp=ПроверкаНаСтандарт (-1,-255,Up(GetFieldS(OA,1,"Примеч")),"Примечание к строке объемов финансирования(строка№"+Str(n2)+")",n);
        if tmp<>"" : AddMsg(tmp,n,True);   fi;
      od;
      CloseWorkArea(OA);
       -- Проверка на реорганизацию
      RO=OpenWorkArea("КОНТРАГЕНТ", "", "Ukey="+RecordToString(GetFieldR(OWA,1,"ПБС")));
      Try
       if Records(RO)=1:
         if GetFieldL(OWA,1,"РЕОРГ"):
           tmp=ПроверкаНаСтандарт (-1,5,GetFieldS(RO,1,"РПО_РБС_КОД_РЕОРГ"),"Код распорядителя средств в ведении которого находиться получатель, участвующий в реорганизации",n);
           if tmp<>"" : AddMsg(tmp,n,True);   fi;
           tmp=ПроверкаНаСтандарт (-1,-255,GetFieldS(RO,1,"РПО_РБС_ИМЯ_РЕОРГ1"),"Полное наименование распорядителя в непосредственном ведении которого находиться получатель по реорганизации",n);
           if tmp<>"" : AddMsg(tmp,n,True);   fi;
           tmp=ПроверкаНаСтандарт (-1,-255,GetFieldS(RO,1,"РПО_РБС_ИМЯ_РЕОРГ2"),"Полное наименование распорядителя в непосредственном ведении которого находиться получатель по реорганизации",n);
           if tmp<>"" : AddMsg(tmp,n,True);   fi;
           tmp=ПроверкаНаСтандарт (1,5,GetFieldS(RO,1,"РПО_ПБС_КОД_РЕОРГ"),"Код получателя средств по реорганизации",n);
           if tmp<>"" : AddMsg(tmp,n,True);   fi;
           tmp=ПроверкаНаСтандарт (1,-255,GetFieldS(RO,1,"РПО_ПБС_ИМЯ_РЕОРГ1"),"Полное наименование получателя средств по реорганизации",n);
           if tmp<>"" : AddMsg(tmp,n,True);   fi;
           tmp=ПроверкаНаСтандарт (-1,-255,GetFieldS(RO,1,"РПО_ПБС_ИМЯ_РЕОРГ2"),"Полное наименование получателя средств по реорганизации",n);
           if tmp<>"" : AddMsg(tmp,n,True);   fi;
           tmp=ПроверкаНаСтандарт (-1,4,GetFieldS(RO,1,"РПО_ТОФК_КОД_РБС"),"Код ТОФК, в котором обслуживается распорядитель",n);
           if tmp<>"" : AddMsg(tmp,n,True);   fi;
           tmp=ПроверкаНаСтандарт (-1,-13,GetFieldS(OWA,1,"Реорг_Ном_РР_Отриц"),"Номер 'отрицательного расходного расписания' ",n);
           if tmp<>"" : AddMsg(tmp,n,True);   fi;
         fi;
       fi;
      Finally
        CloseWorkArea(RO);
      end;
      if GetFieldI(OWA,1,"НомРейс")<>0 and GetFieldD(OWA,1,"ДатаРейс")<>1.1.100: 
        Msg[n]=Msg[n]+if(Msg[n]='','',Chr(13))+ "Расходное расписание уже выгружалось рейсом №"+Str(GetFieldI(OWA,1,"НомРейс"))+" от "+DateToString(GetFieldD(OWA,1,"ДатаРейс"));
      fi;
     else
      AddMsg("Расходное расписание не найдено",n,True);
   fi;
   if Msg[n]='': Msg[n]="Проверка пройдена"; fi;
  od;

 Finally
  CloseWorkArea(OWA);
  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 FlagЛВС:
        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:I;
 OWA=OpenWorkArea(SelfCrd,"","НомРейс="+Str(НР)+" and ДатаРейс>="+DateToString(ДР)+" and ДатаРейс<="+DateToString(ДР));
 Try
  if Records(OWA)=0: ^False; else ^True; fi;
 Finally
  CloseWorkArea(OWA);
 end;
end;

Proc ЗагрузитьРейс (ДР:D; НР:I);
var OWA,n,nr:I;
var Rec :Record;
 Очистить;
 OWA=OpenWorkArea(SelfCrd,"","НомРейс="+Str(НР)+" and ДатаРейс>="+DateToString(ДР)+" and ДатаРейс<="+DateToString(ДР));
 FlagВБанк=False;
 Try
  Nr=Records(OWA);
  for n=1..Nr do
   InsertFrame(Упр,Упр+1);
   НомРР[Упр]=GetFieldS(OWA,n,"НОМЕРДОК");
   ДатаРР[Упр]=GetFieldD(OWA,n,"ДАТАДОК");
   Rec=GetFieldR(OWA,n,"ПБС");
   if Rec<>nil: ПолучРР[Упр]=GetCardFieldS("КОНТРАГЕНТ",Rec,"ПОЛНИМЯ"); fi;
   UKey[Упр]=RecordToString(GetRecordKey(OWA,n));
  od;
 Finally
  CloseWorkArea(OWA);
 end;
 Проверить(0,False);
end;


Func StrToInt(vStr:S):I;
var ch,tmp:s;
var l,ll:i;
 tmp="";
 ll=Length(vStr);
 for l=1..ll do
  ch=SubStr(vStr,l,1);
  if ch>="0" and ch<="9": tmp=tmp+ch; fi;
 od;
 ^Int(tmp);
end;


Func РазмерФайла(aFname:S):I;
var FDir,tmp:S;
var F,n:I;
 if Раб.Python.Load(False):
    Раб.Python.Exec("from os.path import getsize");
    ^Раб.Python.EvalI("getsize(r'"+aFname+"')");
 else
    FDir=PlanVar("CACHE")+"\"+GetGUID;
    ExecuteProgram('cmd /q /c dir "'+aFname+'" >"'+FDir+'"',True);
    if not ExistFile(FDir): ^0; fi;
    F=TextFileOpenRead(FDir,True);
    Try
     n=0;
     While not TextFileEndOfFile(F) do
      tmp=TextFileReadLn(F);
      n=n+1;
      if n=6: Break; fi;
     od;
    Finally
     TextFileClose(F);
    end;
    DeleteFile(FDir);
    if not n=6: ^0; fi;
    tmp=Trim(SubStr(tmp,18,18));
    F=StrToInt(tmp);
   ^F;
 fi;

end;

var BufСум1[]:N;
var BufСум2[]:N;
var BufСум3[]:N;
var Buf[]:S;
var BufКБК[]:S;
var BufДопКл[]:S;
var BufПримеч[]:S;


Func РасчетРаздела (aHandle:S;OWA:I):I;
var nn,z,OA:I;
var КБК,ДопКл,Примеч:S;
var Сум1,Сум2,Сум3:N;
 ClearVariable(Buf);
 ClearVariable(BufКБК);
 ClearVariable(BufДопКл);
 ClearVariable(BufСум1);
 ClearVariable(BufСум2);
 ClearVariable(BufСум3);
 ClearVariable(BufПримеч);
 OA=OpenArray(OWA,1,aHandle,"");
 try
  for nn=1..Records(OA) do
   КБК=GetFieldS(OA,nn,"БК")+GetFieldS(OA,nn,"КОСГУ");
   КБК=Раб.Формат.ReplaceSubstr(КБК,".","");
   ДопКл=GetFieldS(OA,nn,"ДопКл");
   Сум1=GetFieldN(OA,nn,"СУМ1");
   if not aHandle="ПОФ":
      Сум2=GetFieldN(OA,nn,"СУМ2");
      Сум3=GetFieldN(OA,nn,"СУМ3");
   fi;
   Примеч=GetFieldS(OA,nn,"Примеч");
   z=SearchInArray(Buf,КБК+"#"+ДопКл,True);
   if z=-1:
      z=InsertInArraySort(Buf,КБК+"#"+ДопКл);
      InsertInArray(BufКБК,z,КБК);
      InsertInArray(BufДопКл,z,ДопКл);
      InsertInArray(BufСум1,z,Сум1);
      InsertInArray(BufСум2,z,Сум2);
      InsertInArray(BufСум3,z,Сум3);
      InsertInArray(BufПримеч,z,Примеч);
     else
      BufСум1[z]=BufСум1[z]+Сум1;
      BufСум2[z]=BufСум2[z]+Сум2;
      BufСум3[z]=BufСум3[z]+Сум3;
      BufПримеч[z]=BufПримеч[z]+Примеч;
   fi;
  od;
 finally
  CloseWorkArea(OA);
 end;
 ^LengthOfArray(Buf);
end;

Proc ВыгрузитьРейс;
var OWAРР,F,n,У1,i1,n1,n2,nn,nr:I;
var Buf:S;
var FlagCreate:L;
 ЗначНастр;
 if flagОтдРейс then У1=Упр; else У1=1; fi;
 for i1=1..У1 do
  if flagОтдРейс then ShowProgress(Упр,"Формирование рейса...."); fi;
  Try
   if i1>1 then НомРейс_=НомРейс_+1; fi;
   FlagCreate=False;
   F=TextFileCreate(Folder+ИмяРейс);
   FlagCreate=True;
   TextFileWriteLn(F,"FK|TXAP140101|Турбо Бухгалтер 6.9 Бюджет-157н|"+SubStr(Str(Версия.Сборка0)+if(Версия.Сборка1<>0,"."+Str(Версия.Сборка1),"")+Версия.Сборка2,1,10)+"||");
   OWAРР=OpenWorkArea(SelfCrd,"","1=0");
   Try
    if not flagОтдРейс then ShowProgress(Упр,"Формирование рейса...."); fi;
    if flagОтдРейс then
       n1=i1; n2=i1;
      else
       n1=1; n2=Упр; 
    fi;
    for n=n1..n2 do
     ProgressPos(n);
     SetFilter(OWAРР,"UKey="+UKey[n]);
     if n=1 or flagОтдРейс:
        --Почтовая информация от отправителе файла
        TextFileAppendLn(F,"FROM|");
        --Код ТОФК
        TextFileAppendLn(F,"|");
        --Наименование органа ФК- отправителя
        TextFileAppendLn(F,"|");
        --Уровень бюджета
        Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_КОДБЮДЖ");
        Buf=SubStr(Buf,1,4);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код рапорядителя средств
        Buf=GetFieldS(OWAРР,1,"РБС.РПО_КБП");
        Buf=SubStr(Buf,1,5);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Полное наименование распорядителя средств
        Buf=GetFieldS(OWAРР,1,"РБС.ПОЛНИМЯ");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWAРР,1,"РБС.РПО_ПОЛНИМЯ2");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        TextFileWriteLn(F,"|");
        --Почтовая информация о получателе файла
        TextFileAppendLn(F,"TO|");
        --Код ТОФК
        Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ОФК_КОД");
        Buf=SubStr(Buf,1,4);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Наименование органа ФК- получателя
        Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ОФК_ИМЯ");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ОФК_ИМЯ2");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Уровень бюджета
        TextFileAppendLn(F,"|");
        --Код рапорядителя средств
        TextFileAppendLn(F,"|");
        --Полное наименование распорядителя средств
        TextFileWriteLn(F,"|");
     fi;
     TextFileAppendLn(F,"AP|");
     --Глобальный уникальный идентификатор
     TextFileAppendLn(F,"|");
     --N реестра расходных расписаний
     TextFileAppendLn(F,"|");
     --Дата реестра расходных расписаний
     TextFileAppendLn(F,"|");
     --Код рапорядителя средств
     ---!!!
     if GetFieldN(OWAРР,1,"СОЗДАН")<>1 and GetFieldS(OWAРР,1,"РБС_БАНК.РПО_КОДБЮДЖ")<>"2" and GetFieldS(OWAРР,1,"РБС_БАНК.РПО_КОДБЮДЖ")<>"3" then
        Buf=GetFieldS(OWAРР,1,"РБС.РПО_КБП");
        Buf=SubStr(Buf,1,5);
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Полное наименование распорядителя средств
     if GetFieldN(OWAРР,1,"СОЗДАН")<>1 then
        Buf=GetFieldS(OWAРР,1,"РБС.ПОЛНИМЯ");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWAРР,1,"РБС.РПО_ПОЛНИМЯ2");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Код главного распорядителя средств
     Buf=GetFieldS(OWAРР,1,"Глава");
     Buf=fixN(SubStr(Buf,1,3));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Полное наименование главного распорядителя средств
     Buf=GetFieldS(OWAРР,1,"ГРБС");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Номер лицевого счета
     if not GetFieldN(OWAРР,1,"СОЗДАН")=3 and not GetFieldL(OWAРР,1,"ДОПФИН") then
        Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ЛСЧЕТ");
        Buf=fixN(SubStr(Buf,1,11));
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Код ТОФК
     if not GetFieldN(OWAРР,1,"СОЗДАН")=3 and not GetFieldL(OWAРР,1,"ДОПФИН") then
        Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ОФК_КОД");
        Buf=fixN(SubStr(Buf,1,4));
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Наименование органа ФК
     if GetFieldN(OWAРР,1,"СОЗДАН")<>3 and not GetFieldL(OWAРР,1,"ДОПФИН") then
        Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ОФК_ИМЯ");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ОФК_ИМЯ2");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Наименование бюджета
     Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_НАИМБЮДЖ");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Наименование финансового органа
     Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ФО_НАИМ1");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     Buf=GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ФО_НАИМ2");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Должность Руководителя
     Buf=GetFieldS(OWAРР,1,"ДолжнРук");
     Buf=fixN(SubStr(Buf,1,100));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --ФИО Руководителя
     Buf=GetFieldS(OWAРР,1,"ФИОРУК");
     Buf=fixN(SubStr(Buf,1,50));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Должность отвественнго исполнителя
     Buf=GetFieldS(OWAРР,1,"ДОЛЖНИСП");
     Buf=fixN(SubStr(Buf,1,100));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Должность отвественнго исполнителя
     Buf=GetFieldS(OWAРР,1,"ФИОИСП");
     Buf=fixN(SubStr(Buf,1,50));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Телефон отвественнго исполнителя
     Buf=GetFieldS(OWAРР,1,"ТелИсп");
     Buf=fixN(SubStr(Buf,1,50));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Дата подписи расходного расписания
     Buf=DateToString(GetFieldD(OWAРР,1,"ДатаПодписи"));
     Buf=fixN(Buf);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Дата учета расходного расписания в бюджтеном учете ФК отправителя
     TextFileAppendLn(F,"|");
     --Дата введения в действие реестра расходных расписаний
     TextFileAppendLn(F,"|");
     --Дата подписания расходного расписания ответственным исполнителем
     Buf=DateToString(GetFieldD(OWAРР,1,"ДатаПодписиИсп"));
     Buf=fixN(Buf);
     TextFileAppendLn(F,Buf);
     TextFileWriteLn(F,"|");
     --Информация о получателе средств
     TextFileAppendLn(F,"APRC|");
     --Глобальный уникальный идентификатор
     TextFileAppendLn(F,"|");
     --Номер расходного расписания
     Buf=GetFieldS(OWAРР,1,"НОМЕРДОК");
     Buf=fixN(SubStr(Buf,1,13));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Дата расходного расписания
     Buf=DateToString(GetFieldD(OWAРР,1,"ДАТАДОК"));
     Buf=fixN(Buf);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Дата введения в действие расходного расписания
     Buf=DateToString(GetFieldD(OWAРР,1,"ДАТАВД"));
     Buf=fixN(Buf);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Вид расходного расписания  (0 - не секретно;1 -ДСП;2 - секретно;3 -совершенно секретно;4 - особой важности)
     Buf=Str(GetFieldI(OWAРР,1,"СЕКРЕТ"));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Код получателя средств
     if GetFieldS(OWAРР,1,"РБС_БАНК.РПО_КОДБЮДЖ")<>"2" and GetFieldS(OWAРР,1,"РБС_БАНК.РПО_КОДБЮДЖ")<>"3" then
        Buf=GetFieldS(OWAРР,1,"ПБС.РПО_КБП");
        Buf=SubStr(Buf,1,5);
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Полное наименование получателя средств
     Buf=GetFieldS(OWAРР,1,"ПБС.ПОЛНИМЯ");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     Buf=GetFieldS(OWAРР,1,"ПБС.РПО_ПОЛНИМЯ2");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Номер лицевого счета
     Buf=GetFieldS(OWAРР,1,"ПБС_БАНК.РПО_ЛСЧЕТ");
     Buf=fixN(SubStr(Buf,1,11));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Код ТОФК
     if ПравилоКуда=0 or SubStr(GetFieldS(OWAРР,1,"ПБС_БАНК.РПО_ОФК_КОД"),1,ПравилоКуда)<>SubStr(GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ОФК_КОД"),1,ПравилоКуда) or GetFieldL(OWAРР,1,"ДОПФИН") or GetFieldN(OWAРР,1,"СОЗДАН")=3 then
        Buf=GetFieldS(OWAРР,1,"ПБС_БАНК.РПО_ОФК_КОД");
        Buf=SubStr(Buf,1,4);
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Наименование органа ФК
     if ПравилоКуда=0 or SubStr(GetFieldS(OWAРР,1,"ПБС_БАНК.РПО_ОФК_КОД"),1,ПравилоКуда)<>SubStr(GetFieldS(OWAРР,1,"РБС_БАНК.РПО_ОФК_КОД"),1,ПравилоКуда) or GetFieldL(OWAРР,1,"ДОПФИН") or GetFieldN(OWAРР,1,"СОЗДАН")=3 then
        Buf=GetFieldS(OWAРР,1,"ПБС_БАНК.РПО_ОФК_ИМЯ");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWAРР,1,"ПБС_БАНК.РПО_ОФК_ИМЯ2");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Специальные указания
     Buf=GetFieldS(OWAРР,1,"СпецУказ");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     Buf=GetFieldS(OWAРР,1,"СпецУказ2");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     Buf=GetFieldS(OWAРР,1,"СпецУказ3");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     Buf=GetFieldS(OWAРР,1,"СпецУказ4");
     Buf=fixN(SubStr(Buf,1,255));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Код Специального указания
     Buf=GetFieldS(OWAРР,1,"КодСпецУказ");
     Buf=fixN(SubStr(Buf,1,5));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Тип БК
     Buf=GetFieldS(OWAРР,1,"АССИГН_ТипКБК");
     Buf=fixN(SubStr(Buf,1,2));
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Итого изменений БА на текущий финансовый год
     Buf=Str(GetFieldN(OWAРР,1,"АССИГН_ИТОГ_СУМ1"),2);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Итого изменений БА на 1-й год планового периода
     Buf=Str(GetFieldN(OWAРР,1,"АССИГН_ИТОГ_СУМ2"),2);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Итого изменений БА на 2-й год планового периода
     Buf=Str(GetFieldN(OWAРР,1,"АССИГН_ИТОГ_СУМ3"),2);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Итого изменений ЛБО на текущий финансовый год
     Buf=Str(GetFieldN(OWAРР,1,"ЛБО_ИТОГ_СУМ1"),2);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Итого изменений ЛБО на 1-й год планового периода
     Buf=Str(GetFieldN(OWAРР,1,"ЛБО_ИТОГ_СУМ2"),2);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Итого изменений ЛБО на 2-й год планового периода
     Buf=Str(GetFieldN(OWAРР,1,"ЛБО_ИТОГ_СУМ3"),2);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Итого изменений предельных объемов финансирования на текущий финансовый год
     Buf=Str(GetFieldN(OWAРР,1,"ПОФ_ИТОГ_СУМ1"),2);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Номер заявки на кассовый расход
     if GetFieldN(OWAРР,1,"СОЗДАН")<>3 and GetFieldL(OWAРР,1,"Иной") then
        Buf=GetFieldS(OWAРР,1,"Иной_Ном_ЗаявКР");
        Buf=fixN(SubStr(Buf,1,15));
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Дата заявки на кассовый расход
     if GetFieldN(OWAРР,1,"СОЗДАН")<>3 and GetFieldL(OWAРР,1,"Иной") then
        Buf=DateToString(GetFieldD(OWAРР,1,"ИНОЙ_ДАТ_ЗАЯВКР"));
        Buf=fixN(Buf);
        TextFileAppendLn(F,Buf);
     fi;
     TextFileAppendLn(F,"|");
     --Дата введения в действие раздела БА расходного расписания
     Buf=DateToString(GetFieldD(OWAРР,1,"ДАТАВД1"));
     Buf=fixN(Buf);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Дата введения в действие раздела ЛБО расходного расписания
     Buf=DateToString(GetFieldD(OWAРР,1,"ДАТАВД2"));
     Buf=fixN(Buf);
     TextFileAppendLn(F,Buf);
     TextFileAppendLn(F,"|");
     --Дата введения в действие раздела ПОФ расходного расписания
     Buf=DateToString(GetFieldD(OWAРР,1,"ДАТАВД3"));
     Buf=fixN(Buf);
     TextFileAppendLn(F,Buf);
     TextFileWriteLn(F,"|");
     nr=РасчетРаздела("АССИГН",OWAРР);
     for nn=1..nr do
      --Раздел 1. Бюджетные ассигнования
      TextFileAppendLn(F,"APBASTR|");
      --Код по БК
      Buf=BufКБК[nn];
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Код цели
      Buf=BufДопКл[nn];
      Buf=fixN(SubStr(Buf,1,20));
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --изменений БА на текущий финансовый год
      Buf=Str(BufСум1[nn],2);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --изменений БА на 1-й год планового периода
      Buf=Str(BufСум2[nn],2);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --изменений БА на 2-й год планового периода
      Buf=Str(BufСум3[nn],2);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Примечание
      Buf=BufПримеч[nn];
      Buf=fixN(SubStr(Buf,1,254));
      TextFileAppendLn(F,Buf);
      TextFileWriteLn(F,"|");
     od;
     nr=РасчетРаздела("ЛБО",OWAРР);
     for nn=1..nr do
      --Раздел 2. Лимиты бюдетных обязательств
      TextFileAppendLn(F,"APLBOSTR|");
      --Код по БК
      Buf=BufКБК[nn];
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Код цели
      Buf=BufДопКл[nn];
      Buf=fixN(SubStr(Buf,1,20));
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --изменений ЛБО на текущий финансовый год
      Buf=Str(BufСум1[nn],2);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --изменений ЛБО на 1-й год планового периода
      Buf=Str(BufСум2[nn],2);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --изменений ЛБО на 2-й год планового периода
      Buf=Str(BufСум3[nn],2);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Примечание
      Buf=BufПримеч[nn];
      Buf=fixN(SubStr(Buf,1,254));
      TextFileAppendLn(F,Buf);
      TextFileWriteLn(F,"|");
     od;
     nr=РасчетРаздела("ПОФ",OWAРР);
     for nn=1..nr do
      --Раздел 3. Предельные объемы финансирования
      TextFileAppendLn(F,"APPOFSTR|");
      --Код по БК
      Buf=BufКБК[nn];
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Код цели
      Buf=BufДопКл[nn];
      Buf=fixN(SubStr(Buf,1,20));
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --изменений ПФО на текущий финансовый год
      Buf=Str(BufСум1[nn],2);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Примечание
      Buf=BufПримеч[nn];
      Buf=fixN(SubStr(Buf,1,254));
      TextFileAppendLn(F,Buf);
      TextFileWriteLn(F,"|");
     od;
     if GetFieldL(OWAРР,1,"РЕОРГ"):
        -- Внутриведомственная реорганизация
        TextFileAppendLn(F,"APREORG|");
        --Код распорядителя средств в ведении которого находиться получатель, участвующий в реорганизации
        Buf=GetFieldS(OWAРР,1,"ПБС.РПО_РБС_КОД_РЕОРГ");
        Buf=SubStr(Buf,1,5);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Полное наименование распорядителя в непосредственном ведении которого находиться получатель по реорганизации
        Buf=GetFieldS(OWAРР,1,"ПБС.РПО_РБС_ИМЯ_РЕОРГ1");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWAРР,1,"ПБС.РПО_РБС_ИМЯ_РЕОРГ2");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код получателя средств по реорганизации
        Buf=GetFieldS(OWAРР,1,"ПБС.РПО_ПБС_КОД_РЕОРГ");
        Buf=SubStr(Buf,1,5);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Полное наименование получателя средств по реорганизации
        Buf=GetFieldS(OWAРР,1,"ПБС.РПО_ПБС_ИМЯ_РЕОРГ1");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWAРР,1,"ПБС.РПО_ПБС_ИМЯ_РЕОРГ2");
        Buf=fixN(SubStr(Buf,1,255));
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код ТОФК, в котором обслуживается распорядитель
        Buf=GetFieldS(OWAРР,1,"ПБС.РПО_ТОФК_КОД_РБС");
        Buf=SubStr(Buf,1,4);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Номер отрицательного расходного расписания
        Buf=GetFieldS(OWAРР,1,"РЕОРГ_НОМ_РР_ОТРИЦ");
        Buf=SubStr(Buf,1,13);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Дата отрицательного расходного расписания
        Buf=DateToString(GetFieldD(OWAРР,1,"РЕОРГ_ДАТ_РР_ОТРИЦ"));
        Buf=fixN(Buf);
        TextFileAppendLn(F,Buf);
        TextFileWriteLn(F,"|");
     fi; --if GetFieldL(OWAРР,1,"РЕОРГ"):
     Wrng[n]=0;
     Err[n]=0;
     FNam[n]=Folder+ИмяРейс;
     Msg[n]='Данные успешно выгружены в файл:'+FNam[n];
   od;
  Finally
   CloseWorkArea(OWAРР);
   CloseProgress;
  end;
  Except
   if FlagCreate=True: TextFileClose(F); Message("Ошибка записи в файл '"+Folder+ИмяРейс+"'"); Exit;
     else
      Message("Ошибка создания файла '"+Folder+ИмяРейс+"'"); Exit;
   fi;
  end;
  TextFileClose(F);
  OWAРР=OpenWorkArea(SelfCrd,"","1=0");
  Try
   BeginChanging(OWAРР,False);
   Try
    for n=n1..n2 do
     SetFilter(OWAРР,"UKey="+UKey[n]);
     if n=1 then
        nr=РазмерФайла(Fnam[n]);
       |Fnam[n]<>Fnam[n-1] then
        nr=РазмерФайла(Fnam[n]);
     fi;
     nn=PutFieldD(OWAРР,1,"ДатаРейс",ДатаРейс);
     nn=PutFieldI(OWAРР,1,"НомРейс",НомРейс_);
     nn=PutFieldS(OWAРР,1,"ИМЯРЕЙС",ИмяРейс);
     nn=PutFieldI(OWAРР,1,"РАЗМЕР",nr);
     nn=PutFieldL(OWAРР,1,"ВБанк",True);
    od;
    EndChanging(OWAРР);
   Except
    CancelChanging(OWAРР);
   end;
  Finally
   CloseWorkArea(OWAРР);
  end;
 od; --for i1=1..У1 do
 if not flagОтдРейс then Message("Рейс '"+Folder+ИмяРейс+"' успешно сформирован.");fi;
 if not flagОтдРейс: if (EnqOkCancel("Открыть рейс для просмотра ?")=cmOk): ExecuteProgram("NotePad "+Folder+ИмяРейс); fi; fi;
 НомРейс_=НомРейс_+1;
end;

Proc ЗаполнитьРекв (aРекв:Record);
 Рекв=aРекв;
 if Рекв=nil:
    Отправ="";
   else
    Отправ=GetCardFieldS("Контрагент",Рекв,"КорИмя");
 fi;
 Банк=nil;
 ОтправБанк="";
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;
 tmp=GetCardFieldS("Контрагент",Rec,"РПО_КБП");
 if not Length(tmp)=5: Message("Длина кода должна быть 5 символов",mtError); ^Cur; fi;
 XXXXX=tmp;
 if not Rec=Рекв: Очистить; fi;
 ЗаполнитьРекв(Rec);
 Return Cur;
end;

Func FlagВБанк_OnEnter(FieldName: String; Iter: Integer): logical;
 FlagВБанк=not(FlagВБанк);
 Очистить;
 Return False ;
end;

Proc cbПравила_OnChange(Sender: String);
 if not flagПравила:
    flagОтдРейс=False;
    cbОтдРейс.State=False;
 fi;
 cbОтдРейс.Enabled=flagПравила;
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 FlagЛВС:
    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;
 ЗагрузитьРейс(ДатаРейс,Value);

 ^True;
end;

Func НомРейс_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var OWA,nr,n,i,on:I;
 Template.HideEditor(False);
 ClearVariable(Buf);
 OWA=OpenWorkArea(SelfCrd,"НомРейс","not ДатаРейс=1.1.100 and ДатаРейс="+DateToString(ДатаРейс));
 Try
  on=0;i=0;
  nr=Records(OWA);
  for n=1..nr do
    if on<>GetFieldI(OWA,n,"НомРейс"):
      on=GetFieldI(OWA,n,"НомРейс") ;i=i+1;
      Buf[i]="Рейс №"+Str(GetFieldI(OWA,n,"НомРейс"))+" от "+GetFieldS(OWA,n,"ДатаРейс");
      fi;
  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(TrimRight(SubStr(Buf[n],7,2)));
 НомРейс_=n;
 ЗагрузитьРейс(ДатаРейс,n);
 Return Cur;
end;

Func ИмяРейс_onEnter(FieldName: String; Iter: Integer): logical;
 if FlagПравила:
    Message("Установлен флаг формирования имени рейса по правилам, ручной ввод имени не возможен!");
    ^False;
 fi;
 ^True;
end;

Func ИмяРейс_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
  ИмяРейс_=Value;
  Return True;
end;

Func Путь_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var path:String;
  Template.HideEditor(False);
  path=Путь;
  if ChooseFolder(path,"Путь выгрузки для рейса")= cmOk then  fi;
  Путь=path;
  Return Cur;
end;

Proc Д_OnExit(FieldName: String; Iter: Integer);
 Очистить;
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);
 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;
 Очистить;
 if Упр<1: InsertFrame(Упр,1); fi;
 Return False;
end;


Func Вид_onEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Все расходные расписания";
 Buf[2]="Только увеличение ЛБО";
 Buf[3]="Только отзыв ЛБО";
 n=Alternate("Режим показа",Buf,-1,Вид+1,12);
 if n=0: ^False; fi;
 Вид=n-1;
 Очистить;
 Return False;
end;

Proc Вид_OnExit(FieldName: String; Iter: Integer);
 Вид=0;
end;


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

Proc Отправ_OnExit(FieldName: String; Iter: Integer);
 ЗаполнитьРекв(nil);
 Очистить;
end;

Func ОтправБанк_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if Рекв=nil then 
    Рекв=OpenCardFile("Контрагент","Наше",Рекв,crdRecordOnly); 
    if Рекв=nil: ^False; fi;
    Отправ=GetCardFieldS("Контрагент",Рекв,"КорИмя"); 
 fi;
 Rec=OpenCardFile("Банк_счета","КОНТРАГЕНТ="+RecordToString(Рекв),Банк,crdRecordOnly);
 if Rec=nil: ^False; fi;
 Банк=Rec;
 ОтправБанк=GetCardFieldS("БАНК_СЧЕТА",Банк,"РПО_ЛСЧЕТ")+" ("+GetCardFieldS("БАНК_СЧЕТА",Банк,"РПО_ОФК_ИМЯ")+")";
 Очистить;
 ^False;   
end;

Proc ОтправБанк_OnExit(FieldName: String; Iter: Integer);
 Банк=nil;ОтправБанк='';
 Очистить;
end;

Proc Загрузить_OnClick(Row: Integer; Col: Integer; Double: Logical);
var OWA,n,nr:i;
var Rec:Record;
var F:S;
 if Рекв=nil: Message("Выберите учреждение-отправителя",mtError); Template.Field="Отправ"; Exit; fi;
 if Банк=nil: Message("Выберите лицевой счет",mtError); Template.Field="ОтправБанк"; Exit; fi;
 if ДК<ДН: Message("Начальная дата превышает конечную",mtError); Template.Field="ДН"; Exit; fi;
 F="Учитывать";
 if FlagВБанк: F=F+" and not ВБанк"; fi;
 if ДН>1.1.100 and ДК>1.1.100: F=F+" and ДАТАДОК>="+DateToString(ДН)+" and ДАТАДОК<="+DateToString(ДК);
   |ДН=1.1.100 and ДК>1.1.100: F=F+" and ДАТАДОК<="+DateToString(ДК);
   |ДН>1.1.100 and ДК=1.1.100: F=F+" and ДАТАДОК>="+DateToString(ДН);
 fi;
 if Рекв<>nil: F=F+" and РБС="+RecordToString(Рекв); fi;
 if Банк<>nil: F=F+" and РБС_Банк="+RecordToString(Банк); fi;
 F=F+" and Секрет="+Str(Секрет);
 if Вид=1: F=F+" and (Ассигн_Итог_Сум1>0 or Ассигн_Итог_Сум2>0 or Ассигн_Итог_Сум3>0 or ЛБО_Итог_Сум1>0 or ЛБО_Итог_Сум2>0 or ЛБО_Итог_Сум3>0)";-- or ПОФ_Итог_Сум1>0)";
   |Вид=2: F=F+" and (Ассигн_Итог_Сум1<0 or Ассигн_Итог_Сум2<0 or Ассигн_Итог_Сум3<0 or ЛБО_Итог_Сум1<0 or ЛБО_Итог_Сум2<0 or ЛБО_Итог_Сум3<0)";-- or ПОФ_Итог_Сум1<0)";
 fi;
 Очистить;
 OWA=OpenWorkArea(SelfCrd,"ДАТАДОК;НОМЕР",F);
 Try
  Nr=Records(OWA);
  ShowProgress(Nr,'Загрузка');
  for n=1..Nr do
   InsertFrame(Упр,Упр+1);
   ProgressPos(n);
   НомРР[Упр]=GetFieldS(OWA,n,"НОМЕРДОК");
   ДатаРР[Упр]=GetFieldD(OWA,n,"ДАТАДОК");
   UKey[Упр]=RecordToString(GetRecordKey(OWA,n));
   Rec=GetFieldR(OWA,n,"ПБС");
   if Rec<>nil: ПолучРР[Упр]=GetCardFieldS("КОНТРАГЕНТ",Rec,"ПОЛНИМЯ"); fi;
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 if Ukey[1]="": 
    Message("По условию загрузки расходных расписаний не найдено",mtWarning);
   else 
    Проверить(0,False);
 fi;
 if Упр<1: InsertFrame(Упр,1); fi;
 if not ДатаРейс=1.1.100: НомРейсСлед; fi;
end;

Proc Проверить_OnClick(Row: Integer; Col: Integer; Double: Logical);
var mt:I;
 УдалитьПустыеСтроки;
 if Ukey[1]="": 
    Message("Заполните список выгружаемых расходных расписаний",mtError);
    if Упр<1: InsertFrame(Упр,1); fi;
    Exit;
   else 
    Проверить(0,False);
 fi;
 if Упр<1: InsertFrame(Упр,1); fi;
 if not SumOfArray(Err,Упр)=0: mt=mtError;
   |not SumOfArray(Wrng,Упр)=0: mt=mtWarning;
   |True: mt=mtInformation;
 fi;
 Message("Проверка завершена"+Chr(13)+"Ошибок: "+Str(SumOfArray(Err,Упр))+Chr(13)+"Предупреждений: "+Str(SumOfArray(Wrng,Упр)),mt);
end;

Proc Очистить_OnClick(Row: Integer; Col: Integer; Double: Logical);
 if EnqOkCancel("Список будет очищен, продолжить ?",mtWarning)=cmCancel: Exit; fi;
 Очистить;
end;

Proc Перейтинаошибку_OnClick(Row: Integer; Col: Integer; Double: Logical);
 if SumOfArray(Err)=0 then 
   If SumOfArray(Wrng)=0 then Message('Ошибок не обнаружено'); Exit; fi;
   НаПредупр;
 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);
 if Упр<1: InsertFrame(Упр,1); fi;
 ^false;
end;

Func РР_onEnter (Field:S; Iter:I):L;
var Rec,tmp: Record;
var Filt:S;
 if Рекв=nil: Message("Выберите учреждение-отправителя",mtError); Template.Field="Отправ"; ^False; fi;
 if Банк=nil: Message("Выберите лицевой счет",mtError); Template.Field="ОтправБанк"; ^False; fi;
 if UKey[Iter]="": Rec=Nil; else Rec=StringToRecord(UKey[Iter]); fi;
 Filt="Учитывать";
 if Рекв<>nil then Filt=Filt+" and РБС="+RecordToString(Рекв);  fi;
 if Банк<>nil then Filt=Filt+" and РБС_БАНК="+RecordToString(Банк); fi;
 Rec=OpenCardFile(SelfCrd,Filt,Rec);
 if Rec=nil: ^False; fi;
 НомРР[Iter]=GetCardFieldS(SelfCrd,Rec,"НОМЕРДОК");
 ДатаРР[Iter]=GetCardFieldD(SelfCrd,Rec,"ДАТАДОК");
 UKey[Iter]=RecordToString(Rec);
 tmp=GetCardFieldR(SelfCrd,Rec,"ПБС");
 if tmp<>nil: ПолучРР[Iter]=GetCardFieldS("Контрагент",tmp,"ПОЛНИМЯ"); fi;
 Проверить(Iter,False);
end;

Proc Field_onExit(FieldName: String; Iter: Integer);
 НомРР[Iter]="";
 ДатаРР[Iter]=1.1.100;
 ПолучРР[Iter]="";
 Msg[Iter]="";
 Wrng[Iter]=0;
 Err[Iter]=0;
 UKey[Iter]="";
 Fnam[Iter]="";
end;

Func Msg_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
var Rec: Record;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if Match(Msg[Iter],"Данные успешно выгружены в файл:*"): ExecuteProgram("NotePad '"+FNam[Iter]+"'"); fi;
 if not Err[Iter]=0 or not Wrng[Iter]=0: OpenBlank("Документы.ЛБО.РР_ИСХ",True,StringToRecord(UKey[Iter]));
    Rec=StringToRecord(UKey[Iter]);
    НомРР[Упр]=GetCardFieldS(SelfCrd,Rec,"НОМЕРДОК");
    ДатаРР[Упр]=GetCardFieldD(SelfCrd,Rec,"ДАТАДОК");
    Rec=GetCardFieldR(SelfCrd,Rec,"ПБС");
    if Rec<>nil: ПолучРР[Упр]=GetCardFieldS("КОНТРАГЕНТ",Rec,"ПОЛНИМЯ"); fi;
    Проверить(Iter,False);
 fi;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРейс_onClick (Obj:S);
 if not Проверить(0,True): 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 Путь='' then 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=Раб.вспом.СЭД.ПолучитьПапку("AP","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 (Obj:S);
 if ДатаРейс=1.1.100: Message("Введите дату формирования документов (рейса)"); Template.Field="ДатаРейс"; Exit; fi;
 НомРейсСлед;
end;
--Обработчики событий объектов шаблона-----
--
--Обработчики событий шаблона -----
Proc Template_onOpen(Create:L);
var Rec: Record;
 if Упр<1: InsertFrame(Упр,1); fi;
 ДатаРейс=ToDay;
 НомРейсСлед;
 if XXXXX="":
    Rec=Раб.Бюджет2005.НашРекв;
    if not Rec=nil: 
       XXXXX=GetCardFieldS("Контрагент",Rec,"РПО_КБП"); 
       if not Length(XXXXX)=5: XXXXX=""; fi;
       ЗаполнитьРекв(Rec);
    fi;
 fi;
 Инициализация;
 if not flagПравила:
    flagОтдРейс=False;
    cbОтдРейс.State=False;
 fi;
 cbОтдРейс.Enabled=flagПравила;
end;
--Обработчики событий шаблона -----
--

Конец