![]() |
#1 |
Участник
|
![]()
Хотим к salesorderdetail прицепить плагин на событие update, чтобы вычитать заказанное кол-во товара из общего кол-ва quantityonhand для product. Но для правильной обработки всех возможных вариантов необходимо знать значение поля quantity сущности salesorderdetail до события update. Обращение к свойству PreEntityImage не даёт положительного результата
context.PreEntityImages.Contains("quantity") возвращает false! В регистрации плагина Image прописываем, но всё равно не дает ничего хоть в Image один параметр, хоть AllAttributes. Подскажите пожалуйста куда копать? |
|
![]() |
#2 |
CRM
|
Может обработку вести не в Post а в Pre событии?
__________________
MS CRM 3.0/4.0 ![]() Sharepoint 2003, MOSS 2007/2010 ![]() |
|
![]() |
#3 |
Участник
|
Как раз в Pre и вели
|
|
![]() |
#4 |
Moderator
|
Затруднительно ответить. В крайнем случае можно вычитать эти данные через сервис. Да, попробуйте убедиться, что PreImage - это DynamicEntity. Вполне возможно, что это Moniker - заглушка которая ничего про запись не знает.
Еще в SDK есть строчка: Whether the image is obtained during the pre-event or post-event of the event execution pipeline depends on which stage the associated SdkMessageProcessingStepRegistration instance is being registered for. Посмотрите, может все же как-то не правильно регистрируете?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() |
|
![]() |
#5 |
CRM
|
Помнится еще в тройке для того чтобы PreImage не был пустым надо было указывать поля, значения которых мы хотим получить.
Как в 4ке не знаю...
__________________
MS CRM 3.0/4.0 ![]() Sharepoint 2003, MOSS 2007/2010 ![]() |
|
![]() |
#6 |
Участник
|
вообщем пока сделали через service, из контекста получаем только salesorderdetailid. Если что накопаю с получением именно из context отпишусь
|
|
![]() |
#7 |
Moderator
|
Какие данные содержит preImage? Только id и имя сущности? Тут обсуждается аналогичная проблема: http://www.eggheadcafe.com/software/...-plugin-c.aspx Решение не описано, судя по всему я был прав и вы получаете Moniker вместо DE. Можно ли сделать иначе пока не знаю.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() |
|
![]() |
#8 |
Участник
|
"Какие данные содержит preImage? Только id и имя сущности?" - а вот как это узнать? я даже не могу узнать кол-во аттрибутов, не говоря уже о самих свойствах
|
|
![]() |
#9 |
Moderator
|
Дебаггером пользоваться не пробовали?
![]()
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() |
|
![]() |
#10 |
Чайный пьяница
|
Цитата:
Для этого надо выполнить следующие шаги: 1. Скопировать в папку assembly pdb file. 2. В студии - установить брейк поинт в методе Execute, который реализует интерфейс IPlugin. 3. Выполнить присоединение Студией к процессу w3p. 4. Через watch - посмотреть объект context.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#11 |
Участник
|
Ну а зачем запариваться с контестом, когда действительно (как уже автор темы и сделал) можно сделать все через CrmService - производительность этот никак не ухудшит (по-любому в плагине используется экземпляр сервиса для какого-либо действия).
|
|
![]() |
#12 |
Moderator
|
Цитата:
Цитата:
Tip: Registering for pre or post images to access entity attribute values results in improved plug-in performance as compared to obtaining entity attributes in plug-in code through Retrieve or RetrieveMultiple requests.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. ![]() ![]() |
|
![]() |
#13 |
Чайный пьяница
|
Надеюсь, что это будет полезно автору темы. http://www.microsoft.com/communities...b-94ee39bd7454
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: zhenek (1). |
![]() |
#14 |
Участник
|
C пошаговой отладкой сборок никогда не имел дело, но как будет время займусь. Спасибо всем за советы
|
|
![]() |
#15 |
Участник
|
Спасибо, a33ik, за полезную ссылку. Ключем к решению проблемы стала фраза "In your code, you will now be able to select the image using the name
set during registration". Я думал с PreEntityImages надо работать как с InputParameters, а надо context.PreEntityImages["<имя образа>"]! В очередной раз до пошаговой отладки кода дело не дошло :-) |
|
![]() |
#16 |
Участник
|
zhenek
Если часто приходится разрабатывать плагины, то советую разобраться с отладкой первым делом - это очень удобная штука, я сейчас без нее вообще ниодного плагина не делаю. ) Все, что нужно для этого, это: 1) иметь студию с C# на сервере (remote debuggin'гом особо не занимался, не было необходимости) 2) поставить точку остановка в коде так: System.Diagnostics.Debugger.Break() 3) не забыть положить рядом с dll плагина отладочный фаил .pdb Все, регим плагим, делаем его событие, ловим эксепшен и вперед дебажить ![]() |
|
Теги |
context, plugin, update, плагин, контекст, предыдущее значение |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|