ILogonHours.SetPeriodAccess

Синтаксис

SetPeriodAccess(Begin_: DateTime; End_: DateTime; Grant: Boolean);

SetPeriodAccess(@Begin: System.DateTime; @End: System.DateTime; Grant: boolean);

Параметры

Begin_. Начальное время временного промежутка;

End_. Конечное время временного промежутка;

Grant. Параметр, определяющий возможность доступа в указанном временном промежутке. Если в качестве значения параметра передается значение True, то доступ в данном временном промежутке будет разрешен. Если в качестве значения передается False, то доступ будет запрещен.

Описание

Метод SetPeriodAccess устанавливает параметры доступа пользователя для указанного промежутка времени.

Комментарии

Временной промежуток формируется путем указания в параметрах Begin_ и End_ начального и конечного времени соответственно. Параметр Grant определяет возможность доступа в данном временном промежутке.

В методе SetPeriodAccess промежуток времени задается с точностью до секунд, в поле миллисекунд должно быть указано значение «0».

Пример

Для выполнения примера убедитесь, что в менеджере безопасности содержится пользователь «USER».

Добавьте ссылки на системные сборки: Metabase, ForeSystem (для примера на Fore.NET).

Sub UserProc;
Var
    MB: IMetabase;
    MS: IMetabaseSecurity;
    MP: IMetabasePolicy;
    User: ISecuritySubject;
    LogonHP: ILogonHoursPolicy;
    LH: ILogonHours;
    d1, d2, d3, d4: DateTime;
    i: Integer;
    Lic: Object;
Begin
    MB := MetabaseClass.Active;
    
// Получим лицензию для возможности работы с менеджером безопасности
    Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
    MS := MB.Security;
    MP := MS.Policy;
    
// Получим параметры пользователя
    User := MS.ResolveName("USER");
    
// Добавим расписание для разрешения доступа
    LogonHP := MP.LogonHoursPolicy(User);
    d1 := DateTime.ComposeTimeOfDay(
0000);
    d2 := DateTime.ComposeTimeOfDay(
9000);
    d3 := DateTime.ComposeTimeOfDay(
18000);
    d4 := DateTime.ComposeTimeOfDay(
235900);
    
For i := 1 To 5 Do
        LH := LogonHP.WeekDayHours(i 
As CalendarDayOfWeek);
        LH.SetPeriodAccess(d1, d2, 
False);
        LH.SetPeriodAccess(d2, d3, 
True);
        LH.SetPeriodAccess(d3, d4, 
False);
        LogonHP.WeekDayHours(i 
As CalendarDayOfWeek) := LH;
    
End For;
    LH := LogonHP.WeekDayHours(CalendarDayOfWeek.Saturday); 
// суббота
    LH.SetPeriodAccess(d1, d4, False);
    LogonHP.WeekDayHours(CalendarDayOfWeek.Saturday) := LH;

    LH := LogonHP.WeekDayHours(CalendarDayOfWeek.Sunday); // воскресенье
    LH.SetPeriodAccess(d1, d4, 
False);
    LogonHP.WeekDayHours(CalendarDayOfWeek.Sunday) := LH;
    
// Сохраним изменения
    MS.Apply;
    
// Освободим лицензию
    Lic := Null;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MS: IMetabaseSecurity;
    MP: IMetabasePolicy;
    User: ISecuritySubject;
    LogonHP: ILogonHoursPolicy;
    LH: ILogonHours;
    d1, d2, d3, d4: DateTime;
    i: Integer;
    Lic: Object;
Begin
    MB := Params.Metabase;
    
// Получим лицензию для возможности работы с менеджером безопасности
    Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
    MS := MB.Security;
    MP := MS.Policy;
    
// Получим параметры пользователя
    User := MS.ResolveName("USER");
    
// Добавим расписание для разрешения доступа
    LogonHP := MP.LogonHoursPolicy[User];
    d1 := DateTime.Parse(
"0:00:00");
    d2 := DateTime.Parse(
"9:00:00");
    d3 := DateTime.Parse(
"18:00:00");
    d4 := DateTime.Parse(
"23:59:59");
    
For i := 1 To 5 Do
        LH := LogonHP.WeekDayHours[i 
As CalendarDayOfWeek];
        LH.SetPeriodAccess(d1, d2, 
False);
        LH.SetPeriodAccess(d2, d3, 
True);
        LH.SetPeriodAccess(d3, d4, 
False);
        LogonHP.WeekDayHours[i 
As CalendarDayOfWeek] := LH;
    
End For;
    LH := LogonHP.WeekDayHours[CalendarDayOfWeek.dowSaturday]; 
// суббота
    LH.SetPeriodAccess(d1, d4, False);
    LogonHP.WeekDayHours[CalendarDayOfWeek.dowSaturday] := LH;
    LH := LogonHP.WeekDayHours[CalendarDayOfWeek.dowSunday]; 
// воскресенье
    LH.SetPeriodAccess(d1, d4, False);
    LogonHP.WeekDayHours[CalendarDayOfWeek.dowSunday] := LH;
    
// Сохраним изменения
    MS.Apply();
    
// Освободим лицензию
    Lic := Null;
End Sub;

После выполнения примера будут изменены параметры доступа по дням недели для пользователя USER. Доступ под этим пользователем будет возможен с понедельника по пятницу с 9 до 18 часов.

См. также:

ILogonHours