-- Шаблон создан мастером бланков
-- 26.09.2005 10:42:44
--
БланкСШаблоном "Детализация показателя";

var Загл:S;

var Упр:I;

var ДН:D;
var ДК:D;
var УслВал:S;
var Показатель:S;
var Точн:I;
var ЕдИзм:S;
var КБК:S;
var КБК_:S="Бюджетная классификация: "+КБК;

var пп[]:i=$;
var Функция[]:I;
var Функция_[]:S=if(Функция[$]=1:"Остаток на начало"|Функция[$]=2:"Остаток на конец"|True:"Оборот");
var УслСч[]:S;
var УслАн[]:S;
var Сум[]:N;
var Знак[]:I;
var Сум_[]:N=Сум[$];
var ИтогСум:N=SumOfArray(Сум,Упр);

var BufКБК []:S;
var BufКБК_[]:S;
--
--Процедуры и функции -------------
Proc Очистить;
 ClearVariable(Раб.Вспом.Ф0503127_Детал.Загл);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.ДН);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.ДК);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.УслВал);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.Показатель);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.Точн);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.ЕдИзм);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.КБК);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.Упр);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.Функция);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.УслСч);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.УслАн);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.Сум);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.Знак);
end;

Func НаимКБК(Voc:S; Val:S):S;
var tmp:S;
 tmp=Раб.Формат.ReplaceSubStr(val,".","");
 tmp="000"+SubStr(tmp,4,17);
 tmp=Раб.Бюджет.НаимКБК(Voc+"2006",tmp);
 if tmp="":
    tmp=Раб.Бюджет2005.ВзятьКодКБК(val,Voc,"КОСГУ",False);
    tmp=Раб.Бюджет.НаимКБК("КОСГУ2006",tmp);
 fi;
 ^tmp;
end;

Proc СписокКД;
var n,nn:i;
 Раб.Бюджет2005.РежимМаски="?";
 nn=GetGroupAccounts(Раб.Бюджет2005.МаскаСчетаКД+"&"+Раб.Бюджет2005.МаскаДоходСч,Раб.Вспом.Ф0503127_Детал.BufКБК,1,2,3,4,5,6,10);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.BufКБК_);
 ShowProgress(nn,"Построение списка КБК...");
 Try
  for n=1..nn do
   ProgressPos(n);
   Раб.Вспом.Ф0503127_Детал.BufКБК_[n]=Раб.Вспом.Ф0503127_Детал.BufКБК[n]+" --"+НаимКБК("КД",Раб.Вспом.Ф0503127_Детал.BufКБК[n]);
  od;
 Finally
  CloseProgress;
 end;
 InsertInArray(Раб.Вспом.Ф0503127_Детал.BufКБК_,1,"Обновить список");
 if n>0: InsertInArray(Раб.Вспом.Ф0503127_Детал.BufКБК_,2,"Выбрать все классификации"); fi;
end;

Proc СписокКР;
var n,nn:i;
var tmp:s;
 Раб.Бюджет2005.РежимМаски="?";
 nn=GetGroupAccounts(Раб.Бюджет2005.МаскаСчетаФКР+"&"+Раб.Бюджет2005.МаскаРасхСч,Раб.Вспом.Ф0503127_Детал.BufКБК,1,2,3,4,8);
 ClearVariable(Раб.Вспом.Ф0503127_Детал.BufКБК_);
 ShowProgress(nn,"Построение списка КБК...");
 Try
  for n=1..nn do
   ProgressPos(n);
   tmp=Раб.Бюджет2005.ВзятьКодКБК(Раб.Вспом.Ф0503127_Детал.BufКБК[n],"ФКР","КОСГУ",False);
   Раб.Вспом.Ф0503127_Детал.BufКБК_[n]=Раб.Вспом.Ф0503127_Детал.BufКБК[n]+" --"+Раб.Бюджет.НаимКБК("КОСГУ2006",tmp);
  od;
 Finally
  CloseProgress;
 end;
 InsertInArray(Раб.Вспом.Ф0503127_Детал.BufКБК_,1,"Обновить список");
 if nn>0: InsertInArray(Раб.Вспом.Ф0503127_Детал.BufКБК_,2,"Выбрать все классификации"); fi;
end;

Proc СписокКИФД(ТипКИФД:S);
var n,nn:i;
var tmp:s;
 Раб.Бюджет2005.РежимМаски="?";
 if ТипКИФД="КИВФ": tmp="(???.01.*&~???.01.05.*)&";
   |ТипКИФД="КИВнФ": tmp="(???.02.*)&";
   |ТипКИФД="КИФД08": tmp="(???.01.05.*&(*.510|*.610))&";
   |Match(ТипКИФД,"КИФД510*"): tmp="(???.01.05.*.510)&";
   |Match(ТипКИФД,"КИФД610*"): tmp="(???.01.05.*.610)&";
 fi;
 tmp=tmp+Раб.Бюджет2005.МаскаСчетаКИФД;
 if ТипКИФД="КИФД08" or ТипКИФД="КИФД510_" or ТипКИФД="КИФД610_":
    nn=GetGroupAccounts(tmp,Раб.Вспом.Ф0503127_Детал.BufКБК,1,2,3);
    for n=1..nn do
     Раб.Вспом.Ф0503127_Детал.BufКБК[n]=Раб.Вспом.Ф0503127_Детал.BufКБК[n]+".00.00.00.0000."+if(ТипКИФД="КИФД510_":"510"|ТипКИФД="КИФД610_":"610"|True:"000");
    od;
   |True: nn=GetGroupAccounts(tmp,Раб.Вспом.Ф0503127_Детал.BufКБК,1,2,3,4,5,6,7,11);
 fi;
 ClearVariable(Раб.Вспом.Ф0503127_Детал.BufКБК_);
 ShowProgress(nn,"Построение списка КБК...");
 Try
  for n=1..nn do
   ProgressPos(n);
   Раб.Вспом.Ф0503127_Детал.BufКБК_[n]=Раб.Вспом.Ф0503127_Детал.BufКБК[n]+" --"+НаимКБК("КИФД",Раб.Вспом.Ф0503127_Детал.BufКБК[n]);
  od;
 Finally
  CloseProgress;
 end;
 InsertInArray(Раб.Вспом.Ф0503127_Детал.BufКБК_,1,"Обновить список");
 if nn>0 and not ТипКИФД="КИФД08": InsertInArray(Раб.Вспом.Ф0503127_Детал.BufКБК_,2,"Выбрать все классификации"); fi;
end;

Proc КонтрольКБК(voc:S; val:S; st:s);
var Iter:I;
var КОСГУ,Ret,Txt:S;
 if voc="" or val="": Exit; fi;
 Раб.Бюджет2005.РежимМаски="?";
 Txt="Код строки="+st+" КБК="+val;
 Ret=Txt;
 КОСГУ=Раб.Бюджет2005.ВзятьКодКБК(val,voc,"КОСГУ",False);
 if voc="КД":
    if Match(val,Раб.Бюджет2005.МаскаКД+".???"):
       if not Раб.Бюджет2005.MatchMask(КОСГУ,"110|120|130|140|15?|16?|17?|180|4??"):
          Ret=Ret+" Недопустимый код КОСГУ="+КОСГУ+" Допустимые значения 110,120,130,140,150,170,160,180,410,420,430,440";
       fi;
      else
       Ret=Ret+" Не является кодом дохода";
    fi;
   |voc="КР":
    if Match(val,Раб.Бюджет2005.МаскаФКР+".???"):
       if not Раб.Бюджет2005.MatchMask(КОСГУ,"2??|3??|530"):
          Ret=ret+" Недопустимый код КОСГУ="+КОСГУ+" Допустимые значения 211,212,213,221,222,223,224,225,226,231,232,241,242,251,252,253,261,262,263,290,310,320,330,340,530";
       fi;
      else
       Ret=Ret+" Не является кодом расхода";
    fi;
   |voc="КИФД":
    if Match(val,Раб.Бюджет2005.МаскаКИФД+".???"):
       if not Раб.Бюджет2005.MatchMask(КОСГУ,"171|310|410|510|520|540|550|610|620|630|650|710|720|810|820"):
          Ret=Ret+" Недопустимый код КОСГУ="+КОСГУ+" Допустимые значения 171,310,410,510,520,540,550,610,620,630,640,650,710,720,810,820";
       fi;
      else
       Ret=Ret+" Не является кодом источника финансирования";
    fi;
 fi;
 if not Ret=Txt:
    Trace(Ret);
 fi;
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func Сум_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
var NameRep:S;
var ДН_,ДК_:D;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if Функция[Iter]=1: ДН_=1.1.100; ДК_=ДН;
   |Функция[Iter]=2: ДН_=1.1.100; ДК_=ДК;
   |True:            ДН_=ДН;      ДК_=ДК;
 fi;
 if not УслВал="":
    if  УслВал=BaseCurrency: NameRep='"001"'; else NameRep='"003"'; fi;
    Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst".'+NameRep,ДН_,ДК_,УслСч[Iter]+"'"+УслВал,УслАн[Iter]);
   else
    Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst"."001"',ДН_,ДК_,УслСч[Iter],УслАн[Iter]);
 fi;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
var n:i;
var Усл:S;
 if Загл="": Загл="Детализация значений ф. 0503127 (0503137)"; fi;
 for n=1..Упр do
  if Знак[n]=0: Знак[n]=1; fi;
  Усл=УслСч[n]+if(УслВал="","","'"+УслВал)+"{"+УслАн[n]+"}";
  Try
   if Функция[n]=1: Сум[n]=Знак[n]*Saldo(Усл,ДН,Показатель);
     |Функция[n]=2: Сум[n]=Знак[n]*Saldo(Усл,ДК,Показатель);
     |True:         Сум[n]=Знак[n]*Turn(Усл,ДН,ДК,Показатель);
   fi;
  Except
  end;
 od;
end;
--Обработчики событий шаблона -----
--

Конец
