Custom Filter и возможность выбора нескольких значений для одного поля

Как можно с помощью нестандартного фильтра дать возможность выбрать пользователю несколько значений? Например есть список магазинов, и пользователь хочет выбрать 10 из них.
И еще вопрос - есть возможность как-то ограничинить поиск для минимального количества позиций? Например, чтобы пользователь выбрал не меньше 5 магазинов. Иначе выводить ему сообщение. Как это можно реализовать?

Нравится

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

Вопрос точно о 3.X? Или всё же о BPM?

:smile: Именно о 3.Х
А почему "все же" ?

Выше было несколько Ваших тем о 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
Буду сейчас разбираться.

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