-- Шаблон создан мастером бланков
-- 26.09.2001 9:22:43
--
БланкСШаблоном "Реестр платежных поручений";

ТипРеестра :L; -- Выбор типа бланка (да - для банка)
Орг	   :S; -- Наименование организации
РСчет	   :S; -- Расчетный счет для реестра (если выбран банк)
ЛСчет	   :S; -- Лицевой счет для реестра (если выбрано казначейство)
ДатаРеестра:D=[ToDay];
ЗапОрг	   :S; -- Для хранения ссылки на организацию в строковом виде
ЗапБанк    :S;

var ListPl     :I; -- Управляющая переменная для списка выбранных платежек
var Npp[]      :i=$;
var Npl[]      :S;
var Dpl[]      :D;
var Spl[]      :N;
var Lpl[]      :S;
var UKey[]     :S;
var ИтогоСумма :N=SumOfArray(Spl,ListPl); -- Итоговая сумма по платежкам, внесенным в реестр
var Счет       :S=if(ТипРеестра,"Номер расчетного счета "+РСчет,"Номер лицевого счета "+ЛСчет);
var Отметка    :S=if(ТипРеестра,"Отметка банка","Отметка казначейства");
var Итого      :S="ИТОГО платежных поручений "+Стр(ListPl)+" на сумму";

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

Proc Clear;
 ClearVariable(ListPl);
 ClearVariable(Npl);
 ClearVariable(Dpl);
 ClearVariable(Spl);
 ClearVariable(Lpl);
 ClearVariable(UKey);
end;

Proc ClearEmpty;
var n:i;
 n=1; 
 While n<=ListPl do
  if UKey[n]="": DeleteFrame(ListPl,n);
   else 
    n=n+1; 
  fi; 
 od;
end;

Func ОргПриВходе(F:s; in:i):l;
var Rec1,Rec2: record;
var ss:S;
 rec1=OpenCardFile("Контрагент","Наше");
 if rec1=nil: ЗапОрг=""; ЗапБанк=""; Орг=""; ^False; fi;
 ЗапОрг=RecordToString(rec1);
 rec2=OpenCardFile("БАНК_СЧЕТА","Контрагент="+ЗапОрг);
 if rec2=nil: ЗапОрг=""; ЗапБанк=""; Орг=""; ^False; fi;
 ЗапБанк=RecordToString(rec2);
 РСчет=GetCardFieldS("Банк_Счета",rec2,"РСЧЕТ");
 ЛСчет=GetCardFieldS("Банк_Счета",rec2,"РПО_ЛСЧЕТ");
 Орг=GetCardFieldS("Банк_Счета",rec2,"БанкИмя");
 if РСчет="": Message("У выбранной организации не введен расчетный счет!"); fi;
 if ЛСчет="": Message("У выбранной организации не введен лицевой счет!"); fi;
^False;
end;

Func ДатаРеестраПриВходе(F:s; i:i):l;
var tmp:d;
 tmp=Calendar;
 if tmp=1.1.100: ^False; fi;
 ДатаРеестра=tmp;
^False;
end;

Proc КнРасчетПриНажатии(Об:S);
var owa,i,Кол:I;
 if ЗапОрг="": message("Выберите организацию!"); Template.field="Орг"; Exit;fi;
 if ДатаРеестра=1.1.100: message("Выберите Дату!"); Template.field="ДатаРеестра"; Exit;fi;
 Clear;
 owa=OpenWorkArea("Поруч","НОМЕРБУМ","РПО_Учитывать and not РПО_ВБанк and ДАТА="+DateToString(ДатаРеестра)+" and РЕКВ="+ЗапОрг+" and БАНК="+ЗапБанк);
 Try
  Кол=Записей(owa);
  for i=1..Кол do
   ВставитьРамку(ListPl,ListPl+1);
   Npl[i]=ВзятьПолеС(owa,i,"НОМЕРБУМ");
   Dpl[i] =ВзятьПолеД(owa,i,"ДАТА");
   Spl[i]=ВзятьПолеЧ(owa,i,"СУММА");
   UKey[i]=RecordToString(GetRecordKey(OWA,i));
  end;
 Finally
  CloseWorkArea(owa);
 end;
 Message("Расчет завершен.");
end;

Proc TemplateOnClose(Destroy:l);
 Clear;
end;

Proc rb_onChange (Obj:S);
 Орг="";
 ЗапОрг="";
 РСчет="";
 ЛСчет="";
end;

Func A_OnEnter(FieldName: String; Iter: Integer): logical;
 InsertFrame(ListPl,Iter+1);
 ^False;
end;


Func D_OnEnter(FieldName: String; Iter: Integer): logical;
 DeleteFrame(ListPl,Iter);
 if ListPl<1: InsertFrame(ListPl,1); fi;
 ^False;
end;

Func ВыборПП (Field:S; Iter:I):L;
var Rec: Record;
 Rec=OpenCardFile("Поруч","РПО_Учитывать");
 if Rec=nil: ^False; fi;
 Npl[Iter]=GetCardFieldS("Поруч",Rec,"НОМЕРБУМ");
 Dpl[Iter]=GetCardFieldD("Поруч",Rec,"ДАТА");
 Spl[Iter]=GetCardFieldN("Поруч",Rec,"СУММА");
 UKey[Iter]=RecordToString(Rec);
 ^False;
end;

Proc btnОчистить_onClick (Obj:S);
 Clear;
end;

Proc btnВБанк_onClick (Obj:S);
var OWA,n,z:i;
 ClearEmpty;
 if ListPl<1: Message("Список платежных поручений пуст!"); Exit; fi;
 OWA=OpenWorkArea("Поруч","","1=0");
 Try
  for n=1..ListPl do
   SetFilter(OWA,"UKey="+UKey[n]);
   if Records(OWA)<1: 
      Message("Платежное поручение № "+Npl[n]+" не найдено!");
     else
      BeginChanging(OWA);
      Try
       z=PutFieldL(OWA,1,"РПО_Учитывать",True);
       z=PutFieldL(OWA,1,"РПО_ВБанк",True);
       EndChanging(OWA);
      Except
       CancelChanging(OWA);
       Raise;
      end;
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
 end;
end;

Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn("","","RPO_Реестр_ПП_000.cfg","",1);
end;

Proc OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("","RPO_Реестр_ПП_000.cfg");
end;


Конец
