Есть задача сделать предварительную фильтрацию для LookUpControl'а с MultiSelectWindow. Смысл в том чтоб получить список сотрудников, которые являются инициаторами(owner) по задачам. Подсмотрел подобную технологию в скрипте wnd_ReportFinanceResultScript(причем на датасете, который я использую для фильтрации списка пользователей отобранных в MultiSelectWindow такое включение фильтра IN работет). Написал собственный фильтр OwnerID(см.рисунок) в датасете ds_Contact(для фильтра типа Exists с кодом DocumentFilters) На событии OnPrepareSelectWindow окна пишу код:
var Dataset = dlContact.Dataset;//ds_Contact
var OurOrgn = 'E4FCB451-2010-49E7-8B8A-05AE2E350B9F';
//Получение коллекции фильтров запроса датасета(в данном случае ds_Contacts)
var Filters = Dataset.SelectQuery.Items(0).Filters;
//Получение коллекции фильтров для фильтра типа Exists в запросе датасета
var FiltersContacts =
Filters('DocumentFilters').TestExpression.ExpressionSelectQuery.Items(0).Filters;
// Фильтр по контактам собственного предприятия
// ApplyDatasetFilter(Dataset, 'AccountID', OurOrgn, true);
Dataset.FetchRecordsCount = -1;
// Включение фильтра по имени
Filters('DocumentFilters').IsEnabled = true;
//Отключение фильтра в запросе Exists, который включен по умолчанию
FiltersContacts('DocumentContactID').IsEnabled = false;
//Подключение фильра по "владельцу" задачи
FiltersContacts('OwnerID').IsEnabled = true;
//EnableDatasetFilters(Dataset, true, 'DocumentFilters');
//Dataset.SelectQuery.Items(0).Filters.ItemByCode('DocumentFilters').IsEnabled = true;
//var SelectQuery = Dataset.SelectQuery;
//EnableSelectQueryFilters(SelectQuery, true,'DocumentFilters');
SetControlAttribute(LookupControl, SelectWindow);
Результат - ошибка отладчик показывает строку var FiltersContacts =
Filters('DocumentFilters').TestExpression.ExpressionSelectQuery.Items(0).Filters; - нулл или не является объектом
попытке обратиться прямо к фильтру в строке:
Filters('DocumentFilters').IsEnabled = true;
та же ошибка...
пробовал
Dataset.SelectQuery.Items(0).Filters.ItemByCode('DocumentFilters').IsEnabled = true;
тоже ошибка.
Попробовал включить в сервисе qs_Contact в фильтре DocumentFilters явно свой фильтр OwnerID и наложить функцией
EnableDatasetFilters(Dataset, true, 'DocumentFilters');
ошибки нет, НО фильтр не срабатывает.
Остановился на фильтрации списка по сотрудникам предприятия функцией