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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.12.2008, 17:44   #1  
zhenek is offline
zhenek
Участник
 
133 / 10 (1) +
Регистрация: 01.02.2007
? Plug-in: как из контекста получить предыдущие данные?
Хотим к salesorderdetail прицепить плагин на событие update, чтобы вычитать заказанное кол-во товара из общего кол-ва quantityonhand для product. Но для правильной обработки всех возможных вариантов необходимо знать значение поля quantity сущности salesorderdetail до события update. Обращение к свойству PreEntityImage не даёт положительного результата
context.PreEntityImages.Contains("quantity")
возвращает false!
В регистрации плагина Image прописываем, но всё равно не дает ничего хоть в Image один параметр, хоть AllAttributes.

Подскажите пожалуйста куда копать?
Старый 24.12.2008, 06:35   #2  
ShurikEv is offline
ShurikEv
CRM
 
213 / 28 (1) +++
Регистрация: 25.04.2006
Адрес: г. Новосибирск
Может обработку вести не в Post а в Pre событии?
__________________
MS CRM 3.0/4.0
Sharepoint 2003, MOSS 2007/2010
Старый 24.12.2008, 09:43   #3  
zhenek is offline
zhenek
Участник
 
133 / 10 (1) +
Регистрация: 01.02.2007
Как раз в Pre и вели
Старый 24.12.2008, 10:57   #4  
Артем 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
Затруднительно ответить. В крайнем случае можно вычитать эти данные через сервис. Да, попробуйте убедиться, что 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, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 24.12.2008, 12:13   #5  
ShurikEv is offline
ShurikEv
CRM
 
213 / 28 (1) +++
Регистрация: 25.04.2006
Адрес: г. Новосибирск
Помнится еще в тройке для того чтобы PreImage не был пустым надо было указывать поля, значения которых мы хотим получить.
Как в 4ке не знаю...
__________________
MS CRM 3.0/4.0
Sharepoint 2003, MOSS 2007/2010
Старый 25.12.2008, 14:03   #6  
zhenek is offline
zhenek
Участник
 
133 / 10 (1) +
Регистрация: 01.02.2007
вообщем пока сделали через service, из контекста получаем только salesorderdetailid. Если что накопаю с получением именно из context отпишусь
Старый 25.12.2008, 14:28   #7  
Артем 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
Какие данные содержит preImage? Только id и имя сущности? Тут обсуждается аналогичная проблема: http://www.eggheadcafe.com/software/...-plugin-c.aspx Решение не описано, судя по всему я был прав и вы получаете Moniker вместо DE. Можно ли сделать иначе пока не знаю.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 26.12.2008, 10:03   #8  
zhenek is offline
zhenek
Участник
 
133 / 10 (1) +
Регистрация: 01.02.2007
"Какие данные содержит preImage? Только id и имя сущности?" - а вот как это узнать? я даже не могу узнать кол-во аттрибутов, не говоря уже о самих свойствах
Старый 26.12.2008, 11:48   #9  
Артем 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
Дебаггером пользоваться не пробовали? Кроме того, данные можно и в файл выводить.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 26.12.2008, 12:36   #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
Цитата:
Сообщение от zhenek Посмотреть сообщение
"Какие данные содержит preImage? Только id и имя сущности?" - а вот как это узнать? я даже не могу узнать кол-во аттрибутов, не говоря уже о самих свойствах
Как и написал Артём - необходимо отладить.

Для этого надо выполнить следующие шаги:

1. Скопировать в папку assembly pdb file.
2. В студии - установить брейк поинт в методе Execute, который реализует интерфейс IPlugin.
3. Выполнить присоединение Студией к процессу w3p.
4. Через watch - посмотреть объект context.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 26.12.2008, 13:01   #11  
Alir is offline
Alir
Участник
 
47 / 14 (1) ++
Регистрация: 02.08.2008
Адрес: Санкт-Петербург
Ну а зачем запариваться с контестом, когда действительно (как уже автор темы и сделал) можно сделать все через CrmService - производительность этот никак не ухудшит (по-любому в плагине используется экземпляр сервиса для какого-либо действия).
Старый 26.12.2008, 13:10   #12  
Артем 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
Цитата:
Сообщение от Alir Посмотреть сообщение
Ну а зачем запариваться с контестом, когда действительно (как уже автор темы и сделал) можно сделать все через CrmService - производительность этот никак не ухудшит (по-любому в плагине используется экземпляр сервиса для какого-либо действия).
Надо в SDK посмотреть по любому!
Цитата:
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, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 27.12.2008, 16:20   #13  
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
Надеюсь, что это будет полезно автору темы. http://www.microsoft.com/communities...b-94ee39bd7454
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: zhenek (1).
Старый 28.12.2008, 11:37   #14  
zhenek is offline
zhenek
Участник
 
133 / 10 (1) +
Регистрация: 01.02.2007
C пошаговой отладкой сборок никогда не имел дело, но как будет время займусь. Спасибо всем за советы
Старый 28.12.2008, 12:00   #15  
zhenek is offline
zhenek
Участник
 
133 / 10 (1) +
Регистрация: 01.02.2007
Спасибо, a33ik, за полезную ссылку. Ключем к решению проблемы стала фраза "In your code, you will now be able to select the image using the name
set during registration". Я думал с
PreEntityImages надо работать как с InputParameters, а надо context.PreEntityImages["<имя образа>"]!
В очередной раз до пошаговой отладки кода дело не дошло :-)
Старый 30.12.2008, 11:36   #16  
Alir is offline
Alir
Участник
 
47 / 14 (1) ++
Регистрация: 02.08.2008
Адрес: Санкт-Петербург
zhenek
Если часто приходится разрабатывать плагины, то советую разобраться с отладкой первым делом - это очень удобная штука, я сейчас без нее вообще ниодного плагина не делаю. )

Все, что нужно для этого, это:
1) иметь студию с C# на сервере (remote debuggin'гом особо не занимался, не было необходимости)
2) поставить точку остановка в коде так: System.Diagnostics.Debugger.Break()
3) не забыть положить рядом с dll плагина отладочный фаил .pdb

Все, регим плагим, делаем его событие, ловим эксепшен и вперед дебажить
Теги
context, plugin, update, плагин, контекст, предыдущее значение

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Получить данные из формы родителя DinDim Dynamics CRM: Разработка 3 19.02.2009 15:38
mscrm4ever: CRM 4.0 Concatenating Fields Plug-In Blog bot Dynamics CRM: Blogs 0 14.02.2009 14:05
Microsoft Dynamics CRM Team Blog: Member, Static variable and Thread safety in Plug-in for CRM 4.0 Blog bot Dynamics CRM: Blogs 0 19.11.2008 00:05
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM Plug-in Template for Visual Studio Blog bot Dynamics CRM: Blogs 0 27.10.2008 23:05
Microsoft Dynamics CRM Team Blog: Accessing a SQL Database from a Microsoft Dynamics CRM Plug-in Blog bot Dynamics CRM: Blogs 0 14.07.2008 13:05

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

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

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