Custom Filter и возможность выбора нескольких значений для одного поля
Как можно с помощью нестандартного фильтра дать возможность выбрать пользователю несколько значений? Например есть список магазинов, и пользователь хочет выбрать 10 из них.
И еще вопрос - есть возможность как-то ограничинить поиск для минимального количества позиций? Например, чтобы пользователь выбрал не меньше 5 магазинов. Иначе выводить ему сообщение. Как это можно реализовать?
Нравится
Выше было несколько Ваших тем о BPM, думал что речь снова о нём.
:wink:
Ну да. Но я вроде их в разных разделах задаю. :smile:
Рвботаю и с CRM(XRM) и с BPMonline.
А по сути вопроса, хотите нечто вроде добавления нескольких ответственных в фильтр в разделе задач?
в 3.4 пользовательские фильтры для справочников как раз и позволяют выбрать несколько значений с помощью wnd_MultiSelectData.
Проверку туда встроить не проблема.
Например так:
в scr_MultiSelectData изменить (не проверял)
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; }
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(); } }
Моя задача : выбрать торговый центр, выбрать определенную катерогию товара, и далее надо дать возможность клиенту выбрать магазины из этого торгового центра, для этого категории товара. Должно быть выбрано минимум 5 магазинов. Все это можно было бы реализовать со стандарным фильтром, если бы не нужны были бы еще отдельно друг от друга год и месяц, как параметры отчета.
Так что вышеуказанный фильтр мне не подходит.
В любом случае вам понадобится MultiSelectData :smile:
или, как извращенный вариант xD, сделайте группу из 5 фильтров связанных ИЛИ и перед выводом отчета проверяйте их заполнение + сделайте возможность добавлять произвольное количество фильтров (на случай если надо больше)
Я вот что нашла : http://www.community.terrasoft.ru/developer/faq/4155
Буду сейчас разбираться.