|  04.03.2008, 13:26 | #1 | 
| CRM | Отлов Assign 
			
			Добрый день. Вот я столкнулся с первой проблемой, а может быть и глюком... В общем, надо уведомлять о назначении менеджера ответственным. Реализовал ф-ю уведомления. Есть 2 варианта: делать через callout или через WorkFlow. Далее есть 2 варианта: изменять назначение из формы или из кода. Рассмотрим ситуации: 1. Из формы - callout: сработало правило 1 раз - WorkFlow: сработало правило 1 раз 2. Из кода (назначение как меняется так и остаётся преждним, но в обоих случаях заполняем поле ownerid) - внешняя сборка, допустим консольное приложение. - callout: сработало правило 0 раз - WorkFlow: сработало правило 2 раза У кого какие мысли? Полез в SDK  ЗЫ MS CRM 3.0 Последний раз редактировалось ShurikEv; 04.03.2008 в 13:27. Причина: Забыл добавить :) | 
|  | 
|  04.03.2008, 14:19 | #2 | 
| Участник | 
			
			Я идентичную задачу у нас сделал колаутом. Работает как часики. Конфиг должен так выглядеть. ..................... <callout entity="account" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> <callout entity="task" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> <callout entity="contact" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> <callout entity="opportunity" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> <callout entity="campaignresponse" event="PostAssign"> <subscription assembly="CallOutSendMail2003.dll" class="SendMessageCallOut.Verify"> <prevalue>ownerid</prevalue> <postvalue>ownerid</postvalue> </subscription> </callout> </callout.config> ----------------------------------------------------------------- Пример кода колаута namespace SendMessageCallOut { publicoverridevoid PostAssign(CalloutUserContext userContext, CalloutEntityContext entityContext, string preImageEntityXml, string postImageEntityXml) { тра та та - отправка сообщения (создает письмо в CRM отправляет и удаляет его из CRM) - пример кода создания писем есть в SDK. } ............................... | 
|  | 
|  04.03.2008, 14:34 | #3 | 
| CRM | 
			
			Т.е. никто больше глюков не наблюдал? Уважаемы, tatra. А вы пробовали программно менять назначение? callout'ы срабатывают? Конфиг я-то прописал правильно ;-) Это видно хотя бы из того, что callout срабатывает при смене ответственного на форме. А вот из кода - фиг. Для проверки у меня сейчас стоит простая запись в лог. | 
|  | 
|  04.03.2008, 16:53 | #4 | 
| Участник | 
			
			Ладно  ,  понятно. Я этим вопросом не занимался. Но мне кажется нужно отправлять письмо там же где и происходит Assign программно. | 
|  | 
|  05.03.2008, 07:50 | #5 | 
| CRM | 
			
			А может кто-нибудь кому не сложно произвести этот опыт у себя? Чтобы стало понятно, что это за такое: бага или у меня что-то где-то не то   Спасибо. | 
|  | 
|  06.03.2008, 13:00 | #6 | 
| Заноза в заднице | 
			
			Если не сложно - поясните суть проблемы более предметно. Преподнесите условие задачи более целостно - тогда не лень будет и воспроизвести.
		 
				__________________ Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! | 
|  | 
|  06.03.2008, 14:22 | #7 | 
| CRM | 
			
			2Likefire Еще раз объясняю  Тестирую функционал Assign. Для этого написал callout и WF-функцию. Сделал, чтобы они срабатывали при назначении ответственного. При срабатывании пишу в лог информацию (к примеру, Id объекта - не суть важен какой объект, главное чтобы имел ответсвенного). Так вот при смене ответсвенного 1. Из формы - callout: сработало правило 1 раз - WorkFlow: сработало правило 1 раз 2. Из кода (назначение как меняется так и остаётся преждним, но в обоих случаях заполняем поле ownerid) - внешняя сборка, допустим консольное приложение. - callout: сработало правило 0 раз - WorkFlow: сработало правило 2 раза Видно, что когда манипуляции производятся из кода, то реакция не ожиданная. | 
|  | 
|  21.03.2008, 10:54 | #8 | 
| CRM | 
			
			Проблема то что Workflow срабатывало 2 раза на половину решилось с помощью Rollup3: приходит одно оповещение, даже если ответственный не менялся, но он был проставлен в коде X++: account acc = new account(); acc.accountid = new Key(); acc.accountid.Value = new Guid("601D7FB6-68CD-DC11-8940-0003FF0A1ABB"); acc.ownerid = new Owner(); acc.ownerid.type = EntityName.systemuser.ToString(); acc.ownerid.Value = new Guid("B05A92E4-E97B-DC11-8490-0003FF0C1ABB"); service.Update(acc); 
				__________________ MS CRM 3.0/4.0  Sharepoint 2003, MOSS 2007/2010  Последний раз редактировалось ShurikEv; 21.03.2008 в 10:56. | 
|  | 
|  21.03.2008, 14:29 | #9 | 
| Заноза в заднице | 
			
			Подозреваю, что callout тне предназначен для срабатывания иначе кроме как из формы. Не боюсь показаться дремучим, но у меня есть уверенность в том, что я где-то об этом читал. Сейчас ещё раз распотрошу свою вумную книженцию и скорее всего процитирую некие выдержки.
		 
				__________________ Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! | 
|  | 
|  22.03.2008, 08:04 | #10 | 
| CRM | 
			
			Всякие Pre/Post Update/Create/Delete срабатывают...
		 
				__________________ MS CRM 3.0/4.0  Sharepoint 2003, MOSS 2007/2010  | 
|  | 
|  22.03.2008, 11:37 | #11 | 
| Moderator | 
			
			Callout - расширения бизнес логикой платформы и с формой никак не связаны!  Cрабатывать они должны всегда, например, при выходе из автономного режима. Проблема может быть в том, что вы используете не те ф-ции. Формально событие изменения записи, смены состояния и переназначения - это разные события! Если вы просто подменяете GUID в коде, что вы и делаете, то событие будет UpDate!!! Чтобы сработало Assign надо использовать соответствующую ф-цию. Что-то вроде AccountTargetAssign, наверно - под рукой сейчас нет SDK. 
				__________________ http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.   MS Certified Dirty Magic Professional | 
|  | |
| За это сообщение автора поблагодарили: ShurikEv (1). | |
|  24.03.2008, 07:12 | #12 | 
| CRM | 
			
			Если вы имели ввиду связку TargetOwnedAccount/AssignRequest, то это же для назначения доступа (дать доступ группе/пользователю). Это никак не меняет ответственного. И я считаю, что всякие методы типа TargetХХХRequest/Response - это просто тоже самое, что и Create/Update/Delete, но другими словами. Кому как удобно, тот так и использует. Но я всё равно поищю подходящую функцию.  Но опяться же: почему WF сработало, а Callout нет? Вот что для меня странно. Т.е. WF поняло, что произошла смена ответсвенного (даже если он не поменялся  ), а вот для Callout это не так (даже когда ответственный меняется). Налицо, какое-то несоответсвие логике  
				__________________ MS CRM 3.0/4.0  Sharepoint 2003, MOSS 2007/2010  | 
|  | 
|  24.03.2008, 07:38 | #13 | 
| CRM | 
			
			Прошу прощения за проявленную некомпетентность   Связка TargetOwnedAccount/AssignRequest/AssignResponse повела как нужно: из кода и из формы вызвала ровно по 1 разу и WF и Callout. Спасибо. 
				__________________ MS CRM 3.0/4.0  Sharepoint 2003, MOSS 2007/2010  | 
|  | 
|  24.03.2008, 08:12 | #14 | 
| Moderator | 
			
			Обращайтесь.   Рассходжение, вероятно, было вызвано тем, что WF - несколько сторонняя сущность относительно бизнесс логики. В 4.0. и Сallout и WF мутировали в единую породу Плагинов. Вероятно теперь расхождений будет меньше.   
				__________________ http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.   MS Certified Dirty Magic Professional Последний раз редактировалось Артем Enot Грунин; 24.03.2008 в 08:16. | 
|  | 
|  24.03.2008, 08:19 | #15 | 
| CRM | 
			
			Вот про 4.0 тоже пока не совсем всё гладко пока для меня. Есть WF, которые теперь WF+Callout. Но там же еще есть и plugin's. Вот что это за зверь, для меня пока тайна. Тайна, т.к. с 4кой практически не работал...
		 
				__________________ MS CRM 3.0/4.0  Sharepoint 2003, MOSS 2007/2010  | 
|  | 
|  25.03.2008, 09:38 | #16 | 
| Moderator | 
			
			Поправлю: Callout-ы и WF перешли на единую платформу, но это два различных способа настраивать бизнес-логику. WF задается с помощью интерфейса бизнес-процессов и расширяются с помощью WWF активностей. Plugin-ы (в 3.0 - callout-ы) работают на платформенном уровне. | 
|  | 
|  25.03.2008, 09:50 | #17 | 
| CRM | 
			
			AndreyS вот именно так мне это и показалось. Но вечные фразы, что "Callout и WF слились воедино" наводило на мысль, что от callout отказались, а заменили WF. Теперь ясно хоть.
		 
				__________________ MS CRM 3.0/4.0  Sharepoint 2003, MOSS 2007/2010  | 
|  |