AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.02.2014, 14:52   #1  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
CRM Money to Decimal C#
Добрый день!

Подскажите как в СРМ привести Money to Decimal.

Не работает!
Цитата:
decimal aggregate2 = Convert.ToDecimal(((AliasedValue)c.Attributes["totalamount_sum"]).Value);
или

decimal aggregate2 = (decimal)Convert.ToDecimal(((AliasedValue)c.Attributes["totalamount_sum"]).Value);
Старый 26.02.2014, 15:00   #2  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
totalamount_sum

это правильное название поля

без префикса?
или totalamount это он и есть?

c.Attributes["totalamount_sum"]

возвращает объект?
__________________
Мой блог https://procrm.tv
Старый 26.02.2014, 15:12   #3  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
totalamount_sum

это правильное название поля

без префикса?
или totalamount это он и есть?

c.Attributes["totalamount_sum"]

возвращает объект?
totalamount_sum - это алиас.

Вот метод, который должен возвращать
Цитата:
private static decimal FetchResult(Guid quantity, IOrganizationService service)
{
string value_sum = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' aggregate='true'>
<entity name='new_insurance_policy'>
<attribute name='erpc_payment' alias='totalamount_sum' aggregate='sum'/>
<filter type='and'>
<condition attribute='new_contact' operator='eq' value='{0}' />
</filter>
</entity>
</fetch>";

decimal TotalValue = 0;

value_sum = string.Format(value_sum, quantity);
EntityCollection value_sum_result = (EntityCollection)service.RetrieveMultiple(new FetchExpression(value_sum));

foreach (var c in value_sum_result.Entities)
{
decimal aggregate2 = (decimal)Convert.ToDecimal(((AliasedValue)c.Attributes["totalamount_sum"]).Value);


TotalValue = aggregate2;
}

return TotalValue;
}
Старый 26.02.2014, 15:15   #4  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
У меня еще проблема, не могу присоединиться к процессу, то есть плагин не получается отдебажить.
Следую таким шагам
1) Построил решение
3) Скопировал .pdb в C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly
2) Restart IIS
3) Запустил откладку Debbuging
5) Connect to the Microsoft.Crm.Sandbox.HostService.exe.

И ничего не происходит(

НЕ знаю в чем может быть проблема
Старый 26.02.2014, 15:24   #5  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Вот ошибка
Цитата:

PackageSalamandraCrm.CountChildSum.CalculateTotalSum: System.InvalidCastException: Не удалось привести тип объекта "Microsoft.Xrm.Sdk.Money" к типу "System.IConvertible".</Message>
Старый 26.02.2014, 15:29   #6  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
decimal aggregate2 = (decimal)Convert.ToDecimal(((AliasedValue)c.Attributes["totalamount_sum"]).Value);

1 нет проверки, что там значение есть

2 не пробовал использовать алиас для такой работы.
что то мне кажется, что не будет он так работать.
может ошибаюсь.

(AliasedValue) это Money?


Ваш плагин в Sandbox зарегистрирован?
если нет, то w3wp Вам нужен
__________________
Мой блог https://procrm.tv

Последний раз редактировалось g.Naukovych; 26.02.2014 в 15:34.
Старый 26.02.2014, 15:32   #7  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Ваш плагин в Sandbox зарегистрирован?
Да
Цитата:
<Solution Description="" Assembly="PackageSalamandraCrm.CountChildSum.dll" Id="68ab7407-cd9e-e311-8894-00155d020503" IsolationMode="Sandbox" SourceType="Database">
Старый 26.02.2014, 15:58   #8  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Если у вас аггрегация по полю типа Money, то и результат будет Money. Примерно так:

Код:
decimal aggregate2 = ((Money)c.GetAttributeValue<AliasedValue>("totalamount_sum").Value).Value;
По поводу отладки сандбокс плагинов посмотрите следующую статью - http://gustafwesterlund.blogspot.com...d-plugins.html
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Ion (1).
Старый 26.02.2014, 16:14   #9  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от a33ik Посмотреть сообщение
Если у вас аггрегация по полю типа Money, то и результат будет Money. Примерно так:

Код:
decimal aggregate2 = ((Money)c.GetAttributeValue<AliasedValue>("totalamount_sum").Value).Value;
По поводу отладки сандбокс плагинов посмотрите следующую статью - http://gustafwesterlund.blogspot.com...d-plugins.html
На SDK нашел этот же пример.

Относительно откладки - не понимаю почему VS никак не реагирует на процесс Microsoft.Crm.Sandbox.HostService.exe.

Копирую в парку Assambley file pdb, потом рестуртую ИИС, и запускаю откладку, при этом присоединяюсь к процессу Microsoft.Crm.Sandbox.HostService.exe.

Сейчас СРМ никак не реагирует, раньше работало((
Старый 26.02.2014, 16:32   #10  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Ion Посмотреть сообщение
Относительно откладки - не понимаю почему VS никак не реагирует на процесс Microsoft.Crm.Sandbox.HostService.exe.

Копирую в парку Assambley file pdb, потом рестуртую ИИС, и запускаю откладку, при этом присоединяюсь к процессу Microsoft.Crm.Sandbox.HostService.exe.

Сейчас СРМ никак не реагирует, раньше работало((
Всё вроде бы честно (только не вижу смысла перезапускать IIS - это нужно было ещё во временя 4.0 и то не всегда). Попробуйте зарегистрировать плагин без изоляции и атачиться к w3wp.exe
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 27.02.2014, 12:41   #11  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Странную ошибку выдает плагин, что сущность контакт не найдена.

Я создав почти два идентичных плагина.

Они суммируют суммы из дочерних записей и результат пишут в Контакт.

На в тестовой среде все ок, но после переноса на боевую среду такая ситуация: "один плагин отрабатывает без проблем на сущности А, второй на сущности Б пишет ошибку, хотя они обновляют одну и туже сущность Контакт".

Цитата:
The entity with a name = 'contact1' was not found in the MetadataCache.
Цитата:
Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault,
Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:
The entity with a name = 'contact1' was not found in the MetadataCache.Detail:
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
<ErrorCode>-2147220891</ErrorCode>
<ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
<KeyValuePairOfstringanyType>
<d2p1:key>CallStack</d2p1:key>

<d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">
в Microsoft.Crm.Extensibility.VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context)
в Microsoft.Crm.Extensibility.Pipeline.Execute(PipelineExecutionContext context)
в Microsoft.Crm.Extensibility.MessageProcessor.Execute(PipelineExecutionContext context)
в Microsoft.Crm.Extensibility.InternalMessageDispatcher.Execute(PipelineExecutionContext context)
в Microsoft.Crm.Extensibility.ExternalMessageDispatcher.ExecuteInternal(IInProcessOrganizationServiceFactory serviceFactory,
IPlatformMessageDispatcherFactory dispatcherFactory, String messageName, String requestName, Int32 primaryObjectTypeCode,
Int32 secondaryObjectTypeCode, ParameterCollection fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId, Guid transactionContextId, Int32 invocationSource, Nullable`1 requestId, Version endpointVersion)
в Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request,
CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType,
UserAuth userAuth, Guid targetUserId, Boolean traceRequest, OrganizationContext context, Boolean returnResponse)
в Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request,
CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType)
в Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Execute(OrganizationRequest request,
CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType)</d2p1:value>
</KeyValuePairOfstringanyType>
<KeyValuePairOfstringanyType>
<d2p1:key>OperationStatus</d2p1:key>
<d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">0</d2p1:value>
</KeyValuePairOfstringanyType>
</ErrorDetails>
<Message>The entity with a name = 'contact1' was not found in the MetadataCache.</Message>
<Timestamp>2014-02-27T08:24:01.6682837Z</Timestamp>
<InnerFault i:nil="true" />
<TraceText>
[AdvancedUpdater: AdvancedUpdater.CPlugin]
[5b2421e9-c305-e211-9afb-00155d001525: AdvancedUpdater.CPlugin: Update of any Entity]

</TraceText>
</OrganizationServiceFault>


Последний раз редактировалось Ion; 27.02.2014 в 12:45.
Старый 27.02.2014, 14:33   #12  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Полный код покажите, пожалуйста.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 27.02.2014, 14:50   #13  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Спасибо! Все починили
Старый 04.03.2014, 22:38   #14  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Во первых, рекомендую почитать раздел по отладке плагинов в SDK. Sandbox сервис будет безжалостно валить "зависшие" в отладчике процессы, если вы не запретите ему это делать. Так же рекомендую подход, который сам активно использую: http://www.axforum.info/forums/blog.php?b=329

Что касается самого кода по работе с агрегатами, рекомендую не писать такие вот портянки преобразований. Если в результате агрегации получится NULL, система не вернет и сам AliasedValue: http://www.axforum.info/forums/blog.php?b=417
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 15 Blog bot Dynamics CRM: Blogs 1 10.02.2016 10:26
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 16 Blog bot Dynamics CRM: Blogs 0 23.01.2014 03:15
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 14 Blog bot Dynamics CRM: Blogs 0 12.07.2013 07:13
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 13 Blog bot Dynamics CRM: Blogs 0 27.03.2013 22:12
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 10 Blog bot Dynamics CRM: Blogs 0 17.08.2012 03:27

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:34.