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 делал - не успевает срабатывать, нужно что-то другое.
Старый 10.08.2011, 12:26   #2  
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
Добрый день,

Для получения из лукапа его типа можно воспользоваться следующим кодом:

Код:
Lookup regarding = (Lookup)saEntity["regardingobjectid"];
string typename = regarding.type;
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: WISEMAN (1).
Старый 11.08.2011, 18:50   #3  
WISEMAN is offline
WISEMAN
Участник
 
2 / 10 (1) +
Регистрация: 10.08.2011
a33ik, благодарствую
Старый 25.05.2012, 11:41   #4  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Цитата:
Сообщение от a33ik Посмотреть сообщение
Добрый день,

Для получения из лукапа его типа можно воспользоваться следующим кодом:

Код:
Lookup regarding = (Lookup)saEntity["regardingobjectid"];
string typename = regarding.type;
А как это сделать через js на crm 2011?

Например, при создании сущности-действия через rest, как заполнять поле regardingobjectid, ведь его нет на форме. И соотвественно в дебагере ошибка The property name 'RegardingObjectTypeCode' specified for type 'Microsoft.Crm.Sdk.Data.Services.new_marks' is not valid."

Последний раз редактировалось NoTimeToCry; 25.05.2012 в 13:14.
Старый 25.05.2012, 16:02   #5  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
У поля regardingobjectid в ресте необходимо указать значение LogicalName. В него необходимо написать имя сущности на которую у Вас лукап. Записывается по аналогии с Id.
__________________
Мой блог https://procrm.tv
За это сообщение автора поблагодарили: NoTimeToCry (1).
Старый 25.05.2012, 16:15   #6  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
У поля regardingobjectid в ресте необходимо указать значение LogicalName. В него необходимо написать имя сущности на которую у Вас лукап. Записывается по аналогии с Id.
Спасибо огромное!! Очень помогли!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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, время: 21:11.