이벤트 구독 1c 8.2 보유 처리. 이벤트 구독을 사용하여 이벤트 처리기를 할당합니다. "이벤트 스터디" 프로그램 이용 안내

1C:Enterprise 8.x 플랫폼에서 응용 프로그램 솔루션을 개발하거나 수정할 때 구성 개체 그룹(예: 디렉터리)에 대해 일부 표준 작업을 수행해야 하는 경우가 매우 많습니다. 각 개체의 모듈에서 수행되는 작업을 설명하지 않기 위해 개발자는 표준 플랫폼 메커니즘인 이벤트 구독을 사용할 수 있습니다.

이벤트 구독을 사용하면 참고 서적, 문서, 특성 유형에 대한 계획 등과 같은 구성 개체의 이벤트를 가로챌 수 있습니다. 오늘 이 기사에서는 이벤트 구독 핸들러의 실행 순서 문제를 고려하고 한 작업에 대한 이벤트 구독이 여러 개 있을 때(예: 기록할 때) 플랫폼의 동작을 분석합니다.

표준 동작

우리의 예에서 어떤 디렉토리 "SimpleDirectory"가 사용된다고 하자. 개발자가 개입할 수 있는 각 이벤트에 대한 이벤트 구독이 있습니다. 이벤트 처리기 프로시저는 해당 서버 공통 모듈에 있습니다.

구독 핸들러가 호출되는 순서는 주어진 객체로 작업할 때 플랫폼의 표준 동작과 동일합니다. 이 예제에서는 참고 서적 작업을 고려하고 있으므로 개체 작업에 따라 핸들러를 호출하는 체계를 고려할 것을 제안합니다(다음 스크린샷 참조).

보시다시피 초기 단계에서 "ProcessingFill"(새 요소 생성) 또는 "OnCopy"(기존 요소를 기반으로 요소 생성) 이벤트 핸들러가 호출됩니다. 두 경우 모두 명명된 핸들러를 호출한 후 "OnSettingNewCode" 프로시저가 실행됩니다. 여기서 개발자는 코드에 접두사를 설정하거나 새 코드를 할당할 때 플랫폼의 동작을 재정의할 수 있습니다.

디렉토리 요소를 작성할 때 새 요소이든 기존 요소이든 세 개의 핸들러가 호출됩니다. "ProcessingFill Check"(이 단계에서 핸들러는 입력된 데이터의 정확성을 확인할 수 있으며 오류가 있는 경우 쓰기), "BeforeWrite"(오브젝트가 데이터베이스에 기록될 때까지 세부 정보 값을 조정하고 추가 조건을 확인할 수 있음), "On Write"(데이터베이스에 레코드가 작성되었지만 트랜잭션이 종료되지 않은 경우 개발자는 기록 후 데이터를 확인하고 필요한 경우 거래를 취소할 수 있습니다).

"BeforeDeletion" 이벤트는 개체가 정보베이스에서 직접 삭제된 경우에만 발생합니다. 일반적으로 어떤 사용자도 참조 무결성 검사 없이 직접 삭제 권한을 갖지 않습니다. 삭제는 항상 "표시된 개체 삭제" 처리를 통해 수행되어야 합니다. 후자의 경우 "BeforeDelete" 핸들러도 호출됩니다.

따라서 디렉토리 요소를 생성하고 정보베이스에 기록하면 플랫폼은 지정된 순서로 다음 이벤트 핸들러를 호출합니다.

다른 구성 개체와 관련하여 이벤트 구독 메커니즘의 작업은 유사하며 이벤트와 그 순서만 다를 수 있습니다. 자세한 내용은 구문 헬퍼를 참조하십시오.

문서화되지 않은 쪽

이제 흥미로운 상황을 고려하십시오. 참조 서적 "SimpleCatalog"에 대해 "BeforeWrite" 이벤트에 대한 세 가지 구독이 정의되어 있다고 가정해 보겠습니다.

이러한 구독의 핸들러가 어떤 순서로 호출될 것이라고 생각하십니까? 추측하지 말자. 각 구독의 처리기가 호출된 구독의 이름과 함께 메시지를 표시하는 요소 작성 결과를 제공합니다(다음 스크린샷 참조).

스크린샷에서 이벤트 구독 처리기 프로시저를 호출하는 순서가 "이벤트 구독" 분기의 메타데이터 개체 순서와 일치한다는 것을 쉽게 추측할 수 있습니다. 이 기능은 1C:Enterprise 플랫폼의 참조 문헌에 설명되어 있지 않으므로 문서화되지 않은 기능이 1C:Enterprise의 버전에서 버전으로 변경될 수 있고 동시에 프로그램 변경 목록에 없습니다.

후퇴

질문: "단일 구성 개체 이벤트에 대해 여러 구독을 생성하는 이유는 무엇입니까?" 답은 간단합니다. 여러 사람이 개발에 참여하는 경우 서로 생성된 메커니즘에 대한 간섭으로 인해 프로그램이 잘못 작동할 수 있습니다. 이러한 경우 작업에 따라 각 개발자에 대해 별도의 이벤트 구독을 만드는 것이 가장 논리적입니다. 물론 앞으로는 단일 핸들러 프로시저로 병합될 가능성도 있습니다.

이 문서는 새로운 기능에 대한 발표입니다.
이 문서의 내용을 사용하여 새 기능을 배우는 것은 권장되지 않습니다.
새 기능에 대한 전체 설명은 해당 버전의 설명서에서 제공됩니다.
새 버전의 전체 변경 목록은 v8Update.htm 파일에 제공됩니다.

EDT 버전 1.7.0.567에서 구현되었습니다.

1C:Enterprise Development Tools(EDT)에서 우리는 새로운 도구의 프로토타입을 구현했습니다. 이 도구의 작업 제목은 Editor입니다. 모든 이벤트 구독. 어플리케이션 솔루션에 존재하는 모든 이벤트에 대한 구독정보를 편리하게 분석할 수 있도록 도와드립니다.

이벤트 구독

1C:Enterprise 플랫폼을 사용하면 애플리케이션 솔루션에서 구성 개체의 이벤트에 대한 구독을 만들 수 있습니다. 구독은 원래 이벤트 핸들러가 실행된 후에 실행되는 프로시저입니다. 구독의 편리함은 하나의 프로시저가 다른 구성 개체에 속하는 이벤트를 "구독"할 수 있다는 사실에 있습니다. 따라서 조직을 기록할 때와 부서를 기록할 때 모두 실행해야 하는 알고리즘이 있는 경우 구독에 배치할 수 있으며 개체 자체에서 이 이벤트에 대한 처리기를 변경할 필요조차 없습니다. .

구독은 편리하고 보편적인 메커니즘임이 밝혀졌습니다. 그러나 대규모 애플리케이션 솔루션에서는 이벤트 구독 수가 수백에 달할 수 있습니다. 선형 목록의 구성 트리에서 분석하는 것이 불편해집니다. 예를 들어 적용된 솔루션에서 1C: 엔터프라이즈 관리(ERP) 340개 이상의 이벤트 구독.

EDT를 사용하면 구독을 패널에 표시하여 구독 작업을 조금 더 쉽게 할 수 있습니다. 계획응용 프로그램 개체의 모듈이 열릴 때.


이 구독 표시는 모듈 편집과 관련된 여러 작업에 편리합니다. 하지만 이벤트 발생 시 구독에서 실행되는 모든 알고리즘을 빠르게 찾아 분석해야 하는 경우에는 여전히 적합하지 않습니다.

모든 이벤트 구독

위에 나열된 불편함을 없애기 위해 구독, 이벤트, 구성 개체 및 구독 알고리즘을 구현하는 프로시저를 나타내는 일반적인 방법을 구현했습니다.


결과적으로 편집자를 호출할 수 있습니다. 모든 이벤트 구독전체 구성 또는 하나의 개체에 대해서만 - 차이점은 어떤 방식으로든 필터링된 데이터의 구성에만 있습니다.


왼쪽에는 편집기에 모든 이벤트가 표시되며 각 이벤트에는 모든 구독이 표시됩니다. 특정 구독을 선택하면 해당 구독이 "구독된" 구성 개체 목록이 오른쪽 상단에 표시됩니다. 그리고 오른쪽 하단에는 구독 알고리즘이 위치한 모듈과 프로시저가 표시됩니다. 절차를 두 번 클릭하면 내장 언어 편집기에서 열 수 있습니다.

편집기에서 개별 구독뿐만 아니라 동일한 이벤트와 관련된 모든 구독을 분석할 수 있습니다. 이벤트를 선택하면 편집기에 이 이벤트를 처리하기 위해 등록된 모든 모듈과 프로시저가 표시됩니다.


구성 개체에서 편집기를 호출하면 해당 개체의 이벤트 및 구독만 표시되고 개체 자체는 소스 목록에서 항상 빨간색으로 강조 표시됩니다. 따라서 예를 들어 선택한 구독이 필요한 모든 구성 개체에 대해 작동하는지 빠르게 확인할 수 있습니다.


구성 개체에서 컨텍스트 명령으로 편집기를 호출하면 편집기에 표시되는 구독 수를 즉시 줄일 수 있습니다. 예를 들어 개체 모듈 또는 관리자 모듈에서 처리되는 이벤트에 대한 구독만 볼 수 있습니다.


또한 편집기에는 개체, 이벤트 및 절차의 구성을 임의로 사용자 지정할 수 있는 범용 필터가 포함되어 있습니다.


이 필터를 사용하면 이벤트 소스인 특정 개체뿐만 아니라 다음과 같은 유형 집합도 선택할 수 있습니다. 디렉토리객체, 문서 객체다른 사람. 이러한 유형 세트에는 구성에 있는 모든 디렉토리 또는 모든 문서가 포함됩니다.

문자열 검색을 통해 관심 있는 엔진에 해당하는 구독만 빠르게 찾을 수 있습니다.


언제든지 편집기에 표시된 이벤트 또는 소스를 기반으로 콘텐츠를 빠르게 필터링할 수 있습니다. 예를 들어 구독을 찾았습니다. 수식 계산 확인. 소스는 계산 유형의 계획입니다. 보류.


계산 유형 계획에 대한 상황별 명령을 사용하여 해당 이벤트와 연결된 구독만 빠르게 볼 수 있습니다.


중단점 자동 추가

이벤트 구독을 분석하는 일반적인 방법 중 하나는 디버거에서 호출된 모든 프로시저를 실행된 순서대로 순차적으로 보는 것입니다. 이를 위해 편집기는 핸들러에 중단점을 자동으로 추가하는 편리한 도구를 제공합니다.

먼저 편집기에서 바로 이 도구를 호출할 수 있습니다.


관심 있는 개체를 찾아 선택하고, 해당 이벤트 중 하나를 선택하고, 예를 들어 모든 핸들러를 표시할 수 있습니다. 누른 후 좋아요확인된 각 처리기의 첫 번째 실행 가능한 줄에 중단점이 추가되고 이러한 모든 중단점이 패널에 나타납니다. 중단점관점에서 디버깅.


중단점을 추가하는 또 다른 방법은 편집기에서 관심 있는 개체나 이벤트를 이미 찾았을 때 편리합니다. 이 경우 상황에 맞는 메뉴에서 자신에게 맞는 명령을 호출할 수 있습니다.


마지막으로 사용할 수 있는 세 번째 방법은 이미 디버깅 프로세스에 있는 중단점을 자동으로 추가하는 것입니다. 이 경우 추가 명령이 패널에 직접 있기 때문에 편집기를 열 필요가 없습니다. 중단점.


그래서 편집자는 모든 이벤트 구독다양한 분석 시나리오를 사용할 수 있는 다목적 도구입니다. 적용된 솔루션을 잘 아는 개발자뿐만 아니라 익숙하지 않은 기능을 다루어야 하는 구현 전문가나 IT 전문가에게도 유용할 것이다.

사용자의 다양한 작업을 해결하는 과정에서 이미 형성된 문서 이동(즉, 특정 레지스터 세트)을 조정해야 하는 경우가 있습니다.

이러한 목적을 위해 "이벤트 구독" 개체는 많은 수의 개체에 대해 특정 이벤트가 발생할 때 일부 작업을 수행할 수 있도록 하는 매우 적합합니다(예: 지불 문서를 기록하거나 관련된 새 수의 디렉터리를 설정할 때). 세무 회계).

또한 이벤트를 구독하면 다른 모듈에 설명된 일반적인 메커니즘을 변경하지 않고도 다양한 작업을 수행할 수 있으므로 편리합니다.

예를 들어, 작업이 발생했습니다. 문서의 주요 이동 ( "처리"이벤트에서 형성됨)이 형성된 후 지불 문서에 특정 데이터 (회사 활동에 대한 정보)를 기록해야합니다. 작업은 "제조 엔터프라이즈 관리" 구성에서 구현됩니다. 1.3.

솔루션을 자세히 살펴보겠습니다.

"결제 방향 기록" 이벤트에 대한 새 구독을 생성해 보겠습니다. 구독에는 동작을 결정하는 여러 속성이 있습니다.

원천작업이 호출될 개체(예: 문서 또는 문서 목록)입니다. 우리의 경우 선택 출금지시 및 입금지시

이벤트- 우리 코드가 실행될 액션 그 자체. 문제의 조건에 따라 우리는 선택합니다 처리

매니저- 처리가 진행될 절차의 표시. 이러한 목적을 위해 일반 모듈을 선택합니다. 범용.

위의 목표 후에 데이터를 입력하기 위해 코드를 배치하는 데 필요한 절차가 생성됩니다 (이러한 정보는 이미 지불 주문에 포함되어 있다고 가정).

매개변수를 고려하십시오.

원천- 작업이 수행되는 DirectoryObject 또는 DocumentObject 유형의 개체입니다.

거절- 특정 조건에서 문서 게시를 취소할 수 있는 매개변수입니다.

홀딩 모드- 수행 옵션(작동 또는 비작동)으로 다양한 방식으로 처리 알고리즘을 구축할 수 있습니다.

매개변수에서 멈추자 원천. 우리의 작업에서 이 매개변수의 유형은 다음과 같습니다. 문서 객체. 이 유형에 대한 컬렉션을 사용할 수 있습니다. 동정이 문서가 등록 기관인 모든 등록 레코드 집합을 포함하는 A입니다.

이 컬렉션에는 일련의 레코드가 포함되어 있습니다. 상대방이 있는 정착지SetRecords우리에게 관심이 있습니다. 문서에서 작성해야 하는 레지스터에 차원 방향이 생성되었다고 가정해 보겠습니다.

다음 코드를 작성해 보겠습니다.

세트 = 소스. 동정; 계산 = 세트. 계약자와의 합의; 계산 주기 페이지의 각 페이지에 대해. 방향 = 소스. 방향; EndIf ;

우리가 볼 수 있듯이 구현은 매우 간단합니다. 집합 쓰기 작업을 처리한 후 추가 작업을 수행할 필요가 없습니다. 이벤트 구독은 집합 완료 후 ProcessingPerforming 이벤트 트랜잭션의 일부로 수행됩니다. 자동으로 작성됩니다.

이 접근법의 장점:표준 알고리즘 외부에서 데이터 처리, 업데이트 중 변경 사항 찾기 및 전송에 대한 작업량 감소, 가시성 향상 - 모든 코드를 하나의 절차로 처리합니다.

이 접근 방식의 단점:문서 작성 및 디렉토리 요소 기록 시간 증가.

이 정보가 초보 프로그래머와 경험이 많은 동료 모두에게 시야를 넓히는 데 도움이 되기를 바랍니다.

사용자가 작업을 수행하면 1C 플랫폼이 프로그램 이벤트를 생성합니다. 일반적으로 하나의 이벤트가 생성되지 않고 전체 이벤트 체인이 생성됩니다. 프로그래머의 임무는 프로그램에서 예상되는 동작을 달성하기 위해 이벤트에 프로그램 코드를 올바르게 배치하는 것입니다. 그러나 초보 1C 프로그래머가 하기에는 쉽지 않을 것입니다. 이유는 다음과 같습니다.

OnReadOnServer, OnCreateOnServer, OnOpen 등의 관리되는 형식으로 이벤트를 생성할 수 있습니다.

관리되는 양식의 이벤트는 클라이언트와 서버(BeforeWrite, BeforeWriteOnServer)에서 생성됩니다.

이벤트는 ItemForm, ObjectModule, ManagerModule과 같은 다른 모듈에서 호출됩니다.

목록에 여러 참조 항목이 있는 경우 일부 이벤트를 여러 번 호출할 수 있습니다(예: ProcessingViewReceiving).

다양한 사용자 작업을 수행한 결과로 관리되는 양식이 열릴 수 있지만 호출 이벤트 체인은 다릅니다. 디렉터리에 대한 다음 사용자 작업의 경우 관리 양식이 열립니다: 새 요소 만들기, 요소 복사, 디렉터리의 기존 요소 변경.

테이블 섹션에 행이 추가될 때, 테이블 섹션의 행이 편집될 때, 행 또는 필드가 활성화될 때, 입력 필드에서 조회 요소가 선택될 때 등 양식 요소에 의해 이벤트도 생성됩니다.

트리거된 이벤트의 논리와 순서를 더 잘 이해하려면 이 문서에 첨부된 "이벤트 연구" 개발을 사용할 수 있습니다. 이벤트의 컨텍스트, 이벤트 순서 및 사용자가 수행할 작업을 알면 프로그램 코드를 배치하는 데 가장 적합한 이벤트 핸들러를 이해하는 것이 더 쉬울 것입니다.

"이벤트 스터디" 프로그램 이용 안내

"이벤트 연구" 프로그램은 대화식 사용자 작업 중에 1C 플랫폼이 생성하는 이벤트를 보여줍니다. 작동 원리는 다음과 같습니다. 사용자는 디렉토리를 열고 프로그램은 일련의 이벤트를 보여줍니다. 사용자는 삭제할 디렉토리 요소를 표시하고 프로그램은 발생하는 일련의 이벤트를 표시합니다. 이벤트는 3초의 짧은 기본 지연으로 표시되며, 이는 하나의 이벤트 체인을 다른 이벤트 체인에서 분리하는 데 필요합니다. 따라서 대화형 작업을 "천천히" 수행해야 합니다.

모든 이벤트는 특수 창 "최신 이벤트"에 표시됩니다. 이벤트 녹화를 활성화 또는 비활성화할 수 있습니다. 기본적으로 처음 열면 이벤트 로깅이 활성화됩니다. 프로그램 시작과 동시에 화면 하단의 "마지막 이벤트"창을 수정하여 이벤트를 편리하게 볼 수 있도록 권장합니다.

프로그램 자체는 일련의 이벤트를 일으킨 작업을 결정할 수 없습니다. "작업 이유" 필드에 키보드의 마지막 작업 이름을 입력하는 것이 좋습니다(예: "디렉토리 목록 양식이 열려 있습니다", "요소 디렉토리 목록에서 삭제 표시됨” 등 이렇게 하면 나중에 작업 및 이벤트를 쉽게 분석할 수 있습니다.

최근 이벤트 양식에서 이벤트 기록이 활성화된 경우 이벤트 추적 섹션에 배치된 개체에 대한 이벤트가 기록되고 표시됩니다.

기록된 모든 이벤트는 "서비스" 섹션에 있는 "이벤트 보고서"를 통해 볼 수 있습니다.

"서비스" 섹션에서 기록된 모든 작업 및 이벤트를 빠르게 지우려면 "이벤트 및 작업 지우기"를 선택하십시오.

이벤트 구독 메커니즘은 이벤트 핸들러를 하나 이상의 1C:Enterprise 구성 개체에 할당하도록 설계되었습니다. 이 기사에서는 이 메커니즘을 적용한 몇 가지 예를 설명합니다. 기사를 읽은 후 다음을 배우게 됩니다.

  • 이벤트 구독이란 무엇이며 실제로 사용하는 방법은 무엇입니까?
  • 디렉토리 자체의 모듈을 수정하지 않고 디렉토리 요소를 작성할 때 이름 중복을 확인하는 방법은 무엇입니까?
  • 이벤트 구독을 사용하여 문서를 게시할 때 누적 등록부에 움직임이 형성되도록 하려면 어떻게 해야 합니까?
  • 문서의 기본 형식을 대체하는 방법은 무엇입니까?

적용 가능성

이 기사에서는 1C:Enterprise 플랫폼 버전 8.3에 대해 설명합니다. 제공된 정보는 플랫폼의 현재 릴리스와 관련이 있습니다.

이벤트 구독

이 기사에서는 1C:Enterprise 8 플랫폼의 보조 개체 중 하나를 사용하는 몇 가지 예를 설명합니다. 이벤트 구독.

이벤트 구독을 사용하면 객체 모듈 또는 관리자 모듈에서 특정 이벤트 핸들러가 실행된 후 실행되는 공유 모듈에 외부 핸들러를 배치할 수 있습니다.

여기서 필요하지 않음개체 모듈 또는 관리자 모듈을 변경합니다. 따라서 소프트웨어의 가능성 수정하지 않고 모듈 확장- 표준 용액을 변경할 때 매우 유용한 기술입니다.

이벤트 구독스레드에 설명 흔하다구성 개체 창(그림 1).

구성이 예를 들어 이벤트와 같은 일부 개체의 이벤트에 대한 구독을 생성하는 경우 비포라이트()문서 개체가 있는 경우 이 이벤트가 발생하면 플랫폼은 다음과 같은 일련의 작업을 수행합니다.

  1. 이벤트 핸들러가 실행됩니다. 비포라이트()문서 개체 모듈에서.
  2. 핸들러 실행 중에 매개변수가 거절가치를 떠맡다 진실또는 예외가 발생하면 이벤트 처리가 중단됩니다.
  3. 두 번째 단계에서 이벤트 처리가 중단되지 않은 경우 이벤트에 대해 정의된 외부 처리기(이벤트 구독)가 실행됩니다. 비포라이트().
  4. 외부 핸들러를 실행하는 동안 매개변수가 거절가치를 떠맡다 진실또는 예외가 발생하면 외부 핸들러의 실행이 중단됩니다.

이벤트 구독을 통해 다음을 구성할 수 있습니다. 다양한 검사 수행, 개체가 데이터베이스에 기록될 때 실행됩니다.

작업 1

디렉토리 자체의 모듈을 수정하지 않고 "Contractors" 디렉토리의 요소를 작성할 때 이름이 중복되었는지 확인하십시오.

문제를 해결하려면 공통 모듈을 만들어야 합니다. EventSubscriptionHandlers. 모듈 속성 팔레트에서 플래그 설정 서버 및 클라이언트(일반 애플리케이션). 일반 애플리케이션에서 이벤트 구독이 작동하려면 두 번째 플래그가 필요합니다.

깃발 클라이언트(일반 신청) configurator 매개변수에 편집 모드가 설정된 경우 사용 가능 관리형 애플리케이션과 일반 애플리케이션.

지점 내 흔하다구성 개체 창에서 새 이벤트 구독을 만듭니다. 특성 팔레트에 구독 이름을 입력하십시오. 디렉토리 이름 확인. 선택 상자에서 원천마크 데이터 유형 DirectoryObject.Contractors. 선택 상자에서 이벤트이벤트 선택 비포라이트(). 이 이벤트를 처리한 후 이벤트 구독 처리 절차가 트리거됩니다(그림 2).

선택 상자에서 매니저이벤트 구독 핸들러가 있는 일반 모듈이 지정됩니다. 이 필드에서 열기 버튼을 클릭하고 모듈을 선택합니다. EventSubscriptionHandlers그리고 누르기 좋아요. 시스템은 공통 모듈에서 프로시저를 자동으로 생성합니다. 매개변수 포함 원천그리고 거절. 매개변수에서 원천이벤트 구독이 생성된 개체가 전달됩니다. 디렉토리객체. . 매개변수에서 거절요소 작성 거부 표시가 전송됩니다.

절차 중 CheckingDirectoryNameBeforeWriting()디렉터리에 대한 쿼리가 생성됩니다. 상대방. 기록된 사전 요소의 이름은 쿼리 매개변수로 전달됩니다. 상대방. 동일한 이름을 가진 요소가 데이터베이스에 이미 존재하는 경우 매개변수는 거절값으로 설정 진실(요소 입력이 취소됨) 해당 진단 메시지가 표시됩니다.

절차 목록 CheckingDirectoryNameBeforeWriting()

실제로 표준 구성으로 문서를 게시할 때 추가 레지스터에서 이동을 수행하는 작업이 발생할 수 있습니다. 추가 레지스터를 생성하면 기존 레지스터를 수정하지 않고 동시에 표준 문서를 수행할 때 추가 데이터 처리 가능성을 얻을 수 있습니다.

작업 2

이벤트 구독 메커니즘을 사용하여 "지출 현금 주문" 문서를 게시할 때 누적 "자금 처분" 회전율 등록부를 만들고 이 등록부에 움직임이 형성되도록 합니다.

이름으로 새 회전율 레지스터를 만듭니다. 현금 처분. 등록 기관 "지출 현금 주문"을 선택합니다. 레지스터 차원 추가:

레지스터 리소스 생성:

합집합, 유형 숫자, 길이 – 15, 정확성 – 2.

"지출 현금 영장" 문서에서 필수 항목을 만듭니다. ArticleMovement데이터 유형 HandbookLink.Articles현금 이동.

이름 - 현금 처분 운동;
원천 - DocumentObject.RKO;
이벤트 - 처리.

일반 모듈에서 EventSubscriptionHandlers핸들러 생성 . 핸들러는 "지출 현금 주문" 문서의 표 부분을 우회하고 누적 레지스터에서 이동을 생성합니다. 현금 처분.

절차 목록 현금 처리 이동ProcessingConducting()

일반적인 구성에서는 문서와 같은 일부 개체의 기본 형식을 구체화해야 할 수 있습니다. 이 작업은 이벤트 구독을 사용하여 해결할 수 있습니다. 이렇게 하면 문서의 기본 양식 사본이 생성됩니다. 필요한 변경 사항이 새 양식에 적용됩니다. 이벤트 구독 메커니즘을 사용하여 기본 양식 대신 새 양식이 열립니다. 이 경우 지원되는 기본 양식은 변경되지 않습니다.

작업 3

"지출 현금 영장" 문서의 기본 양식을 대체하십시오.

이름이 "Cash Expense Order"인 문서의 새 양식을 만듭니다. 양식문서클라이언트. 예를 들어 컨트롤의 순서를 변경하는 등 양식을 임의로 변경합니다. 이 양식을 호출하려면 이벤트 구독을 사용해야 합니다. GettingForm() 처리문서 관리자 "발송 현금 주문" 모듈에서.

새 이벤트 구독 만들기:

이름 - 기본 양식 RKO;
원천 - 문서관리자.RKO;
이벤트 - ProcessingReceivingForm.

일반 모듈에서 EventSubscriptionHandlers핸들러 생성 . 핸들러에 매개변수로 선택된 양식열린 양식의 이름이 전달됩니다.
모수 표준 처리로 설정 거짓말하다기본 양식 열기를 비활성화합니다.

절차 목록 MainFormRKOProcessingGettingForm()

일부 구성 개체에 대해 정의된 이벤트 구독을 검색하려면 개체 참조 검색 메커니즘을 사용할 수 있습니다. 이렇게 하려면 구성 개체 창에서 개체를 선택하고 상황에 맞는 메뉴에서 명령을 실행합니다. 개체에 대한 참조 찾기. 명령을 실행하면 서비스 메시지 창에 검색된 개체에 대한 링크가 포함된 개체 목록이 표시됩니다.

따라서 이벤트 구독은 기존 개체 모듈을 변경하지 않고도 새로운 기능을 추가할 수 있는 기능을 제공합니다. 이벤트 구독의 단점은 다음과 같습니다.

  • 알고리즘의 복잡성 증가.
  • 개체 및 개체 관리자의 이벤트만 구독할 수 있습니다.

양식 이벤트를 수정해야 하는 경우 이벤트 구독 메커니즘을 사용할 수 없습니다. 이 경우 양식 자체를 변경하거나 양식을 복사하고 새 개체를 변경해야 합니다.



질문이 있으신가요?

오타 신고

편집자에게 보낼 텍스트: