[수습일지] - 9
1.Launch New Custom Tab Wizard after saving this custom object를 사용해 객체를 만들 경우
객체 생성 후 자연스럽게 탭 생성 페이지로 넘어가게 되는데
탭 생성 페이지에서는 탭에 대한 설명과 탭에 사용할 이미지를 선택할 수 있다.
2.Lightning 앱에는 표준 개체와 사용자 정의 개체, Visualforce 탭, Lightning 구성 요소 탭, Visualforce 탭을 통한 캔버스 앱, 웹 탭, Lightning 페이지 탭, Lightning Voice 등을 넣을 수 있다.
3.Lightning 앱 생성을 하면 Home 앱에서 다른 객체들에 접근할 수 있는 것처럼
navigate을 사용해 빠르게 이동할 탭을 만들 수 있게 된다.
또한 Lightning 앱에 사용할 이미지는 gif도 사용할 수 있기 때문에 움직일 수 있다.
더 좋은 Lightning 앱을 만들기 위해서는 사용자들에게 피드백을 받아야 하는데
chatter 그룹에 피드백 요청, 설문 조사 실시, 점심 회의(식사 제공)을 사용하라고 안내한다.
구조적으로 모든 사람이 필요로 하는 객체의 마스터 목록을 만든 후
담당자, 관리자, 간부 등 그룹의 목록을 줄이고
모든 사용자가 사용할 메뉴는 홈, 작업, 피드 같은 공통 사용 객체들로 구성하며
각 그룹마다 우선순위에 따른 순서 배치를 통해 사용자 편의성을 도모한다.
4.사용자 정의 목록 내에서는 필터를 사용해 보고 싶은 정보만 볼 수 있다.
필터는 여러개를 사용할 수 있으며
각각의 필터는 적용할 필드 부분과 비교할 내용을 확인해 true일 경우 통과시킨다.
or 형태가 아닌 and 형태로 진행되기 때문에 각각의 조건들을 모두 충족해야만 한다.
5.목록 보기 컨트롤 내에서 Select Fields to Display 사용을 통해 보고 싶은 필드만 정렬할 수 있다.
기존에 보이는 필드 또한 visible fields에서 제거할 수 있으며 available fields에서 추가할 수 있다.
6.객체 관리자에서 특정 객체를 선택한 후 Compact Layout에 들어와
직접 할당할 내용들을 추가한 layout을 생성하고 할당하면
레코드를 볼 때 본인이 설정한 필드들을 페이지 상단에서 볼 수 있다.
7.Lightning 앱 빌더를 사용하여 페이지 구조와 해당 구성 요소의 ‘위치’를 사용자 정의할 수 있고
페이지 레이아웃 편집기라는 다른 도구를 사용하여 페이지에 표시되는 필드 및 버튼과 같은
페이지의 ‘내용’을 정의할 수 있다.
굳이 두 가지의 도구를 구분해둔 이유는
Lightning 앱 빌더에서는 아직 페이지의 버튼, 작업 및 필드를 사용자 정의할 수 없기 때문이다.
페이지 레이아웃으로는 아래와 같은 작업들을 수행할 수 있다.
- 사용자에게 표시되는 필드, 관련 레코드 목록 및 사용자 정의 링크 제어
- 페이지 세부 사항에 필드가 표시되는 순서 사용자 정의
- 필드가 표시되는지, 읽기 전용인지 또는 필수인지 여부 결정
- 레코드 및 관련 목록에 표시되는 표준 및 사용자 정의 버튼 제어
- 페이지에 표시되는 빠른 작업 제어
8.Lightning Experience에서도 하이라이트 패널을 볼 수는 있지만
해당 패널의 설정은 클래식 UI에만 적용되기 때문에 Lightning Experience에서 정의할 필요가 없다.
9.생성된 페이지 레이아웃을 할당하기 위해서는 Page Layouts(페이지 레이아웃)를 클릭한 다음
Page Layout Assignment(페이지 레이아웃 할당)와 Edit Assignment(할당 편집)를 차례로 클릭해 할당할 수 있다.
10.레이아웃을 지정해 확인할 때 해당 프로필을 가진 유저로 로그인해서 확인할 생각이 아니라면
해당 레이아웃을 할당할 때 관리자 프로필도 해당 레이아웃을 할당해
사용자 아이디로 로그인 후 재로그인할 필요 없이 관리자 계정으로 확인할 수 있다
11.사용자 정의 버튼 및 링크 기능에서
링크 추가를 통해 google, Visualforce 페이지 또는 회사 인트라넷과 같은 외부 URL에 연결할 수 있고
사용자 정의 버튼을 통해 클릭할 경우 발생하는 작업을 정의할 수 있다.
12.빠른 작업, 전역 작업 만들기를 통해 빠르게 작업에 접근할 수 있다.
빠른 작업은 페이지 수준에서 다른 작업에 빠르게 접근할 수 있는 방식이고
전역 작업은 header 부분에 있는 + 표시를 통해 원하는 기능으로 바로 이동할 수 있는 방식이다.
(특정 객체에서 특정 작업을 진행하는 방식으로 새 작업 생성 등의 기능)
13.필드를 선택 목록으로 만들 경우 둘 다 선택 목록이라면 종속성을 통해
상위 필드를 선택한 경우 하위 필드의 선택 가능한 목록이 고정되게 할 수 있다.
예를 들어 1학년 = 1~8반, 2학년 = 1~6반, 3학년 = 1~10반 같은 형태로 가능하며
아래의 이미지 예시와 같이 중복 없이 구분되도록 할 수도 있다.
14.데이터가 존재하는 필드의 이름을 바꾸는 것은 상관없을 수 있지만(특색을 강조한다는 가정 하에)
데이터가 존재하는 필드의 타입을 바꾸는 것은 신중하게 결정해야 한다.
아래의 형태로 데이터 타입이 변경될 경우 존재하는 데이터가 손실될 수 있다.
- 날짜 또는 날짜/시간 유형 변경
- 다른 유형에서 숫자로 변경
- 다른 유형에서 백분율로 변경
- 다른 유형에서 통화로 변경
- 확인란에서 다른 유형으로 변경
- 선택 목록(다중 선택)에서 다른 유형으로 변경
- 다른 유형에서 선택 목록(다중 선택)으로 변경
- 자동 번호에서 다른 유형으로 변경
- 텍스트를 제외한 모든 유형에서 자동 번호로 변경
- 텍스트에서 선택 목록으로 변경
- 텍스트 영역(긴)에서 이메일, 전화, 텍스트, 텍스트 영역 또는 URL을 제외한 모든 유형으로 변경
또한 데이터가 손실될 경우 사용자 정의 필드 기반 목록 보기가 삭제되고 할당과 에스컬레이션 규칙이 영향받을 수 있기 때문에 타입의 변경은 데이터가 없을 때 하는 것이 가장 안전하다.
굳이 데이터 변경이 필요할 경우 아래의 공식 지원 페이지에서 어떤 타입 변경이 불가능하고
어떤 타입에서 어떤 타입으로 변경할 때는 안전한지를 볼 수 있다.
https://help.salesforce.com/s/articleView?language=en_US&id=sf.notes_on_changing_custom_field_types.htm&type=5
15.fomula 라는 타입을 통해 드디어 연산을 진행할 수 있다.
특정 필드, 조건 등을 사용해 사칙연산, 비교 등을 진행하거나
결과값을 반환해 적용하게 만들 수 있다.
살짝 엑셀을 다루는 느낌이다.
16.계정에 맞는 페이지 레이아웃을 설정하고 Page Layouts에서 할당할을 선택한 다음
특정 프로필에 레이아웃을 부여해 필요한 정보를 더 빠르게 볼 수 있게 할 수 있고
각각의 프로필마다 특색있는 레이아웃을 가질 수도 있다.
17.Set History Tracking을 사용해 특정 필드를 추적할 수 있다.
추적하고 싶은 필드를 생성(있다면 다음 과정으로 넘어간다)한 후
Set History Tracking에서 Enable Account History를 선택한 후
추적하고 싶은 필드를 선택해 저장해 추적할 수 있다.
추적된 내용을 레이아웃에 표기하고 싶을 경우
Page Layouts에서 수정하길 원하는 레이아웃을 편집하거나
새로운 Page Layout을 생성해 필요한 사용자들에게 할당해줄 수 있다.
18.Validation Rules은 뒤에서 다루게 될 fomula를 다시 사용했는데
이건 코드를 먼저 던저주고 넘어갔기 때문에 오히려 어떤 방식으로 진행되는지 더 알기 쉬웠다.
뒤에서 수식 및 유효성 검사를 진행하던 동기분이 안된다고 하셔서
다 같이 해보기로 하고 다른 내용을 건너뛰고 힘겹게 완수했는데
이걸 알고 보면 쉽게 해결할 수 있을 것 같다.
validation rule에서 만들 경우 조건에 해당할 경우 Error를 만들기 때문에
검증하고 싶은 내용(A를 선택 시 반드시 이유를 적어야 한다 등)이 있을 때
검증해야 하는 상황이 true일 경우를 체크한 다음 AND로 연결시켜
그 안에 값이 들어가지 않았는지 또는 잘못되었는지를 체크해 true일 경우 에러를 발생시킨다.
말 그대로 유효성검사를 위해 사용한다.
(1).백준 9295번 주사위는 두 번의 주사의 결과를 합한 값을
정해진 양식('Case i: a+b')대로 출력하는 문제였기 때문에
주사위의 값을 구조분해 할당으로 받아준 다음
템플릿 리터럴을 사용해 처리했다.
const input = `5
1 2
1 3
3 5
2 6
3 4`.split('\n')
const result = []
for(let i = 1 ; i < input.length ; i++){
const [Num1, Num2] = input[i].split(' ').map(Number)
result.push(`Case ${i}: ${Num1 + Num2}`)
}
console.log(result.join('\n'))