16.02.2010, 13:48 | #1 |
Участник
|
Как получить значения кастомных сущностей
Подскажите пожалуйста
делаю плагин, который будет сохранять значения кастомных сущностей контрагента(account) при его смене в форме контрактов. То есть при выборке в лукапе нового контрагента его реквизиты подставляются автоматически в поля реквизитов контракта (bank, bik, inn и т.д.) при сохранении стандартных сущностей все проходит отлично, а вот как вытащить кастомные я не могу разобраться. Использую DynamicEntity, В SDK читал про это, но не могу все равно добиться получения значения кастомных сущностей вот код public void Execute(IPluginExecutionContext context) { DynamicEntity entity = null; if (context.InputParameters.Properties.Contains(ParameterName.Target) && context.InputParameters.Properties[ParameterName.Target] is DynamicEntity) { entity = (DynamicEntity)context.InputParameters.Properties[ParameterName.Target]; if (context.MessageName != MessageName.Update.ToString() && context.MessageName != MessageName.Create.ToString()) { throw new InvalidPluginExecutionException("error"); } } else { return; } try { ICrmService crmService = context.CreateCrmService(false); if (entity.Properties.Contains("epg_accountid")) { String new_attrib = ""; String epg_description = ""; ColumnSet cs = new ColumnSet(); Lookup epg_account = (Lookup)entity.Properties["epg_accountid"]; // проверяю, что в лукапе выбран Контрагент if (epg_account.type == EntityName.account.ToString()) { cs.Attributes.Add("name"); DynamicEntity DEntity = (DynamicEntity)crmService.Retrieve("epg_person", epg_account.Value, cs); account _account = (account)crmService.Retrieve(EntityName.account.ToString(), epg_account.Value, cs); if (_account == null || _account.name == null) { return; } else { new_attrib = _account.name.ToString(); epg_description = DEntity.ToString(); } } // обновляю поля реквизитов entity.Properties.Add(new StringProperty("epg_bank", new_attrib)); entity.Properties.Add(new StringProperty("epg_description", epg_description)); } } catch (System.Web.Services.Protocols.SoapException ex) { throw new InvalidPluginExecutionException( String.Format("Ошибка в плагине {0}.", this.GetType().ToString()), ex); } } в строке DynamicEntity DEntity = (DynamicEntity)crmService.Retrieve("epg_person", epg_account.Value, cs); указываю кастомную сущность, из которой надо брать значение но при выполнении плагина ошибка что такая сущность не найдена Помогите разобраться |
|
16.02.2010, 14:41 | #2 |
Kostya Afendikov
|
Предлагаю вам ознакомиться с этим веб-кастом http://crmmagic.blogspot.com/2010/02/techdays.html
Хуже не будет 100% |
|
|
За это сообщение автора поблагодарили: zkk (1). |
16.02.2010, 15:11 | #3 |
Участник
|
Похоже это то что нужно, да еще в таком шикарном примере!
Спасибо большое за ссылку! |
|