← Tüm yazılar
· Dynamics365 · 2 dk okuma

Xrm.WebApi.retrieveMultipleRecords ile Kayıt Sorgulama: Temel Kalıplar ve Sık Yapılan Hatalar.

Kayra anlatıyor

Web resource’larda kayıt sorgulamak için en çok kullanılan yöntem Xrm.WebApi.retrieveMultipleRecords. Ancak 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’idir (şema adı değil): Contact değil, contact.

Query string mutlaka ? ile başlar.

$select yazmazsan tüm alanlar döner. Bu, performans açısından gereksiz bir yüktür.

Filtreleme Örnekleri

Belirli bir account’a bağlı aktif contact’lar

"?$select=fullname&$filter=_parentcustomerid_value eq " + accountId + " and statecode eq 0"

Lookup alanlarını filtrelerken alan adının başına _, sonuna _value eklenir: 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 sorgu, 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 adı her zaman küçük harfli logical name olmalıdır (Account değil, account).

$filter içinde metin değerlerini tırnağa almamak. Metin alanlarında eq 'Aktif' gibi tek tırnak şarttır; sayısal ve GUID alanlarda tırnak kullanılmaz.

Büyük veri setlerinde $top kullanmamak. Varsayılan olarak sayfa başına en fazla 5000 kayıt döner. Sayfa boyutunu retrieveMultipleRecords‘un üçüncü parametresi olan maxPageSize ile değiştirebilirsin; toplam kayıt sayısını sınırlamak için ise $top kullan. Aksi halde gereksiz veri çekilir.

_value son ekini unutmak. Lookup filtrelemede en sık yapılan syntax hatası budur. Bu durumda sorgu, ilgili property’nin bulunamadığını belirten bir hata döndürür.

Esenlikler.

© 2026 Ümit Kara | Dynamics 365, Power Platform ve SharePoint Üzerine Notlar · paylasimnoktasi.com LinkedIn · E-posta · RSS