오늘도 자동화 확인, 정의서 작성을 진행하다가

추가로 문의가 들어온 Key 관련 내용에 대해 계속 답변을 해야 했다.

 

안될 것 같긴 했지만 안된다고 이미 근거를 제공했지만 안될 것 같은 다른 방법을 제시하셨고

해당 방법이 안되는 근거를 데이터를 뒤지면서 중복 데이터들을 찾아내다보니 시간이 좀 많이 걸렸다.

 

다른 곳에서 들어온 요청사항까지 처리하니 사례를 정리할 시간은 없었는데

결국 자동화 에러가 발생한 부분에 대해 답변이 오지 않아 야근하며 해당 내용을 수정했다.

 

바쁘긴 했지만 뒤에서 재미있는 이야기가 들려왔는데

특정 개체의 히스토리를 관리하고 싶다는 요청사항이 왔는데

아무래도 같은 개체를 하나 더 만들고 자식으로 만들어 Related로 넣는다는 것이었다.

 

결국 개체 내의 필드를 복제해야 했는데

하나씩 수동으로 옮기기에는 시간이 너무 걸릴 것 같다는 내용이었는데

예전에도 운영에 배포하던 도중 비슷한 것을 알아보긴 했지만 시간이 촉박해서 넘어갔는데

오늘은 사실 내일 해도 되는 일이지만 그냥 야근을 해보고 있는 중이었기 때문에

해당 문게를 해결해보기로 했다.

 

조금 헤매긴 했지만 답은 생각보다 간단했는데

시행착오는 다 넘어가고 결론적으로만 정리하자면

WorkBench에 추출하고 싶은 개체가 있는 org에 로그인하고

migration의 Retrieve 페이지를 들어간 다음 파일을 올려주면 된다.

 

파일 형태는 아래와 같이 원하는 개체명과 필드를 입력하는데

필드는 전체를 가져오려고 하기 때문에 *을 넣어주면 되고

파일명은 package.xml로 설정하면 된다.

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>CustomObjectName__c</members>
        <name>CustomObject</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomField</name>
    </types>
    <version>58.0</version>
</Package>

추가 설정 없이 Next 클릭 후 Retrieve를 누르면 Status와 함께 결과가 나오는데

Download ZIP File을 눌러 다운받으면 1차 고비는 통과했다.

 

Retrieve 이미지

 

다운받은 파일의 압축을 해제하면 아래와 같이

package와 Objects 내부에 원본 ObjectName__c.object로 파일이 생성되어 있을 것이다.

다운받은 패키지

 

package와 Objects 내부에 원본 ObjectName__c.object로 파일이 생성되어 있을 것이다.

이제 package로 들어가서 아래와 같이 옮기고 싶은 개체명(예시로 CloneObject__c)으로 바꿔 저장한 다음

objects 내부의 ObjectName__c.object이라는 파일명을 CloneObject__c로 변경해준다.

 

package 수정

 

또한 변경한 CloneObject__c에는 각종 필드들이 들어있는데

relationshipName을 모두 찾아 내부에 들어있는 이름에 2를 붙이는 등의 변경을 줘서

동일한 관계명으로 에러가 발생하지 않게 만든다.

<relationshipName>AccountId2</relationshipName>

 

또한 버튼 등을 옮기고 싶은게 아니라면

페이지나 뷰 등의 에러가 발생할 수 있기 때문에

<actionOverrides>로 시작하는 태그들을 전부 지워주고

<fields>와 <listViews>의 사이에 숨어있는 단일 label 태그인

<label>ObjectLabelName</label>을 변경해 개체명이 변경되지 않게 한다.

 

마지막으로 롤업 요약 필드 등이 존재하는 경우

자식 개체에서 Master로 상위 개체를 선택해서 진행되기 때문에 작동하지 않기 때문에

롤업 필드 및 롤업필드를 사용한 포뮬러 필드 등을 전부 삭제해줘야 한다.

내가 겪은 에러 해결책은 롤업, 특이 포뮬러, 관계명 중복, 뷰 충돌(Action 삭제)이었지만

추가적인 문제는 각자 에러코드를 보고 해결해야 할 부분인 것 같다.

 

 

(1).백준 2145번 숫자 놀이는 주어진 숫자가 한자리 숫자가 될때까지 자릿수의 합을 더하는 문제로

간단하게 각 테스트케이스마다 순회하며 while문으로 자릿수를 쪼개 합친 다음 9보다 큰 경우 반복시켰다.

const input = `673
51
1000
99
0`.split('\n').map(Number)

const result = []
const breaker = (num) => {
    while (num > 9) {
        let nums = String(num).split('').map(Number)
        let sum = 0
        for(let i = 0 ; i < nums.length ; i++){
            sum += nums[i]
        }
        num = sum
    }
    return num
}

for(let i = 0 ; i < input.length - 1 ; i++){
    result.push(breaker(input[i]))
}

console.log(result.join('\n'))

'회고' 카테고리의 다른 글

[개발일지] - 194  (0) 2024.01.10
[개발일지] - 193  (0) 2024.01.09
[개발일지] - 191(주말)  (0) 2024.01.07
[개발일지] - 190(주말)  (0) 2024.01.06
[개발일지] - 189  (0) 2024.01.05

+ Recent posts