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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.08.2009, 21:15   #1  
Roman08 is offline
Roman08
Участник
 
93 / 29 (1) +++
Регистрация: 27.02.2008
Адрес: Украина; Житомир
Записей в блоге: 1
Задача - создать связанный с opportunity объект сущности tcc_oppmonthly при измененении opportunity. Поле связи - tcc_monthlydetailsid.
//values for fields - заготовка, мне надо разделить значение поля estimatedvalue на некое значение и записать результат в поле tcc_value вновь создаваемой сущности.
Код:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;
using Microsoft.Crm.Sdk.Query;

namespace MonthlyOppDetail
{
    public class MonthDetailCreationHandler : IPlugin
    {
        #region IPlugin Members
        public void Execute(IPluginExecutionContext context)
        {
            if (context.MessageName == MessageName.Update
                && context.InputParameters.Contains("Target") 
                && context.InputParameters["Target"] is DynamicEntity)
            {
                DynamicEntity entity = (DynamicEntity)context.InputParameters["Target"];
                //Check that target entity is opportunity
                if (entity.Name != EntityName.opportunity.ToString())
                    return;

                //Check that this opportunity has entered needed fields
                if (!entity.Properties.Contains("estimatedvalue"))
                    return;

                //values for fields
                decimal sum         = ((CrmMoney)entity.Properties["estimatedvalue"]).Value;
                CrmMoney sum223     = new CrmMoney();
                sum223.Value        = sum / 2;

                ICrmService crmservice = context.CreateCrmService(true);

                DynamicEntity       entityM         = new DynamicEntity();
                TargetCreateDynamic targetCreate    = new TargetCreateDynamic();
                CreateRequest       createRequest   = new CreateRequest();

                entityM.Name = "tcc_oppmonthly";
               
                CrmMoneyProperty _Tcc_value = new CrmMoneyProperty();
                _Tcc_value.Name                 = "tcc_value";
                _Tcc_value.Value                = sum223; 
                entityM.Properties.Add(_Tcc_value);
                
                KeyProperty _tcc_monthlydetailsid = new KeyProperty();
                _tcc_monthlydetailsid.Name  = "tcc_monthlydetailsid";
                _tcc_monthlydetailsid.Value = (Key)entity.Properties["opportunityid"];
                entityM.Properties.Add(_tcc_monthlydetailsid);
                
                targetCreate.Entity = entityM;
                createRequest.Target = targetCreate;

                crmservice.Create(entityM);

            }
        }
        #endregion IPlugin Members
    }
}
Регистрацию провожу на Post событие Update, Parent pipeline . В синхронном режиме - в файл трассировки записано только "The entity with a name = 'none' was not found in the MetadataCache., ErrorCode: -2147217150". В асинхронном - также |Level: Error | MessageProcessor.Execute
>MessageProcessor fail to process message 'Create' for 'tcc_oppmonthly'.
[2009-08-28 19:35:56.0] Process: w3wp |Organization:959e4b7c-ab67-dd11-b616-000c29704829 |Thread: 6 |Category: Platform.Sdk |User: b04a20e9-ab67-dd11-b616-000c29704829 |Level: Error | DefaultExceptionHandler.Handle
>CrmSoapExtension detected non-CrmException - report will be sent to Watson:
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidCastException: Unable to cast object of type 'Microsoft.Crm.Sdk.KeyProperty' to type 'Microsoft.Crm.Sdk.LookupProperty'.


Пока не могу понять - почему KeyProperty ошибка есть только в одном режиме.
Заранее благодарен за указание ошибок.
Спасибо.
Теги
plugin, экземпляр

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как получить значение поля одной сущности при обработке формы другой сущности zhenek Dynamics CRM: Разработка 25 05.07.2011 16:19
Как создать экземпляр кастомной сущности через SOAP? Tony Green Dynamics CRM: Разработка 7 27.02.2009 08:37
Создание и регистрация плагина на Execute и Retreive a33ik Dynamics CRM: Разработка 7 30.11.2008 15:03
Модификая контекста плагина ZooY Dynamics CRM: Разработка 3 28.09.2008 13:52
Создание объекта сущности из другого объекта! SnSS Dynamics CRM: Разработка 5 29.05.2008 13:38

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

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

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