|
08.07.2010, 10:09 | #1 |
Участник
|
Отображать больше атрибутов при поиске
Всем добрый день! Существует вот какая проблема:
Есть две сущности скажем "Группы" и "Субъекты" связанные отношением 1:N. Допустим я захожу в "Группы", создаю новую запись, захожу в сведения и хочу добавить туда несколько объектов из сущности "Субъекты". И вот тут вот какое НО: При поиске необходимых записей мне отображается только имя субъекта, а необходимо еще отображение поля "Комментарий"(можно рядом с именем, можно как всплывающая подсказка, можно как-нибудь иначе). Как это можно реализовать минимально извращаясь? |
|
08.07.2010, 11:11 | #2 |
Участник
|
Только исходники править.
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
08.07.2010, 11:54 | #3 |
Чайный пьяница
|
Цитата:
Сообщение от Tarasov E
Всем добрый день! Существует вот какая проблема:
Есть две сущности скажем "Группы" и "Субъекты" связанные отношением 1:N. Допустим я захожу в "Группы", создаю новую запись, захожу в сведения и хочу добавить туда несколько объектов из сущности "Субъекты". И вот тут вот какое НО: При поиске необходимых записей мне отображается только имя субъекта, а необходимо еще отображение поля "Комментарий"(можно рядом с именем, можно как всплывающая подсказка, можно как-нибудь иначе). Как это можно реализовать минимально извращаясь?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Tarasov E (1). |
08.07.2010, 11:56 | #4 |
Moderator
|
Вот так, например: http://jianwang.blogspot.com/2009/10...y-to-many.html
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: Tarasov E (1). |
08.07.2010, 11:56 | #5 |
Moderator
|
Опять ты!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
08.07.2010, 12:16 | #6 |
Участник
|
Спасибо за помощь, тоже наткнулся на этот пример для N:N. Совсеместо с другом немного переделали код на онлоад под 1:N. Может кому сгодица:
Код: var nnId = "new_group_scan"; // entity 1:N relationship id var lookupTypeCode = 10040; // entity type code var lookupViewId = "7FCA6B20-8753-DF11-9CD0-003048743D05"; // the view id of referenced entity var lookupSrc = "/" + ORG_UNIQUE_NAME + "/ISV/lookup/lookupmulti.aspx"; var lookupArg = "/" + ORG_UNIQUE_NAME + "/_root/homepage.aspx?etc=" + lookupTypeCode +"&viewid=" + lookupViewId; var lookupEntityTypeCode; var navId = document.getElementById("nav_" + nnId); if (navId != null) { var la = navId.onclick.toString(); la = la.substring(la.indexOf("loadArea"), la.indexOf(";")); navId.onclick = function() { eval(la); var areaId = document.getElementById(nnId + "Frame"); if(areaId != null) { areaId.onreadystatechange = function() { if (areaId.readyState == "complete") { var frame = frames[window.event.srcElement.id]; var li = frame.document.getElementsByTagName("li"); for (var i = 0; i < li.length; i++) { var action = li[i].getAttribute("action"); if(action != null && action.indexOf(nnId) > 1) { lookupEntityTypeCode = action.substring(action.indexOf("\(")+1, action.indexOf(",")); li[i].onclick = CustomLookup; break; } } } } } } } function CustomLookup() { var lookupItems = window.showModalDialog(lookupSrc, lookupArg, "dialogWidth:800px; dialogHeight:600px;"); if (lookupItems) // This is the CRM internal JS funciton on \_static\_grid\action.js { if ( lookupItems.items.length > 0 ) { AssociateObjects( crmFormSubmit.crmFormSubmitObjectType.value, crmFormSubmit.crmFormSubmitId.value, lookupEntityTypeCode, lookupItems, true, null, nnId); } } } |
|
09.07.2010, 08:07 | #7 |
Участник
|
Возникла вот какая ошибка: Данный пример был приведен для связей N:N у меня же связь 1:N. Код то на онлоад формы я подкорректировал, стала грузиться aspx страница, для выборки записей, но при нажатии на кнопку "ОК" у меня вылетает с ошибкой. И вот, что пишет в файле трассировки:
Код: >MessageProcessor fail to process message 'AssociateEntities' for 'none'. [2010-07-09 07:54:51.4] Process: w3wp |Organization:e26d7e2d-33b0-417e-8875-7e0c045fda3e |Thread: 1 |Category: Application |User: 00000000-0000-0000-0000-000000000000 |Level: Error | ErrorInformation.LogError >MSCRM Error Report: -------------------------------------------------------------------------------------------------------- Error: Exception has been thrown by the target of an invocation. Error Number: 0x8004024A Error Message: Entity Relationship new_group_scan is not a many-to-many entity relationship Error Details: Entity Relationship new_group_scan is not a many-to-many entity relationship Source File: Not available Line Number: Not available Request URL: http://vms2:5555/Keysystems/AppWebServices/AssociateRecords.asmx Stack Trace Info: [CrmException: Entity Relationship new_group_scan is not a many-to-many entity relationship] at Microsoft.Crm.BusinessEntities.BusinessProcessObject.GetAssociationEntityRelationship(String associationRelationshipName, ExecutionContext context) at Microsoft.Crm.BusinessEntities.BusinessProcessObject.HandleAssociationOperation(BusinessEntityMoniker entityOneMoniker, BusinessEntityMoniker entityTwoMoniker, String associationRelationshipName, Boolean createAssociation, ExecutionContext context) at Microsoft.Crm.BusinessEntities.BusinessProcessObject.AssociateEntities(BusinessEntityMoniker entityOneMoniker, BusinessEntityMoniker entityTwoMoniker, String associationRelationshipName, ExecutionContext context) [TargetInvocationException: Exception has been thrown by the target of an invocation.] at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Web.Services.Protocols.LogicalMethodInfo.Invoke(Object target, Object[] values) at Microsoft.Crm.Extensibility.InternalOperationPlugin.Execute(IPluginExecutionContext context) at Microsoft.Crm.Extensibility.PluginStep.Execute(PipelineExecutionContext context) at Microsoft.Crm.Extensibility.Pipeline.Execute(PipelineExecutionContext context) at Microsoft.Crm.Extensibility.MessageProcessor.Execute(PipelineExecutionContext context) at Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute(PipelineExecutionContext context) at Microsoft.Crm.Extensibility.ExternalMessageDispatcher.Execute(String messageName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, PropertyBag fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) at Microsoft.Crm.Sdk.RequestBase.Process(Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) at Microsoft.Crm.Sdk.RequestBase.Process(CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) at Microsoft.Crm.Sdk.CrmServiceInternal.Execute(RequestBase request, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId) at Microsoft.Crm.Sdk.InProcessCrmService.Execute(Object request) at Microsoft.Crm.Application.Platform.ServiceCommands.PlatformCommand.ExecuteInternal() at Microsoft.Crm.Application.Platform.ServiceCommands.AssociateEntitiesCommand.Execute() at Microsoft.Crm.Application.WebServices.AssociateRecords.Associate(Int32 objectType, Int32 parentObjectType, Guid objectId, Guid parentId, String subType, String associationName) Последний раз редактировалось Tarasov E; 09.07.2010 в 09:38. |
|
09.07.2010, 09:14 | #8 |
Участник
|
Всем спасибо, отдельное спасибо slivka_83 за помощь по личке. Ошибка крылась на онлоаде формы, исправленный код кому надо выкладываю (аспх страницу можно не трогать):
Код: var nnId = "new_group_scan"; // entity 1:N relationship id var lookupTypeCode = 10040; // entity type code var lookupViewId = "7FCA6B20-8753-DF11-9CD0-003048743D05"; // the view id of referenced entity var lookupSrc = "/" + ORG_UNIQUE_NAME + "/ISV/lookup/lookupmulti.aspx"; var lookupArg = "/" + ORG_UNIQUE_NAME + "/_root/homepage.aspx?etc=" + lookupTypeCode +"&viewid=" + lookupViewId; var lookupEntityTypeCode; var navId = document.getElementById("nav_" + nnId); if (navId != null) { var la = navId.onclick.toString(); la = la.substring(la.indexOf("loadArea"), la.indexOf(";")); navId.onclick = function() { eval(la); var areaId = document.getElementById(nnId + "Frame"); if(areaId != null) { areaId.onreadystatechange = function() { if (areaId.readyState == "complete") { var frame = frames[window.event.srcElement.id]; var li = frame.document.getElementsByTagName("li"); for (var i = 0; i < li.length; i++) { var action = li[i].getAttribute("action"); if(action != null && action.indexOf(nnId) > 1) { lookupEntityTypeCode = action.substring(action.indexOf("\(")+1, action.indexOf(",")); li[i].onclick = CustomLookup; break; } } } } } } } function CustomLookup() { var lookupItems = window.showModalDialog(lookupSrc, lookupArg, "dialogWidth:800px; dialogHeight:600px;"); if (lookupItems) { if ( lookupItems.items.length > 0 ) { var commandAssociate = new RemoteCommand("AssociateRecords", "AssociateOneToMany"); var i = 0; var objs = lookupItems.items; var iLength = objs.length; for(i = 0; i < iLength; ++i) { commandAssociate.SetParameter("childType", lookupEntityTypeCode); commandAssociate.SetParameter("childId", objs[i].id); commandAssociate.SetParameter("parentType", crmFormSubmit.crmFormSubmitObjectType.value); commandAssociate.SetParameter("parentId", crmFormSubmit.crmFormSubmitId.value); commandAssociate.SetParameter("relationshipName", nnId); if (!commandAssociate.Execute().Success) { break; } } } try { auto(lookupEntityTypeCode); } catch(e) { } } } Последний раз редактировалось Tarasov E; 09.07.2010 в 10:18. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Количество записей в расширенном поиске | 2 | |||
MS CRM 4.0. Миграция атачей размером больше 5 мегабайт. | 21 | |||
Количество атрибутов для Объекта | 18 | |||
Вопрос о поиске | 7 | |||
Ошибка при поиске статей | 0 |
|