CRM 4 SERVERDEN TARİH OKUTMA VE FORMDA AJAX KULLANIMI

1-)Crm 4 de Formlara javascript yazıyoruz.Javascripte ise bilindiği gibi o anki saati Date() fonksiyonu  ile çekiyoruz.Ancak bilindiği gibi javascript client bazlı çalışır ve yüzden zamandan kontrol etmemiz gereken noktalarda serverın sistem saat,ne ihtiyaç duyarız

2-)Bunun için CRM formumuzda ActiveXObject den yararlanıyoruz ve

Oluşturduğumuz ActiveX nesnesini open metodu ile gideceği aspx sayfasını belirtiyoruz

Not:aspx sayfamızı inetpub da crmimiz altında bi yere publish ettikten sonra IIS den bu uygulamayı convert to application diyerek kullanıma hazır hale getirmemiz gerekiyor

Open Metodunda QueryString mantığıda kullanarak sayfamıza parametre gönderebiliyoruz

Yapmamız gereken tek şey formda adresten ?ParametreAdı=ParametreDeğeri şeklinde tanımlama yaparak kod tarafında ise Requst.QueryString[“Parametre”] adı ile yollanan değeri okutmaktır

var objHTTP = new ActiveXObject(“Msxml2.XMLHTTP”);

objHTTP.Open(“GET”, ‘/ISV/Bilgehan /ServerTimeControl/ServerTimeCheck.aspx’,false);

objHTTP.Send(null);

var response = objHTTP.ResponseText;

var currentdate =response.split(‘@’);

3-)Daha sonra sayfadan dönen kodu activeX objemize ResponseText diyerek alıyoruz.Tabi aspx formumuzda Response.Write ile istediğimiz değeride yazdırmamız gerekiyor

4-)Bizim senaryomuz gereği bir aspx sayfası oluturalım ve içine aşağıdaki gibi kodumuzu yazalım

namespace CRMTimeControllerAjax

{

public partial class ServerTimeCheck : System.Web.UI.Page

{

private string entity = string.Empty;

protected void Page_Load(object sender, EventArgs e)

{

Thread.CurrentThread.CurrentCulture = new CultureInfo(“en-US”);

string currentdate = DateTime.Now.ToString(“ddd MMM d HH:mm:ss UTCzzzzz yyyy”);

int  UTCPointIndex=   currentdate.LastIndexOf(‘+’)+3;//Benim istediğim formatta utcden sonra gelen + dan sonraki nokta yok

currentdate = currentdate.Remove(UTCPointIndex, 1);

Response.Write(currentdate+”@”);

}

}

}

5-) Burada response.writedan sonra direkt datetime.now diyerek bırakmadım nedeni ise CRMin tarih formatının biraz daha farklı olması

Crmde Date() fonksiyonu ile tarihi yazdırdığımız zaman verilen format benim serverım için UTC formatında ve bu tarih formatını kullanabilmek için kendi asp.net kodumda birkaç tane string işlemi yaptım ve en son olarak da bu formatta tarihi elde ederek en son response write @ işareti koyarak çıktımı yazdırdım.bunun nedeni ise

objHTTP.ResponseText; ile gelen değeri yazdırdığımızda çıktısını aşağıdaki formatta vermesi @ işareti koyarak split metodu ile ilk gelen tarih değerimizi alarak bir değişkene atıyoruz ve bu şekilde tarihimizi kullanıyoruz

var response = objHTTP.ResponseText;

var currentdate =response.split(‘@’);

6-)Son  Haliyle Serverdan sistem saatini kullanmak için aspx sayfamızda aşağıdaki kodlar(tabi siz kendi server formatınıza göre bu kodu düzenlemeniz lazım)

Thread.CurrentThread.CurrentCulture = new CultureInfo(“en-US”);

string currentdate = DateTime.Now.ToString(“ddd MMM d HH:mm:ss UTCzzzzz yyyy”);

int  UTCPointIndex=   currentdate.LastIndexOf(‘+’)+3;//Benim istediğim formatta utcden sonra gelen + dan sonraki nokta yok

currentdate = currentdate.Remove(UTCPointIndex, 1);

Response.Write(currentdate+”@”);

CRM Formdaki kodumuz ise aşağıdaki gibi olacaktır.

var objHTTP = new ActiveXObject(“Msxml2.XMLHTTP”);

objHTTP.Open(“GET”, ‘/ISV/Bilgehan/ServerTimeControl/ServerTimeCheck.aspx’,false);

objHTTP.Send(null);

var response = objHTTP.ResponseText;

var currentdate =response.split(‘@’);

var now =new Date(currentdate[0]);

Bu yazı CRM kategorisine gönderilmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>