Показать сообщение отдельно
Старый 17.06.2010, 23:52   #5  
guenberg is offline
guenberg
Участник
 
41 / 11 (1) +
Регистрация: 24.05.2010
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Список сущностей и их коды можно посмотреть на странице http://<CRM Server>/sdk/list.aspx То что вы пытаетесь реализовать (одно поле лукапа для нескольких сущностей) не поддерживается системой. Ну, или вы хотите смоделировать поведение такого лукапа и реализовать подобную логику при помощи JS. Однако исходя из я что-то сомневаюсь... Поведение лукапа определяется связями между объектами - схемой метаданных, а не теми опциями которые можно установить через JS на форме объекта. У ряда системных объектов, действительно, можно выбирать объекты разных типов в одном лукапе, но подобный функционал для настройки не доступен.
Кое что получилось... На OnLoad повесил:

var userLookup = crmForm.all.qav_visaowneruserid;
var teamLookup = crmForm.all.qav_visaownerteamid;

teamLookup.lookuptypes = "8,9";
teamLookup.lookuptypenames = "systemuser:8,team:9";

// Устанавливаем иконку отображаемую при выборе
teamLookup.lookuptypeIcons = "/_imgs/ico_16_8.gif:/_imgs/ico_16_9.gif";

// Если в лукапе user хранится значение, тогда передаем его в лукап team
if (userLookup.DataValue != null) {
teamLookup.DefaultValue = userLookup.DataValue;
teamLookup.DataValue = userLookup.DataValue;
if (typeof (teamLookup.DataValue[0].data) != "undefined") {
teamLookup.DefaultValue[0].data = teamLookup.DataValue[0].data;
}
}

// Скрываем лукап user
crmForm.all.qav_visaowneruserid_c.style.display = 'none';
crmForm.all.qav_visaowneruserid_d.style.display= 'none';

а на onsave:

var userLookup = crmForm.all.qav_visaowneruserid;
var teamLookup = crmForm.all.qav_visaownerteamid;

// Если в лукапе team ничего не выбрано очищаем, лукап user.
if (teamLookup.DataValue == null) {
userLookup.DataValue = null;
}
else {
var vizaownertype = teamLookup.DataValue[0];
// Код 8 соответствует team
if (vizaownertype.type == "9") {
userLookup.DataValue = null;
} else {
userLookup.DataValue = teamLookup.DataValue;
teamLookup.DataValue = null;
}
}


Всё работает, за исключением того что в лукапе по пользователям (точнее в лукапе по рабочим группам с фильтром по пользователям) показываются удаленные и системные пользователи... но это не особая проблема...
За это сообщение автора поблагодарили: Артем Enot Грунин (1).