-- Шаблон создан мастером бланков
-- 25.07.2014 15:11:43
--
БланкСШаблоном "Форма отчета об исполнении государственного (муниципального) контракта и (или) о результатах отдельного этапа его исполнения", Редактор РПО_ДОГОВОР_ОТЧ_ИСПОЛ;

var Заказчик_Адрес     :S=Договор.Учр.ПочтАдрес+", "+Договор.Учр.Телефон+", "+Договор.Учр.EMail;
var ВидДок             :S="Вид документа "+if(НомИзм=0,"(базовый)","(изменный)");
var Заказчик_ОКОПФ_ОКФС:S=Договор.Учр.КОПФ+" / "+Договор.Учр.КФС;

Func КонвИст(aИст:S):S;
 if aИст="01"                          : ^"01";
   |aИст="02"                          : ^"02";
   |aИст="03"                          : ^"03";
   |aИст="04" or aИст="05" or aИст="06": ^"04";
   |aИст="11"                          : ^"01";
   |aИст="14" or aИст="15" or aИст="16": ^"04";
 fi;
 ^"";
end;

var A1:S="+";
var D1:S="-";

var Р1_ИКЗ[]:S=Договор.ИКЗ;
var Р1_НомКт[]:S=Договор.НомерДок;
var Р1_НомРЗ[]:S=Договор.Ном_Реестр_ОФК;
var Р1_Ист[]:S=КонвИст(Договор.КодБюдж);

Func КонвКонтрСтатус(aСтатус:S):S;
 if aСтатус="1"                 : ^"1";
   |aСтатус="30" or aСтатус="31": ^"1";
   |aСтатус="4"                 : ^"2";
   |aСтатус="40" or aСтатус="41": ^"2";
   |aСтатус="2"                 : ^"3";
   |aСтатус="10"                : ^"3";
   |aСтатус="3"                 : ^"4";
   |aСтатус="20"                : ^"4";
 fi;
 ^"";
end;

var Р2_Адрес_:S=Договор.Контр.ПочтАдрес+", "+Договор.Контр.Телефон+", "+Договор.Контр.EMail;
var Р2_ОКОПФ_ОКФС_:S=Договор.Контр.КОПФ+" / "+Договор.Контр.КФС;
var Р2_Контр_Статус_:S=КонвКонтрСтатус(Договор.Контр_Статус);

var Р2_ПолнИмя[]:S;
var Р2_ОПФ[]:S;
var Р2_Адрес[]:S;
var Р2_ОКОПФ_ОКФС[]:S;
var Р2_ОКСМ[]:S;
var Р2_ОКПО[]:S;
var Р2_ИНН[]:S;
var Р2_КПП[]:S;
var Р2_Статус[]:S;

Func ВзятьКонтр2:I;
var Iter:i;
 for Iter=1..Договор.Контр2 do
  Р2_ПолнИмя[Iter]=Договор.Контр2[Iter].Контр.ПолнИмя;
  Р2_ОПФ[Iter]=Договор.Контр2[Iter].Контр.ОПФ;
  Р2_Адрес[Iter]=Договор.Контр2[Iter].Контр.ПочтАдрес+", "+Договор.Контр2[Iter].Контр.Телефон+", "+Договор.Контр2[Iter].Контр.EMail;
  Р2_ОКОПФ_ОКФС[Iter]=Договор.Контр2[Iter].Контр.КОПФ+" / "+Договор.Контр2[Iter].Контр.КФС;
  Р2_ОКСМ[Iter]=Договор.Контр2[Iter].Контр.РПО_ОКСМ;
  Р2_ОКПО[Iter]=Договор.Контр2[Iter].Контр.ОКПО;
  Р2_ИНН[Iter]=Договор.Контр2[Iter].Контр.ИНН;
  Р2_КПП[Iter]=Договор.Контр2[Iter].Контр.КПП;
  Р2_Статус[Iter]=КонвКонтрСтатус(Договор.Контр2[Iter].Контр_Статус);
 od;
 ^Договор.Контр2;
end;

var Р2:I=ВзятьКонтр2;

var Buf[]:S;

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

var SelfCfg:S="ТББ.ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОТЧЕТ_ИСПОЛ_ГК.000.cfg";
var SelfBln:S="ДОКУМЕНТЫ.ДОГОВОРПОСТ.ОТЧЕТ_ИСПОЛ_ГК";
var SelfCrd:S="РПО_ДОГОВОР_ОТЧ_ИСПОЛ";
--
--Процедуры и функции -------------
Proc Очистить;
 ClearVariable(Р1);
 ClearVariable(Р2);
 ClearVariable(Р2_ПолнИмя);
 ClearVariable(Р2_ОПФ);
 ClearVariable(Р2_Адрес);
 ClearVariable(Р2_ОКОПФ_ОКФС);
 ClearVariable(Р2_ОКСМ);
 ClearVariable(Р2_ОКПО);
 ClearVariable(Р2_ИНН);
 ClearVariable(Р2_КПП);
 ClearVariable(Р2_Статус);
 ClearVariable(Р3_1_3);
 ClearVariable(Р3_1_4);
 ClearVariable(Р3_1_6);
 ClearVariable(Р3_1_7);
 ClearVariable(Р3_2_3);
 ClearVariable(Р3_2_4);
 ClearVariable(Р3_2_6);
 ClearVariable(Р3_2_7);
 ClearVariable(Р3_3_3);
 ClearVariable(Р3_3_4);
 ClearVariable(Р3_3_5);
 ClearVariable(Р3_3_6);
 ClearVariable(Р3_3_7);
 ClearVariable(Р3_4_3);
 ClearVariable(Р3_4_4);
 ClearVariable(Р3_4_5);
 ClearVariable(Р3_4_6);
 ClearVariable(Р3_4_7);
 ClearVariable(Р3_51_3);
 ClearVariable(Р3_51_4);
 ClearVariable(Р3_51_5);
 ClearVariable(Р3_51_6);
 ClearVariable(Р3_51_7);
 ClearVariable(Р3_52_3);
 ClearVariable(Р3_52_4);
 ClearVariable(Р3_52_5);
 ClearVariable(Р3_52_6);
 ClearVariable(Р3_52_7);
 ClearVariable(Р4_1_3);
 ClearVariable(Р4_1_4);
 ClearVariable(Р4_1_5);
 ClearVariable(Р4_1_6);
 ClearVariable(Р4_1_7);
 ClearVariable(Р4_2_3);
 ClearVariable(Р4_2_4);
 ClearVariable(Р4_2_5);
 ClearVariable(Р4_2_6);
 ClearVariable(Р4_2_7);
 ClearVariable(Р4_3_3);
 ClearVariable(Р4_3_4);
 ClearVariable(Р4_3_5);
 ClearVariable(Р4_3_6);
 ClearVariable(Р4_3_7);
 ClearVariable(Р4_4_3);
 ClearVariable(Р4_4_4);
 ClearVariable(Р4_4_5);
 ClearVariable(Р4_4_6);
 ClearVariable(Р4_4_7);
 ClearVariable(Р4_5_3);
 ClearVariable(Р4_5_4);
 ClearVariable(Р4_5_5);
 ClearVariable(Р4_5_6);
 ClearVariable(Р4_5_7);
 ClearVariable(Р5_1_3);
 ClearVariable(Р5_1_4);
 ClearVariable(Р5_1_5);
 ClearVariable(Р5_2_3);
 ClearVariable(Р5_2_4);
 ClearVariable(Р5_2_5);
end;

Proc Расчет;
var OWA1,OWA2,n,nr,z,OA,i,ii:I;
var tmp:S;
 OWA2=OpenWorkArea("РПО_ДОГОВОР_ПОЗИЦИИ_ТМЦ","НП","ДОГОВОР="+RecordToString(Договор));
 Try
  ClearVariable(Buf);
  nr=Records(OWA2);
  for n=1..nr do
   tmp=Str16(Раб.CRC16.crc30_(Раб.CRC16.Init30,GetFieldS(OWA2,n,"НаимТМЦ")));
   z=SearchInArray(Buf,tmp+"#"+GetFieldS(OWA2,n,"ОКП"),True);
   if z=-1:
      z=InsertInArraySort(Buf,tmp+"#"+GetFieldS(OWA2,n,"ОКП"));
      z=InsertFrame(Р1,z);
      Р1[z].Предм=GetFieldS(OWA2,n,"НаимТМЦ");
      Р1[z].Код=GetFieldS(OWA2,n,"ОКП");
   fi;
  od;
 Finally
  CloseWorkArea(OWA2);
 end;
end;

--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func НомИзм_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var i,OWA:i;
 Template.HideEditor(False);
 if Договор=nil: Message("Ссылка на контракт пуста",mtError); ^Cur; fi;
 НомИзм=Раб.Обл.СледФ(SelfCrd,"НомИзм","not UKey="+RecordToString(Current)+" and Договор="+RecordToString(Договор));
 Return Cur;
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:
    PutVariableD(AsString(Template.Field),tmp);
 fi;
 Return Cur;
end;

Func Р5_1_4_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var n:i;
 Template.HideEditor(False);
 ClearVariable(Buf);
 Buf[ 1]="01-Изменение условий контракта было предусмотрено документацией о закупке и контрактом";
 Buf[ 2]="02-Снижение цены контракта в случае осуществления закупки у единственного поставщика без изменения предусмотренных контрактом количества товара, объема работы или услуги, качества поставляемого товара, выполняемой работы, оказываемой услуги и иных условий контракта в соответствии с подпунктом 'а' пункта 1 части 1 статьи 95 Федерального закона";
 Buf[ 3]="03-По предложению заказчика увеличены предусмотренные контрактом количество товара, объем работы или услуги не более чем на 10 процентов с пропорциональным увеличением цены контракта исходя из цены единицы товара, работы, услуги в соответствии с подпунктом 'б' пункта 1 части 1 статьи 95 Федерального закона";
 Buf[ 4]="04-По предложению заказчика уменьшены предусмотренные контрактом количество товара, объем работы или услуги не более чем на 10 процентов с пропорциональным уменьшением цены контракта исходя из цены единицы товара, работы, услуги в соответствии с подпунктом 'б' пункта 1 части 1 статьи 95 Федерального закона";
 Buf[ 5]="05-Цена контракта изменена на основании решения Правительства Российской Федерации в соответствии с пунктом 2 части 1 статьи 95 Федерального закона";
 Buf[ 6]="06-Цена контракта изменена на основании решения высшего исполнительного органа государственной власти субъекта Российской Федерации в соответствии с пунктом 3 части 1 статьи 95 Федерального закона";
 Buf[ 7]="07-Цена контракта изменена на основании решения местной администрации в соответствии с пунктом 4 части 1 статьи 95 Федерального закона";
 Buf[ 8]="08-Изменение в соответствии с законодательством Российской Федерации регулируемых государством цен (тарифов) на товары, работы, услуги в соответствии с пунктом 5 части 1 статьи 95 Федерального закона";
 Buf[ 9]="09-Уменьшение ранее доведенных до заказчика лимитов бюджетных обязательств в соответствии с пунктом 6 части 1 статьи 95 Федерального закона";
 Buf[10]="10-Перемена исполнителя вследствие реорганизации юридического лица в форме преобразования, слияния или присоединения (новый исполнитель является правопреемником исполнителя контракта) в соответствии с частью 5 статьи 95 Федерального закона";
 Buf[11]="11-Перемена заказчика в соответствии с частью 6 статьи 95 Федерального закона";
 Buf[12]="12-Изменение условий контракта по согласованию сторон в части поставки товара, выполнения работы или оказания услуги при улучшении их по качеству, техническим и функциональным характеристикам по сравнению с характеристиками, указанными в контракте в соответствии с частью 7 статьи 95 Федерального закона";
 n=Alternate("Причина изменения контракта",Buf,-1,Int(Р5_1_4));
 if not n=0:
    Р5_1_4=Format("%.2D",n);
 fi;
 Return Cur;
end;

Func Р5_2_4_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var n:i;
 Template.HideEditor(False);
 ClearVariable(Buf);
 Buf[1]="01 - По соглашению сторон";
 Buf[2]="02 - По решению суда";
 Buf[3]="03 - Односторонний отказ заказчика от исполнения контракта";
 Buf[4]="04 - Односторонний отказ исполнителя от исполнения контракта";
 n=Alternate("Причина расторжения контракта",Buf,-1,Int(Р5_2_4),12);
 if not n=0:
    Р5_2_4=Format("%.2D",n);
 fi;
 Return Cur;
end;

Func ФИО_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field:S;
var Rec:Record;
var v1,v2:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 Template.HideEditor(False);
 Rec=OpenCardFile("Сотрудники");
 if not Rec=nil:
    v1=GetCardFieldS("Сотрудники",rec,"ДОЛЖНОСТЬ.Долж");
    v2=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
    if Field="ДолжнРук" or Field="ФИОРук": ДолжнРук=v1; ФИОРук=v2;
    fi;
 fi;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_OnClick(Sender: String);
var Rec: Record;
 Rec=Раб.Документы.ВыборСФильтром("РПО_Договор","НомерДок","Рег and Учет_Реестр_ОФК and not ФЗ=0");
 if not Rec=nil:
    Договор=Rec;
 fi;
end;

Proc btnОбновить_OnClick(Sender: String);
 if Договор=nil: Message("Ссылка на контракт пуста",mtError); Exit; fi;
 if EnqOkCancel("Текущие данные будут утеряны, вы уверены ?",mtWarning)=cmOk:
    Расчет;
    Message("Обновление формы завершено");
 fi;
end;

Proc btnПечать_OnClick(Sender: String);
 Раб.WSH.Menu_Print;
end;

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

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

Proc OnRead;
 if CurrentState=CrdusInserted:
    ClosedModFob=False;
    ДатаОтч=ToDay;
    НомИзм=Раб.Обл.СледФ(SelfCrd,"НомИзм","not UKey="+RecordToString(Current)+" and Договор="+RecordToString(Договор));
    ДатаРук=ToDay;
 fi;
 if НомИзм<0:
    if НомИзм=-1:
       НомИзм=Раб.Обл.СледФ(SelfCrd,"НомИзм","not UKey="+RecordToString(Current)+" and Договор="+RecordToString(Договор));
      else
       НомИзм=0;
    fi;
    Расчет;
    EditorApply;
 fi;
end;
--Обработчики событий шаблона -----
--

Конец
