-- Шаблон создан мастером бланков
-- 16.02.2010 11:13:06
--
БланкСШаблоном "Расшифровка по закупкам";

var ДН:D;
var ДК:D;

var Упр:I;

var пп[]:i=$;
var Key[]:S;
var verОКДП_Гр[]:S;
var ОКДП_Гр[]:S;
var ОКДП[]:S;
var Предм[]:S;
var ДЗ[]:D;
var Сум[]:N;
var Осн[]:S;
var Контр[]:S;
var Карт[]:S;
var Зап[]:I;

ДолжнИсп:S;
ФИОИсп:S;
ФИОБух:S;

var Buf[]:S;

var SelfCfg:S="ТББ.ОТЧЕТ_ЗАКУПКИ_ОКДП.000.cfg";
var SelfBln:S="ПРОЧИЕ.РАСШИФР_ЗАКУПКИ_ОКДП";

btnРасчет  : Object;
btnПечать  : Object;
btnЗакрыть : Object;

var Rep[]:S;
var Rep_verОКДП_Гр[]:S;
var Rep_ОКДП_Гр[]:S;
var Rep_ОКДП[]:S;
var Rep_Link[]:I;

S1:Section;
S2:Section;
S3:Section;
--
--Процедуры и функции -------------
Proc Очистить;
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.Упр);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.Key);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.verОКДП_Гр);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.ОКДП_Гр);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.ОКДП);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.Предм);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.ДЗ);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.Сум);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.Осн);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.Контр);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.Карт);
 ClearVariable(Прочие.Расшифр_Закупки_ОКДП.Зап);
end;

Proc ДобСтр(Key_:S; verОКДП_Гр_:S; ОКДП_Гр_:S; ОКДП_:S; ДЗ_:D; Сум_:N; Контр_:S; Карт_:S; Зап_:I);
 Упр=Упр+1;
 Key[Упр]=Key_;
 verОКДП_Гр[Упр]=verОКДП_Гр_;
 ОКДП_Гр[Упр]=ОКДП_Гр_;
 ОКДП[Упр]=ОКДП_;
 ДЗ[Упр]=ДЗ_;
 Сум[Упр]=Сум_;
 Контр[Упр]=Контр_;
 Карт[Упр]=Карт_;
 Зап[Упр]=Зап_;
end;


Proc Расчет;
var Iter:I;
var НаимДок,НомДок,ДатДок:S;
var Rec: Record;
 Try
  Раб.ИмяПолеКарт.Начать;
  for Iter=1..Упр do
   if Trim(Карт[Iter])="" or Зап[Iter]=0:
      Предм[Iter]=TransComment(Зап[Iter]);
      Осн[Iter]="Журнал хоз. операций, запись №"+Str(Зап[Iter]);
     else
      Rec=IntegerToRecord(Зап[Iter]);
      Предм[Iter]=Раб.ИмяПолеКарт.ЗначПоляС(Карт[Iter],"Коммент",Rec);
      НаимДок=Раб.ИмяПолеКарт.ЗначПоляС(Карт[Iter],"Док",Rec);
      if НаимДок="": НаимДок=Раб.ИмяПолеКарт.ИмяДокумента(Карт[Iter]); fi;
      НомДок=Раб.ИмяПолеКарт.ЗначПоляС(Карт[Iter],"Номер",Rec);
      ДатДок=DateToString(Раб.ИмяПолеКарт.ЗначПоляД(Карт[Iter],"Дата",Rec));
      Осн[Iter]=НаимДок+" №"+НомДок+" от "+ДатДок;
   fi;
   if not Контр[Iter]="":
      if not Name_A(Контр[Iter])=" ":
	 Контр[Iter]=Name_A(Контр[Iter]);
      fi;
   fi;
  od;
 Finally
  Раб.ИмяПолеКарт.Закончить;
 end;
end;

Proc ДобВОтч(Rep_:S; verОКДП_Гр_:S; ОКДП_Гр_:S; ОКДП_:S; Iter:I);
var z:i;
 z=SearchInArray(Rep,Rep_,True);
 if z=-1:
    z=InsertInArraySort(Rep,Rep_);
    InsertInArray(Rep_verОКДП_Гр,z,verОКДП_Гр_);
    InsertInArray(Rep_ОКДП_Гр,z,ОКДП_Гр_);
    InsertInArray(Rep_ОКДП,z,ОКДП_);
    InsertInArray(Rep_Link,z,Iter);
 fi;
end;

Proc Отрисовать;
var Iter,z,zz,r,rr,c,cfs:I;
var Rep0_,Rep1_,Rep2_,Rep3_,ix,iz:S;
 S1.RowsCount=3;
 S2.Visible=False;
 ClearVariable(Rep);
 ClearVariable(Rep_verОКДП_Гр);
 ClearVariable(Rep_ОКДП_Гр);
 ClearVariable(Rep_ОКДП);
 ClearVariable(Rep_Link);
 for Iter=1..Упр do
  Rep0_=verОКДП_Гр[Iter];
  Rep1_=Rep0_+"#"+ОКДП_Гр[Iter];
  Rep2_=Rep1_+"#"+ОКДП[Iter];
  Rep3_=Rep2_+"#"+Str(Iter);
  --группировка приказу
  ДобВОтч(Rep0_,verОКДП_Гр[Iter],"","",-Iter);
  --групировка по группе
  ДобВОтч(Rep1_,verОКДП_Гр[Iter],ОКДП_Гр[Iter],"",-Iter);
  --группировка по коду
  ДобВОтч(Rep2_,verОКДП_Гр[Iter],ОКДП_Гр[Iter],ОКДП[Iter],-Iter);
  --Добавленеи самого значения
  ДобВОтч(Rep3_,verОКДП_Гр[Iter],ОКДП_Гр[Iter],ОКДП[Iter],Iter);
 od;
 zz=LengthOfArray(Rep);
 S1.RowsCount=3+zz;
 r=3;
 for z=1..zz do
  ix="["+Str(Rep_Link[z])+"]";
  iz="["+Str(z)+"]";
  if Length(Rep[z])=3: --Приказ
     r=r+1;
     c=1;  S1.Cell(r,c,CellBorder,"2,1,1,1"); S1.Cell(r,c,CellContents,"пп"+iz,True); S1.Cell(r,c,CellFieldType,cftCommonField);
     c=2;  S1.Cell(r,c,CellFontStyle,fsBold); S1.Cell(r,c,CellAlignment,2); S1.Cell(r,c,CellContents,"Rep_verОКДП_Гр"+iz,True); S1.Cell(r,c,CellFieldType,cftCommonField);
     c=3;  S1.Cell(r,c,CellFontStyle,fsBold); S1.Cell(r,c,CellAlignment,0); S1.Cell(r,c,CellContents,if(Rep_verОКДП_Гр[z]="273":"Приказ Минэкономразвития РФ от 7 июня 2011 г. N 273"|Rep_verОКДП_Гр[z]="601":"Приказ Минэкономразвития РФ от 1 декабря 2010 г. N 601"|true:"Без расшифровки"),True);
	   S1.Cell(r,c,CellBorder,"1,1,2,1"); S1.CellLinks(c,r,9,r);
    |Length(Rep[z])=7: --Группа
     r=r+1;
     c=1;  S1.Cell(r,c,CellBorder,"2,1,1,1"); S1.Cell(r,c,CellContents,"пп"+iz,True); S1.Cell(r,c,CellFieldType,cftCommonField);
     c=3;  S1.Cell(r,c,CellFontStyle,fsBold); S1.Cell(r,c,CellAlignment,2); S1.Cell(r,c,CellContents,"Rep_ОКДП_Гр"+iz,True); S1.Cell(r,c,CellFieldType,cftCommonField);
     c=4;  S1.Cell(r,c,CellFontStyle,fsBold); S1.Cell(r,c,CellAlignment,0); S1.Cell(r,c,CellContents,if(Rep_ОКДП_Гр[z]="000","Без расшифровки",Раб.Бюджет.НаимКБК(if(Rep_verОКДП_Гр[z]="273","ОКДП_ГР273","ОКДП_ГР"),Rep_ОКДП_Гр[z])),True);
	   S1.Cell(r,c,CellBorder,"1,1,2,1"); S1.CellLinks(c,r,9,r);
    |Length(Rep[z])=15: --Код ОКДП
     r=r+1;
     c=1;  S1.Cell(r,c,CellBorder,"2,1,1,1"); S1.Cell(r,c,CellContents,"пп"+iz,True); S1.Cell(r,c,CellFieldType,cftCommonField);
     c=4;  S1.Cell(r,c,CellFontStyle,fsBold); S1.Cell(r,c,CellAlignment,2); S1.Cell(r,c,CellContents,"Rep_ОКДП"+iz,True); S1.Cell(r,c,CellFieldType,cftCommonField);
     c=5;  S1.Cell(r,c,CellFontStyle,fsBold); S1.Cell(r,c,CellAlignment,0); S1.Cell(r,c,CellContents,if(Rep_ОКДП[z]="0000000","Без расшифровки",Раб.Договор.ВзятьЗначОКДП(Rep_ОКДП[z],"Наим")),True);
	   S1.Cell(r,c,CellBorder,"1,1,2,1"); S1.CellLinks(c,r,9,r);
    |True:
     cfs=if(not Pos("@",ExtractWord(5,Key[Rep_Link[z]],"#"))=0,fsItalic,0);
     r=r+1;
     c=1;  S1.Cell(r,c,CellBorder,"2,1,1,1"); S1.Cell(r,c,CellContents,"пп"+iz,True); S1.Cell(r,c,CellFieldType,cftCommonField); S1.Cell(r,c,CellLookup,True); S1.Cell(r,c,CellLookup,True); S1.Cell(r,c,CellEventOnLookup,"пп_OnLookup");
     c=5;  S1.Cell(r,c,CellFontStyle,cfs); S1.Cell(r,c,CellAlignment,0); S1.Cell(r,c,CellContents,"Предм"+ix,True); S1.Cell(r,c,CellFieldType,cftCommonField);
     c=6;  S1.Cell(r,c,CellFontStyle,cfs); S1.Cell(r,c,CellAlignment,0); S1.Cell(r,c,CellContents,"ДЗ"+ix,True); S1.Cell(r,c,CellFieldType,cftDateField); S1.Cell(r,c,CellFormat,"dd/mm/yyyy");
     c=7;  S1.Cell(r,c,CellFontStyle,cfs); S1.Cell(r,c,CellAlignment,1); S1.Cell(r,c,CellContents,"Сум"+ix,True); S1.Cell(r,c,CellFieldType,cftNumericField); S1.Cell(r,c,CellFormat,",##0.00;;-");
     c=8;  S1.Cell(r,c,CellFontStyle,cfs); S1.Cell(r,c,CellAlignment,1); S1.Cell(r,c,CellAlignment,0); S1.Cell(r,c,CellContents,"Осн"+ix,True); S1.Cell(r,c,CellFieldType,cftCommonField);
     c=9;  S1.Cell(r,c,CellFontStyle,cfs); S1.Cell(r,c,CellAlignment,1); S1.Cell(r,c,CellAlignment,0); S1.Cell(r,c,CellContents,"Контр"+ix,True); S1.Cell(r,c,CellFieldType,cftCommonField); S1.Cell(r,c,CellBorder,"1,1,2,1");
  fi;
 od;
end;

--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func пп_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
 Template.HideEditor(False);
 Row=Row-3;
 Iter=Rep_Link[Row];
 if Trim(Карт[Iter])="" or Карт[Iter]="Table_Oper" or Зап[Iter]=0:
    TransOpenJur(Зап[Iter]);
   else
    OpenCardFile(Карт[Iter],"Ukey={"+Str(Зап[Iter])+"}");
 fi;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_OnClick(Sender: String);
end;

Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn("","",SelfCfg,"",1);
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 Раб.ИмяПолеКарт.Инициализация;
 Расчет;
end;

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


Конец
