|  13.07.2008, 14:58 | #1 | 
| Участник | Как пограммно получить имя сущности Lookup-а 
			
			CRM 4. Программно получаю список атрибутов сущности. Если атрибут имеет тип Lookup то нужно получить имя сущности, с которым этот Lookup связан. А вот как это сделать совершенно непонятно. Может кто знает? | 
|  | 
|  14.07.2008, 07:06 | #2 | 
| CRM | 
			
			Тип сущности что ли? Ну в поле Lookup кроме как GUID записи хранится еще и название её (поле name) и ObjectTypeCode. А вот получить имя сущности через ObjectTypeCode можно используя методы метобазы  http://<yourservername>/mscrmservices/2006/metadataservice.asmx Что-то типа EntityMetadata entityData = crmMetaDataService.RetrieveEntityMetadata(entityName, EntityFlags.EntityOnly); 
				__________________ MS CRM 3.0/4.0  Sharepoint 2003, MOSS 2007/2010  | 
|  | 
|  14.07.2008, 07:09 | #3 | 
| CRM | 
			
			Написал для 3ки, не увидев Вашу версию. Но полагаю, что в 4ке аналогично   По крайней мере, судя по SDK 
				__________________ MS CRM 3.0/4.0  Sharepoint 2003, MOSS 2007/2010  | 
|  | 
|  14.07.2008, 13:03 | #4 | 
| Заноза в заднице | 
			
			Если речь идет об абстрактной сущности метаданных, используя metadataservice, то относительно 4 версии, могу сказать, что данные атрибута типа lookup не содержат сведений о типе связанной сущности. Единственное, в сторону чего я бы покопал в данном случае - так это RelationshipResponce. Поскольку любое лукап поле - это по факту отношение (relationship), то связь атрибутов разных сущностей как раз таки лежит в плоскости установления отношений. Хэлп к SDK содержит всего один пример по этому поводу, в разделе: CreateOneToMany Message (MetadataService), и то этот пример касается программного создания нового отношения.
		 
				__________________ Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! | 
|  | 
|  17.07.2008, 13:45 | #5 | 
| Чайный пьяница |  Получение имени сущщности из полученного аттрибута 
			
			Предварительно в проект кидаем Web Reference на MetaDataService (http://msdn.microsoft.com/en-us/library/cc151043.aspx) Собственно дальше выполнение: //создание экземпляра сервиса метаданных: Код:         MetaCRM.MetadataService _metaservice = null;
                    MetaCRM.CrmAuthenticationToken token = new MetaCRM.CrmAuthenticationToken();
                    token.AuthenticationType = 0;
                    token.OrganizationName = <Your Organization Name>;
                    _metaservice = new MetaCRM.MetadataService();
                    _metaservice.Url = "http://<You CRM Server>/MSCRMServices/2007/MetadataService.asmx";
                    _metaservice.CrmAuthenticationTokenValue = token;
                    _metaservice.Credentials = System.Net.CredentialCache.DefaultCredentials;
                    _metaservice.UnsafeAuthenticatedConnectionSharing = true;Код:             MetaCRM.RetrieveEntityRequest entityRequest = new MetaCRM.RetrieveEntityRequest();
            entityRequest.RetrieveAsIfPublished = true;Код: entityRequest.LogicalName = CRM.EntityName.account.ToString(); Код: entityRequest.EntityItems = MetaCRM.EntityItems.IncludeAttributes; MetaCRM.RetrieveEntityResponse entityResponce = Код: (MetaCRM.RetrieveEntityResponse)_metaservice.Execute(entityRequest); //кодов сущностей лукапов Код:             string LookupEntities = string.Empty;
            foreach (MetaCRM.AttributeMetadata attribut in entityResponce.EntityMetadata.Attributes)
                if (attribut is MetaCRM.LookupAttributeMetadata)
                    LookupEntities += ((MetaCRM.LookupAttributeMetadata)attribut).Targets[0] + Environment.NewLine;
            MessageBox.Show(LookupEntities); | 
|  | 
|  18.07.2008, 21:12 | #6 | 
| Участник | 
			
			Согласен с Likefire - тип entity referenced lookup'ом определяется возможными relationship'ами этого аттрибута (lookup'a). Если надо по факту определить какого типа entity (сушность) referenced by lookup, то это просто lookupItem.typename attribute
		 | 
|  | 
|  21.07.2008, 18:17 | #7 | 
| Заноза в заднице | 
			
			2 SanX: ну собственно, приведенный пример, уважаемого a33ik как раз и показывает, как это делается практически.
		 
				__________________ Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! | 
|  | 
|  | 
| 
 |