Dynamics 365’te Xrm.WebApi ile Temel Kayıt Sorgulama
Web resource’larda kayıt sorgulama için en çok Xrm.WebApi.retrieveMultiple kullanılıyor ama filtreleme ($filter), alan seçimi ($select) ve ilişkili kayıt çekme ($expand) syntax’ı başta kafa karıştırabiliyor. Bu yazıda temel kalıplara ve sık yapılan hatalara göz atıyoruz.
Temel Sorgu Yapısı
Xrm.WebApi.retrieveMultipleRecords(
"contact",
"?$select=fullname,emailaddress1&$filter=statecode eq 0"
).then(function (result) {
result.entities.forEach(function (contact) {
console.log(contact.fullname);
});
});
- İlk parametre entity’nin logical name‘i (şema adı değil —
Contactdeğil,contact). - Query string mutlaka
?ile başlar. $selectyazmazsan tüm alanlar döner — performans için gereksiz.
Filtreleme Örnekleri
Belirli bir account’a bağlı aktif contact’lar:
"?$select=fullname&$filter=_parentcustomerid_value eq " + accountId + " and statecode eq 0"
- Lookup alanları filtrelerken alan adının başına
_ve sonuna_valueeklenir:parentcustomerid→_parentcustomerid_value. - GUID’ler tırnak içine alınmaz, doğrudan yazılır.
Tarih bazlı filtreleme:
"?$filter=createdon ge 2026-01-01T00:00:00Z"
İlişkili Kayıt Çekme ($expand)
"?$select=fullname&$expand=parentcustomerid_account($select=name,accountnumber)"
Bu, her contact ile birlikte bağlı olduğu account’un adını ve numarasını tek istekte getirir — ayrı bir retrieveRecord çağrısına gerek kalmaz.
Sık Yapılan Hatalar
- Schema name ile logical name’i karıştırmak. Entity ismi her zaman küçük harf logical name olmalı (
Accountdeğilaccount). $filteriçinde string değerleri tırnak içine almamak. Metin alanları içineq 'Aktif'gibi tek tırnak şart; sayısal ve GUID alanlarda tırnak kullanılmaz.- Büyük veri setlerinde
$topkullanmamak. WebAPI varsayılan olarak sayfa başına genelde 5000 kayıtla sınırlı (Prefer: odata.maxpagesizeheader’ı ile bu değiştirilebilir);$topile sınırlamazsan gereksiz veri çekilir. _valueson ekini unutmak. Lookup alan filtrelemede en sık yapılan syntax hatası budur — sorgu hata vermez ama sonuç boş döner.
Bu yazı işine yaradıysa paylaş
SONRAKİ YAZI
Power Apps’te en ihtiyaç duyduğumuz 26 formül →