-- Шаблон создан мастером бланков
-- 07.08.2014 14:07:30
--
БланкСШаблоном "Исполнительный документ", Редактор РПО_ИСПДОК;

var FlagEdit:L;

var УпрНастр:L;
var НастрПоУмолч:S="Настройка по умолчанию";
var НастрЗакр:S="Закрыть настройку";

var extКлюч:S;

var НастрGUID:S;

var Страница;

var МаскаСч:S;
var ИсклПризн:S="";

var Номер_:I=Номер;

var СканГЭК:S="Сканирование";
var ОбновГЭК:S="Обновить";
var ГЭКвPDF:S="Выгрузить в PDF";
ПутьPDF:S;

var УпрГЭК:I;
var пп	    []:I=$;
var ГЭКДат []:D;
var ГЭКЛист[]:S;
var ГЭККмнт[]:S;
var ГЭКCU  []:S;
var ГЭКMU  []:S;
var ГЭКRec []:Record;

var ОбновДвиж:S="Обновить";

var УпрДок:I;
var ДокCU[]:S;
var ДокMU[]:S;
var ДокОпр[]:D;
var ДокНаим[]:S;
var ДокНом[]:S;
var ДокДат[]:D;
var ДокКмнт[]:S;
var ДокТекРед[]:S;
var ДокTr[]:I;
var ДокRec[]:Record;
var ДокCrd[]:S;

var Отч:S="Отчет";
var Отч2:S="Отчет по проводкам";

btnOK	   :Object;
btnОтмена  :Object;
btnНастр   :Object;
btnЗакрыть :Object;
btnУдалить :Object;

btnСвед  :Object;
btnГЭК	 :Object;
btnДвиж  :Object;
btnСервис:Object;

S1: Section;
S2: Section;
S3: Section;
S4: Section;
S5: Section;
S6: Section;
S7: Section;
S8: Section;
var nS:I=1;

var SelfCrd:S="РПО_ИСПДОК";
var SelfBln:S="ИНФО.ИСПДОК";

var Buf[]:S;

var BufField[]:S;
var BufColorBg[]:I;
var BufColorFo[]:I;
var FlagInit:L;

var inНом:S;
var inДат:D;
var inСуд_Орган:S;
var inСум:N;
var inУведНом:S;
var inУведДат:D;
var inКонтр:Record;
var inКонтр_Банк:Record;

var SelfRecord:Record;
--
--Процедуры и функции -------------
Proc Настр(aСохр:L);
var Flag:L;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать(SelfBln,0,0,"",НастрGUID):
    Раб.Настр.Добавить("extКлюч","S");
    if aСохр: 
       Раб.Настр.Сохранить; 
      else 
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
	  Flag=ExecuteFuncL("НастрПоУмолч_OnEnter","",1);
       fi;
    fi;
 fi;
end;

Proc ОткрНастр (Flag:L);
 btnOK.Visible=not Flag;
 btnОтмена.Visible=not Flag;
 btnНастр.Visible=not Flag;
 btnЗакрыть.Visible=not Flag;
 btnУдалить.Visible=not Flag;
 btnСвед.Visible=not Flag;
 btnГЭК.Visible=not Flag;
 btnДвиж.Visible=not Flag;
 btnСервис.Visible=not Flag;
 УпрНастр=Flag;
 if Flag=True: Template.Field="extКлюч"; Template.Frame=1; fi;
end;

Proc Инициализация;
var Obj:Object;
var s,r,rr,c,cc,n,l,bgColor:i;
var Field:S;
 ClearVariable(BufField);
 ClearVariable(BufColorBg);
 ClearVariable(BufColorFo);
 for s=1..nS do
  if FindObject("S"+Str(s),Obj):
     rr=asInteger(Obj.RowsCount);
     cc=asInteger(Obj.ColsCount);
     for r=1 ..rr  do
      for c=1 ..cc  do
       Try
	BgColor=asInteger(Obj.Cell(r,c,CellBgColor,""));
	if BgColor=coAqua or BgColor=coTeal or BgColor=coLime:
	   Field=asString(Obj.Cell(r,c,CellContents,""));
	   if SearchInArray(BufField,Field,True)=-1:
	      n=InsertInArraySort(BufField,Field);
	      InsertInArray(BufColorBg,n,BgColor);
	   fi;
	fi;
       Except
       end;
      od;
     od;
  fi;
 od;
 l=LengthOfArray(BufField);
 for n=1..l do
  if BufColorBg[n]=coTeal: BufColorFo[n]=coWhite;
    |True: BufColorFo[n]=coBlack;
  fi;
 od;
end;

Proc Оформление;
var s,c,r,cc,rr,n,y:i;
var Obj: Object;
var Field:S;
var Flag:L;
 Flag=False;
 btnУдалить.Enabled=not Flag;
 for s=1..nS do
  if FindObject("S"+Str(s),Obj):
     rr=asInteger(Obj.RowsCount);
     cc=asInteger(Obj.ColsCount);
     for r=1 .. rr do
      for c=1 .. cc do
       Try
	Field=asString(Obj.Cell(r,c,CellContents,""));
	n=SearchInArray(BufField,Field,True);
	if not n=-1:
	   Obj.Cell(r,c,CellFontColor,if(Flag,coBlack,BufColorFo[n]));
	   Obj.Cell(r,c,CellBgColor,if(Flag,coTransparent,BufColorBg[n]));
	   Obj.Cell(r,c,CellReadOnly,Flag);
	fi;
       Except
       end;
      od;
      Field=asString(Obj.Cell(r,cc,CellContents,""));
     od;
   fi;
 od;
 Y=AsInteger(S1.Row(1,RowTop,""));
 btnСвед.Top=Y-70;
 btnГЭК.Top=Y-70;
 btnДвиж.Top=Y-70;
 btnСервис.Top=Y-70;
end;

Proc РасчетГЭК;
var OWA,n,nn,i1,i2:I;
var isNet:L;
var Rec: Record;
 if not Страница=2: Exit; fi;
 isNet=Раб.Бюджет2005.Сетевая;
 ClearVariable(УпрГЭК);
 ClearVariable(ГЭКCU);
 ClearVariable(ГЭКMU);
 ClearVariable(ГЭКДат);
 ClearVariable(ГЭКЛист);
 ClearVariable(ГЭККмнт);
 ClearVariable(ГЭКRec);
 OWA=OpenWorkArea("РПО_СКАН_ДОК","Дата","Док='"+SelfCrd+"' and Запись="+Str(RecordToInteger(Current)));
 Try
  nn=Records(OWA);
  ShowProgress(nn,"Расчет...");
  for n=1..nn do
   ProgressPos(n);
   Rec=GetRecordKey(OWA,n);
   i1=Раб.Вспом.Сканер.ЧитатьГЭК("РПО_СКАН_ДОК",RecordToInteger(Rec),"jpg",True);
   i2=Раб.Вспом.Файлы.ПоказСписок("РПО_СКАН_ДОК",RecordToInteger(Rec),"","","","","","",0);
   if not i1=0 or not i2=0:
      InsertFrame(УпрГЭК,УпрГЭК+1);
      ГЭКДат[УпрГЭК]=GetFieldD(OWA,n,"Дата");
      ГЭКЛист[УпрГЭК]=Str(i1)+" / "+Str(i2);
      ГЭККмнт[УпрГЭК]=GetFieldS(OWA,n,"Кмнт");
      ГЭКCU[УпрГЭК]=DateToString(GetFieldD(OWA,n,"CreateTime"))+" "+Раб.Бюджет2005.TimeToStr(GetFieldT(OWA,n,"CreateTime"),"")+if(isNet," "+GetFieldS(OWA,n,"CreatedUser"),"");
      ГЭКMU[УпрГЭК]=DateToString(GetFieldD(OWA,n,"UpdateTime"))+" "+Раб.Бюджет2005.TimeToStr(GetFieldT(OWA,n,"UpdateTime"),"")+if(isNet," "+GetFieldS(OWA,n,"ModifiedUser"),"");
      ГЭКRec[УпрГЭК]=Rec;
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
end;

Proc РасчетДвиж;
var t,tt,z,OWA,x,n:i;
var Rec: Record;
var Crd,tmp,sss:S;
var tДат,ДК:D;
var First,isNet:L;
 if not Страница=3 or Признак="":
    Exit;
 fi;
 ClearVariable(УпрДок);
 ClearVariable(ДокCU);
 ClearVariable(ДокMU);
 ClearVariable(ДокОпр);
 ClearVariable(ДокНаим);
 ClearVariable(ДокНом);
 ClearVariable(ДокДат);
 ClearVariable(ДокКмнт);
 ClearVariable(ДокТекРед);
 ClearVariable(ДокTr);
 ClearVariable(ДокRec);
 ClearVariable(ДокCrd);
 Refresh;
 if Name_A("ИСПДОК."+Признак)=" ": Exit; fi;
 isNet=Раб.Бюджет2005.Сетевая;
 Раб.ИмяПолеКарт.Инициализация;
 Раб.ИмяПолеКарт.Начать;
 ShowProgress(1,"Сбор данных...");
 Try
  ClearVariable(Buf);
  First=True;
  ДК=Dat(1,1,Year(ToDay)+1);
  for Transaction t="{ИСПДОК."+Признак+"}",1.1.100,ДК do
   if First:
      tt=ДК-TransDate(t);
      ShowProgress(tt*2,"Сбор данных...");
      First=False;
   fi;
   Rec=TransRecord(t);
   Crd=TransCardFile(t);
   tДат=TransDate(t);
   ProgressPos(tt-(ДК-tДат));
   if Rec=nil or Crd="Table_OPER":
      tmp=Раб.Формат.ДатаСтр(tДат,Раб.Формат.dfYYYYMMDD)+"#Table_OPER#"+Str(t);
      z=InsertInArraySort(Buf,tmp);
      InsertFrame(УпрДок,z);
      ДокОпр[z]=tДат;
      ДокНаим[z]="Журнал операций, проводка №";
      ДокНом[z]=Str(t);
      ДокДат[z]=tДат;
      ДокКмнт[z]=TransComment(t);
      if Crd="Table_OPER":
	 OWA=OpenWorkArea(Crd,"","UKey="+RecordToString(Rec));
	 Try
	  ДокCU[z]=DateToString(GetFieldD(OWA,1,"CreateTime"))+if(isNet," "+GetFieldS(OWA,1,"CreatedUser"),"");
	  ДокMU[z]=DateToString(GetFieldD(OWA,1,"UpdateTime"))+if(isNet," "+GetFieldS(OWA,1,"ModifiedUser"),"");
	 Finally
	  CloseWorkArea(OWA);
	 end;
      fi;
      ДокTr[z]=t;
      ДокТекРед[z]=sss;
     else
      tmp=Раб.Формат.ДатаСтр(tДат,Раб.Формат.dfYYYYMMDD)+"#"+Crd+"#"+RecordToString(Rec);
      z=SearchInArray(Buf,tmp,True);
      if z=-1:
	 z=InsertInArraySort(Buf,tmp);
	 InsertFrame(УпрДок,z);
	 ДокОпр[z]=tДат;
	 ДокНаим[z]=Раб.ИмяПолеКарт.ЗначПоляС(Crd,"ДОК",Rec);
	 if ДокНаим[z]="": ДокНаим[z]=Раб.ИмяПолеКарт.ИмяДокумента(Crd); fi;
	 ДокНом[z]=Раб.ИмяПолеКарт.ЗначПоляС(Crd,"НОМЕР",Rec);
	 ДокДат[z]=Раб.ИмяПолеКарт.ЗначПоляД(Crd,"ДАТА",Rec);
	 ДокКмнт[z]=Раб.ИмяПолеКарт.ЗначПоляС(Crd,"КОММЕНТ",Rec);
	 x=SearchInArray(Раб.ИмяПолеКарт.Crd,Crd,True);
	 if not x=-1:
	    n=GetRecordNumber(Раб.ИмяПолеКарт.OWA[x],Rec);
	    if n=0:
	       x=-1;
	      else
	       ДокCU[z]=DateToString(GetFieldD(Раб.ИмяПолеКарт.OWA[x],n,"CreateTime"))+if(isNet," "+GetFieldS(Раб.ИмяПолеКарт.OWA[x],n,"CreatedUser"),"");
	       ДокMU[z]=DateToString(GetFieldD(Раб.ИмяПолеКарт.OWA[x],n,"UpdateTime"))+if(isNet," "+GetFieldS(Раб.ИмяПолеКарт.OWA[x],n,"ModifiedUser"),"");
	    fi;
	 fi;
	 if x=-1:
	    OWA=OpenWorkArea(Crd,"","UKey="+RecordToString(Rec));
	    Try
	     ДокCU[z]=DateToString(GetFieldD(OWA,1,"CreateTime"))+if(isNet," "+GetFieldS(OWA,1,"CreatedUser"),"");
	     ДокMU[z]=DateToString(GetFieldD(OWA,1,"UpdateTime"))+if(isNet," "+GetFieldS(OWA,1,"ModifiedUser"),"");
	    Finally
	     CloseWorkArea(OWA);
	    end;
	 fi;
	 ДокTr[z]=t;
	 ДокТекРед[z]=sss;
      fi;
   fi;
  od;
 Finally
  Раб.ИмяПолеКарт.Закончить;
  CloseProgress;
 end;
end;

Proc ВывестиСтраницу;
 if Страница=0: Страница=1; fi;
 if not AsLogical(S1.Visible)=(Страница=1):
    S1.Visible=Страница=1;
 fi;
 btnСвед.Enabled=not Страница=1;
 --ГЭК
 if not AsLogical(S2.Visible)=(Страница=2):
    S2.Visible=Страница=2;
    S3.Visible=Страница=2;
    S4.Visible=Страница=2;
    РасчетГЭК;
 fi;
 btnГЭК.Enabled=not Страница=2;
 --Движение
 if not AsLogical(S5.Visible)=(Страница=3):
    S5.Visible=Страница=3;
    S6.Visible=Страница=3;
    S7.Visible=Страница=3;
    РасчетДвиж;
 fi;
 btnДвиж.Enabled=not Страница=3;
 --Сервис
 if not AsLogical(S8.Visible)=(Страница=4):
    S8.Visible=Страница=4;
 fi;
 btnСервис.Enabled=not Страница=4;
end;

Proc Страница_onClick(Sender: String);
 if Sender="btnСвед"  : Страница=1;
   |Sender="btnГЭК"   : Страница=2;
   |Sender="btnДвиж"  : Страница=3;
   |Sender="btnСервис": Страница=4;
 fi;
 ВывестиСтраницу;
 Оформление;
end;

Func ПризнакИспользуется(Field:S):L;
var tmp:S;
 if not CurrentState=CrdusInserted and not Признак="":
    Refresh;
    tmp=Раб.Бюджет2005.КартПризнакИспользуется(SelfCrd,"ПРИЗНАК",Current,"*");
    if not tmp="": 
       if Field="Номер_": Field="порядкового номера";
	 |True: Field="";
       fi;
       if not Field="":
	  Страница=3;
	  ВывестиСтраницу;
	  Message("Признак документа ("+tmp+") используется в проводках"+Chr(13)+"Изменение "+Field+" не возможно",mtError);
       fi;
       ^True;
    fi;
 fi;
 ^False;
end;

Func Проверить:L;
 if not Страница=1:
    Страница=1;
    ВывестиСтраницу;
 fi;
 if ДатВх=1.1.100: Message("Введите дату постпуления",mtError); Template.Field="ДатВх"; ^False; fi;
 if Наим=nil: Message("Выберите наименование документа",mtError); Template.Field="Наим.Наим"; ^False; fi;
 if Наим.Наим="": Message("Выберите наименование документа",mtError); Template.Field="Наим.Наим"; ^False; fi;
 if Ном="": Message("Введите номер документа",mtError); Template.Field="Ном"; ^False; fi;
 if Дат=1.1.100: Message("Введите дату документа",mtError); Template.Field="Дат"; ^False; fi;
 if Срок1=1.1.100: Message("Введите дату исполнения",mtError); Template.Field="Срок1"; ^False; fi;
 if Срок1<Дат: Message("Дата исполнения быть меньше даты документа",mtError); Template.Field="Срок1"; ^False; fi;
 if Срок2<Срок1 and not Срок2=1.1.100: Message("Дата отсрочки быть меньше даты исполнения",mtError); Template.Field="Срок2"; ^False; fi;
 if Round(Сум,2)=0: Message("Введите сумму",mtError); Template.Field="Сум"; ^False; fi;
 if Контр=nil: Message("Выберите контрагента",mtError); Template.Field="Контр.КорИмя"; ^False; fi;
 if Контр_Банк=nil: Message("Выберите банковские реквизиты контрагента",mtError); Template.Field="Контр_Банк"; ^False; fi;
 ^True;
end;

Func ЗаполнитьКлючДок:L;
var Flag:L;
 Flag=True;
 if FuncExists(extКлюч): 
    Flag=ExecuteFuncL(extКлюч);
 fi;
 ^Flag;
end;
--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func НастрПоУмолч_OnEnter(FieldName: String; Iter: Integer): logical;
 if FieldName="НастрПоУмолч":
    if EnqOkCancel("Восстановить значения по умолчанию ?",mtWarning)=cmCancel: ^False; fi;
 fi;
 if FieldName="НастрПоУмолч":
    Message("Значения по умолчанию восстановлены");
 fi;
 Return False;
end;

Func НастрЗакр_OnEnter(FieldName: String; Iter: Integer): logical;
 ОткрНастр(False);
 Настр(True);
 Return False;
end;

Func extFunc_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
 if not Value="":
    if not FuncExists(Value): Message("Функция '"+Value+"' не найдена",mtError); ^False; fi;
 fi;
 Return True;
end;

Func Номер_OnEnter(FieldName: String; Iter: Integer): logical;
 FlagEdit=not ПризнакИспользуется(FieldName);
 Return FlagEdit;
end;

Proc Номер_OnExit(FieldName: String; Iter: Integer);
-- EditorApply;
end;

Func Номер_OnVerify(FieldName: String; Iter: Integer; Value: Integer): logical;
 FieldName=SubStr(FieldName,1,Length(FieldName)-1);
 PutVariableI(FieldName,Value);
 Return True;
end;


Func Номер_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Template.HideEditor(False);
 Номер=Раб.Обл.СледФ(SelfCrd,"Номер","not UKey="+RecordToString(Current));
-- EditorApply;
 Return Cur;
end;

Func Наим_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec:Record;
 Rec=Раб.Вспом.Договор_Наим.Выполнить(0);
 if not Rec=nil: 
    Наим=Rec;
 fi;
 Return False;
end;

Func Дата_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:D;
var Field:S;
 Template.HideEditor(False);
 tmp=Calendar;
 if not tmp=1.1.100:
    Field=AsString(Template.Field);
    PutVariableD(Field,tmp);
 fi;
 Return Cur;
end;

Func Контр_onEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=Раб.Документы.ВыборСФильтром("Контрагент","ПолнИмя","");
 if not Rec=nil:
    Контр=Rec;
 fi;
 Return False;
end;

Proc Контр_onExit(FieldName: String; Iter: Integer);
 Контр=nil;
 Контр_Банк=nil;
end;

Proc Контр_OnClick(Row: Integer; Col: Integer; Double: Logical);

end;

Func Контр_Банк_onEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if Контр=nil: Message("Выберите контрагента",mtError); Template.Field="Контр.КорИмя"; ^False; fi;
 Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(Контр),Rec,crdRecordOnly);
 if not Rec=nil:
    Контр_Банк=Rec;
 fi;
 Return False;
end;

Proc Банк_OnClick(Row: Integer; Col: Integer; Double: Logical);

end;

Func СканГЭК_OnEnter(FieldName: String; Iter: Integer): logical;
var bln,Field:S;
var Flag:L;
 Flag=True;
 if Наим=nil: Message("Выберите наименование документа",mtError); Template.Field="Наим.Наим"; ^False; fi;
 if Наим.Наим="": Message("Выберите наименование документа",mtError); Template.Field="Наим.Наим"; ^False; fi;
 if Ном="" and Flag: Message("Введите номер документа",mtError); Field="Ном"; Flag=False; fi;
 if Дат=1.1.100 and Flag: Message("Введите дату документа",mtError); Field="Дат"; Flag=False; fi;
 if not Flag:
    Страница=1;
    ВывестиСтраницу;
    Template.Field=Field;
    ^False;
 fi;
 if FieldName="СканГЭК": EditorApply; fi;
 bln="Раб.Вспом.Скан_Док";
 if ModalMode and isBlankOpen(bln): Message("Бланк электронной копии уже открыт. Для возврата закройте текущий бланк",mtWarning); ^False; fi;
 if isBlankOpen(bln): Close(bln); fi;
 ExecuteProc(bln+".Вызвать",False,ToDay,SelfCrd,Current,Наим.Наим,Ном,Дат,Наим.Наим+" №"+Ном+" от "+DateToString(Дат),True,if(FieldName="СканГЭК",nil,ГЭКRec[Iter]));
 РасчетГЭК;
 Return False;
end;

Func ОбновГЭК_OnEnter(FieldName: String; Iter: Integer): logical;
 РасчетГЭК;
 Return False;
end;

Func ГЭКвPDF_OnEnter(FieldName: String; Iter: Integer): logical;
var i:i;
var File,Field:S;
var Flag:L;
 Flag=True;
 if Наим=nil: Message("Выберите наименование документа",mtError); Template.Field="Наим.Наим"; ^False; fi;
 if Наим.Наим="": Message("Выберите наименование документа",mtError); Template.Field="Наим.Наим"; ^False; fi;
 if Ном="" and Flag: Message("Введите номер документа",mtError); Field="Ном"; Flag=False; fi;
 if Дат=1.1.100 and Flag: Message("Введите дату документа",mtError); Field="Дат"; Flag=False; fi;
 if not Flag:
    Страница=1;
    ВывестиСтраницу;
    Template.Field=Field;
    ^False;
 fi;
 РасчетГЭК;
 if УпрГЭК=0: Message("Нет данных для формирования PDF"); ^False; fi;
 for Iter=1..УпрГЭК do
  i=Раб.Вспом.Сканер.ЧитатьГЭК("РПО_СКАН_ДОК",RecordToInteger(ГЭКRec[Iter]),"jpg",Iter=1);
 od;
 if i=0: Message("Нет данных для формирования PDF"); ^False; fi;
 if ПутьPDF="":
    if ChooseFolder(ПутьPDF,"Выберите папку для хранения PDF")=cmCancel: ^False; fi;
    File=ПутьPDF;
    ПутьPDF="";
   else
    File=ПутьPDF;
 fi;
 File=Раб.Бюджет2005.Контроль2Слэш(File+"\"+Раб.Договор.ConvertStr(Наим.Наим+" №"+Ном+" "+DateToString(Дат))+".pdf");
 if ExistFile(File):
    if EnqOkCancel("Файл "+File+" уже существет. Перезаписать ?",mtWarning)=cmCancel: ^False; fi;
 fi;
 i=Раб.Вспом.Сканер.JpegToPdf(File,False);
 if i=1: 
    ExecuteProgram('"'+File+'"'); 
   else
    Message("Ошибка создания PDF файла ("+Str(i)+")");
 fi;
 Return False;
end;

Func ПутьPDF_OnEnter(FieldName: String; Iter: Integer): logical;
var i:I;
 if AsLogical(S1.Cell(5,3,CellReadOnly,"")):
    i=ChooseFolder(ПутьPDF,"Выберите папку для хранения PDF");
    ^False;
 fi;
 Return True;
end;

Func ПутьPDF_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var i:i;
 Template.HideEditor(False);
 i=ChooseFolder(ПутьPDF,"Выберите папку для хранения PDF");
 Return Cur;
end;

Proc ГЭК_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Field:S;
var Iter:I;
 Field=AsString(Template.Field);
 Iter=AsInteger(Template.Frame);
 if Double:
    СканГЭК_OnEnter(Field,Iter);
 fi;
end;

Func ОбновДвиж_OnEnter(FieldName: String; Iter: Integer): logical;
 РасчетДвиж;
 Return False;
end;

Func Движ_onEnter(FieldName: String; Iter: Integer): logical;
 if ДокTr[Iter]=-1:
    OpenCardFile(ДокCrd[Iter],"",ДокRec[Iter]);
   else
    TransOpenJur(ДокTr[Iter]);
 fi;
 Return False;
end;

Proc Движ_onClick(Row: Integer; Col: Integer; Double: Logical);
 Движ_onEnter(AsString(Template.Field),AsInteger(Template.Frame));
end;

Proc Отч_OnClick(Row: Integer; Col: Integer; Double: Logical);
var bln:S;
 if Признак="":
    Message("Выполните сохранение карточки",mtWarning);
   else
    bln="ОТЧЕТЫ.СПРАВКИ.ИСПДОК";
    PutVariableD(bln+".ДК",ToDay+1);
    PutVariableS(bln+".ПризнДоп","ИСПДОК."+Признак);
    PutVariableL(bln+".Run",True);
    OpenBlank(bln,True);
 fi;
end;

Proc Отч2_OnClick(Row: Integer; Col: Integer; Double: Logical);
 if Признак="":
    Message("Выполните сохранение карточки",mtWarning);
   else
    Refresh;
    Report('"'+PlanVar("Общие")+'\Отчеты\Служебные отчеты.lst"."001"',1.1.100,ToDay+1,"","ИСПДОК."+Признак);
 fi;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnOK_onEnter (Obj:S);
 EditorApply;
end;

Proc btnОтмена_onEnter (Obj:S);
 if EnqOkCancel("Отменить внесенные изменения ?",mtWarning)=cmOk:
    Кмнт=Кмнт;
    EditorCancel;
 fi;
end;

Proc btnНастр_OnClick(Sender: String);
 ОткрНастр(True);
end;

Proc btnУдалить_OnClick(Sender: String);
var OWA,Iter:I;
var tmp:S;
var Flag:L;
 if CurrentState=CrdusInserted:
    EditorCancel;
    Close;
 fi;
 if not CurrentState=CrdusInserted and not Признак="":
    Refresh;
    tmp=Раб.Бюджет2005.КартПризнакИспользуется(SelfCrd,"ПРИЗНАК",Current,"*");
    if not tmp="":
       Страница=3;
       ВывестиСтраницу;
       Message("Признак документа ("+tmp+") используется в проводках"+Chr(13)+"Удаление не возможно",mtError);
       Exit;
    fi;
 fi;
 if EnqOkCancel("Обеспечение и электронная копия первичных документов будет удалены, вы уверены ?",mtWarning)=cmCancel: Exit; fi;
 РасчетГЭК;
 EditorCancel;
 for Iter=1..УпрГЭК do
  Flag=ExecuteFuncL("Раб.Вспом.Скан_Док.Стереть",ГЭКRec[Iter]);
 od;
 OWA=OpenWorkArea(SelfCrd,"","UKey="+RecordToString(Current));
 Try
  if not Records(OWA)=0:
     BeginChanging(OWA);
     Try
      DeleteRecord(OWA,1);
      EndChanging(OWA);
     Except
      CancelChanging(OWA);
      Raise;
     end;
  fi;
 Finally
  CloseWorkArea(OWA);
 end;
 Close;
 Message("Обеспечение успешно удалено");
end;

Proc btnЗакрыть_onEnter(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen (Create:L);
 FlagInit=True;
end;

Proc AfterOpen(Destroy: Logical);
 Инициализация;
 ВывестиСтраницу;
 Оформление; 
 FlagInit=False;
end;

Proc OnRead;
 SelfRecord=nil;
 ОткрНастр(False);
 Настр(False);
 if CurrentState=CrdusInserted:
    Номер=Раб.Обл.СледФ(SelfCrd,"Номер","");
    ClosedModFob=False;
    Страница=1;
    if not inНом="": Ном=inНом; fi;
    if not inДат=1.1.100: Дат=inДат; fi;
    if not inСуд_Орган="": Суд_Орган=inСуд_Орган; fi;
    if not inСум=0: Сум=inСум; fi;
    if not inУведНом="": УведНом=inУведНом; fi;
    if not inУведДат=1.1.100: inУведДат=УведДат; fi;
    if not inКонтр=nil: Контр=inКонтр; fi;
    if not inКонтр_Банк=nil: Контр_Банк=inКонтр_Банк; fi;
    inНом="";
    inДат=1.1.100;
    inСуд_Орган="";
    inСум=0;
    inУведНом="";
    inУведДат=1.1.100;
    inКонтр=nil;
    inКонтр_Банк=nil;
 fi;
 if not FlagInit: ВывестиСтраницу; Оформление; fi;
 if Страница=2: РасчетГЭК; 
   |Страница=3: РасчетДвиж;
 fi;
end;

Func OnVerify: Logical;
 if not Проверить: ^False; fi;
 Признак=Format("%.5D",Номер);
 Признак_Кмнт=Наим.Наим+" №"+Ном+" от "+DateToString(Дат)+" "+Контр.КорИмя;
 SelfRecord=Current;
 Return ЗаполнитьКлючДок;
end;

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


Конец
