cub-e.net

just coding...

Dynamics CRM 2015-2016 Messages Ozelliklerine Takilmadan Islemlerimizi Yapmak

Dynamics CRM icerisinde ozel amacla kullanilan bircok alan bulunmaktadir ve bu alanlarin ozel tipleri vardir. Yani bu alanlara standart .Net tipleri degil de CRM siniflarini parameter olarak atamaktayiz.

Bu duruma verebilecegimiz en unlu ornek ise statecode ve statuscode alanlarinin OptionSet deger almasi ve bunlarin kendilerine ozgu ozel message yapisi ile guncellenebilmesidir. Hatta bu islem oncesi kaydet guncellenemiz gerekiyorsa bu degerleri iceren bir SetStateRequest gondermeniz daha sonra da Update etmemiz gerekmektedir.

Kod uzerinde bu durumu  incelersek; Assign yani birisine kayit atama ve SetStateRequest yani kaydin durumunu guncellemek icin ayri islemler yaptigimizi ve kodun ne kadar uzadigini gorebilirsiniz.

            using (var service = new OrganizationService(crmConnection))

            {

                Entity account = new Entity("account");

                account["accountid"] = new Guid("0C2D5AC7-B7E4-E411-80E9-C4346BAC7DA8");

                account["name"] = "Adventure Works Inc.";

                account["creditlimit"] = new Money(100000);

 

                // Service call 1 – standart alanlari guncellestir

                var updateRequest = new UpdateRequest() { Target = account };

                var updateResponse = (UpdateResponse)service.Execute(updateRequest);

 

                // Service call 2 – sahipligi degistir

                var assignRequest = new AssignRequest()

                {

                    Assignee = new EntityReference

                    {

                        LogicalName = "team",

                        Id = new Guid("042d5707-6fe5-e411-80e5-fc15b428fa14")

                    },

 

                    Target = new EntityReference

                    {

                        LogicalName = "account",

                        Id = new Guid("0C2D5AC7-B7E4-E411-80E9-C4346BAC7DA8")

                    },

                };

                var assignResponse = (AssignResponse)service.Execute(assignRequest);

 

                // Service call 3 – kaydin durumunu degistir

                var setStateRequest = new SetStateRequest()

                {

                    EntityMoniker = new EntityReference

                    {

                        LogicalName = "account",

                        Id = new Guid("0C2D5AC7-B7E4-E411-80E9-C4346BAC7DA8")

                    },

                    State = new OptionSetValue(1), //inactive

                    Status = new OptionSetValue(2) //inactive

                };

                var setStateResponse = (SetStateResponse)service.Execute(setStateRequest);

            }

CRM 2015 update 1’den itibaren ise artik bu durumu daha iyi yonetebilmekteyiz. Cok basit bir update kodu icerisinde bu durumu cok rahat yonetebilmekteyiz. Bu ozellik sayesinde cok daha rahat ve hizli kod yazabilmekteyiz artik.

Bu durum entegrasyon calismalarimizda da bize hiz ve daha guvenli calisan bir kod yapisi sunmaktadir.

            using (var service = new OrganizationService(crmConnection))

            {

                Entity account = new Entity("account");

                account["accountid"] = new Guid("0C2D5AC7-B7E4-E411-80E9-C4346BAC7DA8");

                account["name"] = "Adventure Works Inc.";

                account["creditlimit"] = new Money(100000);

                account["statecode"] = new OptionSetValue(1); //inactive

                account["statuscode"] = new OptionSetValue(2); //inactive

                account["ownerid"] = new EntityReference { LogicalName = "team", Id = new Guid("042d5707-6fe5-e411-80e5-fc15b428fa14") };

 

                var request = new UpdateRequest() { Target = account };

                var response = (UpdateResponse)service.Execute(request);

            }

Daha fazla detayi bu adreste bulabilirsiniz: CRM online documentation page

Loading