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

INETA Fazla Mesai'de Suhail Dutta konuşuyor!

Bu hafta Perşembe günü (06.05.2010) yeni bir INETA serisine başlıyoruz! "INETA FAZLA MESAİ" olarak adlandırdığımız bu seride amacımız olabildiğince iş hayatından community aktivitelerine zaman ayıramayan yazılımcılara biraz fazla mesai yaptırmak :) İlk aktivitemizde Microsoft'tan Visual Studio Ürün Grubu Kıdemli Program Yöneticisi (Senior Program Manager) Suhail Dutta bulunacak! Sunacağı "Uygulamalarınızı Visual Studio 2010 kullanarak tanıyın" oturumu aslında çoğumuzun genelde karşılaştığı bir sorunu hedefliyor. Hani elinize proje gelir kodlarını hiç bilmediğiniz, yapısını hiç tanımadığınız. İşte bu gibi projelere Visual Studio 2010 araçları ile yaklaşıp projeleri tanımanın ve keşfetmenin yeni yollarını anlatacak Suhail Dutta. Bir saat sürecek bu oturumun sonrasında Silverlight MVP'si ve RD Daraon Yöndem'inde bir saatlik bir Parallel Programlama oturumu olacak.

 

Microsoft Istanbul ofisinde olacak bu etkinliğe katılım tamamen ücretsiz. Katılım sınırlı olacağı için tavsiyem hemen www.inetatr.org üzerinden kayıt olmanız! Suhail'in oturumu İngilizce olacak fakat demo ağırlıklı olacağı için İngilizce bilmeyenler için de sorun olmayacağından eminim. Daron'un oturumu ise Türkçe olacak.

Microsoft Technical Communities - Microsoft Teknik Toplulukları



Microsoft ürüneri,Microsoft çalışanlarının blogları,yeni teknikler,ipuçları gibi konularda içerik sunan Microsoft Communities  belli periyotlarda takip etmek .Net tabanlı her programcı için iyi olacaktır. Video'lardan kod örneklerine kadar birçok yararlı şey bulabilirsiniz bu sitelerde.

-----

Checking in periodically to see what's new is a very good idea. Especially if you like to play with new toys like social bookmarking and see videos from various aspects of the industry.

Microsoft Technical Communities

Developer

IT Professional

add page to Technorati

F# geliyor

Microsoft yeni programlama dili F# :) detaylar aşağıda;


Combining the efficiency, scripting, strong typing and productivity of ML with the stability, libraries, cross-language working and tools of .NET.

F# is a programming language that provides the much sought-after combination of type safety, performance and scripting, with all the advantages of running on a high-quality, well-supported modern runtime system. F# gives you a combination of

The only language to provide a combination like this is F# (pronounced FSharp) - a scripted/functional/imperative/object-oriented programming language that is a fantastic basis for many practical scientific, engineering and web-based programming tasks. 

F# is a pragmatically-oriented variant of ML that shares a core language with OCaml. F# programs run on top of the .NET Framework. Unlike other scripting languages it executes at or near the speed of C# and C++, making use of the performance that comes through strong typing. Unlike many statically-typed languages it also supports many dynamic language techniques, such as property discovery and reflection where needed. F# includes extensions for working across languages and for object-oriented programming, and it works seamlessly with other .NET programming languages and tools.

For further information, read about F# in more detail, download the F# distribution, read the getting started pages (a guide to installation and running your first program), go to the F# Manual, and learn about the growing F# Community. A short FAQ is also included on this site.

Some Starting points