값 목록의 1c 요소입니다. 유니버설 컬렉션 가치의 나무

전체 구문(확장하려면 클릭)

목록 값

설명:

값 목록은 데이터베이스에 저장되지 않는 개체로, 인터페이스 문제를 해결하기 위한 동적 값 집합을 만들고 이를 조작(요소 추가, 편집, 삭제, 정렬)할 수 있습니다. 모든 유형의 값으로 채워질 수 있습니다. 하나의 목록에는 저장되는 값의 종류가 다를 수 있습니다. 사용 예 이 개체의복잡한 알고리즘을 사용하여 생성된 가능한 문서 목록에서 특정 문서를 선택하는 조직 역할을 할 수 있습니다.

수집항목: ValueList요소

연산자를 사용하여 객체가 컬렉션을 우회하는 것이 가능합니다. 각각에 대해... 시작... 주기. 순회는 컬렉션의 요소를 선택합니다.

[...] 연산자를 사용하여 컬렉션 요소에 액세스할 수 있습니다. 요소의 인덱스가 인수로 전달됩니다( 0부터 번호 매기기).

속성:

행동 양식:

삽입(색인, 값, 표현, 레이블, 이미지)삽입 새로운 요소지정된 인덱스가 있는 위치의 값 목록으로 이동합니다.SelectElement(제목, 요소) 값 목록에 포함된 요소 중 하나를 대화형으로 선택하기 위한 창을 호출합니다. 요소- 대화형 선택 중에 값 목록이 처음에 배치되어야 하는 요소입니다. 매개변수 값이 다음에 포함된 값 목록 요소가 아닌 경우 이 목록, 위치 지정이 발생하지 않습니다.값 언로드() 배열을 생성하고 값 목록 요소의 값을 배열에 복사합니다.추가(값, 표현, 레이블, 이미지)값 목록 끝에 새 요소를 추가합니다.값 로드(ArrayValues) 전달된 배열의 값이 포함된 값 목록을 로드합니다. 이 경우 목록의 모든 이전 요소가 삭제됩니다.메모 작성(표시) 값 목록의 모든 요소에 대한 표시를 설정합니다.Index(Element)값 목록에서 요소의 인덱스를 가져옵니다. 찾을 수 없으면 -1이 반환됩니다.Count() 값 목록의 요소 수를 가져옵니다.값으로 찾기(SearchValue) 값 목록에서 요소의 값을 검색합니다. 검색 값과 동일한 값을 저장하는 요소가 없으면 해당 값이 반환됩니다. 한정되지 않은. ID로 찾기(식별자)식별자별로 값 요소 목록을 검색합니다. 요소가 발견되지 않으면 반환됩니다. 한정되지 않은. 마크항목(머리글) 값 목록의 항목을 (대화식으로) 설정하거나 선택 취소합니다. 보고 진실, 대화 상자에서 "확인" 버튼을 누르면, 거짓말하다- 그렇지 않으면.Clear() 값 목록을 지워 모든 요소를 ​​제거합니다.요소 선택 표시(DescriptionNotificationsOnClosing, Title, Element) 값 목록에 포함된 요소 중 하나를 대화형으로 선택하기 위한 창을 호출합니다.쇼마크 항목(마감 경고에 대한 설명, 헤더) 값 목록 요소의 표시 상태를 대화식으로 설정하도록 설계되었습니다.Get(Index) 인덱스별로 값을 검색합니다. 연산자와 유사하게 작동합니다.Shift(요소, 오프셋) 값 목록의 요소를 지정된 위치만큼 앞으로 또는 뒤로 이동합니다.Copy() 값 목록의 복사본을 만듭니다.값별 정렬(방향) 요소에 저장된 값을 오름차순 또는 내림차순으로 값 ​​목록을 정렬합니다. 아래 예를 참조하세요.정렬별 보기(방향) 값 목록을 오름차순 또는 내림차순으로 정렬합니다. 알파벳 순서요소 값 목록에 포함된 표현입니다. 아래 예를 참조하세요.제거(요소) 값 목록에서 요소를 제거합니다. 요소- 삭제할 요소의 인덱스 또는 요소 자체입니다.

디자이너:

새 값 목록
&OnClient 프로시저 ExecuteCode(명령) /// 1s 8.3, 8.2의 값 목록을 만드는 방법목록 = 새 ValueList; /// 1s 8.3, 8.2의 값 목록에 요소를 추가하는 방법 // 메소드 매개변수를 추가합니다:// - 의미 // - 성능 // - 표시(필수) // - 사진 (필수)목록. 추가(1980, // 요소 값 "바샤가 태어난 해"// 성능 ) ; 목록. 추가(1985, "율리아가 태어난 해") ; // 값은 다른 유형이 될 수 있습니다목록. Add("폴리나" , "아이 이름" ) ; /// 1s 8.3, 8.2의 값 목록에 요소를 삽입하는 방법 // 2번 위치에 삽입 (요소 번호는 0부터 시작) // 값이 2010이고 표현이 있는 요소 // "두 사람의 공동 딸이 태어난 연도"목록. 삽입(2010년 2월, "두 사람의 딸이 태어난 해") ; /// 1s 8.3, 8.2의 값 목록 요소를 우회하는 방법목록 루프 보고서의 각 요소에 대해( Element.Representation + ": " + String(Element.Value) ) ; 엔드사이클 ; /// 1s 8.3, 8.2의 값 목록을 지우는 방법목록. 분명한() ; 목록. Add("월요일"); 목록. Add("화요일"); 목록. Add("수요일" ) ; /// 값 목록의 요소 수를 찾는 방법 및 /// 1s 8.3, 8.2의 인덱스로 목록 요소를 가져옵니다. // 처음부터 번호 매기기인덱스 = 0 목록별. 수량() - 1주기 Report(List[Index]) ; 엔드사이클 ; /// 1s 8.3, 8.2의 값으로 목록 요소를 찾는 방법 ValueTuesday = 목록. FindByValue("화요일"); /// 1s 8.3, 8.2의 목록에서 요소의 인덱스를 찾는 방법보고서(List.Index(ValueTuesday)) ; // 1, 번호 매기기가 0부터 시작하므로 /// 1s 8.3, 8.2의 값으로 목록을 정렬하는 방법 // 이전: 월요일, 화요일, 수요일목록. SortByValue(SortDirection.Descending) ; // 다음이 되었습니다: 수요일, 월요일, 화요일 /// 1s 8.3, 8.2의 값 목록에서 요소를 제거하는 방법 // 첫 번째 요소 제거 // 매개변수: 목록 요소 // 또는 요소 인덱스// 이 목록을 수행할 수 있습니다. 삭제(목록[ 0 ]) ; // 그 쯤 // 목록.삭제(0); /// 1s 8.3, 8.2에서 값 목록의 요소를 이동하는 방법 // 0 요소를 한 위치 앞으로 이동합니다. // 이전: 월요일 화요일목록. 이동(0, 1); // 다음이 되었습니다: 화요일 월요일 /// 1s 8에서 목록의 복사본을 만드는 방법 ListCopy = 목록. 복사() ; 색상 = NewValueList; 그림 물감. Add("빨간색" ) ; 그림 물감. Add("녹색" ) ; 그림 물감. Add("파란색" ) ; /// 1s 8.3, 8.2에서 목록 값을 배열에 업로드하는 방법 ArrayColors = 색상. 언로드값() ; /// 1s 8.3, 8.2의 배열에서 목록 값을 로드하는 방법그림 물감. LoadValues(ArrayColors) ; 절차 종료 /// 목록에서 값을 모덜리스로 선택하는 방법 /// 1s 8.3, 8.2의 값&클라이언트 프로시저에서 Non-ModalValueSelection(명령)을 만드는 방법 Colors = New ValueList; 그림 물감. Add("빨간색" ) ; 그림 물감. Add("녹색" ) ; 그림 물감. Add("파란색" ) ; // AfterSelectingElement 프로시저는 바로 아래에 정의되어 있습니다. AlertAfterElementSelection = 새로운 설명경고( "AfterElementSelection", ThisObject ) ; 그림 물감. ShowElementSelection(NotificationAfterElementSelection, "좋아하는 색상을 선택하세요") ; End of Procedure &On 클라이언트 프로시저 요소 선택(요소, 매개변수) 후 요소 내보내기<>정의되지 않음 Report(Element.Value) ; 종료If ; 절차 종료 /// 목록에서 값을 모덜리스로 표시하는 방법 /// 1s 8.3, 8.2의 값클라이언트 프로시저에서 비모달 값 표시를 만드는 방법(명령) 색상 = 새 값 목록; 그림 물감. Add("빨간색" ) ; 그림 물감. Add("녹색" ) ; 그림 물감. Add("파란색" ) ; // AfterMarkingElements 프로시저는 바로 아래에 정의되어 있습니다. AlertAfterMarkingItems = 새로운 설명경고( "AfterMarkingItems", ThisObject ) ; 그림 물감. ShowTagItems( AlertAfterTagItems, "좋아하는 색상을 선택하세요") ; 그림 물감. 필노트(True) ; End of Procedure &On Client Procedure 요소(요소, 매개변수) 표시 후 요소 내보내기<>색상이 있는 경우 요소 순환에서 각 색상에 대해 정의되지 않습니다. Mark Then Report(Color.Value) ; 종료If ; 엔드사이클 ; 종료If ; 절차 종료 /// 1s 8.3, 8.2의 목록에서 값을 모달 선택하는 방법&클라이언트 프로시저에서 ModalValueSelection(명령)을 만드는 방법 Colors = New ValueList; 그림 물감. Add("빨간색" ) ; 그림 물감. Add("녹색" ) ; 그림 물감. Add("파란색" ) ; 색상 선택 = 색상. 물품을 고르시 오( "좋아하는 색상을 선택하세요") ; 색상을 선택하면<>정의되지 않음 Report(SelectColor.Value) ; 종료If ; 절차 종료 /// 목록의 값을 모달로 표시하는 방법 /// 1s 8.3, 8.2의 값&클라이언트 프로시저에서 모달 값 표시를 만드는 방법(명령) 색상 = 새 값 목록; 그림 물감. Add("빨간색" ) ; 그림 물감. Add("녹색" ) ; 그림 물감. Add("파란색" ) ; 색상. 마크항목( "좋아하는 색상을 선택하세요") 그런 다음 색상 주기의 각 색상에 대해 색상이 있는 경우. Mark Then Report(Color.Value) ; 종료If ; 엔드사이클 ; 종료If ; // 모든 마크를 한 번에 설정하는 방법입니다. // 특정 값을 나열그림 물감. FillNotes(True) ; 절차 종료 /// 이 예제를 컴퓨터에 다운로드하고 실행하세요.

이 단원에서 우리는 1C 언어의 새로운 데이터 유형에 대해 알게 될 것입니다. 목록값.

값 목록배열이지만 뛰어난 기능을 갖추고 있습니다. 그렇다면 이는 데이터 모음이기도 하며 여기에 숫자 집합을 넣을 수 있습니다.

// 값 목록을 생성했습니다.

목록.추가(23);

지금까지는 모든 것이 배열과 매우 비슷해 보이죠? 하지만 계속 진행합시다. 이제 이 숫자를 사용자에게 표시하기 위해 다음과 같이 작성합니다.

// 목록의 각 요소를 반복합니다. For Each Element From List Loop Report(Element.Value);

// EndCycle 요소의 값을 표시합니다.

그리고 여기에 첫 번째 차이점이 있습니다. 일반 배열의 요소는 숫자 자체입니다. 그리고 요소의 현재 값에 대한 액세스 목록우리는 옵션을 사용합니다 의미, 건설을 사용하여 요소. 의미.

몇 가지 추가 기능을 살펴보겠습니다. 가치.

정렬 가능

예를 들어, 값 목록을 쉽게 정렬할 수 있습니다. 목록은 이 작업을 자체적으로 수행할 수 있습니다.

List.SortByValue(SortDirection.Age); 일반 배열의 경우 정렬 알고리즘(예: "버블") 중 하나를 구현해야 합니다.

검색 가능

값 목록은 해당 요소를 자체적으로 검색할 수 있습니다. 사용자가 입력한 숫자가 목록에 있는지 확인하고 싶다고 가정해 보겠습니다.

EnterNumber(숫자); // 사용자의 숫자를 입력했습니다. FoundElement = List. FindByValue(숫자);

If FoundItem = Undefound Then OpenValue("Number " + Number + "는 목록에서 찾을 수 없습니다!"); 그렇지 않으면

OpenValue("Number " + Number + "가 목록에 있습니다. 여기 있습니다:" + FoundElement.Value);

endIf; 목록 값

삽입 및 삭제 지원

배열과 같은 값 목록은 요소 삽입 및 제거를 지원합니다.

목록. 삽입(0, 1000);

// 목록 맨 처음에 1000을 삽입합니다. List.Delete(O); // 즉시 목록에서 제거합니다. Insert(List.Quantity(), 13);

// 목록 끝에 13을 삽입합니다. Report(List[List.Quantity() - 1]);

// 목록의 마지막 요소를 표시합니다 (13)

대괄호를 지원합니다.

이미 이해했듯이 목록 요소의 번호 매기기는 0부터 시작하며 대괄호를 사용하여 색인으로 모든 요소에 액세스할 수 있습니다.

Report(목록.값); // 목록의 두 번째 요소를 표시합니다. 따라서 다음과 같이 목록의 모든 요소를 ​​살펴볼 수 있습니다.

A = 0 By List.Quantity() - 1 Loop Report(List[A].Value);

엔드사이클;

자체 복사본을 만들 수 있음

값 목록에는 훌륭한 기능이 있습니다. 자체 복사본을 만들 수 있습니다.

ListCopy = 목록.복사();

// 목록의 복사본을 만들었습니다. // 이제 목록의 복사본을 안전하게 변경할 수 있습니다. // 원래 목록은 목록의 복사본을 변경하지 않습니다. 값 = 123456;

배열로 바뀔 수 있음

마지막으로 언제든지 목록의 모든 요소를 ​​배열로 쉽게 덤프할 수 있습니다.

ArrayNumbers = 목록. UnloadValues();

// 배열에 덤프됨

A = 0인 경우 ArrayNumber.Quantity() 기준 - 1사이클

Report(ArrayNumbers[A]); // 지정할 필요가 없습니다. // 옵션 값

엔드사이클;

본 단원의 내용을 연습하고 통합하려면 다음 작업을 완료하는 것이 좋습니다.

사용자로부터 5개의 숫자를 입력하고 그 중 가장 큰 숫자와 가장 작은 숫자를 찾아 사용자에게 표시해야 합니다. 솔루션은 값 목록을 사용해야 합니다.

해결책

목록 = 새 ValueList;

// A = 1부터 5까지의 값 목록을 생성했습니다. Cycle Number = 0;

EnterNumber(숫자); // 사용자로부터 숫자를 입력합니다. List.Add(Number); // 목록에 추가하고 EndCycle; // 등등 5번 반복

// 숫자 목록 정렬

목록. Sort ByValue(SortDirection.Age);

// 정렬 후 목록의 첫 번째 요소는 // 가장 작은 요소이고 마지막 요소는 가장 큰 요소입니다. OpenValue("가장 작은 요소" + List +

", 그리고 가장 큰 " + List[List.Quantity() - 1]);

이 기사는 무엇에 관한 것입니까?

이 기사는 "1C 개발의 첫 번째 단계" 기사 시리즈를 계속합니다. 유니버설 컬렉션 작업의 원칙을 다룹니다. 기사를 읽은 후에는 다음 내용을 배우게 됩니다.

  • 유니버설 컬렉션이란 무엇이며, 언제, 어떤 경우에 사용해야 합니까?
  • 모든 유니버설 컬렉션의 공통점은 무엇인가요? 이들 모두를 다루기 위해 어떤 기술을 사용할 수 있나요?
  • 배열이란 무엇이며 언제 어떻게 사용합니까? 그는 어떤 방법을 가지고 있습니까?
  • 왜 구조를 사용하는가? 배열과 어떻게 다른가요?
  • 언제 값 목록을 사용해야 합니까? 양식에 어떻게 표시하나요?
  • 규정 준수 – 규정이란 무엇이며 언제 사용합니까? 구조상 장점은 무엇인가요?
  • 값 테이블은 무엇에 사용됩니까? 구조를 설명하는 방법은 무엇입니까? 줄을 추가/제거하는 방법은 무엇입니까? 양식에 어떻게 표시하나요?
  • 가치의 나무 - 어떤 용도로 사용되나요? 양식을 작성하고 표시하는 방법은 무엇입니까? 어떻게 작업하나요?

적용 가능성

이 기사에서는 현재 버전의 1C:Enterprise 8.3 플랫폼에 대해 설명합니다.

1C에서 유니버설 컬렉션으로 작업하는 방법

값 모음은 일반적으로 여러 요소를 포함할 수 있는 컨테이너입니다. 그러나 데이터 유형에는 엄격한 제한이 없는 경우가 많습니다.

일반 컬렉션에 값을 추가할 수 있습니다. 컬렉션의 모든 값을 탐색할 수 있습니다. 이러한 컬렉션은 주로 알고리즘의 일종의 처리에 사용됩니다. 저것들. 이는 알고리즘이 실행되는 동안 존재하는 일부 동적 구조입니다.

컬렉션은 데이터베이스에 저장되지 않는다는 점을 이해하는 것이 중요합니다(거의 모든 유형의 데이터를 저장할 수 있는 Value Store 데이터 유형에 대해 이야기하는 것이 아닙니다).

일반 컬렉션에는 배열, 구조, 일치, 고정 배열, 값 테이블 등 다양한 유형이 있습니다. 표 부분등. 그러나 모든 컬렉션에는 비슷한 동작이 있습니다.

컬렉션은 함수 작업의 결과로 생성될 수 있습니다(함수는 범용 컬렉션을 값으로 반환합니다).

생성자를 호출하고 클래스의 인스턴스를 생성하여 수동으로 새 컬렉션을 얻을 수 있습니다.

예를 들어: OurArray = 새 어레이;

많은 일반 컬렉션의 생성자는 매개변수화됩니다.

따라서 생성자에서 해당 차원의 멤버 수를 지정할 수 있습니다. 저것들. 즉시 다차원을 선언할 수 있습니다. .

생성자에 대한 해당 설명은 구문 도우미에 있습니다.

따라서 생성자 매개변수를 사용하면 특정 객체의 원하는 동작을 즉시 설정할 수 있습니다.

그러나 매개변수는 선택사항이므로 개발자는 매개변수를 설정하거나 적합하다고 생각하는 대로 어레이의 동작을 추가로 정의할 수 없습니다.

거의 모든 범용 컬렉션은 생성자를 사용하여 생성할 수 있습니다(구성 개체 역할을 하는 테이블 부분은 예외).

유니버설 컬렉션의 경우 다음과 같습니다. 일반적인 개념, 색인 및 숫자와 같습니다. 컬렉션의 각 요소에는 인덱스가 있습니다. 이 경우 인덱스는 0부터 시작됩니다.

요소에 액세스하려면 우리의 배열, 인덱스 액세스를 사용할 수 있으며 이를 위해 인덱스는 대괄호로 표시됩니다.

예를 들어, 우리의 배열. 이 경우 시스템은 인덱스 3의 배열 요소를 반환하며 순서대로 배열의 네 번째 요소입니다.

일부 컬렉션에는 줄 번호 개념도 있습니다. 줄 번호는 1로 시작합니다. 예를 들어, 표 부분에는 행 번호와 같은 속성이 있습니다. 줄 번호를 알고 인덱스로 액세스하려면 줄 번호보다 1 작은 값을 인덱스로 사용해야 한다는 점을 명심하는 것이 중요합니다.

줄 번호 개념은 모든 컬렉션에 존재하는 것은 아니지만 주로 사용자 인터페이스에 표시될 수 있는 컬렉션에 존재합니다.

모든 컬렉션은 컬렉션 요소 순회를 사용합니다. 우회는 두 가지 방법으로 가능합니다. 주기그리고 주기 각각.

대부분의 일반 컬렉션에 적용되는 메서드는 Count, Index, Add, Insert, Delete 및 Find입니다.

Count는 컬렉션의 요소 수를 반환하는 함수입니다. 주기 전에 사용할 수 있습니다. 을 위한, 그림에 표시된 것처럼.

Index 메서드는 모든 컬렉션에 존재하는 것이 아니라 해당 요소를 참조할 수 있는 컬렉션에만 존재합니다. 예는 다음과 같습니다 값 테이블.

값 테이블– 이것은 특정 행 모음입니다. 행은 다음과 같은 다양한 열을 포함할 수 있습니다. 다른 유형가치.

각 줄은 독립적인 개체를 나타냅니다. 이에 대한 링크를 얻을 수 있으며, 이 줄을 통해 이 줄에 있는 열의 값에 액세스할 수 있습니다.

Index 메서드를 사용하면 특정 행(즉, 테이블에서 행의 현재 위치)에 해당하는 인덱스를 확인할 수 있습니다. 인덱스 값은 0부터 시작합니다.

거의 모든 범용 컬렉션에는 특정 컬렉션에 새로운 값을 추가하는 방법이 있습니다. 그림은 두 가지 방법으로 0부터 10까지의 값으로 배열을 채우는 방법을 보여줍니다.

배열에 요소를 추가하려면 다음 메소드를 사용할 수 있습니다. 추가하다, 괄호 안에 추가할 값을 표시합니다. 이 경우 값은 목록 끝에 추가됩니다. 마지막 위치로 인해 배열이 지속적으로 증가합니다.

컬렉션에 값을 추가할 수 있는 또 다른 방법은 끼워 넣다. 방법부터가 다르네요 추가하다추가된 요소를 삽입할 위치를 지정할 수 있습니다.

통사론: (,) 삽입

첫 번째 매개변수는 새 값이 삽입될 인덱스를 지정합니다. 저것들. 예를 들어, 각 값이 목록의 시작 부분에 삽입되도록 지정할 수 있습니다(위 그림의 두 번째 방법).

컬렉션에서 요소를 제거하려면 다음 메소드를 사용하십시오. 삭제. 삭제 메소드는 삭제할 요소를 인덱스로 지정합니다.

통사론: 삭제()
사용 예: OurArray.Delete(5);

문자열이 독립적인 엔터티를 나타내는 컬렉션의 경우(예: 값 테이블), 나중에 이 행을 삭제하기 위해 인덱스를 가져오는 방법을 사용할 수도 있습니다.

거의 모든 컬렉션에는 값을 검색하는 방법이 있습니다. 찾다. 우리가 찾고자 하는 값이 메소드에 전달됩니다. 일부 컬렉션에서는 몇 가지 제한 사항을 설정할 수 있습니다.

예를 들어, 값 테이블검색하려는 행과 열을 지정할 수 있습니다.

값이 발견되면 이 메서드는 인덱스 또는 지정된 문자열을 반환합니다. 값을 찾을 수 없으면 유형의 값이 반환됩니다. 한정되지 않은. 배열과 관련하여 다음을 반환합니다. 색인또는 값 한정되지 않은.

사용 예: OurVariable = OurArray.Find(8);

범용 컬렉션은 매우 빠르게 지울 수 있습니다. 절대적으로 모든 요소를 ​​제거하십시오. 이를 위해 다음 방법이 사용됩니다. 분명한(), 배열 요소, 행을 제거합니다. 값 테이블, 또는 다른 컬렉션의 데이터.

배열에 대한 추가 방법

방법 B순서()요소 수에서 1을 뺀 값을 반환합니다. 저것들. 루프를 사용한다면 을 위한, 그러면 Quantity 메서드 대신 즉시 메서드를 사용할 수 있습니다. 국경().

특히 QuantityInArray 변수는 다르게 정의될 수 있습니다.

QuantityInArray = OurArray.InBorder();
그러면 사이클 자체를 설명할 때 이 변수에서 하나를 빼면 안 됩니다.

Set 메서드를 사용하면 인덱스별로 Array 요소에 값을 할당할 수 있습니다.

통사론: 설치하다(,)

예: OurArray.Set(2,8);

대체 옵션: OurArray = 8;

배열에 대한 방법을 사용할 수 있습니다 얻다, 대괄호를 사용하지 않고 인덱스에서 값을 읽습니다.

통사론: 얻다()

예: OurVariable = OurArray.Get(2);

대체 옵션: OurVariable = OurArray;

유니버설 컬렉션 구조

배열과 마찬가지로 구조는 요소를 무제한으로 가질 수 있지만 요소의 내용은 배열과 다릅니다.

구조는 컬렉션이며 각 값은 쌍으로 구성됩니다. 쌍의 첫 번째 요소는 다음과 같습니다. 열쇠. 쌍의 두 번째 요소는 다음과 같습니다. 의미.

열쇠– 이것은 엄격하다 문자열 유형값을 설명하는 데이터입니다. 예를 들어, 열쇠에"코드"는 값 113에 해당할 수 있습니다. 열쇠에"이름"은 "Vasya"를 의미합니다. 값 자체에는 데이터 유형 제한이 적용되지 않습니다.

특정 매개변수 목록을 생성하려는 경우 이 구조를 사용하는 것이 매우 편리합니다. 이 경우 구조~라고 불리는 우리의 구조, 그러면 다음과 같이 두 값을 참조합니다. OurStructure.Code 및 OurStructure.Name.

이러한 종류의 액세스는 배열의 모든 매개변수를 정의하고 인덱스로 액세스하는 것보다 훨씬 편리합니다.

구조는 프로그램 코드를 읽을 수 있게(이해할 수 있게) 만듭니다. 구조는 배열보다 훨씬 더 자주 사용됩니다.

이는 특정 매개변수를 설명하는 데 사용되며, 그 매개변수는 모든 알고리즘에 상당히 많은 경우가 많습니다.

또한 프로시저와 함수에 전달된 매개변수가 너무 많으면 구조가 사용됩니다.

그러면 모든 매개변수를 구조에 작성하고 전달하는 것이 훨씬 더 편리합니다. 저것들. 프로시저와 함수의 매개변수는 "패킹"됩니다.

별도로 주의할 점은 다음과 같습니다. 열쇠구조에 어떤 줄도 나타날 수는 없습니다. 특정 제한 사항이 적용됩니다.

열쇠식별자 역할을 해야 합니다. 이는 다음을 의미합니다. 클류체공백이 없어야 하며 숫자로 시작할 수 없습니다.

허용 가능한 시작 열쇠문자나 밑줄로. 따라서, 열쇠식별자 생성 요구 사항을 충족해야 합니다.

구조가 배열과 어떻게 다른지 살펴보겠습니다. 구조에 방법이 있습니다 끼워 넣다, 배열에 삽입하는 방법에는 두 가지가 있습니다. 끼워 넣다(특정 위치로) 그리고 추가하다(목록 끝까지). 배열에서는 모든 요소가 정렬됩니다.

구조는 일종의 무질서한 집합이다. 이것이 바로 구조체에 삽입 메서드만 있는 이유입니다.

값은 특정 위치에 삽입되지 않고 지정된 세트에 삽입됩니다. 구조는 다른 일반 컬렉션과 마찬가지로 인덱스로 액세스할 수 없습니다.

구조 요소는 키 이름으로만 액세스됩니다. 그러나 For Each 루프는 Structure에서도 작동하지만 Structure 요소의 순서에 의존해서는 안 됩니다.

구조는 구조 데이터 유형을 지정하는 New 생성자를 사용하여 다른 일반 컬렉션과 동일한 방식으로 생성됩니다.

배열과 마찬가지로 구조의 생성자에도 매개변수가 있을 수 있습니다. 저것들. 생성자를 사용하여 구조의 내용 자체를 설명하는 것이 가능합니다.

모든 차원에 대한 요소 수를 간단히 지정할 수 있는 배열과 달리 구조에서는 내용 자체를 지정할 수 있습니다.

예를 들어: OurStructure = 새로운 구조(“코드, 이름”, 133, “Vasya”);

쉼표로 구분된 키 이름이 먼저 나열되고 그에 따라 매개변수 값도 동일한 순서로 나열됩니다.

구조에 새로운 값을 추가하는 방법이 있습니다 끼워 넣다, 새 쌍(키와 값)을 삽입합니다.

예를 들어: OurStructure.Insert("FamilyMembers",3);

구조는 자주 사용되는 또 다른 방법이 특징입니다. 이것이 방법이다 재산.

이 방법을 사용하면 이 구조에 키에 이러한 이름이 있는 요소가 있는지 여부를 이해할 수 있습니다.

그러한 요소가 존재하면 시스템은 True 값을 반환하고, 그렇지 않으면 False 값을 반환합니다.

예를 들어, 다음 표현식은 OurStructure.Property(“가족 구성원”) True 값과 같습니다. 이 방법은 구조를 분석할 때 자주 사용됩니다.

모든 범용 컬렉션과 마찬가지로 인덱스를 통해 구조체의 속성에 액세스할 수 있습니다. 그러나 구조의 인덱스는 문자열 값입니다.

예를 들어: Report(OurStructure["FamilyMembers"]);

그러나 구조는 순서가 지정되지 않은 개체 집합이므로 인덱스 0, 1, 2로 액세스하는 것은 허용되지 않습니다.

일반 컬렉션 값 목록

목록 값모든 데이터 유형 요소의 선형 목록입니다.

각 요소는 여러 값으로 구성됩니다. 개략적으로 값 목록은 4개의 열이 있는 목록으로 표시될 수 있습니다.

첫 번째 열 - 표시. 부울 데이터 유형을 가지며 사용자가 상자를 선택하거나 선택 취소할 수 있습니다.

다른 열은 이 요소를 시각적으로 표현할 수 있는 그림입니다. 이 문자열을 그림과 일치시키세요.

세 번째 열은 저장된 값 자체입니다. 이는 모든 유형의 데이터이며 행에 따라 다를 수 있습니다.

네 번째 열은 프레젠테이션입니다. 이것은 일종의 문자열 설명입니다. 주어진 값. 사용자가 이 요소를 볼 때 보기가 표시됩니다. 이 경우 표현이 지정되지 않으면 시스템은 이 위치에 포함된 요소에 대한 표현을 얻으려고 시도합니다.

목록 값– 이는 사용자가 시각적으로 작업할 수 있는 개체입니다. 저것들. 목록 값양식에 표시할 수 있습니다.

사용자는 이를 통해 몇 가지 작업을 수행할 수 있습니다. 게다가, 목록 값방법을 사용하여 독립적으로 추론할 수 있습니다. 사용자가 일부 줄을 선택하거나 일부 상자를 선택하도록 알고리즘의 일부 분기(서버 코드 제외)에서 화면에 표시됩니다.

우리는 찾을 것이다 목록 값 sitax 조수에서. 건설자 목록 값매개변수화되지 않았습니다(기본값을 설정할 수 없음).

다음과 같은 방법이 있습니다.

  • 삽입(,) ;
  • 추가하다(,);
  • 수량();
  • 색인().

예를 들어, 특별한 방법도 있습니다. 값 언로드(). 그러면 값 목록이 복사되는 배열이 생성됩니다. 예를 들어:

요소 배열 = PriceTypes.OutloadValues() 목록;

반대 방법도 있습니다:
ListPriceTypes.LoadValues(ArrayItems);

검색 방법은 다음과 같습니다.
FindByValue(); FindByIdentifier().

복사 방법이 있습니다:
ListCopy = 가격유형목록.복사();
이 방법복사본에 일종의 수정을 가하기 위한 것입니다.

방법은 다음과 같습니다.
SortByValue();
SortByView().

행동 양식 물품을 고르시 오(,)그리고 마크항목()사용자가 창을 닫을 때까지 알고리즘 실행을 중지하는 모달 대화 상자를 호출합니다.

구성 속성에서 이러한 방법을 사용하려면 양식을 사용하는 모드으로 설정해야 합니다. 사용.

관리되는 애플리케이션 모듈에서 호출되는 예제 코드:

사용자 모드(모달 대화 상자)에서 이 코드를 표시합니다.

아래에 목록 값다음과 같이 사용됨 사용 가능한 유형양식 세부정보에 대한 데이터입니다. 처리 양식에 대한 새 속성을 생성하고 해당 유형을 정의합니다. 목록 값그리고 폼에 표시해 보세요.

새 팀 만들기 채우기선물, 양식으로 전송하고 이에 대한 작업 핸들러를 정의합니다.

사용자 모드에서는 처리 양식에서 선물 채우기 버튼을 클릭하면 완성된 목록이 나타납니다.

원하는 경우 목록을 편집할 수 있습니다. 일부 요소는 추가할 수 있고 일부는 제거할 수 있습니다.

다양한 수집 규정 준수

이 컬렉션은 다음과 매우 유사합니다. 구조. 구조와 마찬가지로 매핑은 키와 값 자체로 구성된 값 집합입니다.

주요 차이점은 모든 데이터 유형을 값뿐만 아니라 키로 지정할 수 있다는 것입니다. 이 기능을 고려하면 인덱스별로 일치값에 접근해야 하는데, 키값이 인덱스값으로 표시된다.

키는 문자열이 아닌 데이터 유형일 수 있습니다. 규정 준수 작업의 속성과 방법은 구조의 속성과 거의 동일합니다.

규정 준수 생성자는 구조와 달리 매개변수를 지정하는 기능을 포함하지 않습니다.

사용 예:

대응은 두 개의 구조를 연결해야 할 때 사용하는 것이 편리합니다. 예를 들어 표 형식 섹션의 각 행은 값 표의 행과 일치해야 합니다.
이 경우 테이블 섹션 행이 Match 키로 사용되며 해당 값이 표시됩니다.

컬렉션에 요소를 삽입하는 경우 메서드 외에 Match 끼워 넣다(,)값을 삽입하는 또 다른 방법은 일반 할당 연산자를 사용하는 것입니다.

예를 들어: OurMatch = NewMatch;
일치 = 999;

저것들. 컬렉션에 요소가 없으면 할당 연산자를 사용하여 추가되고, 있으면 업데이트됩니다.

이는 구조와 대조됩니다.

보편적 수집 가치표

값 테이블임의 개수의 행과 임의 개수의 열이 있는 테이블입니다. 교차점은 모든 데이터 유형의 값을 저장할 수 있습니다. 필요한 경우 열을 입력할 수 있습니다. 즉, 어떤 열에 어떤 유형의 데이터가 저장되어 있는지 결정할 수 있습니다.

열을 유형화하지 않은 상태로 두면 서로 다른 유형의 값을 서로 다른 행의 한 열에 저장할 수 있습니다.

차이점 값 테이블 2차원 배열에서:

  • 이것은 사용자가 작업할 수 있는 개체입니다(값 테이블이 화면에 표시될 수 있고 사용자가 이를 채울 수 있으며 입력된 데이터를 읽을 수 있음).
  • 빠른 검색을 위한 색인 구축;
  • 복제, 전체 열을 특정 값으로 채우기, 모든 열을 배열에 업로드.

값 테이블일종의 정보 저장 버퍼로 사용됩니다. 값 테이블많은 시스템 메소드에서 매개변수로 반환되고 허용됩니다. 값 테이블에 대한 쿼리를 작성할 수 있습니다.

그래서, 값 테이블행 집합과 열 집합으로 구성됩니다. 행과 열은 모두 컬렉션입니다.

저것들. 컬렉션 내부 값 테이블두 개의 컬렉션이 더 있습니다. 구문 도우미를 사용하여 찾아보겠습니다. 값 테이블.

지원되는 데이터 유형: 자체 값 테이블, 문자열로 구성됩니다. 각 행은 데이터 유형으로 표시됩니다. RowTable값에는 고유한 속성과 메서드가 있습니다. 사용 가능 테이블 열 값 컬렉션또한 특정 속성을 가지고 있습니다.

중요한 포인트! 생성하는 절차 값 테이블, &OnServer를 컴파일해야 합니다.

작업을 시작하기 전에 값 테이블, 어떤 열을 포함할지 결정해야 합니다(즉, 생성). 통사론:

추가하다(,)
(선택 과목)
유형: 문자열.
(선택 과목)
유형: 설명유형
(선택 과목)
유형: 문자열.
(선택 과목)
유형: 숫자.

예를 들어:

이 프로시저를 호출하기 위해 명령을 사용합니다.

설명에서 값 테이블컬렉션의 요소는 정확하게 행테이블값.

속성(이름, 유형, 제목, 너비)만으로 구성된 열과 달리 RowTable값속성(열 이름으로 액세스)과 메서드(값을 가져오고 설정하고 소유자와 작업할 수 있음)가 모두 있습니다.

추가하려면 새 줄테이블에 당신은 방법을 사용해야합니다 추가하다(), 또는 끼워 넣다(). 두 번째 경우에는 필요한 줄을 어느 위치에 배치해야 하는지 지정해야 합니다.

열에 값을 할당하려면 점을 사용하여 열 이름이나 인덱스(대괄호 사용)에 액세스합니다.

충전용 값 테이블다음 방법을 사용할 수 있습니다.

분명한()– 모든 행을 제거하려면 값 테이블.

값 채우기(,)– 모든 열 또는 선택한 열을 하나의 값으로 채울 수 있습니다.
로드컬럼(,)– 배열에서 열을 로드합니다.
언로드컬럼()– 열을 배열로 언로드합니다.

마지막 두 가지 방법은 한 값 테이블에서 다른 값 테이블로 열을 전송해야 할 때 사용하는 것이 편리합니다.

복사(,)– 기존 테이블을 기반으로 새 테이블을 만들 수 있습니다. 값 테이블, 모든 행과 모든 열이 아니라 일부만 해당됩니다. 반환 값 – 값 테이블.

구조를 복사할 수 있습니다. 값 테이블. 이에 상응하는 방법이 있습니다 복사열(). 우리는 빈 것을 얻을 것이다 값 테이블필요한 구조로.

안에 값 테이블방법이 있어요 총(). 숫자 값을 합산하려는 열을 지정할 수 있습니다. 이전에 Tableau에 표시된 코드와 관련하여 값을 계산할 수 있습니다. TK.Total (“금액”).

안에 값 테이블방법을 사용하여 특정 열의 동일한 값으로 숫자 값을 그룹화(축소)하는 것이 가능합니다. 무너지다(,).

이전에 Tableau에 표시된 코드와 관련하여 값을 계산할 수 있습니다. TK.Collapse(“요일”, “금액”).

값 테이블사용자 화면에 표시되어 모든 작업을 수행할 수 있습니다. 하지만 달리 목록 값~에서 프로그램 코드화면에 테이블을 불러올 수는 없습니다.

표시하려면 값 테이블화면에서 양식 속성을 생성하고 여기에 데이터 유형을 할당합니다. 값 테이블.

그런 다음 결과 테이블이 양식에 표시되어야 합니다.

이전에 컴파일한 알고리즘 끝의 양식 모듈(값 테이블 생성 절차)에 다음을 추가해야 합니다.
ValueInFormData(TK, 테이블);

유니버설 컬렉션 가치의 나무

매우 유사한 보편적인 컬렉션 값 테이블. 테이블과의 차이점은 트리의 행이 서로 종속될 수 있다는 것입니다. 일종의 계층 구조가 형성될 수 있습니다.

이는 화면에도 반영될 수 있습니다. 값 트리는 명시적으로 행 컬렉션과 열 컬렉션으로 구성됩니다. 트리에는 행과 열이라는 두 가지 속성이 있습니다.

행은 서로 종속될 수 있으므로 각 행에는 상위 행과 하위 행이 있을 수 있습니다.

해당 Tree 명령과 처리 절차를 작성해 보겠습니다.

만들어 보자 여기에는 하나의 상위 행과 두 개의 하위 행이 있습니다.

양식 속성을 만들어 보겠습니다. 데르Zn(데이터 유형 – 값 트리).

이 속성의 경우 연도 및 월 열을 생성합니다.

해당 요소 이동 데르Zn양식에.

마지막에 프로시저 TreeOnServer()다음을 추가하자:

ValueInFormData(TreeZn, DerZn);

사용자 모드에서 무슨 일이 일어났는지 확인해 봅시다.

버튼 사용 추가하다새로운 줄을 추가할 수 있습니다. 계층 구조를 형성할 수도 있습니다.

값 트리의 모든 요소를 ​​탐색하려면 재귀를 사용해야 합니다. 자체적으로 프로시저를 호출합니다. 예를 들어, 가치 트리 처리는 다음과 같습니다.

이것으로 유니버설 컬렉션에 대한 우리의 첫 만남을 마칩니다.

다음 기사에서는 개발자가 프로그램 코드에서 디렉터리 요소에 대한 액세스를 단순화하기 위해 사용할 수 있는 중요한 메커니즘이 무엇인지 살펴보겠습니다.