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

var Ver:S="TXZR140101";

var Версия_:S="Версия формата: "+Ver;

cbГЭК        : Object;
cbПутьГЭК    : Object;
cbПапкаГЭК   : Object;
cbxФорматГЭК : Object;
cbГЭК_Договор: Object;
cbГЭК_Накл   : Object;
cbГЭК_ЗКР    : 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+НомРейс+".ZR"+M,ИмяРейс_);
Путь:S;
ПутьГЭК:S;

Учр:Record;
УчрНаим:S;
Банк:Record;
ОтправБанк:S;
var ДН:D=[ToDay];
var ДК:D=[ToDay];
ИсклВыгруж:L=[True];
fОтдРейс:L;
var fГЭК:L;
var fПутьГЭК:L;
var fПапкаГЭК:L;
var ФорматГЭК:I;
var fГЭК_Договор:L=[True];
var fГЭК_Накл:L=[True];
var fГЭК_ЗКР:L=[True];

var ВзятьИзЗКР_Учр:S="Заполнить из ЗКР";
var ВзятьИзЗКР_ЛС:S="Заполнить из ЗКР";

var ЛсФ:L;
var УчрФ:L;
var Пров_Рекв:L=not ((ЛсФ or Банк=nil) and (УчрФ or Учр=nil));

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

var Упр:I;

var пп[]:i=$;
var НомДок[]:S;
var НомДок_:S="";
var ДатаДок[]:D;
var ТипДок[]:L;
var Контр[]:S;
var СумДок[]:N;
var ГЭК_[]:S;
var Msg[]:S;
var Msg_:S="";
var Err[]:I;
var Wrn[]:I;
var Cmt[]:I;
var Key[]:Record;
var FTmp[]:S;
var FName[]:S;
var ГЭК[]:S;
var FTmpГЭК[]:S;
var FNameГЭК[]:S;

var Msg0:S;
var Err0:I;
var Wrn0:I;
var Cmt0:I;
var BufE0:S;
var BufW0:S;
var BufC0:S;


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

var BufСум[]:N;
var BufСумРуб[]:N;
var Buf[]:S;
var BufИст[]:S;
var BufТипКБК[]:S;
var BufКБК[]:S;
var BufДопКл[]:S;
var BufТипКБКП[]:S;
var BufКБКП[]:S;
var BufДопКлП[]:S;
var BufНазнПл[]:S;
var BufПримеч[]:S;

Folder:S;
FolderГЭК:S;

var Buf[]:S;

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

var accept:S;

var Head:S="FK|"+Ver+"|Турбо Бухгалтер 6.9 Бюджет-157н "+SubStr(Str(Версия.Сборка0),1,2)+"|"+SubStr(Str(Версия.Сборка0)+if(Версия.Сборка1<>0,"."+Str(Версия.Сборка1),"")+Версия.Сборка2,3,10)+"||";

var SelfCrd:S='РПО_ЗАЯВКА_КР';
var SelfBln:S='ДОКУМЕНТЫ.БАНК.ЗАЯВКА_КР_ВЫГРУЗКА_FK_TXZR140101';

var fДобГородВБанк:L;
var fКлиентКорИмя:L;
var fР2_Договор:L;
var fБезКБК:I;
var НастрGUID:S;

var Test:S;
--
--Процедуры и функции -------------
Proc Настр(aСохр:L);
var tmp:S;
 if Раб.Настр.Начать("ДОКУМЕНТЫ.БАНК.ЗАЯВКА_КР",0,0,"",GetGUID):
    tmp=Раб.Настр.ВзятьЗначение("fДобГородВБанк");
    fДобГородВБанк=(tmp="" or tmp="True");
    tmp=Раб.Настр.ВзятьЗначение("fКлиентКорИмя");
    fКлиентКорИмя=(tmp="True");
    tmp=Раб.Настр.ВзятьЗначение("fР2_Договор");
    fР2_Договор=(tmp="True");
    tmp=Раб.Настр.ВзятьЗначение("fБезКБК");
    fБезКБК=Int(tmp);
 fi;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать(SelfBln,0,0,"",НастрGUID):
    Раб.Настр.Добавить("fГЭК","L");
    Раб.Настр.Добавить("fПутьГЭК","L");
    Раб.Настр.Добавить("fПапкаГЭК","L");
    Раб.Настр.Добавить("fГЭК_Договор","L");
    Раб.Настр.Добавить("fГЭК_Накл","L");
    Раб.Настр.Добавить("fГЭК_ЗКР","L");
    Раб.Настр.Добавить("УчрФ","L");
    Раб.Настр.Добавить("ЛсФ","L");
    Раб.Настр.Добавить("ФорматГЭК","I");
    if aСохр: 
       Раб.Настр.Сохранить; 
      else 
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
          fГЭК=False;
          fПутьГЭК=False;
          fПапкаГЭК=False;
          fГЭК_Договор=True;
          fГЭК_Накл=True;
          fГЭК_ЗКР=True;
          УчрФ=True;
          ЛсФ=True;
          ФорматГЭК=0;
       fi;
    fi;
 fi;
end;

Proc Инициализация;
var i:i;
 accept='';
 for i=32..126 do
  accept=accept+chr(i);
 od;
 accept=accept+chr(168);
 accept=accept+chr(184);
 accept=accept+chr(185);
 for i=192..255 do
  accept=accept+chr(i); 
 od;
end;

Proc Оформление;
 cbПутьГЭК.Enabled=fГЭК;
 cbПапкаГЭК.Enabled=fГЭК;
 cbxФорматГЭК.Enabled=fГЭК;
 cbГЭК_Договор.Enabled=fГЭК;
 cbГЭК_Накл.Enabled=fГЭК;
 cbГЭК_ЗКР.Enabled=fГЭК;
end;

Func Fix (Value:S):S;
  if not Pos("|",Value)=0:
     Value=Раб.Формат.ReplaceSubStr(Value,"|"," ");
  fi;
 ^Trim(Value);
end;

Proc Очистить (Iter:I);
 if Iter=0:
    ClearVariable(Упр);
    ClearVariable(НомДок);
    ClearVariable(ДатаДок);
    ClearVariable(ТипДок);
    ClearVariable(Контр);
    ClearVariable(СумДок);
    ClearVariable(ГЭК_);
    ClearVariable(Msg);
    ClearVariable(Err);
    ClearVariable(Wrn);
    ClearVariable(Cmt);
    ClearVariable(Msg0);
    ClearVariable(Err0);
    ClearVariable(Wrn0);
    ClearVariable(Cmt0);
    ClearVariable(Key);
    ClearVariable(FTmp);
    ClearVariable(FName);
    ClearVariable(ГЭК);
    ClearVariable(FTmpГЭК);
    ClearVariable(FNameГЭК);
   else
    НомДок[Iter]="";
    ДатаДок[Iter]=1.1.100;
    ТипДок[Iter]=False;
    Контр[Iter]="";
    СумДок[Iter]=0;
    ГЭК_[Iter]="";
    Msg[Iter]="";
    Err[Iter]=0;
    Wrn[Iter]=0;
    Cmt[Iter]=0;
    Key[Iter]=nil;
    FTmp[Iter]="";
    FName[Iter]="";
    ГЭК[Iter]="";
    FTmpГЭК[Iter]="";
    FNameГЭК[Iter]="";
 fi;
end;

Func ПолучитьФильтр(Iter:I; Rec:Record):S;
var F,tmp:S;
 F="Учитывать and ver>=12";
 if УчрФ and Учр<>nil then F=Раб.Бюджет2005.Объединить(F,"РЕКВ="+RecordToString(Учр)," and "); fi;
 if ЛсФ and Банк<>nil then F=Раб.Бюджет2005.Объединить(F,"БАНК="+RecordToString(Банк)," and "); fi;
 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 РасчетГЭК(OWA:i; n:i; OA:I; iter:i);
var Rec: Record;
var Crd:S;
var z,zz,i:i;
var Вид_:S;
 ГЭК_[Iter]="";
 ГЭК[Iter]="";
 if not fГЭК: Exit; fi;
 if fГЭК_Договор:
    Crd="РПО_ДОГОВОР";
    Rec=GetFieldR(OWA,n,"ДОГОВОР");
    if not Rec=nil:
       z=Max(Раб.Вспом.Сканер.ЧитатьГЭК(Crd,RecordToInteger(Rec),"jpg",True),0);
       if not z=0:
          if GetFieldR(OWA,n,"Договор")=nil:
             Вид_="";
            else
             Вид_=GetFieldS(OWA,n,"Договор.НаимДок.НаимК");
          fi;
          if Вид_="": Вид_=GetFieldS(OWA,n,"Осн_ДокВид"); fi;
          ГЭК_[Iter]=Вид_+" №"+GetFieldS(OWA,n,"Осн_ДокНом")+" : "+Str(z);
          ГЭК[Iter]=Crd+":"+Str(RecordToInteger(Rec));
       fi;
    fi;
 fi;
 --
 if fГЭК_Накл:
    if OA=-1: OA=OpenArray(OWA,n,"Осн_Док",""); fi;
    Crd="РПО_ДО";
    zz=Records(OA);
    for z=1..zz do
     Rec=GetFieldR(OA,z,"ДО");
     if not Crd="" and not Rec=nil:
        i=Max(Раб.Вспом.Сканер.ЧитатьГЭК(Crd,RecordToInteger(Rec),"jpg",True),0);
        if not i=0:
           if GetFieldR(OA,z,"ДО")=nil:
              Вид_="";
             else
              Вид_=GetFieldS(OA,z,"ДО.НаимДок.НаимК");
           fi;
           if Вид_="": Вид_=GetFieldS(OA,z,"Вид"); fi;
           ГЭК_[Iter]=Раб.Бюджет2005.Объединить(ГЭК_[Iter],Вид_+" №"+GetFieldS(OA,z,"Ном")+" : "+Str(i),Chr(13));
           ГЭК[Iter]=Раб.Бюджет2005.Объединить(ГЭК[Iter],Crd+":"+Str(RecordToInteger(Rec)),",");
        fi;
     fi;
    od;
 fi;
 --
 if fГЭК_ЗКР:
    Crd=SelfCrd;
    Rec=GetRecordKey(OWA,n);
    i=Max(Раб.Вспом.Сканер.ЧитатьГЭК(Crd,RecordToInteger(Rec),"jpg",True),0);
    if not i=0:
       ГЭК_[Iter]=Раб.Бюджет2005.Объединить(ГЭК_[Iter],"ЗКР"+": "+Str(i),Chr(13));
       ГЭК[Iter]=Раб.Бюджет2005.Объединить(ГЭК[Iter],Crd+":"+Str(RecordToInteger(Rec)),",");
    fi;
 fi;
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,"ДатаДок");
   ТипДок[i]=GetFieldL(OWA,n,"Ф0531851");
   Контр[i]=GetFieldS(OWA,n,"РеквП.КорИмя");
   СумДок[i]=GetFieldN(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 Wrn[i]>0): Template.Field='Msg'; Template.Frame=i; Exit; fi;
 od;
end;

Proc ДобавитьСообщение (Iter:I; aСообщ:S; aОбязат:I);
 if Iter=0:
   if aОбязат=1:
      Err0=Err0+1;
      BufE[Err0]=BufE[Err0]+Chr(13)+aСообщ;
     |aОбязат=0:
      Wrn0=Wrn0+1;
      BufW[Wrn0]=BufW[Wrn0]+Chr(13)+aСообщ;
     |aОбязат=-1:
      Cmt0=Cmt0+1;
      BufC[Cmt0]=BufC[Cmt0]+Chr(13)+aСообщ;
   fi;
 else
   if aОбязат=1:
      Err[Iter]=Err[Iter]+1;
      BufE[Err[Iter]]=BufE[Err[Iter]]+Chr(13)+aСообщ;
     |aОбязат=0:
      Wrn[Iter]=Wrn[Iter]+1;
      BufW[Wrn[Iter]]=BufW[Wrn[Iter]]+Chr(13)+aСообщ;
     |aОбязат=-1:
      Cmt[Iter]=Cmt[Iter]+1;
      BufC[Cmt[Iter]]=BufC[Cmt[Iter]]+Chr(13)+aСообщ;
   fi;
 fi;
end;

Proc ПроверкаНаСтандарт (Iter:i; aИмя:S; aЗнач:S; aОбязат:I; aДлина:I); --aИмя имя поля, aЗнач значение поля, aОбязат =1 обзательное, =0 предупреждение, =-1 необазтельное, aДлина >0 равно, <0 меньше или равно, 0 не имеет значения
var l,ll:I;
 aЗнач=Fix(aЗнач);
 if aЗнач="" and not aОбязат=-1 then
    ДобавитьСообщение (Iter,"Поле '"+aИмя+"' не заполнено",aОбязат);
    Exit;
 fi;
 ll=Length(aЗнач);
 for l=1..ll do
  if not(Pos(SubStr(aЗнач,l,1),accept)>0):
     ДобавитьСообщение(Iter,"Поле '"+aИмя+"' содержит недопустимый символ ( "+SubStr(aЗнач,l,1)+" ) на позиции "+Str(l),1);
  fi;
 od;
 if not aДлина=0 and not aЗнач="":
    if Length(aЗнач)>Abs(aДлина) then ДобавитьСообщение(Iter,"Значение поля '"+aИмя+"' превышает максимальную длину "+Str(Abs(aДлина)),1);
      |aДлина>0 and Length(aЗнач)<aДлина then ДобавитьСообщение(Iter,"Значение поля '"+aИмя+"' меньше обязательной длины "+Str(aДлина),1);
    fi;
 fi;
end;

Func Проверить(Iter:I; Full:L):L;
var OWA,OAосн,OAршф,z1,z2,n,i,ii,mt:i;
var КодБюдж_,РСчет_:S;
var fMsg,fНал,Flag,isBUAU:L;
 Настр(False);
 if fГЭК and not fГЭК_Договор and not fГЭК_Накл and not fГЭК_ЗКР: Message("Укажите тип выгружаемых документов",mtError); Template.Object="ДатаРейс"; ^False; fi;
 if Iter=0: УдалитьПустыеСтроки; fMsg=True; fi;
 if Full:
    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;
    if Key[1]=nil: Message("Заполните список выгружаемых заявок",mtError); ^False; fi;
    --FROM Почтовая информация об отправителе файла
    Err0=0;Wrn0=0;ClearVariable(BufE); ClearVariable(BufW);
    if УЧР<>nil and not УчрФ: --Если стоит фильтр - проверим в заявке
       ПроверкаНаСтандарт(0,"УБП(КБП) плательщика",GetCardFieldS("Контрагент",Учр,"РПО_КБП"),1,5);--
       ПроверкаНаСтандарт(0,"Полное наименование УБП(плательщика)",GetCardFieldS("Контрагент",Учр,"ПолнИмя"),1,-255);--
       ПроверкаНаСтандарт(0,"Полное наименование УБП(плательщика)",GetCardFieldS("Контрагент",Учр,"РПО_ПолнИмя2"),-1,-255);--
    fi; --if GetFieldR(OWA,n,"Учр")=nil:
    if not Err0=0:Message(BufE[1],mtError); Template.Field="УчрНаим"; ^False; fi;
    if not Wrn0=0:
       for i=1..Wrn0 do
        if EnqOkCancel("Предупреждение:"+chr(10)+BufW[i]+chr(10)+"Продолжить?",mtWarning)<>cmOk: Template.Field="УчрНаим"; ^False; fi;
       od;
    fi;

    if Банк<>nil and not ЛсФ: --Если стоит фильтр - проверим в заявке
       ПроверкаНаСтандарт(Iter,"Уровень бюджета",GetCardFieldS("Банк_счета",Банк,"РПО_КодБюдж"),1,1);--
       ПроверкаНаСтандарт(Iter,"Код ОрФК плательщика",GetCardFieldS("Банк_счета",Банк,"РПО_ОФК_Код"),1,4);--
       ПроверкаНаСтандарт(Iter,"Наименование ОрФК плательщика",GetCardFieldS("Банк_счета",Банк,"РПО_ОФК_Имя"),1,-255);--
       ПроверкаНаСтандарт(Iter,"Наименование ОрФК плательщика",GetCardFieldS("Банк_счета",Банк,"РПО_ОФК_Имя2"),-1,-255);--
    fi; --if GetFieldR(OWA,n,"Учр_Банк")=nil:
    if not Err0=0:Message(BufE[1],mtError); Template.Field="ОтправБанк"; ^False; fi;
    if not Wrn0=0:
       for i=1..Wrn0 do
        if EnqOkCancel("Предупреждение:"+chr(10)+BufW[i]+chr(10)+"Продолжить?",mtWarning)<>cmOk: Template.Field="ОтправБанк"; ^False; fi;
       od;
    fi;

    if Err0=0 and Wrn0=0:
       Msg0="Проверка пройдена.";
      else
       if not Wrn0=0:
          Msg0=Раб.Бюджет2005.Объединить(Msg0,"Предупреждение !",Chr(13));
          for i=1..Wrn0 do
           Msg0=Msg0+BufW[i];
          od;
       fi;
    fi; --if Err[Iter]=0 and Wrn[Iter]=0:

 fi;
 if Iter>0: z1=Iter; z2=Iter; Msg[Iter]=""; Wrn[Iter]=0; Err[Iter]=0;
   |True: z1=1; z2=Упр;  ClearVariable(Msg); ClearVariable(Wrn); ClearVariable(Err);
 fi;
 OWA=OpenWorkArea(SelfCrd,"");
 if z2-z1>0: ShowProgress(z2-z1,"Проверка...."); fi;
 Try
  for Iter=z1..z2 do
   ProgressPos(Iter);
   FName[Iter]="";
   FNameГЭК[Iter]="";
   ClearVariable(BufE);
   ClearVariable(BufW);
   ClearVariable(BufC);
   n=GetRecordNumber(OWA,Key[Iter]);
   if n=0:
      ДобавитьСообщение(Iter,"Заявка не найдена",1);
     else
      --Проверка регистрации
      if GetFieldL(OWA,n,"УЧИТЫВАТЬ")=False:
         ДобавитьСообщение(Iter,"Заявка не принята к учету",1);
      fi;
      --Проверка выгрузки
      if not GetFieldI(OWA,n,"НОМРЕЙС")=0 and not GetFieldD(OWA,n,"ДАТАРЕЙС")=1.1.100:
         ДобавитьСообщение(Iter,"Заявка уже выгружалась рейсом №"+Str(GetFieldI(OWA,n,"НОМРЕЙС"))+" от "+DateToString(GetFieldD(OWA,n,"ДАТАРЕЙС")),-1);
      fi;
      --FROM Почтовая информация об отправителе файла
      isBUAU=False;
      if GetFieldR(OWA,n,"Рекв")=nil:
         ДобавитьСообщение(Iter,"Не выбран плательщик",1);
        else
         ПроверкаНаСтандарт(Iter,"УБП(КБП) плательщика",GetFieldS(OWA,n,"Рекв.РПО_КБП"),1,5);--
         ПроверкаНаСтандарт(Iter,"Полное наименование УБП(плательщика)",GetFieldS(OWA,n,"Рекв.ПолнИмя"),1,-255);--
         ПроверкаНаСтандарт(Iter,"Полное наименование УБП(плательщика)",GetFieldS(OWA,n,"Рекв.РПО_ПолнИмя2"),-1,-255);--
         if fКлиентКорИмя:
            ПроверкаНаСтандарт(Iter,"Краткое наименование УБП(плательщика)",GetFieldS(OWA,n,"Рекв.КорИмя"),1,-255);--
         fi;
         if ТипДок[Iter]=True:
            ПроверкаНаСтандарт(Iter,"ИНН плательщика",GetFieldS(OWA,n,"Рекв_ИНН"),-1,-12);
            ПроверкаНаСтандарт(Iter,"КПП плательщика",GetFieldS(OWA,n,"Рекв_КПП"),-1,9);
         fi;
         --Поля, зависящие от статуса учреждения
         isBUAU=GetFieldS(OWA,n,"Рекв.РПО_ТипУчр")="АУ" or GetFieldS(OWA,n,"Рекв.РПО_ТипУчр")="БУ";
         КодБюдж_=GetFieldS(OWA,n,"Банк.РПО_КодБюдж");
      fi; --if GetFieldR(OWA,n,"Учр")=nil:
      if GetFieldR(OWA,n,"Банк")=nil:
         ДобавитьСообщение(Iter,"Не выбран банковский реквизит плательщика",1);
        else
         ПроверкаНаСтандарт(Iter,"Уровень бюджета",КодБюдж_,1,1);--
         ПроверкаНаСтандарт(Iter,"Код ОрФК плательщика",GetFieldS(OWA,n,"БАНК.РПО_ОФК_КОД"),1,4);--
         ПроверкаНаСтандарт(Iter,"Наименование ОрФК плательщика",GetFieldS(OWA,n,"БАНК.РПО_ОФК_ИМЯ"),1,-255);--
         ПроверкаНаСтандарт(Iter,"Наименование ОрФК плательщика",GetFieldS(OWA,n,"БАНК.РПО_ОФК_ИМЯ2"),-1,-255);--
         ПроверкаНаСтандарт(Iter,"Номер лицевого счета плательщика",GetFieldS(OWA,n,"Банк.РПО_ЛСчет"),1,11);--
         if isBUAU:
            if not (GetFieldS(OWA,n,"Банк.РПО_НАИМБЮДЖ")="" and GetFieldS(OWA,n,"Банк.РПО_НАИМБЮДЖ2")=""): ДобавитьСообщение (Iter,"Поле 'Наименование бюджета' для бюджетного/автономного учреждения не заполняется",1); fi; --
            if not (GetFieldS(OWA,n,"Банк.РПО_ФО_НАИМ1")="" and GetFieldS(OWA,n,"Банк.РПО_ФО_НАИМ2")=""): ДобавитьСообщение (Iter,"Поле 'Наименование финансового органа' для бюджетного/автономного учреждения не заполняется",1); fi; --
            if not GetFieldS(OWA,n,"Банк.РПО_ФО_ОКПО")="": ДобавитьСообщение (Iter,"Поле 'ОКПО финансового органа' для бюджетного/автономного учреждения не заполняется",1); fi; --
           else
            ПроверкаНаСтандарт(Iter,"Наименование бюджета",GetFieldS(OWA,n,"Банк.РПО_НАИМБЮДЖ"),1,-255);--
            ПроверкаНаСтандарт(Iter,"Наименование бюджета",GetFieldS(OWA,n,"Банк.РПО_НАИМБЮДЖ2"),-1,-255);--
            if КодБюдж_="1" or КодБюдж_="2" or КодБюдж_="3":
               ПроверкаНаСтандарт(Iter,"Наименование финансового органа",GetFieldS(OWA,n,"Банк.РПО_ФО_НАИМ1"),if(ТипДок[Iter],-1,1),-255);--
               ПроверкаНаСтандарт(Iter,"Наименование финансового органа",GetFieldS(OWA,n,"Банк.РПО_ФО_НАИМ2"),-1,-255);--
               ПроверкаНаСтандарт(Iter,"ОКПО финансового органа",GetFieldS(OWA,n,"Банк.РПО_ФО_ОКПО"),if(ТипДок[Iter],-1,1),8);--
              else
               if not (GetFieldS(OWA,n,"Банк.РПО_ФО_НАИМ1")="" and GetFieldS(OWA,n,"Банк.РПО_ФО_НАИМ2")=""): ДобавитьСообщение (Iter,"Поле 'Наименование финансового органа' для уровня бюджета 4,5 не заполняется",1); fi; --
               if not GetFieldS(OWA,n,"Банк.РПО_ФО_ОКПО")="": ДобавитьСообщение (Iter,"Поле 'ОКПО финансового органа' для уровня бюджета 4,5 не заполняется",1); fi; --
            fi;
         fi;
      fi; --if GetFieldR(OWA,n,"Учр_Банк")=nil:
      if GetFieldD(OWA,n,"ДатаДок")=1.1.100 then
         ДобавитьСообщение (Iter,"Поле 'Дата заявки' не заполнено",1);--
      fi;
      ПроверкаНаСтандарт(Iter,"Номер заявки",GetFieldS(OWA,n,"НомерДок"),1,-15);--
      if isBUAU:
         if not GetFieldS(OWA,n,"Глава")="": ДобавитьСообщение (Iter,"Поле 'Глава по БК' для бюджетного/автономного учреждения не заполняется",1); fi; --
        else
         ПроверкаНаСтандарт(Iter,"Глава по БК",GetFieldS(OWA,n,"Глава"),1,3);--
      fi;
      ПроверкаНаСтандарт(Iter,"Наименование ГРБС",GetFieldS(OWA,n,"ГРБС"),if(ТипДок[Iter],-1,1),-255);--
      if not GetFieldD(OWA,n,"ДатаИспол")=1.1.100 and (isBUAU or КодБюдж_="4" or КодБюдж_="5"): ДобавитьСообщение (Iter,"Поле 'Предельная дата исполнения' для бюджетного/автономного учреждения или для уровня бюджета 4,5 не заполняется",1); fi; --
      if isBUAU:
         if not GetFieldS(OWA,n,"НомерБО")="": ДобавитьСообщение (Iter,"Поле 'Учетный номер обязательства' для бюджетного/автономного учреждения не заполняется",1); fi; --
         if not GetFieldS(OWA,n,"GUID_FKБО")="": ДобавитьСообщение (Iter,"Поле 'Идентификатор бюджетного обязательства' для бюджетного/автономного учреждения не заполняется",1); fi; --
        else
         ПроверкаНаСтандарт(Iter,"Учетный номер обязательства",GetFieldS(OWA,n,"НомерБО"),-1,16);--
         ПроверкаНаСтандарт(Iter,"Идентификатор бюджетного обязательства",GetFieldS(OWA,n,"GUID_FKБО"),-1,36);--
         if not GetFieldS(OWA,n,"НомерБО")="" and not GetFieldS(OWA,n,"GUID_FKБО")="":
            ДобавитьСообщение (Iter,"Одновременное заполнение полей 'Идентификатор бюджетного обязательства' и 'Учетный номер обязательства' не допускается",1);
         fi;
         if not GetFieldR(OWA,n,"БО")=nil and not GetFieldS(OWA,n,"GUID_FKБО")="":
            if not GetFieldS(OWA,n,"GUID_FKБО")=GetFieldS(OWA,n,"БО.GUID_FK"): ДобавитьСообщение (Iter,"Идентификатор БО указанный в ЗКР ("+GetFieldS(OWA,n,"GUID_FKБО")+") отличен от идентификатора БО ("+GetFieldS(OWA,n,"БО.GUID_FK")+")",1); fi;
         fi;
      fi;
      ПроверкаНаСтандарт(Iter,"Код приоритета исполнения",GetFieldS(OWA,n,"Приоритет_Код"),-1,1);--
      ПроверкаНаСтандарт(Iter,"Приоритет исполнения",GetFieldS(OWA,n,"Приоритет"),-1,-250);--
      if not GetFieldR(OWA,n,"ФАИП")=nil:
--         ДобавитьСообщение (Iter,"Поле 'Код объекта ФАИП' не заполняется до особых указаний",1);  --
         ПроверкаНаСтандарт(Iter,"Код объекта ФАИП",GetFieldS(OWA,n,"ФАИП.Код"),1,14);--
      fi;
      if GetFieldN(OWA,n,"Док_Сум")=0 then
         ДобавитьСообщение (Iter,"Поле 'Сумма документа в валюте' не заполнено",1);--
      fi;
      ПроверкаНаСтандарт(Iter,"Код валюты по ОКВ",GetFieldS(OWA,n,"Док_ОКВ"),1,3);--
      if ТипДок[Iter]:
         if not GetFieldS(OWA,n,"Док_ОКВ")="643": ДобавитьСообщение (Iter,"Код валюты должен иметь значение 643 для сокращенной заявки",1); fi;--
      fi;
      if GetFieldN(OWA,n,"Док_СумРуб")=0 and not GetFieldS(OWA,n,"Док_ОКВ")='643' then
         ДобавитьСообщение (Iter,"Поле 'Сумма документа в рублях' не заполнено",1);--
        --!!!Поле может заполняться только при значении реквизита «TYPE»=1.
      fi;
      ПроверкаНаСтандарт(Iter,"Очередность платежа",GetFieldS(OWA,n,"Док_ОчрПл"),1,1);--
      if not (GetFieldS(OWA,n,"Док_ВидПл")="0" or GetFieldS(OWA,n,"Док_ВидПл")="4"):
         ДобавитьСообщение (Iter,"Допустимые значиения вида платежа: 'пусто'(0) и 'срочно'(4)",1);--
      fi;
      ПроверкаНаСтандарт(Iter,"Назначение платежа",GetFieldS(OWA,n,"Док_НазнПл"),1,-210);--
      Flag=False;
      if fР2_Договор or GetFieldL(OWA,n,"Ф0531851"):
         if not (GetFieldS(OWA,n,"Осн_ДокВид")='' and GetFieldS(OWA,n,"Осн_ДокНом")='' and GetFieldD(OWA,n,"Осн_ДокДат")=1.1.100 and GetFieldS(OWA,n,"Осн_ДокПредм")=''):
            ПроверкаНаСтандарт(Iter,"Вид документа-основания",GetFieldS(OWA,n,"Осн_ДокВид"),1,-50);
--            if GetFieldL(OWA,n,"Ф0531851"):
--               if not (GetFieldS(OWA,n,"Осн_ДокВид")="договор" or GetFieldS(OWA,n,"Осн_ДокВид")="госконтракт"):
--                  ДобавитьСообщение (Iter,"Для сокращенной заявки значение вида документа основания должно быть 'договор' или 'госконтракт'",1);
--               fi;
--            fi;
            if GetFieldS(OWA,n,"Осн_ДокВид")="УИН" and not GetFieldR(OWA,n,"БанкП")=nil:
               РСчет_=GetFieldS(OWA,n,"БанкП.РСчет");
               if (Match(РСчет_,"40101*") or
                  Match(РСчет_,"40302*") or 
                  Match(РСчет_,"40501????????2??????") or 
                  Match(РСчет_,"40601????????1??????") or 
                  Match(РСчет_,"40601????????3??????") or 
                  Match(РСчет_,"40701????????1??????") or 
                  Match(РСчет_,"40701????????3??????") or
                  Match(РСчет_,"40503????????4??????") or
                  Match(РСчет_,"40603????????4??????") or
                  Match(РСчет_,"40703????????4??????")) and 
                  not GetFieldS(OWA,n,"Осн_ДокНом")="0": 
                  ПроверкаНаСтандарт(Iter,"Номер документа-основания",GetFieldS(OWA,n,"Осн_ДокНом"),1,20);
               fi;
            fi;
            ПроверкаНаСтандарт(Iter,"Номер документа-основания",GetFieldS(OWA,n,"Осн_ДокНом"),1,-45);
            if GetFieldD(OWA,n,"Осн_ДокДат")=1.1.100 then
               ДобавитьСообщение (Iter,"Поле 'Дата документа-основания' не заполнено",0);
            fi;
            ПроверкаНаСтандарт(Iter,"Предмет документа-основания",GetFieldS(OWA,n,"Осн_ДокПредм"),if(not GetFieldL(OWA,n,"Ф0531851"),1,-1),-255);
            Flag=True;
         fi;
      fi;
      if Iter=z1: OAосн=OpenArray(OWA,n,'Осн_Док',''); fi;
      ii=Records(OAосн);
      for i=1 to  ii do
       if (not (GetFieldS(OAосн,i,"Вид")='' and GetFieldS(OAосн,i,"Ном")='' and GetFieldD(OAосн,i,"Дат")=1.1.100 and GetFieldS(OAосн,i,"Предм")='') or ii>1) and not GetFieldL(OAосн,i,"Скрывать"):
          ПроверкаНаСтандарт(Iter,"Вид документа-основания",GetFieldS(OAосн,i,"Вид"),1,-50);
          ПроверкаНаСтандарт(Iter,"Номер документа-основания",GetFieldS(OAосн,i,"Ном"),1,-45);
          if GetFieldD(OAосн,i,"Дат")=1.1.100 then
             ДобавитьСообщение (Iter,"Поле 'Дата документа-основания' не заполнено",0);
          fi;
          ПроверкаНаСтандарт(Iter,"Предмет документа-основания",GetFieldS(OAосн,i,"Предм"),if(not GetFieldL(OWA,n,"Ф0531851"),1,-1),-255);
       fi;
      od;
      if not Flag and ii=0 and GetFieldS(OWA,n,"Рекв.РПО_ТипУчр")="БУ" and SubStr(GetFieldS(OWA,n,"Банк.РПО_ЛСчет"),1,2)="21": ДобавитьСообщение (Iter,"Для бюджетного учреждения с кодом лицеовго счета '21' должен быть заполнен раздел 2",1); fi;
      if GetFieldR(OWA,n,"РеквП")=nil:
         ДобавитьСообщение(Iter,"Не выбран контрагент",0);
        else
         if not GetFieldS(OWA,n,"РеквП.ИНН")="0" then
            ПроверкаНаСтандарт(Iter,"ИНН контрагента",GetFieldS(OWA,n,"РеквП.ИНН"),0,-12);
         fi;
         if not GetFieldS(OWA,n,"РеквП.КПП")="0" then
            ПроверкаНаСтандарт(Iter,"КПП контрагента",GetFieldS(OWA,n,"РеквП.КПП"),0,9);
         fi;
      fi; --if GetFieldR(OWA,n,"РеквП")=nil:
      if GetFieldR(OWA,n,"БанкП")=nil:
         ДобавитьСообщение(Iter,"Не выбран банковский реквизит контрагента",1);
        else
         ПроверкаНаСтандарт(Iter,"Наименование контрагента для банка",GetFieldS(OWA,n,"БанкП.БанкИмя"),1,-160);--
         ПроверкаНаСтандарт(Iter,"Лицевой счет контрагента",GetFieldS(OWA,n,"БанкП.РПО_ЛСчет"),-1,11);--
         ПроверкаНаСтандарт(Iter,"Банковский(расчетный) счет контрагента",GetFieldS(OWA,n,"БанкП.РСчет"),0,if(GetFieldS(OWA,n,"Док_ОКВ")="643",20,-34));--
         ПроверкаНаСтандарт(Iter,"Наименование банка контрагента",GetFieldS(OWA,n,"БанкП.БАНК")+if(fДобГородВБанк,' '+GetFieldS(OWA,n,"БанкП.Город"),""),1,-160);--
         ПроверкаНаСтандарт(Iter,"БИК банка контрагента",GetFieldS(OWA,n,"БанкП.БИК"),if(GetFieldS(OWA,n,"Док_ОКВ")='643',1,-1),9);
         ПроверкаНаСтандарт(Iter,"Корсчет банка контрагента",GetFieldS(OWA,n,"БанкП.КСЧЕТ"),-1,if(GetFieldS(OWA,n,"Док_ОКВ")="643",20,-34));
      fi; --if GetFieldR(OWA,n,"Учр_БанкП")=nil:
      fНал=not GetFieldS(OWA,n,"Нал_Статус")='';
      ПроверкаНаСтандарт(Iter,"Статус налогоплательщика",GetFieldS(OWA,n,"Нал_Статус"),if(fНал,1,-1),2);
      ПроверкаНаСтандарт(Iter,"Код бюджетной классификации (раздел 4)",GetFieldS(OWA,n,"Нал_КБК"),if(fНал,1,-1),20);
      ПроверкаНаСтандарт(Iter,"Код ОКТМО",GetFieldS(OWA,n,"Нал_ОКАТО"),if(fНал,1,-1),-11);
      ПроверкаНаСтандарт(Iter,"Показатель основания платежа",GetFieldS(OWA,n,"Нал_ОснПл"),if(fНал,1,-1),-2);
      ПроверкаНаСтандарт(Iter,"Показатель налогового периода",GetFieldS(OWA,n,"Нал_Пер"),if(fНал,1,-1),-10);
      ПроверкаНаСтандарт(Iter,"Показатель номера документа",GetFieldS(OWA,n,"Нал_НомДок"),if(fНал,1,-1),-15);
      ПроверкаНаСтандарт(Iter,"Тип платежа",GetFieldS(OWA,n,"Нал_ТипПл"),if(fНал,1,-1),-2);
      ПроверкаНаСтандарт(Iter,"Должность руководителя",GetFieldS(OWA,n,"ДолжнРук"),-1,-100);
      ПроверкаНаСтандарт(Iter,"ФИО руководителя",GetFieldS(OWA,n,"ФИОРук"),1,-50);
      ПроверкаНаСтандарт(Iter,"Должность главного бухгалтера",GetFieldS(OWA,n,"ДолжнБух"),-1,-100);
      ПроверкаНаСтандарт(Iter,"ФИО главного бухгалтера",GetFieldS(OWA,n,"ФИОБух"),-1,-50);
      --Дата подписания заявки
      if GetFieldD(OWA,n,"ДатаПодписи")=1.1.100 then
         ДобавитьСообщение (Iter,"Поле 'Дата подписания заявки' не заполнено",1);
      fi;
      if Iter=z1: OAршф=OpenArray(OWA,n,'РАСШИФР',''); fi;
      ii=Records(OAршф);
      for i=1 to  ii do
        ПроверкаНаСтандарт(Iter,"Источник средств (строка"+Str(i)+")",GetFieldS(OAршф,i,"Ист"),1,1);
        ПроверкаНаСтандарт(Iter,"Тип КБК плательщика (строка"+Str(i)+")",GetFieldS(OAршф,i,"ТипКБК"),if(GetFieldS(OAршф,i,"Ист")='5',-1,1),2);
        ПроверкаНаСтандарт(Iter,"Код по КБК плательщика (строка"+Str(i)+")",GetFieldS(OAршф,i,"КБК"),if(GetFieldS(OAршф,i,"Ист")='5',-1,1),20);
        ПроверкаНаСтандарт(Iter,"Тип КБК получателя (строка"+Str(i)+")",GetFieldS(OAршф,i,"ТипКБКП"),-1,2);
        ПроверкаНаСтандарт(Iter,"Код по КБК получателя (строка"+Str(i)+")",GetFieldS(OAршф,i,"КБКП"),-1,20);
        ПроверкаНаСтандарт(Iter,"Код цели субсидии/субвенции плательщика (строка"+Str(i)+")",GetFieldS(OAршф,i,"ДопКл"),if((SubStr(GetFieldS(OWA,n,"Банк.РПО_ЛСчет"),1,2)="21" or SubStr(GetFieldS(OWA,n,"Банк.РПО_ЛСчет"),1,2)="31"),1,-1),-20);
        ПроверкаНаСтандарт(Iter,"Код цели субсидии/субвенции получателя (строка"+Str(i)+")",GetFieldS(OAршф,i,"ДопКлП"),-1,-20);
        if GetFieldN(OAршф,i,"Сум")=0 then
           ДобавитьСообщение (Iter,"Поле 'Сумма документа в валюте' (строка"+Str(i)+") не заполнено",1);
        fi;
        if GetFieldN(OAршф,i,"СумРуб")=0 and GetFieldS(OWA,n,"Док_ОКВ")<>'643'  then
           ДобавитьСообщение (Iter,"Поле 'Сумма документа в рублях' (строка"+Str(i)+") не заполнено",1);
        fi;
        if GetFieldN(OAршф,i,"СумРуб")<>0 and GetFieldS(OWA,n,"Док_ОКВ")='643'  then
           ДобавитьСообщение (Iter,"Если код валюты 643 (российский рубль), поле 'Сумма документа в рублях' (строка"+Str(i)+") не заполняется",0);
        fi;
        ПроверкаНаСтандарт(Iter,"Назначение платежа (строка"+Str(i)+")",GetFieldS(OAршф,i,"НазнПл"),-1,-210);
        ПроверкаНаСтандарт(Iter,"Примечание (строка"+Str(i)+")",GetFieldS(OAршф,i,"Примеч"),-1,-254);
      od;
      РасчетГЭК(OWA,n,OAосн,Iter);
   fi; --if Records(OWA)>0:
   if Err[Iter]=0 and Wrn[Iter]=0:
      Msg[Iter]="Проверка пройдена.";
     else
      if not Err[Iter]=0:
         Msg[Iter]="Ошибка !";
         for i=1..Err[Iter] do
          Msg[Iter]=Msg[Iter]+BufE[i];
         od;
      fi;
      if not Wrn[Iter]=0:
         Msg[Iter]=Раб.Бюджет2005.Объединить(Msg[Iter],"Предупреждение !",Chr(13));
         for i=1..Wrn[Iter] do
          Msg[Iter]=Msg[Iter]+BufW[i];
         od;
      fi;
   fi; --if Err[Iter]=0 and Wrn[Iter]=0:
   if not Cmt[Iter]=0:
      Msg[Iter]=Раб.Бюджет2005.Объединить(Msg[Iter],"Внимание !",Chr(13));
      for i=1..Cmt[Iter] do
       Msg[Iter]=Msg[Iter]+BufC[i];
      od;
   fi;
   if Length(Msg[Iter])>252: Msg[Iter]=SubStr(Msg[Iter],1,252)+"..."; fi;
  od; --for Iter=z1..z2 do
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 if fMsg and not Full:
    if not SumOfArray(Err,Упр)=0: mt=mtError; НаОшибку(True);
      |not SumOfArray(Wrn,Упр)=0: mt=mtWarning; НаОшибку(False);
      |True: mt=mtInformation;
    fi;
    Message("Проверка завершена"+Chr(13)+"Ошибок: "+Str(SumOfArray(Err,Упр))+Chr(13)+"Предупреждений: "+Str(SumOfArray(Wrn,Упр)),mt);
 fi;
 ^True;
end;

Proc НомРейсСлед;
var OWA,nr:I;
 if ДатаРейс=1.1.100: Message("Введите дату формирования документов (файла)",mtError); Template.Field="ДатаРейс"; Exit; fi;
 OWA=OpenWorkArea(SelfCrd,"НомРейс","ДатаРейс>="+DateToString(ДатаРейс)+" and ДатаРейс<="+DateToString(ДатаРейс)+" and "+if(fВЛВС,"ВЛВС","not ВЛВС"));
 Try
  Nr=Records(OWA);
  if Nr=0: 
     НомРейс_=1;
    else
     НомРейс_=Abs(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: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],"Рекв.РПО_КБП");
 fi;
 Проверить(0,False);
end;

Func РасчетРаздела(OA:I; fСокр:L):I;
var n,nn,z:I;
var Ист,ТипКБК,КБК,ТипКБКП,КБКП,НазнПл,ДопКл,ДопКлП,Примеч:S;
var Сум,СумРуб:N;
var crcНазнПл,crcПримеч:I;
 ClearVariable(Buf);
 ClearVariable(BufИст);
 ClearVariable(BufКБК);
 ClearVariable(BufТипКБК);
 ClearVariable(BufДопКл);
 ClearVariable(BufКБКП);
 ClearVariable(BufТипКБКП);
 ClearVariable(BufДопКлП);
 ClearVariable(BufСум);
 ClearVariable(BufСумРуб);
 ClearVariable(BufНазнПл);
 ClearVariable(BufПримеч);
 nn=Records(OA);
 for n=1..nn do
  Ист=GetFieldS(OA,n,"Ист");
  ТипКБК=GetFieldS(OA,n,"ТипКБК");
  if Ист = "6" and fБезКБК = 2:
     КБК = "00000000000000000"+Substr(GetFieldS(OA,n,"КБК"),18,255);
    else
  КБК=GetFieldS(OA,n,"КБК");
  fi;
  ДопКл=GetFieldS(OA,n,"ДопКл");
  if not fСокр:
     ТипКБКП=GetFieldS(OA,n,"ТипКБКП");
     КБКП=GetFieldS(OA,n,"КБКП");
     ДопКлП=GetFieldS(OA,n,"ДопКлП");
     СумРуб=GetFieldN(OA,n,"СумРуб");
     НазнПл=GetFieldS(OA,n,"НазнПл");
     Примеч=GetFieldS(OA,n,"Примеч");
     crcНазнПл=Раб.CRC16.CRC24_(Раб.CRC16.Init24,НазнПл);
     crcПримеч=Раб.CRC16.CRC24_(Раб.CRC16.Init24,Примеч);
  fi;
  Сум=GetFieldN(OA,n,"Сум");
  z=SearchInArray(Buf,Ист+ТипКБК+КБК+ТипКБКП+КБКП+ДопКл+ДопКлП+Str16(crcНазнПл)+Str16(crcПримеч),True);
  if z=-1:
     z=InsertInArraySort(Buf,Ист+ТипКБК+КБК+ТипКБКП+КБКП+ДопКл+ДопКлП+Str16(crcНазнПл)+Str16(crcПримеч));
     InsertInArray(BufИст,z,Ист);
     InsertInArray(BufТипКБК,z,ТипКБК);
     InsertInArray(BufКБК,z,КБК);
     InsertInArray(BufТипКБКП,z,ТипКБКП);
     InsertInArray(BufКБКП,z,КБКП);
     InsertInArray(BufНазнПл,z,НазнПл);
     InsertInArray(BufДопКл,z,ДопКл);
     InsertInArray(BufДопКлП,z,ДопКлП);
     InsertInArray(BufСум,z,Сум);
     InsertInArray(BufСумРуб,z,СумРуб);
     InsertInArray(BufПримеч,z,Примеч);
    else
     BufСум[z]=BufСум[z]+Сум;
     BufСумРуб[z]=BufСумРуб[z]+СумРуб;
     BufПримеч[z]=BufПримеч[z]+Примеч;
  fi;
 od;
 ^LengthOfArray(Buf);
end;

Proc ВыгрузитьРейс;
var OWA,OAосн,OAршф,State,Iter,F,iРейс,nРейс,iТабл,nТабл,n,nn,hНомРейс,w,ww:I;
var Buf,Cache,tmp,КодБюдж_:S;
var flagГЭК:L;
var isBUAU:L;
 flagГЭК=False;
 Cache=PlanVar("CACHE")+"\";
 for Iter=1..Упр do
  Msg[Iter]="Ожидание выгрузки...";
 od;
 OWA=OpenWorkArea(SelfCrd,"");
 Try
  ShowProgress(Упр,"Формирование рейса....");
  if fОтдРейс then nРейс=Упр; else nРейс=1; fi;
  for iРейс=1..nРейс do
   hНомРейс=НомРейс_;
   FTmp[iРейс]=Cache+GetGUID;
   FName[iРейс]=Folder+ИмяРейс;
   if not State=4 and not State=3 and ExistFile(FName[iРейс]):
       State=Enquiry("","Файл "+FName[iРейс]+" уже существует, перезаписать ?","Нет;Да;Нет для всех;Да для всех;Отмена",mtWarning);
       if State=5: Message("Отказ от формирования рейса",mtWarning); Exit; fi;
   fi;
   if not State=1 and not State=3:
      n=GetRecordNumber(OWA,Key[iРейс]);
      F=TextFileCreate(FTmp[iРейс]);
      Try
       isBUAU=GetFieldS(OWA,n,"Рекв.РПО_ТипУчр")="АУ" or GetFieldS(OWA,n,"Рекв.РПО_ТипУчр")="БУ";
       КодБюдж_=GetFieldS(OWA,n,"Банк.РПО_КодБюдж");
       TextFileWriteLn(F,Head);
       --FROM Почтовая информация об отправителе файла
       TextFileAppendLn(F,"FROM|");
       --Уровень бюджета
       if БАНК=nil:
          Buf=GetFieldS(OWA,n,"БАНК.РПО_КодБюдж");
       else
          Buf=GetCardFieldS("Банк_счета",Банк,"РПО_КодБюдж");
       fi;
       Buf=Fix(Buf);
       TextFileAppendLn(F,Buf);
       TextFileAppendLn(F,"|");
       --Код УБП
       if УЧР<>nil:
          Buf=GetCardFieldS("Контрагент",Учр,"РПО_КБП");
        else
          Buf=GetFieldS(OWA,n,"Рекв.РПО_КБП");
       fi;
       Buf=Fix(Buf);
       TextFileAppendLn(F,Buf);
       TextFileAppendLn(F,"|");
       --Наименование УБП
       if УЧР<>nil:
          Buf=GetCardFieldS("Контрагент",Учр,"ПолнИмя");
          Buf=Fix(Buf);
          TextFileAppendLn(F,Buf);
          Buf=GetCardFieldS("Контрагент",Учр,"РПО_ПолнИмя2");
        else
          Buf=GetFieldS(OWA,n,"Рекв.ПолнИмя");
          Buf=Fix(Buf);
          TextFileAppendLn(F,Buf);
          Buf=GetFieldS(OWA,n,"Рекв.РПО_ПолнИмя2");
       fi;
       Buf=Fix(Buf);
       TextFileAppendLn(F,Buf);
       TextFileWriteLn(F,"|");
       --ТО Почтовая информация о получателе файла
       TextFileAppendLn(F,"TO|");
       --Код ОрФК
       if БАНК=nil:
          Buf=GetFieldS(OWA,n,"БАНК.РПО_ОФК_Код");
        else
          Buf=GetCardFieldS("Банк_счета",Банк,"РПО_ОФК_Код");
       fi;
       Buf=Fix(Buf);
       TextFileAppendLn(F,Buf);
       TextFileAppendLn(F,"|");
       --Наименование ОрФК
       if БАНК=nil:
          Buf=GetFieldS(OWA,n,"БАНК.РПО_ОФК_Имя");
        else
          Buf=GetCardFieldS("Банк_счета",Банк,"РПО_ОФК_Имя");
       fi;
       Buf=Fix(Buf);
       TextFileAppendLn(F,Buf);
       if БАНК=nil:
          Buf=GetFieldS(OWA,n,"БАНК.РПО_ОФК_Имя2");
         else
          Buf=GetCardFieldS("Банк_счета",Банк,"РПО_ОФК_Имя2");
       fi;
       Buf=Fix(Buf);
       TextFileAppendLn(F,Buf);
       TextFileWriteLn(F,"|");
       if fОтдРейс then
          iТабл=iРейс; nТабл=iРейс;
         else
          iТабл=1; nТабл=Упр;
       fi;
       for Iter=iТабл..nТабл do
        ProgressPos(Iter);
        Msg[Iter]="ОШИБКА ВЫГРУЗКИ";
        n=GetRecordNumber(OWA,Key[Iter]);
        if Iter=iТабл: 
           OAосн=OpenArray(OWA,n,"Осн_Док","");
           OAршф=OpenArray(OWA,n,"Расшифр","");
        fi;
        --ZR Общая информация
        TextFileAppendLn(F,"ZR|");
        --Глобальный идентификатор заявки
        TextFileAppendLn(F,"|");
        --Тип заявки
        Buf=if(GetFieldL(OWA,n,"Ф0531851"),"2","1");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Номер заявки
        Buf=GetFieldS(OWA,n,"НомерДок");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Дата заявки
        Buf=DateToString(GetFieldD(OWA,n,"ДатаДок"));
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код клиента
        if GetFieldS(OWA,n,"БАНК.РПО_КодБюдж")="1":
           Buf=GetFieldS(OWA,n,"Рекв.РПО_КБП");
          else
           Buf="";
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Наименование клиента
        if fКлиентКорИмя:
           Buf=GetFieldS(OWA,n,"Рекв.КорИмя");
           Buf=Fix(Buf);
          else
           Buf=GetFieldS(OWA,n,"Рекв.ПолнИмя");
           Buf=Fix(Buf);
           TextFileAppendLn(F,Buf);
           Buf=GetFieldS(OWA,n,"Рекв.РПО_ПолнИмя2");
           Buf=Fix(Buf);
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Номер лицевого счета клиента
        Buf=GetFieldS(OWA,n,"Банк.РПО_ЛСчет");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --ИНН клиента
        if GetFieldL(OWA,n,"Ф0531851"):
           Buf=GetFieldS(OWA,n,"Рекв_ИНН");
          else
           Buf="";
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --КПП клиента
        if GetFieldL(OWA,n,"Ф0531851"):
           Buf=GetFieldS(OWA,n,"Рекв_КПП");
          else
           Buf="";
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Глава по БК
        if isBUAU:
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"Глава");
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Наименование ГРБС
        if GetFieldL(OWA,n,"Ф0531851"):
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"ГРБС");
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Наименование бюджета
        Buf=GetFieldS(OWA,n,"Банк.РПО_НаимБюдж");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWA,n,"Банк.РПО_НаимБюдж2");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Наименование финансового органа
        if GetFieldL(OWA,n,"Ф0531851") or isBUAU or КодБюдж_="4" or КодБюдж_="5":
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"Банк.РПО_ФО_Наим1");
           Buf=Fix(Buf);
           TextFileAppendLn(F,Buf);
           Buf=GetFieldS(OWA,n,"Банк.РПО_ФО_Наим2");
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код по ОКПО
        if GetFieldL(OWA,n,"Ф0531851") or isBUAU or КодБюдж_="4" or КодБюдж_="5":
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"Банк.РПО_ФО_ОКПО");
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код ОФК
        Buf=GetFieldS(OWA,n,"БАНК.РПО_ОФК_Код");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Наименование ОФК
        Buf=GetFieldS(OWA,n,"БАНК.РПО_ОФК_Имя");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWA,n,"БАНК.РПО_ОФК_Имя2");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Предельная дата исполнения
        if isBUAU or КодБюдж_="4" or КодБюдж_="5":
           Buf="";
          else
           Buf=DateToString(GetFieldD(OWA,n,"ДатаИспол"));
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Идентификатор документа Сведения о принятом бюджетном обязательстве», предоставленного в ОрФК
        if isBUAU:
           Buf="";
          else
           if Fix(GetFieldS(OWA,n,"НомерБО")) = "": --Если ZR.NOM_BO заполнено - поле не заполняется.
              Buf=GetFieldS(OWA,n,"GUID_FKБО");
             else
              Buf = "";
           fi;
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Номер обязательства
        if isBUAU:
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"НомерБО");
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код приоритета исполнения
        if GetFieldL(OWA,n,"Ф0531851"):
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"Приоритет_Код") ;
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Приоритет исполнения
        if GetFieldL(OWA,n,"Ф0531851"):
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"Приоритет");
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код объекта ФАИП
        if GetFieldR(OWA,n,"ФАИП")=nil:
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"ФАИП.Код");
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Сумма документа в валюте выплаты
        Buf=Str(GetFieldN(OWA,n,"Док_Сум"),2);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код валюты по ОКВ
        Buf=GetFieldS(OWA,n,"Док_ОКВ");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Сумма документа в рублях
        if GetFieldL(OWA,n,"Ф0531851"):
           Buf="";
          else
           Buf=Str(GetFieldN(OWA,n,"Док_СумРуб"),2);
           if Buf="0.00": Buf=""; fi;
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Признак авансового платежа
        Buf=if(GetFieldL(OWA,n,"Док_Аванс"),"1","0");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Очередность платежа
        Buf=GetFieldS(OWA,n,"Док_ОчрПл");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Вид платежа
        Buf=GetFieldS(OWA,n,"Док_ВидПЛ"); --?Допустимость 1-2-3?
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Назначение платежа
        Buf=GetFieldS(OWA,n,"Док_НазнПл");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Наименование/ФИО контрагента
        Buf=GetFieldS(OWA,n,"БанкП.БанкИмя");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --ИНН контрагента
        Buf=GetFieldS(OWA,n,"РеквП.ИНН");
        Buf=Fix(Buf);
        if Buf="": Buf="0"; fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --КПП контрагента
        Buf=GetFieldS(OWA,n,"РеквП.КПП");
        Buf=Fix(Buf);
        if Buf="": Buf="0"; fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Лицевой счет контрагента
        if GetFieldL(OWA,n,"Ф0531851"):
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"БанкП.РПО_ЛСчет");
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Банковский счет контрагента
        Buf=GetFieldS(OWA,n,"БанкП.РСчет");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Наименование банка контрагента
        Buf=GetFieldS(OWA,n,"БанкП.Банк")+if(fДобГородВБанк,' '+GetFieldS(OWA,n,"БанкП.Город"),"");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Бик банка контрагента
        Buf=GetFieldS(OWA,n,"БанкП.БИК");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Корсчет банка контрагента
        Buf=GetFieldS(OWA,n,"БанкП.КСчет");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Статус налогоплательщика
        Buf=GetFieldS(OWA,n,"Нал_Статус");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код бюджетной классификации
        Buf=GetFieldS(OWA,n,"Нал_КБК");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код ОКАТО
        Buf=GetFieldS(OWA,n,"Нал_ОКАТО");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Показатель основания платежа
        Buf=GetFieldS(OWA,n,"Нал_ОснПл");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Показатель налогового периода
        Buf=GetFieldS(OWA,n,"Нал_Пер");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --показателдь номера документа
        Buf=GetFieldS(OWA,n,"Нал_НомДок");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Показатель даты документа
        if GetFieldS(OWA,n,"Нал_НомДок")="":
           Buf="";
          else
           if GetFieldD(OWA,n,"Нал_ДатДок")=1.1.100:
              Buf="0";
             else
              Buf=DateToString(GetFieldD(OWA,n,"Нал_ДатДок"));
           fi;
        fi;
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Тип платежа
        Buf=GetFieldS(OWA,n,"Нал_ТипПл");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Должность руководителя
        if GetFieldL(OWA,n,"Ф0531851"):
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"ДолжнРук");
           Buf=Fix(Buf);
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --ФИО руководителя
        Buf=GetFieldS(OWA,n,"ФИОРук");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Должность главного бухгалтера
        if GetFieldL(OWA,n,"Ф0531851"):
           Buf="";
          else
           Buf=GetFieldS(OWA,n,"ДолжнБух");
           Buf=Fix(Buf);
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --ФИО главного бухгалтера
        Buf=GetFieldS(OWA,n,"ФИОБух");
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Дата подписания заявки
        Buf=DateToString(GetFieldD(OWA,n,"ДатаПодписи"));
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Отметка офк о постановке на учет/Номер заявки
        TextFileAppendLn(F,"|");
        --Отметка офк о постановке на учет/Дата постановки на учет
        TextFileAppendLn(F,"|");
        --Отметка офк о постановке на учет/Должность ответственного исполнителя
        TextFileAppendLn(F,"|");
        --Отметка офк о постановке на учет/ФИО ответственного исполнителя
        TextFileAppendLn(F,"|");
        --Отметка офк о постановке на учет/Телефон ответственного исполнителя
        TextFileWriteLn(F,"|");
        if (fР2_Договор or GetFieldL(OWA,n,"Ф0531851")) and not GetFieldS(OWA,n,"Осн_ДокВид")="" and not GetFieldL(OWA,n,"Осн_ДокСкрывать"):
           --ZROSN Общая информация
           TextFileAppendLn(F,"ZROSN|");
           --Признак основания платежа
           if GetFieldL(OWA,n,"Ф0531851"):
              TextFileAppendLn(F,"1");
           fi;
           TextFileAppendLn(F,"|");
           --Вид документа-основания
           Buf=GetFieldS(OWA,n,"Осн_ДокВид");
           Buf=Fix(Buf);
           TextFileAppendLn(F,Buf);
           TextFileAppendLn(F,"|");
           --Номер документа-основания
           Buf=GetFieldS(OWA,n,"Осн_ДокНом");
           Buf=Fix(Buf);
           TextFileAppendLn(F,Buf);
           TextFileAppendLn(F,"|");
           --Дата документа-основания
           if GetFieldD(OWA,n,"Осн_ДокДат")=1.1.100:
              Buf="";
             else
              Buf=DateToString(GetFieldD(OWA,n,"Осн_ДокДат"));
           fi;
           Buf=Fix(Buf);
           TextFileAppendLn(F,Buf);
           TextFileAppendLn(F,"|");
           --Предмет документа-основания
           if GetFieldL(OWA,n,"Ф0531851"):
              Buf="";
             else
              Buf=GetFieldS(OWA,n,"Осн_ДокПредм");
           fi;
           Buf=Fix(Buf);
           TextFileAppendLn(F,Buf);
           TextFileWriteLn(F,"|");
        fi;
        ww=Records(OAосн);
        for w=1 to ww do
         if (not (GetFieldS(OAосн,w,"Вид")='' and GetFieldS(OAосн,w,"Ном")='' and GetFieldD(OAосн,w,"Дат")=1.1.100 and GetFieldS(OAосн,w,"Предм")='') or ww>1) and not GetFieldL(OAосн,w,"Скрывать"):
            --ZROSN Общая информация
            TextFileAppendLn(F,"ZROSN|");
            --Признак основания платежа
            if GetFieldL(OWA,n,"Ф0531851"):
               TextFileAppendLn(F,"2");
            fi;
            TextFileAppendLn(F,"|");
            --Вид документа-основания
            Buf=GetFieldS(OAосн,w,"Вид");
            Buf=Fix(Buf);
            TextFileAppendLn(F,Buf);
            TextFileAppendLn(F,"|");
            --Номер документа-основания
            Buf=GetFieldS(OAосн,w,"Ном");
            Buf=Fix(Buf);
            TextFileAppendLn(F,Buf);
            TextFileAppendLn(F,"|");
            --Дата документа-основания
            if GetFieldD(OAосн,w,"Дат")=1.1.100:
               Buf="";
              else
               Buf=DateToString(GetFieldD(OAосн,w,"Дат"));
            fi;
            Buf=Fix(Buf);
            TextFileAppendLn(F,Buf);
            TextFileAppendLn(F,"|");
            --Предмет документа-основания
            if GetFieldL(OWA,n,"Ф0531851"):
               Buf="";
              else
               Buf=GetFieldS(OAосн,w,"Предм");
            fi;
            Buf=Fix(Buf);
            TextFileAppendLn(F,Buf);
            TextFileWriteLn(F,"|");
         fi;
        od;
        ww=РасчетРаздела(OAршф,GetFieldL(OWA,n,"Ф0531851"));
        for w=1 to ww do
         --ZRST Строки заявки на кассовый расход
         TextFileAppendLn(F,"ZRST|");
         --Источник средств
         Buf=BufИст[w];
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Тип КБК плательщика
         Buf=BufТипКБК[w];
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Код по БК плательщика
         Buf=BufКБК[w];
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Тип КБК получателя
         Buf=BufТипКБКП[w];
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Код по БК получателя
         Buf=BufКБКП[w];
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Код цели субсидии\субвенции плательщика
         Buf=BufДопКл[w];
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Код цели субсидии\субвенции полуателя
         Buf=BufДопКлП[w];
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Сумма в валюте заявки
         Buf=Str(BufСум[w],2);
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Сумма в рублях
         Buf=Str(BufСумРуб[w],2);
         Buf=Fix(Buf);
         if Buf="0.00": Buf=""; fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Назначение платежа
         Buf=BufНазнПЛ[w];
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --Примечание
         Buf=BufПримеч[w];
         Buf=Fix(Buf);
         TextFileAppendLn(F,Buf);
         TextFileWriteLn(F,"|");
        od; --for w=1 to ww do
        --
        if not ГЭК[Iter]="":
           if ФорматГЭК=0:
              nn=0;
              ww=WordsCount(ГЭК[Iter],",");
              for w=1..ww do
               tmp=ExtractWord(w,ГЭК[Iter],",");
               nn=Раб.Вспом.Сканер.ЧитатьГЭК(ExtractWord(1,tmp,":"),Int(ExtractWord(2,tmp,":")),"jpg",w=1);
              od;
              if not nn=0:
                 tmp=Cache+GetGUID;
                 if Раб.Вспом.Сканер.JpegToPdf(tmp,False)=1: FTmpГЭК[Iter]=tmp; flagГЭК=True; fi;
              fi;
             |ФорматГЭК=1:
              flagГЭК=True;
           fi;
        fi;
       od; --for Iter=iТабл..nТабл do
      Finally
       TextFileClose(F);
      end;
      CopyFile(FTmp[iРейс],FName[iРейс]);
      for Iter=iТабл..nТабл do
       if not ExistFile(FName[iРейс]): Message("Выгрузка прервана",mtError); Exit; fi;
       if not Iter=iРейс then FName[Iter]=FName[iРейс]; fi;
       Msg[Iter]="Заявка успешно выгружена в файл: "+FName[iРейс];
      od; --for Iter=iТабл..nТабл do
      if CanUpdate(SelfCrd):
         BeginChanging(OWA,False);
         Try
          for Iter=iТабл..nТабл do
           n=GetRecordNumber(OWA,Key[Iter]);
           n=PutFieldI(OWA,n,"НомРейс",НомРейс_);
           n=PutFieldD(OWA,n,"ДатаРейс",ДатаРейс);
           n=PutFieldL(OWA,n,"ВБанк",True);
          od;
          EndChanging(OWA);
         Except
          CancelChanging(OWA);
          Raise;
         end;
         НомРейсСлед;
        else
         НомРейс_=НомРейс_+1;
         While НомРейсИспользуется(ДатаРейс,НомРейс_) do
          НомРейс_=НомРейс_+1;
         od;
      fi; --if CanUpdate(SelfCrd):
     else
      Msg[Iter]="Файл уже существует. Выгрузка не производилась";
   fi; --if not State=1 and not State=3:
  od; --for iРейс=1..nРейс do
  if flagГЭК:
     if fПутьГЭК:
        if ПутьГЭК="":
           if ChooseFolder(FolderГЭК,"Укажите путь выгрузки графической копии")=cmCancel: 
              for Iter=1..Упр do
               Msg[Iter]=Msg[Iter]+Chr(13)+"Отказ от выгрузки графической электронной копии";
              od;
              Message("Отказ от выгрузки графической электронной копии",mtWarning); 
              Exit;
           fi;
          else
           FolderГЭК=ПутьГЭК;
        fi;
       else
        FolderГЭК=Folder;
     fi; --if fПутьГЭК:
     for Iter=1..Упр do
      if not ГЭК[Iter]="":
         if ФорматГЭК=0:
            if ExistFile(FTmpГЭК[Iter]):
               if fПапкаГЭК:
                  tmp=FolderГЭК+"ЗКР"+НомДок[Iter];
                  CreateFolder(tmp);
                  tmp=tmp+"\ЗКР"+НомДок[Iter]+".pdf";
                 else
                  tmp=FolderГЭК+"ЗКР"+НомДок[Iter]+".pdf";
               fi;
               CopyFile(FTmpГЭК[Iter],tmp);
               if ExistFile(tmp):
                  FNameГЭК[Iter]=tmp;
                  Msg[Iter]=Msg[Iter]+Chr(13)+"Графическая электронная копия успешно выгружена в файл: "+FNameГЭК[Iter];
                 else
                  Msg[Iter]=Msg[Iter]+Chr(13)+"Ошибка выгрузки графической электронной копии";
               fi;
              else
               Msg[Iter]=Msg[Iter]+Chr(13)+"Ошибка выгрузки графической электронной копии";
            fi;
           |ФорматГЭК=1:
            nn=0;
            ww=WordsCount(ГЭК[Iter],",");
            for w=1..ww do
             tmp=ExtractWord(w,ГЭК[Iter],",");
             nn=Раб.Вспом.Сканер.ЧитатьГЭК(ExtractWord(1,tmp,":"),Int(ExtractWord(2,tmp,":")),"jpg",w=1);
            od;
            if not nn=0:
               if fПапкаГЭК:
                  tmp=FolderГЭК+"ЗКР"+НомДок[Iter];
                  CreateFolder(tmp);
                  tmp=tmp+"\ЗКР"+НомДок[Iter]+".";
                 else
                  tmp=FolderГЭК+"ЗКР"+НомДок[Iter]+".";
               fi;
               for n=1..nn do
                CopyFile(Раб.Вспом.Сканер.ФайлГЭК[n],tmp+"лист"+Format("%.2D",n)+".jpg");
                if ExistFile(tmp+"лист"+Format("%.2D",n)+".jpg"):
                   if n=1:
                      FNameГЭК[Iter]=tmp+"лист"+Format("%.2D",n)+".jpg";
                      Msg[Iter]=Msg[Iter]+Chr(13)+"Графическая электронная копия успешно выгружена в файл: "+FNameГЭК[Iter];
                     else
                      Msg[Iter]=Msg[Iter]+Chr(13)+"ЗКР"+НомДок[Iter]+".лист"+Format("%.2D",n)+".jpg";
                      FNameГЭК[Iter]=FNameГЭК[Iter]+";ЗКР"+НомДок[Iter]+".лист"+Format("%.2D",n)+".jpg";
                   fi;
                  else
                   Msg[Iter]=Msg[Iter]+Chr(13)+"Ошибка выгрузки графической электронной копии";
                fi;


               od;
            fi;
         fi;
      fi; --if not ГЭК[Iter]="":
     od; --for Iter=iТабл..nТабл do
  fi; --if flagГЭК:
  CloseProgress;
  if not hНомРейс=НомРейс_:
     Message("Рейс успешно сформирован"+Chr(13)+"Для просмотра сформированных фалов нажмите на поле 'Статус'");
     Template.Field="Msg"; Template.Frame=1;
  fi;
  if Match(Folder,"A:*") or Match(Folder,"B:*"):
     if EnqOkCancel("Сделать копию выгруженных данных на ДРУГОЙ носитель?",mtConfirmation)=cmOk:
        State=0;
        for Iter=iРейс..nРейс do
         if not State=4 and not State=3 and ExistFile(FName[Iter]):
            State=Enquiry("","Файл "+FName[Iter]+" уже существует, перезаписать ?","Нет;Да;Нет для всех;Да для всех;Отмена",mtWarning);
            if State=5: Message("Отказ от создания копии",mtWarning); Exit; fi;
         fi;
         if not State=1 and not State=3:
            CopyFile(FTmp[Iter],FName[Iter]);
            if not FTmpГЭК[Iter]="": CopyFile(FTmpГЭК[Iter],FNameГЭК[Iter]); fi;
         fi;
        od;
     fi;
  fi;
 Finally
  CloseWorkArea(OWA);
  tmp="";
  for Iter=1..Упр do
   if not tmp=FTmp[Iter] and not FTmp[Iter]="":
      if ExistFile(FTmp[Iter]): DeleteFile(FTmp[Iter]); tmp=FTmp[Iter]; FTmp[Iter]=""; fi;
   fi;
   if not FTmpГЭК[Iter]="": 
      if ExistFile(FTmpГЭК[Iter]): DeleteFile(FTmpГЭК[Iter]); FTmpГЭК[Iter]=""; fi;
   fi;
  od;
  CloseProgress;
 end;
end;

Proc ЗаполнитьЗаказчика(Rec: Record);
 if not Rec=nil:
    Учр=Rec;
    УчрНаим=GetCardFieldS("Контрагент",Rec,"КорИмя");
    XXXXX=GetCardFieldS("Контрагент",Rec,"РПО_КБП");
    if not Length(XXXXX)=5: XXXXX=""; fi;
 fi;
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])));
 ЗагрузитьРейс(ДатаРейс,n);
 Return Cur;
end;

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

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

Proc УчрНаим_OnExit(FieldName: String; Iter: Integer);
 if УчрНаим="": Учр=nil; fi;
 if УчрФ:
    Очистить(0);
 fi;
end;

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

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

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

Func ВзятьИзЗКР_ЛС_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=OpenCardFile(SelfCrd,"--Учитывать");
 if not Rec=nil:
    ЗаполнитьЗаказчика(GetCardFieldR(SelfCrd,Rec,"Рекв"));
    Банк=GetCardFieldR(SelfCrd,Rec,"Банк");
    ОтправБанк=GetCardFieldS("БАНК_СЧЕТА",Банк,"РПО_ЛСЧЕТ")+" в "+GetCardFieldS("БАНК_СЧЕТА",Банк,"РПО_ОФК_ИМЯ")+" ("+GetCardFieldS("БАНК_СЧЕТА",Банк,"РПО_Коммент")+")";
    if ЛсФ:
       Очистить(0);
    fi;
 fi;
 Return False;
end;

Func Ф_OnEnter(FieldName: String; Iter: Integer): logical;
  var tmp:l;
    tmp=GetVariableL(FieldName);
    tmp= not tmp;
    PutVariableL(Fieldname, tmp);
    Настр(True);
  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 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;
 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,False);
    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 ГЭК_OnEnter(FieldName: String; Iter: Integer): logical;
var w,ww,OWA:i;
var tmp:S;
 if not fГЭК: Message("Выгрузка графической электронной копии запрещена",mtWarning); Template.Object="cbГЭК"; ^False; fi;
 OWA=OpenWorkArea(SelfCrd,"","UKey="+RecordToString(Key[Iter]));
 Try
  if Records(OWA)=0: Message("Заявка на кассовый расход не найдена",mtError); ^False; fi;
  РасчетГЭК(OWA,1,-1,Iter);
 Finally
  CloseWorkArea(OWA);
 end;
 ClearVariable(Buf);
 if ГЭК_[Iter]="":
    Message("Документ не был отсканирован");
   else
    ww=WordsCount(ГЭК_[Iter],Chr(13));
    for w=1..ww do
     Buf[w]=Trim(ExtractWord(w,ГЭК_[Iter],Chr(13)));
    od;
    if ww=1: w=1; else w=Alternate("Выберите документ",Buf,-1,1,12); fi;
    if not w=0:
       tmp=ExtractWord(w,ГЭК[Iter],",");
       Раб.Вспом.Сканер.Вызвать(ExtractWord(1,Buf[w],":"),ExtractWord(1,tmp,":"),Int(ExtractWord(2,tmp,":")),"jpg",True,True);
    fi;
 fi;
 Return False;
end;

Func Msg_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter,ww:I;
var tmp:s;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if not Key[Iter]=nil:
    if not FName[Iter]="":
       ExecuteProgram("NotePad '"+FName[Iter]+"'");
       if not FNameГЭК[Iter]="":
          ww=WordsCount(FNameГЭК[Iter],";");
          tmp=ExtractWord(1,FNameГЭК[Iter],";");
          ExecuteProgram('"'+tmp+'"');
       fi;
      else
       OpenBlank("Документы.Банк.ЗАЯВКА_КР",True,Key[Iter]);
       Проверить(Iter,False);
    fi;
 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); if not Test="Test": Exit; fi; fi;
 Test="";
 if not SumOfArray(Wrn,Упр)=0:
    if EnqOkCancel("В результате проверки обнаружено предупреждений :"+Str(SumOfArray(Wrn,Упр))+" Игнорировать предупреждения ?",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=Раб.вспом.СЭД.ПолучитьПапку("ZR","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(Sender: String);
var Iter,n:I;
var bln:S;
 bln="ДОКУМЕНТЫ.БАНК.ОПИСЬ_ВЫГРУЗКИ_ЗАЯВОК";
 ExecuteProc(bln+".ОчиститьBuf");
 PutVariableS(bln+".Режим","ЗКР");
 PutVariableD(bln+".ДатаОпись",ДатаРейс);
 for Iter=1..Упр do
  if not Key[Iter]=nil:
     n=n+1;
     PutVariableR(bln+".BufДок["+Str(n)+"]",Key[Iter]);
  fi;
 od;
 PutVariableS(bln+".GUID",GetGUID);
 OpenBlank(bln,True);
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 Очистить_onClick (Row: Integer; Col: Integer; Double: Logical);
 if EnqOkCancel("Список будет очищен, продолжить ?",mtWarning)=cmCancel: Exit; fi;
 Очистить(0);
end;

Proc Загрузить_onClick(Row: Integer; Col: Integer; Double: Logical);
 if Учр=nil or УчрНаим="": Message("Выберите собственные реквизиты",mtError); Template.Field="УчрНаим"; Exit; fi;
 if ДН>ДК and not ДК=1.1.100: Message("Начальная дата превышает конечную",mtError); Template.Field="ДН"; Exit; fi;
 ЗагрузитьДок(0,ПолучитьФильтр(0,nil));
 Проверить(0,False);
end;

Proc Проверить_onClick(Row: Integer; Col: Integer; Double: Logical);
 Проверить(0,False);
end;

Proc НаОшибку_OnClick(Row: Integer; Col: Integer; Double: Logical);
 if SumOfArray(Err)=0 then 
    if SumOfArray(Wrn)=0 then Message('Ошибок не обнаружено'); Exit; fi;
    НаОшибку(False);
   else
    НаОшибку(True);
 fi;
end;

Proc cbГЭК_OnChange(Sender: String);
 Настр(True);
 if fГЭК:
    Проверить(0,False);
   else
    ClearVariable(ГЭК);
    ClearVariable(ГЭК_);
 fi;
 cbГЭК.State=fГЭК;
 Оформление;
end;

Proc OnChange(Sender: String);
 Настр(True);
end;
--Обработчики событий объектов шаблона-----
--
--Обработчики событий шаблона -----
Proc onOpen(Create:L);
var Rec: Record;
 Настр(False);
 Инициализация;
 ДатаРейс=ToDay;
 НомРейсСлед;
 if XXXXX="" or Учр=nil:
    Rec=Раб.Бюджет2005.НашРекв;
    ЗаполнитьЗаказчика(Rec);
 fi;
 Оформление;
end;
--Обработчики событий шаблона -----
--
Конец
