![]() |
#2 |
Участник
|
Собственно я не очень понял Ваш вопрос.
Если я использую сервис из контекста ретривы срабатывают без проблем. Значит нужно его использовать. Теперь по поводу почему это происходит. И происходит именно так. И Происходит именно так в CRM 2011 В CRM 2011 теперь плагины выполняются в транзакции. В CRM есть след. шаги плагинов 10 PreOperation 20 PreValidation 30 40 PostOperation 50 PostOperation (deprecated) Шаги 20 30 40 находятся в транзакции В CRM 4 мы могли вешать плагин на 10 PreOperation и на 50 PostOperation В CRM 2011 на 10 PreOperation, 20 PreValidation и 40(СОРОК) PostOperation То есть любой плагин выполняется в транзакции. Тепер что получается? Когда данные в транзакции и еще не сохранены в БД полностью Вы пытаетесь её считать. Вот у Вас и ошибка. Я это проверял при попытке считать из БД данные напрямую. Также проверял, что это работает если использовать веб-сервис из контекста плагина. Еще можно попробовать повесить это все на асинхронную операцию. таким образом, когда данные будут сохранены и их можно будет считать, асинхронный плагин отвиснет и считает. С получением данных из БД это работало. Напишите если это помогло. В подтверждении своих слов нашёл у Вас следующее The timeout period elapsed prior to completion of the operation То есть представте, что Вы пишете в таблицу ContactBase и ContactExtantionBase. В этот самый момент данные еще не сохранены. и Вы тут же пытаетесь считать данные. При чем из другой транзакции. Естественно другая транзакция ждёт, когда Вы данные отпустите, а Вы их не отпускаете и ждете, когда другая транзакция их получит. Это явный DeadLock. В результате TimeOut. Вот теперь это точно. Последний раз редактировалось g.Naukovych; 20.03.2012 в 00:53. |
|
|
За это сообщение автора поблагодарили: Konstantin Katsovich (2). |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|