05.09.2013, 22:46 | #1 |
Чайный пьяница
|
Открытие формы лукапа через JavaScript с кастомным View по умолчанию.
Добрый день коллеги,
Решаю сейчас сабжевую задачу. Использую примерно следующий код: Код: var EntityCode = 10008; var defaultviewid = "{C1CBEED9-F1D5-E211-8006-005056B2000A}"; var customView = { id: defaultviewid, recordType: EntityCode, name: "Credit Cards", fetchXl: "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" + "<entity name='sd_creditcard'>" + "<attribute name='sd_creditcardid' />" + "<attribute name='sd_creditcardnumber' />" + "<attribute name='sd_nameofholder' />" + "<attribute name='sd_expiration' />" + "<attribute name='sd_cardtype' />" + "<order attribute='sd_creditcardnumber' descending='false' />" + "<filter type='and'>" + "<condition attribute='sd_accountid' operator='eq' value='" + accountid[0].id + "' />" + "</filter>" + "</entity>" + "</fetch>", layoutXml: "<grid name='resultset' " + "object='1' " + "jump='sd_creditcardid' " + "select='1' " + "icon='1' " + "preview='1'>" + "<row name='result' id='sd_creditcardid'>" + "<cell name='sd_creditcardnumber' width='150' />" + "<cell name='sd_cardtype' width='100' />" + "<cell name='sd_expiration' width='100' />" + "<cell name='sd_nameofholder' width='150' />" + "</row>" + "</grid>", Type: 0 }; var lookupItems = window.parent.LookupObjects(null, "single", EntityCode, 0, null, "", null, null, null, null, null, null, defaultviewid, [customView]); UPD window.parent для вызова используется по причине того, что вызов идёт из html вебресурса.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
06.09.2013, 09:47 | #2 |
Участник
|
var viewId = "{C0F1DD64-1BF3-450D-BCDE-DF4732DE1606}"; // "Генерируем" ID для нового представления
var entityName = "skb_legalentity"; // Имя объекта var viewDisplayName = "Юридические лица ВП"; // Задаем название нового представления var setDefault = true; // Определяем, будет ли наше новое представление дефолтным при открытии диалогового окна лукапа if (Xrm.Page.data.entity.attributes.get("skb_partnershipopportunityid").getValue()) { var oppName=Xrm.Page.data.entity.attributes.get("skb_partnershipopportunityid").getValue()[0].name; var oppId=Xrm.Page.data.entity.attributes.get("skb_partnershipopportunityid").getValue()[0].id; // Создаем XML запрос на запрос Юридических лиц var fetchXml = "" + "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" + "<entity name='skb_legalentity'>" + "<attribute name='skb_name' />" + "<attribute name='skb_legalentityid' />" + "<attribute name='skb_inn' />" + "<attribute name='skb_kpp' />" + "<order attribute='skb_name' descending='false' />" + "<link-entity name='account' from='accountid' to='skb_accountid' alias='aa'>" + "<link-entity name='skb_partnershipopportunity' from='skb_accountid' to='accountid' alias='ab'>" + "<filter type='and'>" + "<condition attribute='skb_partnershipopportunityid' operator='eq' uiname='" + oppName + "' uitype='skb_partnershipopportunity' value='" + oppId + "'/>" + "</filter>" + "</link-entity>" + "</link-entity>" + "</entity>" + "</fetch>"; // Определяем представление фильтрованного лукапа var layoutXml = "" + "<grid name='resultset' object='1' jump='name' select='1' icon='1' preview='1'>" + "<row name='result' id='skb_legalentityid'>" + "<cell name='skb_name' width='200' />" + "<cell name='skb_inn' width='100' />" + "<cell name='skb_kpp' width='100' />" + "</row>" + "</grid>"; // Задаем имя лукапа и задаем кастомное Представление для него var lookupControl = Xrm.Page.ui.controls.get('skb_legalentityid'); lookupControl.addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, setDefault); Я использую вот такой код, для кастомного представления. Посмотрите, может поможет. |
|
06.09.2013, 11:22 | #3 |
Чайный пьяница
|
Вся проблема в том, что:
1. Это html вебресурс. Вроде писал про это. 2. Отсюда следует что и поля-лукапа у меня нет. Всё равно спасибо за попытку.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
06.09.2013, 13:15 | #4 |
Moderator
|
На самой форме код работает нормально? Если да, то попробуй что-то вроде
with (window.parent) { //JS CODE } В некоторых случаях это решает проблемы с областью видимости.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
06.09.2013, 13:36 | #5 |
Участник
|
Я делал так:
Код: var url = Mscrm.CrmUri.create("/_controls/lookup/lookupinfo.aspx"); var args = { customViews: [{ id: "{A76B2C46-C28E-4E5E-9DDF-951B71202C9D}", recordType: 3, name: "Contact's opportunities", fetchXml: fetchXml, layoutXml: "<grid name=\"\" jump=\"name\" select=\"1\" icon=\"1\" preview=\"0\"><row name=\"opportunity\" id=\"opportunityid\"><cell name=\"name\" width=\"300\" /></row></grid>", Type: 0 }], availableViews: null }; url += "?AllowFilterOff=1&DefaultType=3&DefaultViewId=%7bA76B2C46-C28E-4E5E-9DDF-951B71202C9D%7d&DisableQuickFind=0&DisableViewPicker=0&LookupStyle=single&ShowNewButton=1&ShowPropButton=1&browse=false&objecttypes=3" return openStdDlgWithCallback(url, args, 600, 600); |
|
10.09.2013, 13:44 | #6 |
Участник
|
Работаю с лукапами на своем веб-ресурсе почти так как написал Anros, но вместо openStdDlgWithCallback использую openStdDlg так как openStdDlgWithCallback вызывает его.
Пока кастомные представления в лукапы не подставлял, но буду делать что-то похожое, потому что эти параметры мелькали пока заставилял работать мультилукапы, патилисты и лукап тем с обратным подставлением выбранного. |
|