-- Шаблон создан мастером бланков
-- 13.10.2008 13:28:29
--
БланкСШаблоном "Конвертация расходных расписаний (добавление признака л/с)";

var Crd:S;
var Field:S;
var Field2:S;

var Упр:I;
var Key[]:S;
var isРБС[]:L;
var recБанк[]:Record;
var Наим[]:S;
var ЧД[]:I;
var ПризнЛС[]:S;

var Buf[]:S;

var Ver:I=2;
--
--Процедуры и функции -------------
Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(Key);
 ClearVariable(isРБС);
 ClearVariable(recБанк);
 ClearVariable(Наим);
 ClearVariable(ЧД);
 ClearVariable(ПризнЛС);
end;
--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func Crd_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="РПО_РАСХОД_РАСПИСН_ВХ --Поступившие расходные расписания";
 Buf[2]="РПО_РАСХОД_РАСПИСН --Исходящие расходные расписания";
 n=Alternate("Выберите тип расходного расписания",Buf,-1,1,12);
 if n=1: Crd="РПО_РАСХОД_РАСПИСН_ВХ"; Field="ПБС_Банк"; Field2="ПБС_ПризнЛС";
   |n=2: Crd="РПО_РАСХОД_РАСПИСН"; Field="РБС_Банк"; Field2="РБС_ПризнЛС";
 fi;
 Очистить;
 Return False;
end;

Func recБанк_OnEnter(FieldName: String; Iter: Integer): logical;
 if not recБанк[Iter]=nil:
    OpenBlank("ИНФО.БАНКСЧЕТА",True,recБанк[Iter]);
 fi;
 Return False;
end;

Func ЧД_OnEnter(FieldName: String; Iter: Integer): logical;
 OpenCardFile(Crd,"--"+Field+"="+recordToString(recБанк[Iter]));
 Return False;
end;

Func ПризнЛС_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:s;
 tmp=AnaElection("ЛС.*");
 if not tmp="":
    ПризнЛС[Iter]=tmp;
 fi;
 Return False;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnПодготов_OnClick(Sender: String);
var OWA,n,nr,z:I;
var Rec: Record;
var Flag: L;
 if Crd="" or Field="" or Field2="": Message("Выберите картотеку",mtError); Template.Field="Crd"; Exit; fi;
 Очистить;
 OWA=OpenWorkArea(Crd,"","Версия<"+Str(Ver));
 Try
  nr=Records(OWA);
  ShowProgress(nr,"Сбор данных....");
  for n=1..nr do
   ProgressPos(n);
   Rec=GetFieldR(OWA,n,Field);
   if Crd="РПО_РАСХОД_РАСПИСН_ВХ":
      Flag=GetFieldL(OWA,n,"РБС_ПБС");
     else
      Flag=True;
   fi;

   z=SearchInArray(Key,if(Flag,"1","0")+"#"+RecordToString(Rec),True);
   if z=-1:
      z=InsertInArraySort(Key,if(Flag,"1","0")+"#"+RecordToString(Rec));
      InsertFrame(Упр,z);
      isРБС[z]=Flag;
      recБанк[z]=Rec;
      if not recБанк[z]=nil:
	 Наим[z]=GetFieldS(OWA,n,Field+".РПО_КОММЕНТ");
      fi;
   fi;
   ЧД[z]=ЧД[z]+1;
  od;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
end;

Proc btnКонв_OnClick(Sender: String);
var OWA,OA,n,nr,n2,nr2,Iter,z:I;
var Rec: Record;
var tmp,tmp2: S;
var Flag:L;
 if Упр=0: Message("Выполните подготовку конвертации",mtWarning); Template.Object="btnПодготов"; Exit; fi;
 for Iter=1..Упр do
  if ПризнЛС[Iter]="": Message("Заполните признак лицевого счета",mtError); Template.Field="ПризнЛС"; Template.Frame=Iter; Exit; fi;
 od;
 OWA=OpenWorkArea(Crd,"","Версия<"+Str(Ver));
 Try
  nr=Records(OWA);
  if nr=0: Exit; fi;
  ShowProgress(nr,"Конвертация....");
  OA=OpenArray(OWA,1,"ПОЗИЦИИ","");
  BeginChanging(OWA);
  Try
   for n=1..nr do
    ProgressPos(n);
    Rec=GetFieldR(OWA,n,Field);
    if Crd="РПО_РАСХОД_РАСПИСН_ВХ":
       Flag=GetFieldL(OWA,n,"РБС_ПБС");
      else
       Flag=True;
    fi;
    z=SearchInArray(Key,if(Flag,"1","0")+"#"+RecordToString(Rec),True);
    if z=-1:
       CancelChanging(OWA);
       Message("Выполните подготовку конвертации",mtWarning);
       Exit;
    fi;
    n=PutFieldS(OWA,n,Field2,ПризнЛС[z]);
    n=PutFieldI(OWA,n,"Версия",Ver);
    nr2=Records(OA);
    for n2=1..nr2 do
     tmp=GetFieldS(OA,n2,"ПРИЗН");
     tmp2=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(tmp," ","ЛС.*","");
     if not tmp=tmp2:
	n=PutFieldS(OA,n2,"ПРИЗН",tmp2);
     fi;
    od;
   od;
   EndChanging(OWA);
  Except
   CancelChanging(OWA);
   Raise;
  end;
 Finally
  CloseWorkArea(OWA);
  CloseProgress;
 end;
 OWA=OpenWorkArea("РПО_СТАТУС","","ID='"+Crd+"'");
 Try
  BeginChanging(OWA);
  Try
   DeleteAllRecords(OWA);
   n=InsertRecord(OWA);
   n=PutFieldS(OWA,n,"ID",Crd);
   n=PutFieldI(OWA,n,"Val_I",Ver);
   EndChanging(OWA);
  Except
   CancelChanging(OWA);
   Raise;
  end;
 Finally
  CloseWorkArea(OWA);
 end;
 Message("Конвертация завершена");
 Очистить;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
--Обработчики событий шаблона -----
--

Конец
