-- Шаблон создан мастером бланков
-- 07.07.2008 17:47:02
--
БланкСШаблоном "Настройка параметров договоров", Редактор РПО_ДОГОВОР_НАСТР;

var НоваяЗапись:L=(CurrentState=crdusInserted);

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

var Учр_Банк_Банк:S=Учр_Банк.Банк+" "+Учр_Банк.Город;

var ВидВнеБюдж_:S=Раб.Договор.ВидВнеБюджетныхСредств(ВидВнеБюдж,False,"");
var ДО_УчетНДС_:S=if(ДО_УчетНДС,"Да","Нет");
var ДО_ВыборКонтрБанк_:S=if(ДО_ВыборКонтрБанк=-1:"Нет"|ДО_ВыборКонтрБанк=0:"Запрашивать"|True:"Да");
var ДО_УчетОКДП_:S=if(ДО_УчетОКДП=-1:"Нет для гос. контрактов"|ДО_УчетОКДП=-2:"Нет"|True:"Да");
var ДО_УчетТМЦ_ :S=if(ДО_УчетТМЦ=1:"Учет ТМЦ"|ДО_УчетТМЦ=0:"Запрашивать"|ДО_УчетТМЦ=-1:"Суммовой учет"|True:"Суммовой учет (для гос.контрактов)");

btnОбщие      : Object;
btnПоУмолчанию: Object;
btnДО         : Object;
btnСлужебные  : Object;

var Страница:I;

S1: Section;
S2: Section;
S3: Section;
S4: Section;

var SelfCrd:S="РПО_ДОГОВОР_НАСТР";

var Buf[]:S;

var derParol:S;

var fОКВ:I;

var ПрисвоитьНастр:S="Присвоить настройку для договоров";
var SubjFilter:S;
--
--Процедуры и функции -------------
Func ЕстьНастр:L;
var OWA:I;
 OWA=OpenWorkArea(SelfCrd,"","Дата="+DateToString(Дата)+" and not UKey="+RecordToString(Current)+" and ObjCrd='"+ObjCrd+"'");
 Try
  ^not Records(OWA)=0;
 Finally
  CloseWorkArea(OWA);
 end;
end;

Func НастрИспользуется:L;
var OWA:I;
 if ObjCrd="" or ObjField="": ^False; fi;
 OWA=OpenWorkArea(ObjCrd,"",ObjField+"="+RecordToString(Current));
 Try
  ^not Records(OWA)=0;
 Finally
  CloseWorkArea(OWA);
 end;
end;

Proc ВывестиСтраницу;
 --Общие
 S1.Visible=Страница=0;
 btnОбщие.Enabled=not Страница=0;
 --ПоУмолчанию
 S2.Visible=Страница=1;
 btnПоУмолчанию.Enabled=not Страница=1;
 --Денежное обязательство
 S3.Visible=Страница=2;
 btnДО.Enabled=not Страница=2;
 --Служебные
 S4.Visible=Страница=3;
 btnСлужебные.Enabled=not Страница=3;
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func Дата_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:D;
 Template.HideEditor(False);
 tmp=Calendar;
 if not tmp=1.1.100:
    Дата=tmp;
 fi;
 Return Cur;
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 Учр_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec:Record;
 Rec=OpenCardFile("Контрагент","--Наше",Учр,crdRecordOnly);
 if Rec=nil: ^False; fi;
 Учр=Rec;
 Учр_Банк=Раб.Бюджет2005.БанкСчет(Учр,False);
 if not Учр_Банк_Свед.Контрагент=Учр:
    Учр_Банк_Свед=nil;
 fi;
 Return False;
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;
 ДолжнРук=GetCardFieldS("Сотрудники",Rec,"ДОЛЖНОСТЬ.Долж");
 ФИОРук=GetCardFieldS("Сотрудники",rec,"ФИОТ");
 Return Cur;
end;

Func Учр_Банк_onEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if Учр=nil: Message("Выберите заказчика",mtError); Template.Field="Учр.ПолнИмя"; ^False; fi;
 Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(Учр),if(FieldName="Учр_Банк_Свед.РПО_ОФК_Имя",Учр_Банк_Свед,Учр_Банк),crdRecordOnly);
 if not Rec=nil:
    if FieldName="Учр_Банк_Свед.РПО_ОФК_Имя":
       Учр_Банк_Свед=Rec;
      else
       Учр_Банк=Rec;
    fi;
 fi;
 Return False;
end;

Proc Контр_onClick(Row: Integer; Col: Integer; Double: Logical);
var Field,Bln:S;
var Rec: Record;
 Field=AsString(Template.Field);
 Rec=nil;
 if Match(Field,"Учр*"): Field=SubStr(Field,5,255); Rec=Учр;
   --|Match(Field,"Контр*"): Field=SubStr(Field,7,255); Rec=Контр;
 fi;
 if Rec=nil: Exit; fi;
 Bln="";
 if Field="РПО_ППП" or Field="РПО_НППО" or Field="РПО_Страна" or Field="РПО_ОКСМ" or Field="Статус": Bln="РАБ.ВСПОМ.КОНТРАГЕНТ_ИНФОДОП"; fi;
 if Field="Статус": Field="РПО_Статус_"; fi;
 --
 Раб.Обмен.Очистить;
 Раб.Обмен.Recipient="ИНФО.КОНТРАГЕНТ";
 Раб.Обмен.BufS1[1]=Bln;
 Раб.Обмен.BufS1[2]=Field;
 Раб.Обмен.BufI1[1]=1;
 OpenBlank("ИНФО.КОНТРАГЕНТ",True,Rec);
 Раб.Обмен.Очистить;
end;

Proc Банк_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Field:S;
var Rec: Record;
 Field=AsString(Template.Field);
 Rec=nil;
 if Match(Field,"Учр_Банк*"): Field=SubStr(Field,10,255); Rec=Учр_Банк;
--   |Match(Field,"Контр_Банк*"): Field=SubStr(Field,12,255); Rec=Контр_Банк;
 fi;
 if Rec=nil: Exit; fi;
 ExecuteProc("ИНФО.БАНКСЧЕТА.Вызвать",Rec,Field,1);
end;

Func НаимДок_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=РАБ.ВСПОМ.ДОГОВОР_НАИМ.Выполнить(ТипДок);
 if not Rec=nil: НаимДок=Rec; fi;
 Return False;
end;

Func ИстФин_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var n:i;
 Template.HideEditor(False);
 ClearVariable(Buf);
 Buf[1]="00000001 Российская Федерация";
 n=Alternate("Источник финансирования контракта",Buf,-1,SearchInArray(Buf,ИстФин),12);
 if not n=0:
    ИстФин=ExtractWord(2,Buf[n]," ");
    ИстФин_ОКТМО=ExtractWord(1,Buf[n]," ");
 fi;
 Return Cur;
end;

Func КодБюдж_OnEnter(FieldName: String; Iter: Integer): logical;
 КодБюдж=Раб.Договор.НаименованиеБюджета(КодБюдж,True,if(Дата>=1.1.2015,"18Н",""));
 НаимБюдж=Раб.Договор.НаименованиеБюджета(КодБюдж,False,if(Дата>=1.1.2015,"18Н",""));
 Return False;
end;

Proc КодБюдж_OnExit(FieldName: String; Iter: Integer);
 НаимБюдж="";
end;

Func ВидВнеБюдж_OnEnter(FieldName: String; Iter: Integer): logical;
 ВидВнеБюдж=Раб.Договор.ВидВнеБюджетныхСредств(ВидВнеБюдж,True,if(Дата>=1.1.2015,"18Н","44ФЗ"));
 Return False;
end;

Proc ВидВнеБюдж_OnExit(FieldName: String; Iter: Integer);
 ВидВнеБюдж="";
end;

Func ОКВ_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
 Template.HideEditor(False);
 if fОКВ=0: fОКВ=Раб.Договор.ЗагрузСправ("РПО_ОКВ",PlanVar("Std_Rpo")+"\DBF\РПО_ОКВ",ieCRD,"Загрузить справочник видов валют ОКВ ?"); fi;
 if fОКВ=1:
    Rec=Раб.Поиск.ВыборИзКартотеки("Выбор валюты","РПО_ОКВ","КОД|ИМЯ|НАИМЕНОВАНИЕ","Цифровой код|Буквенный код|Наименование","");
    if not Rec=nil:
       ОКВ=GetCardFieldS("РПО_ОКВ",Rec,"КОД");
    fi;
 fi;
 Return Cur;
end;

Func ДО_УчетНДС_OnEnter(FieldName: String; Iter: Integer): logical;
 ДО_УчетНДС=not ДО_УчетНДС;
 Return False;
end;

Func ДО_ВыборКонтрБанк_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Нет";
 Buf[2]="Запрашивать";
 Buf[3]="Да";
 n=Alternate("Выбор режима",Buf,-1,ДО_ВыборКонтрБанк-2,12);
 if n=1: ДО_ВыборКонтрБанк=-1;
   |n=2: ДО_ВыборКонтрБанк= 0;
   |n=3: ДО_ВыборКонтрБанк= 1;
 fi;
 Return False;
end;

Func ДО_УчетОКДП_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Да";
 Buf[2]="Нет для гос. контрактов";
 Buf[3]="Нет";
 n=Alternate("Выбор режима",Buf,-1,Abs(ДО_УчетОКДП)+1,12);
 if n=1: ДО_УчетОКДП= 0;
   |n=2: ДО_УчетОКДП=-1;
   |n=3: ДО_УчетОКДП=-2;
 fi;
 ^False;
end;

Func ДО_УчетТМЦ_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Учет ТМЦ";
 Buf[2]="Запрашивать";
 Buf[3]="Суммовой учет";
 Buf[4]="Суммовой учет (в режиме для гос.контрактов)";
 n=Alternate("Выбор режима",Buf,-1,ДО_ВыборКонтрБанк-2,12);
 if n=1: ДО_УчетТМЦ= 1;
   |n=2: ДО_УчетТМЦ= 0;
   |n=3: ДО_УчетТМЦ=-1;
   |n=4: ДО_УчетТМЦ=-2;
 fi;
 Return False;
end;

Func ext_OnVerify(FieldName: String; Iter: Integer; Value: S):Logical;
 if not FuncExists(Value):
    Message("Функция "+Value+" не найдена",mtError);
    ^False;
 fi;
 Return True;
end;

Func ПрисвоитьНастр_OnEnter(FieldName: String; Iter: Integer): logical;
var OWA,n,nr:I;
 EditorApply;
 if SubjFilter="":
    if EnqOkCancel("Не задан фильтр на целевую картотеку^MДанная настройка будет присвоенна для всех записей целевой картотеки, продолжить ?",mtWarning)=cmCancel: ^False; fi;
   else
    if EnqOkCancel("Присвоить данную настройку для выбранных записей целевой картотеки ?",mtWarning)=cmCancel: ^False; fi;
 fi;
 OWA=OpenWorkArea(ObjCrd,"",SubjFilter);
 Try
  nr=Records(OWA);
  ShowProgress(nr,"Прогресс...");
  BeginChanging(OWA,True);
  Try
   for n=1..nr do
    ProgressPos(n);
    n=PutFieldR(OWA,n,ObjField,Current);
   od;
   EndChanging(OWA);
  Except
   CancelChanging(OWA);
   Raise;
  end;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 Message("Операция завершена");
 Return False;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc Страница_onClick(Sender: String);
 if Sender="btnОбщие":       Страница=0;
   |Sender="btnПоУмолчанию": Страница=1;
   |Sender="btnДО":          Страница=2;
   |Sender="btnСлужебные":   if not derParol="ТББ": Message("Внезапная ошибка, продожение прервано",mtError); else Страница=3; fi;
 fi;
 ВывестиСтраницу;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnRead;
 Страница=1;
 if НоваяЗапись:
    GUID=GetGUID;
    Дата=ToDay;
    if ObjCrd="": ObjCrd="РПО_ДОГОВОР"; fi;
    if ObjField="": ObjField="НАСТР"; fi;
 fi;
 ВывестиСтраницу;
end;

Func OnVerify: Logical;
 if ObjCrd="": Message("Укажите целевую картотеку",mtError); Template.Field="ObjCrd"; ^False; fi;
 if ObjField="": Message("Укажите ссылочное поле",mtError); Template.Field="ObjField"; ^False; fi;
 if ЕстьНастр: Message("Настройка с датой введения ("+DateToString(Дата)+") и целевой картотекой ("+ObjCrd+") уже существует",mtError); Template.Field="Дата"; ^False; fi;
 if НастрИспользуется:
    if EnqOkCancel("Текущая настройка уже используется, вы действительно хотите изменить настройку ?",mtWarning)=cmCancel: ^False; fi;
 fi;
 if GUID="": GUID=GetGUID; fi;
 Return True;
end;

Proc OnClose(Destroy: Logical);
 derParol="";
end;
--Обработчики событий шаблона -----
--


Конец
