Технические вопросы
Разработка

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

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

Нравится

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

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

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

В качестве параметра передается Array. Вам нужно просто результаты выборки записать в Array.

хм... а выполнить в том виде в котором я его создал (с подзапросом) не получится?

и получается этот подзапрос можно вообще выбросить?

Не посмотрел изначально на прикрепленный файл. Я думал у Вас значения для фильтра отдельным запросом выбираются.
Вот кусок функции ApplyQueryIncludeFilter из scr_DB (Как писал выше Валерий). Только здесь вырезана очистка старых и заполнение новыми значениями выражения.
[javascript]
for (var i = 0; i < Filters.Count; i++) {
Filter = Filters.Items(i);
if ((Filter.Code == FilterCode) && (Filter.FilterType == ftInclude)){
Filter.IsEnabled = Enabled;

}
}
[/javascript]

спсб...

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

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

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

Попробуйте реалзиовать через Exists Filter с условием по ID.
[sql]
exists (SELECT tbl_RolesUrFace.SiteID FROM tbl_RolesUrFace) where [tbl_Site].[ID] = ***
[/sql]

А как включить фильтр типа [sql]Exists[/sql]?

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

1
Вам необходима функция EnableDatasetFilters (scr_DB)

Данная функция использует такие параметры:
EnableDatasetFilters(Dataset, Enabled, FilterCodes)
- Dataset - экземпляр нужного датасета;
- Enabled - если Вам нужно включить фильтр, то Enabled = true, выключить= false;
- FilterCodes - название фильтра, который нужно включить (название пишите в одинарных кавычках).

Пример, если включать фильтр с карточки

[javascript]
var Dataset = dlData.Dataset;
EnableDatasetFilters(Dataset, true, 'AccountExist');
RefreshDataset(Dataset);
[/javascript]

Если попробывать использовать функцию ApplyDatasetFilter получите ошибку "Exception thrown and not caught" на

[javascript]
function CheckAssigned(Object, ObjectName) {
if (!Assigned(Object)) {
var ErrorMgs = FormatStr(ObjectNotAssignedError, ObjectName);
throw ErrorMgs;
}
}
[/javascript]

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

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