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

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

ПутьВыгруз:S;
ДН:D=[Dat(1,1,Year(ToDay))];
ДК:D;
НаимПериод:S=["Произвольный"];

ДНОст:D=[Dat(1,1,Year(ToDay)-1)];
ДКОст:D=[Dat(1,1,Year(ToDay))];
НаимПериодОст:S=["Прошлый год"];


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

FlagАнТекст:L=[True];
var FlagАнТекст_:S=if(FlagАнТекст,"V","X");
FlagАнИсп:L=[True];
var FlagАнИсп_:S=if(FlagАнИсп,"V","X");
УслАн:S;
FlagСчИсп:L=[True];
var FlagСчИсп_:S=if(FlagСчИсп,"V","X");
УслСч:S;

var Buf[]:s;
--
--Процедуры и функции -------------
Proc ВыгрузкаАнВТекст;
var F:I;
var FName,Sgn:S;
var Flag:L;
 FName=ПутьВыгруз+"_Список аналитических признаков.sig";
 if ChooseFile(FName,"Сохранить...","Признаки (*.sig)|*.sig")=cmCancel: Exit; fi;
 if ExistFile(FName):
    if EnqOkCancel("Файл "+FName+" существует. Перезаписать ?",mtWarning)=cmCancel: Exit; fi;
 fi;
 RefreshAna;
 F=TextFileCreate(FName);
 Try
  if УслАн="": УслАн="*"; fi;
  for Sign Sgn=УслАн, Sort do
   Hint(Sgn+"...");
   Flag=True;
   if FlagАнИсп: Flag=SignUsed(Sgn); fi;
   if FlagАнТекст and Flag: Flag=SignToRecord(Sgn,False)=nil; fi;
   if Flag:
      TextFileAppendLn(F,Sgn);
      TextFileAppendLn(F," --");
      TextFileWriteLn(F,Name_A(Sgn));
   fi;
  od;
 Finally
  TextFileClose(F);
 end;
 Message("Список признаков успешно сохранен");
end;

Proc ВыгрузкаСчВТекст;
var F:I;
var FName,Acc:S;
var Flag:L;
 FName=ПутьВыгруз+"_Список счетов.lis";
 if ChooseFile(FName,"Сохранить...","Счета (*.lis)|*.lis")=cmCancel: Exit; fi;
 if ExistFile(FName):
    if EnqOkCancel("Файл "+FName+" существует. Перезаписать ?",mtWarning)=cmCancel: Exit; fi;
 fi;
 RefreshAna;
 F=TextFileCreate(FName);
 Try
  if УслСч="": УслСч="*"; fi;
  for Account Acc=УслСч, Sort do
   Hint(Acc+"...");
   Flag=True;
   if FlagСчИсп: Flag=AccountUsed(Acc); fi;
   if Flag:
      TextFileAppendLn(F,Acc);
      TextFileAppendLn(F,if(AccIsBalance(Acc)," 000 000"," !"));
      TextFileAppendLn(F," --");
      TextFileWriteLn(F,Name_S(Acc));
   fi;
  od;
 Finally
  TextFileClose(F);
 end;
 Message("Список счетов успешно сохранен");
end;


Func Оператор:S;
var n:i;
 ClearVariable(Buf);
 Buf[1]="И";
 Buf[2]="ИЛИ";
 Buf[3]="И ИСКЛЮЧИТЬ";
 n=Alternate("Выбор оператора",Buf,20,1,12);
 if n=1: ^"&";
   |n=2: ^"|";
   |n=3: ^"&~";
 fi;
 ^"";
end;

Func Объединить(Value1:s; Value2:s):S;
var z:s;
 if not Value1="": z=Оператор; else z=""; fi;
 ^Раб.Бюджет2005.Объединить(Value1,Value2,z);
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func ПутьВыгруз_OnEnter(FieldName: String; Iter: Integer): logical;
 Iter=ChooseFolder(ПутьВыгруз,"Укажите папку для выгрузки");
 Return False;
end;

Func НаимПериод_OnEnter(FieldName: String; Iter: Integer): logical;
var n:I;
var ДН_,ДК_:S;
 ClearVariable(Buf);
 Buf[1]="Вчера";
 Buf[2]="Текущая неделя";
 Buf[3]="Текущий месяц";
 Buf[4]="Прошлый месяц";
 Buf[5]="Текущий квартал";
 Buf[6]="Текущий год";
 Buf[7]="Прошлый год";
 Buf[8]="Произвольный";
 n=Alternate("Период",Buf,-1,1,12);
 if n=0: ^False; fi;
 if FieldName="НаимПериод": ДН_="ДН"; ДК_="ДК"; else ДН_="ДНОст"; ДК_="ДКОст"; fi;
 if n=1: PutVariableD(ДН_,ToDay-1);
         PutVariableD(ДК_,ToDay);
   |n=2: PutVariableD(ДН_,ToDay-(DayOfWeek(ToDay)-1));
         PutVariableD(ДК_,ToDay+(8-DayOfWeek(ToDay)));
   |n=3: PutVariableD(ДН_,Dat(1,Mon(ToDay),Year(ToDay)));
         PutVariableD(ДК_,if(Mon(ToDay)=12,Dat(1,1,Year(ToDay)+1),Dat(1,Mon(ToDay)+1,Year(ToDay))));
   |n=4: PutVariableD(ДН_,if(Mon(ToDay)=1,Dat(1,12,Year(ToDay)-1),Dat(1,Mon(ToDay)-1,Year(ToDay))));
         PutVariableD(ДК_,Dat(1,Mon(ToDay),Year(ToDay)));
   |n=5: if Mon(ToDay)>=1  and Mon(ToDay)<=3 : PutVariableD(ДН_,Dat(1,1, Year(ToDay))); PutVariableD(ДК_,Dat(1,4, Year(ToDay)));
           |Mon(ToDay)>=4  and Mon(ToDay)<=6 : PutVariableD(ДН_,Dat(1,4, Year(ToDay))); PutVariableD(ДК_,Dat(1,7, Year(ToDay)));
           |Mon(ToDay)>=7  and Mon(ToDay)<=9 : PutVariableD(ДН_,Dat(1,7, Year(ToDay))); PutVariableD(ДК_,Dat(1,10,Year(ToDay)));
           |Mon(ToDay)>=10 and Mon(ToDay)<=12: PutVariableD(ДН_,Dat(1,10,Year(ToDay))); PutVariableD(ДК_,Dat(1,1, Year(ToDay)+1));
         fi;
   |n=6: PutVariableD(ДН_,Dat(1,1,Year(ToDay)));
         PutVariableD(ДК_,Dat(1,1,Year(ToDay)+1));
   |n=7: PutVariableD(ДН_,Dat(1,1,Year(ToDay)-1));
         PutVariableD(ДК_,Dat(1,1,Year(ToDay)));
 fi;
 PutVariableS(FieldName,Buf[n]);
 Return False;
end;

Func Дата_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:d;
var Field:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 tmp=Calendar;
 if tmp=1.1.100: ^Cur; fi;
 PutVariableD(Field,tmp);
 Return Cur;
end;

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

Func FlagАнТекст_OnEnter(FieldName: String; Iter: Integer): logical;
 FlagАнТекст=not FlagАнТекст;
 Return False;
end;

Func FlagАнИсп_OnEnter(FieldName: String; Iter: Integer): logical;
 FlagАнИсп=not FlagАнИсп;
 Return False;
end;

Func УслАн_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var Ret:N;
 Ret=Saldo("{"+Value+"}",1.1.100);
 Return True;
end;

Func УслАн_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:s;
 Template.HideEditor(False);
 tmp=AnaElection("*",False,True);
 if tmp="": ^Cur; fi;
 if SubStr(tmp,Length(tmp),1)=".": tmp=tmp+"*"; fi;
 УслАн=Объединить(УслАн,tmp);
 Return Cur;
end;

Func FlagСчИсп_OnEnter(FieldName: String; Iter: Integer): logical;
 FlagСчИсп=not FlagСчИсп;
 Return False;
end;

Func УслСч_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var Ret:N;
 Ret=Saldo(Value,1.1.100);
 Return True;
end;

Func УслСч_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:s;
 Template.HideEditor(False);
 tmp=Раб.КБК.Список("","","СЧ9 ВД+? ИГ");
 if tmp="": ^Cur; fi;
 if SubStr(tmp,Length(tmp),1)=".": tmp=tmp+"*"; fi;
 УслСч=Объединить(УслСч,tmp);
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
--Обработчики событий шаблона -----
--

Конец
