Custom Filter и возможность выбора нескольких значений для одного поля
Как можно с помощью нестандартного фильтра дать возможность выбрать пользователю несколько значений? Например есть список магазинов, и пользователь хочет выбрать 10 из них.
И еще вопрос - есть возможность как-то ограничинить поиск для минимального количества позиций? Например, чтобы пользователь выбрал не меньше 5 магазинов. Иначе выводить ему сообщение. Как это можно реализовать?
Нравится
Выше было несколько Ваших тем о BPM, думал что речь снова о нём.
:wink:
Ну да. Но я вроде их в разных разделах задаю. :smile:
Рвботаю и с CRM(XRM) и с BPMonline.
А по сути вопроса, хотите нечто вроде добавления нескольких ответственных в фильтр в разделе задач?
в 3.4 пользовательские фильтры для справочников как раз и позволяют выбрать несколько значений с помощью wnd_MultiSelectData.
![]()
Проверку туда встроить не проблема.
Например так:
в scr_MultiSelectData изменить (не проверял)
[javascript]
function ReturnSelectedValue(Window) {
grdTarget.SelectAllRows();
MultiSelectData.KeyValues = grdTarget.SelectedIDs.CreateCopy();
MultiSelectData.DisplayFieldValues = grdTarget.SelectedIDs.CreateCopy();
MultiSelectData.DisplayFieldValues.Clear();
MultiSelectData.TargetDataset.GotoFirst();
var Value;
var Result;
while (!MultiSelectData.TargetDataset.IsEOF) {
Value = MultiSelectData.TargetDataset.
Values(MultiSelectData.DisplayFieldName);
if (!IsEmptyValue(Value)) {
MultiSelectData.DisplayFieldValues.Add(Value);
Result++;
}
MultiSelectData.TargetDataset.GotoNext();
}
if (MultiSelectData.DisplayFieldValues.Count == 0) {
MultiSelectData.KeyValues.Clear();
}
SetAttribute(Window, 'KeyValues', MultiSelectData.KeyValues);
SetAttribute(Window, 'DisplayFieldValues',
MultiSelectData.DisplayFieldValues);
return Result;
}
[/javascript]
[javascript]
function btnOkOnClick(Control) {
var Count = ReturnSelectedValue(Self);
if (!(Control.ParentWindow.WindowCaption = "Выбор 'Магазины'" && Count < 5)) {
return;
};
System.ProcessMessages();
if (Self.IsModal) {
Self.ModalResult = wmrOK;
} else {
var Control = Self.Attributes('NotifyObject');
if (Control != null) {
var Window = Control.ParentWindow;
if (Window != null) {
SetAttribute(Self, 'NotifyObject', Window);
}
}
SendNotify(Self, MSG_OK);
Self.Close();
}
}
[/javascript]
Моя задача : выбрать торговый центр, выбрать определенную катерогию товара, и далее надо дать возможность клиенту выбрать магазины из этого торгового центра, для этого категории товара. Должно быть выбрано минимум 5 магазинов. Все это можно было бы реализовать со стандарным фильтром, если бы не нужны были бы еще отдельно друг от друга год и месяц, как параметры отчета.
Так что вышеуказанный фильтр мне не подходит.
В любом случае вам понадобится MultiSelectData :smile:
или, как извращенный вариант xD, сделайте группу из 5 фильтров связанных ИЛИ и перед выводом отчета проверяйте их заполнение + сделайте возможность добавлять произвольное количество фильтров (на случай если надо больше)
Я вот что нашла : http://www.community.terrasoft.ru/developer/faq/4155
Буду сейчас разбираться.