Фильтрация реквизита типа «Справочник»
Фильтр можно добавить с помощью метода setFilter() у реквизита в клиентском API веб-доступа, в который можно передать выражение фильтрации:
// При выборе работника отобразить только работников, // относящихся к нашей организации с кодом 123418. WA.CR.form.requisites['Работник'].setFilter('[НашаОрг2] = 123418');
|
Получение фильтра через прикладной сценарий и установка на реквизите
Для построения выражения фильтрации можно использовать не только значения реквизитов карточки, но и данные с сервера, например, из прикладного сценария.
// Указать имя сценария, который возвращает список ИД записей справочника, // доступных текущему пользователю.
|
Фильтрация ведущих-ведомых реквизитов
// Если указан страна, то при выборе города // отображать только города выбранной страны. Иначе отображать все города. WA.CR.form.requisites.Страна.bind('change', function () {
|
Фильтрация списка записей справочника, открытого через быстрый запуск
В XML-файле веб-модуля нужно добавить выражение фильтрации в атрибуте filter:
<!-- В справочнике "Работники" отображать только утвержденные действующие записи --> <RunTree>
|
Фильтрация списка записей справочника
Веб-доступ подхватывает событие «Набор данных.Открытие», в котором можно наложить фильтр на справочник с помощью AddWhere. |
Фильтрация значений параметра типового маршрута
Требуется создать функцию setFilterOnAskableParams, которая вызывает сценарий UserGroupFilter, возвращающий фильтр. Фильтр нужно применить к запрашиваемому параметру. Функцию setFilterOnAskableParams вызовем в событии AfterShow блока №16 типового маршрута по согласованию договоров. В результате в запрашиваемом параметре «Юрист» будет применяться фильтр, который вернул сценарий UserGroupFilter. function setFilterOnAskableParams(param) {
var afterShowParams = { При получении значений для фильтра всегда выполняется синхронный запрос, чтобы выбор записей не начался до получения фильтра.
|
Фильтрация записей справочника на клиенте
Веб-доступ подхватывает событие «До выбора», в котором можно реализовать фильтрацию на реквизите типа «Запись справочника». |
Фильтрация при выборе значения в строке табличной части
Фильтр в строках табличной части устанавливается аналогично реквизитам карточки с помощью метода setFilter(): ' При выборе организации отобразить только организацию с ИД 65421. WA.CR.form.controls.tables.STcxGrid3.rows[num].requisites['ОрганизацияТ3'].setFilter('[ИД] = 65421') Если фильтр должен зависеть от значений реквизитов строки, то необходимо устанавливать фильтры для каждой строки:
' В реквизите ОрганизацияТ3 во всех строках таблицы установить фильтр по стране. ' Страна находится в реквизите строки текущей таблицы. $.each(WA.CR.formcontrols.tables.STcxGrid3.rows.toArray(), function (row) { При этом фильтр необходимо обновлять при каждом изменении ведущего реквизита в строке.
|
Открытие отфильтрованного справочника из дерева папок
Фильтр зависит только от реквизитов справочника: В XML-файле веб-модуля нужно добавить выражение фильтрации в атрибуте filter:
<!-- В справочнике "Работники" отображать только утвержденные действующие записи --> <RunTree> Фильтр зависит от информации о текущем пользователе (правах, вхождении в группы пользователей, нахождении на определенном уровне иерархии в орг. структуре): Веб-доступ подхватывает событие «Набор данных.Открытие», в котором можно наложить фильтр на справочник с помощью AddWhere. |
Открытие отфильтрованного справочника в модальном окне
WA.CMP.dialogs.ReferenceGridDialog.createAndShow({ // Задать выражение фильтрации. Необходимо разработать сценарий для открытия справочника Поручения в виде списка с фильтром по контролеру – текущему пользователю. Контролер поручения хранится в реквизите Контролер (Работник). Если у текущего пользователя нет поручений или нет работников, связанных с текущим пользователем, то выдавать предупреждение.
// Сценарий для получения работников по текущему пользователю. Params = Sender.Params
// Вызов сценария и открытие справочника с фильтрацией в модальном окне. var scriptName = 'GetEmployees';
// Вызов сценария и открытие справочника с фильтрацией в новой вкладке. var scriptName = 'GetEmployees'; |
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |