정상 및 미리 정의된 요소. 데이터베이스 측 차이

우리의 네 번째 수업에서우리는 프로그램에 대해 계속 알게 될 것입니다. 오늘 우리는 실제 사례에 대해 알게 될 것입니다.계층적 디렉토리 및 미리 정의된 요소를 생성하는 방법을 배웁니다..

코스의 타이밍 4 레슨:

00:19 과정의 세 번째 수업에 대한 숙제를 완료한 후 디렉토리 직원의 변경
00:35 디렉토리의 세부 정보 순서 편집
02:54 디렉토리 생성 명명법
03:40 계층적 디렉터리 만들기 및 구성
05:10 Nomenclature 디렉토리에 Services 및 Goods 그룹 생성
06:05 디렉토리 명명법 작성
07:14 디렉터리 요소를 다른 그룹으로 이전하는 3가지 방법
08:21 디렉터리 생성 창고
09:19 사전 정의된 디렉토리 요소 생성
11:25 디렉토리 창고 작성
12:20 재료 4 레슨에 대한 테스트를

계층적 디렉토리– 요소를 계층적으로 배열할 수 있는 디렉토리. 예를 들어, Nomenclature 참고서에서 이러한 그룹과 관련된 요소가 있는 상품, 서비스 등의 그룹을 만들 수 있습니다. 또한 디렉터리 그룹은 다른 그룹을 포함할 수 있으므로 다단계 계층 구조를 만들 수 있습니다.

또한 디렉토리는 디렉토리의 요소가 그룹이 아니라 동일한 디렉토리의 다른 요소에 속하는 또 다른 유형의 계층 구조를 지원합니다. 이런 종류의 계층 요소 계층)는 예를 들어 Subdivision 디렉토리를 생성할 때 사용할 수 있습니다. 여기서 하나의 하위 분할(이 경우 하위 분할은 그룹이 아니라 디렉토리의 요소임)이 여러 다른 하위 분할을 포함할 수 있습니다. 이 유형의 계층 구조는 거의 사용되지 않습니다.

디렉토리 양식- 디렉토리의 시각적 표현. 디렉토리로 수행하려는 작업에 따라 디렉토리를 "다른 보기"로 표시해야 합니다. 그래서 4강에서는 세부 항목의 순서를 목록 형식과 참조 요소 형식으로 수정했습니다.

시스템은 자동으로 양식을 생성(생성)하지만 필요한 경우 개발자가 양식을 직접 "그리기"할 수 있습니다.

디렉토리에는 총 5가지 양식(양식 유형)이 있습니다.

  • 요소 모양– 디렉토리 요소를 생성하거나 편집하기 위해
  • 그룹 형태- 디렉토리 그룹 생성 또는 편집
  • 목록 양식– 디렉토리 요소 목록을 표시합니다.
  • 선택 양식- 특정 형식의 필드에서 이 디렉토리의 요소 중 하나를 선택하는 데 사용됩니다. 예를 들어 입고 문서의 창고 필드에 있는 창고 디렉토리에서 특정 창고를 선택하려면 다음과 같이 하십시오.
  • 그룹 선택 양식- 특정 형식의 필드에서 이 디렉토리의 그룹 중 하나를 선택하는 데 사용됩니다.

미리 정의된 디렉토리 요소- 구성자 모드에서 개발자가 생성하고 내장 1c 언어에서 이름으로 액세스할 수 있는 디렉토리 요소.

일반 디렉토리 요소와 미리 정의된 디렉토리 요소 간에는 근본적인 차이가 있습니다. 일반 요소는 구성에서 영구적이지 않습니다. 사용자가 작업하는 동안 생성, 편집 및 삭제될 수 있으므로 알고리즘을 실행할 때 이를 의존해서는 안 됩니다(요소의 코드 및 이름은 사용자가 변경할 수 있음).반면에 미리 정의된 요소는 영구적입니다. 작업 과정에서 사용자가 이러한 요소의 이름을 바꾸더라도 내장된 1c 언어에서 액세스할 수 있습니다. 이는 미리 정의된 요소에 소품이 있도록 함으로써 달성됩니다. 이름, 사용자가 사용할 수 없습니다. 일반 디렉토리 요소에는 이 속성이 없습니다.

중요한! 기술적으로 사용자는 사전 정의된 디렉토리 요소를 삭제할 수 있지만 원칙적으로 사용자는 사전 정의된 디렉토리 요소를 삭제할 권한이 없습니다.

코스 4과의 숙제

코스의 네 번째 수업에 대한 숙제는 이론 테스트를 성공적으로 마친 직후에 사용할 수 있습니다.

주목! 다음은 자료가 완전하지 않을 수 있는 강의의 평가판입니다.

학생으로 로그인

학교 콘텐츠에 액세스하려면 학생으로 로그인하세요.

초보자 프로그래머를 위한 1C 8.3 쿼리 언어: VALUE 함수

기능 의미 처리하도록 설계요청 본문에 시스템 열거형 값으로그리고 미리 정의된 데이터.

전송 및 사전 정의된 데이터에 대한 다른 사항은 무엇입니까? 모든 것에 대해 순서대로 이야기합시다.

열거형

열거형- 이것은 응용 프로그램 개체입니다(여전히 참고 도서그리고 선적 서류 비치). 왜 그가 필요 했습니까?

요점은 열거형이 특수 개체라는 것입니다. 설명서 및 문서와 달리 가능한 모든 열거 값은 구성 단계에서 설정됩니다.사용자 모드에서는 더 이상 변경할 수 없습니다.

불변성은 그들의 주요 트럼프 카드입니다. 이들은 일종의 데이터베이스 상수입니다.

구성 모드의 프로그래머가 열거형을 만든 경우 바닥및 값 남성그리고 여성, 프로그램을 작성할 때 그는 이 열거의 값이 미래에 변경되지 않을 것이라고 확신할 수 있습니다. 따라서 그는 코드에서 이러한 값에 안전하게 액세스할 수 있습니다.

그가 이러한 목적으로 디렉토리를 사용하려고 하면 어떤 일이 일어날지 상상해 보십시오.

먼저 일부 사용자는 계속해서 "화성 바닥"을 추가합니다.

둘째, 다른 사용자는 예를 선택하고 이미 존재하는 성별 중 하나를 삭제하거나 이름을 변경합니다.

그리고이 때문에 프로그램이 중단됩니다. 그 작업을 위해서는 정확히 두 개의 성별과 "남성"과 "여성"이라는 이름이 필요하기 때문입니다.

열거가 존재하는 경우입니다. 한 번 (구성 단계에서도) 가능한 모든 값을 엄격하게 설정하고 나중에 프로그램 코드에서 사용합니다.

"Gastronom" 데이터베이스에서 이러한 열거의 예를 살펴보겠습니다. 당신은 레슨의 평가판을 읽고 있으며, 전체 레슨이 있습니다.

여기에 이름이 있는 열거형이 있습니다. 바닥. 어떤 가치를 가질 수 있습니까?

두 가지 값만 있습니다. "남성"과 "여성"이라는 이름으로. 우리에게 필요한 것.

앞으로 이 열거형을 어디에서 사용할 수 있습니까? 물론 가이드에서 클라이언트. 목록에 이름이 지정된 새 소품이 있음에 유의하십시오. 바닥및 유형 열거형.성별:

따라서 이미 사용자 모드에서 클라이언트 카드를 작성할 때 클라이언트의 성별로 남성과 여성의 두 가지 값만 선택할 수 있습니다.

이제 데이터베이스에서 고객과 성별을 선택하는 쿼리를 만들어 보겠습니다.

이제 남성만 남도록 쿼리를 변경해 보겠습니다. 다음과 같이 작성하려고 하면

그러면 아무것도 얻지 못합니다.

이런 식으로 열거형 값에 접근할 수 없기 때문입니다. 함수를 사용하여 액세스해야 합니다. 의미:

따라서 기능의 작업 중 하나 의미- 쿼리에서 열거 값 사용.

미리 정의된 데이터

디렉토리에 대해 미리 정의된 데이터가 무엇인지 예를 들어 보여주고 싶습니다. 당신은 레슨의 평가판을 읽고 있으며, 전체 레슨이 있습니다.

"Gastronom" 데이터베이스(사용자 모드)에서 참조 "측정 단위"를 엽니다.

그 요소를 살펴보십시오. 일부 요소 옆에 있는 노란색 원이 보이십니까? 이러한 요소(원이 있음)는 미리 정의된 데이터.

일반적으로 디렉토리의 요소가 사전 정의된 경우(즉, 노란색 원이 있는 경우) 이 요소는 특별합니다.

첫째, 이는 프로그래머가 구성 단계에서 요소를 생성했음을 의미합니다(이 경우 코드 1, 2 및 3이 있는 요소임).

둘째, 이 요소는 프로그램의 기능에 매우 중요하다는 것을 의미합니다. 데이터베이스의 일부 코드가 여기에(또는 미리 정의된 이름에) 연결되어 있습니다.

그렇기 때문에 이러한 요소를 단순히 삭제하면 작동하지 않습니다. 삭제 표시를 해 보세요.

이제 구성 모드로 전환하고 이러한 미리 정의된 요소(이 경우 측정 단위 참조 책의 경우)가 생성되는 위치를 살펴보겠습니다.

여기에는 참조 측정 단위에 대해 미리 정의된 모든 요소가 있습니다. 모든 미리 정의된 요소에는 사용자 모드에 표시되지 않는 특수한 이름이 있습니다.

코드가 1인 요소의 경우 이 이름은 Ton이고 코드가 2인 경우 - Gram 등입니다. 이 이름은 미리 정의된 요소 이름그리고 이 이름으로 코드(또는 우리의 경우 요청)에서 참조할 수 있습니다.

측정 단위를 Ton, Gram 및 Pack 요소를 포함하는 단순히 열거형으로 만드는 것이 왜 불가능했는지 물을 수 있습니다. 이 경우 참조 측정 단위에는 항상 일부 특정 요소(톤, 그램 및 팩)가 포함되지만 동시에 사용자가 해당 요소를 추가하는 것을 금지하지 않는 것이 중요하기 때문입니다( 킬로그램, 조각 등). 당신은 레슨의 평가판을 읽고 있으며, 전체 레슨이 있습니다.

따라서 미리 정의된 요소가 열거형보다 여기에 더 적합합니다.

그리고 이미 익숙한 함수를 사용하여 요청에서 미리 정의된 요소에 액세스할 수 있습니다. 의미:

시험을보다

테스트 시작

1. 열거형 값이 설정됨

2. 회사의 창고 목록을 저장하려면 다음을 입력하십시오.

3. 창고에 측정 단위 목록을 저장하려면

4. 사용자가 변경해서는 안되는 세율 목록을 저장하기 위해,

5. 쿼리에서 열거 값을 참조하려면 함수가 적합합니다.

6. 세율을 저장하기 위해 사용자가 목록을 변경할 유형

7. 미리 정의된 데이터는

누구나 사전 정의된 요소와 일반 요소의 차이점을 알고 있습니다. "사전 정의된 요소는 Configurator 모드에서 생성되며 1C:Enterprise 모드에서는 삭제할 수 없습니다." 사용자 모드에서는 사전 정의된 요소와 특수 아이콘으로 사용자가 추가한 요소를 구별할 수 있습니다(다음 스크린샷 참조).

기본적으로 미리 정의된 요소는 다양한 구성 개체에 알고리즘을 연결하기 위해 개발자가 만듭니다. 예를 들어, "품질" 참조 문서의 "제조 기업 관리" 구성에서 개발자는 사전 정의된 요소 "신규"를 추가했습니다.

이 요소는 많은 구성 모듈에서 사용됩니다. 따라서 "품질" 차원이 있는 모든 레지스터에 게시할 때 "상품 및 서비스 수령" 문서에서 미리 정의된 요소의 값이 대체됩니다. 다음은 "GoodsOrganizations" 레지스터에 따라 게시 테이블을 채우는 목록입니다.

// GOODS BY REGISTER GoodsOrganizations. MoveSet = 이동합니다. 상품조직; ReceiptType = Enumerations인 경우. 물품 수령의 유형. 그런 다음 창고로 // 레지스터 레코드 세트의 구조와 일치하는 값 테이블을 가져옵니다. MoveTable = MoveSet. 언로드() ; // 이동 ​​테이블을 채웁니다.범용. LoadToValueTable(TableByProducts,TableMovements) ; // 누락된 필드.운동 표. FillValues(조직, "조직" ) ; 운동 표. FillValues(미정의 , "위원" ) ; 운동 표. FillValues(References.Quality.New , " Quality " ) ; // 미리 정의된 요소에서 품질을 채웁니다.

따라서 미리 정의된 요소의 특성과 목적은 매우 간단합니다. 데이터베이스 테이블에 어떻게 저장되고 일반 요소와 어떻게 다른지 살펴보겠습니다.

차이점

테스트 구성에서 "Goods" 디렉토리가 생성되었습니다. 그 안에 "테스트 요소" 그룹이 생성됩니다. 기사 시작 부분의 스크린샷에서 그룹의 내용을 볼 수 있습니다. SQL 데이터베이스의 "제품" 참조 서적에 대해 다음 구조를 가진 해당 테이블 "_Reference37"이 있습니다.

그러나 구성 트리의 세부 사항과 SQL 테이블의 필드 간의 대응 관계를 확인하는 방법은 무엇입니까?

테이블 구조에 대한 설명과 함께 값 테이블을 반환하는 전역 컨텍스트 "GetDatabaseStorageStructure()"의 표준 메서드를 사용하겠습니다.

"Fields" 값 테이블에서 SQL 테이블의 필드와 메타데이터 트리의 개체 세부 정보 간의 대응 관계를 볼 수 있습니다. 이 예에서는 "Products" 디렉토리의 구조를 고려합니다. 모든 사전에는 사전 정의된 요소에 대해 TRUE로 설정되는 부울 유형의 표준 "사전 정의된" 속성이 있습니다.

데이터베이스의 디렉토리 저장 구조가 있는 테이블에 따르면 "Predefined" 필드가 "IsMetadata" 필드에 해당한다고 확실히 말할 수 있습니다. SQL 데이터베이스에서 "_Reference37" 테이블의 내용을 보면 다음을 볼 수 있습니다.

미리 정의된 요소 항목에서 "IsMetadata" 필드의 값은 TRUE 플래그에 해당하는 "0x01"로 설정됩니다. 일반 요소의 경우 값이 "0x00"으로 설정됩니다. 이것이 미리 정의된 요소와 일반 요소의 주요 차이점입니다. 다른 모든 필드는 사용자가 추가한 일반 항목의 필드와 동일한 방식으로 데이터베이스에 저장됩니다.

미리 정의된 요소는 매우 흥미로운 목적을 찾을 수 있습니다. 도움을 받으면 디렉토리의 요소 그룹 및 추가할 수 있는 다른 개체의 삭제/삭제 표시를 금지할 수 있습니다. "테스트 항목" 그룹을 삭제하거나 삭제 표시를 하는 경우. 다음과 같은 오류가 발생합니다.

따라서 사전 정의된 요소는 배치된 그룹을 "미리 정의된" 그룹으로 만듭니다.

완성

미리 정의된 요소는 대부분의 구성에서 필수적인 부분입니다. 그들의 사용은 개발을 단순화하고 논리적으로 더 "조화롭고" 견고한 기능의 구성을 만듭니다.

인쇄(Ctrl+P)

개체 관리자를 사용하여 미리 정의된 값으로 작업

해당 객체 관리자를 사용하여 1C:Enterprise 서버 측에서 미리 정의된 값을 얻을 수 있습니다. 받은 속성을 정의하는 문자열의 형식은 다음과 같습니다.

PredefinedValueType.MetadataObjectName.Value


미리 정의된 값 유형– 미리 정의된 값을 얻기 위해 다음 데이터 유형을 지정할 수 있습니다(
복수형):
● 핸드북,
● 특성 유형 계획,
● 계정과목표,
● 계산 유형의 계획,
● 열거.
메타데이터 개체 이름

● 값 - 다음 중 하나일 수 있습니다.
● 열거의 경우 열거 값의 이름이 지정됩니다.

● RoutePoints.PointName은 비즈니스 프로세스의 경로 지점입니다.
비즈니스 프로세스 경로 지점을 가져와야 하는 경우 받은 값을 설명하는 문자열은 다음과 같습니다.

BusinessProcesses.MetadataObjectName.RoutePoint.RoutePointName
예:


종류 = 열거형.상품 유형.상품;
// 미리 정의된 디렉터리 데이터를 가져옵니다.
요소 = Directories.Currency.Ruble;
// 비즈니스 프로세스 경로 지점
포인트 = 비즈니스 프로세스 승인 라우팅 포인트 승인

기능을 사용하여 미리 정의된 값으로 작업 미리 정의된 값()

응용 프로그램 개체는 클라이언트 측에서 사용할 수 없기 때문에 개체 관리자를 사용하여 미리 정의된 속성을 가져올 수 없습니다. 따라서 이를 얻기 위해 전역 컨텍스트 메서드인 PredefinedValue()가 있습니다. 이 메소드의 매개변수는 검색할 미리 정의된 값을 설명하는 문자열입니다. 미리 정의된 값을 설명하는 구문은 쿼리 언어 VALUE 연산자와 동일합니다.
받은 속성을 정의하는 문자열의 형식은 다음과 같습니다.

이 줄의 구성 요소를 자세히 살펴보겠습니다.
미리 정의된 값 유형– 미리 정의된 값을 얻기 위해 다음 데이터 유형을 지정할 수 있습니다(
단수형):
● 핸드북,
계획종특성,
● 계정과목표,
PlanTypes계산,
● 상장,
● 비즈니스 프로세스.
● 그리고 개체 이름 메타데이터– 구성기에 지정된 대로 메타데이터 개체의 이름을 지정합니다.
● 값 - 다음 중 하나일 수 있습니다.

● 열거의 경우 열거 값의 이름이 지정됩니다.
● 미리 정의된 값을 얻으려면 구성기에 지정된 대로 이름을 지정합니다.
● RoutePoint.PointName – 비즈니스 프로세스 경로 지점.
● EmptyLink - 빈 링크를 가져옵니다.
시스템 열거 값을 가져와야 하는 경우 메서드 매개 변수는 다음과 같습니다.
SystemEnumName.SystemEnum 값.
예를 들어:

ChartType = PredefinedValue("ChartType.ConcaveSurface“);
비즈니스 프로세스 경로 지점을 얻으려는 경우 얻은 값을 설명하는 문자열은 다음과 같습니다.
예:

// 열거형의 값을 가져옵니다.
보기 = 미리 정의된 값(“Enumeration.Types of Goods.Goods”);
// 빈 참조 값을 가져옵니다.
빈 링크 =
미리 정의된 값("문서.송장.빈 참조");
// 미리 정의된 디렉터리 데이터를 가져옵니다.
요소 = 미리 정의된 값(“핸드북. 통화. 루블”);
// 비즈니스 프로세스 웨이포인트
점 = 미리 정의된 값(“BusinessProcess.Agreement.Routepoint.Approval”);



관련 기사: