콘텐츠로 이동

사용자 정의 개체

28개 언어로도 제공

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Türkçe · 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.
AI로 생성한 이미지

Data Architect 과정 3장인 Salesforce 데이터 아키텍처의 모듈 3/10. 각 모듈은 독립적으로 읽을 수 있습니다. 이전: 모선을 보라: 표준 데이터 모델 · 다음: 이 데이터는 어디에 있는가?

이 모듈이 답하는 질문: Salesforce에 없을 때, 개체를 직접 만들면 실제로 무엇을 얻을까요?

지난 모듈에서는 Salesforce가 이미 만들어 둔 것을 봤습니다. 때로는 필요한 것이 없습니다. Steve Trucking은 트럭을 운행하는데, 표준 트럭 개체는 없습니다. 그러니 하나 만듭니다. 사용자 정의 개체입니다.

이 모듈에서 보여 드리고 싶은 것은 이것입니다. 사용자 정의 개체는 모듈 1의 다른 모든 것처럼 메타데이터로 만들어지고, 존재하는 순간 일련의 표준 기능을 갖고 옵니다. 빈 테이블이 아닙니다. 그리고 그것을 만들려고 채우는 화면은, 알아차리든 못 하든, 아키텍처 질문을 던지고 있습니다.

설정 → 개체 관리자 → 생성 → 사용자 정의 개체로 가면 긴 양식 하나가 나옵니다. 대부분은 처음 두 칸을 채우고 저장을 클릭합니다. 속도를 늦추고 읽어 봅시다.

레이블과 복수 레이블(Label, Plural Label). “Truck”과 “Trucks”. 사용자가 탭, 페이지 레이아웃, 보고서에서 보는 이름입니다. 나중에 큰 고생 없이 바꿀 수 있습니다.

개체 이름(Object Name). 이것은 다릅니다. API 이름, 즉 코드, 연동, 보고서, 그리고 이제 에이전트가 쓰는 이름입니다. “Truck”이라고 입력하면 Salesforce가 Truck__c로 만듭니다. 나중에 바꾸려면 그것을 참조하는 모든 것을 찾아야 하니, 다시 1장의 가역성 테스트입니다. 이것은 처음에 제대로 정하십시오.

설명(Description). 채우십시오. 매번. 모듈 1에서 메타데이터는 더 이상 장식이 아니라고 했습니다. 다음 관리자가 이것을 읽고, 당신의 org를 이해하려는 모든 AI 도구도 읽습니다. 설명이 비어 있는 사용자 정의 개체는 라벨 없는 상자입니다.

레코드 이름(Record Name). 모든 사용자 정의 개체에는 이름 필드가 있고, 여기서 그것이 무엇인지 정합니다. “Truck 117” 같은 텍스트 이름, 또는 Salesforce가 대신 채워 주는 T-000184 같은 자동 번호. 그 화면의 경고를 읽으십시오. API로 대량의 레코드를 삽입할 계획이라면 텍스트를 쓰라고 Salesforce가 말합니다. 레코드를 하나도 만들기 전에 플랫폼이 규모에 대해 무언가를 알려 주는 것입니다.

새 사용자 정의 개체 화면의 레코드 이름 섹션: 레코드 이름 칸, 텍스트로 설정된 데이터 유형, 그리고 API로 대량의 레코드를 삽입할 계획이라면 텍스트 데이터 유형을 쓰라는 경고

Salesforce 설정, 새 사용자 정의 개체: 경고가 있는 레코드 이름 섹션(스크린샷, 2026-10-12). 원본 크기

선택적 기능(Optional Features). 보고서 허용(Allow Reports), 활동 허용(Allow Activities), 필드 기록 추적(Track Field History), Chatter 그룹에서 허용(Allow in Chatter Groups). 기본값은 꺼짐입니다. 하나하나가 이 개체에 켜는 기능이니, 의도를 갖고 정하십시오.

개체 분류(Object Classification). 공유 허용(Allow Sharing), 대량 API 액세스 허용(Allow Bulk API Access), 스트리밍 API 액세스 허용(Allow Streaming API Access), 모두 기본값이 켜짐입니다. 화면이 분명히 말합니다. 이것들이 켜져 있으면 개체는 Enterprise Application 개체이고, 꺼져 있으면 Light Application 개체입니다. 이 이름들은 Salesforce의 앱 구독 라이선스와 맞물립니다. Lightning Platform Light App은 레코드 수준 공유가 없고 Bulk API나 Streaming API를 쓸 수 없으며, Enterprise App은 쓸 수 있습니다. 제 조언: 왜 끄는지 정확히 알지 못한다면 켜 두십시오. 나중에 대량으로 로드할 개체에서 Bulk API 액세스를 끄면, 그게 왜 중요했는지 알게 될 겁니다.

배포 상태와 검색(Deployment Status, Search). “개발 중”(In Development)은 만드는 동안 사용자에게 개체를 숨기고, “배포됨”(Deployed)은 운영에 올립니다. 그리고 검색 허용(Allow Search)은 기본값이 꺼짐이라, 켜기 전까지 사용자는 글로벌 검색에서 이 레코드들을 찾지 못합니다. 이것에 매번 사람들이 걸립니다.

개체 분류, 배포 상태, 검색 상태 섹션: 공유 허용, 대량 API 액세스 허용, 스트리밍 API 액세스 허용에 체크되어 있고, 배포됨이 선택되어 있으며, 검색 허용은 체크 해제되어 있다

기본값: 세 가지 API 설정은 켜짐, 배포됨, 검색 허용은 꺼짐(스크린샷, 2026-10-12). 원본 크기

저장을 클릭하면 개체 관리자가 개체를 보여 줍니다. API 이름 Truck__c, 사용자 정의(Custom)에 체크 표시, 레이블, 배포 상태. 그런데 왼쪽을 따라 내려가 보십시오. 필드 및 관계, 페이지 레이아웃, Lightning 레코드 페이지, 레코드 유형, 유효성 규칙, 트리거, 흐름 트리거, 개체 액세스, 필드 액세스. 그 목록은 모듈 1이 눈에 보이게 된 것입니다. 개체는 저장소만이 아닙니다. 그 모든 동작이 매달리는 자리입니다.

트럭 개체를 보여 주는 개체 관리자: API 이름 Truck__c, 사용자 정의에 체크, 단수와 복수 레이블, 그리고 필드 및 관계에서 유효성 규칙까지 이어지는 왼쪽 목록

개체 관리자, 트럭: API 이름 Truck__c, 사용자 정의, 그리고 개체에 매달리는 모든 것(스크린샷, 2026-10-12). 원본 크기

갓 만든 사용자 정의 개체에서 필드 및 관계를 열면, 이미 필드가 있습니다. 모든 사용자 정의 개체는 표준 필드 세트를 받습니다.

  • 이름(Name): 방금 고른 레코드 이름으로, 페이지 레이아웃, 관련 목록, 조회, 검색 결과에 쓰입니다.
  • 소유자(Owner): 레코드를 소유하는 사용자나 대기열.
  • 작성자(Created By)와 최종 수정자(Last Modified By): 레코드를 만든 사용자와 마지막으로 바꾼 사용자.
  • 다중 통화가 켜져 있다면 통화(Currency), org가 디비전을 쓴다면 디비전(Division).

그리고 그 아래에는 모듈 1의 레코드 ID, 생성일과 수정일이 있습니다. Data Loader로 레코드 몇 개를 내보내 보면 모두 보입니다.

그중 하나는 사라질 수 있습니다. 사용자 정의 개체를 마스터-세부 사항 관계의 세부 쪽으로 만들면 소유자 필드가 없어집니다. 소유권이 대신 마스터 레코드에서 옵니다. 들리는 것보다 큰 일이고, 모듈 7과 8에서 다시 다룹니다.

접두사와 접미사: 무엇을 보고 있는가

섹션 제목: “접두사와 접미사: 무엇을 보고 있는가 ”

지난 모듈에서 표준 개체에는 접두사도 접미사도 없다고 했습니다. 다른 모든 것에는 있고, 그것을 읽을 수 있게 되면 필드 목록이 무엇을 보고 있는지 정확히 알려 줍니다.

생김새정체
Account, Case표준 개체나 표준 필드: 접두사도 접미사도 없다
Truck__c사용자 정의 개체, 또는 Unit_Number__c 같은 사용자 정의 필드
abc__Inspection__c관리 패키지의 사용자 정의 개체: abc는 공급업체의 네임스페이스
Delivery_History__b빅 개체(모듈 4)
Shipment__x외부 개체: 데이터가 다른 시스템에 있다(모듈 4)
Allergies__pc개인 계정의 사용자 정의 연락처 필드(모듈 2)
Truck__r쿼리에서 따라갈 때, 사용자 정의 조회 뒤에 있는 관계

몇 가지 눈여겨볼 점이 있습니다.

여기까지는 목록입니다. 제가 가르치는 방식은 층입니다. 개체에는 세 종류, 표준, 사용자 정의, 관리 패키지가 있고, 그 모두가 같은 종류의 필드를 가질 수 있습니다. 개체와 함께 온 표준 필드, 그리고 누군가 추가한 사용자 정의 필드.

표준 개체. Account에는 접두사도 접미사도 없고, 그 표준 필드인 Name, Industry, OwnerId에도 없습니다. 대부분의 표준 개체에 사용자 정의 필드를 추가할 수 있고, 추가하는 필드는 모두 __c로 끝납니다. Region__c처럼요(Custom Fields (opens in a new tab)). 그 접미사가 당신을 지켜 줍니다. Salesforce는 릴리스마다 계정에 새 표준 필드를 추가하는데, 당신 필드는 늘 __c로 끝나고 그들의 필드는 절대 그렇지 않으므로, 앞으로 생길 표준 필드가 이미 있는 당신 필드와 충돌할 일은 없습니다.

사용자 정의 개체. 당신 자신의 개체는 Truck__c처럼 __c로 끝나고(Custom Objects (opens in a new tab)), 거기에 넣는 사용자 정의 필드도 Unit_Number__c처럼 그렇습니다. 하지만 개체가 태어날 때부터 갖고 있던 필드, 즉 지난 섹션의 필드들은 표준 필드입니다. Name, OwnerId, CreatedDate, 접미사 없음. 그러니 당신 자신의 개체에서도 접미사가 각 필드를 누가 만들었는지 알려 줍니다.

관리 패키지 개체. AppExchange에서 관리 패키지를 설치하면, 그 개체와 필드는 공급업체의 네임스페이스 접두사를 달고 옵니다. abc__Inspection__c, 그리고 abc__Result__c 같은 필드. 그 접두사는 공급업체마다 고유하고 바뀌지 않습니다(Namespace Prefix (opens in a new tab)). Salesforce의 표현으로는, 접두사는 각 구성 요소를 고유하게 만들기 위해 붙습니다. name__c가 prefix__name__c가 됩니다(AppExchange Object Prefixes and the API (opens in a new tab)). 그래서 두 공급업체가 모두 Invoice__c라는 개체를 내놓아도 서로, 또는 당신과 충돌하지 않습니다. 패키지의 개체에도 여전히 표준 필드 Name과 OwnerId가 접두사 없이 있습니다. 패키지는 계정의 abc__Score__c처럼 표준 개체에 자기 접두사가 붙은 필드를 추가할 수도 있습니다. 그리고 당신도 패키지의 개체에 자신의 사용자 정의 필드를 추가할 수 있습니다. abc__Inspection__c의 Depot__c는 당신의 __c 접미사를 달지만, 공급업체의 접두사는 절대 달지 않습니다. 그들이 아니라 당신이 만들었으니까요(Known Issue: unmanaged custom field on a managed package object (opens in a new tab)).

이름 읽기 세 종류의 개체를 같은 네 층으로 읽습니다. Salesforce가 만든 표준 개체: Account. Name, OwnerId, Industry 같은 표준 필드에는 접미사가 없습니다. 관리 패키지는 abc__Score__c 같은 자기 필드를 추가할 수 있습니다. 내 사용자 정의 필드는 Region__c처럼 __c로 끝납니다. 내가 만든 사용자 정의 개체: Truck__c. 표준 필드인 Name, OwnerId, CreatedDate에는 접미사가 없습니다. 개체가 내 것이므로 패키지 필드는 없습니다. 내 사용자 정의 필드는 Unit_Number__c처럼 __c로 끝납니다. 공급업체 abc에서 설치한 관리 패키지 개체: abc__Inspection__c. 표준 필드에는 접두사가 없습니다. 패키지 자체 필드에는 abc__Result__c처럼 접두사가 붙습니다. 그리고 Depot__c처럼 내가 추가한 필드는 내 __c 접미사를 달지만, 공급업체의 접두사는 절대 달지 않습니다. 맨 아래: 접미사가 없으면 Salesforce의 것, __c는 사용자 정의, abc__는 공급업체의 것이며 절대 바뀌지 않습니다. 표준 개체 Salesforce가 만든 것 개체 Account 표준 필드 Name, OwnerId, Industry: 접미사 없음 패키지의 필드 abc__Score__c(패키지가 추가한 경우) 내 사용자 정의 필드 Region__c 사용자 정의 개체 내가 만든 것 개체 Truck__c 표준 필드 Name, OwnerId, CreatedDate: 접미사 없음 패키지의 필드 없음: 내 개체 내 사용자 정의 필드 Unit_Number__c 관리 패키지 개체 공급업체 abc에서 설치 개체 abc__Inspection__c 표준 필드 Name, OwnerId, CreatedDate: 접두사 없음 패키지의 필드 abc__Result__c 내 사용자 정의 필드 Depot__c: 내 접미사, 공급업체 접두사는 절대 없음 접미사 없음: Salesforce의 것. __c: 사용자 정의. abc__: 공급업체의 것이며, 절대 바뀌지 않습니다. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

어떤 API 이름이든 읽으면 누가 만들었는지 압니다. 접미사 없음: Salesforce. 접두사 없는 __c: 당신의 org. 앞에 abc__: 공급업체. 변경을 계획할 때마다 이것이 중요합니다. 당신 것은 바꿀 수 있습니다. Salesforce의 것은 구성하고 확장합니다. 공급업체의 것은 대부분 잠겨 있습니다. 페이지 레이아웃이나 도움말 텍스트 같은 몇 가지는 당신이 편집할 수 있지만, 패키지의 대부분과 모든 API 이름은 공급업체의 것이고, 그들의 업그레이드는 그들의 변경을 가져옵니다(Editable Properties After Package Promotion or Installation (opens in a new tab)).

비관리 패키지는 그렇지 않습니다. 비관리 패키지를 설치하면, 그 개체들은 마치 당신이 직접 만든 것처럼 접두사 없이 당신의 org에 들어옵니다. 그것이 Truck__c를 가져오는데 당신에게 이미 하나 있다면 이름 충돌입니다. 설치하기 전에 확인하십시오.

사용자 정의 개체를 만들기는 쉽습니다. 바로 그래서 저는 우리가 그것을 너무 많이 만든다고 생각합니다. 새 사용자 정의 개체 화면은 이미 계정이 있는 org에서도 기꺼이 Customer__c를 만들어 줍니다. 그러니 클릭하기 전에 지난 모듈의 질문을 하십시오. 모선에 이미 이것이 있는가? 있다면 그것을 쓰십시오. 없다면 만들고, 아키텍트처럼 화면 전체를 채우십시오.

다음 모듈은 그보다 더 앞선 질문을 합니다. 이 데이터가 애초에 Salesforce에 있어야 하는가?

아키텍트가 여기서 결정하는 것

섹션 제목: “아키텍트가 여기서 결정하는 것 ”
  • 사용자 정의 개체를 만들기 전에, Salesforce에 이미 이것을 위한 표준 개체가 있는지.
  • 한 번에 정하는 API 이름, 그리고 사람과 기계를 위해 쓴 설명.
  • 레코드 이름: 텍스트냐 자동 번호냐, 예상하는 볼륨을 염두에 두고.
  • 어떤 선택적 기능, API 액세스, 검색을 의도를 갖고 켤지.
  • org의 접미사가 알려 주는 것: 사용자 정의, 관리 패키지, 빅 개체, 외부 개체, 개인 계정.
  • 설치하려는 패키지가 당신이 만든 것과 충돌할 수 있는지.