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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2011, 11:43   #1  
WISEMAN is offline
WISEMAN
Участник
 
2 / 10 (1) +
Регистрация: 10.08.2011
CRM 4.0 использование regardingobjecttypecode в plugin
Добрый день. Есть следующая ситуация: при добавлении\сохранении сущности "действие сервиса" (serviceappointment) должен срабатывать плагин который смотрит какое действие добавлено => если оно является "сервисным контрактом" (contract), то поменять уже существующую "дату акта" (new_actdate) у контракта на ту, что выставили в "действии сервиса" (new_dateofact).

Что я делаю:

Вытаскиваю данные из serviceappointment
Код:
string saId = string.Empty; //service appointment id
CrmDateTime saDate = CrmDateTime.Null; //service appointment date of act
string cId = string.Empty; //contract id
CrmDateTime cDate = CrmDateTime.Null; //contract date of act

DynamicEntity entity = (DynamicEntity) context.InputParameters.Properties[ParameterName.Target];
saId = ((Key) entity.Properties["activityid"]).Value.ToString();

DynamicEntity saEntity = GetEntity("serviceappointment", saId, "new_dateofact", "regardingobjectid");
saDate = ((CrmDateTime) saEntity.Properties["new_dateofact"]);
cId = ((Lookup)saEntity.Properties["regardingobjectid"]).Value.ToString();
Да и GetEntity - мой метод:
Код:
private DynamicEntity GetEntity(string entityName, string entityId, params string[] attributes)
{
	try
	{
		Microsoft.Crm.Sdk.Query.ColumnSet columnSet = new Microsoft.Crm.Sdk.Query.ColumnSet();
		if (attributes.Length == 0)
		{
			throw new ArgumentNullException("You should send at least one attribute");
		}
		foreach (string el in attributes)
		{
			columnSet.Attributes.Add(el);
		}
		TargetRetrieveDynamic targetRetrieve = new TargetRetrieveDynamic { EntityId = new Guid(entityId), EntityName = entityName };
		RetrieveRequest retrieveRequest = new RetrieveRequest {Target = targetRetrieve, ColumnSet = columnSet, ReturnDynamicEntities = true};
		RetrieveResponse retrieveResponse = (RetrieveResponse)crmService.Execute(retrieveRequest);

		return (DynamicEntity)retrieveResponse.BusinessEntity;
	}
	catch
	{
		return null;
	}
}
Следующим шагом мне нужно узнать что этот RegardingObjectId относится к contract, а не к другим 12 типам с которыми serviceappointment в отношении. Я пытался взять RegardingObjectTypeCode так же среди атрибутов ч\з свой метод, но проблема в том что у сущности в crm среди атрибутов нету RegardingObjectTypeCode, а в базе данных такое поле есть.
Собственно вопрос - как узнать значение этого поля стандартными средствами, не прибегая к обращению напрямую запросом к базе, ибо клепать в одном простом плагине несколько способов обращения - есть изврат.
---------------------------------------------------------------------
Так же вопрос № 2:
Как можно переписать метод GetEntity так, чтобы он сообщал о том, что не найдена сущность с таким id (к примеру, взяли id которого не существует: Guid.NewGuid()). В настоящее время он просто падает с эксепшеном. Проверку на null retrieveResponse делал - не успевает срабатывать, нужно что-то другое.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM DE LA CREME! CRM 4.0 Disaster Recovery Blog bot Dynamics CRM: Blogs 2 26.02.2016 08:23
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM 2011 ~ Online Test Drive Guide Blog bot Dynamics CRM: Blogs 0 05.08.2011 20:13
Все о Microsoft Dynamics CRM: Как установить Microsoft Dynamics CRM 2011 Beta Blog bot Dynamics CRM: Blogs 0 31.10.2010 15:08
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:09.