İçeriğe geç

Özel Nesneler

28 dilde daha mevcut

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

In a truck body shop, a custom white box body hangs on chains above a standard truck chassis, already fitted with its doors, lights and mud flaps.
Görsel yapay zekâ ile üretilmiştir

Data Architect kursunun 3. bölümü olan Salesforce Veri Mimarisi bölümündeki 10 modülden 3.‘sü. Her modül kendi başına okunabilir. Önceki: Ana Gemiye Bakın: Standart Veri Modelleri · Sonraki: Bu Veri Nerede Yaşıyor?

Bu modülün yanıtladığı soru: Salesforce’ta yoksa, kendi nesnenizi oluşturduğunuzda gerçekte ne elde edersiniz?

Geçen modülde Salesforce’un zaten inşa ettiklerine baktık. Bazen ihtiyacınız olan şey orada yoktur. Steve Trucking kamyon işletir ve standart bir Kamyon nesnesi yoktur. Bu yüzden bir tane oluşturursunuz: bir özel nesne.

Bu modülde görmenizi istediğim şey şu. Bir özel nesne, 1. modüldeki her şey gibi meta veride oluşturulur ve var olduğu anda bir dizi standart işlevle birlikte gelir. Boş bir tablo değildir. Ve onu oluşturmak için doldurduğunuz ekran, fark etseniz de etmeseniz de size mimari sorular sorar.

Setup → Object Manager → Create → Custom Object (Kurulum → Nesne Yöneticisi → Oluştur → Özel Nesne) yoluna gidin, karşınıza uzun tek bir form çıkar. Çoğu insan ilk iki kutuyu doldurur ve Kaydet’e tıklar. Yavaşlayalım ve onu okuyalım.

Label ve Plural Label (Etiket ve Çoğul Etiket). “Truck” ve “Trucks”. Kullanıcıların sekmelerde, sayfa düzenlerinde ve raporlarda gördükleri bunlardır. Onları sonradan pek zahmet çekmeden değiştirebilirsiniz.

Object Name (Nesne Adı). Bu farklıdır: kodun, entegrasyonların, raporların ve artık ajanların kullandığı ad olan API adıdır. “Truck” yazın, Salesforce onu Truck__c yapar. Sonradan değiştirmek ona başvuran her şeyi bulmak demektir; bu da yine 1. bölümdeki Tersinirlik Testi’dir. Bunu ilk seferde doğru yapın.

Description (Açıklama). Doldurun. Her seferinde. 1. modülde meta verinin artık süs olmadığını söyledim: bir sonraki yönetici bunu okur, org’unuzu anlamaya çalışan her yapay zekâ aracı da. Açıklaması boş bir özel nesne, üzerinde etiket olmayan bir kutudur.

Record Name (Kayıt Adı). Her özel nesnenin bir Name alanı vardır ve onun ne olacağına burada karar verirsiniz. “Truck 117” gibi bir Text (Metin) adı ya da Salesforce’un sizin için doldurduğu T-000184 gibi bir Otomatik Numara. O ekrandaki uyarıyı okuyun: API üzerinden yüksek hacimde kayıt eklemeyi planlıyorsanız Salesforce size Text kullanmanızı söyler. Bu, daha tek bir kayıt oluşturmadan platformun size ölçek hakkında bir şey söylemesidir.

Yeni Özel Nesne ekranının Record Name bölümü: Record Name kutusu, Text veri türü ve API üzerinden yüksek hacimde kayıt eklemeyi planlıyorsanız Text veri türünü kullanma uyarısı

Salesforce Kurulum, Yeni Özel Nesne: uyarısıyla birlikte Record Name bölümü (ekran görüntüsü, 2026-10-12). Tam boyut

Optional Features (İsteğe Bağlı Özellikler). Allow Reports, Allow Activities, Track Field History, Allow in Chatter Groups. Varsayılan olarak kapalıdır. Her biri bu nesne için açtığınız bir yetenektir; bilerek karar verin.

Object Classification (Nesne Sınıflandırması). Allow Sharing, Allow Bulk API Access, Allow Streaming API Access; hepsi varsayılan olarak açıktır. Ekran bunu açıkça söyler: bunlar açıkken nesne bir Enterprise Application nesnesidir; kapalıyken bir Light Application nesnesidir. Bu adlar Salesforce’un uygulama aboneliği lisanslarıyla örtüşür: bir Lightning Platform Light App’te kayıt düzeyinde paylaşım yoktur ve Bulk API ya da Streaming API kullanamaz, bir Enterprise App ise kullanabilir. Tavsiyem: neden kapatmanız gerektiğini tam olarak bilmiyorsanız açık bırakın. Sonradan yüksek hacimde yükleyeceğiniz bir nesnede Bulk API erişimini kapatın, neden önemli olduğunu öğrenirsiniz.

Deployment Status ve Search (Dağıtım Durumu ve Arama). “In Development”, siz onu inşa ederken nesneyi kullanıcılardan gizler; “Deployed” onu canlıya alır. Ve Allow Search varsayılan olarak kapalıdır, yani siz açana kadar kullanıcılar bu kayıtları genel aramada bulamaz. Bu her seferinde insanları yakalar.

Object Classification, Deployment Status ve Search Status bölümleri: Allow Sharing, Allow Bulk API Access ve Allow Streaming API Access işaretli; Deployed seçili; Allow Search işaretsiz

Varsayılanlar: üç API ayarı açık, Deployed ve Allow Search kapalı (ekran görüntüsü, 2026-10-12). Tam boyut

Kaydet’e tıklayın, Nesne Yöneticisi size nesneyi gösterir: API adı Truck__c, Custom işaretli, etiketler, dağıtım durumu. Ama sol tarafa bakın: Fields & Relationships, Page Layouts, Lightning Record Pages, Record Types, Validation Rules, Triggers, Flow Triggers, Object Access, Field Access. O liste, 1. modülün görünür halidir. Bir nesne yalnızca depolama değildir; tüm bu davranışın asıldığı yerdir.

Truck nesnesini gösteren Nesne Yöneticisi: API Name Truck__c, Custom işaretli, tekil ve çoğul etiketler ve Fields & Relationships'ten Validation Rules'a soldaki liste

Nesne Yöneticisi, Truck: API adı Truck__c, Custom ve bir nesneye bağlı her şey (ekran görüntüsü, 2026-10-12). Tam boyut

Yepyeni bir özel nesnede Fields & Relationships’i açın; zaten alanları vardır. Her özel nesne standart bir set alır:

  • Name, az önce seçtiğiniz kayıt adı; sayfa düzenlerinde, ilgili listelerde, arama ilişkilerinde ve arama sonuçlarında kullanılır.
  • Owner, kaydın sahibi olan kullanıcı ya da kuyruk.
  • Created By ve Last Modified By, onu oluşturan ve en son değiştiren kullanıcılar.
  • Çoklu para birimi açıksa Currency, org’unuz bölümler (division) kullanıyorsa Division.

Ve altta, 1. modüldeki kayıt kimliği ile oluşturma ve değiştirme tarihleri. Data Loader ile birkaç kaydı dışa aktarın, hepsini görürsünüz.

Bunlardan biri kaybolabilir. Özel nesnenizi bir ana-ayrıntı ilişkisinin ayrıntı tarafı yapın, Owner alanı ortadan kalkar: sahiplik bunun yerine ana kayıttan gelir. Bu göründüğünden büyük bir meseledir; 7. ve 8. modüllerde ona döneceğiz.

Geçen modülde standart nesnelerin öneki de soneki de olmadığını söyledim. Diğer her şeyin vardır ve onları okuyabildiğinizde bir alan listesi size tam olarak neye baktığınızı söyler.

Neye benziyorNe olduğu
Account, CaseStandart bir nesne ya da alan: önek yok, sonek yok
Truck__cBir özel nesne ya da Unit_Number__c gibi bir özel alan
abc__Inspection__cBir yönetilen paketten gelen özel nesne: abc satıcının ad alanıdır (namespace)
Delivery_History__bBir büyük nesne (4. modül)
Shipment__xBir harici nesne: veri başka bir sistemde yaşar (4. modül)
Allergies__pcBir kişi hesabındaki özel kişi alanı (2. modül)
Truck__rBir sorguda izlediğinizde, özel bir arama ilişkisinin arkasındaki ilişki

Dikkat edilecek birkaç şey.

Buraya kadar bu bir liste. Ben bunu katmanlar olarak öğretirim. Üç tür nesne vardır: standart, özel ve yönetilen paket; ve her birinin üzerinde aynı tür alanlar olabilir: birlikte geldiği standart alanlar ve birinin eklediği özel alanlar.

Standart nesneler. Account’un öneki de soneki de yoktur, standart alanlarının da: Name, Industry, OwnerId. Çoğu standart nesneye özel alan ekleyebilirsiniz ve eklediğiniz her biri __c ile biter: Region__c (Custom Fields (opens in a new tab)). Sizi güvende tutan bu sonektir. Salesforce sürümlerinde Account’a yeni standart alanlar ekler ve sizinkiler her zaman __c ile bittiği, onlarınkiler ise asla bitmediği için gelecekteki bir standart alan zaten sahip olduğunuz bir alanla asla çakışamaz.

Özel nesneler. Kendi nesneniz __c ile biter, Truck__c (Custom Objects (opens in a new tab)); üzerine koyduğunuz özel alanlar da: Unit_Number__c. Ama birlikte doğduğu alanlar, yani geçen bölümdekiler, standart alanlardır: Name, OwnerId, CreatedDate, sonek yok. Yani kendi nesnenizde bile sonek, her alanı kimin yaptığını söyler.

Yönetilen paket nesneleri. AppExchange’ten bir yönetilen paket kurduğunuzda, nesneleri ve alanları satıcının ad alanı önekiyle (namespace prefix) gelir: abc__Inspection__c ve abc__Result__c gibi alanlar. Bu önek satıcıya özgüdür ve değişmez (Namespace Prefix (opens in a new tab)). Salesforce’un kendi ifadesiyle önek, her bileşeni benzersiz kılmak için ona eklenir: name__c, prefix__name__c olur (AppExchange Object Prefixes and the API (opens in a new tab)). Böylece iki satıcı da Invoice__c adlı bir nesne sunabilir ve ne birbirleriyle ne de sizinle asla çakışmaz. Paketin nesnelerinin hâlâ standart alanları vardır, Name ve OwnerId, öneksiz. Bir paket standart nesnelere de kendi önekli alanlarını ekleyebilir, örneğin Account’ta abc__Score__c. Ve siz de bir paketin nesnelerine kendi özel alanlarınızı ekleyebilirsiniz: abc__Inspection__c üzerindeki Depot__c sizin __c sonekinizi alır, ama satıcının önekini asla almaz, çünkü onu onlar değil siz yaptınız (Known Issue: unmanaged custom field on a managed package object (opens in a new tab)).

Adları okumak Üç tür nesne, her biri aynı dört katmanda okunur. Salesforce'un yaptığı standart bir nesne: Account; Name, OwnerId ve Industry gibi standart alanlarının soneki yoktur; yönetilen bir paket abc__Score__c gibi kendi alanlarını ekleyebilir; sizin özel alanlarınız Region__c gibi __c ile biter. Sizin yaptığınız bir özel nesne: Truck__c; standart alanları Name, OwnerId ve CreatedDate'in soneki yoktur; paket alanı yoktur, çünkü nesne sizindir; sizin özel alanlarınız Unit_Number__c gibi __c ile biter. abc satıcısından yüklenen bir yönetilen paket nesnesi: abc__Inspection__c; standart alanlarının öneki yoktur; paketin kendi alanları abc__Result__c gibi öneki taşır; Depot__c gibi sizin eklediğiniz alanlar ise sizin __c sonekinizi alır ama asla satıcının önekini almaz. Altta: sonek yoksa Salesforce'undur, __c özeldir ve abc__ satıcınındır ve asla değişmez. Standart nesne Salesforce'un yaptığı NESNE Account STANDART ALANLARI Name, OwnerId, Industry: sonek yok BIR PAKETIN ALANLARI abc__Score__c, bir paket eklerse SIZIN ÖZEL ALANLARINIZ Region__c Özel nesne sizin yaptığınız NESNE Truck__c STANDART ALANLARI Name, OwnerId, CreatedDate: sonek yok BIR PAKETIN ALANLARI yok: nesne sizin SIZIN ÖZEL ALANLARINIZ Unit_Number__c Yönetilen paket nesnesi yüklü, abc satıcısından NESNE abc__Inspection__c STANDART ALANLARI Name, OwnerId, CreatedDate: önek yok BIR PAKETIN ALANLARI abc__Result__c SIZIN ÖZEL ALANLARINIZ Depot__c: sizin sonekiniz, asla onların öneki değil Sonek yok: Salesforce'un. __c: özel. abc__: satıcının ve asla değişmez. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Herhangi bir API adını okuyun, onu kimin yaptığını bilirsiniz. Sonek yok: Salesforce. Öneksiz __c: sizin org’unuz. Önde abc__: satıcı. Bu, her değişiklik planladığınızda önemlidir. Sizin olanı değiştirebilirsiniz. Salesforce’un olanı yapılandırır ve genişletirsiniz. Satıcının olanı ise büyük ölçüde kilitlidir: sayfa düzenleri ve yardım metni gibi birkaç şeyi düzenleyebilirsiniz, ama paketin çoğu ve her API adı satıcıya aittir ve onların yükseltmeleri onların değişikliklerini getirir (Editable Properties After Package Promotion or Installation (opens in a new tab)).

Yönetilmeyen paketlerde önek olmaz. Yönetilmeyen bir paket kurun, nesneleri org’unuza sanki onları kendiniz inşa etmişsiniz gibi, öneksiz olarak iner. Bir Truck__c getiriyorsa ve sizde zaten bir tane varsa, bir ad çakışmanız var demektir. Kurmadan önce kontrol edin.

Bir özel nesne oluşturmak kolaydır; bence çok fazla oluşturmamızın nedeni de tam olarak budur. Yeni Özel Nesne ekranı, zaten Account’u olan bir org’da size seve seve bir Customer__c yapar. Bu yüzden tıklamadan önce geçen modüldeki soruyu sorun: ana gemide bu zaten var mı? Varsa onu kullanın. Yoksa inşa edin ve tüm ekranı bir mimar gibi doldurun.

Sonraki modül daha da önceki bir soruyu soruyor: bu veri hiç Salesforce’ta olmalı mı?

  • Özel bir nesne oluşturmadan önce Salesforce’ta bunun için zaten standart bir nesne olup olmadığı.
  • Bir kez seçilen API adı ve insanlar ile makineler için yazılmış bir açıklama.
  • Kayıt adı: beklediğiniz hacmi akılda tutarak Text mi, Otomatik Numara mı.
  • Hangi isteğe bağlı özelliklerin, API erişiminin ve aramanın bilerek açılacağı.
  • Bir org’daki soneklerin size ne söylediği: özel, yönetilen, büyük, harici, kişi hesabı.
  • Kurmak üzere olduğunuz bir paketin inşa ettiklerinizle çakışıp çakışamayacağı.
  • Custom Objects (opens in a new tab) ve Custom Fields (opens in a new tab), Object Reference (İngilizce, kontrol tarihi 2026-10-13): “özel nesnelerin adları, iki alt çizgi ve ardından küçük harf bir ‘c’den oluşan bir sonek içerir”; aynısı özel alanlar için de geçerli; ve özel alanları destekleyen standart nesnelerin tablosu.
  • AppExchange Object Prefixes and the API (opens in a new tab), Object Reference (İngilizce, kontrol tarihi 2026-10-13): bir ad alanı öneki, paketlenmiş her bileşeni benzersiz kılar; “name__c, prefix__name__c olur”.
  • Namespace Prefix (opens in a new tab), Apex Developer Guide (İngilizce, kontrol tarihi 2026-10-13): ad alanı önekleri, yönetilen paketlerin nesne ve alan adlarını diğer org’larınkinden ayrı tutar.
  • Editable Properties After Package Promotion or Installation (opens in a new tab), Second-Generation Managed Packaging Developer Guide (İngilizce, kontrol tarihi 2026-10-13): bir paketin bileşenlerinin hangi özelliklerini geliştiricinin, abonenin, ikisinin ya da hiçbirinin düzenleyebileceği.
  • Custom Object Standard Fields (opens in a new tab), Salesforce Help (İngilizce, kontrol tarihi 2026-10-12): her özel nesnenin aldığı standart alanlar (Name, Owner, Created By, Last Modified By, Currency, Division) ve Owner’ın bir ana-ayrıntı ilişkisinin ayrıntı tarafında neden kaldırıldığı.
  • Standard User Licenses (opens in a new tab), Salesforce Help (İngilizce, kontrol tarihi 2026-10-12): bir Lightning Platform Light App “Bulk API’yi veya Streaming API’yi kullanamaz”; bir Enterprise App “kayıt düzeyinde paylaşımı destekler, Bulk API’yi ve Streaming API’yi kullanabilir.”