Код: Выделить всё
!не зя использовать сильно длинные названия фейсов >10
#include UserReport.vih
#IFDEF UserNameFaceDop
#IFDEF UserLongName
VipInterface UserReport_#SetMenuUserR#UserNameFace#UserNameFaceDop Implements
#ELSE
VipInterface UserReport_#UserNameFace#UserNameFaceDop Implements
#ENDIF
#Ifdef ComponentVersion
F_UserReport::IUserReport
#Else
IUserReport
#EndIf
#ifdef Atl51
licensed (FREE)
#end
;
#IFDEF UserLongName
Interface UserReport_#SetMenuUserR#UserNameFace#UserNameFaceDop;
#ELSE
Interface UserReport_#UserNameFace#UserNameFaceDop;
#ENDIF
#ELSE // #IFDEF UserNameFaceDop
#IFDEF UserLongName
VipInterface UserReport_#SetMenuUserR#UserNameFace Implements
#ELSE
VipInterface UserReport_#UserNameFace Implements
#ENDIF
#Ifdef ComponentVersion
F_UserReport::IUserReport
#Else
IUserReport
#EndIf
#ifdef Atl51
licensed (FREE)
#end
;
#IFDEF UserLongName
Interface UserReport_#SetMenuUserR#UserNameFace;
#ELSE
Interface UserReport_#UserNameFace;
#ENDIF
#ENDIF
#IFDEF _USEGROUPONLY_
create view vaaa
As Select *
From TUNEGR,TuneGrUs
;
#ENDIF
!-------------------------------------------------------------------------------
// Запуск отчета на выполнение при выборе его из списка отчетов
procedure Run;
begin
! проверяем фильтр на права по группе
#DEFINE _USEGROUPONLYMES_
#IFDEF _USEGROUPONLY_
#include chkgroup.vpp
#ENDIF
#Ifdef _USEGROUPONLY2_
#include chkgroup2.vpp
#EndIf
#UNDEF _USEGROUPONLYMES_
#IFDEF UserNameFORM
#IFDEF UserNameFaceVar
RunForm('#UserNameFace',#UserNameFaceVar);
#ELSe
#IFDEF UserNameTEST
message('form #UserNameFace')
#endif
RunForm('#UserNameFace');
#ENDIF
#ELSE //#IFDEF UserNameFORM
#IFDEF UserNameFaceVar
#ifdef Atl51
#Ifdef UserComponent
RunInterface('#UserComponent::#UserNameFace',#UserNameFaceVar);
#Else
RunInterface('#UserNameFace',#UserNameFaceVar);
#ENDIF
#ELSE
RunInterface('#UserNameFace',#UserNameFaceVar);
#ENDIF
#ELSe //#IFDEF UserNameFaceVar
#ifdef Atl51
#ifdef UserNameFaceModal
#Ifdef UserComponent
RunInterface('#UserComponent::#UserNameFace');
#Else
RunInterface(#UserNameFace);
#ENDIF
#else
#Ifdef UserComponent
RunInterfaceNoModal('#UserComponent::#UserNameFace');
#Else
RunInterfaceNoModal(#UserNameFace);
#endif
#endif
#ELSe
RunAnyView('INTERFACE #UserNameFace',false);
// RunInterface(#UserNameFace);
#endif
#ENDIF
#ENDIF
if VisualizationActive Stopvisual('',0) ;
end;
!-------------------------------------------------------------------------------
// Наименование отчета в списке
function GetReportName: String;
begin
GetReportName := #UserNameWnd;
end;
!-------------------------------------------------------------------------------
// Наименования групп, в которые входит отчет
// Группа n+1 делается подчиненной группе n
// В данном случае будет иерархия:
// [+] Группа 1
// [+] Группа 2
// Отчет 1
function GetGroupName (Level : Word) : String;
begin
GetGroupName := '';
#ifDef UserMenuGroup
case Level of
1 : GetGroupName := #UserMenuGroup;
#Ifdef UserMenuGroup2
2 : GetGroupName := #UserMenuGroup2;
#EndIf
end;
#ENDIF
end;
!-------------------------------------------------------------------------------
// Приоритет отчета - сортировка внутри группы выполняется сначала
// по приоритету, а затем по наименованию
function GetPriority : Integer;
begin
GetPriority := 0;
end;
!-------------------------------------------------------------------------------
// ModuleID модулей, в которых будет виден отчет
// '*' - отчет будет виден в любом модуле
function VisibleInModule(Ind : Byte) : String;
begin
VisibleInModule := '';
#ifdef _ONLY_ADMIN_ //
if(Not PR_CurUserAdmin) exit; //
#endif
#Define _USEGROUPONLYMES2_
#IFDEF _USEGROUPONLY_
! message('1');
#include chkgroup.vpp
#ENDIF
#Ifdef _USEGROUPONLY2_
#include ChkGroup2.vpp
! message('2');
#EndIf
#UNDEF _USEGROUPONLYMES2_
case Ind of
1 : VisibleInModule := '#SetMenuUserR';
#IFDEF SetMenuUserR2
2 : VisibleInModule := '#SetMenuUserR2';
#ENDIF
#IFDEF SetMenuUserR3
3 : VisibleInModule := '#SetMenuUserR3';
#ENDIF
#IFDEF SetMenuUserR4
4 : VisibleInModule := '#SetMenuUserR4';
#ENDIF
#IFDEF SetMenuUserR5
5 : VisibleInModule := '#SetMenuUserR5';
#ENDIF
end;
end;
!-------------------------------------------------------------------------------
end.
Код: Выделить всё
#IFDEF _USEGROUPONLY_
//'GRUSERTN.WGRINSEDIT.BRUSERGR.USERS.XU$LOGINNAME' -
var wklgroup : boolean ;
wklgroup:=false
if getfirst TuneGrUs
where (( UserId == TuneGrUs.cUser ))=0
do {
// message(UserId+'1')
if getfirst TuneGr
where ((TuneGrUs.cGr == TuneGr.nRec))=0
{
if pos('#_USEGROUPONLY_',TuneGr.NAME)>0
{ wklgroup:=true
break ;
}
}
} while getnext TuneGrUs
where (( UserId == TuneGrUs.cUser ))=0 ;
if not wklgroup then
{
#IFDEF _USEGROUPONLYMES_
message('Пользователь не является членом группы #_USEGROUPONLY_'+chr(13)+
'Модуль "Настройка"-"=Настройка="-"Права доступа"' )
exit ;
#ENDIF
#IFDEF _USEGROUPONLYMES2_
exit ;
#ENDIF
}
#ENDIF
Код: Выделить всё
#IFDEF _USEGROUPONLY2_
//'GRUSERTN.WGRINSEDIT.BRUSERGR.USERS.XU$LOGINNAME' -
var wklgroup2 : boolean ;
wklgroup2:=false
if getfirst TuneGrUs
where (( UserId == TuneGrUs.cUser ))=0
do {
// message(UserId+'1')
if getfirst TuneGr
where ((TuneGrUs.cGr == TuneGr.nRec))=0
{
//if pos('#_USEGROUPONLY2_',TuneGr.NAME)>0
if InStr(LoCase(TuneGr.NAME),LoCase('#_USEGROUPONLY2_'))>0
{ wklgroup2:=true
break ;
}
}
} while getnext TuneGrUs
where (( UserId == TuneGrUs.cUser ))=0 ;
if not wklgroup2 then
{
#IFDEF _USEGROUPONLYMES_
message('Пользователь не является членом группы #_USEGROUPONLY2_'+chr(13)+
'Модуль "Настройка"-"=Настройка="-"Права доступа"' )
exit ;
#ENDIF
#IFDEF _USEGROUPONLYMES2_
exit ;
#ENDIF
}
#ENDIF
Здесь пример для вызова интерфейса без параметров.
Для всех define лучше делать undef (для модуля например в конце объявления группы отчетов)
Код: Выделить всё
// *********************** Зарплата ************************
// модуль
#define SetMenuUserR MenuZarp
//===================================
// папка в отчетах пользователя
#define UserMenuGroup 'Отчеты'
//===================================
//===================================
// заголовок
#define UserNameWnd 'Мои отчеты по заработной плате'
// наименование интерфейса / формы (раскомментировать строки с UserNameFORM
// запуск формы
// #define UserNameFORM
// определение параметров пример #define UserNameFaceVar 1,0,date(0,0,0),date(0,0,0),'',True
// для генерации повторного запуска интерфейса с другими параметрами требуется определить UserNameFaceDop
#define UserNameFace Zar_report
#make "RS_UsrReports.vip"
#undef UserNameWnd
// #undef UserNameFORM
#undef UserNameFace
//===================================
#undef UserMenuGroup
Детали по генерации списка отчетов смотрите в документации к Галактике в UserReport.pdf