Получение контекста объектов в серверном расширении
Программист может использовать в серверном расширении контекст объектов Docsvision для доступа к данным системы.
Разработчику доступен пользовательский контекст объектов. Пользовательский контекст создаётся для каждого пользователя при его входе в Web-клиент. Права на работу с объектами соответствуют правам данного пользователя в системе Docsvision.
Получить контекст объектов можно используя функции сервиса ICurrentObjectContextProvider
:
-
GetOrCreateCurrentSessionContext
— возвращает контекст объектов текущего пользователя.
Не используйте метод GetOrCreateApplicationPoolSessionContext , это приведет к блокировкам потоков под нагрузкой.
|
Сервис ICurrentObjectContextProvider
может быть получен следующим способом:
private readonly ICurrentObjectContextProvider _currentObjectContextProvider;
public DocumentRegistrationController(ICurrentObjectContextProvider currentObjectContextProvider)
{
_currentObjectContextProvider = currentObjectContextProvider;
}
Web-клиент периодически закрывает неиспользуемые пользовательские сессии, из-за чего контекст объектов, сохранённый в статический объект класса (серверного расширения или контроллера), спустя время станет недействительным. Всегда получайте контекст объектов заново (с помощью функции GetOrCreateCurrentSessionContext
).
Примеры работы с контекстом объектов рассмотрены в Руководстве разработчика. Следующий код демонстрирует пример получения объектной модели карточки Документ.
Document document = objectContext.GetObject<Document>(Guid.Parse("9E11083F-D0EC-4F9F-8981-285498280BD9")); (1)
1 | В метод GetObject передаются тип объекта (Document) и идентификатор объекта (ID карточки). |