-- Шаблон создан мастером бланков
-- 23.11.2012 14:42:53
--
БланкСШаблоном "Тип заявки на закупку", Редактор РПО_ЗАЯВКА_ЗАКУП_ТИП;

var Пре_:S=Пре.Справ+" ("+Пре.Наим+")";
var ТипСч_:S=if(ТипСч="БАЛ":"Балансовые счета"|ТипСч="ЗАБ":"Забалансовые счета"|true:"");
var УчетКол_:S=if(УчетКол,"Да","Нет");

var Общ_Справ_ГЭК1_:S=if(Общ_Справ_ГЭК1,"Отдельная папка по имени признака","Общая папка");
var Общ_Справ_ГЭК2_:S=if(Общ_Справ_ГЭК2,"Отдельная папка по имени признака","Общая папка");

var Buf[]:S;
--
--Процедуры и функции -------------
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func Справ_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 tmp=AnaElection("*",true);
 if not tmp="":
    Справ=tmp;
    if Наим="": Наим=Name_A(Справ+"."); fi;
 fi;
 Return False;
end;

Func Пре_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if Справ="": Message("Заполните код справочника",mtError); Template.Field="Справ"; ^False; fi;
 Rec=OpenCardFile("РПО_ЗАЯВКА_ЗАКУП_ТИП","Справ='"+Справ+"' and not UKey="+RecordToString(Current));
 if not Rec=nil:
    Пре=Rec;
 fi;
 Return False;
end;

Func ТипСч_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Баланс";
 Buf[2]="Забаланс";
 n=Alternate("Выберите тип счета",Buf,-1,if(ТипСч="ЗАБ",2,1),12);
 if n=1: 
    ТипСч="БАЛ";
    if Match(КодСчД5,"*.?.ЗАБ.??.*") or Match(КодСчК5,"*.?.ЗАБ.??.*") or КодСчК5="ЗАБАЛАНС": КодСчД5=""; КодСчК5=""; fi;
   |n=2: ТипСч="ЗАБ";
    if (not Match(КодСчД5,"*.?.ЗАБ.??.*") and not КодСчД5="") or (not Match(КодСчК5,"*.?.ЗАБ.??.*") and not КодСчК5=""): КодСчД5=""; КодСчК5=""; fi;
 fi;
 Return False;
end;

Func КодСчД5_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 if ТипСч="": Message("Выберите тип счета",mtError); Template.Field="ТипСч_"; ^False; fi;
 tmp=Раб.КБК.Список(if(ТипСч="БАЛ":"~*.?.ЗАБ.??.*"|ТипСч="ЗАБ":"*.?.ЗАБ.??.*"|true:""),"","СЧ5");
 if not tmp="":
    if tmp=КодСчК5: Message("Код счета дебета "+tmp+" не должен совпадать с кодом счета кредита",mtError); ^False; fi;
    КодСчД5=tmp;
    if Match(КодСчД5,"50?.*"):
       КодСчД5=SubStr(КодСчД5,1,4)+"?"+SubStr(КодСчД5,6,1);
    fi;
    if ТипСч="ЗАБ" and КодСчК5="":
       КодСчК5="ЗАБАЛАНС";
    fi;
 fi;
 Return False;
end;

Func КодСчК5_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 if ТипСч="": Message("Выберите тип счета",mtError); Template.Field="ТипСч_"; ^False; fi;
 tmp=Раб.КБК.Список(if(ТипСч="БАЛ":"~*.?.ЗАБ.??.*"|ТипСч="ЗАБ":"*.?.ЗАБ.??.*"|true:""),"","СЧ5");
 if not tmp="":
    if tmp=КодСчД5: Message("Код счета кредита "+tmp+" не должен совпадать с кодом счета дебета",mtError); ^False; fi;
    КодСчК5=tmp;
    if Match(КодСчК5,"50?.*"):
       КодСчК5=SubStr(КодСчК5,1,4)+"?"+SubStr(КодСчК5,6,1);
    fi;
 fi;
 Return False;
end;

Proc КодСчК5_OnExit(FieldName: String; Iter: Integer);
 if КодСчК5="" and ТипСч="ЗАБ":
    КодСчК5="ЗАБАЛАНС";
 fi;
end;

Func УчетКол_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Да";
 Buf[2]="Нет";
 n=Alternate("Выберите режим",Buf,-1,if(УчетКол,1,2),12);
 if not n=0:
    УчетКол=n=1;
 fi;
 Return False;
end;

Func Общ_Справ_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,tmp2:S;
 tmp=AnaElection("*.*&~"+Справ+".*",True);
 if not tmp="":
    tmp2=Name_A(tmp+".");
    tmp=tmp+".*";
    if (FieldName="Общ_Справ1" and tmp=Общ_Справ2) or (FieldName="Общ_Справ2" and tmp=Общ_Справ1): Message("Повторный ввод справочника "+tmp,mtError); ^False; fi;
    PutVariableS(FieldName,tmp);
    PutVariableS(SubStr(FieldName,1,9)+"_Наим"+SubStr(FieldName,10,1),tmp2);
 fi;
 Return False;
end;

Proc Общ_Справ_OnExit(FieldName: String; Iter: Integer);
 PutVariableS(SubStr(FieldName,1,9)+"_Наим"+SubStr(FieldName,10,1),"");
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:
    PutVariableL(SubStr(FieldName,1,Length(FieldName)-1),n=1);
 fi;
 Return False;
end;

Func extBtnUsrOnClick_OnEnter(FieldName: String; Iter: Integer): logical;
 if (extBtnUsrName="" and FieldName="extBtnUsrOnClick") or (extBtnUsrName2="" and FieldName="extBtnUsrOnClick2"):
    Message("Задайте имя кнопки",mtError);
    Template.Field="extBtnUsrName"+if(FieldName="extBtnUsrOnClick2","2","");
    ^False;
 fi;
 Return True;
end;

Func extBtnUsrOnClick_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
 if not Value="":
    if not ProcExists(Value): Message("Процедура '"+Value+"' не найдена",mtError); ^False; fi;
 fi;
 Return True;
end;

Func ext_OnVerify(FieldName: String; Iter: Integer; Value: S):Logical;
 if not FuncExists(Value):
    Message("Функция "+Value+" не найдена",mtError);
    ^False;
 fi;
 Return True;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnСохранить_OnClick(Sender: String);
 EditorApply;
end;

Proc btnОтменить_OnClick(Sender: String);
 EditorCancel;
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Func OnVerify: Logical;
 if Справ="": Message("Заполните код справочника",mtError); Template.Field="Справ"; ^False; fi;
 if Наим="": Message("Заполните наименование",mtError); Template.Field="Наим"; ^False; fi;
 if ТипСч="": Message("Выберите тип счета",mtError); Template.Field="ТипСч_"; ^False; fi;
 if КодСчД5="": Message("Заполните код счета дебета",mtError); Template.Field="КодСчД5"; ^False; fi;
 if КодСчК5="": Message("Заполните код счета кредита",mtError); Template.Field="КодСчД5"; ^False; fi;
 if not Общ_Справ1="" and Общ_Справ_Наим1="": Message("Заполните наименование общего справочника 1",mtError); Template.Field="Общ_Справ_Наим1"; ^False; fi;
 if not Общ_Справ2="" and Общ_Справ_Наим2="": Message("Заполните наименование общего справочника 2",mtError); Template.Field="Общ_Справ_Наим2"; ^False; fi;
 Return True;
end;
--Обработчики событий шаблона -----
--


Конец
