Как правильно включить фильтр?

Есть фильтр типа 'IN', как в скрипте его правильно включить?
Фильтр - AccountSiteParentID

Нравится

14 комментариев

Посмотрите в scr_DB, там должна быть функция
ApplyDatasetIncludeFilter

не понятно, как быть с ParamValues, у меня там подзапрос, в который нужно передать значение параметра...

В качестве параметра передается 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;
 
		}
	}

спсб...

Как создать в сервисе вот такой фильтр INCLUDE:

[tbl_Site].[ID] in (select tbl_RolesUrFace.SiteID from tbl_RolesUrFace)

так может нельзя сделать такой IN фильтр?

Попробуйте реалзиовать через Exists Filter с условием по ID.

exists (SELECT tbl_RolesUrFace.SiteID FROM tbl_RolesUrFace) where [tbl_Site].[ID] = ***

А как включить фильтр типа Exists?

Либо галочку возле него поставить:
1
Либо через ApplyDatasetFilter.

1
Вам необходима функция 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;
	}
}

Гакало Игорь, ну вы же понимаете, что это не выход...
Яворский Алексей, спсб...

Показать все комментарии