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

var Ver:S="TXGS150701";

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

var Упр:I;

FlagLVS  :L=[False];
var FlagRules: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(FlagLVS,Раб.Бюджет2005.Format36(1007+НомРейс_),Раб.Бюджет2005.Format36(НомРейс_));
ИмяРейс_:S;
var ИмяРейс:S=if(FlagRules,XXXXX+DD+НомРейс+".GS"+M,ИмяРейс_);
Путь:S;

Учр:Record;
УчрНаим:S;
var ДН:D=[ToDay];
var ДК:D=[ToDay];
ИсклВыгруж:L=[True];
Секрет:I;
var Секрет_:S=Раб.Договор.Секретность(Секрет,False);

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

var пп[]:i=$;
var НомДок[]:S;
var НомДок_:S="";
var ДатаДок[]:D;
var ДатаДок_:D=1.1.100;
var Контр[]:S;
var СумДок[]:N;
var ТипСвед[]:S;
var Msg[]:S;
var Msg_:S="";
var Wrng[]:I;
var Err[]:I;
var UKey[]:S;
var FTmp[]:S;
var FName[]:S;
var Прил[]:S=if(UKey[$]="","","Открыть");

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

var GSR1_Key  []:S;
var GSR1_КБК  []:S;
var GSR1_ФАИП []:S;
var GSR1_Сум1 []:N;
var GSR1_Сум2 []:N;
var GSR1_Сум3 []:N;
var GSR1_Сум4 []:N;
var GSR1_Сум5 []:N;
var GSR1_Сум6 []:N;
var GSR1_Сум7 []:N;
var GSR1_Сум8 []:N;
var GSR1_Сум9 []:N;
var GSR1_Сум10[]:N;
var GSR1_Прим []:S;

var GSR2_Key  []:S;
var GSR2_КБК  []:S;
var GSR2_Сум1 []:N;
var GSR2_Сум2 []:N;
var GSR2_Сум3 []:N;
var GSR2_Сум4 []:N;
var GSR2_Сум5 []:N;
var GSR2_Сум6 []:N;
var GSR2_Сум7 []:N;
var GSR2_Сум8 []:N;
var GSR2_Сум9 []:N;
var GSR2_Сум10[]:N;
var GSR2_Прим []:S;

Folder:S;

var SelfCrd:S="РПО_Договор";

var Buf[]:S;
var Buf2[]:S;

var тчнКол:I=3;

var Run: Record;

var Head:S="FK|"+Ver+"|Турбо Бухгалтер 6.9 Бюджет-157н "+SubStr(Str(Версия.Сборка0),1,2)+"|"+SubStr(Str(Версия.Сборка0)+if(Версия.Сборка1<>0,"."+Str(Версия.Сборка1),"")+Версия.Сборка2,3,10)+"||";
--
--Процедуры и функции -------------
Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(НомДок);
 ClearVariable(ДатаДок);
 ClearVariable(Контр);
 ClearVariable(СумДок);
 ClearVariable(ТипСвед);
 ClearVariable(Msg);
 ClearVariable(Wrng);
 ClearVariable(Err);
 ClearVariable(UKey);
 ClearVariable(FTmp);
 ClearVariable(FName);
end;

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

Func ПроверитьКлассификатор (vCrd:S; vField:S; Val:S):L;
var OWA:I;
 OWA=OpenWorkArea(vCrd,"",vField+"='"+Val+"'");
 Try
  if Records(OWA)=0: ^False; fi;
 Finally
  CloseWorkArea(OWA);
 end;
 ^True;
end;

Func Проверить(Iter:I; Full:L):L;
var OWA,OWA2,n,n2,nr2,z1,z2,i,ii,OA:i;
var tmp,ОКП,ЕдИзм,КВОЗ,tmp2:S;
var СумДок,СумГод1,СумГод2,СумГод3,СумГод4,СумГод5,СумГод6,СумГод7,СумГод8,СумГод9,СумГод10,Сум,Цена,Кол,СумТМЦ:N;
var СумКБКГод1,СумКБКГод2,СумКБКГод3,СумКБКГод4,СумКБКГод5,СумКБКГод6,СумКБКГод7,СумКБКГод8,СумКБКГод9,СумКБКГод10:N;
var isБюдж,isВнеБюдж,isЦена:L;
 if Iter=0: УдалитьПустыеСтроки; fi;
 if Full:
    if ДатаРейс=1.1.100: Message("Введите дату формирования документов (рейса)",mtError); Template.Field="ДатаРейс"; ^False; fi;
    if НомРейс_=0: Message("Введите порядковый номер рейса",mtError);  Template.Field="НомРейс_"; ^False; fi;
    if FlagLVS:
       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 FlagRules:
       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 Ukey[1]="": Message("Заполните список выгружаемых контрактов",mtError); ^False; fi;
 fi;
 if Iter>0: z1=Iter; z2=Iter; Msg[Iter]=""; Wrng[Iter]=0; Err[Iter]=0;
   |True: z1=1; z2=Упр;  ClearVariable(Msg); ClearVariable(Wrng); ClearVariable(Err);
 fi;
 OWA=OpenWorkArea(SelfCrd,"","1=0");
 if z2-z1>0: ShowProgress(z2-z1,"Проверка...."); fi;
 Try
  for n=z1..z2 do
   ProgressPos(n);
   isБюдж=False; isВнеБюдж=False;
   SetFilter(OWA,"UKey="+UKey[n]);
   if Records(OWA)>0:
      ClearVariable(Buf);
      ClearVariable(Buf2);
      --Проверка регистрации
      if GetFieldL(OWA,1,"Рег")=False:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Контракт не принят к учету";
      fi;
      --Проверка учета в реестре ОФК
      if GetFieldL(OWA,1,"УЧЕТ_РЕЕСТР_ОФК")=False:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"В карточке контракт не установлен флаг 'Подлежит учету в реестре ГК'";
      fi;
      --Проверка выгрузки
      if not GetFieldI(OWA,1,"НОМРЕЙС")=0 and not GetFieldD(OWA,1,"ДАТАРЕЙС")=1.1.100:
         Wrng[n]=Wrng[n]+1;
         Buf2[Wrng[n]]=Buf2[Wrng[n]]+Chr(13)+"Контракт уже выгружался рейсом №"+Str(GetFieldI(OWA,1,"НОМРЕЙС"))+" от "+DateToString(GetFieldD(OWA,1,"ДАТАРЕЙС"));
      fi;
      --Страница0 Заказчик
      if GetFieldR(OWA,1,"Учр")=nil:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Не выбран заказчик";
        else
         --FROM.BUDG_LEVEL
         if GetFieldS(OWA,1,"Учр.ПолнИмя")="" and GetFieldS(OWA,1,"Учр.РПО_ПолнИмя2")="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните полное наименование заказчика";
         fi;
         --Наименование государственного заказчика
         if GetFieldS(OWA,1,"Учр.ПолнИмя")="" and GetFieldS(OWA,1,"Учр.РПО_ПолнИмя2")="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните полное наименование заказчика";
         fi;
         --ИНН государственного заказчика
         tmp=GetFieldS(OWA,1,"Учр.ИНН");
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ИНН заказчика";
           else
            if not Length(tmp)<=12:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ИНН заказчика должна быть <=12 знаков";
            fi;
         fi;
         --КПП государственного заказчика
         tmp=GetFieldS(OWA,1,"Учр.КПП");
         if tmp="":
            Wrng[n]=Wrng[n]+1;
            Buf2[Wrng[n]]=Buf2[Wrng[n]]+Chr(13)+"Заполните КПП заказчика";
           else
            if not Length(tmp)=9:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина КПП заказчика должна быть 9 знаков";
            fi;
         fi;
         --Идентификационный код заказчика
         tmp=GetFieldS(OWA,1,"Учр.РПО_ИКЗ");
         if not tmp="":
            if not Length(tmp)=20:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина идентификационного кода заказчика должна быть 20 знаков";
            fi;
         fi;
         --Идентификационный код закупки
         tmp=GetFieldS(OWA,1,"ИКЗ");
         if not tmp="":
            Wrng[n]=Wrng[n]+1;
            Buf2[Wrng[n]]=Buf2[Wrng[n]]+Chr(13)+"Идентификационный код закупки заполняется с 1.1.2016";
            if not Length(tmp)=254:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина идентификационного кода закупки должна быть <=254 знаков";
            fi;
         fi;
         --Код ведомства
         tmp=GetFieldS(OWA,1,"Учр.РПО_ППП");
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните код ведомства";
           else
            if not Length(tmp)=3:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода ведомства должна быть 3 знака";
            fi;
         fi;
         --Код государтсвенного заказчика СРГРР ПБС
         tmp=GetFieldS(OWA,1,"Учр.РПО_КБП");
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните КБП заказчика";
           else
            if not Length(tmp)=5:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина КБП заказчика должна 5 знаков";
            fi;
         fi;
      fi; --if GetFieldR(OWA,1,"Учр")=nil:
      --Руководитель
      tmp=GetFieldS(OWA,1,"ФИОРук");
      if tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ФИО руководителя заказчика";
        else
         if not Length(tmp)<=50:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ФИО руководителя заказчика должна быть <=50 знаков";
         fi;
      fi;
      --Дата подписи руководителя
      if GetFieldD(OWA,1,"ДатаРук")=1.1.100:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните дату подписи руководителя заказчика";
      fi;
      --Дата формирования сведений
      if GetFieldD(OWA,1,"ДатаСвед")=1.1.100:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните дату формирования сведений";
      fi;
      --
      if GetFieldR(OWA,1,"Учр_Банк")=nil:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Не выбран банковский реквизит заказчика";
        else
         --Наименование ТОФК
         tmp=GetFieldS(OWA,1,"Учр_Банк.РПО_ОФК_Имя");
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните наименование органа ФК заказчика";
           else
            if not Length(tmp)<=250:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина наименования органа ФК заказчика должна быть <=250 знаков";
            fi;
         fi;
         --Код ТОФК
         tmp=GetFieldS(OWA,1,"Учр_Банк.РПО_ОФК_Код");
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните код органа ФК заказчика";
           else
            if not Length(tmp)=4:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода органа ФК заказчика должна быть 4 знака";
            fi;
         fi;
      fi; --if GetFieldR(OWA,1,"Учр_Банк")=nil:
      --Страница 1 Поставщик
      if GetFieldR(OWA,1,"Контр")=nil:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Не выбран поставщик (исполнитель)";
        else
         --GSR4.UR_FIO Наименование юридического лица/ФИО физического лица
         tmp=Trim(GetFieldS(OWA,1,"Контр.ПолнИмя")+GetFieldS(OWA,1,"Контр.РПО_ПолнИмя2"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните полное наименование поставщика";
           else
            if not Length(tmp)<=255:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина полного наименования поставщика должна быть <=200 знаков";
            fi;
         fi;
         --GSR4.NAME_POST Сокращенное наименование
         --GSR4.UR_FIRM Фирменное название
         --GSR4.NAME_LAND Наименование страны
         tmp=Trim(GetFieldS(OWA,1,"Контр.РПО_Страна"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните наименование страны поставщика";
           else
            if not Length(tmp)<=80:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина наименования страны поставщика быть <=80 знаков";
            fi;
         fi;
         --GSR4.KOD_OKSM Код страны по ОКСМ
         tmp=Trim(GetFieldS(OWA,1,"Контр.РПО_ОКСМ"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните код страны поставщика по ОКСМ";
           else
            if not Length(tmp)=3:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода страны поставщика быть 3 знака";
            fi;
         fi;
         --GSR4.ADDRESS Почтовый адрес поставщика
         if GetFieldS(OWA,1,"КОНТР.РПО_ОКСМ")="643":
            if Trim(GetFieldS(OWA,1,"Контр.РПО_МН_Индекс"))="":
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните индекс местнонахождения поставщика";
            fi;
            if GetFieldR(OWA,1,"Контр.РПО_МН_Субъект")=nil:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните субъект местнонахождения поставщика";
              else
               if Trim(GetFieldS(OWA,1,"Контр.РПО_МН_Субъект.Регион"))="":
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните наименование субъекта местнонахождения поставщика";
               fi;
               if Trim(GetFieldS(OWA,1,"Контр.РПО_МН_Субъект.Код"))="":
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните код субъекта местнонахождения поставщика";
               fi;
            fi;
            if Trim(GetFieldS(OWA,1,"Контр.РПО_МН_ОКТМО"))="":
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ОКТМО населенного пункта местнонахождения поставщика";
            fi;
         fi;
         if Trim(GetFieldS(OWA,1,"Контр.РПО_МН_НасПункт"))="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните тип и наименование населенного пункта местнонахождения поставщика";
         fi;
         if Trim(GetFieldS(OWA,1,"Контр.РПО_МН_Улица"))="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните улицу местнонахождения поставщика";
         fi;
         if Trim(GetFieldS(OWA,1,"Контр.РПО_МН_Дом"))="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните номер дома местнонахождения поставщика";
         fi;
         --GSR4.INN_PS ИНН поставщика
         tmp=Trim(GetFieldS(OWA,1,"Контр.ИНН"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ИНН поставщика";
           else
            if GetFieldS(OWA,1,"КОНТР.РПО_ОКСМ")="643":
               if not Length(tmp)<=12:
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ИНН поставщика должна быть <=12 знаков";
               fi;
              else
               if not Length(tmp)<=100:
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ИНН поставщика должна быть <=100 знаков";
               fi;
            fi;
         fi;
         --GSR4.KPP_PS КПП поставщика
         if GetFieldI(OWA,1,"Контр.ТИП")=0 and GetFieldS(OWA,1,"КОНТР.РПО_ОКСМ")="643":
            tmp=Trim(GetFieldS(OWA,1,"Контр.КПП"));
            if tmp="":
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните КПП поставщика";
              else
               if not Length(tmp)=9:
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина КПП поставщика должна быть 9 знаков";
               fi;
            fi;
         fi; --if GetFieldI(OWA,1,"Контр.КПП")=0;
         --GSR4.STATUS Статус поставщика
         tmp=Trim(GetFieldS(OWA,1,"Контр.РПО_Статус"));
         if not tmp="" and not Length(tmp)=2 :
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода статуса поставщика должна быть 2 знака";
         fi;
         --GSR4.ОКОPF ОКОПФ
         tmp=Trim(GetFieldS(OWA,1,"КОНТР.КОПФ"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ОКОПФ поставщика";
           else
            if not Length(tmp)=5:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ОКОПФ поставщика должна быть 5 знаков";
            fi;
         fi;
         --GSR4.ОКПО
         tmp=Trim(GetFieldS(OWA,1,"КОНТР.ОКПО"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ОКПО поставщика";
           else
            if not Length(tmp)=8:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ОКПО поставщика должна быть 8 знаков";
            fi;
         fi;
         --GSR4.PHONE Телефон/факс поставщика
         tmp=Trim(GetFieldS(OWA,1,"Контр.Телефон"));
         if tmp="": tmp=Trim(GetFieldS(OWA,1,"Контр.ФАКС")); fi;
         tmp=Раб.Бюджет2005.Объединить(tmp,GetFieldS(OWA,1,"КОНТР.EMAIL"),",");
         if not Length(tmp)<=254:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина телефона/факса/адрес электронной почты поставщика должна быть <=254 знаков";
         fi;
      fi; --if GetFieldR(OWA,1,"Контр")=nil:
      --Страница 1 Поставщик 2
      OA=OpenArray(OWA,1,"Контр2","");
      ii=Records(OA);
      for i=1..ii do
       if GetFieldR(OA,i,"Контр")=nil:
          Err[n]=Err[n]+1;
          Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Не выбран поставщик №"+Str(1+i);
         else
         --GSR4.UR_FIO Наименование юридического лица/ФИО физического лица
         tmp=Trim(GetFieldS(OA,i,"Контр.ПолнИмя")+GetFieldS(OA,i,"Контр.РПО_ПолнИмя2"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните полное наименование поставщика №"+Str(1+i);
           else
            if not Length(tmp)<=255:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина полного наименования поставщика №"+Str(1+i)+" должна быть <=200 знаков";
            fi;
         fi;
         --GSR4.NAME_POST Сокращенное наименование
         --GSR4.UR_FIRM Фирменное название
         --GSR4.NAME_LAND Наименование страны
         tmp=Trim(GetFieldS(OA,i,"Контр.РПО_Страна"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните наименование страны поставщика №"+Str(1+i);
           else
            if not Length(tmp)<=80:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина наименования страны поставщика №"+Str(1+i)+" должна быть <=80 знаков";
            fi;
         fi;
         --GSR4.KOD_OKSM Код страны по ОКСМ
         tmp=Trim(GetFieldS(OA,i,"Контр.РПО_ОКСМ"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните код страны поставщика №"+Str(1+i)+" по ОКСМ";
           else
            if not Length(tmp)=3:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода страны поставщика №"+Str(1+i)+" должна быть 3 знака";
            fi;
         fi;
         --GSR4.ADDRESS Почтовый адрес поставщика
         if GetFieldS(OA,i,"КОНТР.РПО_ОКСМ")="643":
            if Trim(GetFieldS(OA,i,"Контр.РПО_МН_Индекс"))="":
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните индекс местнонахождения поставщика  №"+Str(1+i);
            fi;
            if GetFieldR(OA,i,"Контр.РПО_МН_Субъект")=nil:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните субъект местнонахождения поставщика №"+Str(1+i);
              else
               if Trim(GetFieldS(OA,i,"Контр.РПО_МН_Субъект.Регион"))="":
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните наименование субъекта местнонахождения поставщика №"+Str(1+i);
               fi;
               if Trim(GetFieldS(OA,i,"Контр.РПО_МН_Субъект.Код"))="":
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните код субъекта местнонахождения поставщика №"+Str(1+i);
               fi;
            fi;
            if Trim(GetFieldS(OA,i,"Контр.РПО_МН_ОКТМО"))="":
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ОКТМО населенного пункта местнонахождения поставщика №"+Str(1+i);
            fi;
         fi;
         if Trim(GetFieldS(OA,i,"Контр.РПО_МН_НасПункт"))="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните тип и наименование населенного пункта местнонахождения поставщика №"+Str(1+i);
         fi;
         if Trim(GetFieldS(OA,i,"Контр.РПО_МН_Улица"))="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните улицу местнонахождения поставщика №"+Str(1+i);
         fi;
         if Trim(GetFieldS(OA,i,"Контр.РПО_МН_Дом"))="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните номер дома местнонахождения поставщика №"+Str(1+i);
         fi;
         --GSR4.INN_PS ИНН поставщика
         tmp=Trim(GetFieldS(OA,i,"Контр.ИНН"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ИНН поставщика №"+Str(1+i);
           else
            if GetFieldS(OA,i,"КОНТР.РПО_ОКСМ")="643":
               if not Length(tmp)<=12:
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ИНН поставщика №"+Str(1+i)+" должна быть <=12 знаков";
               fi;
              else
               if not Length(tmp)<=100:
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ИНН поставщика №"+Str(1+i)+" должна быть <=100 знаков";
               fi;
            fi;
         fi;
         --GSR4.KPP_PS КПП поставщика
         if GetFieldI(OA,i,"Контр.ТИП")=0 and GetFieldS(OA,i,"КОНТР.РПО_ОКСМ")="643":
            tmp=Trim(GetFieldS(OA,i,"Контр.КПП"));
            if tmp="":
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните КПП поставщика №"+Str(1+i)+"";
              else
               if not Length(tmp)=9:
                  Err[n]=Err[n]+1;
                  Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина КПП поставщика №"+Str(1+i)+" должна быть 9 знаков";
               fi;
            fi;
         fi; --if GetFieldI(OA,i,"Контр.КПП")=0;
         --GSR4.STATUS Статус поставщика
         tmp=Trim(GetFieldS(OA,i,"Контр.РПО_Статус"));
         if not tmp="" and not Length(tmp)=2 :
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода статуса поставщика №"+Str(1+i)+" должна быть 2 знака";
         fi;
         --GSR4.ОКОPF ОКОПФ
         tmp=Trim(GetFieldS(OA,i,"КОНТР.КОПФ"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ОКОПФ поставщика №"+Str(1+i);
           else
            if not Length(tmp)=5:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ОКОПФ поставщика №"+Str(1+i)+" должна быть 5 знаков";
            fi;
         fi;
         --GSR4.ОКПО
         tmp=Trim(GetFieldS(OA,i,"КОНТР.ОКПО"));
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ОКПО поставщика №"+Str(1+i);
           else
            if not Length(tmp)=8:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина ОКПО поставщика №"+Str(1+i)+" должна быть 8 знаков";
            fi;
         fi;
         --GSR4.PHONE Телефон/факс поставщика
         tmp=Trim(GetFieldS(OA,i,"Контр.Телефон"));
         if tmp="": tmp=Trim(GetFieldS(OA,i,"Контр.ФАКС")); fi;
         tmp=Раб.Бюджет2005.Объединить(tmp,GetFieldS(OA,i,"КОНТР.EMAIL"),",");
         if not Length(tmp)<=254:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина телефона/факса/адрес электронной почты поставщика должна быть <=254 знаков";
         fi;
       fi; --if GetFieldR(OA,i,"Контр")=nil:
      od;
      --Страница 2 Общие сведения
      --GS.NUM_GK Номер ГК
      tmp=Trim(GetFieldS(OWA,1,"НомерДок"));
      if tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните номер контракта";
        else
         if not Length(tmp)<=100:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина номера контракта должна быть <=100 знаков";
         fi;
      fi;
      --GS.DATE_GK Дата заключения контракта
      if GetFieldD(OWA,1,"ДатаДок")=1.1.100:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните дату заключения контракта";
      fi;
      --GS.DATE_END_GK Срок действия контракта
      if GetFieldD(OWA,1,"ДатаК")=1.1.100:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните срок исполнения контракта";
      fi;
      --GS.VALUTA Валюта контракта
      tmp=Trim(GetFieldS(OWA,1,"ОКВ"));
      if tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните код валюты контракта";
        else
         if not Length(tmp)=3:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода валюты контракта должна быть 3 знака";
         fi;
      fi;
      --GS.PRICE Цена контракта в рублях
      СумДок=Round(GetFieldN(OWA,1,"СумДок"),2);
      if СумДок=0:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните сумму контракта";
      fi;
      --GS.CURS_VAL Курс к рублю
      if not GetFieldS(OWA,1,"ОКВ")="643":
         if Round(GetFieldN(OWA,1,"КурсВал"),4)=0:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните курс валюты";
         fi;
      fi;
      --I год контракта
      СумГод1=Round(GetFieldN(OWA,1,"СумГод1"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год1"),3,2);
      if not СумГод1=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните I год контракта";
      fi;
      --II год контракта
      СумГод2=Round(GetFieldN(OWA,1,"СумГод2"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год2"),3,2);
      if not СумГод2=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните II год контракта";
      fi;
      --III год контракта
      СумГод3=Round(GetFieldN(OWA,1,"СумГод3"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год3"),3,2);
      if not СумГод3=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните III год контракта";
      fi;
      --IV год контракта
      СумГод4=Round(GetFieldN(OWA,1,"СумГод4"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год4"),3,2);
      if not СумГод4=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните IV год контракта";
      fi;
      --V год контракта
      СумГод5=Round(GetFieldN(OWA,1,"СумГод5"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год5"),3,2);
      if not СумГод5=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните V год контракта";
      fi;
      --VI год контракта
      СумГод6=Round(GetFieldN(OWA,1,"СумГод6"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год6"),3,2);
      if not СумГод6=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните VI год контракта";
      fi;
      --VII год контракта
      СумГод7=Round(GetFieldN(OWA,1,"СумГод7"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год7"),3,2);
      if not СумГод7=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните VII год контракта";
      fi;
      --VIII год контракта
      СумГод8=Round(GetFieldN(OWA,1,"СумГод8"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год8"),3,2);
      if not СумГод8=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните VIII год контракта";
      fi;
      --IX год контракта
      СумГод9=Round(GetFieldN(OWA,1,"СумГод9"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год9"),3,2);
      if not СумГод9=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните IX год контракта";
      fi;
      --X год контракта
      СумГод10=Round(GetFieldN(OWA,1,"СумГод10"),2);
      tmp=SubStr(GetFieldS(OWA,1,"Год10"),3,2);
      if not СумГод10=0 and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните X год контракта";
      fi;
      --Контроль суммы документа и суммы по годам
      if not Round(СумДок,2)=Round(СумГод1+СумГод2+СумГод3+СумГод4+СумГод5+СумГод6+СумГод7+СумГод8+СумГод9+СумГод10,2):
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта отличается от суммы по годам";
      fi;
      --GS.INTERVAL_END_GK
      tmp=Trim(GetFieldS(OWA,1,"Пер"));
      if tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните периодичность исполнения контракта";
        else
         if not Length(tmp)<=254:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина периодичности исполнения контракта должна быть <=254 знаков";
         fi;
      fi;
      --GS.RASM Способ размещения
      tmp=Trim(GetFieldS(OWA,1,"РазмещЗаказ"));
      if tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните способ определения поставщика";
        else
         if not Length(tmp)=5:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина способа определения поставщика должна быть 5 знаков";
         fi;
      fi;
      --GS.DATE_ITOG Дата подведения результатов определения поставщика
      if GetFieldD(OWA,1,"ДатаИтог")=1.1.100 and not Match(GetFieldS(OWA,1,"РазмещЗаказ"),"20*"):
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните дату подведения результатов определения поставщика";
      fi;
      if not GetFieldD(OWA,1,"ДатаИтог")=1.1.100 and Match(GetFieldS(OWA,1,"РазмещЗаказ"),"20*"):
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Дата подведения результов определения поставщика (подрядчика, исполнителя) для способа определения поставщика 20XXX не заполняется";
      fi;
      --DOC_OSN.REKV_DATE Дата подтверждающего документа
      if GetFieldD(OWA,1,"ДатаДокОсн")=1.1.100:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните дату документа, подтверждающего основание заключения контракта";
      fi;
      --DOC_OSN.REKV_NUM Дата подтверждающего документа
      tmp=Trim(GetFieldS(OWA,1,"НомДокОсн"));
      if not tmp="":
         if not Length(tmp)<=254:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина номера документа, подтверждающего основание заключения контракта должна быть <=254 знаков";
         fi;
      fi;
      --DOC_OSN.REKV_NAME Наименование подтверждающего документа
      tmp=Trim(GetFieldS(OWA,1,"ВидДокОсн"));
      if tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните наименования документа, подтверждающего основание заключения контракта";
        else
         if not Length(tmp)<=254:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина наименования документа, подтверждающего основание заключения контракта должна быть <=254 знаков";
         fi;
      fi;
      OA=OpenArray(OWA,1,"ДокОсн","");
      ii=Records(OA);
      for i=1..ii do
       --DOC_OSN.REKV_DATE Дата подтверждающего документа
       if GetFieldD(OA,i,"Дат")=1.1.100:
          Err[n]=Err[n]+1;
          Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните дату документа №"+Str(i)+", подтверждающего основание заключения контракта";
       fi;
       --DOC_OSN.REKV_NUM Дата подтверждающего документа
       tmp=Trim(GetFieldS(OA,i,"Ном"));
       if not tmp="":
          if not Length(tmp)<=254:
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина номера документа №"+Str(i)+", подтверждающего основание заключения контракта должна быть <=254 знаков";
          fi;
       fi;
       --DOC_OSN.REKV_NAME Наименование подтверждающего документа
       tmp=Trim(GetFieldS(OA,i,"Наим"));
       if tmp="":
          Err[n]=Err[n]+1;
          Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните наименования документа №"+Str(i)+", подтверждающего основание заключения контракта";
         else
          if not Length(tmp)<=254:
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина наименования документа №"+Str(i)+", подтверждающего основание заключения контракта должна быть <=254 знаков";
          fi;
       fi;
      od;
      --GS.NUM_IZV Номер извещения об осуществлении закупки
      tmp=Trim(GetFieldS(OWA,1,"НомИзв"));
      if tmp="":
         if not Match(GetFieldS(OWA,1,"РазмещЗаказ"),"20*"):
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните номер извещения (приглашения) об осуществлении закупки";
         fi;
        else
         if not Length(tmp)<=254:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина номера извещения об осуществлении закупки должна быть <=254 знаков";
         fi;
      fi;
      --GS.PRO_SIZE Размер обеспечения контракта
--      if GetFieldN(OWA,1,"СумОб")=0:
--         Err[n]=Err[n]+1;
--         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните сумму обеспечения контракта";
--      fi;
      --GS.NUM_RBG Номер реестровой записи в реестре банковских гарантий
      tmp=ExecuteFuncS("Документы.ДоговорПост.Прил1_Свед_18Н.ВзятьНРЗ_БГ","ДОГОВОР."+GetFieldS(OWA,1,"Признак"));
      tmp=Trim(tmp);
      if not tmp="":
         if not Length(tmp)=13:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина номера реестровой записи в закрытом реестре банковских гарантий должна быть 13 знаков";
         fi;
      fi;
      --GS.NUM_RAS Номер реестровой записи расторгнутого контракта
      tmp=Trim(GetFieldS(OWA,1,"НРЗ_Аннул_КТ"));
      if not tmp="":
         if not Length(tmp)<=31:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина номера реестровой записи расторгнутого контракта должна быть <=31 знаков";
         fi;
      fi;
      --GS.NAME_PUB Источник финансирования контракта
      tmp=Trim(GetFieldS(OWA,1,"ИстФин"));
      if tmp="" and not GetFieldS(OWA,1,"КодБюдж")="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните источник финансирования контракта";
      fi;
      --GS.ОКТМО_PUB Код по ОКТМО
      tmp=Trim(GetFieldS(OWA,1,"ИстФин_ОКТМО"));
      if tmp="" and not GetFieldS(OWA,1,"КодБюдж")="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните ОКТМО источника финансирования контракта";
        else
         if not Length(tmp)=8:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода ОКТМО источника финансирования контракта должна быть 8 знаков";
         fi;
      fi;
      --GS.KOD_BUD Код бюджета
      tmp=Trim(GetFieldS(OWA,1,"КодБюдж"));
      if not tmp="":
         if not Length(tmp)=2:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода бюджета должна быть 2 знака";
           else
            if not tmp="11" and not tmp="14" and not tmp="15" and not tmp="16":
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Недопустимый код бюджета "+tmp;
            fi;
         fi;
      fi;
      --GS.KOD_BUD Наименование бюджета
      tmp=Trim(GetFieldS(OWA,1,"НаимБюдж"));
      if tmp="" and not GetFieldS(OWA,1,"КодБюдж")="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните наименование бюджета";
        else
         if not Length(tmp)<=254:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода бюджета должна быть <=254 знака";
         fi;
      fi;
      --GS.NAME_VNB Вид внебюджетых средств
      tmp=Trim(GetFieldS(OWA,1,"ВидВнеБюдж"));
      if not tmp="":
         if not Length(tmp)=2:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина вида внебюджетных средств должна быть 2 знака";
           else
            if not tmp="21" and not tmp="22" and not tmp="23" and not tmp="24":
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Недопустимый код внебюджетных средств "+tmp;
            fi;
         fi;
      fi;
      --Страница 4 Детализация по КБК
      OWA2=OpenWorkArea("РПО_ДОГОВОР_ПОЗИЦИИ","НП","ДОГОВОР="+UKey[n]);
      Try
       Nr2=Records(OWA2);
       if Nr2=0:
          Err[n]=Err[n]+1;
          Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните детализацию контракта по КБК";
         else
          СумКБКГод1=0; СумКБКГод2=0; СумКБКГод3=0; СумКБКГод4=0; СумКБКГод5=0; СумКБКГод6=0; СумКБКГод7=0; СумКБКГод8=0; СумКБКГод9=0; СумКБКГод10=0;
          for n2=1..nr2 do
           if Секрет>0:
              tmp=GetFieldS(OWA2,n2,"КБК0");
             else
              tmp=GetFieldS(OWA2,n2,"КБК");
           fi;
           if tmp="" or GetFieldS(OWA2,n2,"ВД")="":
              Err[n]=Err[n]+1;
              Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Таблица КБК стр.N"+Str(n2)+" Заполните детализацию контракта по КБК";
             else
              if GetFieldS(OWA2,n2,"ВД")="1": isБюдж=True; fi;
              if not GetFieldS(OWA2,n2,"ВД")="1" and not GetFieldS(OWA2,n2,"ВД")="3" and not GetFieldS(OWA2,n2,"ВД")="": isВнеБюдж=True; fi;
           fi;
           if not GetFieldR(OWA2,n2,"ФАИП")=nil:
              if not Length(GetFieldS(OWA2,n2,"ФАИП.Код"))=14:
                 Err[n]=Err[n]+1;
                 Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина кода объекта ФАИП должна быть 14 знаков";
              fi;
           fi;
           СумКБКГод1 =СумКБКГод1 +Round(GetFieldN(OWA2,n2,"СумГод1"),2);
           СумКБКГод2 =СумКБКГод2 +Round(GetFieldN(OWA2,n2,"СумГод2"),2);
           СумКБКГод3 =СумКБКГод3 +Round(GetFieldN(OWA2,n2,"СумГод3"),2);
           СумКБКГод4 =СумКБКГод4 +Round(GetFieldN(OWA2,n2,"СумГод4"),2);
           СумКБКГод5 =СумКБКГод5 +Round(GetFieldN(OWA2,n2,"СумГод5"),2);
           СумКБКГод6 =СумКБКГод6 +Round(GetFieldN(OWA2,n2,"СумГод6"),2);
           СумКБКГод7 =СумКБКГод7 +Round(GetFieldN(OWA2,n2,"СумГод7"),2);
           СумКБКГод8 =СумКБКГод8 +Round(GetFieldN(OWA2,n2,"СумГод8"),2);
           СумКБКГод9 =СумКБКГод9 +Round(GetFieldN(OWA2,n2,"СумГод9"),2);
           СумКБКГод10=СумКБКГод10+Round(GetFieldN(OWA2,n2,"СумГод10"),2);
          od;
          if not Round(СумКБКГод1,2)=Round(СумГод1,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год1")+" год отлична от суммы детализации по КБК";
          fi;
          if not Round(СумКБКГод2,2)=Round(СумГод2,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год2")+" год отлична от суммы детализации по КБК";
          fi;
          if not Round(СумКБКГод3,2)=Round(СумГод3,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год3")+" год отлична от суммы детализации по КБК";
          fi;
          if not Round(СумКБКГод4,2)=Round(СумГод4,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год4")+" год отлична от суммы детализации по КБК";
          fi;
          if not Round(СумКБКГод5,2)=Round(СумГод5,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год5")+" год отлична от суммы детализации по КБК";
          fi;
          if not Round(СумКБКГод6,2)=Round(СумГод6,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год6")+" год отлична от суммы детализации по КБК";
          fi;
          if not Round(СумКБКГод7,2)=Round(СумГод7,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год7")+" год отлична от суммы детализации по КБК";
          fi;
          if not Round(СумКБКГод8,2)=Round(СумГод8,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год8")+" год отлична от суммы детализации по КБК";
          fi;
          if not Round(СумКБКГод9,2)=Round(СумГод9,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год9")+" год отлична от суммы детализации по КБК";
          fi;
          if not Round(СумКБКГод10,2)=Round(СумГод10,2):
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта на "+GetFieldS(OWA,1,"Год10")+" год отлична от суммы детализации по КБК";
          fi;
       fi;
      Finally
       CloseWorkArea(OWA2);
      end;
      --
      tmp=Trim(GetFieldS(OWA,1,"КодБюдж"));
      tmp2=Trim(GetFieldS(OWA,1,"НаимБюдж"));
      if not tmp="" and tmp2="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните наименование бюджета";
        else
         if not Length(tmp2)<=254:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина наименование бюджета должна быть <=254 знака";
         fi;
      fi;
      if (tmp="" and not tmp2="") or (isБюдж and tmp=""):
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните код бюджета";
      fi;
      if not tmp="" and not isБюдж:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните детализацию контракта по КБК для бюджетных средств ("+tmp2+")";
      fi;
      --
      tmp=GetFieldS(OWA,1,"ВидВнеБюдж");
      if isВнеБюдж and tmp="":
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните вид внебюджетных средств";
      fi;
      if not tmp="" and not isВнеБюдж:
         Err[n]=Err[n]+1;
         Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните детализацию контракта по КБК для внебюджетных средств";
      fi;
      --Страница 5 Предмет договора
      OWA2=OpenWorkArea("РПО_ДОГОВОР_ПОЗИЦИИ_ТМЦ","НП","ДОГОВОР="+UKey[n]);
      Try
       Nr2=Records(OWA2);
       if Nr2=0:
          Err[n]=Err[n]+1;
          Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните объект закупки";
         else
          СумТМЦ=0;
          isЦена=False;
          for n2=1..nr2 do
           КВОЗ=GetFieldS(OWA2,n2,"КВОЗ");
           ОКП=GetFieldS(OWA2,n2,"ОКП");
           ЕдИзм=GetFieldS(OWA2,n2,"ЕдИзм");
           Цена=Round(GetFieldN(OWA2,n2,"Цена"),2);
           Кол=Round(GetFieldN(OWA2,n2,"Кол"),тчнКол);
           Сум=Round(GetFieldN(OWA2,n2,"Сум"),2);
           if not Round(Цена,2)=0 and Round(Кол,тчнКол)=0 and Round(Сум,2)=0:
              isЦена=True;
           fi;
           --GSR3.CODE_TOV Наименование товара, работ, услуг
           if КВОЗ="":
              Err[n]=Err[n]+1;
              Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Заполните код вида объекта закупки";
             else
              if not Length(КВОЗ)=1:
                 Err[n]=Err[n]+1;
                 Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Длина кода вида объекта закупки должна быть 1 знак";
                else
                 if Int(КВОЗ)<1 or Int(КВОЗ)>5:
                    Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Недопустимый код вида объекта закупки ("+КВОЗ+")";
                 fi;
              fi;
           fi;
           --GSR3.NAME_TOV Наименование товара, работ, услуг
           tmp=Trim(GetFieldS(OWA2,n2,"НАИМТМЦ")+GetFieldS(OWA2,n2,"НАИМТМЦ2")+GetFieldS(OWA2,n2,"НАИМТМЦ3")+GetFieldS(OWA2,n2,"НАИМТМЦ4"));
           if tmp="":
              Err[n]=Err[n]+1;
              Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Заполните наименование товара, работ, услуг";
           fi;
           --GSR3.KOD_OKP Код продукции по ОКПД
           if ОКП="":
              Err[n]=Err[n]+1;
              Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Заполните код ОКПД";
             else
              if not Length(ОКП)=12:
                 Err[n]=Err[n]+1;
                 Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Длина кода ОКПД должна быть 12 знаков";
                else
                 if not (Секрет>0 and Match(ОКП,"000000??????") and Pos(".",ОКП)=0):
                    if not ПроверитьКлассификатор("РПО_ОКПД","КОД",ОКП):
                       Wrng[n]=Wrng[n]+1;
                       Buf2[Wrng[n]]=Buf2[Wrng[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Код "+ОКП+" не найден в классификаторе ОКПД";
                    fi;
                 fi;
              fi;
           fi;
           --GSR3.ED_OKEI Единица измерения
           if ЕдИзм="":
              Err[n]=Err[n]+1;
              Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Заполните единицу измерения";
             else
              if not Length(ОКП)<=15:
                 Err[n]=Err[n]+1;
                 Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Длина единицы измерения должна быть <=15 знаков";
                else
                 if not ПроверитьКлассификатор("РПО_ОКЕИ","НКБО",ЕдИзм):
                    Wrng[n]=Wrng[n]+1;
                    Buf2[Wrng[n]]=Buf2[Wrng[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Единица измерения "+ЕдИзм+" не найдена в классификаторе ОКЕИ";
                 fi;
              fi;
           fi;
           --GSR3.VALUE_ED Цена за единицу
           if Round(Цена,2)=0:
              Err[n]=Err[n]+1;
              Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Заполните цену за единицу";
           fi;
           --GSR3.KOL Количество
           if Round(Кол,тчнКол)=0 and not Round(Сум,2)=0:
              Err[n]=Err[n]+1;
              Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Заполните количество";
           fi;
           --GSR3.SUM Сумма
           if Round(Сум,2)=0 and not Round(Кол,тчнКол)=0:
              Err[n]=Err[n]+1;
              Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Объект закупки стр.N"+Str(n2)+" Заполните сумму";
           fi;
           СумТМЦ=СумТМЦ+Сум;
          od;
          if not Round(СумТМЦ,2)=Round(СумДок,2) and not isЦена:
             Err[n]=Err[n]+1;
             Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Сумма контракта отлична от суммы предмета контракта";
          fi;
       fi;
      Finally
       CloseWorkArea(OWA2);
      end;
      --Первичные/изменные
      if GetFieldI(OWA,1,"ТипСвед")=1:
         --GS.NUM_BX Номер реестровой записи
         tmp=SubStr(Trim(GetFieldS(OWA,1,"Ном_Реестр_ОФК")),1,27);
         if tmp="":
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните номер реестровой записи";
           else
            if not Length(tmp)<=27:
               Err[n]=Err[n]+1;
               Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина номера реестровой записи должна быть <=27 знаков";
            fi;
         fi;
         --GS.DATA_REG Дата регистрации
         if GetFieldD(OWA,1,"Дата_Реестр_ОФК")=1.1.100:
            Err[n]=Err[n]+1;
            Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните дату регистрации сведений о контракта уполномоченным органом";
         fi;
        --GS.NUM_BO Учетный номер бюджетного обязателсьтва
        tmp=Trim(GetFieldS(OWA,1,"БО.РегНомер"));
        if tmp="":
           Err[n]=Err[n]+1;
           Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните учетный номер бюджетного обязательства";
          else
           if not Length(tmp)=16:
              Err[n]=Err[n]+1;
              Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Длина учетного номера бюджетногоа обязательства должна быть 16 знаков";
           fi;
        fi;
        --GS.IZM_TYPE Тип изменения
        if GetFieldI(OWA,1,"ТИПИЗМ")=0:
           Err[n]=Err[n]+1;
           Buf[Err[n]]=Buf[Err[n]]+Chr(13)+"Заполните тип изменения";
        fi;
      fi;
     else
      Err[n]=Err[n]+1;
      Buf[Err[n]]="Контракт не найден";
   fi; --if Records(OWA)>0:
   if Err[n]=0 and Wrng[n]=0:
      Msg[n]="Проверка пройдена";
     else
      if not Err[n]=0:
         Msg[n]="Ошибка!";
         for i=1..Err[n] do
          Msg[n]=Msg[n]+Buf[i];
         od;
      fi;
      if not Wrng[n]=0:
         Msg[n]=Раб.Бюджет2005.Объединить(Msg[n],"Предупреждение!",Chr(13));
         for i=1..Wrng[n] do
          Msg[n]=Msg[n]+Buf2[i];
         od;
      fi;
   fi;
   if Length(Msg[n])>252: Msg[n]=SubStr(Msg[n],1,252)+"...."; 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
     НомРейс_=Abs(GetFieldI(OWA,Nr,"НомРейс"))+1;
     if FlagLVS:
        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;
 Очистить;
 OWA=OpenWorkArea(SelfCrd,"","НомРейс="+Str(НР)+" and ДатаРейс>="+DateToString(ДР)+" and ДатаРейс<="+DateToString(ДР));
 Try
  Nr=Records(OWA);
  for n=1..Nr do
   InsertFrame(Упр,Упр+1);
   НомДок[Упр]=GetFieldS(OWA,n,"НОМЕРДОК");
   ДатаДок[Упр]=GetFieldD(OWA,n,"ДАТАДОК");
   Контр[Упр]=GetFieldS(OWA,n,"КОНТР.КОРИМЯ")+GetFieldS(OWA,n,"КОНТР.РПО_ПОЛНИМЯ2");
   СумДок[Упр]=GetFieldN(OWA,n,"СУМДОК");
   UKey[Упр]=RecordToString(GetRecordKey(OWA,n));
  od;
 Finally
  CloseWorkArea(OWA);
 end;
 Проверить(0,False);
end;

Proc ОбработатьКБК (vДоговор:S; vДоговорДоп:S);
var OWA,n,nr,z1,z2:i;
var tmp,Key:S;
 ClearVariable(GSR1_Key);
 ClearVariable(GSR1_КБК);
 ClearVariable(GSR1_ФАИП);
 ClearVariable(GSR1_Сум1);
 ClearVariable(GSR1_Сум2);
 ClearVariable(GSR1_Сум3);
 ClearVariable(GSR1_Сум4);
 ClearVariable(GSR1_Сум5);
 ClearVariable(GSR1_Сум6);
 ClearVariable(GSR1_Сум7);
 ClearVariable(GSR1_Сум8);
 ClearVariable(GSR1_Сум9);
 ClearVariable(GSR1_Сум10);
 ClearVariable(GSR1_Прим);
 ClearVariable(GSR2_Key);
 ClearVariable(GSR2_КБК);
 ClearVariable(GSR2_Сум1);
 ClearVariable(GSR2_Сум2);
 ClearVariable(GSR2_Сум3);
 ClearVariable(GSR2_Сум4);
 ClearVariable(GSR2_Сум5);
 ClearVariable(GSR2_Сум6);
 ClearVariable(GSR2_Сум7);
 ClearVariable(GSR2_Сум8);
 ClearVariable(GSR2_Сум9);
 ClearVariable(GSR2_Сум10);
 ClearVariable(GSR2_Прим);
 OWA=OpenWorkArea("РПО_ДОГОВОР_ПОЗИЦИИ",if(Секрет>0,"КБК0","КБК"),"ДОГОВОР="+vДоговор);
 Try
  Nr=Records(OWA);
  for n=1..nr do
   if Секрет>0:
      tmp=GetFieldS(OWA,n,"КБК0");
     else
      tmp=GetFieldS(OWA,n,"КБК");
   fi;
   if GetFieldS(OWA,n,"ВД")="1":
      Key=tmp+"#"+if(GetFieldR(OWA,n,"ФАИП")=nil,"",GetFieldS(OWA,n,"ФАИП.Код"))+"#"+GetFieldS(OWA,n,"Примеч");
      z1=SearchInArray(GSR1_Key,Key,True);
      if z1=-1:
         z1=InsertInArraySort(GSR1_Key,Key);
         InsertInArray(GSR1_КБК  ,z1,tmp);
         InsertInArray(GSR1_ФАИП ,z1,if(GetFieldR(OWA,n,"ФАИП")=nil,"",GetFieldS(OWA,n,"ФАИП.Код")));
         InsertInArray(GSR1_Сум1 ,z1,0);
         InsertInArray(GSR1_Сум2 ,z1,0);
         InsertInArray(GSR1_Сум3 ,z1,0);
         InsertInArray(GSR1_Сум4 ,z1,0);
         InsertInArray(GSR1_Сум5 ,z1,0);
         InsertInArray(GSR1_Сум6 ,z1,0);
         InsertInArray(GSR1_Сум7 ,z1,0);
         InsertInArray(GSR1_Сум8 ,z1,0);
         InsertInArray(GSR1_Сум9 ,z1,0);
         InsertInArray(GSR1_Сум10,z1,0);
         InsertInArray(GSR1_Прим ,z1,GetFieldS(OWA,n,"Примеч"));
      fi;
      GSR1_Сум1 [z1]=GSR1_Сум1 [z1]+GetFieldN(OWA,n,"СумГод1");
      GSR1_Сум2 [z1]=GSR1_Сум2 [z1]+GetFieldN(OWA,n,"СумГод2");
      GSR1_Сум3 [z1]=GSR1_Сум3 [z1]+GetFieldN(OWA,n,"СумГод3");
      GSR1_Сум4 [z1]=GSR1_Сум4 [z1]+GetFieldN(OWA,n,"СумГод4");
      GSR1_Сум5 [z1]=GSR1_Сум5 [z1]+GetFieldN(OWA,n,"СумГод5");
      GSR1_Сум6 [z1]=GSR1_Сум6 [z1]+GetFieldN(OWA,n,"СумГод6");
      GSR1_Сум7 [z1]=GSR1_Сум7 [z1]+GetFieldN(OWA,n,"СумГод7");
      GSR1_Сум8 [z1]=GSR1_Сум8 [z1]+GetFieldN(OWA,n,"СумГод8");
      GSR1_Сум9 [z1]=GSR1_Сум9 [z1]+GetFieldN(OWA,n,"СумГод9");
      GSR1_Сум10[z1]=GSR1_Сум10[z1]+GetFieldN(OWA,n,"СумГод10");
     else
      Key=tmp+"#"+GetFieldS(OWA,n,"Примеч");
      z2=SearchInArray(GSR2_Key,Key,True);
      if z2=-1:
         z2=InsertInArraySort(GSR2_Key,Key);
         InsertInArray(GSR2_КБК  ,z2,tmp);
         InsertInArray(GSR2_Сум1 ,z2,0);
         InsertInArray(GSR2_Сум2 ,z2,0);
         InsertInArray(GSR2_Сум3 ,z2,0);
         InsertInArray(GSR2_Сум4 ,z2,0);
         InsertInArray(GSR2_Сум5 ,z2,0);
         InsertInArray(GSR2_Сум6 ,z2,0);
         InsertInArray(GSR2_Сум7 ,z2,0);
         InsertInArray(GSR2_Сум8 ,z2,0);
         InsertInArray(GSR2_Сум9 ,z2,0);
         InsertInArray(GSR2_Сум10,z2,0);
         InsertInArray(GSR2_Прим ,z2,GetFieldS(OWA,n,"Примеч"));
      fi;
      GSR2_Сум1 [z2]=GSR2_Сум1 [z2]+GetFieldN(OWA,n,"СумГод1");
      GSR2_Сум2 [z2]=GSR2_Сум2 [z2]+GetFieldN(OWA,n,"СумГод2");
      GSR2_Сум3 [z2]=GSR2_Сум3 [z2]+GetFieldN(OWA,n,"СумГод3");
      GSR2_Сум4 [z2]=GSR2_Сум4 [z2]+GetFieldN(OWA,n,"СумГод4");
      GSR2_Сум5 [z2]=GSR2_Сум5 [z2]+GetFieldN(OWA,n,"СумГод5");
      GSR2_Сум6 [z2]=GSR2_Сум6 [z2]+GetFieldN(OWA,n,"СумГод6");
      GSR2_Сум7 [z2]=GSR2_Сум7 [z2]+GetFieldN(OWA,n,"СумГод7");
      GSR2_Сум8 [z2]=GSR2_Сум8 [z2]+GetFieldN(OWA,n,"СумГод8");
      GSR2_Сум9 [z2]=GSR2_Сум9 [z2]+GetFieldN(OWA,n,"СумГод9");
      GSR2_Сум10[z2]=GSR2_Сум10[z2]+GetFieldN(OWA,n,"СумГод10");
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
 end;
end;

Proc ВыгрузитьРейс;
var OWA1,OWA2,State,Iter,F,n,nn,OA,i,ii,hНомРейс_:I;
var Buf,Cache:S;
 for n=1..Упр do
  Msg[n]="Ожидание выгрузки...";
 od;
 hНомРейс_=НомРейс_;
 Cache=PlanVar("CACHE")+"\";
 ShowProgress(Упр,"Формирование рейса....");
 Try
  OWA1=OpenWorkArea(SelfCrd,"","1=0");
  Try
   for Iter=1..Упр do
    ProgressPos(Iter);
    FTmp[Iter]=Cache+GetGUID;
    FName[Iter]=Folder+ИмяРейс;
    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:
       SetFilter(OWA1,"UKey="+UKey[Iter]);
       ОбработатьКБК(UKey[Iter],"nil");
       F=TextFileCreate(FTmp[Iter]);
       Try
        Msg[Iter]="ОШИБКА ВЫГРУЗКИ";
        TextFileWriteLn(F,Head);
        --FROM Почтовая информация от отправителе файла
        TextFileAppendLn(F,"FROM|");
        --FROM.BUDG_LEVEL Уровень бюджета заказчика
        Buf=GetFieldS(OWA1,1,"УЧР_БАНК.РПО_КодБюдж");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --FROM.KOD_BPR Код заказчика
        Buf=GetFieldS(OWA1,1,"УЧР.РПО_КБП");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --FROM.NAME_BPR Полное наименование заказчика
        Buf=GetFieldS(OWA1,1,"УЧР.ПОЛНИМЯ");
        Buf=TrimLeft(Buf);
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWA1,1,"УЧР.РПО_ПОЛНИМЯ2");
        Buf=TrimRight(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --FROM.KOD_TOFK Код ОрФК
        TextFileAppendLn(F,"|");
        --FROM.NAME_TOFK Наименование ОрФК
        TextFileWriteLn(F,"|");
        --ТО Почтовая информация о получателе файла
        TextFileAppendLn(F,"TO|");
        --ТО.KOD_TOFK Код ОрФК
        Buf=GetFieldS(OWA1,1,"УЧР_БАНК.РПО_ОФК_КОД");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --ТО.NAME_TOFK Наименование ОрФК
        Buf=GetFieldS(OWA1,1,"УЧР_БАНК.РПО_ОФК_ИМЯ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileWriteLn(F,"|");
        --GS Общая информация по сведениям о контракте
        TextFileAppendLn(F,"GS|");
        --GS.GUID_FK Глобальный уникальный индетификатор
        TextFileAppendLn(F,"|");
        --GS.DATE_DOC Дата документа
        Buf=DateToString(GetFieldD(OWA1,1,"ДАТАСВЕД"));
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NAME_GZ Полное наименование заказчика
        Buf=GetFieldS(OWA1,1,"УЧР.ПОЛНИМЯ");
        Buf=TrimLeft(Buf);
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWA1,1,"УЧР.РПО_ПОЛНИМЯ2");
        Buf=TrimRight(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.SHORTNAME_GZ Сокращенное наименование заказчика
        Buf=GetFieldS(OWA1,1,"УЧР.КОРИМЯ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.IKU_GZ Идентификационный код заказчика
        Buf=GetFieldS(OWA1,1,"УЧР.РПО_ИКЗ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.IKZ_GZ Идентификационный код закупки
        Buf=GetFieldS(OWA1,1,"ИКЗ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.KOD_GZ Код по РПБС
        Buf=GetFieldS(OWA1,1,"УЧР.РПО_КБП");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.KOD_PPP Код ведомства
        Buf=GetFieldS(OWA1,1,"УЧР.РПО_ППП");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.INN_GZ ИНН  заказчика
        Buf=GetFieldS(OWA1,1,"УЧР.ИНН");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.INN_GZ КПП  заказчика
        Buf=GetFieldS(OWA1,1,"УЧР.КПП");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.KOD_TOFK Код ТОФК
        Buf=GetFieldS(OWA1,1,"УЧР_БАНК.РПО_ОФК_КОД");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NAME_TOFK Наименование ТОФК
        Buf=GetFieldS(OWA1,1,"УЧР_БАНК.РПО_ОФК_ИМЯ");
        Buf=TrimLeft(Buf);
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWA1,1,"УЧР_БАНК.РПО_ОФК_ИМЯ2");
        Buf=TrimRight(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NAME_PUB Источник финансирования контракта
        Buf=GetFieldS(OWA1,1,"ИСТФИН");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.ОКТМО_PUB Код по ОКТМО
        Buf=GetFieldS(OWA1,1,"ИСТФИН_ОКТМО");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NAME_BUD Наименование бюджета
        Buf=GetFieldS(OWA1,1,"НАИМБЮДЖ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.KOD_BUD Код бюджета
        Buf=GetFieldS(OWA1,1,"КОДБЮДЖ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NAME_VNB Код внебюджетных средств
        Buf=GetFieldS(OWA1,1,"ВИДВНЕБЮДЖ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.RASM Способ определения поставщика
        Buf=GetFieldS(OWA1,1,"РАЗМЕЩЗАКАЗ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.DATE_ITOG Дата подведения результатов определения поставщика
        if not GetFieldD(OWA1,1,"ДАТАИТОГ")=1.1.100:
           Buf=DateToString(GetFieldD(OWA1,1,"ДАТАИТОГ"));
          else
           Buf="";
        fi;
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.DATE_GK Дата заключения контракта
        Buf=DateToString(GetFieldD(OWA1,1,"ДАТАДОК"));
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.PRICE Цена контракта в рублях
        Buf=Str(GetFieldN(OWA1,1,"СУМДОК")*GetFieldN(OWA1,1,"КУРСВАЛ"),2);
        if Buf="0.00": Buf=""; fi;
--        if Round(GetFieldN(OWA1,1,"КУРСВАЛ"),4)=0:
--           Buf=Str(GetFieldN(OWA1,1,"СУМДОК"),2);
--          else
--           Buf=Str(GetFieldN(OWA1,1,"СУМДОК")*GetFieldN(OWA1,1,"КУРСВАЛ"),2);
--        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.PRICE_VAL Цена в валюте
        Buf=Str(GetFieldN(OWA1,1,"СУМДОК"),2);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.CURS_VAL Цена в валюте
        Buf=Str(GetFieldN(OWA1,1,"КУРСВАЛ"),4);
        if Buf="0.0000": Buf=""; fi;
--        if Buf="0.0000": Buf="1.0000"; fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.FORMULA Формула цены контракта
        Buf=GetFieldS(OWA1,1,"ФОРМУЛАЦЕНЫ1");
        Buf=TrimLeft(Buf);
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWA1,1,"ФОРМУЛАЦЕНЫ2");
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWA1,1,"ФОРМУЛАЦЕНЫ3");
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWA1,1,"ФОРМУЛАЦЕНЫ4");
        Buf=TrimRight(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.DATE_END_GK Срок исполнения контракта
        Buf=DateToString(GetFieldD(OWA1,1,"ДАТАК"));
        Buf=Trim(Buf);
        Buf=SubStr(Buf,4,255); --Тип Date1 MM.YYYY
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.INTERVAL_END_GK Периодичность исполнения контракта
        Buf=GetFieldS(OWA1,1,"ПЕР");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NUM_GK Номер ГК
        Buf=GetFieldS(OWA1,1,"НОМЕРДОК");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.VALUTA Валюта контракта
        Buf=GetFieldS(OWA1,1,"ОКВ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NUM_IZV Номер извещения об осуществлении закупкми
        Buf=GetFieldS(OWA1,1,"НОМИЗВ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.PRO_SIZE Размер обеспечения контракта
        Buf=Str(GetFieldN(OWA1,1,"СУМОБ"),2);
--        if Buf="0.00": Buf=""; fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NUM_RBG Номер реестровой записи в реестре банковских гарантий
        Buf=ExecuteFuncS("Документы.ДоговорПост.Прил1_Свед_18Н.ВзятьНРЗ_БГ","ДОГОВОР."+GetFieldS(OWA1,1,"Признак"));
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.DATE_REG Дата регистрации
        if GetFieldI(OWA1,1,"ТипСвед")=1:
           Buf=DateToString(GetFieldD(OWA1,1,"ДАТА_РЕЕСТР_ОФК"));
           Buf=Trim(Buf);
          else
           Buf="";
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NUM_BX Номер реестровой записи
        if GetFieldI(OWA1,1,"ТипСвед")=1:
           Buf=SubStr(GetFieldS(OWA1,1,"НОМ_РЕЕСТР_ОФК"),1,27);
           Buf=Trim(Buf);
          else
           Buf="";
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NUM_RAS Номер реестровой записи расторгнутого контракта
        Buf=GetFieldS(OWA1,1,"НРЗ_Аннул_КТ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NUM_BO Учетный номер бюджетного обязателсьтва
        if GetFieldI(OWA1,1,"ТипСвед")=1:
           Buf=GetFieldS(OWA1,1,"БО.РегНомер");
           Buf=Trim(Buf);
          else
           Buf="";
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.TYPE Тип сведений
        Buf=Str(GetFieldI(OWA1,1,"ТипСвед")+1);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NUM_IZM Номер изменения
        if GetFieldI(OWA1,1,"ТипСвед")=1:
           Buf=Str(GetFieldI(OWA1,1,"НПИзм"));
          else
           Buf="";
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.NAME_RUK Руководитель заказчика
        Buf=GetFieldS(OWA1,1,"ФИОРук");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.DOL_ISP Должность отвественного исполнителя органа ФК
        TextFileAppendLn(F,"|");
        --GS.NAME_ISP ФИО отвественного исполнителя органа ФК
        TextFileAppendLn(F,"|");
        --GS.DATE_ISP ФИО Дата подписи отвественного исполнителя органа ФК
        TextFileAppendLn(F,"|");
        --GS.PRIZ_SEK Признак секретности
        Buf=Str(GetFieldI(OWA1,1,"СЕКРЕТ"));
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.IZM_TYPE Тип изменения
        if GetFieldI(OWA1,1,"ТипСвед")=1:
           Buf=Str(Abs(GetFieldI(OWA1,1,"ТИПИЗМ")));
           if Buf="3": Buf="2";
             |Buf="4": Buf="1";
             |Buf="5": Buf="2";
           fi;
           Buf=SubStr(Buf,1,1);
          else
           Buf="";
        fi;
        TextFileAppendLn(F,Buf);
        TextFileWriteLn(F,"|");
        --DOC_OSN Реквизиты документов, подтверждающих основание закобчения контракта
        TextFileAppendLn(F,"DOC_OSN|");
        --DOC_OSN.REKV_DATE Дата подтверждающего документа
        Buf=DateToString(GetFieldD(OWA1,1,"ДАТАДОКОСН"));
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.REKV_NUM Номер подтверждающего документа
        Buf=GetFieldS(OWA1,1,"НОМДОКОСН");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GS.REKV_NAME Наименование подтверждающего документа
        Buf=GetFieldS(OWA1,1,"ВИДДОКОСН");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileWriteLn(F,"|");
        OA=OpenArray(OWA1,1,"ДОКОСН","");
        ii=Records(OA);
        for i=1..ii do
         --DOC_OSN Реквизиты документов, подтверждающих основание закобчения контракта
         TextFileAppendLn(F,"DOC_OSN|");
         --DOC_OSN.REKV_DATE Дата подтверждающего документа
         Buf=DateToString(GetFieldD(OA,i,"ДАТ"));
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GS.REKV_NUM Номер подтверждающего документа
         Buf=GetFieldS(OA,i,"НОМ");
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GS.REKV_NAME Наименование подтверждающего документа
         Buf=GetFieldS(OA,i,"НАИМ");
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileWriteLn(F,"|");
        od;
        --GSR1 За счет бюджетых средств
        nn=LengthOfArray(GSR1_КБК);
        for n=1..nn do
         --GSR1 За счет бюджетых средств
         TextFileAppendLn(F,"GSR1|");
         --GSR1.KOD_FKR Код по ФКР
         Buf=Раб.Бюджет2005.ВзятьКодКБК(GSR1_КБК[n],"КР","РП",False);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.KOD_STAT Код целевой статьи
         Buf=Раб.Бюджет2005.ВзятьКодКБК(GSR1_КБК[n],"КР","ЦС",False);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.KOD_VR Код вида расходов
         Buf=Раб.Бюджет2005.ВзятьКодКБК(GSR1_КБК[n],"КР","ВР",False);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.KOSGU КОСГУ
         Buf=Раб.Бюджет2005.ВзятьКодКБК(GSR1_КБК[n],"КР","КОСГУ",False);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.FAIP Код объекта по ФАИП
         Buf=GSR1_ФАИП[n];
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_I Сумма на I год
         if GSR1_Сум1[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум1[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_II Сумма на II год
         if GSR1_Сум2[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум2[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_III Сумма на III год
         if GSR1_Сум3[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум3[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_IV Сумма на IV год
         if GSR1_Сум4[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум4[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_V Сумма на V год
         if GSR1_Сум5[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум5[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_VI Сумма на VI год
         if GSR1_Сум6[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум6[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_VII Сумма на VII год
         if GSR1_Сум7[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум7[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_VIII Сумма на VIII год
         if GSR1_Сум8[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум8[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_IX Сумма на IX год
         if GSR1_Сум9[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум9[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_BS_X Сумма на X год
         if GSR1_Сум10[n]=0:
            Buf="";
           else
            Buf=Str(GSR1_Сум10[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.PRIM Примечание
         Buf=GSR1_Прим[n];
         TextFileAppendLn(F,Buf);
         TextFileWriteLn(F,"|");
        od;
        --GSR2 За счет внебюджетных средств
        nn=LengthOfArray(GSR2_КБК);
        for n=1..nn do
         --GSR2 За счет внебюджетных средств
         TextFileAppendLn(F,"GSR2|");
         --GSR2.KOSGU КОСГУ
         Buf=Раб.Бюджет2005.ВзятьКодКБК(GSR2_КБК[n],"КР","КОСГУ",False);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_I Сумма на I год
         if GSR2_Сум1[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум1[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_II Сумма на II год
         if GSR2_Сум2[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум2[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_III Сумма на III год
         if GSR2_Сум3[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум3[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_IV Сумма на IV год
         if GSR2_Сум4[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум4[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_V Сумма на V год
         if GSR2_Сум5[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум5[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_VI Сумма на VI год
         if GSR2_Сум6[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум6[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_VII Сумма на VII год
         if GSR2_Сум7[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум7[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_VIII Сумма на VIII год
         if GSR2_Сум8[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум8[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_IX Сумма на IX год
         if GSR2_Сум8[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум8[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR1.SUMM_VBS_X Сумма на X год
         if GSR2_Сум10[n]=0:
            Buf="";
           else
            Buf=Str(GSR2_Сум10[n],2);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR2.PRIM Примечание
         Buf=GSR2_Прим[n];
         TextFileAppendLn(F,Buf);
         TextFileWriteLn(F,"|");
        od;
        --GSR3 Предмет контракта
        OWA2=OpenWorkArea("РПО_ДОГОВОР_ПОЗИЦИИ_ТМЦ","НП","ДОГОВОР="+UKey[Iter]);
        Try
         nn=Records(OWA2);
         for n=1..nn do
          --GSR3 Предмет контракта
          TextFileAppendLn(F,"GSR3|");
          --GSR3.NUM_PP Номер п/п
          Buf=Str(GetFieldI(OWA2,n,"НП"));
          Buf=SubStr(Buf,1,10);
          TextFileAppendLn(F,Buf);
          TextFileAppendLn(F,"|");
          --GSR3.СODE_TOV Код вида объекта закупки
          Buf=GetFieldS(OWA2,n,"КВОЗ");
          TextFileAppendLn(F,Buf);
          TextFileAppendLn(F,"|");
          --GSR3.NAME_TOV Наименование товаров, работ, услуг
          Buf=GetFieldS(OWA2,n,"НаимТМЦ");
          Buf=TrimLeft(Buf);
          TextFileAppendLn(F,Buf);
          Buf=GetFieldS(OWA2,n,"НаимТМЦ2");
          TextFileAppendLn(F,Buf);
          Buf=GetFieldS(OWA2,n,"НаимТМЦ3");
          TextFileAppendLn(F,Buf);
          Buf=GetFieldS(OWA2,n,"НаимТМЦ4");
          Buf=TrimRight(Buf);
          TextFileAppendLn(F,Buf);
          TextFileAppendLn(F,"|");
          --GSR3.KOD_OKP Код продукции по ОКПД
          Buf=GetFieldS(OWA2,n,"ОКП");
          TextFileAppendLn(F,Buf);
          TextFileAppendLn(F,"|");
          --GSR3.ED_OKEI Единица измерения по ОКЕИ
          Buf=GetFieldS(OWA2,n,"ЕдИзм");
          Buf=Trim(Buf);
          TextFileAppendLn(F,Buf);
          TextFileAppendLn(F,"|");
          --GSR3.VALUE_ED Цена за единицу
          Buf=Str(GetFieldN(OWA2,n,"Цена"),2);
          TextFileAppendLn(F,Buf);
          TextFileAppendLn(F,"|");
          --GSR3.KOL
          if GetFieldL(OWA2,n,"ПоЦене"):
             Buf="";
            else
             Buf=Str(GetFieldN(OWA2,n,"Кол"),тчнКол);
             if SubStr(Buf,Length(Buf),1)="0":
                Buf=SubStr(Buf,1,Length(Buf)-1); --??????
             fi;
          fi;
          TextFileAppendLn(F,Buf);
          TextFileAppendLn(F,"|");
          --GSR3.SUM
          if GetFieldL(OWA2,n,"ПоЦене"):
             Buf="";
            else
             Buf=Str(GetFieldN(OWA2,n,"Сум"),2);
          fi;
          TextFileAppendLn(F,Buf);
          TextFileAppendLn(F,"|");
          --GSR3.SUM_TOTAL
          if GetFieldL(OWA2,n,"ПоЦене"):
             Buf=Str(GetFieldN(OWA1,1,"СУМДОК"),2);
            else
             Buf=Str(GetFieldN(OWA2,n,"Сум"),2);
          fi;
          TextFileAppendLn(F,Buf);
          TextFileWriteLn(F,"|");
         od;
        Finally
         CloseWorkArea(OWA2);
        end;
        --GSR4 Информация о поставщиках
        TextFileAppendLn(F,"GSR4|");
        --GSR4.NUM_PP Номер п/п
        Buf="1";
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.UR_FIO Наименование юридического лица/ФИО физиическго лица
        Buf=GetFieldS(OWA1,1,"КОНТР.ПОЛНИМЯ");
        Buf=TrimLeft(Buf);
        TextFileAppendLn(F,Buf);
        Buf=GetFieldS(OWA1,1,"КОНТР.РПО_ПОЛНИМЯ2");
        Buf=TrimRight(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.NAME_POST Сокращенное наименование
        if (GetFieldS(OWA1,1,"КОНТР.ПОЛНИМЯ")+GetFieldS(OWA1,1,"КОНТР.РПО_ПОЛНИМЯ2"))=GetFieldS(OWA1,1,"КОНТР.КОРИМЯ"):
           Buf="";
          else
           Buf=GetFieldS(OWA1,1,"КОНТР.КОРИМЯ");
        fi;
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.UR_FIRM Фирменное наименование
        TextFileAppendLn(F,"|");
        --GSR4.NAME_LAND Наименование страы
        if GetFieldS(OWA1,1,"КОНТР.РПО_ОКСМ")="643":
           Buf="";
          else
           Buf=GetFieldS(OWA1,1,"КОНТР.РПО_СТРАНА");
           Buf=Trim(Buf);
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.KOD_OKSM Код страны ОКСМ
        Buf=GetFieldS(OWA1,1,"КОНТР.РПО_ОКСМ");
        Buf=Trim(Buf);
        if Buf="643":
           Buf="";
        fi;
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.ADRESS Почтовый адрес поставщика
        if GetFieldS(OWA1,1,"КОНТР.РПО_ОКСМ")="643":
           Buf=Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_Индекс"))+",";
           TextFileAppendLn(F,Buf);
           Buf=if(GetFieldR(OWA1,1,"Контр.РПО_МН_Субъект")=nil,"",Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_Субъект.Регион"))+" "+Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_Субъект.Код")))+",";
           TextFileAppendLn(F,Buf);
           Buf=Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_НасПункт"))+",";
           TextFileAppendLn(F,Buf);
           Buf=Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_ОКТМО"))+","; --??? есть в приказе 18н
           TextFileAppendLn(F,Buf);
           Buf=Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_Улица"))+",";
           TextFileAppendLn(F,Buf);
           Buf=Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_Дом"));
           TextFileAppendLn(F,Buf);
           Buf=Trim(if(GetFieldS(OWA1,1,"Контр.РПО_МН_Офис")="","",","+GetFieldS(OWA1,1,"Контр.РПО_МН_Офис")));
           TextFileAppendLn(F,Buf);
          else
           Buf=Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_НасПункт"))+",";
           TextFileAppendLn(F,Buf);
           Buf=Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_Улица"))+",";
           TextFileAppendLn(F,Buf);
           Buf=Trim(GetFieldS(OWA1,1,"Контр.РПО_МН_Дом"));
           TextFileAppendLn(F,Buf);
           Buf=Trim(if(GetFieldS(OWA1,1,"Контр.РПО_МН_Офис")="","",","+GetFieldS(OWA1,1,"Контр.РПО_МН_Офис")));
           TextFileAppendLn(F,Buf);
        fi;
        TextFileAppendLn(F,"|");
        --GSR4.INN_PS ИНН Поставщика
        Buf=GetFieldS(OWA1,1,"КОНТР.ИНН");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.KPP_PS КПП Поставщика
        Buf=GetFieldS(OWA1,1,"КОНТР.КПП");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.STATUS Статус
        Buf=GetFieldS(OWA1,1,"КОНТР_СТАТУС");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.ОКОPF ОКОПФ
        Buf=GetFieldS(OWA1,1,"КОНТР.КОПФ");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.ОКПО
        Buf=GetFieldS(OWA1,1,"КОНТР.ОКПО");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --GSR4.PHONE Телефон/факс поставщика
        Buf=Trim(GetFieldS(OWA1,1,"КОНТР.ТЕЛЕФОН"));
        if Buf="": Buf=Trim(GetFieldS(OWA1,1,"КОНТР.ФАКС")); fi;
        Buf=Раб.Бюджет2005.Объединить(Buf,GetFieldS(OWA1,1,"КОНТР.EMAIL"),",");
        Buf=Trim(Buf);
        TextFileAppendLn(F,Buf);
        TextFileWriteLn(F,"|");
        --
        OA=OpenArray(OWA1,1,"Контр2","");
        ii=Records(OA);
        for i=1..ii do
         --GSR4 Информация о поставщиках
         TextFileAppendLn(F,"GSR4|");
         --GSR4.NUM_PP Номер п/п
         Buf=Str(1+i);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.UR_FIO Наименование юридического лица/ФИО физиическго лица
         Buf=GetFieldS(OA,i,"КОНТР.ПОЛНИМЯ");
         Buf=TrimLeft(Buf);
         TextFileAppendLn(F,Buf);
         Buf=GetFieldS(OA,i,"КОНТР.РПО_ПОЛНИМЯ2");
         Buf=TrimRight(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.NAME_POST Сокращенное наименование
         if (GetFieldS(OA,i,"КОНТР.ПОЛНИМЯ")+GetFieldS(OA,i,"КОНТР.РПО_ПОЛНИМЯ2"))=GetFieldS(OA,i,"КОНТР.КОРИМЯ"):
            Buf="";
           else
            Buf=GetFieldS(OA,i,"КОНТР.КОРИМЯ");
         fi;
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.UR_FIRM Фирменное наименование
         TextFileAppendLn(F,"|");
         --GSR4.NAME_LAND  Наименование страы
         if GetFieldS(OA,i,"КОНТР.РПО_ОКСМ")="643":
            Buf="";
           else
            Buf=GetFieldS(OA,i,"КОНТР.РПО_СТРАНА");
            Buf=Trim(Buf);
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.KOD_OKSM Код страны ОКСМ
         Buf=GetFieldS(OA,i,"КОНТР.РПО_ОКСМ");
         Buf=Trim(Buf);
         if Buf="643":
            Buf="";
         fi;
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.ADRESS Почтовый адрес поставщика
         if GetFieldS(OA,i,"КОНТР.РПО_ОКСМ")="643":
            Buf=Trim(GetFieldS(OA,i,"Контр.РПО_МН_Индекс"))+",";
            TextFileAppendLn(F,Buf);
            Buf=if(GetFieldR(OA,i,"Контр.РПО_МН_Субъект")=nil,"",Trim(GetFieldS(OA,i,"Контр.РПО_МН_Субъект.Регион"))+" "+Trim(GetFieldS(OA,i,"Контр.РПО_МН_Субъект.Код")))+",";
            TextFileAppendLn(F,Buf);
            Buf=Trim(GetFieldS(OA,i,"Контр.РПО_МН_НасПункт"))+",";
            TextFileAppendLn(F,Buf);
            Buf=Trim(GetFieldS(OA,i,"Контр.РПО_МН_ОКТМО"))+","; --??? есть в приказе 18н
            TextFileAppendLn(F,Buf);
            Buf=Trim(GetFieldS(OA,i,"Контр.РПО_МН_Улица"))+",";
            TextFileAppendLn(F,Buf);
            Buf=Trim(GetFieldS(OA,i,"Контр.РПО_МН_Дом"));
            TextFileAppendLn(F,Buf);
            Buf=Trim(if(GetFieldS(OA,i,"Контр.РПО_МН_Офис")="","",","+GetFieldS(OA,i,"Контр.РПО_МН_Офис")))+",";
            TextFileAppendLn(F,Buf);
           else
            Buf=Trim(GetFieldS(OA,i,"Контр.РПО_МН_НасПункт"))+",";
            TextFileAppendLn(F,Buf);
            Buf=Trim(GetFieldS(OA,i,"Контр.РПО_МН_Улица"))+",";
            TextFileAppendLn(F,Buf);
            Buf=Trim(GetFieldS(OA,i,"Контр.РПО_МН_Дом"));
            TextFileAppendLn(F,Buf);
            Buf=Trim(if(GetFieldS(OA,i,"Контр.РПО_МН_Офис")="","",","+GetFieldS(OA,i,"Контр.РПО_МН_Офис")))+",";
            TextFileAppendLn(F,Buf);
         fi;
         TextFileAppendLn(F,"|");
         --GSR4.INN_PS ИНН Поставщика
         Buf=GetFieldS(OA,i,"КОНТР.ИНН");
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.KPP_PS КПП Поставщика
         Buf=GetFieldS(OA,i,"КОНТР.КПП");
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.STATUS Статус
         Buf=GetFieldS(OA,i,"КОНТР.РПО_СТАТУС");
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.ОКОPF ОКОПФ
         Buf=GetFieldS(OA,i,"КОНТР.КОПФ");
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.ОКПО
         Buf=GetFieldS(OA,i,"КОНТР.ОКПО");
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileAppendLn(F,"|");
         --GSR4.PHONE Телефон/факс поставщика
         Buf=Trim(GetFieldS(OA,i,"КОНТР.ТЕЛЕФОН"));
         if Buf="": Buf=Trim(GetFieldS(OA,i,"КОНТР.ФАКС")); fi;
         Buf=Раб.Бюджет2005.Объединить(Buf,GetFieldS(OA,i,"КОНТР.EMAIL"),",");
         Buf=Trim(Buf);
         TextFileAppendLn(F,Buf);
         TextFileWriteLn(F,"|");
        od;
       Finally
        TextFileClose(F);
       end;
       CopyFile(FTmp[Iter],FName[Iter]);
       if not ExistFile(FName[Iter]): Message("Выгрузка прервана",mtError); Exit; fi;
       Msg[Iter]="Контракт успешно выгружен в файл: "+FName[Iter];
       if CanUpdate(SelfCrd):
          BeginChanging(OWA1,True);
          Try
           n=PutFieldI(OWA1,1,"НомРейс",НомРейс_);
           n=PutFieldD(OWA1,1,"ДатаРейс",ДатаРейс);
           EndChanging(OWA1);
          Except
           CancelChanging(OWA1);
           Raise;
          end;
          НомРейсСлед;
         else
          НомРейс_=НомРейс_+1;
          While НомРейсИспользуется(ДатаРейс,НомРейс_) do
           НомРейс_=НомРейс_+1;
          od;
       fi;
      else
       Msg[Iter]="Файл уже существует. Выгрузка не производилась";
    fi; --if not State=1:
   od; --for Iter=1..Упр do
  Finally
   CloseWorkArea(OWA1);
   CloseProgress;
  end;
  if Match(FName[1],"A:\*") or Match(FName[1],"B:\*"):
     if EnqOkCancel("Сделать копию выгруженных данных ?",mtConfirmation)=cmOk:
        State=0;
        for Iter=1..Упр 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]);
         fi;
        od;
     fi;
  fi;
 Finally
  for Iter=1..Упр do
   if ExistFile(FTmp[Iter]): DeleteFile(FTmp[Iter]); FTmp[Iter]=""; fi;
  od;
 end;
 if not hНомРейс_=НомРейс_:
    Message("Рейс успешно сформирован"+Chr(13)+"Для просмотра сформированных фалов нажмите на поле 'Статус'");
    Template.Field="Msg"; Template.Frame=1;
 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 FlagLVS:
    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,"НАИМДОК.НАИМ")+" №"+GetFieldS(OWA,n,"НОМЕРДОК")+" от "+GetFieldS(OWA,n,"ДАТАДОК");
  od;
 Finally
  CloseWorkArea(OWA);
 end;
 if nr=0: Message("За "+DateToString(ДатаРейс)+" выгрузка не производилась"); ^Cur; fi;
 n=Alternate("Список рейсов",Buf,-1,1,12);
 if n=0: ^Cur; fi;
 n=Int(SubStr(Buf[n],7,Pos(" --",Buf[n])-7));
 ЗагрузитьРейс(ДатаРейс,n);
 Return Cur;
end;

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

Func УчрНаим_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=OpenCardFile("Контрагент","--Наше",Учр,crdRecordOnly);
 if Rec=nil: ^False; fi;
 Учр=Rec;
 УчрНаим=GetCardFieldS("Контрагент",Rec,"КорИмя");
 XXXXX=GetCardFieldS("Контрагент",Rec,"РПО_КБП");
 Очистить;
 Return False;
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;
 ClearVariable(Buf);
 Секрет=Int(Раб.Договор.Секретность(Секрет,True));
 Очистить;
 if Упр<1: InsertFrame(Упр,1); fi;
 Return False;
end;

Proc Секрет_OnExit(FieldName: String; Iter: Integer);
 Очистить;
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 tmp:D;
 if Учр=nil or УчрНаим="": Message("Выберите заказчика",mtError); Template.Field="УчрНаим"; ^False; fi;
 if UKey[Iter]="": Rec=Nil; else Rec=StringToRecord(UKey[Iter]); fi;
 if FieldName="НомДок_": 
    Rec=Раб.Документы.ВыборСФильтром(SelfCrd,"НомерДок","РЕГ and not АННУЛИРОВАН and not ИСПОЛНЕН and УЧЕТ_РЕЕСТР_ОФК and Учр="+RecordToString(Учр)+" and Секрет="+Str(Секрет)+" and not ФЗ=0");
   |FieldName="ДатаДок_":
    tmp=Calendar;
    if tmp=1.1.100: ^False; fi;
    Rec=OpenCardFile(SelfCrd,"--РЕГ and not АННУЛИРОВАН and not ИСПОЛНЕН and УЧЕТ_РЕЕСТР_ОФК and ДатаСвед="+DateToString(tmp)+" and Учр="+RecordToString(Учр)+" and Секрет="+Str(Секрет)+" and not ФЗ=0",Rec);
   |True: 
    Rec=OpenCardFile(SelfCrd,"--РЕГ and not АННУЛИРОВАН and not ИСПОЛНЕН and УЧЕТ_РЕЕСТР_ОФК and Учр="+RecordToString(Учр)+" and Секрет="+Str(Секрет)+" and not ФЗ=0",Rec);
 fi;
 if Rec=nil: ^False; fi;
 НомДок[Iter]=GetCardFieldS(SelfCrd,Rec,"НОМЕРДОК");
 ДатаДок[Iter]=GetCardFieldD(SelfCrd,Rec,"ДАТАДОК");
 Контр[Iter]=GetCardFieldS(SelfCrd,Rec,"КОНТР.КОРИМЯ")+GetCardFieldS(SelfCrd,Rec,"КОНТР.РПО_ПОЛНИМЯ2");
 СумДок[Iter]=GetCardFieldN(SelfCrd,Rec,"СУМДОК");
 ТипСвед[Iter]=if(GetCardFieldI(SelfCrd,Rec,"ТИПСВЕД")=0,"Первич.","Измен.");
 UKey[Iter]=RecordToString(Rec);
 Проверить(Iter,False);
 Return False;
end;

Proc Док_onExit(FieldName: String; Iter: Integer);
 НомДок[Iter]="";
 ДатаДок[Iter]=1.1.100;
 Контр[Iter]="";
 СумДок[Iter]=0;
 Msg[Iter]="";
 Wrng[Iter]=0;
 Err[Iter]=0;
 UKey[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 ДатаДок_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Template.HideEditor(False);
 Док_onEnter(AsString(Template.Field),AsInteger(Template.Frame));
 Return Cur;
end;

Func Msg_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if Match(Msg[Iter],"Контракт успешно выгружен в файл:*"): ExecuteProgram("NotePad '"+FName[Iter]+"'");
   |not Err[Iter]=0 or not Wrng[Iter]=0: OpenBlank("Инфо.Договор",True,StringToRecord(UKey[Iter])); Проверить(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 Путь="":
    if ChooseFolder(Folder,"Сохранить как")=cmCancel: Message("Отказ от формирования рейса"); Exit; fi;
   else
    Folder=Путь;
 fi;
 ВыгрузитьРейс;
end;

Proc btnОпись_OnClick(Sender: String);
var Iter,n:I;
 ExecuteProc("ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_СВЕДЕНИЙ.ОчиститьBuf");
 PutVariableR("ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_СВЕДЕНИЙ.ОРГ",Учр);
 PutVariableR("ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_СВЕДЕНИЙ.БАНК",Раб.Бюджет2005.БанкСчет(Учр,False));
 PutVariableD("ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_СВЕДЕНИЙ.ДатаОпись",ДатаРейс);
 for Iter=1..Упр do
  if not UKey[Iter]="":
     n=n+1;
     PutVariableR("ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_СВЕДЕНИЙ.BufДок["+Str(n)+"]",StringToRecord(UKey[Iter]));
  fi;
 od;
 PutVariableS("ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_СВЕДЕНИЙ.GUID",GetGUID);
 OpenBlank("ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_СВЕДЕНИЙ",True);
end;

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

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

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

Proc btnЗагрузить_onClick(Sender: String);
var OWA,n,nr:i;
var F:S;
 if Учр=nil or УчрНаим="": Message("Выберите заказчика",mtError); Template.Field="УчрНаим"; Exit; fi;
 if ДК<ДН and not ДК=1.1.100: Message("Начальная дата превышает конечную",mtError); Template.Field="ДН"; Exit; fi;
 F="РЕГ and not АННУЛИРОВАН and not ИСПОЛНЕН and УЧЕТ_РЕЕСТР_ОФК and Учр="+RecordToString(Учр)+" and not ФЗ=0";
 if ИсклВыгруж: F=F+" and ДатаРейс=1.1.100 and НомРейс=0"; 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;
 F=F+" and Секрет="+Str(Секрет);
 Очистить;
 OWA=OpenWorkArea(SelfCrd,"",F);
 Try
  Nr=Records(OWA);
  ShowProgress(Nr,"Загрузка....");
  for n=1..Nr do
   ProgressPos(n);
   InsertFrame(Упр,Упр+1);
   НомДок[Упр]=GetFieldS(OWA,n,"НОМЕРДОК");
   ДатаДок[Упр]=GetFieldD(OWA,n,"ДАТАДОК");
   Контр[Упр]=GetFieldS(OWA,n,"КОНТР.КОРИМЯ");
   СумДок[Упр]=GetFieldN(OWA,n,"СУМДОК");
   ТипСвед[Упр]=if(GetFieldI(OWA,n,"ТИПСВЕД")=0,"Первич.","Измен.");
   UKey[Упр]=RecordToString(GetRecordKey(OWA,n));
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 Проверить(0,False);
end;

Proc btnПроверить_onClick (Obj:S);
var mt:I;
 Проверить(0,False);
 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;

Func Прил_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if Ukey[Iter]="": Message("Выберите контракт",mtError); Template.Field="НомДок"; Template.Frame=Iter; ^Cur; fi;
 Раб.Обмен.Очистить;
 Раб.Обмен.Recipient="ДОКУМЕНТЫ.ДОГОВОРПОСТ.ПРИЛ1_СВЕД_18Н";
 Раб.Обмен.BufS1[1]=Ukey[Iter];
 OpenBlank("ДОКУМЕНТЫ.ДОГОВОРПОСТ.ПРИЛ1_СВЕД_18Н",True);
 Раб.Обмен.Очистить;
 Return Cur;
end;
--Обработчики событий объектов шаблона-----
--
--Обработчики событий шаблона -----
Proc Template_onOpen(Create:L);
var Rec: Record;
 ДатаРейс=ToDay;
 НомРейсСлед;
 if XXXXX="" or Учр=nil:
    Rec=Раб.Бюджет2005.НашРекв;
    Учр=Rec;
    УчрНаим=GetCardFieldS("Контрагент",Rec,"КорИмя");
    if not Rec=nil: 
       XXXXX=GetCardFieldS("Контрагент",Rec,"РПО_КБП"); 
       if not Length(XXXXX)=5: XXXXX=""; fi;
    fi;
 fi;
 if not Run=nil:
    Rec=Run; Run=nil;
    Секрет=GetCardFieldI(SelfCrd,Rec,"Секрет");
    FlagLVS=Секрет>0;
    Очистить;
    InsertFrame(Упр,Упр+1);
    НомДок[Упр]=GetCardFieldS(SelfCrd,Rec,"НОМЕРДОК");
    ДатаДок[Упр]=GetCardFieldD(SelfCrd,Rec,"ДАТАДОК");
    Контр[Упр]=GetCardFieldS(SelfCrd,Rec,"КОНТР.КОРИМЯ");
    СумДок[Упр]=GetCardFieldN(SelfCrd,Rec,"СУМДОК");
    ТипСвед[Упр]=if(GetCardFieldI(SelfCrd,Rec,"ТИПСВЕД")=0,"Первич.","Измен.");
    UKey[Упр]=RecordToString(Rec);
    Проверить(Упр,False);
 fi;
end;

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

Конец
