모듈 1c에서 이는 무엇을 의미하나요? 공통 모듈 생성 규칙. 정규신청모듈




모든 프로그램은 프로그램 코드, 즉 실제로 수행해야 하는 언어로 작성된 일련의 작업으로 구성됩니다.

그러나 바로 이 프로그램은 어딘가, 즉 어딘가에 작성되어야 합니다. 대부분의 경우 프로그램 코드는 일반 텍스트 파일로 작성됩니다. 유일한 차이점은 확장자가 .txt가 아니라 .cpp 또는 .php라는 것입니다.

1C 프로그램은 어디에 작성되어 있습니까?

모듈 1C란 무엇입니까?

물론 1C 코드는 일부 텍스트 파일에 작성될 수도 있습니다. 그러나 설정 목록, 양식 템플릿 등뿐만 아니라 1C 프로그램 코드도 포함하는 1C 구성 개념이 있습니다. 따라서 1C 코드가 구성에 저장됩니다.

구성은 이전 강의에서 이미 논의한 것처럼 1C 개체로 구성됩니다. 각 1C 개체에는 중첩된 개체가 포함되어 있습니다. 예를 들어 디렉터리에는 여러 형식이 있습니다.

일부 중첩된 개체를 포함하여 각 1C 개체에는 프로그램 코드가 포함된 텍스트 파일인 자체 모듈이 있습니다.

특정 개체와 독립적으로 프로그램 코드를 작성할 수 있는 개체 독립적 모듈도 있습니다.

따라서 1C에는 "단일" 프로그램이 없습니다. 각 1C 구성 개체에 대한 프로그램 코드를 작성하기 위한 모듈 세트가 있습니다.

1C 모듈은 어떻게 사용됩니까?

전체 프로그램은 대략 두 가지 유형으로 나눌 수 있습니다.

  • 객체 방식
  • 이벤트에 대한 반응.

행동 양식. 앞서 말했듯이 1C 개체는 데이터와 처리 방법을 모두 포함하는 통합 구조입니다. 이러한 메서드는 데이터를 처리하기 위해 호출할 수 있는 일련의 작업(메서드)입니다. 이러한 작업의 예는 DirectoryObject.Write()입니다. – 데이터베이스에 디렉터리 요소를 씁니다.

많은 1C 개체의 메서드는 표준(즉, 1C 플랫폼에서 프로그래밍)일 수 있으며 프로그래머가 1C 언어로 작성할 수 있습니다. 두 번째 도움으로 원하는 대로 1C 개체의 기능을 확장할 수 있습니다.

이벤트. 이벤트는 다른 많은 개발 도구에서 사용할 수 있습니다. 프로그램의 목적은 시작 시 무언가를 계산하는 것뿐만 아니라 사용자의 작업을 지원하는 것이기도 합니다.

사용자 이벤트 - 사용자가 버튼을 눌렀습니다. 이에 대한 응답으로 코드의 일부가 실행되어 사용자 작업에 반응합니다.

시스템 이벤트 - 데이터베이스에 1C 개체를 기록했습니다. 시스템 이벤트 "개체 쓰기"가 발생했습니다. 사용자(버튼을 누르거나 다른 작업을 수행한 사람)가 아닌 시스템 자체에 의해 발생한 이벤트에 대해 발생하는 반응을 구성할 수 있습니다. 그러한 이벤트의 놀라운 예는 프로그램이 시작될 때입니다.

1C 모듈 실행 순서

많은 언어에는 "진입점"이라는 개념이 있습니다. 이것은 프로그램이 시작될 때 실행될 첫 번째 줄이나 함수입니다.

1C에는 각 클라이언트 유형마다 이러한 진입점이 여러 개 있습니다. 즉, 씩 클라이언트를 시작할 때 하나의 진입점이 있고 씬 클라이언트를 시작할 때 또 다른 진입점이 있습니다. 이를 통해 클라이언트 유형에 따라 다른 기능을 프로그래밍할 수 있습니다.

해당 모듈의 진입점은 각각 시스템 이벤트 핸들러 BeforeSystemStart() 및 WhenSystemStart()입니다(즉, 순서대로). 이러한 기능은 먼저 실행되며 자동으로 무언가를 시작할 수 있습니다.

자동으로 시작된 것이 없으면 1C 인터페이스가 사용자 앞에 열리고 모든 것이 이에 따라 달라집니다. 그가 버튼을 누르면 – 버튼 클릭 핸들러가 실행됩니다(이는 자동으로 무언가를 실행할 수도 있습니다).

1C 모듈 작업

구성자에서 생성됩니다. 구성 창을 사용하여 모듈을 열 수 있습니다.

소프트웨어 모듈에는 시각적 개발 도구가 충분하지 않을 때 시스템이나 사용자의 작업에 특정 방식으로 응답하는 데 필요한 1C 언어의 실행 코드가 포함되어 있습니다. 또한 소프트웨어 모듈에서 자체 방법(절차 및 기능)을 설명할 수도 있습니다.

일반적으로 소프트웨어 모듈은 세 가지 섹션으로 구성됩니다.

  • 변수 선언 영역;
  • 절차 및 기능을 설명하는 영역;
  • 프로그램의 주요 텍스트.

프로그램 모듈 구조의 예:

//******************** 변수 선언 영역 **********************

Perem 성 수출; / /이것은 전역 변수입니다
이름 변경, 후원자; //이것은 모듈 변수입니다
페렘 이름; //이것은 또한 모듈 변수이고 접근될 수 있습니다

//우리 모듈의 모든 프로시저와 함수에서

//***************** 영역 절차 및 기능 설명 ****************

절차 절차1 ()
변동 합계 ; / /Result는 지역 변수(프로시저 변수)입니다.

합계 = 성 + " "+ 이름 + " "+ 중간 이름;

절차 종료

기능 기능1()

// 함수 연산자

Return(성 + " "+ 이름);

EndFunction

//********************* 프로그램의 주요 텍스트 ***********************

성 = "이바노프";
이름 = "이반";
Patronymic = "이바노비치";

//******************************************************************************

특정 소프트웨어 모듈에서는 일부 영역이 누락될 수 있습니다.
변수 선언 영역모듈 텍스트의 시작 부분부터 첫 번째 프로시저나 함수 문 또는 실행 가능한 문까지 배치됩니다. 이 섹션에는 Variable 변수 선언문만 포함될 수 있습니다.

절차 및 기능을 설명하는 영역첫 번째 프로시저 또는 함수 문부터 프로시저 또는 함수 설명 본문 외부의 실행 가능한 문까지 배치됩니다.

메인 프로그램 텍스트 영역프로시저 또는 함수 본문 외부의 첫 번째 실행문부터 모듈 끝까지 배치됩니다. 이 섹션에는 실행 가능한 명령문만 포함될 수 있습니다. 메인 프로그램 텍스트 영역은 모듈 초기화 순간에 실행됩니다. 일반적으로 메인 프로그램의 한 섹션에서는 모듈의 프로시저나 함수를 처음 호출하기 전에 할당해야 하는 특정 값으로 변수를 초기화하기 위한 연산자를 배치하는 것이 좋습니다.

소프트웨어 모듈은 특정 운영 알고리즘에 대한 설명이 필요할 수 있는 구성 위치에 있습니다. 이러한 알고리즘은 미리 결정된 상황(예: 디렉토리 양식을 열 때, 대화 상자에서 버튼을 누를 때, 개체를 변경할 때 등)에서 시스템 자체가 호출하는 프로시저나 함수의 형태로 공식화되어야 합니다. .

각 개별 소프트웨어 모듈은 시스템에서 단일 전체로 인식되므로 소프트웨어 모듈의 모든 절차와 기능은 단일 컨텍스트에서 수행됩니다.

모듈 실행 컨텍스트는 클라이언트와 서버로 구분됩니다. 또한 일부 소프트웨어 모듈은 클라이언트측과 서버측 모두에서 컴파일될 수 있습니다.

애플리케이션 모듈(관리형 또는 일반)

애플리케이션 모듈은 시스템 시작과 종료 시 초기화되는 이벤트의 프로시저(핸들러)를 설명합니다. 예를 들어, 애플리케이션이 실행되기 시작하면 일부 구성 데이터를 업데이트할 수 있고 애플리케이션을 종료할 때 프로그램을 종료할 가치가 있는지 물어볼 수 있습니다. 또한 이 모듈은 거래 또는 회계와 같은 외부 장비의 이벤트를 가로챕니다. 애플리케이션 모듈은 애플리케이션이 대화형으로 실행될 때만, 즉 프로그램 창이 실행될 때만 실행된다는 점은 주목할 가치가 있습니다. 응용프로그램이 com 연결 모드에서 실행되는 경우에는 이런 일이 발생하지 않습니다.
1C 8 플랫폼에는 두 가지 서로 다른 애플리케이션 모듈이 있습니다. 이는 일반 애플리케이션 모듈과 관리형 애플리케이션 모듈입니다. 다른 클라이언트가 시작될 때 트리거됩니다. 따라서 관리되는 애플리케이션 모듈은 웹 클라이언트, 씬 클라이언트 및 씩 클라이언트가 관리되는 애플리케이션 모드에서 실행될 때 트리거됩니다. 그리고 일반 애플리케이션 모드에서 씩 클라이언트가 시작되면 일반 애플리케이션 모듈이 트리거됩니다. 애플리케이션 시작 모드 설정은 "기본 시작 모드" 구성 속성에 지정됩니다.

애플리케이션 모듈에는 변수 선언, 프로시저 및 함수 설명, 프로그램의 기본 텍스트 등 세 가지 섹션이 모두 포함될 수 있습니다. 애플리케이션 모듈은 클라이언트 측에서 컴파일되므로 많은 데이터 유형의 사용이 크게 제한됩니다. "서버 호출" 속성이 설정된 공통 모듈의 메서드를 사용하여 애플리케이션 모듈 컨텍스트를 확장할 수 있습니다. 내보내기로 표시된 모든 애플리케이션 모듈 변수 및 메소드는 클라이언트 측에서 실행되는 모든 구성 모듈에서 사용할 수 있습니다. 그러나 유혹적일 수 있지만 여기에 많은 프로시저와 기능을 배치해서는 안 됩니다. 특정 모듈에 코드가 많을수록 컴파일 시간이 길어지고 결과적으로 애플리케이션 실행 시간도 길어집니다.

위에서 언급한 것처럼 애플리케이션 모듈은 애플리케이션 시작 및 종료 이벤트를 처리합니다. 애플리케이션 모듈에서 이러한 각 이벤트를 처리하기 위해 Before... 및 When... 핸들러 쌍이 있습니다. 두 핸들 간의 차이점은 다음과 같습니다. Before... 핸들러에서 코드를 실행할 때 작업이 아직 수행되지 않았습니다. 발생했으며 당사는 이를 거부할 수 있습니다. 이것이 거부 옵션의 목적입니다. On.. 핸들러에서는 작업이 이미 수행되었으므로 애플리케이션 시작이나 종료를 거부할 수 없습니다.

외부접속모듈

  • 3개 영역을 모두 포함할 수 있습니다.
  • 구성의 루트 섹션에 위치

모듈의 목적은 애플리케이션 모듈의 목적과 유사합니다. 애플리케이션의 시작 및 종료 이벤트를 처리합니다. 외부 연결 모듈은 애플리케이션이 com 연결 모드에서 실행될 때 트리거됩니다. 외부 조인 프로세스 자체는 대화형 프로세스가 아닙니다. 이 모드에서는 정보 기반을 사용한 프로그래밍 작업이 발생하고 응용 프로그램 창이 열리지 않으므로 대화형 작업을 위한 메서드 사용에 특정 제한이 적용됩니다. 이 모드에서는 대화 상자 양식 호출, 사용자에게 보내는 경고 및 메시지 등을 사용할 수 없습니다. 그들은 단순히 처형되지 않을 것입니다.

애플리케이션 모듈에서와 마찬가지로 여기에서는 변수 선언, 프로시저 및 기능 설명, 프로그램의 기본 텍스트 등 세 가지 영역을 모두 사용할 수 있습니다. 응용 프로그램 모듈과의 주요 차이점은 com-connection 모드에서는 정보 베이스에 대한 모든 작업이 서버 측에서 발생하므로 외부 연결 모듈은 서버 측에서 컴파일된다는 것입니다. 따라서 일반 클라이언트 모듈의 내보내기 변수 및 메소드를 사용할 수 없습니다.

세션 모듈

  • 서버 측에서 실행
  • 구성의 루트 섹션에 위치

이는 세션 매개변수 초기화 전용으로 설계된 고도로 전문화된 모듈입니다. 왜 이를 위해 자체 모듈을 만들어야 했나요? 이를 사용하는 이유는 애플리케이션 자체가 다양한 모드에서 실행될 수 있고(관리되는 애플리케이션 모듈, 일반 애플리케이션 모듈 또는 외부 연결 모듈이 실행됨) 세션 매개변수의 초기화가 관계없이 수행되어야 하기 때문입니다. 시작 모드의. 이 세 가지 모듈 모두에 동일한 프로그램 코드를 작성하지 않으려면 애플리케이션 시작 모드에 관계없이 실행되는 추가 모듈이 필요했습니다.

세션 모듈에는 응용 프로그램 모듈 이벤트 BeforeSystemStartOperation 이전에도 가장 먼저 실행되는 단일 이벤트 "SettingSessionParameters"가 있습니다. 변수 선언 섹션과 기본 프로그램 섹션은 사용할 수 없습니다. 내보내기 방법도 선언할 수 없습니다. 모듈은 서버 측에서 컴파일됩니다.

공통 모듈

  • 절차와 기능을 설명하는 영역을 포함할 수 있습니다.
  • 서버 또는 클라이언트 측에서 실행됨(모듈 설정에 따라 다름)
  • 구성 개체 "일반" - "일반 모듈"의 트리 분기에 있습니다.

공통 모듈은 다른 구성 모듈에서 호출되는 몇 가지 공통 알고리즘을 설명하기 위한 것입니다. 일반 모듈에는 변수 선언 영역과 기본 프로그램 텍스트가 포함되어 있지 않습니다. 내보내기 방법을 선언할 수 있으며, 그 가용성은 모듈 설정(실행되는 쪽: 서버 쪽 또는 클라이언트 쪽)에 따라 결정됩니다. 변수 설명 부분이 없기 때문에 공통 모듈에서는 전역 변수를 정의할 수 없습니다. 이를 위해 애플리케이션 모듈을 사용할 수 있습니다.

공통 모듈의 동작은 매개변수 세트(전역 여부, 다양한 컴파일 플래그, 서버 호출 사용 가능 여부 등)에 따라 달라집니다. 다음은 공통 모듈 설정에 대한 몇 가지 팁입니다.

어디에서나 글로벌 플래그를 사용하지 않는 것이 좋습니다. 이렇게 하면 애플리케이션의 시작 시간이 줄어들고 코드 가독성도 향상됩니다(물론 공통 모듈에 완전히 의미 있는 이름이 있는 경우).
- 하나 이상의 컴파일 플래그를 사용하는 것은 바람직하지 않습니다. 서로 다른 컨텍스트에서 실행해야 하는 메서드는 그리 많지 않으며, 이러한 메서드가 여전히 필요한 경우 별도의 공통 모듈을 할당할 수 있습니다.
- "Call server" 플래그는 모듈이 "On the server"로 컴파일된 경우에만 의미가 있습니다. 따라서 다양한 문제를 방지하려면 다른 모든 컴파일 플래그를 제거해야 합니다.
- 모듈 방법에 대규모 데이터 처리, 데이터베이스 읽기 및 쓰기가 포함된 경우 작업 속도를 높이려면 "권한" 플래그를 설정하여 액세스 제어를 비활성화하는 것이 좋습니다. 이 모드는 서버에서 컴파일된 공유 모듈에만 사용할 수 있습니다.

양식 모듈

  • 3개 영역을 모두 포함할 수 있습니다.
  • 서버측과 클라이언트측에서 실행됨

양식 모듈은 이 양식을 사용하여 사용자 작업(버튼 클릭 이벤트 처리, 양식 세부정보 변경 등)을 처리하도록 설계되었습니다. 양식 자체와 직접적으로 연관된 이벤트도 있습니다(예: 양식 열기 또는 닫기). 관리되는 양식과 일반 양식의 모듈은 우선 관리되는 양식의 모듈이 컨텍스트로 명확하게 구분된다는 점에서 다릅니다. 모든 프로시저나 함수에는 컴파일 지시문이 있어야 합니다. 컴파일 지시어가 지정되지 않은 경우 이 프로시저나 함수는 서버측에서 실행됩니다. 일반적인 형태에서는 모든 코드가 클라이언트 측에서 실행됩니다.

관리되는 폼의 구조에는 변수 선언 섹션, 프로시저 및 함수 설명, 프로그램의 기본 텍스트(폼 초기화 시 실행됨)가 포함됩니다. 양식의 예상 절차 및 기능 목록을 통해 표준 양식 이벤트에 액세스할 수 있습니다. (Ctrl+Alt+P), 또는 양식 자체의 속성 팔레트를 통해.

양식에 기본 속성이 할당되어 있으면 기본 속성으로 사용되는 애플리케이션 개체의 속성과 메서드를 양식 모듈에서 사용할 수 있게 됩니다.

객체 모듈

  • 3개 영역을 모두 포함할 수 있습니다.
  • 서버 측에서 실행

이 모듈은 대부분의 구성 개체에 사용할 수 있으며 일반적으로 개체와 직접 관련된 이벤트를 처리하기 위한 것입니다. 예를 들어 객체 기록 및 삭제, 객체 내역 완료 확인, 문서 게시 등의 이벤트 등이 있습니다.

일부 개체 모듈 이벤트는 양식 모듈 이벤트를 복제합니다. 예를 들어 녹음과 관련된 이벤트입니다. 그러나 폼 모듈의 이벤트는 해당 객체의 특정 폼, 즉 특정 폼이 열릴 때 독점적으로 실행된다는 점을 이해해야 합니다. 그리고 개체 모듈의 이벤트는 개체를 프로그래밍 방식으로 작업하는 순간에도 호출됩니다. 따라서 객체의 특정 형태에 얽매이지 않고 객체와 관련된 메서드가 필요한 경우 이를 위해 객체 모듈을 사용하는 것이 좋습니다.

개체 관리자 모듈

  • 3개 영역을 모두 포함할 수 있습니다.
  • 서버 측에서 실행

개체 관리자 모듈은 버전 1C 8.2부터만 나타났습니다. 관리자 모듈은 모든 애플리케이션 개체에 대해 존재하며 이 개체를 구성 개체로 관리하도록 설계되었습니다. 관리자 모듈을 사용하면 데이터베이스 개체의 특정 인스턴스가 아닌 구성 개체 자체와 관련된 프로시저 및 기능을 도입(작성)하여 개체의 기능을 확장할 수 있습니다. 개체 관리자 모듈을 사용하면 특정 개체에 대한 일반 프로시저와 기능을 배치하고 처리 등 외부에서 액세스할 수 있습니다(물론 이 프로시저나 함수에 내보내기 키워드가 있는 경우). 이것이 우리에게 어떤 새로운 것을 주는가? 일반적으로 개체별로 절차를 구성하고 별도의 장소(개체 관리자 모듈)에 저장하는 것 외에는 아무것도 없습니다. 이러한 절차와 기능을 일반 모듈에 성공적으로 배치할 수 있지만 1C에서는 개체 관리자 모듈에 개체의 일반 절차와 기능을 배치하는 것이 좋습니다. 개체 관리자 모듈의 절차 및 기능 사용 예: 특정 조건에서 디렉터리 또는 문서의 개별 세부 정보를 초기에 작성하고, 특정 조건에서 디렉터리 또는 문서의 세부 정보가 완료되었는지 확인하는 등.

명령 모듈

  • 절차와 기능을 설명하는 섹션이 포함될 수 있습니다.
  • 클라이언트 측에서 실행됨

명령은 응용 프로그램 개체 또는 전체 구성에 종속된 개체입니다. 각 명령에는 해당 명령을 실행하기 위해 미리 정의된 CommandProcess() 프로시저를 설명할 수 있는 명령 모듈이 있습니다.

일반 1C 모듈- 구성에서 자주 호출되는 프로그램 코드를 저장하는 1C 8.3 및 8.2의 구성 메타데이터 개체입니다. 함수/프로시저는 구성의 어느 곳에서나 호출할 수 있습니다(내보내기인 경우).

공유 모듈을 사용하는 방법

둘 이상의 위치에서 호출되는 경우 공통 모듈에 프로시저나 함수를 배치하는 것이 좋습니다. 첫째, 절차를 바로잡으면 한 곳만 고쳐야 한다. 둘째, 이는 코드에서 더 큰 순서를 달성합니다.

일반 모듈의 일반적인 예는 일부 등록부에 게시하는 처리, 근무일 차이 금액 획득, 환율 재계산, 표 섹션의 수량/가격/금액 재계산 및 기타 기능입니다.

공통 모듈의 속성

다른 모듈의 공유 모듈의 주요 기능 중 하나는 공유 변수를 선언할 수 없다는 것입니다.

1C에서 267개의 비디오 강의를 무료로 받으세요:

일반 모듈의 속성 팔레트를 자세히 살펴보겠습니다.

  • 글로벌- 플래그가 설정되면 이 모듈의 기능과 프로시저를 전역 컨텍스트에서 사용할 수 있습니다. 저것들. 공통 모듈의 이름 없이 액세스하여 구성의 어느 곳에서나 호출할 수 있습니다. 그러나 조건이 추가됩니다. 즉, 이 공통 모듈의 프로시저 및 함수 이름은 전역 컨텍스트 내에서 고유해야 합니다.
  • 섬기는 사람— 이 공통 모듈의 프로시저와 기능은 서버에서 실행될 수 있습니다.
  • 외부 조인— 이 공통 모듈의 프로그램 코드는 외부 소스(예: COM)에 의해 연결될 때 실행될 수 있습니다.
  • 클라이언트(관리형 애플리케이션)— 이 공통 모듈의 프로시저와 기능은 관리형 애플리케이션 모드의 씩(thick) 클라이언트에서 사용될 수 있습니다.
  • 클라이언트(정규신청)— 이 공통 모듈의 프로그램 코드는 일반 응용 프로그램 모드의 씩(thick) 클라이언트에서 사용할 수 있습니다.
  • 서버 호출— 클라이언트가 이 공통 모듈의 프로시저와 기능을 사용할 수 있도록 하는 플래그입니다.
  • - True로 설정하면 이 공통 모듈에서 액세스 권한 확인이 비활성화됩니다.
  • 재사용— 반환 값에 대한 설정을 정의합니다. 옵션이 활성화된 경우 첫 번째 실행 후 시스템은 이러한 입력 매개변수의 값을 기억하고 미리 만들어진 값을 반환합니다. 다음 값을 사용할 수 있습니다. 사용되지 않음- 종료, 통화하는 동안- 특정 절차가 진행되는 동안 세션 기간 동안— 사용자가 세션(프로그램)을 닫을 때까지.

1C 프로그래밍을 배우기 시작했다면 무료 과정을 추천합니다(잊지 마세요)


관리형 애플리케이션 모듈

주로 애플리케이션이 시작되는 순간과 종료되는 순간을 포착하도록 설계되었습니다. 장비에서 외부 이벤트를 가로챌 수 있는 핸들러도 있습니다. 관리되는 애플리케이션 모듈에서는 모니터링되는 시스템의 대화형 시작입니다.

관리되는 애플리케이션 모듈 이벤트는 관리되는 애플리케이션의 씬 클라이언트, 웹 클라이언트 및 씩 클라이언트가 실행될 때 발생합니다. 제어 모듈에서 응용 프로그램은 루트 구성 노드의 속성 팔레트나 루트 구성 노드에서 호출되는 상황에 맞는 메뉴에서 액세스할 수 있습니다.

정규신청모듈

일반 애플리케이션 모듈은 관리되는 애플리케이션 모듈과 동일한 역할을 수행하며, 일반 애플리케이션의 씩 클라이언트가 시작되면 일반 애플리케이션 모듈의 이벤트만 트리거됩니다.

일반 애플리케이션 모듈은 "일반" 탭의 구성 매개변수에서 "실행 모드에 대한 구성 편집" 옵션을 "관리되는 애플리케이션 및 일반"으로 설정한 후 루트 구성 노드의 속성 팔레트에서 사용할 수 있게 됩니다.

외부접속모듈

외부 연결 모듈은 로그인 이벤트(대화형이 아닌 COM 연결 모드) 및 로그아웃을 처리하도록 설계되었습니다. 해당 핸들러가 있습니다. COM 연결을 사용하면 대화형 창이 열리지 않으므로 사용자와의 대화 기능이 작동하지 않습니다. 모듈에서 내보내기 변수와 메서드를 설명하는 것이 가능합니다. 외부 연결 모듈은 서버에서 컴파일됩니다. 저것들. 예를 들어 디렉터리와 같은 해당 구성 개체에 액세스할 수 있습니다.

세션 모듈

"세션 매개변수"와 같은 일반적인 구성 개체가 있습니다. 세션 모듈은 세션 매개변수를 초기화하기 위해 생성됩니다(이를 위한 특정 이벤트가 있습니다. 애플리케이션이 시작되면 먼저 시작됩니다).

특권 모드로 실행됩니다(데이터베이스에 접근할 때 접근 권한을 확인하지 않습니다). 세션 모듈은 서버에서 컴파일됩니다. 변수를 설명하는 섹션과 기본 프로그램을 설명하는 섹션이 없으며 내보내기 방법을 설명할 수 없으며 세션 매개변수 설정에만 사용됩니다. 보시다시피 세션 모듈의 목적은 매우 좁습니다.

공통 모듈

공통 모듈은 몇 가지 일반적인 알고리즘을 설명하고 다양한 위치에서 호출할 수 있는 함수를 포함합니다. 공통 모듈은 클라이언트와 서버 모두에서 컴파일될 수 있습니다.

일반 모듈에서는 절차와 기능을 설명하는 섹션만 사용할 수 있습니다. 전역 변수를 사용해야 하는 경우 세션 매개변수 또는 관리되는 애플리케이션 모듈의 내보내기 변수를 사용할 수 있습니다.

일반 모듈에서는 동작에 영향을 미치는 일부 매개변수를 설정할 수 있습니다. 일반 모듈에서 "글로벌" 확인란을 선택하면 해당 내보내기 기능이 글로벌 컨텍스트 형성에 참여합니다. 그리고 다른 컨텍스트에서 직접 액세스할 수 있습니다(공통 모듈의 이름을 언급하지 않고): CommonModuleMethod();

공통 모듈의 "전역" 속성을 어디에서나 사용해서는 안 됩니다. 이러한 모듈은 시스템 시작 시 컴파일되어 프로그램 시작 속도를 늦춥니다.

객체 모듈

많은 구성 개체(디렉터리, 문서 등)에는 개체 모듈이 있습니다. 새 디렉터리 항목 생성, 새 개체 기록, 삭제, 문서 게시 처리 등과 같은 표준 이벤트를 입력할 수 있습니다. 기록 이벤트는 양식 모듈(사용자가 "기록" 버튼을 클릭할 때 대화형 기록 프로세스 중에 발생)과 개체 모듈 모두에 존재합니다.

하나의 객체가 여러 형태를 가질 수 있다는 점을 기억해야 합니다. 따라서 녹화 이벤트는 개체 모듈에서 처리되어야 합니다. 여기서는 기록된 데이터의 정확성을 확인합니다.

객체 모듈은 주어진 객체의 속성 팔레트나 상황에 맞는 메뉴에서 호출할 수 있습니다. 개체 모듈의 구조는 양식 모듈과 다르지 않습니다. 개체 모듈은 서버에서 컴파일되므로 컴파일 지시문이 필요하지 않습니다.

양식 모듈

양식 모듈은 사용자 작업(버튼 클릭 이벤트 처리 등)을 처리하도록 설계되었습니다. 양식 자체와 직접적으로 연관된 이벤트도 있습니다(예: 양식 열기, 닫기 이벤트). 관리되는 양식 모듈과 일반 양식 모듈은 주로 관리되는 양식 모듈이 컨텍스트로 명확하게 분리된다는 점에서 다릅니다. 모든 프로시저에는 컴파일 지시문이 있어야 합니다. 일반적인 형태에서는 모든 코드가 클라이언트에서 실행됩니다.

관리되는 양식의 구조에는 변수를 설명하는 섹션, 프로시저 및 기능에 대한 섹션, 기본 프로그램(양식이 초기화될 때 실행됨)에 대한 섹션이 포함됩니다. 프로시저 및 기능 목록(Ctrl+Alt+P)을 통해 또는 양식 자체의 속성 팔레트를 통해 표준 양식 이벤트에 액세스할 수 있습니다. 관리되는 양식에서 요소 기록 이벤트를 처리할 수도 있습니다(이 이벤트는 디렉터리, 문서 등 개체에만 존재함).

개체 관리자 모듈

관리자 모듈은 1C 8.2에만 나타 났으며 많은 구성 개체에 존재합니다. 개체 관리자 모듈의 주요 목적은 표준 이벤트 "선택 데이터 수신 처리"를 재정의하는 것입니다.

가치 관리자 모듈

상수 구성 개체에는 개체 모듈이 없지만 매우 유사한 모듈인 값 관리자 모듈이 있습니다. 상수 값 관리자 모듈에서는 다양한 절차(내보내기 절차 포함)와 프로세스 3 이벤트(BeforeWrite, OnWrite, ProcessFillCheck)를 설명할 수 있습니다. 이 모듈은 서버에서 컴파일됩니다.

레코드세트 모듈

레코드세트 모듈은 개체 모듈과 유사하며 레지스터에 고유합니다. 레코드세트 모듈에는 다음과 같은 표준 이벤트가 있습니다.

  • 녹음하기 전에
  • 녹음할 때
  • 패딩 확인 처리 중

레코드세트 모듈에는 변수, 프로시저 및 함수(내보내기 포함)에 대한 설명 섹션과 기본 프로그램 섹션이 있습니다.

Platform 8.2는 Managed Application에서 클라이언트와 서버 기능을 분리하여 애플리케이션 성능을 최적화합니다. 예를 들어 클라이언트에서는 데이터베이스 데이터에 액세스할 수 없습니다. 그리고 서버 측에서는 &OnServerWithoutContext 지시문이 있는 프로시저가 있는 모듈에 있는 양식의 데이터를 사용할 수 없습니다. 1C의 프로그램 코드는 다양한 모듈, 개체 모듈, 양식 모듈, 일반 모듈 등에 있습니다. 각 모듈의 프로시저와 기능은 서버와 클라이언트 모두에서 컴파일될 수 있습니다. 서버 측에서 컴파일된 프로시저와 클라이언트 측에서 컴파일된 프로시저에서 다양한 프로시저와 함수를 호출할 수 있는 가능성을 살펴보겠습니다.

그래서, 클라이언트 측에서 전화할 수 있습니다

1) &OnClient 지시문을 사용하는 이 모듈의 클라이언트 프로시저;

2) &OnServer 지시문을 사용하는 이 모듈의 서버 프로시저;

3) &OnClient 지시문을 사용하는 일반 모듈의 클라이언트 프로시저(속성에서 여러 컨텍스트의 접근성에 따라 "클라이언트"가 필요함 등)

4) 클라이언트 공통 모듈의 모든 절차, 공통 모듈의 속성에는 “클라이언트(관리 애플리케이션)” 속성만 있어야 합니다. 이 경우 &OnClient 지시문은 일반 모듈에 작성되지 않습니다.

5) 서버 공통 모듈의 절차, 그러나 "서버 호출"이라는 추가 속성이 있으며 공통 모듈이 서버에서만 컴파일 속성을 갖는 것이 중요합니다.


서버 측에서 호출할 수 있습니다.

1) 컴파일 지시문 &OnServer;를 사용하는 이 모듈의 서버 프로시저

2) 서버 일반 모듈의 모든 절차, 일반 모듈의 속성에는 “서버” 속성만 있어야 합니다. 이 경우 &OnServer 지시문은 일반 모듈에 작성되지 않습니다.

3) &OnServer 지시문을 사용하는 일반 모듈의 절차(속성에서 여러 컨텍스트의 접근성에 따라 "서버"가 필요함 등).

또한 공통 모듈의 속성에 여러 "클라이언트, 서버" 컴파일 위치가 지정되어 있고 프로시저에 컴파일 지시문이 지정되지 않은 경우 이 경우 프로시저는 서버 측과 클라이언트 측 모두에서 컴파일됩니다. . 그리고 클라이언트 메서드와 서버 메서드 모두에서 각각 호출할 수 있습니다. 이 경우 프로시저를 주의 깊게 사용해야 하며 해당 코드가 서버와 클라이언트 모두에서 실행될 수 있어야 합니다.

기능이 하나 더 있습니다. 여러 컴파일 위치(“서버, 클라이언트”)가 있는 하나의 공통 모듈에서는 “서버 호출” 확인란을 선택하더라도 클라이언트 프로시저에서 동일한 모듈의 서버 프로시저를 호출할 수 없습니다. "서버 호출" 속성은 일반 모듈 "서버에서 컴파일"의 속성이 하나만 있는 경우 의미가 있습니다.

서버나 클라이언트에서만 컴파일된 일반 모듈을 사용하는 것이 좋습니다. 따라서 “Client” 속성을 가진 모듈에서는 모든 클라이언트 모듈을 사용하고, “Server” 속성을 가진 모듈에서는 모든 서버 메소드를 사용하십시오.

일반 모듈의 또 다른 편리한 속성입니다. 공통 모듈의 속성에서 "전역" 속성을 활성화하면 공통 모듈 이름 없이 이 모듈의 프로시저를 직접 호출할 수 있습니다.

그러나 이 속성을 너무 많이 사용해서는 안 됩니다. 이 경우 모듈은 시스템 시작 시 컴파일되어 시작 시간이 늘어나기 때문입니다.