Показать сообщение отдельно
Старый 16.02.2010, 13:48   #1  
zkk is offline
zkk
Участник
 
14 / 10 (1) +
Регистрация: 16.02.2010
? Как получить значения кастомных сущностей
Подскажите пожалуйста

делаю плагин, который будет сохранять значения кастомных сущностей контрагента(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);
указываю кастомную сущность, из которой надо брать значение
но при выполнении плагина ошибка что такая сущность не найдена

Помогите разобраться