-- Шаблон создан мастером бланков
-- 28.01.2009 13:42:27
--
БланкСШаблоном "Статус обработки документов";

var ID:S;
var Level:I; --0 для всех, 1 для схемы, 2 для пользователя
var Ver:I;
var Cmnt:S;
var GUID:S;

var BufVar[]:S;
var BufTyp[]:S;
var BufVal[]:S;

var Alias:S;
var Schema:S;
var User:S;
var F:S;

var SelfCrd:S="РПО_СТАТУС_ДОК";
--
--Процедуры и функции -------------

--Proc УМЦ_OpenWA_РПО_СТАТУС_ДОК;
--  if not WA_РПО_СТАТУС_ДОК_open:
--     try
--       WA_РПО_СТАТУС_ДОК=OpenWorkArea('РПО_СТАТУС_ДОК','GUID_SUBTAB','1=0');
--       WA_РПО_СТАТУС_ДОК_open=true;
--     except
--       УМЦ=false;
--       WA_РПО_СТАТУС_ДОК_open=false;
--       message('Ошибка при работе с картотекой РПО_СТАТУС_ДОК',mtError);
--     end;
--  fi;
--end;
--Proc УМЦ_CloseWA_РПО_СТАТУС_ДОК;
--  if WA_РПО_СТАТУС_ДОК_open:
--     try
--       CloseWorkArea(WA_РПО_СТАТУС_ДОК);
--       WA_РПО_СТАТУС_ДОК_open=false;
--     except
--       УМЦ=false;
--       WA_РПО_СТАТУС_ДОК_open=false;
--       message('Ошибка при работе с картотекой РПО_СТАТУС_ДОК',mtError);
--     end;
--  fi;
--end;
--Proc УМЦ_SetFilterWA_РПО_СТАТУС_ДОК;
--var f:s;
--  f='RECCRD='+str(recordtointeger(current));
--  f=f+' AND CRD="'+up(SelfCrd)+'"';
--  f=f+' AND СТАТУС_КОД="УМЦ"';
----  f=f+' AND BLNCRD="'+up(SelfBln)+'"';
--  if WA_РПО_СТАТУС_ДОК_open:
--     SetFilter(WA_РПО_СТАТУС_ДОК,f);
--  fi;
--end;



Func Начать (aID:S; aLevel:I; aVer:I; aCmnt:S; aGUID:S):L;
 if not ExistsCardFile(SelfCrd): Message("Картотека настроек не доступна",mtError); ^False; fi;
 ID=aID;
 Level=aLevel;
 Ver=aVer;
 Cmnt=aCmnt;
 GUID=aGUID;
 ClearVariable(Раб.Настр.BufVar);
 ClearVariable(Раб.Настр.BufTyp);
 ClearVariable(Раб.Настр.BufVal);
 Alias=AliasName(SelfCrd);
 Schema=SchemaName(Alias);
 User=UserName(Alias);
 F="ID='"+ID+"' and Level="+Str(Level)+" and Ver="+Str(Ver);
 if Level=1: F=F+" and Schema='"+Schema+"'";
   |Level=2: F=F+" and User='"+User+"'";
 fi;
 ^True;
end;

Func Добавить(aVar:S; aTyp:S):L;
var z:i;
var Val:S;
var Var_:S;
 if ID="": Message("Инициализация не выполнена",mtError); ^False; fi;
 if Match(aVar,"*[*]*"):
    Var_=ExtractWord(1,aVar,"[")+ExtractWord(2,aVar,"]");
   else
    Var_=aVar;
 fi;
 if VariableExists(ID+"."+Var_):
    if aTyp="S": Val=GetVariableS(ID+"."+aVar);
      |aTyp="I": Val=Str(GetVariableI(ID+"."+aVar));
      |aTyp="N": Val=Str(GetVariableN(ID+"."+aVar),2);
      |aTyp="D": Val=DateToString(GetVariableD(ID+"."+aVar));
      |aTyp="R": Val=RecordToString(GetVariableR(ID+"."+aVar));
      |aTyp="L": Val=if(GetVariableL(ID+"."+aVar),"True","False");
    fi;
    z=SearchInArray(Раб.Настр.BufVar,aVar,True);
    if z=-1:
       z=InsertInArraySort(Раб.Настр.BufVar,aVar);
       InsertInArray(Раб.Настр.BufTyp,z,aTyp);
       InsertInArray(Раб.Настр.BufVal,z,Val);
      else
       BufTyp[z]=aTyp;
       BufVal[z]=Val;
    fi;
 fi;
 ^True;
end;

Func Сохранить:L;
var OWA,n,nr,OA,n2,z,zz:I;
 if ID="": Message("Инициализация не выполнена",mtError); ^False; fi;
 if not CanUpdate(SelfCrd) or not CanInsert(SelfCrd) or not CanDelete(SelfCrd): Message("У вас недостаточно прав на выполнение данной операции",mtError); ^False; fi;
 zz=LengthOfArray(Раб.Настр.BufVar);
 if zz=0: Message("Не данных для сохранения",mtError); ^False; fi;
 OWA=OpenWorkArea(SelfCrd,"",F);
 Try
  nr=Records(OWA);
  BeginChanging(OWA,False);
  Try
   if nr=0:
      n=InsertRecord(OWA);
     else
      n=nr;
   fi;
   n=PutFieldS(OWA,n,"ID",ID);
   n=PutFieldS(OWA,n,"SCHEMA",Schema);
   n=PutFieldS(OWA,n,"USER",User);
   n=PutFieldI(OWA,n,"LEVEL",Level);
   n=PutFieldI(OWA,n,"VER",Ver);
   n=PutFieldS(OWA,n,"CMNT",Cmnt);
   n=PutFieldS(OWA,n,"GUID",GUID);
   OA=OpenArray(OWA,n,"LINE","");
   DeleteAllRecords(OA);
   for z=1..zz do
    n2=InsertRecord(OA);
    n2=PutFieldS(OA,n2,"VAR",BufVar[z]);
    n2=PutFieldS(OA,n2,"TYP",BufTyp[z]);
    n2=PutFieldS(OA,n2,"VAL",BufVal[z]);
   od;
   EndChanging(OWA);
  Except
   CancelChanging(OWA);
   Raise;
  end;
 Finally
  CloseWorkArea(OWA);
  ID="";
 end;
 ^True;
end;

Func Загрузить(aVar:S; aTyp:S):S;
var OWA,OA,n,nr,n2,nr2,z:I;
var aVal,Var_,F_:S;
 if ID="": Message("Инициализация не выполнена",mtError); ^""; fi;
 OWA=OpenWorkArea(SelfCrd,"ver",F);
 Try
  nr=Records(OWA);
  if nr=0: 
     SetFilter(OWA,"ID='"+ID+"' and Ver="+Str(Ver));
     nr=Records(OWA);
     if nr=0:
        SetFilter(OWA,"ID='"+ID+"'");
     fi;
     nr=Records(OWA);
  fi;
  if nr=0: ^""; fi;
  n=nr;
  if aVar="": F_=""; else F_="VAR='"+aVar+"'"; fi;
  if not aTyp="": F_=Раб.Бюджет2005.Объединить(F_,"TYP='"+aTyp+"'"," and "); fi;
  if GUID=GetFieldS(OWA,n,"GUID"): ^GUID; fi;
  OA=OpenArray(OWA,n,"LINE","",F_);
  nr2=Records(OA);
  for n2=1..nr2 do
   aVar=GetFieldS(OA,n2,"VAR");
   aTyp=GetFieldS(OA,n2,"TYP");
   aVal=GetFieldS(OA,n2,"VAL");
   if Match(aVar,"*[*]*"):
      Var_=ExtractWord(1,aVar,"[")+ExtractWord(2,aVar,"]");
     else
      Var_=aVar;
   fi;
   if VariableExists(ID+"."+Var_):
      Try
       if aTyp="S": PutVariableS(ID+"."+aVar,aVal);
         |aTyp="I": PutVariableI(ID+"."+aVar,Int(aVal));
         |aTyp="N": PutVariableN(ID+"."+aVar,Round(aVal,2));
         |aTyp="D": PutVariableD(ID+"."+aVar,if(aVal="",1.1.100,StringToDate(aVal)));
         |aTyp="R": PutVariableR(ID+"."+aVar,if(aVal="",nil,StringToRecord(aVal)));
         |aTyp="L": PutVariableL(ID+"."+aVar,if(aVal="True",True,False));
       fi;
      Except
      end;
   fi;
  od;
 Finally
  CloseWorkArea(OWA);
 end;
 ^GUID;
end;

Func ВзятьЗначение(aVar:S):S;
var OWA,OA,nr:I;
var F_:S;
 if ID="": Message("Инициализация не выполнена",mtError); ^""; fi;
 if aVar="": Message("Введите имя параметра",mtError); ^""; fi;
 OWA=OpenWorkArea(SelfCrd,"ver",F);
 Try
  nr=Records(OWA);
  if nr=0: 
     SetFilter(OWA,"ID='"+ID+"' and Ver="+Str(Ver));
     nr=Records(OWA);
     if nr=0:
        SetFilter(OWA,"ID='"+ID+"'");
     fi;
     nr=Records(OWA);
  fi;
  if not nr=0:
     F_="Var='"+aVar+"'";
     OA=OpenArray(OWA,nr,"LINE","",F_);
     if not Records(OA)=0:
        ^GetFieldS(OA,1,"Val");
     fi;
  fi;
 Finally
  CloseWorkArea(OWA);
 end;
 ^"";
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
--Обработчики событий шаблона -----
--
Конец
