Salesforce 파트너사에 취업하고
1년 조금 안되는 시간이 흘렀습니다!
트레일헤드를 봤다 하더라도
실무를 경험해보면 확실히 많은 걸 배우게 되더라고요!
원래 노션에 야금야금 정리해두었는데
블로그에 보기 쉽게 정리할 겸
Salesforce 관련 한국 블로그는 많지 않기에 정보 공유도 할 겸
지금까지 배운 꿀팁들을 정리해보려 합니다!
앞으로는 한 포스팅 글에 다 정리해두는 것이 아닌
회고록처럼 매일 혹은 주기적으로 올릴 예정입니다 :)
1. 인터페이스하며 마주하는 이런 저런 에러들과 해결 방법들
System.CalloutException: You have uncommitted work pending. Please commit or rollback before calling out
"인터페이스를 다른 메소드에서 호출하는데 그 전에 DML 작업이 있었다" 가 에러 발생 이유입니다.
DML 작업 중인 트랜잭션이 아직 완료되지 않았는데 인터페이스 작업을 해버리면
충돌이 날 수도 있기 때문입니다.
Flow라면 중간에 화면 작업 넣거나 Trigger를 실행시키는 등으로
다른 트랜잭션에서 인터페이스를 호출하면 됩니다.
System.AsyncException: Future method cannot be called from a future or batch method
"Batch나 Future에서 Future를 호출했다"가 에러 발생 이유입니다.
Batch, Future 모두 비동기로 동작하기 때문에 시스템 부하가 올 수 있기 때문입니다.
비동기로 동작하는 Queue, Schedule도 마찬가지입니다.
위 상황이 안 생기게끔 잘 피해서 개발해주시면 됩니다. (너무 무책임한가..)
Upsert failed. First exception on row 0 with id; first error: INVALID_FIELD_FOR_INSERT_UPDATE, cannot specify Id in an insert call: [Id]
"insert할 때 Id를 구체화할 수는 없다"가 에러 발생 이유입니다.
upsert할 때 key값을 기준으로 update 혹은 insert가 되는 건 다 아실 겁니다.
근데 레코드에 key이 저장되어 있지 않아 insert를 하려 하는데 Id가 포함되어 있어 발생한 에러였습니다.
상황에 따라 id값을 로직에서 빼주거나 레코드에 key값을 넣어주면 해결됩니다.
2. 작고 소중한 꿀팁들
1. 특정 조건일 때만 버튼이 보이게 하고 싶다면?
예를 들어 Product > Family가 light일 때만 버튼을 보이게 하고 싶다처럼
조건을 걸고 해당 조건일 때만 버튼이 보이게 하고 싶은 경우가 생길 수 있습니다.
그럴 때 해당 오브젝트 레코드 페이지에 들어가서 "페이지 편집"을 누르고 "하이파이트 패널"을 눌러주면
위처럼 동적 자원으로 업그레이드 버튼이 보일겁니다.
안 보인다면 이미 업그레이드를 한 것일테니 안심하셔도 됩니다.
업그레이드를 하고 나면 위와 같이 하이라이트 패널에 추가되어있는 작업들이 보일겁니다.
특정 작업을 클릭하면 필터 추가가 보일거고
이렇게 필드를 기준으로 자유롭게 조건을 걸 수 있습니다 :)
2. User 생성 시 해당 User 이메일로 전송되는 메일 안 가게 하고 싶다면?
위 화면은 Setup > Email > Deliverability에 들어가면 나옵니다.
- 액세스 없음: Salesforce에서 이메일을 전송할 수 없게 합니다.
- 시스템 이메일만: 비밀번호 재설정, 알림 등 시스템 관련 이메일만 전송을 허용합니다.
- 모든 이메일: 사용자 정의 이메일 템플릿을 사용한 것까지 전송을 허용합니다.
3. Custom Settig > ListType
스키마 설정 > 목록 사용자 정의 설정 유형 관리를 통해
Custom Setting 생성 시 ListType을 비활성화할 수 있습니다.
참고로 설정 유형은 아래와 같습니다.
- List Type은 조직 전체에 동일한 값
- Hierarchy Type은 프로필, 역할 별로 다른 값
3. 진짜 작은 꿀팁들
1. 아웃바운드-인바운드로 운영 반영 시 테스트 커버리지가 0%라면 지정 Test 작성할 때 Enter가 아닌 ,로 나누기
2. Database.DML 작업을 하면 에러가 나는 건 재쳐두고 안 나는 것만 DML 작업 실행
3. 레코드가 정상 생성이 안된다면 RecordType으로 값이 제한되고 있는 건 아닌 지 확인
4. 각 개체별 Share 설정은 Setup > Sharing Settings > OWD > Default External Access에서 확인
[추가]
5. Fomula 필드 함수 중 FIND는 대소문자를 구분한다.
6. 롤업 필드를 만들 때 수식필드, 조회필드, 롤업필드 등 참조필드를 사용할 수 없다.
정말 소소하고 작은 꿀팁이라 놀라셨나요?
하지만 누군가에게는 도움이 되는 정보이기를 바랍니다🙏
'Salesforce > 지식창고' 카테고리의 다른 글
[Salesforce] Client Credential Token (0) | 2025.01.19 |
---|---|
[Salesforce] Profile 별 권한 알아보기 (0) | 2025.01.12 |
[Salesforce] API로 Record 다루기(생성, 조회, 업데이트, 삭제 ) (2) | 2024.10.14 |