AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.07.2010, 10:09   #1  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Отображать больше атрибутов при поиске
Всем добрый день! Существует вот какая проблема:
Есть две сущности скажем "Группы" и "Субъекты" связанные отношением 1:N. Допустим я захожу в "Группы", создаю новую запись, захожу в сведения и хочу добавить туда несколько объектов из сущности "Субъекты". И вот тут вот какое НО:
При поиске необходимых записей мне отображается только имя субъекта, а необходимо еще отображение поля "Комментарий"(можно рядом с именем, можно как всплывающая подсказка, можно как-нибудь иначе). Как это можно реализовать минимально извращаясь?
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 314
Размер:	107.7 Кб
ID:	5950  
Старый 08.07.2010, 11:11   #2  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Только исходники править.
__________________
Опыт позволяет ошибаться гораздо увереннее.
Старый 08.07.2010, 11:54   #3  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Tarasov E Посмотреть сообщение
Всем добрый день! Существует вот какая проблема:
Есть две сущности скажем "Группы" и "Субъекты" связанные отношением 1:N. Допустим я захожу в "Группы", создаю новую запись, захожу в сведения и хочу добавить туда несколько объектов из сущности "Субъекты". И вот тут вот какое НО:
При поиске необходимых записей мне отображается только имя субъекта, а необходимо еще отображение поля "Комментарий"(можно рядом с именем, можно как всплывающая подсказка, можно как-нибудь иначе). Как это можно реализовать минимально извращаясь?
Посмотрите эту статью.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Tarasov E (1).
Старый 08.07.2010, 11:56   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Вот так, например: 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  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Опять ты!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 08.07.2010, 12:16   #6  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Спасибо за помощь, тоже наткнулся на этот пример для 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  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Возникла вот какая ошибка: Данный пример был приведен для связей 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  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Всем спасибо, отдельное спасибо 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.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Количество записей в расширенном поиске ZMike Dynamics CRM: Функционал 2 30.01.2010 13:13
MS CRM 4.0. Миграция атачей размером больше 5 мегабайт. xany Dynamics CRM: Администрирование 21 08.05.2009 02:13
Количество атрибутов для Объекта slivka_83 Dynamics CRM: Разработка 18 26.12.2008 12:57
Вопрос о поиске Alexey-IT Dynamics CRM: Разработка 7 24.12.2007 16:26
Ошибка при поиске статей Lud Dynamics CRM: Разработка 0 23.04.2007 18:12
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:26.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.