-- Шаблон создан мастером бланков
-- 05.04.2009 20:07:46
--
БланкСШаблоном "Реестр документов - оснований";

var Режим:I;

КолКопий:I=[1];

var НаимДок:S;
var НомерДок:S;
var ДатаДок:D;
var ДолжнРук:S;
var ФИОРук:S;
var ДолжнБух:S;
var ФИОБух:S;
var ДатаПодписи:D;
var НомерРеестр:S;
var ДатаРеестр:D;

var Упр:I;
var пп[]:i=$;
var Вид[]:S;
var Ном[]:S;
var Сум[]:N;
var Дат[]:S;
var Предм[]:S;
var User[]:S;
var Контр[]:S;
var lenПредм[]:I=Length(Предм[$]);
var UKey[]: Record;

var ИтогоСум:N=SumOfArray(Сум);

var Загл1:S=НаимДок+" №"+НомерРеестр+" от "+DateToString(ДатаРеестр);
var Загл2:S="Заявке на кассовый расход №"+НомерДок+" от "+DateToString(ДатаДок);

var SelfCfg:S="ТББ.РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.000.cfg";

btnПечать : Object;
edКолКопий: Object;
btnЗакрыть: Object;

S1:Section;
S2:Section;
S3:Section;
S4:Section;
S5:Section;
S6:Section;
S7:Section;
S8:Section;

var nS:i=8;

var Buf[]:S;
--
--Процедуры и функции -------------
Proc Оформление;
var s:i;
var Obj: Object;
 btnПечать.Visible=Режим=0;
 edКолКопий.Visible=Режим=0;
 for s=1..nS do
  if FindObject("S"+Str(s),Obj):
     Obj.Visible=(S<6 and Режим=0) or (S>5 and Режим=1);
  fi;
 od;
end;

Proc Очистить;
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.НаимДок);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.НомерДок);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.ДатаДок);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.ДолжнРук);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.ФИОРук);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.ДолжнБух);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.ФИОБух);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.ДатаПодписи);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.НомерРеестр);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.ДатаРеестр);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.Упр);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.Вид);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.Ном);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.Сум);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.Дат);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.Предм);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.User);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.Контр);
 ClearVariable(РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК.UKey);
end;

Func ВзятьЗКР(aДО:Record; aНаимДок: Record; aНаимСчет: Record; aНомерСчет:S; aДатаСчет:D; aДоговор: Record; aКонтр: Record; aБО: Record; aНДС:S; aИст:S; aДата:D):I;
var OWA,n,nr,OA1,n1,nr1,OA2:I;
var UKey:Record;
 OWA=OpenWorkArea("РПО_Заявка_КР","","not Учитывать and CreatedUser='"+UserName(AliasName("РПО_Заявка_КР"))+"' and РеквП="+RecordToString(aКонтр)+" and БО="+RecordToString(aБО)+" and (ДО_GUID='<реестр>' or ХЗ='<реестр>') and Док_СтавкаНДС='"+aНДС+"' and ДатаДок="+DateToString(aДата));
 Try
  nr=Records(OWA);
  for n=1..nr do
   UKey=GetRecordKey(OWA,n);
   if n=1: 
      OA1=OpenArray(OWA,n,"Осн_Док",""); 
      OA2=OpenArray(OWA,n,"Расшифр","","Ист='"+aИст+"'"); 
   fi;
   if not Records(OA2)=0:
      nr1=Records(OA1);
      for n1=1..nr1 do
       if GetFieldR(OA1,n1,"ДО")=aДО:
          ^-RecordToInteger(UKey);
       fi;
      od;
      for n1=1..nr1 do
       if not GetFieldR(OA1,n1,"ДО")=nil:
          if GetFieldR(OA1,n1,"ДО.НаимДок")=aНаимДок and
             GetFieldR(OA1,n1,"ДО.НаимСчет")=aНаимСчет and
             GetFieldS(OA1,n1,"ДО.НомерСчет")=aНомерСчет and
             GetFieldD(OA1,n1,"ДО.ДатаСчет")=aДатаСчет and
             GetFieldR(OA1,n1,"ДО.Договор")=aДоговор:
             ^RecordToInteger(UKey);
          fi;
       fi;
      od;
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
 end;
 ^0;
end;

Func СписокЗКР:I;
var OWA,n,nr,OA,i,ii:i;
 Очистить;
 OWA=OpenWorkArea("РПО_Заявка_КР","CreatedUser;ДатаДок","not Учитывать and (ДО_GUID='<реестр>' or ХЗ='<реестр>')");
 Try
  nr=Records(OWA);
  for n=1..nr do
   Упр=Упр+1;
   UKey[Упр]=GetRecordKey(OWA,n);
   User[Упр]=GetFieldS(OWA,n,"CreatedUser");
   Ном[Упр]=GetFieldS(OWA,n,"НомерДок");
   Дат[Упр]=GetFieldS(OWA,n,"ДатаДок");
   Сум[Упр]=GetFieldN(OWA,n,"Док_Сум");
   Контр[Упр]=GetFieldS(OWA,n,"РеквП.КорИмя");
   if n=1: OA=OpenArray(OWA,n,"Осн_Док",""); fi;
   ii=Records(OA);
   for i=1..ii do
    if not GetFieldR(OA,i,"ДО")=nil:
       if Вид[Упр]="": Вид[Упр]=GetFieldS(OA,i,"Вид")+" №№"; fi;
       Вид[Упр]=Вид[Упр]+Chr(13)+GetFieldS(OA,i,"Ном")+" от "+DateToString(GetFieldD(OA,i,"Дат"));
    fi;
   od;
   Предм[Упр]=GetFieldS(OWA,n,"Док_НазнПл");
  od;
 Finally
  CloseWorkArea(OWA);
 end;
 if not nr=0 and not IsBlankOpen("РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК"):
    Режим=1;
    OpenBlank("РАБ.ВСПОМ.ЗАЯВКА_КР_РЕЕСТР_ОСН_ДОК",True);
    Очистить;
 fi;
 ^nr;
end;

Proc ЗакрытьРеестр(Rec:Record);
var OWA,n:I;
  OWA=OpenWorkArea("РПО_Заявка_КР","","UKey="+RecordToString(Rec));
  Try
   BeginChanging(OWA);
   Try
    n=PutFieldS(OWA,1,"ДО_GUID","");
    n=PutFieldS(OWA,1,"ХЗ","");
    EndChanging(OWA);
   Except
    CancelChanging(OWA);
    Raise;
   end;
  Finally
   CloseWorkArea(OWA);
  end;
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnПечать_OnClick(Sender: String);
 if КолКопий<=0: КолКопий=1; fi;
 if КолКопий>2:
    if EnqOkCancel("Вы уверены, что хотите распечатать "+Str(КолКопий)+" копий документа ?")=cmCancel:
       Message("Отказ от печати"); 
       Exit;
    fi;
 fi;
 Раб.Настр_Печать.Prn("","",SelfCfg,"",КолКопий);
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;

Func onEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Вызвать заявку";
 Buf[2]="Закрыть реестр для добавления новых документов";
 n=Alternate("",Buf,-1,1,12);
 if not n=0:
    if n=2: ЗакрытьРеестр(UKey[Iter]); fi;
    OpenBlank("ДОКУМЕНТЫ.БАНК.ЗАЯВКА_КР",True,UKey[Iter]);
    СписокЗКР;
 fi;
 Return False;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc AfterOpen(Destroy: Logical);
 Оформление;
 Режим=0;
end;

Proc OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("",SelfCfg);
end;
--Обработчики событий шаблона -----
--




Конец
