-- Шаблон создан мастером бланков
-- 18.12.2013 16:06:36
--
БланкСШаблоном "Форма планов-графиков размещения заказов";

var УпрНастр:L;

var НастрПоУмолч:S="Настройка по умолчанию";
var НастрЗакр:S="Закрыть настройку";

var НастрGUID	:S;
var CrdДок	:S=["РПО_ЗАЯВКА_ЗАКУП"];
var CrdПризнак	:S=["РПО_ДОК_ПРИЗНАК"];
var blnДок	:S=["ДОКУМЕНТЫ.ДОГОВОРПОСТ.ЗАЯВКА_ЗАКУП"];
var Справ	:S=["ПГ"];
var ДопАнПоказ1 :S;
var ДопАнПоказ1_:S;
var ДопАнПоле1	:S;
var UserНомЗаказ:S;
var CMFНомЗаказ :L;
var CMFНомЗаказ_:S=if(CMFНомЗаказ,"Да","Нет");

var УпрДопАнПоказ1:L=not ДопАнПоказ1="";

rbФЗ1:Object;
rbФЗ2:Object;

ФЗ:I=[1];
fДопАнПоказ1:L;
fПросто:L;
fCMF:L;
fПечатьДопКолон:L;
fРасшифр_11_1_4:L;

Заказчик:S;
ЗаказчикАдрес:S;
ЗаказчикТел:S;
ЗаказчикEMail:S;
ЗаказчикИНН:S;
ЗаказчикКПП:S;
ЗаказчикОКТМО:S;
ЗаказчикРНом_СПЗ:S;

ТекГод:S;

var Загл:S="План-график размещения заказов на поставку товаров, выполнение работ, оказание услуг для обеспечения государственных и муниципальных нужд на "+ТекГод+" год";

УслДопАнПоказ1:S;
var УслДопАнПоказ1_:S=if(Name_A(УслДопАнПоказ1)="",УслДопАнПоказ1,Name_A(УслДопАнПоказ1));

СОП:S;
var СОП_:S=Раб.Договор.РазмещениеЗаказа(СОП,False,"44ФЗ");
var ПискПредм:S;
ЕдИзм:I=[1000];
var ЕдИзм_:S=if(ЕдИзм=1000:"Тыс. руб."|ЕдИзм=1000000:"Млн. руб."|true:"Руб.");

var Загл9:S="ориентировочная начальная (максимальная) цена контракта, "+Lo(ЕдИзм_);

var Упр:I;
var Key[]:S;
var пп[]:i=$;
var ДопАнЗнач1[]:S;
var КБК[]:S;
var ОКВЭД[]:S;
var ОКПД[]:S;
var Лот[]:S;
var Предм[]:S;
var Треб[]:S;
var ЕдИзмер[]:S;
var Год1[]:I;
var Год2[]:I;
var Год3[]:I;
var Год4[]:I;
var Год5[]:I;
var Год6[]:I;
var Объем1[]:N;
var Объем2[]:N;
var Объем3[]:N;
var Объем4[]:N;
var Объем5[]:N;
var Объем6[]:N;
var Объем[]:N=Объем1[$]+Объем2[$]+Объем3[$]+Объем4[$]+Объем5[$]+Объем6[$];
var ОбъемТек[]:N=Объем1[$];
var SОбъем[]:S;
var Точн[]:S;
var Сум1[]:N;
var Сум2[]:N;
var Сум3[]:N;
var Сум4[]:N;
var Сум5[]:N;
var Сум6[]:N;
var Сум[]:N=Сум1[$]+Сум2[$]+Сум3[$]+Сум4[$]+Сум5[$]+Сум6[$];
var СумТек[]:N=Сум1[$];
var SСум[]:S;
var УслФин[]:S;
var СрокРазмещ[]:S;
var СрокИспол[]:S;
var Пер[]:S;
var СпособРазмещ[]:S;
var ОснИзм[]:S;
var Примеч[]:S;
var ДатаИзм[]:D;
var СРЗ[]:S;
var UKey[]:Record;
var Признак_Ref[]:Record;
var isПре[]:L;
var поЦене[]:L;
var ДопТреб[]:S;
var Содерж[]:S;
var pp[]:i;

var ИтогоСум93_4:N;
var ИтогоСум93_4Тек:N;
var ИтогоСум93_4_:S=Format("%.2N",ИтогоСум93_4)+" / "+Format("%.2N",ИтогоСум93_4Тек);
var ИтогоСум93_5:N;
var ИтогоСум93_5Тек:N;
var ИтогоСум93_5_:S=Format("%.2N",ИтогоСум93_5)+" / "+Format("%.2N",ИтогоСум93_5Тек);
var ИтогоСумСМП:N;
var ИтогоСумСМПТек:N;
var ИтогоСумСМП_:S=Format("%.2N",ИтогоСумСМП)+" / "+Format("%.2N",ИтогоСумСМПТек);
var ИтогоСум9:N;
var ИтогоСум9Тек:N;
var ИтогоСум9_:S=Format("%.2N",ИтогоСум9)+" / "+Format("%.2N",ИтогоСум9Тек);
var ВсегоСум:N;
var ВсегоСумТек:N;
var ВсегоСум_:S=Format("%.2N",ВсегоСум)+" / "+Format("%.2N",ВсегоСумТек);

ФИОРук:S;
var ДатаУтв:D=[ToDay];

var Buf[]:S;
var BufN1[]:N;
var BufN2[]:N;
var BufN3[]:N;
var BufN4[]:N;
var BufN5[]:N;
var BufN6[]:N;

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

var SelfBln:S="ДОКУМЕНТЫ.ДОГОВОРПОСТ.ПЛАН_ГРАФИК";
var SelfCfg:S="ТББ.ДОКУМЕНТЫ.ДОГОВОРПОСТ.ПЛАН_ГРАФИК.000.cfg";

btnРасчет	 :Object;
btnНастр	 :Object;
btnПечать	 :Object;
btnВыгруз	 :Object;
btnЗакрыть	 :Object;
cbДопАнПоказ1	 :Object;
cbПросто	 :Object;
cbCMF		 :Object;
cbПечатьДопКолон :Object;
btnПрисвНомер	 :Object;
btnПрисвНомерНов :Object;
btnРасшифр_11_1_4:Object;

Folder:S;

var Отч:S;

var BufErr1[]:S;
var BufErr2[]:S;
--
--Процедуры и функции ------------- 
Proc Настр(aСохр:L);
var Flag:L;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать(SelfBln,0,0,"",НастрGUID):
    Раб.Настр.Добавить("Справ","S");
    Раб.Настр.Добавить("ДопАнПоказ1","S");
    Раб.Настр.Добавить("ДопАнПоказ1_","S");
    Раб.Настр.Добавить("ДопАнПоле1","S");
    Раб.Настр.Добавить("UserНомЗаказ","S");
    Раб.Настр.Добавить("CMFНомЗаказ","L");
    Раб.Настр.Добавить("blnДок","S");
    Раб.Настр.Добавить("CrdДок","S");
    Раб.Настр.Добавить("CrdПризнак","S");
    if aСохр: 
       Раб.Настр.Сохранить; 
      else 
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
	  Flag=ExecuteFuncL("НастрПоУмолч_OnEnter","",1);
       fi;
    fi;
 fi;
end;

Proc ОткрНастр (Flag:L);
 btnРасчет.Visible=not Flag;
 btnНастр.Visible=not Flag;
 btnПечать.Visible=not Flag;
 btnВыгруз.Visible=not Flag;
 btnЗакрыть.Visible=not Flag;
 btnПрисвНомерНов.Visible=not Flag;
 btnПрисвНомер.Visible=not Flag;
 cbДопАнПоказ1.Visible=not Flag;
 cbПросто.Visible=not Flag;
 cbCMF.Visible=not Flag;
 cbПечатьДопКолон.Visible=not Flag;
 btnРасшифр_11_1_4.Visible=not Flag;
 rbФЗ1.Visible=not Flag;
 rbФЗ2.Visible=not Flag;
 УпрНастр=Flag;
 if Flag=True: Template.Field="НастрЗакр"; Template.Frame=1; fi;
end;

Proc Оформление;
var w,ww,s,ColPrint:i;
var user,tmp:S;
var Flag:L;
var Obj: Object;
 ColPrint=18198;
 cbДопАнПоказ1.Visible=not ДопАнПоказ1="";
 cbДопАнПоказ1.Caption="Показывать "+ДопАнПоказ1_;
 Flag=fДопАнПоказ1 and not ДопАнПоказ1="";
 for s=1..3 do
  if not s=2:
     if FindObject("S"+Str(s),Obj):
	Obj.Column(2 ,ColVisible,Flag); --ДопАнПоказ1_
	Obj.Column(2 ,ColPrint,Flag and fПечатьДопКолон);
	Obj.Column(17,ColPrint,fПечатьДопКолон); --Примечание
	Obj.Column(18,ColPrint,fПечатьДопКолон); --Дата последнего изменения
     fi;
  fi;
 od;
 cbCMF.Visible=CMFНомЗаказ;
 if UserНомЗаказ="" or not Раб.Бюджет2005.Сетевая:
    Flag=True;
   else
    Flag=False;
    User=UserName(AliasName(crdДок));
    ww=WordsCount(UserНомЗаказ,",");
    for w=1..ww do
     tmp=ExtractWord(w,UserНомЗаказ,",");
     if tmp=user: Flag=True; Break; fi;
    od;
 fi;
 btnПрисвНомер.Visible=Flag;
 btnПрисвНомерНов.Visible=Flag;
end;

Proc Очистить;
 S1.RowsCount=6;
 ClearVariable(Упр);
 ClearVariable(Key);
 ClearVariable(ДопАнЗнач1);
 ClearVariable(КБК);
 ClearVariable(ОКВЭД);
 ClearVariable(ОКПД);
 ClearVariable(Лот);
 ClearVariable(Предм);
 ClearVariable(Треб);
 ClearVariable(ЕдИзмер);
 ClearVariable(Год1);
 ClearVariable(Год2);
 ClearVariable(Год3);
 ClearVariable(Год4);
 ClearVariable(Год5);
 ClearVariable(Год6);
 ClearVariable(Объем1);
 ClearVariable(Объем2);
 ClearVariable(Объем3);
 ClearVariable(Объем4);
 ClearVariable(Объем5);
 ClearVariable(Объем6);
 ClearVariable(Объем);
 ClearVariable(ОбъемТек);
 ClearVariable(SОбъем);
 ClearVariable(Точн);
 ClearVariable(Сум1);
 ClearVariable(Сум2);
 ClearVariable(Сум3);
 ClearVariable(Сум4);
 ClearVariable(Сум5);
 ClearVariable(Сум6);
 ClearVariable(Сум);
 ClearVariable(СумТек);
 ClearVariable(SСум);
 ClearVariable(УслФин);
 ClearVariable(СрокРазмещ);
 ClearVariable(СрокИспол);
 ClearVariable(Пер);
 ClearVariable(СпособРазмещ);
 ClearVariable(ОснИзм);
 ClearVariable(ДатаИзм);
 ClearVariable(СРЗ);
 ClearVariable(UKey);
 ClearVariable(Признак_Ref);
 ClearVariable(isПре);
 ClearVariable(поЦене);
 ClearVariable(ДопТреб);
 ClearVariable(Содерж);
 ClearVariable(ИтогоСум93_4);
 ClearVariable(ИтогоСум93_4Тек);
 ClearVariable(ИтогоСум93_5);
 ClearVariable(ИтогоСум93_5Тек);
 ClearVariable(ИтогоСумСМП);
 ClearVariable(ИтогоСумСМПТек);
 ClearVariable(ИтогоСум9);
 ClearVariable(ИтогоСум9Тек);
 ClearVariable(ВсегоСум);
 ClearVariable(ВсегоСумТек);
 ClearVariable(pp);
end;

Proc Отрисовать;
var rUKey,rДопАнПоказ1,rКБК,rОКВЭД,rОКПД,rПредм,rТреб,rСрокИспол,r,c,Iter,p,z:i;
var iUKey,iДопАнПоказ1,iКБК,iОКВЭД,iОКПД,iПредм,iТреб,iСрокИспол:I;
var flagBG:L;
var Obj:Object;
 if FindObject("S1",Obj):
    S1.RowsCount=6;
    S1.RowsCount=6+Упр;
    p=0;
    rUKey=6+1;
    rДопАнПоказ1=rUKey;
    rКБК=rUKey;
    rОКВЭД=rUKey;
    rОКПД=rUKey;
    rПредм=rUKey;
    rТреб=rUKey;
    rСрокИспол=rUKey;
    r=6;
    iUKey=1;
    iДопАнПоказ1=1;
    iКБК=1;
    iОКВЭД=1;
    iОКПД=1;
    iПредм=1;
    iТреб=1;
    iСрокИспол=1;
    p=1;
    for Iter=1..Упр do
     Hint("Отрисовка "+Str(Iter*100/Упр)+"%");
     r=r+1;
     c=2; Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,ДопАнЗнач1[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=3; Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,КБК[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=4; Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,ОКВЭД[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=5; Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,ОКПД[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=6; Obj.Cell(r,c,CellFieldType,cftCommonField);Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,"Лот["+Str(Iter)+"]",True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r); Obj.Cell(r,c,CellReadOnly,True);
     c=7; Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,Предм[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=8; Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,Треб[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=9; Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,ЕдИзмер[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=10;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,SОбъем[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=11;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,SСум[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=12;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,УслФин[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=13;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,СрокРазмещ[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=14;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,СрокИспол[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=15;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,СпособРазмещ[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=16;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,ОснИзм[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=17;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,Примеч[Iter],True); Obj.Cell(r,c,CellEventOnClick,"OnClick"); Obj.CellLinks(c,r,c,r);
     c=18;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellContents,DateToString(ДатаИзм[Iter]),True); Obj.CellLinks(c,r,c,r);
     c=19;Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(Iter),True);
     for c=1..18 do
      Obj.Cell(r,c,CellBGColor,if(flagBG:coTransparent|true:coWhite));
     od;
     if Лот[Iter]="" and not (СРЗ[Iter]="10.83_2_7" or СРЗ[Iter]="11.93_1_4" or СРЗ[Iter]="11.93_1_5"):
	Obj.Cell(r,6,CellBGColor,coYellow);
     fi;
     if ОснИзм[Iter]="Отменено":
	for c=1..18 do
	 Obj.Cell(r,c,CellBGColor,coLtGray);
	od;
     fi;
     if isПре[Iter]:
	Obj.Cell(r,17,CellBGColor,coRed);
     fi;
     if UKey[iUKey]=UKey[Iter+1]:
	if not ДопАнЗнач1[iДопАнПоказ1]=ДопАнЗнач1[Iter+1]:
	   if not rДопАнПоказ1=r:
	      c=2; Obj.CellLinks(c,rДопАнПоказ1,c,r); --Подразделение
	   fi;
	   rДопАнПоказ1=r+1;
	   iДопАнПоказ1=Iter+1;
	fi;
	if not fПросто:
	   if not КБК[iКБК]=КБК[Iter+1]:
	      if not rКБК=r:
		 c=3; Obj.CellLinks(c,rКБК,c,r); --КБК
	      fi;
	      rКБК=r+1;
	      iКБК=Iter+1;
	   fi;
	   if not ОКВЭД[iОКВЭД]=ОКВЭД[Iter+1]:
	      if not rОКВЭД=r:
		 c=4; Obj.CellLinks(c,rОКВЭД,c,r); --ОКВЭД
	      fi;
	      rОКВЭД=r+1;
	      iОКВЭД=Iter+1;
	   fi;
	   if not ОКПД[iОКПД]=ОКПД[Iter+1]:
	      if not rОКПД=r:
		 c=5; Obj.CellLinks(c,rОКПД,c,r); --ОКПД
	      fi;
	      rОКПД=r+1;
	      iОКПД=Iter+1;
	   fi;
	   if not Предм[iПредм]=Предм[Iter+1]:
	      if not rПредм=r:
		 c=7; Obj.CellLinks(c,rПредм,c,r); --наименование предмета контракта
	      fi;
	      rПредм=r+1;
	      iПредм=Iter+1;
	   fi;
	   if not Треб[iТреб]=Треб[Iter+1]:
	      if not rТреб=r:
		 c=8; Obj.CellLinks(c,rТреб,c,r); --минимально необходимые требования, предъявляемые к предмету контракта
	      fi;
	      rТреб=r+1;
	      iТреб=Iter+1;
	   fi;
	   if not СрокИспол[iСрокИспол]=СрокИспол[Iter+1]:
	      if not rСрокИспол=r:
		 c=14; Obj.CellLinks(c,rСрокИспол,c,r); --срок исполения контракта (мес., год)
	      fi;
	      rСрокИспол=r+1;
	      iСрокИспол=Iter+1;
	   fi;
	fi; --if not fПросто:
       else
	Obj.Cell(rUKey,1 ,CellBorder,"2,2,1,2");
	Obj.Cell(rUKey,16,CellBorder,"1,2,2,2");
	Obj.Cell(rUKey,17,CellBorder,"2,2,1,2");
	Obj.Cell(rUKey,18,CellBorder,"1,2,2,2");
	if not Iter=Упр:
	   for c=2..15 do
	    Obj.Cell(r+1,c,CellBorder,"1,2,1,1");
	   od;
	fi;
	pp[Iter]=p;
	c=1; Obj.Cell(rUKey,c,CellFieldType,cftStaticText); Obj.Cell(rUKey,c,CellAlignment,0); Obj.Cell(rUKey,c,CellContents,Str(p),True);
	if not rUKey=r:
	   c=1;  Obj.CellLinks(c,rUKey,c,r); --№ п.п.
	   c=6;  Obj.CellLinks(c,rUKey,c,r); --№ заказа (№ лота)
	   c=12; Obj.CellLinks(c,rUKey,c,r); --условия финансового обеспечения исполнения контракта (включая размер аванса)
	   c=13; Obj.CellLinks(c,rUKey,c,r); --срок размещения заказа (мес., год)
	   c=15; Obj.CellLinks(c,rUKey,c,r); --Способ определения поставщика (подрядчика, исполнителя)
	   c=16; Obj.CellLinks(c,rUKey,c,r); --Обоснование внесения изменений
	   c=17; Obj.CellLinks(c,rUKey,c,r); --Примечание
	   c=18; Obj.CellLinks(c,rUKey,c,r); --Дата последнего изменения
	fi;
	if not rДопАнПоказ1=r:
	   c=2; Obj.CellLinks(c,rДопАнПоказ1,c,r); --Подразделение
	fi;
	if not fПросто:
	   if not rКБК=r:
	      c=3; Obj.CellLinks(c,rКБК,c,r); --КБК
	   fi;
	   if not rОКВЭД=r:
	      c=4; Obj.CellLinks(c,rОКВЭД,c,r); --ОКВЭД
	   fi;
	   if not rОКПД=r:
	      c=5; Obj.CellLinks(c,rОКПД,c,r); --ОКПД
	   fi;
	   if not rПредм=r:
	      c=7; Obj.CellLinks(c,rПредм,c,r); --наименование предмета контракта
	   fi;
	   if not rТреб=r:
	      c=8; Obj.CellLinks(c,rТреб,c,r); --минимально необходимые требования, предъявляемые к предмету контракта
	   fi;
	   if not rСрокИспол=r:
	      c=14; Obj.CellLinks(c,rСрокИспол,c,r); --срок исполения контракта (мес., год)
	   fi;
	fi; --if not fПросто:
	rUKey=r+1;
	rДопАнПоказ1=r+1;
	rКБК=r+1;
	rОКВЭД=r+1;
	rОКПД=r+1;
	rПредм=r+1;
	rТреб=r+1;
	rСрокИспол=r+1;
	iUKey=Iter+1;
	iДопАнПоказ1=Iter+1;
	iКБК=Iter+1;
	iОКВЭД=Iter+1;
	iОКПД=Iter+1;
	iПредм=Iter+1;
	iТреб=Iter+1;
	iСрокИспол=Iter+1;
	flagBG=not FlagBG;
	p=p+1;
     fi; --if UKey[iUKey]=UKey[Iter]:
    od;
 fi;
 for Iter=1..Упр do
  if isПре[Iter]:
     Trace("Позиция №"+Str(Iter)+" Внимание! Текущая редакция заказа не принята к учету, данные взяты из предыдущей редакции заказа");
  fi;
  if not pp[Iter]=0:
     if not Лот[Iter]="":
	z=SearchInArray(Лот,Лот[Iter],False,Iter+1);
	While not z=-1 do
	 if not UKey[Iter]=UKey[z] and not pp[z]=0:
	    Trace("Внимание! Повторение номера заказа (лота) "+Лот[Iter]+" Позиция №"+Str(pp[Iter])+" = Позиция №"+Str(pp[z]));
	 fi;
	 z=SearchInArray(Лот,Лот[Iter],False,z+1);
	od;
     fi; --if not Лот[Iter]="":
     z=SearchInArray(Признак_Ref,Признак_Ref[Iter],False,Iter+1);
     While not z=-1 do
      if not UKey[Iter]=UKey[z] and not pp[z]=0:
	 Trace("Внимание! Повторение признака документа "+RecordToString(Признак_Ref[Iter])+" Позиция №"+Str(pp[Iter])+" = Позиция №"+Str(pp[z]));
      fi;
      z=SearchInArray(Признак_Ref,Признак_Ref[Iter],False,z+1);
     od;
  fi; --if not pp[Iter]=0
 od;
end;

Proc Расчет;
var OWA,OWA1,OWA2,n,n1,n2,nn1,OA,OA1,OA2,i,ii,Iter:I;
var Key_,Лот_,УслФин_,СрокРазмещ_,СРЗ_,СпособРазмещ_,КБК_,ОКВЭД_,ОКПД_,Предм_,Требв_,ЕдИзм_,СрокИспол_,Точн_,ДопТреб_,ОснИзм_,Pre_,Prefix:S;
var ТипИзм_,Год1_,Год2_,Год3_,Год4_,Год5_,Год6_,y:I;
var Объем1_,Объем2_,Объем3_,Объем4_,Объем5_,Объем6_,Сум1_,Сум2_,Сум3_,Сум4_,Сум5_,Сум6_:N;
var РазмещСрок_:D;
var UKey_,Признак_Ref_:Record;
var ff:S;
 ClearTrace(true);
 Очистить;
 RefreshCard(crdДок);
 RefreshCard(CrdПризнак);
 if ЕдИзм=0: ЕдИзм=1000; fi;
-- ff="Рег and not НеДейств and ФЗ=1 and not ТипИзм=-99 and Справ='"+Справ+"' and ДатаРег>=1.1."+ТекГод+" and ДатаРег<1.1."+Str(Int(ТекГод)+1);
-- ff="Рег and not НеДейств and ФЗ=1 and Справ='"+Справ+"' and ДатаРег>=1.1."+ТекГод+" and ДатаРег<1.1."+Str(Int(ТекГод)+1);
-- ff="Рег and not НеДейств and ФЗ="+Str(ФЗ)+" and Справ='"+Справ+"' and ДатаРег>=1.1."+ТекГод+" and ДатаРег<1.1."+Str(Int(ТекГод)+1);
-- ff="((Рег and Пре=nil ) or (not Пре=nil)) and not НеДейств and ФЗ="+Str(ФЗ)+" and Справ='"+Справ+"' and ДатаРег>=1.1."+ТекГод+" and ДатаРег<1.1."+Str(Int(ТекГод)+1);
 ff="(Рег or (not Рег and not Пре=nil)) and not НеДейств and ФЗ="+Str(ФЗ)+" and Справ='"+Справ+"' and ДатаРег>=1.1."+ТекГод+" and ДатаРег<1.1."+Str(Int(ТекГод)+1);
 ff=ff+if(not УслДопАнПоказ1=""," and "+ДопАнПоле1+"='"+УслДопАнПоказ1+"'","");
 if not СОП="":
    if СОП="10" 		 : ff=ff+" and Match(РазмещЗаказ,'10!')";
      |СОП="0" or СОП="11.93_1_4": ff=ff+" and (РазмещЗаказ='0' or РазмещЗаказ='11.93_1_4')";
      |СОП="11" 		 : ff=ff+" and (РазмещЗаказ='0' or Match(РазмещЗаказ,'11!'))";
      |True			 : ff=ff+" and РазмещЗаказ='"+СОП+"'";
    fi;
 fi;
 ff=ff+if(fCMF," and not ClosedModFob","");
 Try
--  OWA1=OpenWorkArea(crdДок,if(fCMF,"ДатаРег;ДатаИзм",if(fДопАнПоказ1,"РазмещСрок;"+ДопАнПоле1+";Номер","РазмещСрок;Номер")),ff+" and UKey={896}");
  OWA1=OpenWorkArea(crdДок,if(fCMF,"ДатаРег;ДатаИзм",if(fДопАнПоказ1,"РазмещСрок;"+ДопАнПоле1+";Номер","РазмещСрок;Номер")),ff);
  Try
   OWA2=OpenWorkArea(crdДок,"");
   Try
    nn1=Records(OWA1);
    ShowProgress(nn1,"Расчет...");
    if not nn1=0:
       OA1=OpenArray(OWA1,1,"Расшифр","КБК;ОКДП;Предм;Треб;ИсполСрок",if(ПискПредм="","","Match(Предм,'*"+ПискПредм+"*')"));
       OA2=OpenArray(OWA2,1,"Расшифр","КБК;ОКДП;Предм;Треб;ИсполСрок",if(ПискПредм="","","Match(Предм,'*"+ПискПредм+"*')"));
    fi;
    for n1=1..nn1 do
     ProgressPos(n1);
     if GetFieldL(OWA1,n1,"Рег"):
	OWA=OWA1;
	OA=OA1;
	n=n1;
	Prefix="";
       else
	OWA=OWA2;
	OA=OA2;
	n2=GetRecordNumber(OWA2,GetFieldR(OWA1,n1,"Пре"));
	n=n2;
	Prefix="ПРЕ.";
     fi;
     UKey_=GetRecordKey(OWA,n);
     ii=Records(OA);
     if not ii=0:
	ТипИзм_=GetFieldI(OWA,n,"ТипИзм");
	Pre_=if(ТипИзм_=-99,"_Пре","");
	Признак_Ref_=GetFieldR(OWA,n,"Признак_Ref");
	Год1_=Int(GetFieldS(OWA,n,"Год1"));
	Год2_=Int(GetFieldS(OWA,n,"Год2"));
	Год3_=Int(GetFieldS(OWA,n,"Год3"));
	Год4_=Int(GetFieldS(OWA,n,"Год4"));
	Год5_=Int(GetFieldS(OWA,n,"Год5"));
	Год6_=Int(GetFieldS(OWA,n,"Год6"));
	Лот_=GetFieldS(OWA,n,"НомерДок");
	if Лот_="8":
	   Лот_=Лот_;
	fi;
	УслФин_=Format("%.2N",GetFieldN(OWA,n,"СумОбЗаяв")/ЕдИзм)+" / "+Format("%.2N",GetFieldN(OWA,n,"СумОбКт")/ЕдИзм)+" / "+Str(GetFieldN(OWA,n,"ПроцАв"),1)+"%";
	РазмещСрок_=GetFieldD(OWA,n,"РазмещСрок");
	СрокРазмещ_=SubStr(DateToString(РазмещСрок_),4,255);
	СРЗ_=GetFieldS(OWA,n,"РазмещЗаказ");
	if СРЗ_="0": СРЗ_="11.93_1_4"; fi;
	if СРЗ_="10.83_2_7" or СРЗ_="11.93_1_4" or СРЗ_="11.93_1_5":
	   СпособРазмещ_=СРЗ_;
	  else
	   СпособРазмещ_=SubStr(СРЗ_,1,2);
	fi;
	СпособРазмещ_=Раб.Договор.РазмещениеЗаказа(СпособРазмещ_,False,"44ФЗ");
	ДопТреб_=GetFieldS(OWA,n,"ДопТреб");
	if ТипИзм_=99:
	   Try
	    ОснИзм_=GetFieldS(OWA,n,"Пре.ОснИзм");
	   Except
	    ОснИзм_="";
	   end;
	  else
	   ОснИзм_=GetFieldS(OWA,n,"ОснИзм");
	fi;
	for i=1..ii do
	 Объем1_=GetFieldN(OA,i,"Объем"+Pre_+"1"); Сум1_=GetFieldN(OA,i,"Сум"+Pre_+"1");
	 Объем2_=GetFieldN(OA,i,"Объем"+Pre_+"2"); Сум2_=GetFieldN(OA,i,"Сум"+Pre_+"2");
	 Объем3_=GetFieldN(OA,i,"Объем"+Pre_+"3"); Сум3_=GetFieldN(OA,i,"Сум"+Pre_+"3");
	 Объем4_=GetFieldN(OA,i,"Объем"+Pre_+"4"); Сум4_=GetFieldN(OA,i,"Сум"+Pre_+"4");
	 Объем5_=GetFieldN(OA,i,"Объем"+Pre_+"5"); Сум5_=GetFieldN(OA,i,"Сум"+Pre_+"5");
	 Объем6_=GetFieldN(OA,i,"Объем"+Pre_+"6"); Сум6_=GetFieldN(OA,i,"Сум"+Pre_+"6");
	 if Год2_=Int(ТекГод):
	    Объем1_=Объем2_; Сум1_=Сум2_;
	    Объем2_=Объем3_; Сум2_=Сум3_;
	    Объем3_=Объем4_; Сум3_=Сум4_;
	    Объем4_=Объем5_; Сум4_=Сум5_;
	    Объем5_=Объем6_; Сум5_=Сум6_;
	    Объем6_=0;	     Сум6_=0;
	   |Год3_=Int(ТекГод):
	    Объем1_=Объем3_; Сум1_=Сум3_;
	    Объем2_=Объем4_; Сум2_=Сум4_;
	    Объем3_=Объем5_; Сум3_=Сум5_;
	    Объем4_=Объем6_; Сум4_=Сум6_;
	    Объем5_=0;	     Сум5_=0;
	    Объем6_=0;	     Сум6_=0;
	   |Год4_=Int(ТекГод):
	    Объем1_=Объем4_; Сум1_=Сум4_;
	    Объем2_=Объем5_; Сум2_=Сум5_;
	    Объем3_=Объем6_; Сум3_=Сум6_;
	    Объем4_=0;	     Сум4_=0;
	    Объем5_=0;	     Сум5_=0;
	    Объем6_=0;	     Сум6_=0;
	   |Год5_=Int(ТекГод):
	    Объем1_=Объем5_; Сум1_=Сум5_;
	    Объем2_=Объем6_; Сум2_=Сум6_;
	    Объем3_=0;	     Сум3_=0;
	    Объем4_=0;	     Сум4_=0;
	    Объем5_=0;	     Сум5_=0;
	    Объем6_=0;	     Сум6_=0;
	   |Год6_=Int(ТекГод):
	    Объем1_=Объем6_; Сум1_=Сум6_;
	    Объем2_=0;	     Сум2_=0;
	    Объем3_=0;	     Сум3_=0;
	    Объем4_=0;	     Сум4_=0;
	    Объем5_=0;	     Сум5_=0;
	    Объем6_=0;	     Сум6_=0;
	 fi;
	 if not Round(Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_,2)=0 and ((not СРЗ_="10.83_2_7" and not СРЗ_="11.93_1_4" and not СРЗ_="11.93_1_5") or ((СРЗ_="10.83_2_7" or СРЗ_="11.93_1_4" or СРЗ_="11.93_1_5") and not ТипИзм_=-99) or fРасшифр_11_1_4):
	    КБК_=GetFieldS(OA,i,"КБК");
	    if not GetFieldS(OA,i,"ВД")="1":
--		 КБК_="000"+SubStr(КБК_,4,255);
	       КБК_=SubStr(КБК_,22,3);
	    fi;
	    if СРЗ_="10.83_2_7" and not fРасшифр_11_1_4:
	       Key_="1#"+КБК_;
	      |СРЗ_="11.93_1_4" and not fРасшифр_11_1_4:
	       Key_="2#"+КБК_;
	      |СРЗ_="11.93_1_5" and not fРасшифр_11_1_4:
	       Key_="3#"+КБК_;
	      |True:
	       --Key_="0#"+Раб.Формат.ДатаСтр(РазмещСрок_,14)+"#"+Str16(Int(Лот_))+"#"+RecordToString(UKey_);
	       Key_="0#"
		    +Раб.Формат.ДатаСтр(РазмещСрок_,14)+"#"
		    +Str16(Int(Лот_))+"#"
		    +RecordToString(UKey_)+"#"
		    +КБК_+"#"
		    +Str16(Раб.crc16.crc24_(Раб.crc16.init24,SubStr(GetFieldS(OA,i,"ОКДП"),1,8)))+"#"
		    +Str16(Раб.crc16.crc24_(Раб.crc16.init24,GetFieldS(OA,i,"Предм")))+"#"
		    +Str16(Раб.crc16.crc24_(Раб.crc16.init24,GetFieldS(OA,i,"Треб")))+"#"
		    +if(GetFieldS(OA,i,"ИсполПер")="нет",Раб.Формат.ДатаСтр(GetFieldD(OA,i,"ИсполСрок"),14),Str16(Раб.crc16.crc24_(раб.crc16.init24,GetFieldS(OA,i,"ИсполПер"))))+"#"
		    +Up(GetFieldS(OA,i,"ЕдИзм"))+"#"
		    +GetFieldS(OA,i,"Точн");
	    fi;
	    Iter=SearchInArray(Key,Key_,True);
	    if Iter=-1:
	       Iter=InsertInArraySort(Key,Key_);
	       InsertFrame(Упр,Iter);
	    fi;
	    Признак_Ref[Iter]=Признак_Ref_;
	    isПре[Iter]=not Prefix="";
	    if not UKey[Iter-1]=UKey_:
	       if not RecordExists(CrdПризнак,Признак_Ref_):
		  Trace("Позиция №"+Str(Iter)+" Ссылка на признак документа "+RecordToString(Признак_Ref_)+" не найдена. Обратитесь к разработчику");
	       fi;
	    fi;
	    if fДопАнПоказ1:
	       ДопАнЗнач1[Iter]=GetFieldS(OWA,n,ДопАнПоле1);
	    fi;
	    КБК[Iter]=КБК_;
	    if (not СРЗ_="10.83_2_7" and not СРЗ_="11.93_1_4" and not СРЗ_="11.93_1_5") or fРасшифр_11_1_4:
	       ОКВЭД[Iter]=GetFieldS(OA,i,"ОКВЭД");
	       ОКПД[Iter]=SubStr(GetFieldS(OA,i,"ОКДП"),1,8);
	       Лот[Iter]=Лот_;
	       Треб[Iter]=GetFieldS(OA,i,"Треб");
	       ЕдИзмер[Iter]=Lo(GetFieldS(OA,i,"ЕдИзм"));
	       Точн_=GetFieldS(OA,i,"Точн");
	    fi;
	    if СРЗ_="10.83_2_7" and not fРасшифр_11_1_4:
	       Предм[Iter]="Лекарственные препараты"; --????
	      |(not СРЗ_="11.93_1_4" and not СРЗ_="11.93_1_5") or fРасшифр_11_1_4:
	       Предм[Iter]=GetFieldS(OA,i,"Предм");
	    fi;
	    поЦене[Iter]=GetFieldL(OA,i,"ПоЦене");
	    if поЦене[Iter]:
	       Объем1[Iter]=Объем1[Iter]+Объем1_;
	       Объем2[Iter]=Объем2[Iter]+Объем2_;
	       Объем3[Iter]=Объем3[Iter]+Объем3_;
	       Объем4[Iter]=Объем4[Iter]+Объем4_;
	       Объем5[Iter]=Объем5[Iter]+Объем5_;
	       Объем6[Iter]=Объем6[Iter]+Объем6_;
	       Сум1[Iter]=Сум1[Iter]+(Сум1_/ЕдИзм);
	       Сум2[Iter]=Сум2[Iter]+(Сум2_/ЕдИзм);
	       Сум3[Iter]=Сум3[Iter]+(Сум3_/ЕдИзм);
	       Сум4[Iter]=Сум4[Iter]+(Сум4_/ЕдИзм);
	       Сум5[Iter]=Сум5[Iter]+(Сум5_/ЕдИзм);
	       Сум6[Iter]=Сум6[Iter]+(Сум6_/ЕдИзм);
	       y=0;
	       if not Round(Объем1[Iter],Int(Точн_))=0: y=y+1; fi;
	       if not Round(Объем2[Iter],Int(Точн_))=0: y=y+1; fi;
	       if not Round(Объем3[Iter],Int(Точн_))=0: y=y+1; fi;
	       if not Round(Объем4[Iter],Int(Точн_))=0: y=y+1; fi;
	       if not Round(Объем5[Iter],Int(Точн_))=0: y=y+1; fi;
	       if not Round(Объем6[Iter],Int(Точн_))=0: y=y+1; fi;
	       SСум[Iter]=Format("%."+Точн_+"N",(Объем[Iter]/y))+"/"+Format("%.2N",Сум[Iter]);
	       if not ТипИзм_=-99:
		  if СРЗ_="11.93_1_4":
		     ИтогоСум93_4=ИтогоСум93_4+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		     ИтогоСум93_4Тек=ИтогоСум93_4Тек+(Сум1_/ЕдИзм);
		    |СРЗ_="11.93_1_5":
		     ИтогоСум93_5=ИтогоСум93_5+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		     ИтогоСум93_5Тек=ИтогоСум93_5Тек+(Сум1_/ЕдИзм);
		    |СРЗ_="9":
		     ИтогоСум9=ИтогоСум9+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		     ИтогоСум9Тек=ИтогоСум9Тек+(Сум1_/ЕдИзм);
		  fi;
		  if not ДопТреб_="0":
		     ИтогоСумСМП=ИтогоСумСМП+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		     ИтогоСумСМПТек=ИтогоСумСМПТек+(Сум1_/ЕдИзм);
		  fi;
		  ВсегоСум=ВсегоСум+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		  ВсегоСумТек=ВсегоСумТек+(Сум1_/ЕдИзм);
	       fi;
	      else
	       if (not СРЗ_="10.83_2_7" and not СРЗ_="11.93_1_4" and not СРЗ_="11.93_1_5") or fРасшифр_11_1_4:
		  Объем1[Iter]=Объем1[Iter]+Объем1_;
		  Объем2[Iter]=Объем2[Iter]+Объем2_;
		  Объем3[Iter]=Объем3[Iter]+Объем3_;
		  Объем4[Iter]=Объем4[Iter]+Объем4_;
		  Объем5[Iter]=Объем5[Iter]+Объем5_;
		  Объем6[Iter]=Объем6[Iter]+Объем6_;
		  SОбъем[Iter]=Format("%."+Точн_+"N",Объем[Iter])+"/"+Format("%."+Точн_+"N",ОбъемТек[Iter]);
	       fi;
	       Сум1[Iter]=Сум1[Iter]+(Сум1_/ЕдИзм);
	       Сум2[Iter]=Сум2[Iter]+(Сум2_/ЕдИзм);
	       Сум3[Iter]=Сум3[Iter]+(Сум3_/ЕдИзм);
	       Сум4[Iter]=Сум4[Iter]+(Сум4_/ЕдИзм);
	       Сум5[Iter]=Сум5[Iter]+(Сум5_/ЕдИзм);
	       Сум6[Iter]=Сум6[Iter]+(Сум6_/ЕдИзм);
	       SСум[Iter]=Format("%.2N",Сум[Iter])+"/"+Format("%.2N",СумТек[Iter]);
	       if not ТипИзм_=-99:
		  if СРЗ_="11.93_1_4":
		     ИтогоСум93_4=ИтогоСум93_4+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		     ИтогоСум93_4Тек=ИтогоСум93_4Тек+(Сум1_/ЕдИзм);
		    |СРЗ_="11.93_1_5":
		     ИтогоСум93_5=ИтогоСум93_5+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		     ИтогоСум93_5Тек=ИтогоСум93_5Тек+(Сум1_/ЕдИзм);
		    |СРЗ_="9":
		     ИтогоСум9=ИтогоСум9+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		     ИтогоСум9Тек=ИтогоСум9Тек+(Сум1_/ЕдИзм);
		  fi;
		  if not ДопТреб_="0":
		     ИтогоСумСМП=ИтогоСумСМП+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		     ИтогоСумСМПТек=ИтогоСумСМПТек+(Сум1_/ЕдИзм);
		  fi;
		  ВсегоСум=ВсегоСум+((Сум1_+Сум2_+Сум3_+Сум4_+Сум5_+Сум6_)/ЕдИзм);
		  ВсегоСумТек=ВсегоСумТек+(Сум1_/ЕдИзм);
	       fi;
	    fi;
	    Точн[Iter]=Точн_;
	    if (not СРЗ_="10.83_2_7" and not СРЗ_="11.93_1_4" and not СРЗ_="11.93_1_5") or fРасшифр_11_1_4:
	       УслФин[Iter]=УслФин_;
	       СрокРазмещ[Iter]=СрокРазмещ_;
--передалть на общий на ПГ а не на продукт
--!!!		    if GetFieldS(OA,i,"ИсполПер")="нет":
--!!!		       СрокИспол[Iter]=SubStr(DateToString(GetFieldD(OA,i,"ИсполСрок")),4,255);
--!!!		      else
--!!!		       СрокИспол[Iter]=GetFieldS(OA,i,"ИсполПер");
--!!!		    fi;
	       СрокИспол[Iter]=SubStr(DateToString(GetFieldD(OA,i,"ИсполСрок")),4,255);
	       Пер[Iter]=GetFieldS(OA,i,"ИсполПер");
	    fi;
	    СпособРазмещ[Iter]=СпособРазмещ_;
	    ОснИзм[Iter]=if(ТипИзм_=-99,"Отменено",ОснИзм_);
	    Примеч[Iter]=if(Match(СРЗ_,"10.83_2_*"):"ст.83 ч.2 п."+Trim(SubStr(СРЗ_,9,2))|Match(СРЗ_,"11.93_1_*"):"ст.93 ч.1 п."+Trim(SubStr(СРЗ_,9,2))|True:"");
	    if (not СРЗ_="10.83_2_7" and not СРЗ_="11.93_1_4" and not СРЗ_="11.93_1_5") or fРасшифр_11_1_4:
	       if ДопТреб_="1": Примеч[Iter]=Раб.Бюджет2005.Объединить(Примеч[Iter],"СМП"," ");
		 |ДопТреб_="2": Примеч[Iter]=Раб.Бюджет2005.Объединить(Примеч[Iter],"СОНКО"," ");
	       fi;
	       ДопТреб[Iter]=ДопТреб_;
	       Содерж[Iter]=GetFieldS(OWA,n,"Содерж");
	    fi;
	    if isПре[Iter]:
	       Примеч[Iter]=Раб.Бюджет2005.Объединить(Примеч[Iter],"Не принято к учету, предыдущая редакция заказа"," ");
	    fi;
	    if GetFieldI(OWA,n,"ТипИзм")=0:
	       ДатаИзм[Iter]=GetFieldD(OWA,n,"ДатаРег");
	      else
	       ДатаИзм[Iter]=GetFieldD(OWA,n,"ДатаИзм");
	    fi;
	    СРЗ[Iter]=СРЗ_;
	    if Год2_=Int(ТекГод):
	       Год1[Iter]=Год2_;
	       Год2[Iter]=Год3_;
	       Год3[Iter]=Год4_;
	       Год4[Iter]=Год5_;
	       Год5[Iter]=Год6_;
	       Год6[Iter]=0;
	      |Год3_=Int(ТекГод):
	       Год1[Iter]=Год3_;
	       Год2[Iter]=Год4_;
	       Год3[Iter]=Год5_;
	       Год4[Iter]=Год6_;
	       Год5[Iter]=0;
	       Год6[Iter]=0;
	      |Год4_=Int(ТекГод):
	       Год1[Iter]=Год4_;
	       Год2[Iter]=Год5_;
	       Год3[Iter]=Год6_;
	       Год4[Iter]=0;
	       Год5[Iter]=0;
	       Год6[Iter]=0;
	      |Год5_=Int(ТекГод):
	       Год1[Iter]=Год5_;
	       Год2[Iter]=Год6_;
	       Год3[Iter]=0;
	       Год4[Iter]=0;
	       Год5[Iter]=0;
	       Год6[Iter]=0;
	      |Год6_=Int(ТекГод):
	       Год1[Iter]=Год6_;
	       Год2[Iter]=0;
	       Год3[Iter]=0;
	       Год4[Iter]=0;
	       Год5[Iter]=0;
	       Год6[Iter]=0;
	      |true:
	       Год1[Iter]=Год1_;
	       Год2[Iter]=Год2_;
	       Год3[Iter]=Год3_;
	       Год4[Iter]=Год4_;
	       Год6[Iter]=Год5_;
	       Год6[Iter]=Год6_;
	    fi;
	    UKey[Iter]=UKey_;
	 fi; --if not Round(Сум_+СумТек_,2)=0:
	od; --for i=1..ii do
     fi; --if not ii=0:
    od; --for n=1..nn do
   Finally
    CloseWorkArea(OWA2);
   end;
  Finally
   CloseWorkArea(OWA1);
  end;
 Finally
  CloseProgress;
 end;
end;

--выгрузки XML
Proc commonInfo;
--Общая информация плана-графика
  Раб.XML.ОткрытьТэг("commonInfo","");
    --Раб.XML.СоздатьТэгNChk("id",id, 0, false); --Идентификатор плана-графика на ООС Элемент обязателен для заполнения при внесении изменений в ранее загруженный на ООС план-график
    --Раб.XML.СоздатьТэгChk("externalId",externalId, false); --Внешний идентификатор документа Атрибут может быть заполнен в ВСРЗ для дополнительной идентификации проекта документа
    --Раб.XML.СоздатьТэгChk("planNumber",planNumber, false); --Реестровый номер плана-графика
    Раб.XML.СоздатьТэг("year",ТекГод, false); --Год плана-графика Год плана-графика не может быть изменен после сохранения на ООС первой версии
    --Раб.XML.СоздатьТэгNChk("versionNumber",versionNumber,0 , false); --Номер версии плана-графика Элемент обязателен для заполнения при выгрузке из ООС опубликованного плана-графика. В прочих случаях не указывается.
    Раб.XML.ОткрытьТэг("owner","");
    --Н
    --Организация владельца последней версии плана-графика
      Раб.XML.СоздатьТэг("regNum",ЗаказчикРНом_СПЗ, false); --Реестровый номер в СПЗ
      Раб.XML.СоздатьТэгChk("fullName",Заказчик, false); --Полное наименование
      Раб.XML.СоздатьТэг("responsibleRole","CU", false); --Роль организации:
    Раб.XML.ЗакрытьТэг;
    --Раб.XML.СоздатьТэгDChk("createDate",createDate, "ISODT", false); --Дата создания плана-графика
    Раб.XML.СоздатьТэг("description","План закупок на "+ТекГод+" год", false); --Описание плана-графика
    Раб.XML.СоздатьТэг("confirmDate",РАБ.XML.IsoDateTime(ДатаУтв,0,""), false); --Дата утверждения плана-графика
    --Раб.XML.СоздатьТэгDChk("publishDate",publishDate, "ISODT", false); --Дата публикации плана-графика
  Раб.XML.ЗакрытьТэг;
end;


Proc customerInfo;
--Сведения о заказчике
  Раб.XML.ОткрытьТэг("customerInfo","");
    Раб.XML.ОткрытьТэг("customer",""); --Организация заказчика Организация заказчика плана-графика не может быть изменена после сохранения на ООС первой версии
      Раб.XML.СоздатьТэг("regNum",ЗаказчикРНом_СПЗ, false); --Реестровый номер в СПЗ
      Раб.XML.СоздатьТэгChk("fullName",Заказчик, false); --Полное наименование
      --Раб.XML.СоздатьТэгChk("postAddress",postAddress, false); --Почтовый адрес организации
      Раб.XML.СоздатьТэгChk("factAddress",ЗаказчикАдрес, false); --Адрес местонахождения организации
      Раб.XML.СоздатьТэгChk("INN",ЗаказчикИНН, false); --ИНН организации
      Раб.XML.СоздатьТэгChk("KPP",ЗаказчикКПП, false); --КПП организации
    Раб.XML.ЗакрытьТэг;
    Раб.XML.ОткрытьТэг("OKTMO","");--ОКТМО
      Раб.XML.СоздатьТэг("code",ЗаказчикОКТМО, false); --Код по ОКТМО
      --Раб.XML.СоздатьТэгChk("name","", false); --Полное наименование
    Раб.XML.ЗакрытьТэг;
  Раб.XML.ЗакрытьТэг;
end;

proc responsibleContactInfo;
-- Сведения об исполнителе (ответственном за формирование плана-графика)
  Раб.XML.ОткрытьТэг("responsibleContactInfo","");
    Раб.XML.СоздатьТэг("lastName",ExtractWord(1,ФИОРук," "), false); --Фамилия
    Раб.XML.СоздатьТэг("firstName",ExtractWord(2,ФИОРук," "), false); --Имя
    Раб.XML.СоздатьТэг("middleName",ExtractWord(3,ФИОРук," "), false); --Отчество

    Раб.XML.СоздатьТэгChk("phone",ЗаказчикТел, false); --Телефон
    --Раб.XML.СоздатьТэгChk("fax",ЗаказчикТел, false); --Факс
    Раб.XML.СоздатьТэгChk("email",ЗаказчикEMail, false); --Адрес электронной почты
  Раб.XML.ЗакрытьТэг;
end;

Func СРЗ2ПСОП(Val:S):S;
 if Val="0" : ^"EP44";	--Закупка на сумму, не превышающую ста тысяч рублей (п.4 ч.1 ст.93 ФЗ N 44-ФЗ)(=11)";
   |Val="1" : ^"OK44";	--Открытый конкурс
   |Val="2" : ^"OKU44"; --Конкурс с ограниченным участием
   |Val="3" : ^"OKD44"; --Двухэтапный конкурс
   |Val="4" : ^"ZKK44"; --Закрытый конкурс
   |Val="5" : ^"ZKKU44";--Закрытый конкурс с ограниченным участием
   |Val="6" : ^"ZKKD44";--Закрытый двухэтапный конкурс
   |Val="7" : ^"EA44";	--Аукцион в электронной форме
   |Val="8" : ^"ZA44";	--Закрытый аукцион
   |Val="9" : ^"ZK44";	--Запрос котировок";
   |Match(Val,"10!"): ^"ZP44";	--Запрос предложений";
   |Match(Val,"11!"): ^"EP44";	--Закупка у единственного поставщика (подрядчика, исполнителя)";
 fi;
end;


proc positions;
var iЛот,Iter,i,ii,y,z:I;
var УслФин_:S;
var СумЛот:N;
var СумЛотТек:N;
  Раб.XML.ОткрытьТэг("positions","");
  iЛот=1;
  While iЛот<=Упр do--это есть цикл по лоту
   ProgressPos(iЛот);
    if not Лот[iЛот]="" and not ОснИзм[iЛот]="Отменено":
--	 if Лот[iЛот]="183":
--	    Лот[iЛот]=Лот[iЛот];
--	 fi;
       СумЛот=0;
       СумЛотТек=0;
       Раб.XML.ОткрытьТэг("position","");
	 Раб.XML.ОткрытьТэг("commonInfo",""); --Общие сведения
	   Раб.XML.СоздатьТэгChk("positionNumber",Лот[iЛот], false); --Номер позиции в плане-графике ?П44201503483004569001000002?
	   Раб.XML.СоздатьТэгNChk("extNumber",Int(Лот[iЛот]),0, false); --Внешний номер позиции Номер, присвоенный позиции во внешних системах. Используется при идентификации изменяемых на ООС позиций.
	   ClearVariable(Buf);
	   ClearVariable(BufN1);
	   ClearVariable(BufN2);
	   ClearVariable(BufN3);
	   ClearVariable(BufN4);
	   ClearVariable(BufN5);
	   ClearVariable(BufN6);
	   Iter=iЛот;
	   if Год2[Iter]=0 and Год3[Iter]=0 and Год4[Iter]=0 and Год5[Iter]=0 and Год6[Iter]=0:
	      While Лот[iЛот]=Лот[iter] do --по КБК внутри лота
	       z=SearchInArray(Buf,Раб.Формат.ReplaceSubStr(КБК[Iter],".",""),true);
	       if z=-1:
		  z=InsertInArraySort(Buf,Раб.Формат.ReplaceSubStr(КБК[Iter],".",""));
		  InsertInArray(BufN1,z,Сум1[Iter]);
		 else
		  BufN1[z]=BufN1[z]+Сум1[Iter];
	       fi;
	       Iter=Iter+1;
	      od;
	      Раб.XML.ОткрытьТэг(if(Length(Buf[1])=3,"amountKOSGUs","amountKBKs"),""); --Классификация позиции по КБК
	      ii=LengthOfArray(Buf);
	      for i=1..ii do
	       Раб.XML.ОткрытьТэг(if(Length(Buf[1])=3,"KOSGU","KBK"),""); --Классификация позиции по КБК
		Раб.XML.СоздатьТэг("code",Buf[i], false);
		Раб.XML.СоздатьТэгNChk("amount",BufN1[i], 2, false);
	       Раб.XML.ЗакрытьТэг;
	      od;
	      Раб.XML.ЗакрытьТэг;
	     else
	      While Лот[iЛот]=Лот[iter] do --по КБК внутри лота
		for y=1..6 do
		 if not GetVariableI("Год"+Str(y)+"["+str(Iter)+"]")=0:
		    z=SearchInArray(Buf,Раб.Формат.ReplaceSubStr(КБК[Iter],".",""),true);
		    if z=-1:
		       z=InsertInArraySort(Buf,Раб.Формат.ReplaceSubStr(КБК[Iter],".",""));
		       InsertInArray(BufN1,z,Сум1[Iter]);
		       InsertInArray(BufN2,z,Сум2[Iter]);
		       InsertInArray(BufN3,z,Сум3[Iter]);
		       InsertInArray(BufN4,z,Сум4[Iter]);
		       InsertInArray(BufN5,z,Сум5[Iter]);
		       InsertInArray(BufN6,z,Сум6[Iter]);
		      else
		       BufN1[z]=BufN1[z]+Сум1[Iter];
		       BufN2[z]=BufN2[z]+Сум2[Iter];
		       BufN3[z]=BufN3[z]+Сум3[Iter];
		       BufN4[z]=BufN4[z]+Сум4[Iter];
		       BufN5[z]=BufN5[z]+Сум5[Iter];
		       BufN6[z]=BufN6[z]+Сум6[Iter];
		    fi;
		 fi;
		 Iter=Iter+1;
		od; --for y=1..6 do
	      od; --While Лот[iЛот]=Лот[iter] do
	      Раб.XML.ОткрытьТэг(if(Length(Buf[1])=3,"amountKOSGUsYears","amountKBKsYears"),""); --Классификация позиции по КБК
	      ii=LengthOfArray(Buf);
	      for i=1..ii do
	       Раб.XML.ОткрытьТэг(if(Length(Buf[1])=3,"KOSGU","KBK"),""); --Классификация позиции по КБК
		Раб.XML.СоздатьТэг("code",Buf[i], false);
		for y=1..6 do
		 if not Round(GetVariableN("BufN"+Str(y)+"["+str(i)+"]"),2)=0:
		    Раб.XML.ОткрытьТэг("yearsList","");
		     Раб.XML.СоздатьТэг("year",Str(GetVariableI("Год"+Str(y)+"["+str(iЛот)+"]")), false);
		     Раб.XML.СоздатьТэг("yearAmount",Str(GetVariableN("BufN"+Str(y)+"["+str(i)+"]"),2), false);
		    Раб.XML.ЗакрытьТэг;
		 fi;
		od; --for y=1..6 do
	       Раб.XML.ЗакрытьТэг;
	      od; --for i=1..ii do
	      Раб.XML.ЗакрытьТэг;
	   fi; --if Год2[Iter]=0 and Год3[Iter]=0 and Год4[Iter]=0 and Год5[Iter]=0 and Год6[Iter]=0:

	   Раб.XML.ОткрытьТэг("OKVEDs",""); --Классификация по ОКВЭД
	   ClearVariable(Buf);
	   Iter=iЛот;
	   While Лот[iЛот]=Лот[iter] do --по ОКВЭД внутри лота
	    СумЛот=СумЛот+Сум1[Iter]+Сум2[Iter]+Сум3[Iter]+Сум4[Iter]+Сум5[Iter]+Сум6[Iter];
	    СумЛотТек=СумЛотТек+Сум1[Iter];
	    AddInArray(Buf,True,False,ОКВЭД[Iter]);
	    Iter=Iter+1;
	   od;
	   ii=LengthOfArray(Buf);
	   for i=1..ii do
	    Раб.XML.ОткрытьТэг("OKVED",""); --Классификация по ОКВЭД
	     Раб.XML.СоздатьТэг("code",Buf[i], false);
	     --Раб.XML.СоздатьТэгChk("name","", false);
	    Раб.XML.ЗакрытьТэг;
	   od;
	   Раб.XML.ЗакрытьТэг;

	   Раб.XML.СоздатьТэг("contractSubjectName",Содерж[iЛот], false);--Наименование предмета контракта
	   Раб.XML.СоздатьТэг("contractMaxPrice", Str(СумЛот, 2), false);--Ориентировочная (начальная) максимальная стоимость контракта Разрешено указывать 0.
	   Раб.XML.СоздатьТэгNChk("payments",СумЛотТек, 2, false); --Размер выплат в текущем году исполнения контракта
	   Раб.XML.ОткрытьТэг("contractCurrency",""); --Валюта контракта
	     Раб.XML.СоздатьТэг("code","RUB", false);
	     --Раб.XML.СоздатьТэгChk("name","", false);
	   Раб.XML.ЗакрытьТэг;
	   Раб.XML.ОткрытьТэг("placingWay",""); --Способ определения поставщика
	     Раб.XML.СоздатьТэг("code",СРЗ2ПСОП(СРЗ[iЛот]), false);
	     Раб.XML.СоздатьТэгChk("name",Раб.Договор.РазмещениеЗаказа(ExtractWord(1,СРЗ[iЛот],"."),False,"44ФЗ"), false);
	   Раб.XML.ЗакрытьТэг;

   --!! Не реализовано!!
   --jointBiddingInfo	H S Сведения о проведении совместных торгов
   --positionModification Н S Основание внесения изменений в позицию плана-графика Элемент обязателен для заполнения при внесении изменений в позицию ранее загруженного на ООС плана-графика
   --positionPublishDate Н DT Дата публикации позиции плана-графика Заполняется при публикации ПГ на ООС. Дата публикации позиции может отличаться от даты публикации плана-графика в случае, если позиция не изменилась в очередной версии плана-графика

   --Элементы необязательного узла
   --Допустимо указание только одного элемента
       Раб.XML.СоздатьТэг("noPublicDiscussion","true", false); ----Закупка не подлежит обязательному общественному обсуждению в соответствии с п.1.4 Приказа Минэкономразвития от 10.10.2013 г. № 578
   --!!!!publicDiscussionNum --О --N(8) --Реестровый номер --Шаблон значения: \d{8} --Элемент обязателен для заполнения при выгрузке из ООС опубликованного плана-графика. В прочих случаях не указывается.
       Раб.XML.ЗакрытьТэг; -- Раб.XML.ОткрытьТэг("commonInfo",""); --Общие сведения
	 Раб.XML.ОткрытьТэг("products",""); --Товары, работы, услуги
	   Iter=iЛот;
	   While Лот[iЛот]=Лот[iter] do --по товарам внутри лота
	    Раб.XML.ОткрытьТэг("product",""); --Товары, работы, услуги
	     Раб.XML.ОткрытьТэг("OKPD",""); --Классификация товара, работы, услуги по ОКПД
	      Раб.XML.СоздатьТэг("code",ОКПД[Iter], false);
	      --Раб.XML.СоздатьТэгChk("name","", false);
	     Раб.XML.ЗакрытьТэг;--Раб.XML.ОткрытьТэг("OKPD",""); --Классификация товара, работы, услуги по ОКПД
	     Раб.XML.СоздатьТэг("name",Предм[Iter], false);--Наименование товара, работ, услуг
	     --Раб.XML.СоздатьТэгChk("internationalName","", false);--Международное непатентованное наименование (химическое, группировочное наименование) лекарственного средства
	     Раб.XML.СоздатьТэг("minRequirement",Треб[Iter], false);--Минимально необходимые требования, предъявляемые к товару, работе, услуге.
	     Раб.XML.ОткрытьТэг("OKEI",""); --Н Единица измерения
	      Раб.XML.СоздатьТэг("code",Раб.Договор.ВзятьЗначОКЕИ(ЕдИзмер[Iter],"НКБО","КОД"), false);
	      Раб.XML.СоздатьТэгChk("name",Раб.Договор.ВзятьЗначОКЕИ(ЕдИзмер[Iter],"НКБО","НАИМЕНОВАНИЕ"), false);
	     Раб.XML.ЗакрытьТэг;
	     Раб.XML.СоздатьТэг("sumMax",Str(Сум[Iter], 2), false);--Максимальный объем оплаты по контракту /Цена позиции
	     if ПоЦене[Iter]:
		Раб.XML.СоздатьТэгNChk("price", Объем[Iter], 2, false); --Цена запасных частей, цена за единицу товара, работы, услуги	Обязательно для заполнения если установлен флаг quantityUndefined.
		Раб.XML.СоздатьТэг("quantityUndefined","true", false);--Невозможно определить количество поставляемого товара, объёма выполняемых работ, оказываемых услуг
	       else
		Раб.XML.СоздатьТэг("quantityUndefined","false", false);--Невозможно определить количество поставляемого товара, объёма выполняемых работ, оказываемых услуг
		Раб.XML.СоздатьТэгNChk("quantity", Объем[Iter], 2, false); --Количество (объем) Обязательно для заполнения если не установлен флаг quantityUndefined.
		Раб.XML.СоздатьТэгNChk("quantityCurrentYear", ОбъемТек[Iter], 2, false); --Количество (объем) поставки в текущем году исполнения контракта Обязательно для заполнения если не установлен флаг quantityUndefined.
	     fi;
	    Раб.XML.ЗакрытьТэг; --	Раб.XML.ОткрытьТэг("product",""); --Товары, работы, услуги
	    Iter=Iter+1;
	   od;
	 Раб.XML.ЗакрытьТэг; --      Раб.XML.ОткрытьТэг("products",""); --Товары, работы, услуги

	 Раб.XML.ОткрытьТэг("purchaseConditions",""); --Условия закупки
	  УслФин_=Раб.Формат.ReplaceSubStr(УслФин[iЛот],"'","");
	  Раб.XML.ОткрытьТэг("purchaseFinCondition",""); --Н Условия финансового обеспечения заявки
   --	    --procedure-Н --T(1-2000) --Условия обеспечения заявки
	    Раб.XML.СоздатьТэг("amount",Trim(ExtractWord(1,УслФин_,"/")), false);  --Размер обеспечения заявки --Шаблон значения: -- \d+(\.\d{1,2})?Разрешено указывать 0
	  Раб.XML.ЗакрытьТэг; --Раб.XML.ОткрытьТэг("purchaseFinCondition",""); --Н Условия финансового обеспечения контракта

	  Раб.XML.ОткрытьТэг("contractFinCondition",""); --Н Условия финансового обеспечения контракта
	  --procedure-Н --T(1-2000) --Условия обеспечения контракта
	    Раб.XML.СоздатьТэг("amount",Trim(ExtractWord(2,УслФин_,"/")), false); --Размер обеспечения контракта --Шаблон значения: -- \d+(\.\d{1,2})?Разрешено указывать 0
	  Раб.XML.ЗакрытьТэг;

	  Раб.XML.СоздатьТэгChk("advance",Trim(ExtractWord(3,УслФин_,"/")), false); --Размер аванса
	  Раб.XML.ОткрытьТэг("purchaseGraph",""); --График осуществления процедуры закупки
	   Раб.XML.ОткрытьТэг("purchasePlacingTerm",""); --Срок размещения заявки
	    Раб.XML.СоздатьТэг("month", ExtractWord(1, СрокРазмещ[iЛот],'.'), false);--Месяц Допустимые значения: от 1 до 12
	    Раб.XML.СоздатьТэг("year", ExtractWord(2, СрокРазмещ[iЛот],'.'), false);--Год Шаблон значения: \d{4}
	   Раб.XML.ЗакрытьТэг;
	   Раб.XML.ОткрытьТэг("contractExecutionTerm",""); --Срок исполнения контракта
	    Раб.XML.СоздатьТэг("month", ExtractWord(1, СрокИспол[iЛот],'.'), false);--Месяц Допустимые значения: от 1 до 12
	    Раб.XML.СоздатьТэг("year", ExtractWord(2, СрокИспол[iЛот],'.'), false);--Год Шаблон значения: \d{4}
	   Раб.XML.ЗакрытьТэг;
	   Раб.XML.СоздатьТэг("contractExecutionStages","Не указано", false);--Сроки исполнения отдельных этапов контракта ---!!!!! убрать минус ?
	   Раб.XML.СоздатьТэг("periodicity",if(Пер[iЛот]="нет","Не указано",Пер[iЛот]), false);--Периодичность поставки товаров (выполнения работ, оказания услуг)
	  Раб.XML.ЗакрытьТэг;--       Раб.XML.ОткрытьТэг("purchaseGraph",""); --График осуществления процедуры закупки
	  if ДопТреб[iЛот]="1" or ДопТреб[iЛот]="2":
	     Раб.XML.ОткрытьТэг("preferensesRequirement",""); --Н Преимущества и требования к участникам закупки
	       Раб.XML.ОткрытьТэг("preferenses",""); --Н Преимущества Заполняется на основании справочника nsiPurchasePreferences
		 Раб.XML.ОткрытьТэг("preferense","");
		   Раб.XML.СоздатьТэг("code",'8361034', false); --Код преимущества
   --		     Раб.XML.СоздатьТэгChk("name", '', false); --Наименование преимущества
   --		     Раб.XML.СоздатьТэг("prefValue", '', false); --H N(100) Величина (преимущества)
		 Раб.XML.ЗакрытьТэг;
	       Раб.XML.ЗакрытьТэг;

--	      Раб.XML.ОткрытьТэг("requirements",""); --Н Преимущества Заполняется на основании справочника nsiPurchasePreferences
--		Раб.XML.ОткрытьТэг("requirement","");
--		  Раб.XML.СоздатьТэг("code", '', false); --Код требования
--		  Раб.XML.СоздатьТэгChk("name", '', false); --Наименование требования
--		  Раб.XML.СоздатьТэгChk("content", '', false); --Содержание требования
--		Раб.XML.ЗакрытьТэг;
--	      Раб.XML.ЗакрытьТэг;

	     Раб.XML.ЗакрытьТэг;-- preferensesRequirement Преимущества и требования к участникам закупки
	  fi; --if ДопТреб[Iter]="1" or ДопТреб[Iter]="2":
	  --Раб.XML.СоздатьТэгChk("prohibitions","", false);--Запреты на допуск,  товаров, услуг, а также ограничения  и условия допуска, товаров, работ, услуг для целей осуществления закупок в соответствии со ст. 14 44-ФЗ
	 Раб.XML.ЗакрытьТэг;--	    Раб.XML.ОткрытьТэг("purchaseConditions",""); --Условия закупки
       Раб.XML.ЗакрытьТэг;
       iЛот=Iter-1;
    fi; --if not Лот[iЛот]="":
    iЛот=iЛот+1;
  od;
  Раб.XML.ЗакрытьТэг;
end;



proc purchase83;
var Iter:i;
var flag83_2_4,flag83_2_7:l;
var tКБК83_2_4,tКБК83_2_7:S;
 flag83_2_4=False;
 flag83_2_7=False;
 for Iter=1..Упр do
  if Match(СРЗ[Iter],"10.83_2_4"): flag83_2_4=True; tКБК83_2_4=if(Length(КБК[Iter])=3,"KOSGU","KBK"); fi;
  if Match(СРЗ[Iter],"10.83_2_7"): flag83_2_7=True; tКБК83_2_7=if(Length(КБК[Iter])=3,"KOSGU","KBK"); fi;
 od;
 if flag83_2_4 or flag83_2_7:
  -- Закупки в соответствии с п. 4 и п. 7 ч. 2 ст. 8З
    Раб.XML.ОткрытьТэг("purchase83","");
    if flag83_2_4:
       Раб.XML.ОткрытьТэг("teachingService","");--Н Преподавательские услуги, оказываемые физическими лицами
	Раб.XML.ОткрытьТэг("finances","");--Суммы в разрезе КБК и КОСГУ
	 Раб.XML.ОткрытьТэг("amount"+tКБК83_2_4+"s","");--Классификация позиций по КБК
	 for Iter=1..Упр do
	  if Match(СРЗ[Iter],"10.83_2_4"):
	     Раб.XML.ОткрытьТэг(tКБК83_2_4,"");--Классификация позиций по КБК Множественный элемент
	      Раб.XML.СоздатьТэг("code",Раб.Формат.ReplaceSubStr(КБК[Iter],".",""), false); --Код бюджетной классификации
	      Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
	     Раб.XML.ЗакрытьТэг;
	  fi;
	 od;
	 Раб.XML.ЗакрытьТэг;
	Раб.XML.ЗакрытьТэг;
       Раб.XML.ЗакрытьТэг;
--     Не Разделено обучение и эскурсовода!!!
--	 Раб.XML.ОткрытьТэг("guideService","");--Н Услуги экскурсовода (гида) оказываемые физическими лицами
--	  Раб.XML.ОткрытьТэг("finances","");--Суммы в разрезе КБК и КОСГУ
--	   Раб.XML.ОткрытьТэг("amountKBKs","");--Классификация позиций по КБК
--	   for Iter=1..Упр do
--	    if Match(СРЗ[Iter],"10.83_2_4"):
--	       Раб.XML.ОткрытьТэг("KBK","");--Классификация позиций по КБК Множественный элемент
--		Раб.XML.СоздатьТэг("code",Раб.Формат.ReplaceSubStr(КБК[Iter],".",""), false); --Код бюджетной классификации
--		Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
--	       Раб.XML.ЗакрытьТэг;
--	    fi;
--	   od;
--	   Раб.XML.ЗакрытьТэг;
--	   Раб.XML.ОткрытьТэг("amountKOSGUs","");--Классификация позиций по КОСГУ
--	    for Iter=1..Упр do
--	     if Match(СРЗ[Iter],"10.83_2_4"):
--		Раб.XML.ОткрытьТэг("KOSGU","");--Классификация позиций по КОСГУ Множественный элемент
--		 Раб.XML.СоздатьТэг("code",КБК[Iter], false); --Код операций сектора гос.управления
--		 Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
--		Раб.XML.ЗакрытьТэг;
--	     fi;
--	    od;
--	   Раб.XML.ЗакрытьТэг;
--	  Раб.XML.ЗакрытьТэг;
--	 Раб.XML.ЗакрытьТэг;
     fi; --if flag83_2_4:
     if flag83_2_7:
	Раб.XML.ОткрытьТэг("medicine","");--Н Лекарственные препараты
	 Раб.XML.ОткрытьТэг("finances","");--Суммы в разрезе КБК и КОСГУ
	 Раб.XML.ОткрытьТэг("amount"+tКБК83_2_7+"s","");--Классификация позиций по КБК
	  for Iter=1..Упр do
	   if Match(СРЗ[Iter],"10.83_2_7"):
	      Раб.XML.ОткрытьТэг(tКБК83_2_7,"");--Классификация позиций по КБК Множественный элемент
	       Раб.XML.СоздатьТэг("code",Раб.Формат.ReplaceSubStr(КБК[Iter],".",""), false); --Код бюджетной классификации
	       Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
	      Раб.XML.ЗакрытьТэг;
	   fi;
	  od;
	  Раб.XML.ЗакрытьТэг;
	 Раб.XML.ЗакрытьТэг;
	Раб.XML.ЗакрытьТэг;
     fi; --flag83_2_7:
    Раб.XML.ЗакрытьТэг;
 fi; -- if flag83_2_4 or flag83_2_7:
end;

proc purchase83st544;
var Iter:i;
var flag83_2_4,flag83_2_7:l;
var tКБК83_2_7:S;
 flag83_2_7=False;
 tКБК83_2_7="";
 for Iter=1..Упр do
  if Match(СРЗ[Iter],"10.83_2_7"): flag83_2_7=True; tКБК83_2_7=if(Length(КБК[Iter])=3,"KOSGU","KBK"); fi;
 od;
 if flag83_2_7: --Закупки в соответствии с  п. 7 ч. 2 ст. 8З.
    Раб.XML.ОткрытьТэг("purchase83st544","");
     Раб.XML.ОткрытьТэг("medicine","");--Н Лекарственные препараты
      Раб.XML.ОткрытьТэг("finances","");--Суммы в разрезе КБК и КОСГУ
       Раб.XML.ОткрытьТэг("amount"+tКБК83_2_7+"s","");--Классификация позиций по КБК
	for Iter=1..Упр do
	 if Match(СРЗ[Iter],"10.83_2_7"):
	    Раб.XML.ОткрытьТэг(tКБК83_2_7,"");--Классификация позиций по КБК Множественный элемент
	     Раб.XML.СоздатьТэг("code",Раб.Формат.ReplaceSubStr(КБК[Iter],".",""), false); --Код бюджетной классификации
	     Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
	    Раб.XML.ЗакрытьТэг;
	 fi;
	od;
       Раб.XML.ЗакрытьТэг;
      Раб.XML.ЗакрытьТэг;
     Раб.XML.ЗакрытьТэг;
    Раб.XML.ЗакрытьТэг;
 fi; --if flag83_2_7:
end;

proc purchase93;
var Iter:i;
var flag93_1_4,flag93_1_5,flag93_1_26:l;
var tКБК93_1_4,tКБК93_1_5,tКБК93_1_26:s;
 flag93_1_4 =False; --До 100
 flag93_1_5 =False; --До 400
 flag93_1_26=False; --Командировка
 for Iter=1..Упр do
  if Match(СРЗ[Iter],"11.93_1_4"): flag93_1_4 =True; tКБК93_1_4 =if(Length(КБК[Iter])=3,"KOSGU","KBK"); fi;
  if Match(СРЗ[Iter],"11.93_1_5"): flag93_1_5 =True; tКБК93_1_5 =if(Length(КБК[Iter])=3,"KOSGU","KBK"); fi;
  if Match(СРЗ[Iter],"11.93_2_7"): flag93_1_26=True; tКБК93_1_26=if(Length(КБК[Iter])=3,"KOSGU","KBK"); fi;
 od;
--Закупки в соответствии с п. 4 и п. 7 ч. 2 ст. 9З
  if flag93_1_4 or flag93_1_5 or flag93_1_26:
     Раб.XML.ОткрытьТэг("purchase93","");
      if flag93_1_4:
	 Раб.XML.ОткрытьТэг("purchaseAmountLess100","");--Н Товары, работы или услуги на сумму, не превышающую ста тысяч рублей
	  Раб.XML.ОткрытьТэг("finances","");--Суммы в разрезе КБК и КОСГУ
	   Раб.XML.ОткрытьТэг("amount"+tКБК93_1_4+"s","");--Классификация позиций по КБК
	   for Iter=1..Упр do
	    if Match(СРЗ[Iter],"11.93_1_4"):
	       Раб.XML.ОткрытьТэг(tКБК93_1_4,"");--Классификация позиций по КБК Множественный элемент
		Раб.XML.СоздатьТэг("code",Раб.Формат.ReplaceSubStr(КБК[Iter],".",""), false); --Код бюджетной классификации
		Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
	       Раб.XML.ЗакрытьТэг;
	    fi;
	   od;
	   Раб.XML.ЗакрытьТэг; --amountKBKs
	  Раб.XML.ЗакрытьТэг; --finances
	 Раб.XML.ЗакрытьТэг; --purchaseAmountLess100
      fi; --if flag93_1_4:
      if flag93_1_5:
	 Раб.XML.ОткрытьТэг("purchaseAmountLess400","");--Н Товары, работы или услуги на сумму, не превышающую четырехсот тысяч рублей
	  Раб.XML.ОткрытьТэг("finances","");--Суммы в разрезе КБК и КОСГУ
	   Раб.XML.ОткрытьТэг("amount"+tКБК93_1_5+"s","");--Классификация позиций по КБК
	   for Iter=1..Упр do
	    if Match(СРЗ[Iter],"11.93_1_5"):
	       Раб.XML.ОткрытьТэг(tКБК93_1_5,"");--Классификация позиций по КБК Множественный элемент
		Раб.XML.СоздатьТэг("code",Раб.Формат.ReplaceSubStr(КБК[Iter],".",""), false); --Код бюджетной классификации
		Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
	       Раб.XML.ЗакрытьТэг; --KBK
	    fi;
	   od;
	   Раб.XML.ЗакрытьТэг; --amountKBKs
	  Раб.XML.ЗакрытьТэг; --finances
	 Раб.XML.ЗакрытьТэг; --purchaseAmountLess400
      fi; --if flag93_1_5:
      if flag93_1_26:
	 Раб.XML.ОткрытьТэг("businessTripService","");--Н Услуги, связанные с направлением работника в служебную командировку
	  Раб.XML.ОткрытьТэг("finances","");--Суммы в разрезе КБК и КОСГУ
	   Раб.XML.ОткрытьТэг("amount"+tКБК93_1_26+"s","");--Классификация позиций по КБК
	   for Iter=1..Упр do
	    if Match(СРЗ[Iter],"11.93_2_7"):
	       Раб.XML.ОткрытьТэг(tКБК93_1_26,"");--Классификация позиций по КБК Множественный элемент
		Раб.XML.СоздатьТэг("code",Раб.Формат.ReplaceSubStr(КБК[Iter],".",""), false); --Код бюджетной классификации
		Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
	       Раб.XML.ЗакрытьТэг; --KBK
	    fi;
	   od;
	   Раб.XML.ЗакрытьТэг; --amountKBKs
	  Раб.XML.ЗакрытьТэг; --finances
	 Раб.XML.ЗакрытьТэг; --businessTripService
      fi; --if flag93_1_26:

--	Раб.XML.ОткрытьТэг("teachingService","");--Н Преподавательские услуги, оказываемые физическими лицами
--	 Раб.XML.ОткрытьТэг("finances","");--Суммы в разрезе КБК и КОСГУ
--	  Раб.XML.ОткрытьТэг("amountKBKs","");--Классификация позиций по КБК
--	   Раб.XML.ОткрытьТэг("KBK","");--Классификация позиций по КБК Множественный элемент
--	    Раб.XML.СоздатьТэг("code",Раб.Формат.ReplaceSubStr(КБК[Iter],".",""), false); --Код бюджетной классификации
--	    Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
--	   Раб.XML.ЗакрытьТэг; --KBK
--	  Раб.XML.ЗакрытьТэг; --amountKBKs
--	  Раб.XML.ОткрытьТэг("amountKOSGUs","");--Классификация позиций по КБК
--	   Раб.XML.ОткрытьТэг("KOSGU","");--Классификация позиций по КБК Множественный элемент
--	    Раб.XML.СоздатьТэг("code",SubStr(Раб.Формат.ReplaceSubStr(КБК[Iter],".",""),18,3), false); --Код бюджетной классификации
--	    Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
--	   Раб.XML.ЗакрытьТэг; --KOSGU
--	  Раб.XML.ЗакрытьТэг; --amountKOSGUs
--	 Раб.XML.ЗакрытьТэг; --finances
--	Раб.XML.ЗакрытьТэг; --teachingService

--	Раб.XML.ОткрытьТэг("guideService","");--Н Услуги экскурсовода (гида) оказываемые физическими лицами
--	 Раб.XML.ОткрытьТэг("finances","");--Суммы в разрезе КБК и КОСГУ
--	  Раб.XML.ОткрытьТэг("amountKBKs","");--Классификация позиций по КБК
--	   Раб.XML.ОткрытьТэг("KBK","");--Классификация позиций по КБК Множественный элемент
--	    Раб.XML.СоздатьТэг("code",Раб.Формат.ReplaceSubStr(КБК[Iter],".",""), false); --Код бюджетной классификации
--	    Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
--	   Раб.XML.ЗакрытьТэг; --KBK
--	  Раб.XML.ЗакрытьТэг; --amountKBKs
--	  Раб.XML.ОткрытьТэг("amountKOSGUs","");--Классификация позиций по КБК
--	   Раб.XML.СоздатьТэг("code",SubStr(Раб.Формат.ReplaceSubStr(КБК[Iter],".",""),18,3), false); --Код бюджетной классификации
--	    Раб.XML.СоздатьТэг("amount", Str(Сум[Iter], 2), false);
--	    Раб.XML.СоздатьТэг("amount", Str(Сум[i], 2), false);
--	   Раб.XML.ЗакрытьТэг; --KOSGU
--	  Раб.XML.ЗакрытьТэг; --amountKOSGUs
--	 Раб.XML.ЗакрытьТэг; --finances
--	Раб.XML.ЗакрытьТэг; --guideService

     Раб.XML.ЗакрытьТэг; --purchase93
  fi; --if flag93_1_4 or flag93_1_5 or flag93_1_26:
end;

proc outcomeIndicators;
--Итоговые показатели плана-графика
  Раб.XML.ОткрытьТэг("outcomeIndicators","");
   Раб.XML.СоздатьТэг("sumPushaseSingleSupplier4", Str(ИтогоСум93_4, 2), false);--Совокупный объем закупок у единственного поставщика в соответствии с п. 4 части 1 статьи 93 Федерального закона №44-ФЗ
   Раб.XML.СоздатьТэг("sumPushaseSingleSupplier5", Str(ИтогоСум93_5, 2), false);--Совокупный объем закупок у единственного поставщика в соответствии с п. 5 части 1 статьи 93 Федерального закона №44-ФЗ
   Раб.XML.СоздатьТэг("sumPushaseSmallBusiness", Str(ИтогоСумСМП, 2), false);--Совокупный объем закупок у субъектов малого предпринимательства, социально ориентированных некоммерческих организаций Значение полей контролируется при приёме на ООС.
   Раб.XML.СоздатьТэг("sumPushaseRequest", Str(ИтогоСум9, 2), false);--Совокупный объем закупок, осуществляемых путем запроса котировок Значение полей контролируется при приёме на ООС.
   Раб.XML.СоздатьТэг("sumContractMaxPrice", Str(ВсегоСумТек, 2), false); --Размер выплат по исполнению контрактов в текущем году Обязательно для заполнения при передаче от ООС, при приеме игнорируется
   Раб.XML.СоздатьТэг("sumPaymentsTotal", Str(ВсегоСум, 2), false); --Всего закупок, планируемых в текущем году Обязательно для заполнения при передаче от ООС, при приеме игнорируется
  Раб.XML.ЗакрытьТэг;
end;

proc finalpositions;
  --Итоговые позиции
  Раб.XML.ОткрытьТэг("finalPositions","");
--    purchase83;
--    purchase83st544;
    purchase93;
    outcomeIndicators;
  Раб.XML.ЗакрытьТэг;
end;

proc providedPurchases;
--Предусмотренные закупки (opt)
  Раб.XML.ОткрытьТэг("providedPurchases","");
    positions;
    finalpositions;
  Раб.XML.ЗакрытьТэг;
end;

Proc ВыгрузкаXML(ИмяФайла:S;cp:S);
var pp:i;
  pp=Упр+Int(Упр*0.1);
  ShowProgress(pp,"Экспорт XML...");
  Try
   Раб.XML.Очистить;

   Раб.XML.ДобавитьNamespace("oos","http://zakupki.gov.ru/oos/types/1"); --так в примере
   Раб.XML.ДобАттр("xmlns","http://zakupki.gov.ru/oos/extegration/1");
 --  Раб.XML.ОткрытьТэгBuf("export",False); --вроде как обертка дял файла
     Раб.XML.ДобАттр("schemeVersion","5.0");
     Раб.XML.ОткрытьТэгBuf("tenderPlan",False);
       Раб.XML.ОткрытьNameSpace("oos","http://zakupki.gov.ru/oos/types/1"); --так в примере
       commonInfo;
       customerInfo;
       responsibleContactInfo;
       providedPurchases;
 --	 Раб.XML.ОткрытьТэг("printForm",""); --Н Печатная форма
 --	   Раб.XML.СоздатьТэг("url","",False); --Ссылка для скачивания документа
 --	   Раб.XML.СоздатьТэгChk("signature","",False); --ЭЦП печатной формы
 --	 Раб.XML.ЗакрытьТэг;
       Раб.XML.ЗакрытьNamespace;
     Раб.XML.ЗакрытьТэг;
 --  Раб.XML.ЗакрытьТэг;
   Раб.XML.ЗаписьФайла(ИмяФайла,cp);	   --в примере utf-8
   ProgressPos(pp);
  Finally
   CloseProgress;
  end;
  Message("Экспорт xml завершен");
end;

--\выгрузки XML



--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func НастрПоУмолч_OnEnter(FieldName: String; Iter: Integer): logical;
 if FieldName="НастрПоУмолч":
    if EnqOkCancel("Восстановить значения по умолчанию ?",mtWarning)=cmCancel: ^False; fi;
 fi;
 Справ="ПГ";
 ДопАнПоказ1="";
 CMFНомЗаказ=False;
 CrdДок="РПО_ЗАЯВКА_ЗАКУП";
 CrdПризнак="РПО_ДОК_ПРИЗНАК";
 blnДок="ДОКУМЕНТЫ.ДОГОВОРПОСТ.ЗАЯВКА_ЗАКУП";
 if FieldName="НастрПоУмолч":
    Message("Значения по умолчанию восстановлены");
 fi;
 Return False;
end;

Func НастрЗакр_OnEnter(FieldName: String; Iter: Integer): logical;
 ОткрНастр(False);
 if Справ="": Справ="ПГ"; fi;
 if CrdДок="": CrdДок="РПО_ЗАЯВКА_ЗАКУП"; fi;
 if CrdПризнак="": CrdПризнак="РПО_ДОК_ПРИЗНАК"; fi;
 if blnДок="": blnДок="ДОКУМЕНТЫ.ДОГОВОРПОСТ.ЗАЯВКА_ЗАКУП"; fi;
 Настр(True);
 Оформление;
 Return False;
end;

Func Справ_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
var Rec: Record;
 Rec=OpenCardFile("РПО_ЗАЯВКА_ЗАКУП_ТИП","not НеДейств");
 if not Rec=nil:
    tmp=GetCardFieldS("РПО_ЗАЯВКА_ЗАКУП_ТИП",Rec,"Справ");
    if tmp="": Message("Код справочника заполнен",mtError); ^False; fi;
    Справ=tmp;
    ДопАнПоказ1="";
 fi;
 Return False;
end;

Func ДопАнПоказ_OnEnter(FieldName: String; Iter: Integer): logical;
var OWA,nr,n,z:I;
var val1,val2:S;
 if Справ="": Message("Выберите справочник",mtError); Template.Field="Справ"; ^False; fi;
 OWA=OpenWorkArea("РПО_ЗАЯВКА_ЗАКУП_ТИП","","СПРАВ='"+Справ+"'");
 Try
  nr=Records(OWA);
  if nr=0: Message("Запись не найдена",mtError); Template.Field="Справ"; ^False; fi;
  val1=GetFieldS(OWA,nr,"Общ_Справ1");
  val2=GetFieldS(OWA,nr,"Общ_Справ2");
  if val1="" and val2="": Message("Список дополнительных аналитических показателей пуст"); ^False; fi;
  ClearVariable(Buf);
  z=0;
  if not val1="":
     z=z+1;
     Buf[z]=GetFieldS(OWA,nr,"Общ_Справ_Наим1")+" ("+val1+")";
     if ДопАнПоказ1=Val1: n=z; fi;
  fi;
  if not val2="":
     z=z+1;
     Buf[z]=GetFieldS(OWA,nr,"Общ_Справ_Наим2")+" ("+val2+")";
     if ДопАнПоказ1=Val2: n=z; fi;
  fi;
  n=Alternate("Выберите аналитический покзатель",Buf,-1,n,12);
  if not n=0:
     if not Pos(Val1,Buf[n])=0: ДопАнПоказ1=Val1; ДопАнПоказ1_=GetFieldS(OWA,nr,"Общ_Справ_Наим1"); ДопАнПоле1="Общ_Призн1";
       |not Pos(Val2,Buf[n])=0: ДопАнПоказ1=Val2; ДопАнПоказ1_=GetFieldS(OWA,nr,"Общ_Справ_Наим2"); ДопАнПоле1="Общ_Призн2";
     fi;
  fi;
 Finally
  CloseWorkArea(OWA);
 end;
 Return False;
end;

Func Flags_OnEnter(FieldName: String; Iter: Integer): logical;
 FieldName=SubStr(FieldName,1,Length(FieldName)-1);
 PutVariableL(FieldName,not GetVariableL(FieldName));
 Return False;
end;

Func Crd_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
 if not ExistsCardFile(Value):
    Message("Картотека '"+Value+"' не найдена в базе данных",mtError);
    ^False;
 fi;
 Return True;
end;

Func Bln_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
 if not BlankExist(Value):
    Message("Бланк '"+Value+"' не найден",mtError);
    ^False;
 fi;
 Return True;
end;

Func ТекГод_OnEnter(FieldName: String; Iter: Integer): logical;
var OWA,nr,y1,y2,y,i:I;
 OWA=OpenWorkArea(crdДок,"ДатаРег","Рег and not НеДейств and ФЗ=1");
 Try
  nr=Records(OWA);
  if not nr=0:
     y1=Year(GetFieldD(OWA, 1,"ДатаРег"));
     y2=Year(GetFieldD(OWA,nr,"ДатаРег"));
  fi;
 Finally
  CloseWorkArea(OWA);
 end;
 ClearVariable(Buf);
 i=0;
 for y=y1..y2 do
  if y=0: Break; fi;
  i=i+1;
  Buf[i]=Str(y);
 od;
 if i=0:
    Message("Данные для плана графика не найдены");
   else
    i=Alternate("Выбор текущего года",Buf,-1,SearchInArray(Buf,ТекГод),12);
    if not i=0:
       ТекГод=Buf[i];
       Очистить;
    fi;
 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("Контрагент","Наше",Rec,crdRecordOnly);
 if not Rec=nil:
    Заказчик=GetCardFieldS("Контрагент",Rec,"ПолнИмя");
    ЗаказчикАдрес=GetCardFieldS("Контрагент",Rec,"ЮрАдрес");
    ЗаказчикТел=GetCardFieldS("Контрагент",Rec,"Телефон");
    ЗаказчикEMail=GetCardFieldS("Контрагент",Rec,"Email");
    ЗаказчикИНН=GetCardFieldS("Контрагент",Rec,"ИНН");
    ЗаказчикКПП=GetCardFieldS("Контрагент",Rec,"КПП");
    ЗаказчикОКТМО=GetCardFieldS("Контрагент",Rec,"ОКТМО");
 fi;
 Return Cur;
end;

Func УслДопАнПоказ1_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 tmp=AnaElection(ДопАнПоказ1,False,False,УслДопАнПоказ1);
 if not tmp="":
    УслДопАнПоказ1=tmp;
    Очистить;
 fi;
 Return False;
end;


Proc УслДопАнПоказ1_OnExit(FieldName: String; Iter: Integer);
 УслДопАнПоказ1="";
 Очистить;
end;


Func СОП_OnEnter(FieldName: String; Iter: Integer): logical;
 СОП=Раб.Договор.РазмещениеЗаказа(СОП,True,"44ФЗ");
 Очистить;
 Return False;
end;

Proc СОП_OnExit(FieldName: String; Iter: Integer);
 СОП="";
 Очистить;
end;

Proc ПискПредм_OnExit(FieldName: String; Iter: Integer);
 Очистить;
end;

Func ЕдИзм_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Руб.";
 Buf[2]="Тыс. руб.";
 Buf[3]="Млн. руб.";
 n=Alternate("Выбор единицы измерения",Buf,-1,if(ЕдИзм=1000:2|ЕдИзм=1000000:3|true:1),12);
 if n=1: ЕдИзм=1;
   |n=2: ЕдИзм=1000;
   |n=3: ЕдИзм=1000000;
   |True: ^False;
 fi;
 Очистить;
 Return False;
end;

Func onEnter(FieldName: String; Iter: Integer): logical;
 if (СРЗ[Iter]="10.83_2_7" or СРЗ[Iter]="11.93_1_4" or СРЗ[Iter]="11.93_1_5") and not fРасшифр_11_1_4:
    Message("Расшифрока по ст.83 ч.2 п.7 или ст.93 ч.1 п.4 или ст.93 ч.1 п.5 пока не реализована",mtWarning);
   else
    OpenBlank(blnДок,True,UKey[Iter]);
 fi;
 Return False;
end;

Proc OnClick(Row: Integer; Col: Integer; Double: Logical);
var Iter:I;
 if Double:
    Iter=AsInteger(S1.Cell(Row,19,CellContents,"",False));
    onEnter(AsString(Template.Field),Iter);
 fi;
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,"ИНИЦИАЛЫ");
    ФИОРук=v1+" "+v2;
 fi;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_OnClick(Sender: String);
 if ФЗ=0: Message("Выберите ФЗ",mtError); Template.Object="rbФЗ1"; Exit; fi;
 if ТекГод="": Message("Выберите текущий год",mtError); Template.Field="ТекГод"; Exit; fi;
 if ДопАнПоказ1="": 
    УслДопАнПоказ1=""; 
    fДопАнПоказ1=False;
 fi;
 if not CMFНомЗаказ:
    fCMF=False;
 fi;
 Отч="Составлен: "+DateToString(ToDay)+" в "+Раб.Бюджет2005.TimeToStr(time,"")+" Пользователь: "+UserName(AliasName("РПО_БЮДЖ_КЛАСС"));
 Расчет;
 Отрисовать;
 Message("Расчет завершен");
end;

Proc btnНастр_OnClick(Sender: String);
 Настр(False);
 ОткрНастр(True);
end;

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

Proc btnВыгруз_OnClick(Sender: String);
var Iter,i,z:I;
var File,File_:S;
 if Заказчик="": Message("Заполните наименование заказчика",mtError); Template.Field="Заказчик"; Exit; fi;
 if ЗаказчикРНом_СПЗ="": Message("Заполните рестровый номер в СПЗ",mtError); Template.Field="ЗаказчикРНом_СПЗ"; Exit; fi;
 if ЗаказчикАдрес="": Message("Заполните юридический адрес",mtError); Template.Field="ЗаказчикАдрес"; Exit; fi;
 if ЗаказчикТел="": Message("Заполните телефон",mtError); Template.Field="ЗаказчикТел"; Exit; fi;
 if ЗаказчикEMail="": Message("Заполните электронную почту заказчика",mtError); Template.Field="ЗаказчикEMail"; Exit; fi;
 if ЗаказчикИНН="": Message("Заполните ИНН заказчика",mtError); Template.Field="ЗаказчикИНН"; Exit; fi;
 if ЗаказчикКПП="": Message("Заполните КПП заказчика",mtError); Template.Field="ЗаказчикКПП"; Exit; fi;
 if ЗаказчикОКТМО="": Message("Заполните ОКТМО заказчика",mtError); Template.Field="ЗаказчикОКТМО"; Exit; fi;
 if ФИОРук="": Message("Заполните Ф.И.О., должность руководителя (уполномоченного должностного лица) заказчика",mtError); Template.Field="ФИОРук"; Exit; fi;
 if ДатаУтв=1.1.100: Message("Заполните утверждения",mtError); Template.Field="ДатаУтв"; Exit; fi;
 ClearVariable(Buf);
 Buf[1]="XML (структурированный вид)";
 Buf[2]="Excel";
 i=Alternate("Выберите вариант выгрузки",Buf,-1,1,12);
 if i=0: Exit; fi;
 if fДопАнПоказ1:
    if i=1:
       Message("Для выгрузки не требуется указывать разбиение на '"+ДопАнПоказ1_+"'",mtWarning); 
       Exit;
      else
       if EnqOkCancel("Для выгрузки не требуется указывать разбиение на '"+ДопАнПоказ1_+"'^MИгнорировать ?",mtWarning)=cmCancel: Exit; fi;
    fi;
 fi;
 for Iter=1..Упр do
  if Лот[Iter]="" and not (СРЗ[Iter]="10.83_2_7" or СРЗ[Iter]="11.93_1_4" or СРЗ[Iter]="11.93_1_5"):
     if i=1:
	Message("Обнаружены записи с пустыми значениями № заказа (№ лота)^MНажмите на кнопку 'Присвоить номера заказа новым записям'",mtWarning); 
	Template.Field="Лот["+Str(Iter)+"]"; 
	Exit;
       else
	if EnqOkCancel("Внимание! Обнаружены записи с пустыми значениями № заказа (№ лота)^MНажмите на кнопку 'Присвоить номера заказа новым записям'",mtWarning)=cmCancel: Template.Field="Лот["+Str(Iter)+"]"; Exit; fi;
	Break;
     fi;
  fi;
 od;
 for Iter=1..Упр do
  if isПре[Iter]:
     if EnqOkCancel("Внимание! Обнаружены записи заказа не принятые к учету, данные взяты из предыдущей редакции заказа",mtWarning)=cmCancel: Template.Field="Примеч["+Str(Iter)+"]"; Exit; fi;
     Break;
  fi;
 od;
 if i=1:
    if fДопАнПоказ1: Message("Флаг '"+AsString(cbДопАнПоказ1.Caption)+"' должен быть снят",mtError); Template.Object="cbДопАнПоказ1"; Exit; fi;
    if fРасшифр_11_1_4: Message("Флаг 'Расшифр. закупки ст.93 ч.1 п.4(5)' должен быть снят",mtError); Template.Object="btnРасшифр_11_1_4"; Exit; fi;
    if fCMF: Message("Флаг 'Показывать только 'незакрытые' записи' должен быть снят",mtError); Template.Object="cbCMF"; Exit; fi;
    if not СОП="": Message("Дополнительное условие на 'Способ определения поставщика' должно быть пустым",mtError); Template.Field="СОП_"; Exit; fi;
    if not ПискПредм="": Message("Дополнительное условие на 'Наименование предмета контракта' должно быть пустым",mtError); Template.Field="ПискПредм"; Exit; fi;
    if not ЕдИзм=1: Message("Единица измерения должна быть 'Руб.', а не '"+ЕдИзм_+"'",mtError); Template.Field="ЕдИзм_"; Exit; fi;
    for Iter=1..Упр do
     if Int(Лот[Iter])=0 and not Лот[Iter]="": Message("Номер заказа (№ лота) "+Лот[Iter]+" должен содержать только цифры",mtError); Template.Field="Лот["+Str(Iter)+"]"; Exit; fi;
     if not Лот[Iter]=Str(Int(Лот[Iter])) and not Лот[Iter]="": Message("Номер заказа (№ лота) "+Лот[Iter]+" должен содержать ведущие нули",mtError); Template.Field="Лот["+Str(Iter)+"]"; Exit; fi;
     if Round(Объем[Iter],Int(Точн[Iter]))=0 and not Лот[Iter]="": Message("Номер заказа (№ лота) "+Лот[Iter]+" количество (объем) равен 0",mtError); Template.Field="Лот["+Str(Iter)+"]"; Exit; fi;
     if not Лот[Iter]="" and not pp[Iter]=0:
	z=SearchInArray(Лот,Лот[Iter],False,Iter+1);
	While not z=-1 do
	 if not UKey[Iter]=UKey[z] and not pp[z]=0:
	    Trace("Повторение номера лота "+Лот[Iter]+" Позиция №"+Str(pp[Iter])+" = Позиция №"+Str(pp[z]));
	    Message("Повторение номера лота "+Лот[Iter]+" Позиция №"+Str(pp[Iter])+" = Позиция №"+Str(pp[z]),mtError);
	    Template.Field="Лот["+Str(Iter)+"]";
	 fi;
	 z=SearchInArray(Лот,Лот[Iter],False,z+1);
	od;
     fi; --if not Лот[Iter]="":
    od;
 fi;
 if ChooseFolder(Folder,"Выберите папку для экспорта")=cmCancel: Exit; fi;
 if i=1:
    ВыгрузкаXML(Folder+"ПГ_"+ЗаказчикРНом_СПЗ+"_"+Раб.Формат.ДатаСтр(ToDay,14)+"_"+Раб.Бюджет2005.TimeToStr(Time,"HH-MM-SS")+".xml","utf-8");
    ExecuteProgram('Explorer "'+Folder+'"');
   else
    File=Folder+"План-график на "+ТекГод+" от "+Раб.Формат.ReplaceSubStr(DateToString(ToDay),".","-")+" "+Раб.Бюджет2005.TimeToStr(Time,"HH-MM-SS");
    ExportBlank(ieExcel_HTML,"",File,False,True);
    File_=Раб.Excel.Бланк_HTML_to_Excel(File+".html",True);
    if File_="":
       ExecuteProgram('Explorer "'+Folder+'"');
       ExecuteProgram('Excel "'+File+'.html"');
      else
       ExecuteProgram('Excel "'+File);
    fi;
 fi;
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;

Proc btnПрисвНомер_OnClick(Sender: String);
var OWA,n,Iter,z,MaxНом:I;
var FF,Test,Val:S;
var UKey_:Record;
 if Sender="btnПрисвНомер":
    if EnqOkCancel("Внимание! Вы уверены, что хотите, присвоить новые номера всем записям плана-графика (старые номера будут утеряны) ?",mtWarning)=cmCancel: Exit; fi;
    Val=Str(Time);
    if Input(Test,"Для подтверждения наберите '"+Val+"'")=cmCancel: Message("Операция отменена"); Exit; fi;
    if not Test=Val: Message("Операция отменена, неправильный код подтверждения"); Exit; fi;
 fi;
 RefreshCard(crdДок);
 if not УслДопАнПоказ1="": Message("Для присвоения номера, условие на "+ДопАнПоказ1+", должно быть пустым",mtError); Template.Field="УслДопАнПоказ1_"; Exit; fi;
 if not СОП="": Message("Для присвоения номера, условие на способ определения поставщика, должно быть пустым",mtError); Template.Field="СОП_"; Exit; fi;
 if not ПискПредм="": Message("Для присвоения номера, условие на наименование предмета контракта, должно быть пустым",mtError); Template.Field="ПискПредм"; Exit; fi;
 if fCMF: Message("Для присвоения номера, условие на закрытые записи, не должно быть установлено",mtError); Template.Object="cbCMF"; Exit; fi;
 if Упр=0: Message("Выполните расчет",mtError); Template.Object="btnРасчет"; Exit; fi;
 MaxНом=0;
 UKey_=nil;
 if Sender="btnПрисвНомерНов":
    for Iter=1..Упр do
     if Int(Лот[Iter])>MaxНом: MaxНом=Int(Лот[Iter]); fi;
     if Лот[Iter]="" and not (СРЗ[Iter]="10.83_2_7" or СРЗ[Iter]="11.93_1_4" or СРЗ[Iter]="11.93_1_5") and UKey_=nil: UKey_=UKey[Iter]; fi;
    od;
    FF="НомерДок=''";
   else
    UKey_=UKey[1];
 fi;
 OWA=OpenWorkArea(crdДок,"");
 Try
  BeginChanging(OWA,True);
  Try
   z=MaxНом;
   for Iter=1..Упр do
    if not UKey_=UKey[Iter] and (not Sender="btnПрисвНомерНов" or (Sender="btnПрисвНомерНов" and Лот[Iter]="") and not (СРЗ[Iter]="10.83_2_7" or СРЗ[Iter]="11.93_1_4" or СРЗ[Iter]="11.93_1_5")):
       z=z+1;
       n=GetRecordNumber(OWA,UKey_);
       n=PutFieldS(OWA,n,"НомерДок",Str(z));
       n=PutFieldD(OWA,n,"ДатаДок",ToDay);
       n=PutFieldL(OWA,n,"ClosedModFob",CMFНомЗаказ);
       UKey_=UKey[Iter];
    fi;
   od;
   if not UKey_=nil:
      z=z+1;
      n=GetRecordNumber(OWA,UKey_);
      n=PutFieldS(OWA,n,"НомерДок",Str(z));
      n=PutFieldD(OWA,n,"ДатаДок",ToDay);
      n=PutFieldL(OWA,n,"ClosedModFob",True);
   fi;
   EndChanging(OWA);
  Except
   CancelChanging(OWA);
   Raise;
  end;
 Finally
  CloseWorkArea(OWA);
 end;
 Расчет;
end;

Proc cbДопАнПоказ1_OnChange(Sender: String);
 Оформление;
 Очистить;
end;

Proc cbПросто_OnChange(Sender: String);
 Отрисовать;
end;

Proc cbCMF_OnChange(Sender: String);
 Очистить;
end;

Proc cbПечатьДопКолон_OnChange(Sender: String);
 Оформление;
end;

Proc btnРасшифр_11_1_4_OnChange(Sender: String);
 Очистить;
end;

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

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


Конец
