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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.02.2012, 15:49   #1  
KP0H is offline
KP0H
Участник
 
41 / 11 (1) +
Регистрация: 11.08.2011
Адрес: Тюмень
Update Task не приходит поле StateCode
Как правильно проверить что задача была закрыта.
Я сделал plugin на Update Task.
При срабатывании я проверяю статус задачи. Если статус есть - значит произошло событие смены статуса, проверяю на какой статус изменили. Если на 1 - значит задачу выполнили и я пускаю обработку события дальше.
Дело в том что это стабильно работало в нескольких плагинах, но в очередном перестало. Мне приходит сообщение что атрибута статус в плагин не пришло. Как это может быть если я завершаю задачу? Или как по другому можно отследить выполнение задачи?

X++:
// Obtain the target entity from the input parmameters.
                Entity task = (Entity)context.InputParameters["Target"];

                // Verify that the target entity represents an account.
                // If not, this plug-in was not registered correctly.
                if (task.LogicalName != "task")
                {
                    ToTrace("В контексте пришла не сущность \"Задача\".");
                    return;
                }

                if (!task.Contains("statecode"))
                {
                    ToTrace("Нет информации о статусе исполнения задачи. Выполение плагина завершено.");
                    return;
                }

                ToTrace("LN:{0};G:{1}", task.LogicalName, task.Id);

                ToTrace("Проверяем состояние задачи. {0}", (task["statecode"] as OptionSetValue).Value.ToString());
                if ((task["statecode"] as OptionSetValue).Value != 1)
                {
                    ToTrace("Состояние задачи не требует дальнейших действий. Выполнение плагина завершено.");
                    return;
                }
Старый 21.02.2012, 17:45   #2  
griefon is offline
griefon
Участник
 
131 / 52 (2) ++++
Регистрация: 07.12.2010
Адрес: down under
Надо вешать плагин на сообщение SetState и SetStateDynamicEntity. Они как раз отвечают за смену статуса.
Старый 22.02.2012, 11:31   #3  
KP0H is offline
KP0H
Участник
 
41 / 11 (1) +
Регистрация: 11.08.2011
Адрес: Тюмень
SetState не срабатывает, проверял.
Вопрос от чего зависит сработает Update или нужно использовать SetState. Если бы стабильно при изменении статуса задачи срабатывал бы только SetState - это одно, но тут какая-то зависимость то должна быть, хотелось бы её понять.

P.S> SetStateDynamicEntity честно говоря до этого не пробовал. Сейчас проверил вроде как он вызывается, но вопрос что он получает на входе. Как я понял в Target приходит уже не сущность с которой произошло действие. А Google дает в основном ссылки на 4.0, я так понял в 2011 что-то изменилось.
Старый 22.02.2012, 11:31   #4  
KP0H is offline
KP0H
Участник
 
41 / 11 (1) +
Регистрация: 11.08.2011
Адрес: Тюмень
SetState не срабатывает, проверял.
Вопрос от чего зависит сработает Update или нужно использовать SetState. Если бы стабильно при изменении статуса задачи срабатывал бы только SetState - это одно, но тут какая-то зависимость то должна быть, хотелось бы её понять.

P.S> SetStateDynamicEntity честно говоря до этого не пробовал. Сейчас проверил вроде как он вызывается, но вопрос что он получает на входе. Как я понял в Target приходит уже не сущность с которой произошло действие. А Google дает в основном ссылки на 4.0, я так понял в 2011 что-то изменилось.
Старый 22.02.2012, 11:38   #5  
griefon is offline
griefon
Участник
 
131 / 52 (2) ++++
Регистрация: 07.12.2010
Адрес: down under
Надо вешать сразу на два сообщения - SetState и SetStateDynamicEntity.
Update - это изменение полей, хотя вроде есть случай, когда меняется только statuscode на форме, то может выскочит это сообщение.

А в случае SetState и SetStateDynamicEntity в target приходит Moniker, как и было в 4.0.
Старый 22.02.2012, 11:46   #6  
KP0H is offline
KP0H
Участник
 
41 / 11 (1) +
Регистрация: 11.08.2011
Адрес: Тюмень
Цитата:
Сообщение от griefon Посмотреть сообщение
Надо вешать сразу на два сообщения - SetState и SetStateDynamicEntity.
Update - это изменение полей, хотя вроде есть случай, когда меняется только statuscode на форме, то может выскочит это сообщение.

А в случае SetState и SetStateDynamicEntity в target приходит Moniker, как и было в 4.0.
Если я правильно понял, то приходят
EntityMoniker : Microsoft.Xrm.Sdk.EntityReference
State : Microsoft.Xrm.Sdk.OptionSetValue
Status : Microsoft.Xrm.Sdk.OptionSetValue

В 4.0 приходил EntityMoniker как Entity, а не как EntityReference, или я ошибаюсь?

Почему нужно использовать одновременно SetState и SetStateDynamicEntity - они взаимоисключающие? По какому признаку?
Я сейчас экспериментирую с этим и суть то понял, но не понял причин.
За это сообщение автора поблагодарили: mistah (1).
Старый 24.02.2012, 14:15   #7  
griefon is offline
griefon
Участник
 
131 / 52 (2) ++++
Регистрация: 07.12.2010
Адрес: down under
Цитата:
Сообщение от KP0H Посмотреть сообщение
В 4.0 приходил EntityMoniker как Entity, а не как EntityReference, или я ошибаюсь?
В 4.0 Moniker это отдельный класс, в виде него Target и приходил.

Цитата:
Сообщение от KP0H Посмотреть сообщение
Почему нужно использовать одновременно SetState и SetStateDynamicEntity - они взаимоисключающие? По какому признаку?
Где-то вычитал, что надо вешать на оба сразу. На практике это заработало, поэтому причинами не интересовался.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Overview: Microsoft Dynamics CRM 4.0 Update Rollup 21 Blog bot Dynamics CRM: Blogs 0 11.02.2012 01:11
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 4 Blog bot Dynamics CRM: Blogs 0 24.09.2011 01:16
crminthefield: Overview: Microsoft Dynamics CRM 4.0 Update Rollup 19 Blog bot Dynamics CRM: Blogs 0 26.08.2011 01:13
crminthefield: Overview: Microsoft Dynamics CRM 4.0 Update Rollup 17 Blog bot Dynamics CRM: Blogs 0 06.05.2011 09:11
Microsoft Dynamics CRM Team Blog: Update Rollup 2 for Microsoft Dynamics CRM 4.0 - More Info Blog bot Dynamics CRM: Blogs 0 12.02.2009 13:05

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

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

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