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