Получение контекста объектов в серверном расширении

Программист может использовать в серверном расширении контекст объектов 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 карточки).