Опитвате се да промените собственика на акаунт в CRM 4.0 с помощта на плъгин

Създавам плъгин за Microsoft Dynamics CRM 4, който ще промени собственика на обекта на акаунта според стойността на друго поле за справка. Сега успях да получа GUID на потребителя, който ще действа като „Собственик“ на акаунта. Дотук добре. Проблемът възниква, когато се опитам да сменя собственика. Опитвам се да използвам AssignRequest, но не работи. Когато се опитам да изпълня заявката, получавам SoapException на C# Debugger и уеб услугата извежда диалогов прозорец, който гласи: „Исканият запис не е намерен или нямате достатъчно разрешения, за да го видите“

По-долу е кодът, който използвам:

                    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