|
|
#1 |
|
Участник
|
Подскажите пожалуйста, как из плагина добраться до нестандартных (созданных мной, типа new_ordernumber) полей сущности?
Именно, есть код, который должен возвращать коллекцию объектов salesorder Код: //тут формируется запрос
Microsoft.Crm.Sdk.BusinessEntityCollection salesorders = service.RetrieveMultiple(query);
salesorder oSalesorder;
for (int i = 0; i < salesorders.BusinessEntities.Count; i++)
{
oSalesorder = (salesorder)salesorders.BusinessEntities[i];
//тут надо сделать набор действий с полем oSalesorder.new_ordernumber
}Так вот, как имея salesorders.BusinessEntities[i] получить new_ordernumber сущности salesorder? |
|
|
|
|
#2 |
|
Moderator
|
Вообще говоря, MS требует (именно требует) чтобы в плагинах использовался класс DynamicEntity. Среди его Propertys должно быть и ваше поле. Вы действительно делали что-то не так.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() MS Certified Dirty Magic Professional
|
|
|
|
|
#3 |
|
Moderator
|
Ну, я не помню, чтобы именно "требовал"
- "It is strongly recommended that...". Иногда легче в плагине сделать ссылку на web сервис (например, для доступа к собственным объектам и атрибутам), но учтите, что можно столкнуться, к примеру, с проблемой разных типов (из подключаемых библиотек и из сервиса).
|
|
|
|
|
#4 |
|
Moderator
|
Именно это я и имел в виду.
Когда MS что-то очень-очень строго советует - лучше не спорить.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() MS Certified Dirty Magic Professional
|
|
|
|
|
#5 |
|
Участник
|
я бы с радостью действовал как Microsoft велит, но не знаю как правильно, делал так:
Код: Microsoft.Crm.Sdk.BusinessEntityCollection salesorders = service.RetrieveMultiple(query);
DynamicEntity oSalesorder;
for (int i = 0; i < salesorders.BusinessEntities.Count; i++)
{
oSalesorder = (DynamicEntity)salesorders.BusinessEntities[i];Unable to cast object of type 'Microsoft.Crm.SdkTypeProxy.salesorder' to type 'Microsoft.Crm.Sdk.DynamicEntity' ![]() и чё делать? Видимо для Crm.Sdk нужен какой-тодругой запрос на получение набора Microsoft.Crm.Sdk.BusinessEntityCollection, но вот где прочитать как его правильно составить? |
|
|
|
|
#6 |
|
Moderator
|
Не удивительно, если вы заказывали SalesOrder а не DynamicEntity в запросе! У RetrieveMultipleRequest есть флаг ReturnDynamicEntities. Кроме того зачем делать такие запросы в плагине, если всю информацию по записи вы можете получить в InputParameters?
Читайте SDK, прежде чем задавать вопросы!!!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() MS Certified Dirty Magic Professional
|
|
|
|
|
#7 |
|
Участник
|
Артем, запросы такие делаю, чтобы просмотреть все нужные записи salesorder, а не только ту которая вызвала плагин (врядли все нужные salesorder будут в InputParameters).
SDK читаю, но ответов там не нашел (возможно недостаточно хорошо копаю там). Попробую организовать запрос через RetrieveMultipleRequest с указанным параметром ... |
|
|
|
|
#8 |
|
Moderator
|
Сдается мне, что вы опять поднимаете вопрос об авто нумерации.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() MS Certified Dirty Magic Professional
|
|
|
|
|
#9 |
|
Участник
|
:-) решать я его буду сам с учетом специфики навязанной сверху, вообщем уже решил, благодаря вашей подсказке. RetrieveMultipleRequest и ReturnDynamicEntities как раз то "что доктор прописал" :-) всё заработало! Спасибо за помощь
|
|
|
|
|
#10 |
|
Участник
|
код выложите плз
|
|
|
|
|
#11 |
|
Участник
|
Код: Microsoft.Crm.Sdk.Query.QueryExpression query = new Microsoft.Crm.Sdk.Query.QueryExpression();
query.ColumnSet = cols;
query.EntityName = EntityName.salesorder.ToString();
query.Criteria = filter;
RetrieveMultipleRequest rmr = new RetrieveMultipleRequest();
rmr.ReturnDynamicEntities = true;
rmr.Query = query;
RetrieveMultipleResponse rmResp = (RetrieveMultipleResponse)service.Execute(rmr);
Microsoft.Crm.Sdk.BusinessEntityCollection salesorders = rmResp.BusinessEntityCollection;
DynamicEntity oSalesorder;
for (int i = 0; i < salesorders.BusinessEntities.Count; i++)
{
oSalesorder = (DynamicEntity)salesorders.BusinessEntities[i];
//((CrmNumber)oSalesorder.Properties["new_ordernumber"]).Value;
} |
|
|
| Теги |
| plugin, businessentity |
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|