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_1».
Добавьте ссылки на системную сборку «Metabase».
Sub UserProc;
Var
MB: IMetabase;
MS: IMetabaseSecurity;
MP: IMetabasePolicy;
User: ISecuritySubject;
LogonHP: ILogonHoursPolicy;
LH: ILogonHours;
d1, d2, d3, d4: DateTime;
i: Integer;
Begin
MB := MetabaseClass.Active;
MS := MB.Security;
MP := MS.Policy;
User := MS.ResolveName("User_1");
LogonHP := MP.LogonHoursPolicy(User);
d1 := DateTime.ComposeTimeOfDay(0, 0, 0, 0);
d2 := DateTime.ComposeTimeOfDay(9, 0, 0, 0);
d3 := DateTime.ComposeTimeOfDay(18, 0, 0, 0);
d4 := DateTime.ComposeTimeOfDay(23, 59, 0, 0);
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;
End Sub UserProc;
После выполнения примера будут изменены параметры доступа по дням недели для пользователя «User_1». Доступ под этим пользователем будет возможен с понедельника по пятницу, с 9 до 18 часов.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Добавьте ссылки на системную сборку «ForeSystem».
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;
Begin
MB := Params.Metabase;
MS := MB.Security;
MP := MS.Policy;
User := MS.ResolveName("User_1");
LogonHP := MP.LogonHoursPolicy[User];
d1 := DateTime.Parse("0, 0, 0, 0, 0");
d2 := DateTime.Parse("9, 0, 0, 0, 0");
d3 := DateTime.Parse("18, 0, 0, 0, 0");
d4 := DateTime.Parse("23, 59, 0, 0, 0");
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();
End Sub;
См. также: