Запретить открытие окна в OnPrepareSelectWindow

Поставил на LookupControl - поле справочника для фильтрации, событие OnPrepareSelectWindow, где при условии if ((edtDepart.Value==undefined)||(edtDepart.Value=="")) { окно справочника фильртации должно вылетать предупреждение и при этом окно для фильтрации не должно открыться, что прописать чтоб окно не открылось, подскажите?

function edtOwnerOnPrepareSelectWindow(LookupControl, SelectWindow) {
var LookupDataset = LookupControl.LookupDatasetLink.Dataset;
if ((edtDepart.Value==undefined)||(edtDepart.Value=="")) {
ShowWarningDialog ("Поле 'Точка продаж' не может быть пустым")
.........//?
}else{
var ChannelIDsArray = edtDepart.Value.split(',');
var DepartmentIDsArray = edtDepart.Value.split(",");
ApplyDatasetIncludeFilter(LookupDataset, 'ContactOwnerDepartmentID',
DepartmentIDsArray, true);
}

Нравится

1 комментарий

Алексей, с окном сделать ничего не получится, так как его открытие происходит средствами ядра.

Возможно, Вам подойдёт следующее решение: во время обработки события OnPrepare Вашего окна редактирования проверять значение поля edtDepart. Если оно не заполнено, сделать поле edtOwner нередактируемым (edtOwner.IsEnabled = false). Подобную проверку делать и при изменении значения в поле edtDepart во время обработки события dlDataOnDatasetDataChange:

function dlDataOnDatasetDataChange(DataField) {
	var FieldName = DataField.Name;
	...
	if (FieldName = 'DepartID') {
		edtOwner.IsEnabled = !IsEmptyValue(edtDepart.Value);
	}
	...
}

После этого в обработчике события OnPrepareSelectWindow контрола edtOwner достаточно будет оставить часть, которая в блоке else:

function edtOwnerOnPrepareSelectWindow(LookupControl, SelectWindow) {
	var LookupDataset = LookupControl.LookupDatasetLink.Dataset;
	var ChannelIDsArray = edtDepart.Value.split(',');
	var DepartmentIDsArray = edtDepart.Value.split(",");
	ApplyDatasetIncludeFilter(LookupDataset, 'ContactOwnerDepartmentID',
		DepartmentIDsArray, true);
}
Показать все комментарии