-- Шаблон создан мастером бланков
-- 13.12.2012 14:58:37
--
БланкСШаблоном "Форма327";
ШАПКА :S;

var Buf[]: S;
A: S = "+";
D: S = "-";
Расч: S = "Подготовить ведомость";
МассПечать: S;
КОДГРУППЫ[] : S;
СПИСОКГРУПП: I;
СПИСОКДЕТЕЙ: I;
ДАТА_Н:DATE;
ДАТА_К:DATE;
ПЕРИОД:STRING;
var Период_:S=Name_A(ПЕРИОД);  
ДАТА_К2:DATE;
Дней_: I;


Учреждение                  : S;
СтруктурноеПодразделение    : S;
видрасч                     : S;
режим                       : S;











Г1[]: I;
Г2[]: S;
Г3[]: I;
Г4[]: N;
Г5[]: N;
Г6[]: N;
Г7[]: N;
Г8[]: D;
Г9[]: N;
Г10[]:N;
Г11[]:N;
Г12[]:N;


ГИ1: I;
ГИ2: S;
ГИ3: I;
ГИ4: N;
ГИ5: N;
ГИ6: N;
ГИ7: N;
ГИ8: D;
ГИ9: N;
ГИ10:N;
ГИ11:N;
ГИ12:N;

proc ВыборГруппы(Iter: I);
        var num :Integer;
        var w1,n1        : integer;
        var i            : integer;
        var g            : integer;
        ClearVariable(Buf);
w1 = OpenWorkArea('РПО_ДЕТСАД_ГРУППА','');

        for i=1..records(w1) do
                Buf[i] = GetFieldS(w1,i,'КОД');
        od;
CloseWorkArea(w1);
num=Alternate("Выберите группу...", Buf, -1, 1, 12);
КОДГРУППЫ[Iter]  = Buf[num];
end;


proc РасчитатьВедомость;

     var i:                                     I;
     var РабочаяОбластьДети:                    I;
     var РабочаяОбластьГруппа:                  I;
     var РабочаяОбластьНачДох:                  I;
     var РабочаяОбластьНачДохПодтаблица:        I;
     var w                   :                  I;
     var КолвоСтрок:                            I;
     var КолвоСтрокНачДох:                      I;
     var ВставленнаяСтрока:                     I;
     var ДатаНачала:                            D;
     var ДатаКонца:                             D;
     var ДатаПоследнейПроводки:                 D;
     var Проводка:                              I;
     var filter:                                Record;
     var s:                                     N;
     var ss:                                    S;
     var d:                                     I;
     var m:                                     I;
     var e:                                     I;
     var li:                                    I;
     ClearVariable(списокдетей);

     if списокдетей = 0: InsertFrame(списокдетей,1); fi;

     РабочаяОбластьДети = OpenWorkArea('РПО_детсад_дети','');
     РабочаяОбластьГруппа = OpenWorkArea('РПО_детсад_группа','');
     РабочаяОбластьНачДох = OpenWorkArea('РПО_начдох','');

     SetFilter(РабочаяОбластьДети, "групп='"+кодгруппы[1]+"'");
     КолвоСтрок = Records(РабочаяОбластьДети);

     d=1;
     ss = ExtractWord(4,период,".");
     m = int(ss);
     ss = ExtractWord(2,период,".");
     e = int(ss);
     ДатаНачала=Dat(d,m,e);
     if m<>12:  ДатаКонца = dat(d,m+1,e);
     else       ДатаКонца = dat(d,1,e+1);  fi;

     for i = 1..КолвоСтрок do
       if i <> 1: ВставленнаяСтрока=InsertFrame(списокдетей,i); fi;
       SetFilter(РабочаяОбластьГруппа,"код ='"+кодгруппы[1]+"'");
       filter = GetRecordKey(РабочаяОбластьДети,i);
       Г1[i] = i;
       Г2[i] = GetFieldS(РабочаяОбластьДети,i,"фамилия") +" "+GetFieldS(РабочаяОбластьДети,i,"имя");
       Г3[i] = GetFieldI(РабочаяОбластьДети,i,"номер");
       Г4[i] = GetfieldN(РабочаяОбластьГруппа,1,"Ставка")*GetfieldN(РабочаяОбластьДети,i,"льгота")/100;
       SetFilter(РабочаяОбластьНачДох,"дата_н="+DateToString(ДатаНачала));
       КолвоСтрокНачДох = Records(РабочаяОбластьНачДох);
      for li=1..КолвоСтрокНачДох do
            РабочаяОбластьНачДохПодтаблица = openArray(РабочаяОбластьНачДох,li,'позиции','');
            SetFilter(РабочаяОбластьНачДохПодтаблица,"ребенок="+RecordToString(filter));
            if records(РабочаяОбластьНачДохПодтаблица) <> 0:
                 filter =  GetFieldR(РабочаяОбластьНачДохПодтаблица,1,"ребенок");
                 Г6[i] =   GetFieldI(РабочаяОбластьНачДохПодтаблица,1,"дней") - GetFieldI(РабочаяОбластьНачДохПодтаблица,1,"невых");
                 Г7[i] =   GetFieldN(РабочаяОбластьНачДохПодтаблица,1,"сумма");
                 Г5[i] =   GetFieldN(РабочаяОбластьНачДохПодтаблица,1,"итоговаясумма");             
               --Г4[i]+Г6[i];
                 break;
            else
                 Г6[i] = 0;
                 Г7[i] = 0;
            fi;
            CloseWorkArea(РабочаяОбластьНачДохПодтаблица);
        od;
       Для Проводки Проводка = "-*.205.* {"+CardFileRecSign("РПО_детсад_дети","номер","дети",filter)+"}",ДатаНачала,ДатаКонца Цикл
       ДатаПоследнейПроводки = ПроводДата(Проводка);
       Конец;
       Г8[i] = ДатаПоследнейПроводки;
       s = Turn("-*.205.* {"+CardFileRecSign("РПО_детсад_дети","номер","дети",filter)+"}",ДатаНачала,ДатаКонца);
       Г9[i] = -s;
       s = Saldo("*.205.* {"+CardFileRecSign("РПО_детсад_дети","номер","дети",filter)+"}",ДатаКонца);
       if s > 0:  Г10[i] = ABS(s); fi;
       if s < 0:  Г11[i] = -s; fi;
       Г12[i] =   Г4[i]-s;
     od;
     КолвоСтрок = Records(РабочаяОбластьДети);
     ГИ1 = КолвоСтрок;
     ГИ2 = "Итого по группе "+кодгруппы[1];
   --  ГИ3 = -
   --  ГИ4 = 0;
     ГИ5  = 0;
     ГИ6  = 0;
     ГИ7  = 0;
     ГИ9  = 0;
     ГИ11 = 0;
     ГИ12 = 0;

     for i=1 .. КолвоСтрок do
        ГИ5  = ГИ5+Г5[i];
        ГИ6  = ГИ6+Г6[i];
        ГИ7  = ГИ7+Г7[i];
        ГИ9  = ГИ9+Г9[i];
        ГИ11 = ГИ11+Г11[i];
        ГИ12 = ГИ12+Г12[i];
     od;
     closeworkarea(РабочаяОбластьДети);
     closeworkarea(РабочаяОбластьГруппа);
     closeworkarea(РабочаяОбластьНачДох);
end;



Func КОДГРУППЫ_OnEnter(FieldName: String; Iter: Integer): logical;
   ВыборГруппы(Iter);
    Return  false;

end;


proc ОчиститьВедомость;
        ШАПКА = "";
        clearvariable(СПИСОКГРУПП);
        clearvariable(СПИСОКДЕТЕЙ);
        ГИ1  = 0;
        ГИ2 = "Итого по группе";
        ГИ3  = 0;
        ГИ4  = 0;
        ГИ5  = 0;
        ГИ6  = 0;
        ГИ7  = 0;
        ГИ9  = 0;
        ГИ11 = 0;
        ГИ12 = 0;

        if СПИСОКГРУПП = 0: InsertFrame(СПИСОКГРУПП, 1); fi;
        if СПИСОКДЕТЕЙ = 0: InsertFrame(СПИСОКДЕТЕЙ, 1); fi;
end;


Proc AfterOpen(Destroy: Logical);
    ОчиститьВедомость;
end;


Func РасчЖир_OnEnter(FieldName: String; Iter: Integer): logical;
   РасчитатьВедомость;
   Return  false;

end;


Func Период_OnEnter(FieldName: String; Iter: Integer): logical;

var tmpE:S;
var М,Г:I;
  template.hideeditor(False);
  tmpE=Период;
  tmpE=AnaElection("ПЕРИОД.*",False,False,tmpE);
  if tmpE<>'' then
     Период=tmpE;
  fi;
  --Поставить даты
  Г=Int(ExtractWord(2,tmpE,"."));
  М=Int(ExtractWord(4,tmpE,"."));
  if Г<>0 and М<>0:
     Дата_Н=Dat(1,М,Г);
     Дата_К2=Dat(1,М+2,Г);
     if М=12:
        Дата_К=Dat(1,1,Г+1);
        Дата_К2=Dat(1,2,Г+1);
       else
        Дата_К=Dat(1,М+1,Г);
     fi;
     if М=11:
      Дата_К2=Dat(1,1,Г+1);
     fi;
  fi;
  --Посчитать дни
  Дней_=Int(ExecuteFuncN("F.SAL.НОРМА_СТАНДАРТ",Дата_Н,Дата_К-1,"Д"));
  Return False  ;

end;


Func Расч_OnEnter(FieldName: String; Iter: Integer): logical;
        РасчитатьВедомость;
        Return  false;
end;


Конец
