Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Управление доступностью реквизитов записи справочника может потребоваться, например, для ускорения работы системы и минимизации трафика на SQL-сервере (если реквизит недоступен, его значение не считывается с сервера).

Управлять доступностью реквизитов можно только при закрытом наборе данных. При обращении к форме-карточке справочника все реквизиты становятся доступны. В этом случае настройте доступность полей в карточке справочника.

Разработчик не может управлять доступностью системных реквизитов: ИД, Код, Наименование записи, Состояние, Дата начала действия записи, Дата окончания действия записи.

Пример 1. С помощью свойства Enabled заблокировать доступ к реквизиту Работник. Отобразить ошибку доступа.

 

// Получить запись справочника TST.

   Reference = References.TST.GetComponent()

// Отключить доступность реквизита Employee (Работник).

   Reference.Requisites('Работник').Enabled = FALSE

// Открыть набор данных справочника.

   Reference.Open

// Найти запись с кодом KOD5.

   Reference.Locate(SYSREQ_CODE; 'KOD5')

// Получить значение реквизита Employee (Работник).

   Employee = Reference.Работник

// Закрыть набор данных справочника.

   Reference.Close

Для оптимизации трафика с SQL-сервера можно использовать свойство Preloaded объекта IRequisite, например, установить его при создании объекта IReference с помощью функции CreateReference в параметре RequisitesFilter. В параметре задается список реквизитов главного раздела, которые предварительно считываются с сервера при открытии набора данных. Ограничение не распространяется на системные реквизиты.

Свойство Preloaded определяет только список реквизитов, для которых считываются значения, а Enabled указывает на возможность работы с реквизитом.

Пример 2. Обратиться к реквизиту, не указанному в свойстве Preloaded.

 

// Получить справочник TST со списком загружаемых реквизитов.

   Reference = CreateReference('TST'; ArrayOf(SYSREQ_NAME))

// Открыть набор данных справочника и найти запись с наименованием TEST3.

   Reference.Open()

   Reference.Locate(SYSREQ_NAME; 'TEST3')

// Получить значение реквизита Employee (Работник).

   Employee = Reference.Работник

// Закрыть набор данных справочника.

   Reference.Close

В результате при обращении к реквизиту Работник его значение считывается с SQL-сервера, и ошибка доступа не появится. Это свойство рекомендуется использовать, если заранее известен список реквизитов записи справочника. Рекомендация обусловлена тем, что при обращении к реквизиту, не указанному в свойстве Preloaded, выполняется отдельный SQL-запрос. Этот запрос может замедлить работу системы.

© Компания DIRECTUM, 2018 Сообщество пользователей DIRECTUM
.navbar > a:hover { background: #FFD73B; }