-- Шаблон создан мастером бланков
-- 19.02.2007 10:33:15
--
БланкСШаблоном "Сведения об исполнении (о расторжении) контракта";

var f18:L;

var Секрет:I;
var Секрет_:S=Раб.Договор.Секретность(Секрет,False);

КолКопий:I=[2];
var Загл:S="Сведения об исполнении (о расторжении) контракта";
var ДатаСвед:D=[ToDay];
var Заказчик:Record;
var Заказчик_ПолнИмя1:S;
var Заказчик_ПолнИмя2:S;
var Заказчик_ПолнИмя:S=Заказчик_ПолнИмя1+Заказчик_ПолнИмя2;
var Заказчик_КорИмя:S;
var Заказчик_ИНН:S;
var Заказчик_КПП:S;
var Заказчик_ИКЗ:S;
var Ном_Реестр_ОФК:S;
var ПИК:S;

var Р1_1   :I;
var Р1_1_1 []:S;
var Р1_1_2 []:D;
var Р1_1_3 []:S;
var Р1_1_4 []:N;
var Р1_1_5 []:D;
var Р1_1_6 []:S;
var Р1_1_7 []:S;
var Р1_1_8 []:S;
var Р1_1_9 []:N;
var Р1_1_10[]:N;
var Р1_1_11[]:N;
var A1_1     :S="+";
var D1_1     :S="-";

var Р1_2    :I;
var Р1_2_1[]:S;
var Р1_2_2[]:S;
var Р1_2_3[]:S;
var Р1_2_4[]:S;
var A1_2    :S="+";
var D1_2    :S="-";

var ПричинаШтраф []:S;
var ПричинаШтраф_[]:S=if(ПричинаШтраф[$]="11":"ненадлежащее исполнение поставщиком (подрядчиком, исполнителем) обязательств, предусмотренных контрактом, за исключением просрочки исполнения поставщиком (подрядчиком, исполнителем) обязательств (в том числе гарантийного обязательства), предусмотренных контрактом"|
			 ПричинаШтраф[$]="12":"ненадлежащее исполнение заказчиком обязательств, предусмотренных контрактом, за исключением просрочки исполнения обязательств, предусмотренных контрактом"|
			 ПричинаШтраф[$]="21":"просрочка исполнения поставщиком (подрядчиком, исполнителем) обязательств, предусмотренных контрактом (в том числе гарантийного обязательства)"|
			 ПричинаШтраф[$]="22":"просрочка исполнения заказчиком обязательств, предусмотренных контрактом"|
			 true:"");
var УШ1_1   :L=ПричинаШтраф[1]="11";
var УШ1_2   :L=not ПричинаШтраф[1]="11";
var Р1_3    :I;
var Р1_3_1[]:S;
var Р1_3_2[]:S;
var Р1_3_3[]:N;
var Р1_3_4[]:S;
var Р1_3_5[]:N;
var Р1_3_6[]:S;
var Р1_3_7[]:N;
var A1_3    :S="+";
var D1_3    :S="-";
var A1_Ш1   :S="+";

var УШ2_1   :L=ПричинаШтраф[2]="11";
var УШ2_2   :L=not ПричинаШтраф[2]="11";
var Р1_4    :I;
var Р1_4_1[]:S;
var Р1_4_2[]:S;
var Р1_4_3[]:N;
var Р1_4_4[]:S;
var Р1_4_5[]:N;
var Р1_4_6[]:S;
var Р1_4_7[]:N;
var A1_4    :S="+";
var D1_4    :S="-";
var A1_Ш2   :S="+";
var D1_Ш2   :S="-";

var УШ3_1   :L=ПричинаШтраф[3]="11";
var УШ3_2   :L=not ПричинаШтраф[3]="11";
var Р1_5    :I;
var Р1_5_1[]:S;
var Р1_5_2[]:S;
var Р1_5_3[]:N;
var Р1_5_4[]:S;
var Р1_5_5[]:N;
var Р1_5_6[]:S;
var Р1_5_7[]:N;
var A1_5    :S="+";
var D1_5    :S="-";
var A1_Ш3   :S="+";
var D1_Ш3   :S="-";

var УШ4_1   :L=ПричинаШтраф[4]="11";
var УШ4_2   :L=not ПричинаШтраф[4]="11";
var Р1_6    :I;
var Р1_6_1[]:S;
var Р1_6_2[]:S;
var Р1_6_3[]:N;
var Р1_6_4[]:S;
var Р1_6_5[]:N;
var Р1_6_6[]:S;
var Р1_6_7[]:N;
var A1_6    :S="+";
var D1_6    :S="-";
var D1_Ш4   :S="-";

var ПричинаРасторж :S;
var ПричинаРасторж_:S=if(ПричинаРасторж="1":"соглашение сторон"
			|ПричинаРасторж="2":"судебный акт"
			|ПричинаРасторж="3":"односторонний отказ заказчика от исполнения контракта в соответствии с гражданским законодательством Российской Федерации"
			|ПричинаРасторж="4":"односторонний отказ поставщика (подрядчика, исполнителя) от исполнения контракта в соответствии с гражданским законодательством Российской Федерации"
			|true:"");

var РеквРасторж    :S;
var РеквДопРасторж :S;
var РеквРасторж_   :S=if(РеквРасторж="11":"дополнительное соглашение к контракту"
			|РеквРасторж="21":"судебный акт"
			|РеквРасторж="31":"решение заказчика об одностороннем отказе от исполнения контракта"
			|РеквРасторж="41":"решение поставщика (подрядчика, исполнителя) об одностороннем отказе от исполнения контракта"
			|true:"")+if(РеквДопРасторж="","",", "+РеквДопРасторж);
var Р2_1:N;
var Р2_2:N;
var Р2_3:D;
var Р2_4:S;

var ФИОРук:S;

var fОКВ :I;
var fОКПД:I;
var fОКСМ:I;

var Buf []:S;

cb18 :Object;

Ш2_1 :Section;
Ш2_2 :Section;
Ш2_3 :Section;
Ш2_4 :Section;
Ш2_5 :Section;
Ш2_6 :Section;

Ш3_1 :Section;
Ш3_2 :Section;
Ш3_3 :Section;
Ш3_4 :Section;
Ш3_5 :Section;
Ш3_6 :Section;

Ш4_1 :Section;
Ш4_2 :Section;
Ш4_3 :Section;
Ш4_4 :Section;
Ш4_5 :Section;
Ш4_6 :Section;

А1   :Section;

var SelfCfg:S="РПО.Документы.ДоговорПост.Прил2_Испол.000.cfg";
var SelfBln:S="ДОКУМЕНТЫ.ДОГОВОРПОСТ.ПРИЛ2_ИСПОЛ_18Н";
--
--Процедуры и функции -------------
Proc ОчиститьШ(id:s);
 if id="" or id="1":
    ClearVariable(Р1_3);
    ClearVariable(Р1_3_1);
    ClearVariable(Р1_3_2);
    ClearVariable(Р1_3_3);
    ClearVariable(Р1_3_4);
    ClearVariable(Р1_3_5);
    ClearVariable(Р1_3_6);
    ClearVariable(Р1_3_7);
 fi;
 if id="" or id="2":
    ClearVariable(Р1_4);
    ClearVariable(Р1_4_1);
    ClearVariable(Р1_4_2);
    ClearVariable(Р1_4_3);
    ClearVariable(Р1_4_4);
    ClearVariable(Р1_4_5);
    ClearVariable(Р1_4_6);
    ClearVariable(Р1_4_7);
 fi;
 if id="" or id="3":
    ClearVariable(Р1_5);
    ClearVariable(Р1_5_1);
    ClearVariable(Р1_5_2);
    ClearVariable(Р1_5_3);
    ClearVariable(Р1_5_4);
    ClearVariable(Р1_5_5);
    ClearVariable(Р1_5_6);
    ClearVariable(Р1_5_7);
 fi;
 if id="" or id="4":
    ClearVariable(Р1_6);
    ClearVariable(Р1_6_1);
    ClearVariable(Р1_6_2);
    ClearVariable(Р1_6_3);
    ClearVariable(Р1_6_4);
    ClearVariable(Р1_6_5);
    ClearVariable(Р1_6_6);
    ClearVariable(Р1_6_7);
 fi;
end;

Proc Очистить;
 ClearVariable(Заказчик);
 ClearVariable(Заказчик_ПолнИмя1);
 ClearVariable(Заказчик_ПолнИмя2);
 ClearVariable(Заказчик_КорИмя);
 ClearVariable(Заказчик_ИНН);
 ClearVariable(Заказчик_КПП);
 ClearVariable(Заказчик_ИКЗ);
 ClearVariable(Ном_Реестр_ОФК);
 ClearVariable(ПИК);
 ClearVariable(Р1_1);
 ClearVariable(Р1_1_1);
 ClearVariable(Р1_1_2);
 ClearVariable(Р1_1_3);
 ClearVariable(Р1_1_4);
 ClearVariable(Р1_1_5);
 ClearVariable(Р1_1_6);
 ClearVariable(Р1_1_7);
 ClearVariable(Р1_1_8);
 ClearVariable(Р1_1_9);
 ClearVariable(Р1_1_10);
 ClearVariable(Р1_1_11);
 ClearVariable(Р1_2);
 ClearVariable(Р1_2_1);
 ClearVariable(Р1_2_2);
 ClearVariable(Р1_2_3);
 ClearVariable(Р1_2_4);
 ClearVariable(ПричинаШтраф);
 ОчиститьШ("");
 ClearVariable(ПричинаРасторж);
 ClearVariable(РеквРасторж);
 ClearVariable(РеквДопРасторж);
 ClearVariable(Р2_1);
 ClearVariable(Р2_2);
 ClearVariable(Р2_3);
 ClearVariable(Р2_4);
end;

Proc Оформление;
var x,y:i;
var Obj: Object;
 f18=Секрет>0;
 cb18.State=f18;
 for x=2..4 do
  for y=1..6 do
   if FindObject("Ш"+Str(x)+"_"+Str(y),Obj):
      Obj.Visible=if(x=2:Р1_4>0|x=3:Р1_5>0|x=4:Р1_6>0|true:false);
   fi;
  od;
 od;
 А1.Cell(3,2,CellFormat,if(Round(Р2_1,2)=0 and Round(Р2_2,2)=0 and Р2_3=1.1.100 and Р2_4=""," ","0.00"));
 А1.Cell(3,3,CellFormat,if(Round(Р2_1,2)=0 and Round(Р2_2,2)=0 and Р2_3=1.1.100 and Р2_4=""," ","0.00"));
end;

Proc Расчет (vДоговор:S);
var key:s;
var OWA,OWA2,OA,i,ii,z,zz,hash,iter:I;
 Очистить;
 OWA=OpenWorkArea("РПО_Договор","","UKey="+vДоговор);
 Try
  if Records(OWA)=0: Message("Договор не найден",mtError); Exit; fi;
  Секрет=GetFieldI(OWA,1,"Секрет");
  ДатаСвед=GetFieldD(OWA,1,"ДатаСвед2");
  Заказчик=GetFieldR(OWA,1,"Учр");
  Заказчик_ПолнИмя1=GetFieldS(OWA,1,"Учр.ПолнИмя");
  Заказчик_ПолнИмя2=GetFieldS(OWA,1,"Учр.РПО_ПолнИмя2");
  Заказчик_КорИмя=GetFieldS(OWA,1,"Учр.КорИмя");
  Заказчик_ИНН=GetFieldS(OWA,1,"Учр.ИНН");
  Заказчик_КПП=GetFieldS(OWA,1,"Учр.КПП");
  Заказчик_ИКЗ=GetFieldS(OWA,1,"Учр.РПО_ИКЗ");
  Ном_Реестр_ОФК=GetFieldS(OWA,1,"Ном_Реестр_ОФК");
  if GetFieldD(OWA,1,"Дата_Реестр_ОФК")>=1.7.2014:
     Ном_Реестр_ОФК=SubStr(Ном_Реестр_ОФК,1,27); --ТФФ v.13   ???
  fi;
  if GetFieldL(OWA,1,"Исполнен"):
     ПИК="1";
     OA=OpenArray(OWA,1,"Инфо_ИА","");
     ii=Records(OA);
     for i=1..ii do
      InsertFrame(Р1_1,Р1_1+1);
      Р1_1_1 [Р1_1]=GetFieldS(OA,i,"НаимДок");
      Р1_1_2 [Р1_1]=GetFieldD(OA,i,"ДатДок");
      Р1_1_3 [Р1_1]=GetFieldS(OA,i,"НомДок");
      Р1_1_4 [Р1_1]=if(GetFieldN(OA,i,"КолДок")=0,GetFieldN(OA,i,"СумДок"),GetFieldN(OA,i,"КолДок"));
      Р1_1_5 [Р1_1]=GetFieldD(OA,i,"ДатОпл");
      Р1_1_6 [Р1_1]=GetFieldS(OA,i,"НомОпл");
      Р1_1_7 [Р1_1]=GetFieldS(OA,i,"Осн")+GetFieldS(OA,i,"Осн2")+GetFieldS(OA,i,"Осн3")+GetFieldS(OA,i,"Осн4");
      Р1_1_8 [Р1_1]=Раб.Договор.ВзятьЗначОКВ(GetFieldS(OWA,1,"ОКВ"),"Код","Наименование")+" "+GetFieldS(OWA,1,"ОКВ");
      Р1_1_9 [Р1_1]=GetFieldN(OA,i,"СумОпл");
      if GetFieldS(OWA,1,"ОКВ")="643":
	 Р1_1_10[Р1_1]=Round(GetFieldN(OA,i,"КурсОпл"),4);
	 Р1_1_11[Р1_1]=Round(GetFieldN(OA,i,"СумОпл")*GetFieldN(OA,i,"КурсОпл"),2);
      fi;
     od;
     CloseWorkArea(OA);
     --
     OWA2=OpenWorkArea("РПО_ДОГОВОР_ПОЗИЦИИ_ТМЦ","НАИМТМЦ;НАИМТМЦ2;ОКП;ОКСМ","Договор="+vДоговор+" and КВОЗ='1'");
     Try
      ClearVariable(Buf);
      ii=Records(OWA2);
      for i=1..ii do
       hash=Раб.crc16.crc30_(Раб.crc16.Init30,GetFieldS(OWA2,i,"НаимТМЦ"));
       hash=Раб.crc16.crc30_(hash,GetFieldS(OWA2,i,"НаимТМЦ2"));
       hash=Раб.crc16.crc30_(hash,GetFieldS(OWA2,i,"НаимТМЦ3"));
       hash=Раб.crc16.crc30_(hash,GetFieldS(OWA2,i,"НаимТМЦ4"));
       Key=Str16(hash)+"#"+GetFieldS(OWA2,i,"ОКП")+"#"+GetFieldS(OWA2,i,"ОКСМ");
       z=SearchInArray(Buf,Key,True);
       if z=-1:
	  z=InsertInArraySort(Buf,Key);
	  InsertFrame(Р1_2,z);
	  Р1_2_1[z]=GetFieldS(OWA2,i,"НаимТМЦ")+GetFieldS(OWA2,i,"НаимТМЦ2")+GetFieldS(OWA2,i,"НаимТМЦ3")+GetFieldS(OWA2,i,"НаимТМЦ4");
	  Р1_2_2[z]=GetFieldS(OWA2,i,"ОКП");
	  Р1_2_3[z]=Раб.Договор.ИмяСтраныПоКоду(GetFieldS(OWA2,i,"ОКСМ"),True);
	  Р1_2_4[z]=GetFieldS(OWA2,i,"ОКСМ");
       fi;
      od;
     Finally
      CloseWorkArea(OWA2);
     end;
     --
     ClearVariable(Buf);
     OA=OpenArray(OWA,1,"Штраф","");
     ii=Records(OA);
     for i=1..ii do
      AddInArray(Buf,True,False,GetFieldS(OA,i,"Код"));
     od;
     zz=LengthOfArray(Buf);
     for z=1..zz do
      ПричинаШтраф[z]=Buf[z];
     od;
     for i=1..ii do
      z=SearchInArray(ПричинаШтраф,GetFieldS(OA,i,"Код"),True);
      if z=1: InsertFrame(Р1_3,Р1_3+1); Iter=Р1_3;
	|z=2: InsertFrame(Р1_4,Р1_4+1); Iter=Р1_4;
	|z=3: InsertFrame(Р1_5,Р1_5+1); Iter=Р1_5;
	|z=4: InsertFrame(Р1_6,Р1_6+1); Iter=Р1_6;
      fi;
      PutVariableS("Р1_"+Str(2+z)+"_1",GetFieldS(OA,i,"Сторона")+GetFieldS(OA,i,"Сторона2")+GetFieldS(OA,i,"Сторона3")+GetFieldS(OA,i,"Сторона4"));
      PutVariableS("Р1_"+Str(2+z)+"_2",GetFieldS(OA,i,"Начисл_Осн")+GetFieldS(OA,i,"Начисл_Осн2")+GetFieldS(OA,i,"Начисл_Осн3")+GetFieldS(OA,i,"Начисл_Осн4"));
      PutVariableN("Р1_"+Str(2+z)+"_3",GetFieldN(OA,i,"Начисл_Сум"));
      PutVariableS("Р1_"+Str(2+z)+"_4",DateToString(GetFieldD(OA,i,"Опл_Дат"))+", "+GetFieldS(OA,i,"Опл_Ном")+", "+GetFieldS(OA,i,"Опл_Наим"));
      PutVariableN("Р1_"+Str(2+z)+"_5",GetFieldN(OA,i,"Опл_Сум"));
      PutVariableS("Р1_"+Str(2+z)+"_6",GetFieldS(OA,i,"Возвр_Осн")+GetFieldS(OA,i,"Возвр_Осн2")+GetFieldS(OA,i,"Возвр_Осн3")+GetFieldS(OA,i,"Возвр_Осн4"));
      PutVariableN("Р1_"+Str(2+z)+"_7",GetFieldN(OA,i,"Возвр_Сум"));
     od;
     CloseWorkArea(OA);
  fi; --if GetFieldL(OWA,1,"Исполнен"):
  if GetFieldL(OWA,1,"Аннулирован"):
     ПИК=GetFieldS(OWA,1,"АннулПризнак");
     ПричинаРасторж=GetFieldS(OWA,1,"АннулКодОсн");
     РеквРасторж=GetFieldS(OWA,1,"АннулКодДок");
     РеквДопРасторж=DateToString(GetFieldD(OWA,1,"ДатаДИзм"))+", "+GetFieldS(OWA,1,"НомерИзм");
     Р2_1=GetFieldN(OWA,1,"СумДок");
     Р2_2=GetFieldN(OWA,1,"АннулФактОпл");
     Р2_3=GetFieldD(OWA,1,"АннулДата");
     Р2_4=GetFieldS(OWA,1,"АннулКмнт");
  fi;
  ФИОРук=GetFieldS(OWA,1,"ФИОРук2");
 Finally
  CloseWorkArea(OWA);
 end;
 Оформление;
 Message("Расчет завершен");
end;
--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func Секрет_OnEnter(FieldName: String; Iter: Integer): logical;
 Секрет=Int(Раб.Договор.Секретность(Секрет,True));
 Return False;
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;
 PutVariableD(AsString(Template.Field),tmp);
 Оформление;
 Return Cur;
end;

Func Заказчик_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=OpenCardFile("Контрагент","--Наше",Заказчик,crdRecordOnly);
 if Rec=nil: ^False; fi;
 Заказчик=Rec;
 Заказчик_ПолнИмя1=GetCardFieldS("Контрагент",Rec,"ПолнИмя");
 Заказчик_ПолнИмя2=GetCardFieldS("Контрагент",Rec,"РПО_ПолнИмя2");
 Заказчик_КорИмя=GetCardFieldS("Контрагент",Rec,"КорИмя");
 Заказчик_ИНН=GetCardFieldS("Контрагент",Rec,"ИНН");
 Заказчик_КПП=GetCardFieldS("Контрагент",Rec,"КПП");
 Заказчик_ИКЗ=GetCardFieldS("Контрагент",Rec,"РПО_ИКЗ");
 ФИОРук=GetCardFieldS("Контрагент",Rec,"ФИОРук");
 Return False;
end;

Proc Заказчик_OnExit(FieldName: String; Iter: Integer);
 Заказчик=nil;
 Заказчик_ПолнИмя1="";
 Заказчик_ПолнИмя2="";
 Заказчик_КорИмя="";
 Заказчик_ИНН="";
 Заказчик_КПП="";
 Заказчик_ИКЗ="";
end;

Func ПИК_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="1 -- контракт исполнен";
 Buf[2]="2 -- контракт расторгнут";
 Buf[3]="3 -- контракт признан недействительным";
 n=Alternate("Признак исполнения",Buf,-1,1,12);
 if not n=0:
    ПИК=Str(n);
 fi;
 Return False;
end;

Func A_onEnter(FieldName: String; Iter: Integer): logical;
 if FieldName="A1_1" : InsertFrame(Р1_1,Iter+1);
   |FieldName="A1_2" : InsertFrame(Р1_2,Iter+1);
   |FieldName="A1_3" : InsertFrame(Р1_3,Iter+1);
   |FieldName="A1_4" : InsertFrame(Р1_4,Iter+1);
   |FieldName="A1_5" : InsertFrame(Р1_5,Iter+1);
   |FieldName="A1_6" : InsertFrame(Р1_6,Iter+1);
   |FieldName="A1_Ш1": if Р1_4=0: InsertFrame(Р1_4,1); fi;
   |FieldName="A1_Ш2": if Р1_5=0: InsertFrame(Р1_5,1); fi;
   |FieldName="A1_Ш3": if Р1_6=0: InsertFrame(Р1_6,1); fi;
 fi;
 Оформление;
 Return False;
end;


Func D_onEnter(FieldName: String; Iter: Integer): logical;
 if FieldName="D1_1"  : DeleteFrame(Р1_1,Iter);
   |FieldName="D1_2"  : DeleteFrame(Р1_2,Iter);
   |FieldName="D1_3"  : DeleteFrame(Р1_3,Iter);
   |FieldName="D1_4"  : DeleteFrame(Р1_4,Iter);
   |FieldName="D1_5"  : DeleteFrame(Р1_5,Iter);
   |FieldName="D1_6"  : DeleteFrame(Р1_6,Iter);
   |FieldName="D1_Ш2" : ОчиститьШ("2"); ПричинаШтраф[2]="";
   |FieldName="D1_Ш3" : ОчиститьШ("3"); ПричинаШтраф[3]="";
   |FieldName="D1_Ш4" : ОчиститьШ("4"); ПричинаШтраф[4]="";
 fi;
 Оформление;
 Return False;
end;

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

Func ОКПД_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
var Rec: Record;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 rec=Раб.Договор.ОКПД_Lookup(selfbln+".Р1_2_2["+Str(Iter)+"]",selfbln+".fОКПД","Length(Код)=12");
 if not rec=nil:
    Р1_2_2[Iter]=GetCardFieldS("РПО_ОКПД",Rec,"Код");
 fi;
 Return Cur;
end;

Func ОКСМ_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
var Iter:I;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if fОКСМ=0: fОКСМ=Раб.Договор.ЗагрузСправ("РПО_ОКСМ",PlanVar("Std_Rpo")+"\DBF\РПО_ОКСМ",ieCRD,"Загрузить общероссийский классификатор стран мира ОКСМ ?"); fi;
 if fОКСМ=1:
    Rec=Раб.Документы.ВыборСФильтром("РПО_ОКСМ","ПОЛНИМЯ","");
    if not Rec=nil:
       Р1_2_3[Iter]=GetCardFieldS("РПО_ОКСМ",Rec,"ПОЛНИМЯ");
       Р1_2_4[Iter]=GetCardFieldS("РПО_ОКСМ",Rec,"КОД");
    fi;
 fi;
 Return Cur;
end;

Func ПричинаШтраф_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
var n,z:i;
 ClearVariable(Buf);
 n=1;	Buf[n]="11 ненадлежащее исполнение поставщиком (подрядчиком, исполнителем) обязательств, предусмотренных контрактом, за исключением просрочки исполнения поставщиком (подрядчиком, исполнителем) обязательств (в том числе гарантийного обязательства), предусмотренных контрактом";
 n=n+1; Buf[n]="12 ненадлежащее исполнение заказчиком обязательств, предусмотренных контрактом, за исключением просрочки исполнения обязательств, предусмотренных контрактом";
 n=n+1; Buf[n]="21 просрочка исполнения поставщиком (подрядчиком, исполнителем) обязательств, предусмотренных контрактом (в том числе гарантийного обязательства)";
 n=n+1; Buf[n]="22 просрочка исполнения заказчиком обязательств, предусмотренных контрактом";
 n=Alternate("Причины начисления неустоек (штрафов, пеней) (при наличии)",Buf,-1,1,12);
 if not n=0:
    Iter=Int(SubStr(FieldName,14,1));
    tmp=SubStr(Buf[n],1,2);
    z=SearchInArray(ПричинаШтраф,tmp,False);
    if not z=-1:
       if z=Iter:
	  z=SearchInArray(ПричинаШтраф,tmp,False,n+1);
       fi;
       if not z=-1:
	  Message("Повторный ввод кода начисления неустоек"+tmp,mtError);
	  Template.Field="ПричинаШтраф["+Str(z)+"]";
	  ^False;
       fi;
    fi;
    ПричинаШтраф[Iter]=SubStr(Buf[n],1,2);
 fi;
 Return False;
end;

Func ПричинаРасторж_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="1 соглашение сторон";
 Buf[2]="2 судебный акт";
 Buf[3]="3 односторонний отказ заказчика от исполнения контракта в соответствии с гражданским законодательством Российской Федерации";
 Buf[4]="4 односторонний отказ поставщика (подрядчика, исполнителя) от исполнения контракта в соответствии с гражданским законодательством Российской Федерации";
 n=Alternate("Основание расторжения",Buf,-1,Int(ПричинаРасторж),12);
 if not n=0:
    ПричинаРасторж=Str(n);
    РеквРасторж=ПричинаРасторж+"1";
 fi;
 Return False;
end;

Func РеквРасторж_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="11 дополнительное соглашение к контракту";
 Buf[2]="21 судебный акт";
 Buf[3]="31 решение заказчика об одностороннем отказе от исполнения контракта";
 Buf[4]="41 решение поставщика (подрядчика, исполнителя) об одностороннем отказе от исполнения контракта";
 n=Alternate("Основание расторжения",Buf,-1,Int(ПричинаРасторж),12);
 if not n=0:
    РеквРасторж=SubStr(Buf[n],1,2);
    ПричинаРасторж=SubStr(РеквРасторж,1,1);
 fi;
 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);
 Rec=OpenCardFile("Сотрудники");
 if Rec=nil: ^Cur; fi;
 ФИОРук=GetCardFieldS("Сотрудники",rec,"ФИОТ");
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_OnClick(Sender: String);
var Rec: Record;
 Rec=Раб.Документы.ВыборСФильтром("РПО_Договор","НомерДок","РЕГ and УЧЕТ_РЕЕСТР_ОФК and (ИСПОЛНЕН or АННУЛИРОВАН) and not Недейств"+if(f18," and Секрет="+Str(Секрет),""));
 if Rec=nil: Exit; fi;
 Расчет(RecordToString(Rec));
end;

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

Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn("","","РПО.Документы.ДоговорПост.Прил2_Испол.000.cfg","",КолКопий);
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("","РПО.Документы.ДоговорПост.Прил2_Испол.000.cfg");
 if Раб.Обмен.Recipient=SelfBln:
    Расчет(Раб.Обмен.BufS1[1]);
 fi;
end;

Proc AfterOpen(Destroy: Logical);
 Оформление;
end;
--Обработчики событий шаблона -----
--


Конец
