-- Шаблон создан мастером бланков
-- 06.05.2006 14:24:00
--
БланкСШаблоном "Загрузка табличных журналов";

Упр:I;

ПутьЗагруз:S;

var Текст1:S="...";

var A:S="+";
var D:S="-";
var пп[]:i=$;
Статус[]:L;
var Статус_[]:S=if(Статус[$],"V","X");
НаимЖурТекст[]:S;
НаимЖурТабл[]:S;
hЖур:S;

var Buf[]:S;

var Run:L;

--
--Процедуры и функции -------------
Proc Очистить;
 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;
end;

Func Проверить:L;
var Iter:I;
 for Iter=1..Упр do
  if Статус[Iter]:
     if НаимЖурТабл[Iter]="": Message("Укажите табличный журнал",mtError); Template.Field="НаимЖурТабл"; Template.Frame=Iter; ^False; fi;
  fi;
 od;
 ^True;
end;

Func ПрочитатьСписокЖур(vName:S):L;
var F,n:I;
var tmp:S;
 if not ExistFile(ПутьЗагруз+"\"+vName) and not ExistFile(ПутьЗагруз+"\$new.jur"): Message("Указанная папка не содержит список загружаемых журналов",mtError); Template.Field="ПутьЗагруз"; ^False; fi;
 ClearVariable(Buf);
 n=0;
 if ExistFile(ПутьЗагруз+"\$new.jur"): 
    n=n+1;
    Buf[n]="$new.jur"; 
 fi;
 F=TextFileOpenRead(ПутьЗагруз+"\"+vName);
 Try
  While not TextFileEndOfFile(F) do
   tmp=TextFileReadLn(F);
   if not tmp="":
      n=n+1;
      Buf[n]=tmp;
   fi;
  od;
 Finally
  TextFileClose(F);
 end;
 ^True;
end;

Proc Выполнить (vПутьЗагруз:S);
 Run=True;
 ПутьЗагруз=vПутьЗагруз;
 OpenBlank("СЛУЖЕБНЫЕ.ЗАГРУЗКА_ЖУР");
end;
--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func ПутьЗагруз_OnEnter(FieldName: String; Iter: Integer): logical;
 Iter=ChooseFolder(ПутьЗагруз,"Укажите папку для загрузки");
 Return False;
end;

Func Текст1_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Установка загрузки на весь список";
 Buf[2]="Снять загрузку для всего списка";
 n=Alternate("Выбор режима",Buf,-1,1,12);
 if n=0: ^False; fi;
 УдалитьПустыеСтроки;
 for Iter=1..Упр do
  Статус[Iter]=(n=1);
 od;
 Return False;
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;
 Статус[Iter]=not Статус[Iter];
 Return False;
end;

Func НаимЖурТекст_OnEnter(FieldName: String; Iter: Integer): logical;
var n,z:i;
var tmp:S;
 if ПутьЗагруз="": Message("Укажите папку для загрузки",mtError); Template.Field="ПутьЗагруз"; ^False; fi;
 if not ChooseFile(tmp,"Текстовые журналы","Текстовые журналы(*.jur)|*.jur")=cmOk: ^False; fi;
 tmp=ExtractWord(WordsCount(tmp,"\"),tmp,"\");
 z=SearchInArray(НаимЖурТекст,tmp);
 if not z=-1 and not Iter=z: Message("Повторный ввод журнала "+tmp,mtWarning); ^False; fi;
 Статус[Iter]=True;
 НаимЖурТекст[Iter]=tmp;
 tmp=SubStr(tmp,1,Length(tmp)-4);
 if JournalType(tmp)="РАЗД": НаимЖурТабл[Iter]=tmp; else НаимЖурТабл[Iter]=""; fi;
 Return False;
end;

Func НаимЖурТабл_OnEnter(FieldName: String; Iter: Integer): logical;
var j,jj,n:i;
var tmp:S;
 ClearVariable(Buf);
 jj=JournalsCount;
 n=0;
 for j=0..jj do
  tmp=JournalName(j);
  if JournalType(tmp)="РАЗД":
     n=n+1;
     Buf[n]=tmp;
  fi;
 od;
 if n=0: Message("В данном плане бухгалтерии не описан ни один табличный журнал");  ^False; fi;
 n=Alternate("Список табличных журналов",Buf,-1,SearchInArray(Buf,hЖур),12);
 if n=0: ^False; fi;
 Статус[Iter]=True;
 НаимЖурТабл[Iter]=Buf[n];
 hЖур=НаимЖурТабл[Iter];
 Return False;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnЗагрСписокЖур_OnClick(Sender: String);
var n,nn:i;
var tmp:S;
 if ПутьЗагруз="": Message("Укажите папку для загрузки",mtError); Template.Field="ПутьЗагруз"; Exit; fi;
 if not Run:
    if EnqOkCancel("Текущий список будет очищен, продолжить ?")=cmCancel: Exit; fi;
 fi;
 Очистить;
 if not ПрочитатьСписокЖур("_Список журналов.txt"): Exit; fi;
 nn=LengthOfArray(Buf);
 if nn=0: Message("Список журналов пуст");  Exit; fi;
 for n=1..nn do
  InsertFrame(Упр,Упр+1);
  Статус[Упр]=True;
  НаимЖурТекст[Упр]=Buf[n];
  tmp=SubStr(НаимЖурТекст[Упр],1,Length(НаимЖурТекст[Упр])-4);
  if JournalType(tmp)="РАЗД": НаимЖурТабл[Упр]=tmp; else НаимЖурТабл[Упр]=""; fi;
 od;
end;

Proc btnЗагрузка_OnClick(Sender: String);
var Iter:I;
var FlagDel:L;
 if ПутьЗагруз="": Message("Укажите папку для загрузки",mtError); Template.Field="ПутьЗагруз"; Exit; fi;
 УдалитьПустыеСтроки;
 if НаимЖурТекст[1]="": Message("Выберите текстовый журнал",mtError); Template.Field="НаимЖурТекст"; Template.Frame=1; Exit; fi;
 if not Проверить: Exit; fi;
 ShowProgress(Упр,"Загрузка журналов...");
 Try
  for Iter=1..Упр do
   ProgressPos(Iter);
   if Статус[Iter]:
      LoadJurTab(НаимЖурТабл[Iter],ПутьЗагруз+"\"+НаимЖурТекст[Iter]);
   fi;
  od;
 Finally
  CloseProgress;
 end;
 Message("Загрузка завершена");
end;

Proc btnОчистить_OnClick(Sender: String);
 Очистить;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc AfterOpen(Destroy: Logical);
 if Run:
    btnЗагрСписокЖур_OnClick("");
    Run=False;
 fi;
end;
--Обработчики событий шаблона -----
--




Конец


