-- Шаблон создан мастером бланков
-- 07.02.2008 13:27:43
--
БланкСШаблоном "Опись выгрузки нформации об исполнении (о расторжении) контракта";

GUID:S;
BufДок[]:Record;

hGUID:S;

var Загл:S="Опись, представленных в ";

Банк: Record;
НаимБанк:S;

Орг: Record;
НаимОрг:S;

ДатаОпись:D;

Упр:I;

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

var пп[]:i=$;
ДатаДок[]:D;
НомерДок[]:S;
НомерРеестр[]:S;
Примеч[]:S;
recДок[]:Record;

Испол:S;
Тел:S;
--
--Процедуры и функции -------------
Proc ОчиститьBuf;
 ClearVariable(ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.GUID);
 ClearVariable(ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.BufДок);
end;

Proc Очистить;
 ClearVariable(ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.Упр);
 ClearVariable(ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.ДатаДок);
 ClearVariable(ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.НомерДок);
 ClearVariable(ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.НомерРеестр);
 ClearVariable(ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.Примеч);
 ClearVariable(ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.recДок);
end;

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

Proc Заполнить;
var n,nn:i;
 if not GUID=hGUID:
    Очистить;
    nn=LengthOfArray(BufДок);
    for n=1..nn do
     InsertFrame(Упр,Упр+1);
     recДок[Упр]=BufДок[n];
     ДатаДок[Упр]=GetCardFieldD("РПО_Договор",recДок[Упр],"ДАТАДОК");
     НомерДок[Упр]=GetCardFieldS("РПО_Договор",recДок[Упр],"НОМЕРДОК");
     НомерРеестр[Упр]=GetCardFieldS("РПО_Договор",recДок[Упр],"НОМ_РЕЕСТР_ОФК");
    od;
    if not Орг=nil: НаимОрг=GetCardFieldS("Контрагент",Орг,"КорИмя"); fi;
    if not Банк=nil: НаимБанк=Загл+GetCardFieldS("Банк_Счета",Банк,"РПО_ОФК_ИМЯ"); fi;
    hGUID=GUID;
 fi;
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func НаимОрг_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=OpenCardFile("Контрагент","НАШЕ",Орг);
 if Rec=nil: ^False; fi;
 Орг=Rec;
 НаимОрг=GetCardFieldS("Контрагент",Rec,"КорИмя");
 Банк=Раб.Бюджет2005.БанкСчет(Орг,False);
 if not Банк=nil:
    НаимБанк=Загл+GetCardFieldS("Банк_Счета",Банк,"РПО_ОФК_ИМЯ");
 fi;
 Return False;
end;

Proc НаимОрг_OnExit(FieldName: String; Iter: Integer);
 Орг=nil;
 Банк=nil;
end;

Func НаимБанк_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if Орг=nil: Message("Выберите организацию",mtError); Template.Field="НаимОрг"; ^False; fi;
 Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(Орг),Банк);
 if Rec=nil: ^False; fi;
 Банк=Rec;
 НаимБанк=Загл+GetCardFieldS("Банк_Счета",Банк,"РПО_ОФК_ИМЯ");
end;

Proc НаимБанк_OnExit(FieldName: String; Iter: Integer);
 Банк=nil;
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);
 Return False;
end;

Func D_OnEnter(FieldName: String; Iter: Integer): logical;
 DeleteFrame(Упр,Iter);
 Return False;
end;

Func onEnter(FieldName: String; Iter: Integer): logical;
var Rec: record;
var F:S;
var z:i;
 F="РЕГ and (АННУЛИРОВАН or ИСПОЛНЕН) and УЧЕТ_РЕЕСТР_ОФК and not Недейств";
 if recДок[Iter]=nil:
    Rec=Раб.Документы.ВыборСФильтром("РПО_Договор","НомерДок",F);
   else
    Rec=OpenCardFile("РПО_Договор",F,recДок[Iter]);
 fi;
 if not Rec=nil:
    z=SearchInArray(recДок,Rec,False,1);
    if not z=-1:
       if z=Iter: z=SearchInArray(recДок,Rec,False,Iter+1); fi;
       if not z=-1: Message("Повторный ввод контракта",mtError); Template.Field="НомерДок"; Template.Frame=z; ^False; fi;
    fi;
    recДок[Iter]=Rec;
    ДатаДок[Iter]=GetCardFieldD("РПО_Договор",Rec,"ДАТАДОК");
    НомерДок[Iter]=GetCardFieldS("РПО_Договор",Rec,"НОМЕРДОК");
    НомерРеестр[Iter]=GetCardFieldS("РПО_Договор",Rec,"НОМ_РЕЕСТР_ОФК");
 fi;
 Return False;
end;

Proc OnExit(FieldName: String; Iter: Integer);
 ДатаДок[Iter]=1.1.100;
 НомерДок[Iter]="";
 НомерРеестр[Iter]="";
 recДок[Iter]=nil;
end;

Func Испол_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:S;
var Rec: Record;
 Template.HideEditor(False);
 Rec=OpenCardFile("Сотрудники");
 if Rec=nil: ^Cur; fi;
 tmp=GetCardFieldS("Сотрудники",rec,"ФИОТ");
 PutVariableS(AsString(Template.Field),tmp);
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn("","","ТББ.ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.000.cfg","",1);
end;

Proc btnОчистить_OnClick(Sender: String);
 if EnqOkCancel("Опись будет очищена, продолжить ?")=cmCancel: Exit; fi;
 Очистить;
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("","ТББ.ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОПИСЬ_ВЫГРУЗКИ_ИСПОЛ.000.cfg");
 Заполнить;
end;
--Обработчики событий шаблона -----


Конец
