10.11.2008, 22:01 | #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? |
|
10.11.2008, 22:09 | #2 |
Moderator
|
Вообще говоря, MS требует (именно требует) чтобы в плагинах использовался класс DynamicEntity. Среди его Propertys должно быть и ваше поле. Вы действительно делали что-то не так.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
10.11.2008, 23:02 | #3 |
Moderator
|
Ну, я не помню, чтобы именно "требовал" - "It is strongly recommended that...". Иногда легче в плагине сделать ссылку на web сервис (например, для доступа к собственным объектам и атрибутам), но учтите, что можно столкнуться, к примеру, с проблемой разных типов (из подключаемых библиотек и из сервиса).
|
|
11.11.2008, 08:47 | #4 |
Moderator
|
Именно это я и имел в виду. Когда MS что-то очень-очень строго советует - лучше не спорить.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
11.11.2008, 09:16 | #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, но вот где прочитать как его правильно составить? |
|
11.11.2008, 09:48 | #6 |
Moderator
|
Не удивительно, если вы заказывали SalesOrder а не DynamicEntity в запросе! У RetrieveMultipleRequest есть флаг ReturnDynamicEntities. Кроме того зачем делать такие запросы в плагине, если всю информацию по записи вы можете получить в InputParameters?
Читайте SDK, прежде чем задавать вопросы!!!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
11.11.2008, 12:29 | #7 |
Участник
|
Артем, запросы такие делаю, чтобы просмотреть все нужные записи salesorder, а не только ту которая вызвала плагин (врядли все нужные salesorder будут в InputParameters).
SDK читаю, но ответов там не нашел (возможно недостаточно хорошо копаю там). Попробую организовать запрос через RetrieveMultipleRequest с указанным параметром ... |
|
11.11.2008, 13:11 | #8 |
Moderator
|
Сдается мне, что вы опять поднимаете вопрос об авто нумерации.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
11.11.2008, 16:55 | #9 |
Участник
|
:-) решать я его буду сам с учетом специфики навязанной сверху, вообщем уже решил, благодаря вашей подсказке. RetrieveMultipleRequest и ReturnDynamicEntities как раз то "что доктор прописал" :-) всё заработало! Спасибо за помощь
|
|
12.11.2008, 06:40 | #10 |
Участник
|
код выложите плз
|
|
13.11.2008, 11:48 | #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 |
|
|