본문 바로가기

Salesforce

(17)
System.QueryException: Non-selective query against large object type (more than 200000 rows) 환율체크 하는 for문 안에 있는 Query에 문제 발생 생기는 원인 조회 해야 하는 쿼리 수가 너무 많다. WHERE 조건이 formula 필드다. 해결방법 조건절에 Indexed 처리할 수 있는 필드들이 null인지 체크해준다. 인덱스를 조건에 추가함으로서 더 걸러낼 수 있기 때문에 쿼리 조회에 더 스피드를 낼 수 있음. 자식 Object라면 부모 Object를 기준으로 서브 쿼리로 조회한다. (실제 해결법) formula 필드는 실제 값이 들어가 있지 않기 때문에 조건으로 들어 갔을 때 조회 못한다!!! (엥?값 없네 다른 것도 다 훑어보자~~)이래서 쿼리 수 초과가 나온 거임.
Indexes Indexes Standard RecordTypeId Division CreatedDate Systemmodstamp (LastModifiedDate) Name Email ( for contacts and leads) Foreign key relationships (lookups and maser-detail) The unique Salesforce record ID, which is the primary key for each object Custom External Id(외부 아이디) [외부 아이디를 생성할 수 있는 필드들] Auto Number Email Number Text Tip. External Id로도 DML이 가능하다! 원래라면 List에 담아서 한번에 insert, update, upse..
SFDC File System SFDC에서 File은 Content Document라는 곳에서 관리한다. Content Document (Obj) ---------------------------- Content Version (Obj) | | | Link(Obj) 위 모양이 기본적인 파일의 구조이다. Content Document 는 Content Version과 Link와 연관이 있다. Content Document에는 각 record에 대한 header가 있다. 얘는 그 레코드에 대한 데이터가 쌓여도 변동되지않고 유지된다. 변동이 되는건 Content Version이다. Content Version에는 Version Data라는 Field가 있다. 이 필드에 새로 추가되는 data가 들어가고 최대 2GB까지 저장이 된다. dat..
APEX TESTING 단위테스트 하는 이유 APEX 클래스 및 Trigger가 예상대로 동작하는지 확인 Class, Trigger를 업데이트 시킬 때마다 다시 실행할 수 있는 회귀 테스트 모음을 보유해 앱에 대한 향후 업데이트로 기존 기능이 중단되지 않도록 합니다. Test 방법 구문 @isTest static void testName(){ code_block } static void testName(){ code_block } System.assertEquals(Expect, Real) TEST의 순서 Arrange(설정) - 테스트를 설정합니다. Act(수행) - 테스트를 구동합니다. Assert - 예상했던 값이 맞게 나왔는지 ? Test코드 작성 Tip if-else if 자주 쓰지 않기 ==> 왠만하면 모든 구간을 ..
APEX TRIGGER Salesforce record에 대한 이벤트 전 후에 INSERT, UPDATE, DELETE와 같은 작업을 수행한다. 레코드 관리를 위한 트리거다 보통 포인트 앤 클릭만으로 수행할 수 없는 작업을 수행한다. 최상위 Object, Custom Object, 기본 하위 Object를 대상으로 함 트리거의 기본 모양 trigger *TriggerName* on *ObjectName*(*trigger_events*){ code_block } trigger_events 종류 before insert after insert after undelete before update after update before delete after delete Before Trigger → DB저장 전 레코드 업데이트나 유효성..
SOSL(Salesforce Object Search Language 특징 레코드에서 텍스트 검색 시 사용한다. 레코드에서 기본&사용자 정의 필드를 찾아준다. Apache Lucene와 유사하다. APEX에 쓸 수 있음. SOSL의 기본 쿼리 형태 FIND ‘SearchQuery(검색할 텍스트입력)’ [IN SearchGroup] [RETURNING Objects And Fields] 더보기 1. [IN SearchGroup]에 들어갈 수 있는 것들 IN ALL FIELDS IN NAME FIELDS IN EMAIL FIELDS IN PHONE FIELDS IN SIDEBAR FIELDS 2. 검색 시 *나 ? 사용이 가능하다. *는 검색어의 중간 혹은 끝에 있는 0개 문자 일치 시 ?는 검색어의 중간 혹은 끝에 있는 1개 문자와 일치 시 3. 검색어 대소문자 구분 안함 ..
SOQL SOQL이 APEX안에 있을 때 ‘인라인 SOQL’이라고 부른다. SELECT 시 * 안됨. SELECT할 field 입력해야 함. SOQL은 For Loop를 이용해서 일괄로 처리가 가능하다 for( variable : [soql_query]){ code_block } for( variable_list : [soql_query]){ code_block } parameter값을 SELECT 조회시 WHERE 절에 넣고 싶다면????? SELECT Id FROM Account WHERE Name =: parameter SOQL과 SOSL의 유사점과 차이점 SOQL SOSL 유사점 둘 다 특정 정보를 검색한다. 차이점 검색개수 한번에 하나의 Object만 전체 검색가능 단어검색시 해당 단어를 포함한 모든 것..
Automation Tool& Apex Automation Tool Flow Builder 시각적 경험을 제공하는 업무 자동화 프로세스 필요한 페이지에 집어넣거나, 버튼 등에 프로세스를 넣을 수 있다. Process Builder Work Flow Apex Apex의 특징 객체 지향 언어 multitenant를 인식해 공유 리소스 독점을 방지한다. 데이터베이스와의 통합 java와 유사해 사용하기 용이하다 test하기 용이함 (Apex는 단위테스트, 실행 및 코드 검사를 기본 제공) 버젼 관리가 가능하다. Apex가 다른 객체 지향 언어와 다른 점 클라우드에 저장, 컴파일, 실행이 가능 DB시스템의 트리거와 유사한 트리거를 사용함 트랜젝션과 롤백이 가능하다 대소문자 구분 없이 사용 Apex의 DataType Primitive Integer Do..