Пытаюсь сменить владельца аккаунта в CRM 4.0 с помощью плагина

Я создаю плагин для Microsoft Dynamics CRM 4, который изменит владельца объекта учетной записи в соответствии со значением другого поля поиска. Теперь мне удалось получить GUID пользователя, который будет действовать как «Владелец» учетной записи. Все идет нормально. Проблема возникает, когда я пытаюсь изменить владельца. Я пытаюсь использовать AssignRequest, но это не работает. Когда я пытаюсь выполнить запрос, я получаю исключение SoapException в отладчике С#, и веб-служба выводит диалоговое окно с сообщением: «Запрошенная запись не найдена или у вас недостаточно прав для ее просмотра».

Ниже приведен код, который я использую:

                    TargetOwnedAccount target = new TargetOwnedAccount();

                    SecurityPrincipal assignee = new SecurityPrincipal();
                    assignee.Type = SecurityPrincipalType.User;
                    assignee.PrincipalId = context.InitiatingUserId;

                    target.EntityId = ownerGuid; //this is the GUID I am retrieving from the other lookup field

                    AssignRequest assign = new AssignRequest();
                    assign.Assignee = assignee;
                    assign.Target = target;

                    AssignResponse res = (AssignResponse)crmService.Execute(assign); //this is where i get the exception

Надеюсь, я ничего не пропустил. Любая помощь будет высоко оценена :) Спасибо


person Pawcu    schedule 30.07.2012    source источник


Ответы (1)


Хорошо, мне удалось решить это, наконец. Он смотрел прямо мне в лицо :P Я вводил неправильные идентификаторы не в том месте. Мне нужно было установить «assignee.PrincipalId» на «ownerGuid», а затем установить «target.EntityId» на идентификатор текущей учетной записи. Новый код выглядит следующим образом:

                TargetOwnedAccount target = new TargetOwnedAccount();

                SecurityPrincipal assignee = new SecurityPrincipal();
                assignee.Type = SecurityPrincipalType.User;
                assignee.PrincipalId = ownerGuid; //this is the GUID I am retrieving from the other lookup field

                target.EntityId = ((Key)entity.Properties["accountid"]).Value;

                AssignRequest assign = new AssignRequest();
                assign.Assignee = assignee;
                assign.Target = target;

                AssignResponse res = (AssignResponse)crmService.Execute(assign);

Не могу поверить, что вчера я провел 8 часов, глядя на это, а сегодня я сразу понял: P

person Pawcu    schedule 31.07.2012
comment
Часто бывает полезно сделать паузу и ненадолго отступить ;) - person ccellar; 31.07.2012