-- Шаблон создан мастером бланков
-- 05.05.2006 11:57:06
--
БланкСШаблоном "Загрузка данных бюджетного учета";

Uses Служебные.Загрузка_Карт,Служебные.Загрузка_Жур,Раб.Бюджет2005,Раб.КБК;

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

var Текст1:S="Выполнить";
var Текст2:S="Выполнить";
var Текст3:S="Выполнить";
var Текст4:S="Выполнить";

FSNameАн:S;
FDNameАн:S;
УслАн:S;

FSNameСч:S;
FDNameСч:S;
УслСч:S;

var Buf[]:s;
var Buf2[]:s;
var BufАн[]:s;
var BufСч[]:s;
--
--Процедуры и функции -------------
Func ЧитатьФайлВМассив(FName:S; FG:L):I;
var F,n,w,ww:i;
var tmp,Sgn,Name:S;
 ClearVariable(Buf);
 if not ExistFile(FName): Message("Файл "+FName+" не найден",mtError); ^-1; fi;
 F=TextFileOpenRead(FName);
 Try
  n=0;
  While not TextFileEndOfFile(F) do
   tmp=TextFileReadLn(F);
   tmp=Trim(tmp);
   Hint("Чтение из файл: "+tmp);
   if not tmp="" and not Pos("--",tmp)=1:
      if FG:
	 Sgn=Trim(SubStr(tmp,1,Pos("--",tmp)-1));
	 Sgn=ExtractWord(1,Sgn," "); --обрезаем строки баланса в счетах
	 Name=Trim(SubStr(tmp,Pos("--",tmp)+2,255));
	 ww=WordsCount(Sgn,".");
	 for w=1..ww do
	  tmp=if(ww=1," ","")+ExtractWords(1,w,Sgn,".")+if(w=ww,"",".")+" --"+if(w=ww,Name,"");
	  AddInArray(Buf,True,False,tmp);
	 od;
	else
	 AddInArray(Buf,True,False,tmp);
      fi;
   fi;
  od;
 Finally
  TextFileClose(F);
 end;
 ^LengthOfArray(Buf);
end;

Proc ЗагрузкаАнИзТекста;
var F,n,nn,z,t,hh,mm,ss:I;
var FName,Sgn,Name,FTmp:S;
var Flag:L;
 if FSNameАн="": Message("Выберите файл источник",mtError); Template.Field="FSNameАн"; Exit; fi;
 if FDNameАн="": Message("Выберите файл приемник",mtError); Template.Field="FDNameАн"; Exit; fi;
 if not ExistFile(FSNameАн): Message("Файл источник не найден",mtError); Template.Field="FSNameАн"; Exit; fi;
 if not ExistFile(FDNameАн): Message("Файл источник не найден",mtError); Template.Field="FDNameАн"; Exit; fi;
 nn=ЧитатьФайлВМассив(FSNameАн,False);
 if nn=0: Message("Файл источник не содержит информации",mtError); Template.Field="FSNameАн"; Exit; fi;
 RefreshAna;
 FTmp=PlanVar("Cache")+GetGuid;
 CopyFile(FDNameАн,FTmp);
 F=TextFileOpenWrite(FTmp);
 ShowProgress(nn,"Добавление признаков....");
 t=Time;
 hh=Int(Trunc(t/3600));
 mm=Int(Trunc((t-(hh*3600))/60));
 ss=Int(Trunc(t-(hh*3600)-(mm*60)));
 Try
  TextFileGotoEnd(F);
  z=0;
  if УслАн="": УслАн="*"; fi;
  for n=1..nn do
   ProgressPos(n);
   Sgn=Trim(SubStr(Buf[n],1,Pos("--",Buf[n])-1));
   Name=Trim(SubStr(Buf[n],Pos("--",Buf[n])+2,255));
   if Name_A(Sgn)=" " and Раб.Бюджет2005.MatchMask(Sgn,УслАн):
      z=z+1;
      if z=1:
	 TextFileWriteLn(F,"--Добавлено "+DateToString(ToDay)+" "+Str(hh)+":"+Str(mm)+":"+Str(ss)+if(UserName(AliasName("РПО_БЮДЖ_КЛАСС"))="",""," Пользователь: "+UserName(AliasName("РПО_БЮДЖ_КЛАСС"))),True);
      fi;
      TextFileAppendLn(F,Sgn);
      TextFileAppendLn(F," --");
      TextFileWriteLn(F,Name);
   fi;
  od;
 Finally
  TextFileClose(F);
  CloseProgress;
 end;
 CopyFile(FDNameАн,FDNameАн+".bak");
 CopyFile(FTmp,FDNameАн);
 if ExistFile(FTmp): DeleteFile(FTmp); fi;
 Message("Загрузка завершена. Добавлено признаков: "+Str(z)+" из "+Str(nn));
end;

Proc ЗагрузкаСчИзТекста;
var F,n,nn,z,t,hh,mm,ss:I;
var FName,Acc,Name,Bal,FTmp:S;
var Flag:L;
 if FSNameСч="": Message("Выберите файл источник",mtError); Template.Field="FSNameСч"; Exit; fi;
 if FDNameСч="": Message("Выберите файл приемник",mtError); Template.Field="FDNameСч"; Exit; fi;
 if not ExistFile(FSNameСч): Message("Файл источник не найден",mtError); Template.Field="FSNameСч"; Exit; fi;
 if not ExistFile(FDNameСч): Message("Файл источник не найден",mtError); Template.Field="FDNameСч"; Exit; fi;
 nn=ЧитатьФайлВМассив(FSNameСч,False);
 if nn=0: Message("Файл источник не содержит информации",mtError); Template.Field="FSNameСч"; Exit; fi;
 RefreshAna;
 FTmp=PlanVar("Cache")+GetGuid;
 CopyFile(FDNameСч,FTmp);
 F=TextFileOpenWrite(FTmp);
 ShowProgress(nn,"Добавление счетов....");
 t=Time;
 hh=Int(Trunc(t/3600));
 mm=Int(Trunc((t-(hh*3600))/60));
 ss=Int(Trunc(t-(hh*3600)-(mm*60)));
 Try
  TextFileGotoEnd(F);
  z=0;
  if УслСч="": УслСч="*"; fi;
  for n=1..nn do
   ProgressPos(n);
   Acc=Trim(SubStr(Buf[n],1,Pos("--",Buf[n])-1));
   Bal=ExtractWords(2,2,Acc," ");
   Acc=ExtractWord(1,Acc," ");
   Name=Trim(SubStr(Buf[n],Pos("--",Buf[n])+2,255));
   if Name_S(Acc)=" " and Раб.Бюджет2005.MatchMask(Acc,УслСч):
      z=z+1;
      if z=1:
	 TextFileWriteLn(F,"СЧЕТА --Добавлено "+DateToString(ToDay)+" "+Str(hh)+":"+Str(mm)+":"+Str(ss)+if(UserName(AliasName("РПО_БЮДЖ_КЛАСС"))="",""," Пользователь: "+UserName(AliasName("РПО_БЮДЖ_КЛАСС"))),True);
      fi;
      TextFileAppendLn(F,Acc);
      TextFileAppendLn(F," "+Bal);
      TextFileAppendLn(F," --");
      TextFileWriteLn(F,Name);
   fi;
  od;
 Finally
  TextFileClose(F);
  CloseProgress;
 end;
 CopyFile(FDNameСч,FDNameСч+".bak");
 CopyFile(FTmp,FDNameСч);
 if ExistFile(FTmp): DeleteFile(FTmp); fi;
 Message("Загрузка завершена. Добавлено счетов: "+Str(z)+" из "+Str(nn));
end;

--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func ПутьЗагруз_OnEnter(FieldName: String; Iter: Integer): logical;
 Iter=ChooseFolder(ПутьЗагруз,"Укажите папку для загрузки");
 Return False;
end;

Func Текст_OnEnter(FieldName: String; Iter: Integer): logical;
 if ПутьЗагруз="" and (FieldName="Текст1" or FieldName="Текст2"): Message("Укажите папку с выгруженными данными",mtError); Template.Field="ПутьЗагруз"; ^False; fi;
 if FieldName="Текст1": 
    Служебные.Загрузка_Карт.Выполнить(ПутьЗагруз);
   |FieldName="Текст2": 
    Служебные.Загрузка_Жур.Выполнить(ПутьЗагруз);
   |FieldName="Текст3": 
    ЗагрузкаАнИзТекста;
   |FieldName="Текст4":
    ЗагрузкаСчИзТекста;
 fi;
 Return False;
end;

Func FSName_OnEnter(FieldName: String; Iter: Integer): logical;
var FName,tmp:S;
 FName=GetVariableS(FieldName);
 if FName="": FName=ПутьЗагруз+"\"; fi;
 if FieldName="FSNameАн": tmp="Признаки (*.sig)|*.sig";
   |FieldName="FSNameСч": tmp="Счета (*.lis)|*.lis";
 fi;
 if ChooseFile(FName,"Загрузить...",tmp)=cmCancel: ^False; fi;
 PutVariableS(FieldName,FName);
 if ЧитатьФайлВМассив(FName,True)=-1: ^False; fi;
 if FieldName="FSNameАн": CopyArray(Buf,BufАн);
   |FieldName="FSNameСч": CopyArray(Buf,BufСч);
 fi;
 Return False;
end;


Func УслАн_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var Ret:N;
 if not Pos("~",Value)=0: Message("Не допустимый символ '~' в условие отбора",mtError); ^False;
   |not Pos("&",Value)=0: Message("Не допустимый символ '&' в условие отбора",mtError); ^False;
 fi;
 Return True;
end;

Func УслАн_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:s;
var n:i;
 Template.HideEditor(False);
 if FSNameАн="": Message("Выберите файл источник",mtError); Template.Field="FSNameАн"; ^Cur; fi;
 if LengthOfArray(BufАн)=0: Message("Файл источник не содержит информации",mtError); Template.Field="FSNameАн"; ^Cur; fi;
 n=AlternateTree("Список признаков",BufАн,-1,1,0,".","Признак","Наименование",-1,True);
 if n=0: ^Cur; fi;
 tmp=Trim(SubStr(BufАн[n],1,Pos("--",BufАн[n])-1));
 if SubStr(tmp,Length(tmp),1)=".": tmp=tmp+"*"; fi;
 УслАн=Раб.Бюджет2005.Объединить(УслАн,tmp,"|");
 Return Cur;
end;

Func FDNameАн_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,FName:S;
 FName=Раб.Бюджет2005.Контроль2Слэш(PlanVar("Бух")+"\Аналитика\ДопАналитика.Sig");
 if ChooseFile(FName,"Выберите файл...","Признаки (*.sig)|*.sig")=cmCancel: ^False; fi;
 FDNameАн=FName;
 Return False;
end;


Func УслСч_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var Ret:N;
 if not Pos("~",Value)=0: Message("Не допустимый символ '~' в условие отбора",mtError); ^False;
   |not Pos("&",Value)=0: Message("Не допустимый символ '&' в условие отбора",mtError); ^False;
 fi;
 Return True;
end;

Func УслСч_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:s;
var n:i;
 Template.HideEditor(False);
 if FSNameСч="": Message("Выберите файл источник",mtError); Template.Field="FSNameСч"; ^Cur; fi;
 if LengthOfArray(BufСч)=0: Message("Файл источник не содержит информации",mtError); Template.Field="FSNameСч"; ^Cur; fi;
 n=AlternateTree("Список счетов",BufСч,-1,1,0,".","Счет","Наименование",-1,True);
 if n=0: ^Cur; fi;
 tmp=Trim(SubStr(BufСч[n],1,Pos("--",BufСч[n])-1));
 if SubStr(tmp,Length(tmp),1)=".": tmp=tmp+"*"; fi;
 УслСч=Раб.Бюджет2005.Объединить(УслСч,tmp,"|");
 Return Cur;
end;

Func FDNameСч_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,FName:S;
 FName=Раб.Бюджет2005.Контроль2Слэш(PlanVar("Бух")+"\Счета\Дополнительные.lis");
 if ChooseFile(FName,"Выберите файл...","Счета (*.lis)|*.lis")=cmCancel: ^False; fi;
 FDNameСч=FName;
 Return False;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
--Обработчики событий шаблона -----
--
Конец
