-- Шаблон создан мастером бланков
-- 04.10.2012 10:26:55
--
БланкСШаблоном "КОНВЕРТОР";

var КОДГРУПЫ[]: String;
var СТАВКИ[]: N;
var КОДЫ: i;
код[]: s;
ставка[]:n;
var д: Date;

func FindArray(zn :String): Integer;
var res: Integer;
var i:   Integer;
var n:   Integer;
n = LengthOfArray(КОДГРУПЫ);
res = 0;
for i=1..n do
        if КОДГРУПЫ[i] = zn:  res=1;  break; fi;
od;
^res;
end;



proc Convert;

var г: Record;
var i: Integer;

var w: Integer; --ДЕТСАД НАЧДОХ
var v: Integer; --ДЕТСАД ДЕТИ
var w1:Integer;
var h: Integer; --ДЕТСАД ГРУППА
var l: Integer; --ДЕТСАД ЛЬГОТА

var s: String;
var n: Integer;
var g: Integer;
var li:Integer ;
var ss: Numeric;

ClearVariable(КОДГРУПЫ);
ClearVariable(СТАВКИ);
li=0;                                 -- ВЫБИРАЕМ ГРУППЫ
v = OpenWorkArea("ДЕТСАД_ДЕТИ","");
for i=1..records(v) do
      s = GetFieldS(v,i,"ГРУПП");
      if FindArray(s)=0:
          li= li+1;
          КОДГРУПЫ[li] = s;
      fi;
od;
CloseWorkArea(v);
w = openworkarea('ДЕТСАД_НАЧДОХ','');  --выбираемставки с учетом групп
   for i=1..LengthOfArray(КОДГРУПЫ) do
      for li=1..records(w) do
         v = openArray(w,li,'СТАВКИ','','ГРУППА="'+КОДГРУПЫ[i]+'"');
                if records(v)<>0:  СТАВКИ[i] = GetFieldN(v,1,"СТАВКА"); fi;
         CloseWorkArea(v);
      od;
   od;
closeworkarea(w);
for i=1 ..LengthOfArray(КОДГРУПЫ) do
g=InsertFrame(КОДЫ,i);
код[i] = КОДГРУПЫ[i];
ставка[i] =СТАВКИ[i];
od;
 w = OpenWorkArea('ДЕТСАД_ГРУППА','');   --Заполняем картотеку группы
    try
     BeginChanging(w);
      DeleteAllRecords(w);
     EndChanging(w);
    finally
      CloseWorkArea(w);
  end;
 w = OpenWorkArea('ДЕТСАД_ГРУППА','');
    BeginChanging(w);
      try
      for i = 1..LengthOfArray(КОДГРУПЫ) do
        n = InsertRecord(w);
        n = PutFieldS(w,n,'КОД',КОДГРУПЫ[i]);
        n = PutFieldN(w,n,'Ставка',СТАВКИ[i]);
    od;
   EndChanging(w);
  finally
   CloseWorkArea(w);
 end;
w = OpenWorkArea('ДЕТСАД_ДЕТИ','');
v = OpenWorkArea('ДЕТСАД_ГРУППА','');
li = records(w);
ShowProgress(li,"Конвертируется картотека Детсад дети...");
for i=1..li do
     s = GetFieldS(w,i,"ГРУПП");
     SetFilter(v,"КОД ='"+s+"'");
     if records(v)<>0:
        д = GetFieldD(w,i,"ДАТА_Н");
        if д = 1.1.100: д = GetFieldD(w,i,"ДАТАР");  fi;
        г = GetRecordKey(v,1);
        BeginChanging(w);
         try
           n = PutFieldR(w,i,'ГРУППАДАТА',г,д);
         EndChanging(w);
        finally
        end;
     fi;
ProgressPos(i);
od;
CloseWorkArea(w);
CloseWorkArea(v);
CloseProgress;
 -- Конвертируем записи картотеки начдох
w = OpenWorkArea('ДЕТСАД_НАЧДОХ','');
v = OpenWorkArea('ДЕТСАД_ГРУППА','');
n=1;
li = records(w);
ShowProgress(li,"Конвертируется картотека начисление дохода(группы)");
for i=1..li do
     w1 = openArray(w,i,'СТАВКИ','');
     s = GetFieldS(w1,1,"ГРУППА");
     SetFilter(v,"КОД ='"+s+"'");
     if records(v)<>0:
         г = GetRecordKey(v,1);
        BeginChanging(w1);
         try
          n = PutFieldR(w1,1,'ГРУПП',г);
         EndChanging(w1);
        finally
        end;
     fi;
     CloseWorkArea(w1);
ProgressPos(i);
od;
CloseWorkArea(w);
CloseWorkArea(v);
CloseProgress;

 w = OpenWorkArea('ДЕТСАД_ЛЬГОТА','');   --Заполняем картотеку льготы
    try
     BeginChanging(w);
      DeleteAllRecords(w);
     EndChanging(w);
    finally
      CloseWorkArea(w);
  end;

w = openworkarea('ДЕТСАД_ЛЬГОТА','');
     BeginChanging(w);
         try
          n = InsertRecord(w);
          n = PutFieldN(w,n,'СУММАПРОЦЕНТЫ',25);
          n = PutFieldS(w,n,'НАЗВАНИЕ','Льгота 75%');
          n = InsertRecord(w);
          n = PutFieldN(w,n,'СУММАПРОЦЕНТЫ',50);
          n = PutFieldS(w,n,'НАЗВАНИЕ','Льгота 50%');
          n = InsertRecord(w);
          n = PutFieldN(w,n,'СУММАПРОЦЕНТЫ',75);
          n = PutFieldS(w,n,'НАЗВАНИЕ','Льгота 25%');
          n = InsertRecord(w);
          n = PutFieldN(w,n,'СУММАПРОЦЕНТЫ',100);
          n = PutFieldS(w,n,'НАЗВАНИЕ','Льгота 0%');
         EndChanging(w);
        finally
        end;
closeworkarea(w);


w = OpenWorkArea('ДЕТСАД_ДЕТИ','');
v = OpenWorkArea('ДЕТСАД_ЛЬГОТА','');
li = records(w);
ShowProgress(li,"Конвертируется картотека начисление дохода(льгота)");
for i=1..li do
     ss = GetFieldN(w,i,"ЛЬГОТА");
     SetFilter(v,"СУММАПРОЦЕНТЫ ="+Str(ss,2)+"");
     if records(v)<>0:
        д = GetFieldD(w,i,"ДАТА_Н");
        if д = 1.1.100: д = GetFieldD(w,i,"ДАТАР");  fi;
        г = GetRecordKey(v,1);
        BeginChanging(w);
         try
           n = PutFieldR(w,i,'ЛЬГОТАССЫЛОЧНАЯ',г);
           n = PutFieldR(w,i,'ЛЬГОТАПЕРИОД',г,д);
         EndChanging(w);
        finally
        end;
     fi;
ProgressPos(i);
od;
closeworkarea(w);
closeworkarea(v);
CloseProgress;





end;



Proc Button1_OnClick(Sender: String);
     Convert;
end;



Proc AfterOpen(Destroy: Logical);
ClearVariable(КОДЫ);
if КОДЫ = 0: InsertFrame(КОДЫ, 1); fi;
end;


Proc Button2_OnClick(Sender: String);

var РабочаяОбластьНачДох:              I;
var i:                                 I;
var КолвоЗаписей:                      I;
var НоваяДатаОперации:                 D;
var СтараяДатаОперации:                D;
var n:                                 I;
РабочаяОбластьНачДох = OpenWorkArea("детсад_начдох","");
КолвоЗаписей = Records(РабочаяОбластьНачДох);
for i=1..КолвоЗаписей do
       СтараяДатаОперации = GetFieldD(РабочаяОбластьНачДох,i,"датаопер");
       НоваяДатаОперации  = СтараяДатаОперации-1;
       BeginChanging(РабочаяОбластьНачДох);
         try
           n = PutFieldD(РабочаяОбластьНачДох,i,'датаопер',НоваяДатаОперации);
         EndChanging(РабочаяОбластьНачДох);
        finally
        end;
od;
CloseWorkArea(РабочаяОбластьНачДох);

end;


Proc Button3_OnClick(Sender: String);

--var ДатаГруппы: D;
--var Колво: Integer;
--var КолвоR: Integer;
--var i: I;

--Var W, RSub, N  :Integer;
--  W = OpenWorkArea("ДЕТСАД_ДЕТИ", "");
--  Try
--    If Records(W)>0:

--      Try
--       Колво = Records(W);
--        For N=1..Колво Do
--        RSub = OpenArray(W, N, "детсад_льгота", "Период");
--         КолвоR = Records(RSub);

--             for i=1..КолвоR do
--               ДатаГруппы=GetFieldD(RSub, i, "Период");
--             od;
--               GetFieldN(RSub,i,"датаопер");
--          ЛЬГОТА_ПЕРИОД[ДатаГруппы].Суммапроценты;
--        CloseWorkArea(RSub);
--        Od;
--      Finally
--      End;
--    Fi;
--  Finally
--    CloseWorkArea(W);
-- End;

end;


Конец
