Управление доступностью реквизитов записи справочника может потребоваться, например, для ускорения работы системы и минимизации трафика на 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 |