-- Шаблон создан мастером бланков
-- 12.01.2015 16:38:20
--
БланкСШаблоном "Информация о месте нахождении";

var РПО_Страна:S;
var РПО_ОКСМ:S;
var РПО_МН_Индекс:S;
var refРПО_МН_Субъект:Record;
var РПО_МН_Субъект_Регион:S;
var РПО_МН_Субъект_Код:S;
var РПО_МН_НасПункт:S;
var РПО_МН_ОКТМО:S;
var РПО_МН_Улица:S;
var РПО_МН_Дом:S;
var РПО_МН_Офис:S;

var fОКСМ:I;
var fКодРег:I;

var tplField:S;
var tplFrame:I;
var Run:L;

var Buf []:S;
var Buf2[]:S;
var Buf3[]:S;
--
--Процедуры и функции -------------
Func ЗагрузкаСправ(fVal:I; Crd:S; Enq:S):I;
var OWA:i;
var tmp:S;
 if not ExistsCardFile(Crd) or not isVisible(Crd): ^-1; fi;
 OWA=OpenWorkArea(Crd,"","");
 Try
  if Records(OWA)=0: fVal=0; else fVal=1; fi;
 Finally
  CloseWorkArea(OWA);
 end;
 if fVal=1: ^fVal; fi;
 fVal=-1;
 tmp=PlanVar("Std_Rpo");
 if CanInsert(Crd) and CanUpdate(Crd) and CanDelete(Crd) and ExistFile(tmp+"\DBF\"+Crd+".cdf") and ExistFile(tmp+"\DBF\"+Crd+".cdf"):
    if EnqOkCancel(Enq,mtWarning)=cmCancel: ^fVal; fi;
    ImportCard(ieCRD, --Формат
               Crd, --Картотека обязательное имя картотеки, в которую импортируется заданный файл
               PlanVar("Std_Rpo")+"\DBF\"+Crd, --Файл полное или короткое имя файла со структурой заданной картотеки
               False, --ВидимПоля загружать только видимые поля (Истина) или все поля (Ложь)
               False, --Режим загружать поля CreateTime, UpdateTime, CreatedUser, ModifiedUser
               False, --DOS загружать текст в кодировке DOS (Истина) или в кодировке Windows (Ложь);
               True, --Подтв запрашивать подтверждения (Истина) или нет (Ложь).
               ovrNone, --Действ целочисленная константа для разрешения конфликтных ситуаций в импорте
               True, --Удал удалять содержимое картотеки (Истина) или нет (Ложь);
               True, --ПоказДиалог показывать диалог соответствия полей (Истина) даже
               False --Настройки логический параметр, определяющий, использовать ли настройки браузера картотеки при загрузке
               );
    Message("Загрузка завершена");
    fVal=1;
 fi;
 ^fVal;
end;

Func ЗагрузкаСправТекст(aCrd:S; flCode:s; flName:S; fVal:I):I;
var OWA,fTxt,z,i,ii:i;
var Crd,FName,Head,tmp,Код_,Код2_,Наим_:S;
 if fVal=1: ^fVal; fi;
 ClearVariable(Раб.Вспом.Контрагент_место.Buf);
 ClearVariable(Раб.Вспом.Контрагент_место.Buf2);
 ClearVariable(Раб.Вспом.Контрагент_место.Buf3);
 Crd=aCrd;
 if not ExistsCardFile(Crd) or not isVisible(Crd): ^-1; fi;
 FName=PlanVar("Std_Rpo")+"\DBF\"+Crd+".txt";
 if CanInsert(Crd) and CanUpdate(Crd) and ExistFile(FName):
    fVal=-1;
    Head="";
    fTxt=TextFileOpenRead(FName);
    Try
     While not TextFileEndOfFile(fTxt) do
      if Head="":
         Head=Trim(TextFileReadLn(fTxt));
         if not ExtractWord(1,Head,"|")=Crd or Int(ExtractWord(2,Head,"|"))=0:
            Message("Неизвестный формат файла",mtError);
            ^-1;
         fi;
        else
         tmp=Trim(TextFileReadLn(fTxt));
         Код_=Trim(ExtractWord(1,tmp,"|"));
         Код2_=Trim(ExtractWord(2,tmp,"|"));
         Наим_=Trim(ExtractWord(3,tmp,"|"));
--         if not Int(Код_)>0 and not Int(Код_)<100 or Наим_="":
--            Message("Недопустимое значение '"+tmp+"'",mtError);
--            ^-1;
--         fi;
         z=SearchInArray(Раб.Вспом.Контрагент_место.Buf,Код_,True);
         if z=-1:
            z=InsertInArraySort(Раб.Вспом.Контрагент_место.Buf,Код_);
            InsertInArray(Раб.Вспом.Контрагент_место.Buf2,z,Код_);
            InsertInArray(Раб.Вспом.Контрагент_место.Buf3,z,Наим_);
         fi;
      fi;
     od;
    Finally
     TextFileClose(fTxt);
    end;
    --
    OWA=OpenWorkArea(Crd,"");
    Try
     ii=Records(OWA);
     BeginChanging(OWA,False);
     Try
      for i=1..ii do
       z=SearchInArray(Раб.Вспом.Контрагент_место.Buf,GetFieldS(OWA,i,flCode),True);
       if not z=-1:
          if not Раб.Вспом.Контрагент_место.Buf3[z]=GetFieldS(OWA,i,flName):
             i=PutFieldS(OWA,i,flName,Buf3[z]);
          fi;
          DeleteFromArray(Раб.Вспом.Контрагент_место.Buf,z);
          DeleteFromArray(Раб.Вспом.Контрагент_место.Buf2,z);
          DeleteFromArray(Раб.Вспом.Контрагент_место.Buf3,z);
       fi;
      od;
      ii=LengthOfArray(Раб.Вспом.Контрагент_место.Buf);
      for i=1..ii do
       z=InsertRecord(OWA);
       z=PutFieldS(OWA,z,flCode,Раб.Вспом.Контрагент_место.Buf[i]);
       z=PutFieldS(OWA,z,flName,Раб.Вспом.Контрагент_место.Buf3[i]);
      od;
      EndChanging(OWA);
     Except
      CancelChanging(OWA);
      Raise;
     end;
    Finally
     CloseWorkArea(OWA);
    end;
    fVal=1;
 fi;
 ^fVal;
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Proc РПО_ОКСМ_OnExit(FieldName: String; Iter: Integer);
 РПО_Страна=Раб.Договор.ИмястраныПоКоду(РПО_ОКСМ,True);
end;

Func РПО_ОКСМ_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
 Template.HideEditor(False);
 if fОКСМ=0: fОКСМ=ЗагрузкаСправ(fОКСМ,"РПО_ОКСМ","Загрузить общероссийский классификатор стран мира ОКСМ ?"); fi;
 Rec=Раб.Документы.ВыборСФильтром("РПО_ОКСМ","ПОЛНИМЯ","");
 if not Rec=nil:
    РПО_ОКСМ=GetCardFieldS("РПО_ОКСМ",Rec,"КОД");
    РПО_ОКСМ_OnExit("РПО_ОКСМ",0);
 fi;
 Return Cur;
end;

Func РПО_МН_Индекс_OnEnter(FieldName: String; Iter: Integer): logical;
 if РПО_ОКСМ="": Message("Выберите код страны по ОКСМ",mtError); Template.Field="РПО_ОКСМ"; ^False; fi;
 if not РПО_ОКСМ="643": Message("Для иностранных контрагентов индекс не заполняется",mtError); Template.Field="РПО_ОКСМ"; ^False; fi;
 Return True;
end;

Func РПО_МН_Субъект_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if РПО_ОКСМ="": Message("Выберите код страны по ОКСМ",mtError); Template.Field="РПО_ОКСМ"; ^False; fi;
 if not РПО_ОКСМ="643": Message("Для иностранных контрагентов субъект не заполняется",mtError); Template.Field="РПО_ОКСМ"; ^False; fi;
 if fКодРег=0: fКодРег=ЗагрузкаСправТекст("КодРег","Код","Регион",fКодРег); fi;
 Rec=Раб.Документы.ВыборСФильтром("КодРег","Регион","");
 if not Rec=nil:
    refРПО_МН_Субъект=Rec;
    РПО_МН_Субъект_Регион=GetCardFieldS("КодРег",Rec,"Регион");
    РПО_МН_Субъект_Код=GetCardFieldS("КодРег",Rec,"Код");
 fi;
 Return False;
end;

Proc РПО_МН_Субъект_OnExit(FieldName: String; Iter: Integer);
 ClearVariable(refРПО_МН_Субъект);
 ClearVariable(РПО_МН_Субъект_Регион);
 ClearVariable(РПО_МН_Субъект_Код);
end;

Func РПО_МН_ОКТМО_OnEnter(FieldName: String; Iter: Integer): logical;
 if РПО_ОКСМ="": Message("Выберите код страны по ОКСМ",mtError); Template.Field="РПО_ОКСМ"; ^False; fi;
 if not РПО_ОКСМ="643": Message("Для иностранных контрагентов ОКТМО не заполняется",mtError); Template.Field="РПО_ОКСМ"; ^False; fi;
 Return True;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc AfterOpen(Destroy: Logical);
 fКодРег=ЗагрузкаСправТекст("КодРег","КОД","РЕГИОН",fКодРег);
 if Run:
    Run=False;
    Template.Field=tplField; 
    if tplFrame>0: Template.Frame=tplFrame; fi;
    Try
     РПО_МН_Субъект_Регион="";
     РПО_МН_Субъект_Код="";
     if not refРПО_МН_Субъект=nil:
        РПО_МН_Субъект_Регион=GetCardFieldS("КодРег",refРПО_МН_Субъект,"Регион");
        РПО_МН_Субъект_Код=GetCardFieldS("КодРег",refРПО_МН_Субъект,"Код");
     fi;
    Except
     РПО_МН_Субъект_Регион="";
     РПО_МН_Субъект_Код="";
    end;
 fi;
end;

Proc OnClose(Destroy: Logical);
 fОКСМ=0;
 fКодРег=0;
end;
--Обработчики событий шаблона -----
--




Конец
