-- Шаблон создан мастером бланков
-- 06.06.2006 14:37:16
--
БланкСШаблоном [20.04.2006] "Добавление отсутствующих счетов и корреспонденций";

Упр:I;

var пп[]:i=$;
Жур[]:S;
Карт[]:S;
КартНаим[]:S;
КартПолеСчДеб[]:S;
КартПолеСчКре[]:S;
КартДопФ[]:S;

var A:S="+";
var D:S="-";

var StoreField:S;
var StoreJur:S;

var Buf[]:S;
var Buf1[]:S;
var Buf2[]:S;

var FKey[]:S;
var FСчДеб[]:S;
var FСчКре[]:S;

var BufCorr[]:S;

fСчДО:L=[True];
--
--Процедуры и функции -------------
Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(Жур);
 ClearVariable(Карт);
 ClearVariable(КартНаим);
 ClearVariable(КартПолеСчДеб);
 ClearVariable(КартПолеСчКре);
 ClearVariable(КартДопФ);
end;

Proc УдалитьПустыеСтроки;
var Iter:I;
 Iter=1;
 While Iter<=Упр do
  if Жур[Iter]="" and КартДопФ[Iter]="": DeleteFrame(Упр,Iter); else Iter=Iter+1; fi;
 od;
 if Упр<1: InsertFrame(Упр,Упр+1); fi;
end;

Func ВзятьКлючРаздела(vРаздел:S):Record;-- возвращает UKEY раздела
var OWA,i:i;
 OWA=OpenWorkArea('Table_Razd','','РАЗДЕЛ="'+vРаздел+'"');
 Try
  if Records(OWA)=0: ^nil; fi;
  ^GetRecordKey(OWA,1);
 Finally
  CloseWorkArea(OWA);
 end;
end;

Func СформПакетПолей (vFСчДеб:S; vFСчКре:S):I;
var n,nn,z:i;
var tmp:s;
 ClearVariable(FKey);
 ClearVariable(FСчДеб);
 ClearVariable(FСчКре);
 if Pos("@",vFСчДеб)=0: z=1; tmp=""; else z=2; tmp=ExtractWord(1,vFСчДеб,"@"); fi;
 FKey[z]=tmp;
 FСчДеб[z]=vFСчДеб;
 if Pos("@",vFСчКре)=0: z=1; tmp=""; else z=2; tmp=ExtractWord(1,vFСчКре,"@"); fi;
 FKey[z]=tmp;
 FСчКре[z]=vFСчКре;
 ^LengthOfArray(FKey);
end;

Proc АнализСчетовДО(aСч:S; aРежим:S);
var БК_,ВД_,КОСГУ_,СчБО_:S;
 БК_="";
 СчБО_="";
 if Раб.Бюджет2005.MatchMask(aСч,"???.????.???????.???.1.206.*|???.????.???????.???.2.206.*|???.????.???????.???.1.208.*|???.????.???????.???.2.208.*|???.????.???????.???.?.302.*"):
   БК_=Раб.Бюджет2005.ВзятьКодСчета(aСч,"КР","БК",False);
   ВД_=Раб.Бюджет2005.ВзятьКодСчета(aСч,"КР","ВД",False);
   КОСГУ_=Раб.Бюджет2005.ВзятьКодСчета(aСч,"КР","Ан",False);
   КОСГУ_=Раб.Бюджет2005.Соотв_Ан_КОСГУ(Раб.Бюджет2005.ВзятьКодСчета(aСч,"КР","СИНТ",False),КОСГУ_);
  |Match(aСч,"???.????.???????.???.1.304.05.*"):
   БК_=Раб.Бюджет2005.ВзятьКодСчета(aСч,"КР","БК",False);
   ВД_=Раб.Бюджет2005.ВзятьКодСчета(aСч,"КР","ВД",False);
   КОСГУ_=Раб.Бюджет2005.ВзятьКодСчета(aСч,"КР","КОСГУ",False);
   if not БК_="" and not ВД_="" and not КОСГУ_="":
      СчБО_=БК_+".1.501.13."+КОСГУ_;
   fi;
 fi;
 if not БК_="" and not ВД_="" and not КОСГУ_="":
    if aРежим="Счета":
       Раб.КСА.Добавить(СчБО_);
       Раб.КСА.Добавить(БК_+"."+ВД_+".502.11."+КОСГУ_);
       Раб.КСА.Добавить(БК_+"."+ВД_+".502.12."+КОСГУ_);
      else
       if not СчБО_="": Раб.КСА.ДобавитьКорр(СчБО_,БК_+"."+ВД_+".502.11."+КОСГУ_,"СЧ9"); fi;
       Раб.КСА.ДобавитьКорр(БК_+"."+ВД_+".502.11."+КОСГУ_,БК_+"."+ВД_+".502.12."+КОСГУ_,"СЧ9");
    fi;
 fi;
end;

Func АнализСчетовПодТаб(vOWA:I; vN:i; vFСчДеб:S; vFСчКре:S):L;
var OA,nr,n,w,ww:I;
var Struct,Field,ValueField,tmp:S;
var СчДеб,СчКре:S;
 if not vFСчДеб="": Struct=ExtractWord(1,vFСчДеб,"@");
   |not vFСчКре="": Struct=ExtractWord(1,vFСчКре,"@");
   |True: ^False;
 fi;
 OA=OpenArray(vOWA,vN,Struct,"");
  nr=Records(OA);
  for n=1..nr do
   if not vFСчДеб="": 
      СчДеб=GetFieldS(OA,n,ExtractWord(2,vFСчДеб,"@"));
      Раб.КСА.Добавить(СчДеб);
      if fСчДО: АнализСчетовДО(СчДеб,"Счета"); fi;
   fi;
   if not vFСчКре="":
      СчКре=GetFieldS(OA,n,ExtractWord(2,vFСчКре,"@"));
      Раб.КСА.Добавить(СчКре);
      if fСчДО: АнализСчетовДО(СчКре,"Счета"); fi;
   fi;
  od;
 CloseWorkArea(OA);
 ^True;
end;

Proc АнализСчетов (Iter:I);
var OWA,n,nr,p,f,ff:I;
var hint_,Ф:S;
var tСчДеб,tСчКре:S;
var dd:d;
var nn:N;
var ss:s;
 if Карт[Iter]="":
    OpenTextJur(Жур[Iter]);
    Try
     While not GetTransFromTextJur(dd,nn,ss,nn,ss,tСчДеб,tСчКре,Buf,ss) do
      Раб.КСА.Добавить(tСчДеб);
      Раб.КСА.Добавить(tСчКре);
     od;
    Finally
     CloseTextJur;
    end;
   else
    ff=СформПакетПолей(КартПолеСчДеб[Iter],КартПолеСчКре[Iter]);
    if Карт[Iter]="Table_Oper":
       Hint_="Анализ журнала "+Жур[Iter]+if(КартДопФ[Iter]="",""," ("+КартДопФ[Iter]+")")+"...";
       Ф=Раб.Бюджет2005.Объединить(КартДопФ[Iter],"Раздел="+RecordToString(ВзятьКлючРаздела(Жур[Iter]))," and ");
      else
       Hint_="Анализ картотеки "+Карт[Iter]+if(КартДопФ[Iter]="",""," ("+КартДопФ[Iter]+")")+"...";
       Ф=КартДопФ[Iter];
    fi;
    OWA=OpenWorkArea(Карт[Iter],"",Ф);
    Try
     nr=Records(OWA);
     for n=1..nr do
      p=Int(n*100/nr);
      Hint(Hint_+Str(p)+"%");
      for f=1..ff do
       if FKey[f]="":
          if not FСчДеб[f]="": 
             tСчДеб=GetFieldS(OWA,n,FСчДеб[f]);
             Раб.КСА.Добавить(tСчДеб);
             if fСчДО: АнализСчетовДО(tСчДеб,"Счета"); fi;
          fi;
          if not FСчКре[f]="": 
             tСчКре=GetFieldS(OWA,n,FСчКре[f]);
             Раб.КСА.Добавить(tСчКре);
             if fСчДО: АнализСчетовДО(tСчКре,"Счета"); fi;
          fi;
         else
          АнализСчетовПодТаб(OWA,n,FСчДеб[f],FСчКре[f]);
       fi; --if FKey[f]="":
      od; --for f=1..ff do
     od; --for n=1..nr do
    Finally
     CloseWorkArea(OWA);
    end;
 fi;
end;

Func АнализКоррПодТаб(vOWA:I; vN:i; vFСчДеб:S; vFСчКре:S; vСчДеб:S; vСчКре:S):L;
var OA,nr,n:I;
var Struct,СчДеб,СчКре:S;
 if not vFСчДеб="": Struct=ExtractWord(1,vFСчДеб,"@");
   |not vFСчКре="": Struct=ExtractWord(1,vFСчКре,"@");
   |True: ^False;
 fi;
 OA=OpenArray(vOWA,vN,Struct,"");
  nr=Records(OA);
  for n=1..nr do
   if vСчДеб="" and not vFСчДеб="": СчДеб=GetFieldS(OA,n,ExtractWord(2,vFСчДеб,"@")); else СчДеб=vСчДеб; fi;
   if vСчКре="" and not vFСчКре="": СчКре=GetFieldS(OA,n,ExtractWord(2,vFСчКре,"@")); else СчКре=vСчКре; fi;
   Раб.КСА.ДобавитьКорр(СчДеб,СчКре,"СЧ9");
   if fСчДО: 
      АнализСчетовДО(СчДеб,"Корр");
      АнализСчетовДО(СчКре,"Корр");
   fi;
  od;
 CloseWorkArea(OA);
 ^True;
end;

Proc АнализКорр (Iter:I);
var OWA,n,nr,p,f,ff:I;
var hint_,Ф,СчДеб,СчКре:S;
var tСчДеб,tСчКре:S;
var dd:d;
var nn:N;
var ss:s;
 if Карт[Iter]="":
    OpenTextJur(Жур[Iter]);
    Try
     While not GetTransFromTextJur(dd,nn,ss,nn,ss,tСчДеб,tСчКре,Buf,ss) do
      Раб.КСА.ДобавитьКорр(tСчДеб,tСчКре,"СЧ9");
     od;
    Finally
     CloseTextJur;
    end;
   else
    ff=СформПакетПолей(КартПолеСчДеб[Iter],КартПолеСчКре[Iter]);
    if Карт[Iter]="Table_Oper":
       Hint_="Анализ журнала "+Жур[Iter]+if(КартДопФ[Iter]="",""," ("+КартДопФ[Iter]+")")+"...";
       Ф=Раб.Бюджет2005.Объединить(КартДопФ[Iter],"Раздел="+RecordToString(ВзятьКлючРаздела(Жур[Iter]))," and ");
      else
       Hint_="Анализ картотеки "+Карт[Iter]+if(КартДопФ[Iter]="",""," ("+КартДопФ[Iter]+")")+"...";
       Ф=КартДопФ[Iter];
    fi;
    OWA=OpenWorkArea(Карт[Iter],"",Ф);
    Try
     nr=Records(OWA);
     for n=1..nr do
      p=Int(n*100/nr);
      Hint(Hint_+Str(p)+"%");
      for f=1..ff do
       if FKey[f]="":
          if not FСчДеб[f]="": СчДеб=GetFieldS(OWA,n,FСчДеб[f]); else СчДеб=""; fi;
          if not FСчКре[f]="": СчКре=GetFieldS(OWA,n,FСчКре[f]); else СчКре=""; fi;
          Раб.КСА.ДобавитьКорр(СчДеб,СчКре,"СЧ9");
          АнализСчетовДО(СчДеб,"Корр");
          АнализСчетовДО(СчКре,"Корр");
         else
          АнализКоррПодТаб(OWA,n,FСчДеб[f],FСчКре[f],СчДеб,СчКре);
       fi; --if FKey[f]="":
      od; --for f=1..ff do
     od; --for n=1..nr do
    Finally
     CloseWorkArea(OWA);
    end;
 fi;
end;

Func ВыбратьКартПоле(vКарт:S):S;
var n,nn,z,zz:i;
var tmp:S;
 ClearVariable(Buf);
 ClearVariable(Buf1);
 ClearVariable(Buf2);
 if not vКарт="TABLE_OPER":
    nn=GetCardFileFields(vКарт,Buf,mtlSUBTAB);
    for n=1..nn do
     zz=GetCardFileFields(vКарт+"@"+Buf[n],Buf1,mtlSTRING);
     InsertInArray(Buf2,1,Buf[n]+"@"+" --"+GetCardFileFieldComment(vКарт,Buf[n]));
     for z=1..zz do
      InsertInArray(Buf2,1,Buf[n]+"@"+Buf1[z]+" --"+GetCardFileFieldComment(vКарт+"@"+Buf[n],Buf1[z]));
     od;
    od;
    SortArray(Buf2);
    nn=GetCardFileFields(vКарт,Buf,mtlSTRING);
    for n=1..nn do
     Buf[n]=Buf[n]+" --"+GetCardFileFieldComment(vКарт,Buf[n]);
    od;
    CopyArray(Buf2,Buf,1,nn+1);
    z=0;
    tmp=ExtractWord(2,StoreField,":");
    if ExtractWord(1,StoreField,":")=vКарт and not tmp="":
       zz=LengthOfArray(Buf);
       for z=1..zz do
        if tmp=SubStr(Buf[z],1,Pos(" --",Buf[z])-1): Break; fi;
       od;
       if z>zz: z=0; fi;
    fi;
   else
    Buf[1]="DEBET --Счет дебета";
    Buf[2]="CREDIT --Счет кредита";
 fi;
 n=AlternateTree("Список полей",Buf,-1,z,0,"@","Картотека","Наименование",-1,False);
 if n=0: ^""; fi;
 tmp=SubStr(Buf[n],1,Pos(" --",Buf[n])-1);
 StoreField=vКарт+":"+tmp;
 ^tmp;
end;

Func ПроверитьДопФ (vКарт:S; vФ:S):L;
var OWA:I;
 OWA=OpenWorkArea(vКарт,"",vФ);
 Try
 Finally
  CloseWorkArea(OWA);
 end;
 ^True;
end;

Func Проверить:L;
var Iter:I;
 УдалитьПустыеСтроки;
 Try
  for Iter=1..Упр do
   if Жур[Iter]="": Message("Выберите журнал",mtError); Template.Field="Жур"; Template.Frame=Iter; ^False; fi;
   if not Карт[Iter]="":
--      if КартПолеСчДеб[Iter]="": Message("Выберите поле счета дебета",mtError); Template.Field="КартПолеСчДеб"; Template.Frame=Iter; ^False; fi;
--      if КартПолеСчКре[Iter]="": Message("Выберите поле счета кредита",mtError); Template.Field="КартПолеСчКре"; Template.Frame=Iter; ^False; fi;
      if not ПроверитьДопФ (Карт[Iter],КартДопФ[Iter]): ^False; fi;
   fi;
  od;
 Except
  Template.Field="КартДопФ";
  Template.Frame=Iter;
  Raise;
 end;
 Template.Object="btnВыпол";
 ^True;
end;

Proc Расчет;
var Iter:I;
 OpenBlank("РАБ.ВСПОМ.ИНИЦИАЛИЗАЦИЯ",True);
 ShowProgress(Упр,"Анализ счетов....");
 Раб.КСА.Начать;
 Try
  for Iter=1..Упр do
   ProgressPos(Iter);
   if not КартПолеСчДеб[Iter]="" and not КартПолеСчКре[Iter]="":
      АнализСчетов(Iter);
     else
      Trace("Обработка журнала "+Жур[Iter]+" пропущена");
      if КартПолеСчДеб[Iter]="": Trace("Не указано поле счета дебета"); fi;
      if КартПолеСчКре[Iter]="": Trace("Не указано поле счета кредита"); fi;
   fi;
  od;
 Finally
  CloseProgress;
  if Раб.КСА.Закончить(True): Message("Добавление новых счетов закончено"); fi;
 end;
 ShowProgress(Упр,"Анализ корреспонденций счетов....");
 Раб.КСА.НачатьКорр;
 Try
  for Iter=1..Упр do
   ProgressPos(Iter);
   АнализКорр(Iter);
  od;
 Finally
  CloseProgress;
  if Раб.КСА.ЗакончитьКорр(True): Message("Добавление корреспонденций счетов закончено"); fi;
 end;
 Message("Операция завершена");
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func A_OnEnter(FieldName: String; Iter: Integer): logical;
 InsertFrame(Упр,Iter+1);
 Return False;
end;

Func D_OnEnter(FieldName: String; Iter: Integer): logical;
 DeleteFrame(Упр,Iter);
 if Упр<1: InsertFrame(Упр,1); fi;
 Return False;
end;

Func Жур_OnEnter(FieldName: String; Iter: Integer): logical;
var j,jj,n:i;
var tmp,ТипЖур,СчДеб,СчКре:S;
 ClearVariable(Buf);
 ClearVariable(Buf2);
 jj=JournalsCount;
 for j=0..jj do
  tmp=JournalName(j);
  ТипЖур=JournalType(tmp);
  if ТипЖур="КАРТ": tmp=JournalCardfile(tmp); fi;
  if SearchInArray(Buf,tmp)=-1 and not tmp="":
     InsertInArray(Buf,LengthOfArray(Buf)+1,tmp);
     InsertInArray(Buf2,LengthOfArray(Buf2)+1,ТипЖур);
  fi;
 od;
 jj=LengthOfArray(Buf2);
 for j=1..jj do
  if Buf2[j]="РАЗД": Buf[j]=Buf[j]+" --Раздел табличного журнала";
    |Buf2[j]="КАРТ": Buf[j]=Buf[j]+" --Журнал картотека";
    |Buf2[j]="ТЕКСТ": Buf[j]=Buf[j]+" --Текстовый журнал";
    |True: tmp=" --";
  fi;
 od;
 if jj=0: Message("В данном плане бухгалтерии не описан ни один журнал");  ^False; fi;
 j=Alternate("Список журналов",Buf,-1,SearchInArray(Buf,StoreJur),12);
 if j=0: ^False; fi;
 Жур[Iter]=SubStr(Buf[j],1,Pos(" --",Buf[j])-1);
 StoreJur=Buf[j];
 Раб.ИмяПолеКарт.Инициализация;
 if Buf2[j]="РАЗД": 
    Карт[Iter]="TABLE_OPER"; 
    КартНаим[Iter]="Раздел табличного журнала"; 
    КартПолеСчДеб[Iter]="DEBET"; 
    КартПолеСчКре[Iter]="CREDIT";
   |Buf2[j]="КАРТ" :
    Карт[Iter]=Жур[Iter]; 
    n=GetCardFileNames(Карт[Iter],Buf2,False,True,"");
    КартНаим[Iter]=SubStr(Buf2[j],Pos(" --",Buf2[j])+4,255);
    СчДеб=Раб.ИмяПолеКарт.ИмяПоля(Карт[Iter],"СчДеб");
    СчКре=Раб.ИмяПолеКарт.ИмяПоля(Карт[Iter],"СчКре");
    n=SearchInArray(Карт,Карт[Iter]);
    if n=-1 or (n=Iter and SearchInArray(Карт,Карт[Iter],False,Iter+1)=-1):
       jj=WordsCount(СчДеб,"|");
       for j=1..jj do
        if j>1: 
           Iter=Iter+1; 
           InsertFrame(Упр,Iter); 
           Карт[Iter]=Карт[Iter-1];
           Жур[Iter]=Жур[Iter-1];
           КартНаим[Iter]=КартНаим[Iter-1];
        fi;
        КартПолеСчДеб[Iter]=ExtractWord(j,СчДеб,"|");
        КартПолеСчКре[Iter]=ExtractWord(j,СчКре,"|");
       od;
    fi;
   |Buf2[j]="ТЕКСТ": 
    Карт[Iter]=""; 
    КартНаим[Iter]="Текстовый журнал";
    КартПолеСчДеб[Iter]="*";
    КартПолеСчКре[Iter]="*";
   |True: 
    Карт[Iter]=""; 
    КартНаим[Iter]="";
    КартПолеСчДеб[Iter]="";
    КартПолеСчКре[Iter]="";
 fi;
 КартДопФ[Iter]="";
 Return False;
end;

Proc Жур_OnExit(FieldName: String; Iter: Integer);
 Карт[Iter]="";
 КартНаим[Iter]="";
end;

Func КартПолеСчДеб_onEnter(FieldName: String; Iter: Integer): logical;
var tmp,sub1,sub2:S;
var l1,l2:I;
 if Жур[Iter]="": Message("Выберите журнал",mtError); Template.Field="Жур"; Template.Frame=Iter; ^False; fi;
 if Карт[Iter]="": ^False; fi;
 tmp=ВыбратьКартПоле(Карт[Iter]);
 if tmp="": ^False; fi;
 if КартПолеСчКре[Iter]=tmp: Message("Поле введено уже как счет кредита",mtError); Template.Field="КартПолеСчКре"; Template.Frame=Iter; ^False; fi;
 if not КартПолеСчКре[Iter]="":
    if Pos("@",tmp)=0: sub1=""; else sub1=ExtractWord(1,tmp,"@"); fi;
    if Pos("@",КартПолеСчКре[Iter])=0: sub2=""; else sub2=ExtractWord(1,КартПолеСчКре[Iter],"@"); fi;
    if not sub1="" and not sub2="" and not sub1=sub2: Message("Указаны поля в разных подтаблицах",mtError); ^False; fi;
 fi;
 КартПолеСчДеб[Iter]=tmp;
 Return False;
end;

Func КартПолеСчКре_onEnter(FieldName: String; Iter: Integer): logical;
var tmp,sub1,sub2:S;
var l1,l2:I;
 if Жур[Iter]="": Message("Выберите журнал",mtError); Template.Field="Жур"; Template.Frame=Iter; ^False; fi;
 if Карт[Iter]="": ^False; fi;
 tmp=ВыбратьКартПоле(Карт[Iter]);
 if tmp="": ^False; fi;
 if КартПолеСчДеб[Iter]=tmp: Message("Поле введено уже как счет дебета",mtError); Template.Field="КартПолеСчДеб"; Template.Frame=Iter; ^False; fi;
 if not КартПолеСчДеб[Iter]="":
    if Pos("@",tmp)=0: sub1=""; else sub1=ExtractWord(1,tmp,"@"); fi;
    if Pos("@",КартПолеСчДеб[Iter])=0: sub2=""; else sub2=ExtractWord(1,КартПолеСчДеб[Iter],"@"); fi;
    if not sub1="" and not sub2="" and not sub1=sub2: Message("Указаны поля в разных подтаблицах",mtError); ^False; fi;
 fi;
 КартПолеСчКре[Iter]=tmp;
 Return False;
end;

Func КартДопФ_OnEnter(FieldName: String; Iter: Integer): logical;
 if Жур[Iter]="": Message("Выберите журнал",mtError); Template.Field="Жур"; Template.Frame=Iter; ^False; fi;
 if Карт[Iter]="": ^False; fi;
 Return True;
end;

Func КартДопФ_OnVerify(FieldName: String; Iter: Integer; Value: S):L;
 Return ПроверитьДопФ (Карт[Iter],Value);
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnЗагрузить_OnClick(Sender: String);
var j,jj,n,w,ww:i;
var tmp,ТипЖур,СчДеб,СчКре:S;
 ClearVariable(Buf);
 ClearVariable(Buf2);
 jj=JournalsCount;
 for j=0..jj do
  tmp=JournalName(j);
  ТипЖур=JournalType(tmp);
  if ТипЖур="КАРТ": tmp=JournalCardfile(tmp); fi;
  if SearchInArray(Buf,tmp)=-1 and not tmp="":
     InsertInArray(Buf,LengthOfArray(Buf)+1,tmp);
     InsertInArray(Buf2,LengthOfArray(Buf2)+1,ТипЖур);
  fi;
 od;
 jj=LengthOfArray(Buf2);
 for j=1..jj do
  if Buf2[j]="РАЗД": Buf[j]=Buf[j]+" --Раздел табличного журнала";
    |Buf2[j]="КАРТ": Buf[j]=Buf[j]+" --Журнал картотека";
    |Buf2[j]="ТЕКСТ": Buf[j]=Buf[j]+" --Текстовый журнал";
    |True: tmp=" --";
  fi;
 od;
 if jj=0: Message("В данном плане бухгалтерии не описан ни один журнал");  Exit; fi;
 if EnqOkCancel("Текущий список будет очищен, продолжить?",mtWarning)=cmCancel: Exit; fi;
 Очистить;
 Раб.ИмяПолеКарт.Инициализация;
 for j=1..jj do
  InsertFrame(Упр,Упр+1);
  Жур[Упр]=SubStr(Buf[j],1,Pos(" --",Buf[j])-1);
  if Buf2[j]="РАЗД":
     Карт[Упр]="TABLE_OPER";
     КартНаим[Упр]="Раздел табличного журнала";
     КартПолеСчДеб[Упр]="DEBET";
     КартПолеСчКре[Упр]="CREDIT";
    |Buf2[j]="КАРТ" :
     Карт[Упр]=Жур[Упр];
     n=GetCardFileNames(Карт[Упр],Buf1,False,True,"");
     КартНаим[Упр]=SubStr(Buf1[n],Pos(" --",Buf1[n])+4,255);
     СчДеб=Раб.ИмяПолеКарт.ИмяПоля(Карт[Упр],"СчДеб");
     СчКре=Раб.ИмяПолеКарт.ИмяПоля(Карт[Упр],"СчКре");
     ww=WordsCount(СчДеб,"|");
     for w=1..ww do
      if w>1:
         InsertFrame(Упр,Упр+1);
         Карт[Упр]=Карт[Упр-1];
         Жур[Упр]=Жур[Упр-1];
         КартНаим[Упр]=КартНаим[Упр-1];
      fi;
      КартПолеСчДеб[Упр]=ExtractWord(w,СчДеб,"|");
      КартПолеСчКре[Упр]=ExtractWord(w,СчКре,"|");
     od;
    |Buf2[j]="ТЕКСТ":
     Карт[Упр]="";
     КартНаим[Упр]="Текстовый журнал";
     КартПолеСчДеб[Упр]="*";
     КартПолеСчКре[Упр]="*";
    |True:
     Карт[Упр]="";
     КартНаим[Упр]="";
     КартПолеСчДеб[Упр]="";
     КартПолеСчКре[Упр]="";
  fi;
 od;
end;

Proc btnВыпол_OnClick(Sender: String);
 if not Проверить: Exit; fi;
 Расчет;
end;

Proc btnОчистить_OnClick(Sender: String);
 if EnqOkCancel("Таблица журналов будет очищена, продолжить ?",mtWarning)=cmCancel: Exit; fi;
 Очистить;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
--Обработчики событий шаблона -----
--

Конец
