Есть фильтр типа 'IN', как в скрипте его правильно включить?
Фильтр - AccountSiteParentID
Нравится
Посмотрите в scr_DB, там должна быть функция
ApplyDatasetIncludeFilter
В качестве параметра передается Array. Вам нужно просто результаты выборки записать в Array.
Не посмотрел изначально на прикрепленный файл. Я думал у Вас значения для фильтра отдельным запросом выбираются.
Вот кусок функции ApplyQueryIncludeFilter из scr_DB (Как писал выше Валерий). Только здесь вырезана очистка старых и заполнение новыми значениями выражения.
for (var i = 0; i < Filters.Count; i++) { Filter = Filters.Items(i); if ((Filter.Code == FilterCode) && (Filter.FilterType == ftInclude)){ Filter.IsEnabled = Enabled; } }
Попробуйте реалзиовать через Exists Filter с условием по ID.
exists (SELECT tbl_RolesUrFace.SiteID FROM tbl_RolesUrFace) where [tbl_Site].[ID] = ***
Либо галочку возле него поставить:
Либо через ApplyDatasetFilter.
Вам необходима функция EnableDatasetFilters (scr_DB)
Данная функция использует такие параметры:
EnableDatasetFilters(Dataset, Enabled, FilterCodes)
- Dataset - экземпляр нужного датасета;
- Enabled - если Вам нужно включить фильтр, то Enabled = true, выключить= false;
- FilterCodes - название фильтра, который нужно включить (название пишите в одинарных кавычках).
Пример, если включать фильтр с карточки
var Dataset = dlData.Dataset; EnableDatasetFilters(Dataset, true, 'AccountExist'); RefreshDataset(Dataset);
Если попробывать использовать функцию ApplyDatasetFilter получите ошибку "Exception thrown and not caught" на
function CheckAssigned(Object, ObjectName) { if (!Assigned(Object)) { var ErrorMgs = FormatStr(ObjectNotAssignedError, ObjectName); throw ErrorMgs; } }