본문 바로가기
기술자료 (KB)/Power Platform

PowerApps으로 만드는 조직도 솔루션 - 08. 부서 (수정 및 삭제)

by 이완주 2024. 9. 25.

 

 

PowerApps으로 만든 조직도 솔루션 제안서

작년에 Power Apps으로 만들어 아직까지 저희 회사에 잘 쓰고 있는 솔루션 입니다.조직도는 연차 결재 솔루션과 연동하여 사용 중에 있습니다. 해당 솔루션의 구성 방법 입니다. 대략 10개 내외 정

leemcse.tistory.com

 

부서 이름 변경 및 삭제

 

1. 부서 이름을 변경

    이미 등록된 이름으로는 변경되면 안된다.

    비어 있는 경우 저장 버튼은 비 활성화

 

2. 부서 순서 변경

    선택된 부서의 상위 부서가 같으면서 같은 레벨의 이름이 표시되어 해당 순서를 변경 할 수 있어야 한다.

 

3. 부서 삭제

    원하는 부서를 삭제 (기본 기능) 

 

    별도의 강좌로 아래 내용 추가 예정

    부서에 하위 부서 및 직원이 있는 경우 삭제가 되지 않게 구성 예정
    회사의 경우 소속 부서 및 직원이 있는 경우 회사를 삭제 하지 못하게 구성 필요

 

수정 화면

OnSelect 속성 값으로 ColDepartment 값을 가져와 순서 변경을 위해 ColDepartmentEdit 컬렉션을 만든다.

UpdateContext({ editMode: true, selectedRecord: DepartmentGallery.Selected });

// ColDepartmentEdit 컬렉션을 초기화
Clear(ColDepartmentEdit);

// OrgDepartment 값으로 컬렉션을 만들기
ForAll(
    //Sort(OrgDepartment,OrderNo,SortOrder.Ascending),
    Sort(Filter(ColDepartment,CompanyID=CurrentItem.CompanyID And ParentID=CurrentItem.ParentID),OrderNo,SortOrder.Ascending),
    Collect(
        ColDepartmentEdit,
        {
        ID: ID,
        cOrderNo: OrderNo,
        cName: Name,
        cID:First(Sort(ColDepartmentEdit,cID,SortOrder.Descending)).cID +1,
        cIsCheck:false
        }
    )
);


 

OrderNo 변경 방법은 아래 자료 방법을 그대로 사용하였습니다.

5. PowerApps으로 만드는 조직도 솔루션 - 05. 자동 번호 및 순서 변경

 

 

PowerApps으로 만드는 조직도 솔루션 - 05. 자동 번호 및 순서 변경

PowerApps으로 만든 조직도 솔루션 제안서작년에 Power Apps으로 만들어 아직까지 저희 회사에 잘 쓰고 있는 솔루션 입니다.조직도는 연차 결재 솔루션과 연동하여 사용 중에 있습니다. 해당 솔루션

leemcse.tistory.com

 

저장 버튼 설정

저장 버튼은 newMode 와 editMode에 동일하게 사용하는 버튼으로 If 조건으로 분류하여 설정

 

DisplayMode 설정

If(
    newMode,
        // 등록된 이름과 이름 값이 비어 있으면 DisplayMode = DisplayMode.Disabled
        If(IsBlank(LookUp(Filter(OrgDepartment,CompanyID=CurrentItemSub.CompanyID),Name=DepartmentNameCard.Text)) And !IsBlank(DepartmentNameCard.Text),DisplayMode.Edit,DisplayMode.Disabled),
    editMode,
        //
        If(
            // 등록된 이름 중 선택된 이름을 제외한 이름과 같은지 확인
            Or(CurrentItem.Name = DepartmentNameCard.Text, IsBlank(LookUp(Filter(OrgDepartment,CompanyID=CurrentItemSub.CompanyID),Name=DepartmentNameCard.Text)))
            // 값이 비어 있는지 확
            And !IsBlank(DepartmentNameCard.Text),DisplayMode.Edit,DisplayMode.Disabled
        )
       
)

 

OnSelect 설정

If(editMode,
    // Name 값이 변경되었을 경우 저장
    If(DepartmentGallery.Selected.Name <> DepartmentNameCard.Text,Patch(OrgDepartment,First(Filter(OrgDepartment,ID=DepartmentGallery.Selected.ID)),{Name:DepartmentNameCard.Text}));

    // 순서 변경은 변경된 값을 확인하여 OrderNo를 변경
    If(!IsBlank(LookUp(ColDepartmentEdit,cIsCheck= true )),ForAll(RenameColumns(Filter(ColDepartmentEdit,cIsCheck= true ),ID,NewID),Patch(OrgDepartment,LookUp(OrgDepartment,ID=NewID),{OrderNo:cOrderNo})))
    ,
    // newMode에서 JobtitleForm 저장
    SubmitForm(DepartmentForm)
);

// ColDepartment 초기화 및 생성
ClearCollect(ColDepartment,AddColumns(OrgDepartment,NewID,ID));

// OrgCompany의 회사 정보를 ColDepartment에 추가
ForAll(
    OrgCompany,
    Collect(
        ColDepartment,
        {
            No: Text(OrderNo,"00"),
            CompanyID : ID,
            Name: Name,
            Level: 0,
            OrderNo: Text(OrderNo,"00") & "000000000000000000000000000000",
            Visible:true
        }
    )
);

 
// ColEmployee 초기화 및 생성
ClearCollect(ColEmployee,AddColumns(OrgEmployee,NewID,ID));
ForAll(
    OrgCompany,
    Collect(
        ColEmployee,
        {
            No: Text(OrderNo,"00"),
            CompanyID : ID,
            Name: Name,
            Level: 0,
            OrderNo: Text(OrderNo,"00") & "000000000000000000000000000000",
            Visible:true
        }
    )
);


 

부서 삭제

삭제 기능은 기본 기능으로 별도 설정하지 않음

댓글