-- Шаблон создан мастером бланков
-- 07.06.2005 16:31:56
--
БланкСШаблоном "Подтверждение платежных поручений";
var Упр:I;

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

ОтчГод:I;
var ДатБанк:D=[ToDay];

var пп[]:i=$;
var НомПП[]:S;
var НомПП_[]:S=НомПП[$];
var ДатПП[]:D;
var СумПП[]:N;
var Получ[]:S;
var НазнПлат[]:S;
var UKey[]:Record;

var FlagEdit:L;

var Buf[]:S;
--
--Процедуры и функции -------------	    
Proc НеПустаяСтрока;
 if Упр<1: InsertFrame(Упр,Упр+1); fi;
end;

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

Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(НомПП);
 ClearVariable(ДатПП);
 ClearVariable(СумПП);
 ClearVariable(Получ);
 ClearVariable(НазнПлат);
 ClearVariable(UKey);
 НеПустаяСтрока;
end;

Proc ЗагрузитьПП(Rec: Record; Iter:I);
var OWA:I;
 OWA=OpenWorkArea("ПОРУЧ","","Ukey="+RecordToString(Rec));
 Try
  НомПП[Iter]=GetFieldS(OWA,1,"НомерБум");
  ДатПП[Iter]=GetFieldD(OWA,1,"Дата");
  СумПП[Iter]=GetFieldN(OWA,1,"Сумма");
  Получ[Iter]=GetFieldS(OWA,1,"РЕКВП.КОРИМЯ");
  НазнПлат[Iter]=GetFieldS(OWA,1,"РПО_НАЗНПЛАТ");
  Ukey[Iter]=Rec;
 Finally
  CloseWorkArea(OWA);
 end;
end;
--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func ОтчГод_OnEnter(FieldName: String; Iter: Integer): logical;
var i:I;
 ClearVariable(Buf);
 for i=1..5 do Buf[i]=Str(Year(ToDay)+i-4); od;
 i=Alternate("Выбор года расчета",Buf,30,4);
 if i<>0: ОтчГод=Int(Buf[i]); fi;
 Return False;
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 A_OnEnter(FieldName: String; Iter: Integer): logical;
 InsertFrame(Упр,Iter+1);
 ^False;
end;

Func D_OnEnter(FieldName: String; Iter: Integer): logical;
 DeleteFrame(Упр,Iter);
 НеПустаяСтрока;
 ^False;
end;

Func НомПП_OnEnter(FieldName: String; Iter: Integer): logical;
 if ОтчГод=0: Message("Введите отчетный год",mtError); Template.Field="ОтчГод"; ^False; fi;
 FlagEdit=True;
 Return FlagEdit;
end;

Func НомПП_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var OWA,nr:I;
var Rec: Record;
 OWA=OpenWorkArea("ПОРУЧ","","РПО_Учитывать and НомерБум='"+Value+"' and Дата>=1.1."+Str(ОтчГод)+" and Дата<1.1."+Str(ОтчГод+1));
 Try
  Nr=Records(OWA);
  if Nr=0: Message("ПП с номером "+Value+" не найдено в базе данных",mtError); ^False;
    |Nr=1: Rec=GetRecordKey(OWA,1);
    |True: Message("В базе данных обнаружено несколько ПП, выберите вручную",mtWarning); Rec=OpenCardFile("ПОРУЧ","РПО_Учитывать and НомерБум='"+Value+"' and Дата>=1.1."+Str(ОтчГод)+" and Дата<1.1."+Str(ОтчГод+1),nil,crdRecordOnly);
  fi;
  if Rec=nil: ^False; fi;
  if GetFieldL(OWA,1,"Проводить"): Message("ПП уже подтверждено",mtError); ^False; fi;
  if SearchInArray(UKey,Rec)<>-1: Message("Повторный ввод платежного поручения",mtError); ^False; fi;
 Finally
  CloseWorkArea(OWA);
 end;
 ЗагрузитьПП(Rec,Iter);
 Template.Field="НомПП_";
 Template.Frame=Iter+1;
 FlagEdit=True;
 ^True;
end;

Proc onExit(FieldName: String; Iter: Integer);
 if FlagEdit=True: FlagEdit=False; Exit; fi;
 НомПП[Iter]=""; ДатПП[Iter]=1.1.100; СумПП[Iter]=0; Получ[Iter]=""; НазнПлат[Iter]=""; UKey[Iter]=nil;
end;

Func НомПП_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var F:S;
var rec:Record;
var Iter:I;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 F="РПО_УЧИТЫВАТЬ";
 Rec=OpenCardFile("ПОРУЧ",F,UKey[Iter],crdRecordOnly);
 if Rec=nil: ^Cur; fi;
 if GetCardFieldL("ПОРУЧ",Rec,"Проводить"): Message("ПП уже подтверждено",mtError); ^Cur; fi;
 if SearchInArray(UKey,Rec)<>-1: Message("Повторный ввод ПП"); ^Cur; fi;
 ЗагрузитьПП(Rec,Iter);
 Template.Field="НомПП_";
 Template.Frame=Iter+1;
 FlagEdit=False;
 ^Cur;
end;
--Обработчики событий полей шаблона-----
--
--
--Обработчики событий объектов шаблона-----
Proc btnПодтвер_OnClick(Sender: String);
var Iter,n2,n,p,OWA,OA,nr2:I;
 УдалитьПустыеСтроки;
 if ДатБанк=1.1.100: Message("Введите дату банковской выписки",mtError); Template.Field="ДатБанк"; Exit; fi;
 if Ukey[1]=nil: Message("Нет данных для обработки",mtError); Template.Field="НомПП_"; Exit; fi;
 for Iter=1..Упр do
  if ДатБанк<ДатПП[Iter]: Message("Дата банковской выписки не может быть ранее даты документа",mtError); Template.Field="ДатПП";  Template.Frame=Iter; Exit; fi;
 od;
 p=0;
 OWA=OpenWorkArea("ПОРУЧ","");
 Try
  ShowProgress(Упр,"Подтверждение ПП....");
  BeginChanging(OWA);
  Try
   for Iter=1..Упр do
    ProgressPos(Iter);
    n=GetRecordNumber(OWA,Ukey[Iter]);
    if n=0: Message("ПП с номером "+НомПП[Iter]+" не найдено в базе данных",mtError); Template.Field="НомПП_"; Template.Frame=Iter; Exit; fi;
    n=PutFieldD(OWA,n,"ДАТОПЕР",ДатБанк);
    n=PutFieldL(OWA,n,"Проводить",True);
   od;
   EndChanging(OWA);
  Except
   CancelChanging(OWA);
   Raise;
  end;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 Очистить;
 НеПустаяСтрока;
 for p=1..30 do
  InsertFrame(Упр,Упр+1);
 od;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
var n:i;
 НеПустаяСтрока;
 for n=Упр..30 do
  InsertFrame(Упр,Упр+1);
 od;
end;
--Обработчики событий шаблона -----
--

Конец


