열에 1c 값을 추가합니다. 객체 속성과 객체 메소드를 혼동하지 않는 것이 중요합니다.

돈과 물건을 계산하기 위해 비즈니스에서는 다양한 테이블이 널리 사용됩니다. 거의 모든 문서는 테이블입니다.

한 테이블에는 창고에서 배송될 상품이 나열되어 있습니다. 다른 표에는 이러한 상품에 대한 지불 의무가 나와 있습니다.

따라서 1C에서는 테이블 작업이 눈에 띄는 위치를 차지합니다.

1C의 테이블은 "테이블 형식 부분"이라고도 합니다. 디렉토리, 문서 및 기타 항목이 있습니다.

쿼리가 실행되면 두 가지 방법으로 액세스할 수 있는 테이블이 반환됩니다.

첫 번째 - 더 빠른 선택, 행 가져오기는 순서대로만 가능합니다. 두 번째는 쿼리 결과를 값 테이블에 업로드한 다음 이에 대한 무작위 액세스입니다.

//옵션 1 - 쿼리 결과에 대한 순차적 액세스

//테이블 가져오기
선택 = Query.Run().Select();
// 쿼리 결과의 모든 라인을 순서대로 살펴봅니다.
Select.Next() 루프 동안
보고서(선택.이름);
엔드사이클;

//옵션 2 – 값 테이블에 업로드
요청 = 새 요청("디렉토리에서 이름 선택.명칭");
//테이블 가져오기
테이블 = Query.Run().Unload().
//추가로 모든 라인을 반복할 수도 있습니다.
테이블 주기의 각 행에 대해
보고서(문자열.이름);
엔드사이클;
//또는 문자열에 임의로 액세스
Row = Table.Find("삽", "이름");

중요한 특징은 쿼리 결과에서 얻은 테이블에서 모든 열이 엄격하게 유형화된다는 것입니다. 즉, 명명법 디렉터리에서 이름 필드를 요청하면 허용되는 길이가 N자 이하인 문자열 유형의 열을 받게 됩니다.

양식의 표(thick client)

사용자는 테이블이 양식에 배치될 때 테이블을 사용하여 작업합니다.

우리는 다음 단원과 단원에서 양식 작업의 기본 원칙에 대해 논의했습니다.

이제 폼에 테이블을 배치해 보겠습니다. 이렇게 하려면 컨트롤 패널에서 테이블을 드래그하면 됩니다. 마찬가지로 메뉴에서 양식/컨트롤 삽입을 선택할 수 있습니다.

데이터는 구성에 저장될 수 있습니다. 그런 다음 편집 중인 양식이 있는 구성 개체의 기존(이전에 추가된) 표 형식 부분을 선택해야 합니다.

데이터 속성에서 "..." 버튼을 클릭합니다. 표 형식 부분의 목록을 보려면 개체 분기를 확장해야 합니다.

표 부분을 선택하면 1C 자체가 양식의 표에 열을 추가합니다. 사용자가 이러한 테이블에 입력한 행은 참고 도서/문서와 함께 자동으로 저장됩니다.

동일한 데이터 속성에서 임의의 이름을 입력하고 값 테이블 유형을 선택할 수 있습니다.

이는 임의의 값 테이블이 선택되었음을 의미합니다. 자동으로 열을 추가하거나 자동으로 저장되지는 ​​않지만 원하는 것은 무엇이든 할 수 있습니다.

테이블을 마우스 오른쪽 버튼으로 클릭하면 열을 추가할 수 있습니다. 열 속성에서 해당 이름(1C 코드 참조용), 양식의 열 제목, 표 부분의 속성과의 연결(후자-임의 테이블이 선택되지 않은 경우)을 지정할 수 있습니다. 표 부분).

양식의 테이블 속성에서 사용자가 행을 추가/삭제할 수 있는지 여부를 지정할 수 있습니다. 더 고급 형식은 보기 전용 확인란입니다. 이러한 속성은 편집이 아닌 정보 표시를 위한 테이블을 구성하는 데 사용하기 편리합니다.

테이블을 관리하려면 폼에 명령 패널을 표시해야 합니다. 양식/컨트롤 삽입/명령 모음 메뉴 항목을 선택합니다.

명령 모음 속성에서 자동 채우기 확인란을 선택하면 패널의 버튼이 자동으로 나타납니다.

양식의 테이블(씬/관리 클라이언트)

관리되는 양식에서는 이러한 작업이 약간 다르게 보입니다. 양식에 테이블 형식 부분을 배치해야 하는 경우 개체 분기를 확장하고 테이블 형식 부분 중 하나를 왼쪽으로 끕니다. 그게 다야!

값 테이블을 배치해야 하는 경우 새 양식 속성을 추가하고 해당 속성에서 값 테이블 유형을 지정합니다.

열을 추가하려면 이 양식 속성을 마우스 오른쪽 버튼으로 클릭한 후 속성 열 추가를 선택하세요.

그런 다음 테이블도 왼쪽으로 드래그합니다.

테이블에 명령 모음을 포함하려면 테이블 속성의 사용법 – 명령 모음 위치 섹션에서 값을 선택하세요.

Excel에 테이블 업로드

양식에 있는 모든 1C 테이블을 인쇄하거나 Excel에 업로드할 수 있습니다.

이렇게 하려면 테이블의 빈 공간을 마우스 오른쪽 버튼으로 클릭하고 목록을 선택합니다.

관리되는(씬) 클라이언트에서는 모든 작업/표시 목록 메뉴 항목을 사용하여 유사한 작업을 수행할 수 있습니다.

게시일: 2011년 9월 21일

값 표 1C – 파트 3. 메타데이터. 값 테이블 열 반복

이 기사에서는 "알 수 없는" 구조의 값 테이블로 작업하는 방법, 값 테이블의 열을 반복하는 방법, 열 이름을 사용하지 않고 열과 행에서 데이터를 추출하는 방법을 설명합니다. (이 기사는 처음부터 1C 기사 시리즈, 처음부터 1C 프로그래밍, 1C 값 표)에 속합니다.

자료를 설명하고 코드 예제를 "실시간"으로 실행하려면 몇 가지가 필요합니다. 테스트 값 표 1C. 일부 예제에서는 값 테이블에서 데이터를 추출하므로 "성", "이름", "중간 이름"이라는 세 개의 열이 있는 테이블을 만들고 여기에 소량의 데이터(최대 3개)를 입력합니다. 행 :)

이제 1C 값의 테스트 테이블을 만들고 채워 보겠습니다.

MyTZ = 새 값 테이블; // 변수 "MyTZ"에 저장된 값의 새 테이블을 만듭니다. MyTZ.Columns.Add("Last Name"); // "성" 열 생성 MyTK.Columns.Add("Name"); // "Name" 열 생성 MyTZ.Columns.Add("Patronymic"); // "중간 이름" 열 생성 // 값 테이블에 첫 번째 행 추가 NewLine = MyTZ.Add(); NewString.LastName = "차파예프"; NewLine.Name = "바실리"; NewString.Middle name = "이바노비치"; // 두 번째 줄 추가 NewLine = MyTZ.Add(); NewString.LastName = "제르진스키"; NewRow.Name = "펠릭스"; NewString.Middle name = "Edmundovich"; // 세 번째 줄 추가 NewLine = MyTZ.Add(); NewLine.LastName = "코토프스키"; NewLine.Name = "그레고리"; NewString.Middle name = "이바노비치";

테스트 테이블은 이름, 성, 후원의 세 가지 열로 구성됩니다. 남북 전쟁 영웅의 이름이 세 줄로 채워져 있습니다.

첫 번째 코드 샘플은 1C 값 테이블의 열을 컬렉션으로 열거합니다.

// TK의 모든 열 이름 표시 For Each Column From MyTZ.Columns Cycle Report("열 이름: " + Column.Name); 엔드사이클;

우리 사이클은 1C 메시지 창에 모든 열 이름을 표시합니다.

열 이름: 성 열 이름: 이름 열 이름: 중간 이름

열을 반복하기 위해 행 반복 주기(이전 기사의)와 유사한 특수 컬렉션 반복 주기가 사용된다는 것을 알 수 있습니다. MyTK.열- 이것은 1C 값 테이블의 열 모음입니다. "마이츠". 컬렉션에는 다음 유형의 개체가 포함되어 있습니다. "값 테이블 열"이 유형의 각 개체는 값 테이블의 열이며 속성과 메서드를 포함합니다. 이러한 속성과 메서드에 액세스하여 한 열에 대한 필요한 정보를 얻거나 해당 열에 대해 다른 작업을 수행합니다.

예를 들어, 속성에 액세스 "이름" (열.이름) 현재 열의 이름을 얻습니다.

시리즈 제목인 “For Everything”에 주목하고 싶습니다. MyTZ.Column Cycle에서" 이름이 있는 변수 "열"우리가 발명했습니다. 동일한 이름을 사용할 필요는 없습니다. 예를 들어 이 변수를 원하는 대로 호출할 수 있습니다. "내현재열"그러면 위의 예는 다음과 같습니다.

// TK의 모든 열 이름 표시 For Each MyCurrentColumn From MyTK.Columns Cycle Report("열 이름: " + MyCurrentColumn.Name); 엔드사이클;

1C 실행 하위 시스템이 이 유형의 주기를 발견하면 주기의 각 통과마다 지정된 이름을 가진 변수에 컬렉션의 한 요소를 할당합니다. 이 경우 - 하나의 수집 요소값 테이블 열 MyTK.열그런 다음 현재 열이 포함된 변수에 액세스하고 속성을 사용합니다. "이름".

나는 열 모음의 각 열 번호를 열 이름 옆에 표시할 것을 제안합니다.

// 값 테이블의 모든 열의 번호와 이름을 표시합니다. For Each Column From MyTZ.Columns Cycle ColumnNumber = MyTZ.Columns.Index(Column); // 열 번호를 가져옵니다. ColumnName = Column.Name; // 열 이름 가져오기 Report("열 번호:" + 열 번호 + " 열 이름: " + 열 이름); 엔드사이클;

1C 메시지 창에 다음 텍스트가 표시됩니다.

열 번호:0 열 이름: 성 열 번호:1 열 이름: 이름 열 번호:2 열 이름: 중간 이름

1C 값 테이블의 열은 값 테이블의 행과 마찬가지로 0부터 시작하여 번호가 매겨져 있습니다.

1C 값 테이블의 열 수

값 테이블의 열 수를 확인하려면 열 컬렉션에 "Count()" 메서드를 사용합니다.

열 수 = MyTZ.Columns.Quantity(); 보고서(열 수);

화면에 숫자 "3"이 표시됩니다. 실제로 우리 테이블에는 "성", "이름", "후원자"라는 세 개의 열이 있습니다.

번호(인덱스)로 열 객체 가져오기 및 열 인덱스를 사용하여 열 열거

열 인덱스(숫자)를 이용하여 값 테이블의 모든 열을 검색하는 순환을 만들어 보겠습니다. 열 번호는 0부터 시작한다는 점을 기억하세요. 따라서 사이클 카운터 "Sch"를 0에서 열 수에서 1을 뺀 숫자까지 늘려야 합니다.

계정 = 0 By MyTZ.Columns.Quantity() - 1 주기 CurrentColumn = MyTZ.Columns[Act]; 보고서(현재열.이름); 엔드사이클;

화면에 다음이 표시됩니다.

성명

나는 이 예가 분명하다고 생각한다. 우리는 방법을 선택했습니다 수량()열 컬렉션" MyTZ.열.수량()", 열 수를 가져오고 카운터로 루프를 시작했습니다. ~ 전에 열 수 빼기 1. 루프 내에서 열 컬렉션에서 각 열을 가져오고 현재 열 개체를 변수에 할당합니다. 현재열다음으로 변수 현재열우리는 그 부동산에 접근한다 이름이 속성의 값을 화면에 표시합니다. 보고서(현재열.이름);

객체의 속성과 객체의 메소드를 혼동하지 않는 것이 중요합니다.

속성은 특정 정적 값이며 이에 대한 액세스는 괄호 없이 작성됩니다. 예를 들어 현재열.이름. 메소드는 본질적으로 객체의 프로시저 또는 함수이며, 프로시저 및 함수에 대한 호출은 항상 괄호로 작성됩니다(입력 매개변수가 없더라도). 예를 들어: MyTZ.열.수량()

메소드에 액세스하고 괄호 작성을 잊어버린 경우 1C 인터프리터는 오류 메시지를 표시하고 코드를 실행하지 않습니다. 통역사는 괄호가 없기 때문에 메소드가 아닌 속성에 액세스한다고 간주합니다. 그러나 해당 이름을 가진 속성을 찾을 수 없습니다(해당 이름을 가진 메서드만 있기 때문에). 이는 오류 메시지에 표시됩니다.

이렇게 잘못된 방식으로 메서드 호출에 괄호를 넣는 것을 잊어버린 경우 통역사가 작성하는 내용입니다. MyTZ.열.수량("Quantity()" 뒤에 괄호 없음):

개체 필드를 찾을 수 없습니다(수량).

이 경우 "필드"와 "속성"은 동의어 또는 1C 개발자 용어의 부정확성으로 이해되어야 합니다. 그들은 동일한 개념을 나타내기 위해 이 두 단어를 모두 사용합니다. 다른 프로그래밍 언어에서는 이러한 용어가 다른 의미를 가질 수 있습니다.

열 번호를 사용하여 1C 값 테이블에서 데이터 얻기

우선, 테이블의 첫 번째 행에서 데이터를 얻는 간단한 예를 제시하겠습니다. 기사 시작 부분부터 미리 채워진 표를 사용하고 있다는 점에 유의하시기 바랍니다. 우리는 테이블에 첫 번째 행과 하나 이상의 열이 있다는 것을 확실히 알고 있습니다. 이 예제를 빈 테이블에 적용하면 오류가 발생합니다. 그래서:

FirstLine = MyTK; // 첫 번째 행(0부터 번호가 매겨짐)을 가져옵니다. FirstColumnValue = FirstRow; // 첫 번째 열의 값을 가져옵니다(열 번호 지정도 처음부터 시작함) Report(FirstColumn의 값); // 테이블의 첫 번째 행에 있는 첫 번째 열의 값을 표시합니다.

화면에 다음이 표시됩니다.

차파예프

먼저 [...] 연산자를 사용하여 값 테이블에 액세스하여 값 테이블 행 개체를 얻었습니다. (이 작업을 수행하는 방법을 잊었다면 이전 기사를 볼 수 있습니다.) 연산자 내부에 인수 "0"을 전달했습니다. 이는 값 테이블의 첫 번째 행에 대한 인덱스입니다. FirstLine = MyTK;

또한 [...] 연산자를 사용하여 문자열 개체에 액세스할 수 있는 권한도 있습니다. 이 연산자 내에서 값 테이블의 열 번호(이 경우에는 "0")도 전달했습니다. 따라서 현재 테이블 행 "0"에 대해 "0" 열의 값을 받았습니다. 이 값을 화면에 표시했는데 이는 "Chapaev"라는 문자열을 나타냅니다.

예제를 조금 복잡하게 만들어 보겠습니다.

FirstLine = MyTK; // 첫 번째 줄을 가져옵니다(0부터 번호가 매겨짐) Report(FirstLine); // 테이블의 첫 번째 행에 있는 첫 번째 열의 값을 표시합니다. Report(FirstRow); // 테이블의 첫 번째 행에 있는 두 번째 열의 값을 표시합니다. Report(FirstRow); // 테이블의 첫 번째 행에 세 번째 열의 값을 표시합니다.

이제 값 테이블의 첫 번째 행에 있는 세 열의 값을 모두 표시했습니다.

Chapaev 바실리 이바노비치

이제 변수 없이 작업할 수 있도록 이 예제도 수정하겠습니다. "첫 번째 줄"

신고(MyTZ); // 테이블의 첫 번째 행에 있는 첫 번째 열의 값을 표시합니다. Report(MyTZ); // 테이블의 첫 번째 행에 두 번째 열의 값을 표시합니다. Report(MyTZ); // 테이블의 첫 번째 행에 세 번째 열의 값을 표시합니다.

화면에도 똑같을 거에요

Chapaev 바실리 이바노비치

위의 예에서 값 테이블의 특정 행과 특정 열에 있는 값에 액세스하려면 다음 형식으로 두 연산자 [...]를 순차적으로 호출할 수 있음을 확인했습니다. 값 테이블[행 인덱스][열 인덱스]

이제 루프를 만들고 행 및 열 인덱스를 사용하여 모든 행과 열의 데이터를 가져올 준비가 되었습니다.

For RowCounter = 0 By MyTZ.Quantity() - 1 루프 // 행 순환 For ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 루프 // 열을 통한 중첩 루프 // 현재 행에서 셀 값 가져오기 및 현재 열) CellValue = MyTK[RowCounter][ColumnCounter]; // 행 번호, 열 번호 및 셀 값 표시 Report("Row No" + Row Count + "column No" + Column Count + " = " + CellValue); 엔드사이클; 엔드사이클;

화면에 다음이 표시됩니다.

0 번 줄 열 번호 0 = Chapaev 줄 0 번 열 번호 1 = Vasily 줄 0 번 열 번호 2 = Ivanovich 1 번 줄 열 번호 0 = Dzerzhinsky 1 번 줄 열 1 번 = Felix 1번 라인 2번 열 = Edmundovich 2번 라인 2번 열 0 = Kotovsky 2번 라인 1번 열 = Grigory 2번 라인 2번 열 = Ivanovich

두 개의 사이클 중 하나가 다른 사이클에 중첩되어 1C 값 테이블의 모든 행에 있는 모든 열의 값을 표시했습니다. 이 경우에는 열 이름을 사용하지 않고 인덱스로 열과 행에 액세스했습니다. 더 자세히 이해하려면 예제 안의 설명을 주의 깊게 살펴보세요.

결론적으로, 열 번호 대신 이름이 화면에 표시되도록 예제를 약간 변경하는 것이 좋습니다. 그리고 화면에 콘텐츠를 표시하기 위해 좀 더 보기 좋은 디자인을 만들겠습니다.

For LineCounter = 0 By MyTZ.Quantity() - 1 Loop // 행을 통해 루프 Report(" ======= Line No. " + LineCounter + " ======="); 신고하기(" "); // 줄바꿈(빈 행 삽입) For ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 Loop // 열을 통한 중첩 루프 // (현재 행과 현재 열에서) 셀 값 가져오기 CellValue = MyTZ [행카운터][열카운터]; // 컬럼 이름을 가져옵니다. ColumnName = MyTZ.Columns[ColumnCounter].Name; // 열 이름과 셀 값을 표시합니다. Report(ColumnName + ": " + CellValue); 엔드사이클; 신고하기(" "); // 줄 바꿈(빈 줄 삽입) EndCycle;

이제 화면에서 정보가 더욱 대표적으로 보이기 시작했습니다.

줄 번호 0 ======= 성: Chapaev 이름: Vasily Patronymic: Ivanovich ======= 줄 번호 1 ======= 성: Dzerzhinsky 이름: Felix Patronymic: Edmundovich ===== == 두 번째 줄 ======= 성: Kotovsky 이름: Grigory 후원자: Ivanovich

네, 거의 잊어버렸어요. 두 개의 [...][...] 연산자를 한 행에 사용하는 경우 열 인덱스 대신 이 열의 이름을 전달할 수 있습니다. 값테이블[행 인덱스][열 이름]

For LineCounter = 0 By MyTZ.Quantity() - 1 Loop // 행을 통해 루프 Report(" ======= Line No. " + LineCounter + " ======="); 신고하기(" "); // 줄 바꿈(빈 줄 삽입) For ColumnCounter = 0 By MyTZ.Columns.Quantity() - 1 Loop // 열을 통한 중첩 루프 ColumnName = MyTZ.Columns[ColumnCounter].Name; // 열 이름을 가져옵니다.Cell Value = MyTZ[RowCounter][ColumnName]; //

화살표로 표시된 줄에 주의하세요. ". 이 줄에서는 현재 열의 인덱스 대신 현재 열의 이름을 대괄호 안의 인수에 전달합니다. [...] 결과는 동일합니다.

이제 이 글의 마지막 내용입니다.

행 모음과 열 모음을 통한 루프를 사용하여 1C 값 테이블에서 모든 데이터를 올바르게 가져옵니다.

MyTZ 루프에서 각 CurrentLine에 대해 // 문자열 모음을 통해 루프 Report(" ======= Line No. " + MyTZ.Index(CurrentLine) + " ======="); 신고하기(" "); For Each CurrentColumn From MyTZ.Columns Loop // 열 컬렉션을 반복하는 중첩 루프 ColumnName = CurrentColumn.Name; // 열 이름 가져오기CellValue = CurrentRow[ColumnName]; // 열 NAME별로 셀 값을 가져옵니다. Report(ColumnName + ": " + CellValue); // 열 이름과 셀 값을 표시합니다. End of Cycle; 신고하기(" "); 엔드사이클;

이 예에서는 두 개의 루프가 사용되었습니다. 열 컬렉션을 반복하는 루프는 행을 반복하는 루프 내에 중첩됩니다. 위의 예제를 살펴보고 이전 기사를 읽어 본 적이 있다면 이 예제가 어떻게 작동하는지 이해하는 데 어려움이 없을 것입니다.

마지막으로, 마지막 예제에서는 중간 변수의 사용을 제거하여 코드 줄 수를 최대한 줄이겠습니다. 실제 문제에 사용되는 "산업 코드" 샘플을 받아보겠습니다.

이는 자신이 하고 있는 일을 잘 이해한 경우에만 수행해야 합니다. 코드가 매우 복잡한 경우 나중에 자신의 코드를 더 쉽게 이해할 수 있도록 중간 변수를 남겨 두는 것이 허용됩니다. 또한 모든 코드에는 최소한 최소한으로 주석을 달아야 합니다. 그래야 시간이 지나면 프로그램 텍스트를 더 쉽게 이해할 수 있습니다.

MyTZ 사이클의 각 CurrentLine에 대해 // 행을 반복합니다. Report(" ======= Line No. " + MyTZ.Index(CurrentLine) + " =======" + Symbols.PS); MyTZ.Columns 루프의 각 CurrentColumn에 대해 // 열을 반복합니다. Report(CurrentColumn.Name + ": " + CurrentRow[CurrentColumn.Name]); 엔드사이클; 신고하기(" "); 엔드사이클;

화면의 출력은 변경되지 않았으며 이전 예와 동일하게 유지됩니다.

2주 코스

"초보자를 위한 1C 프로그래밍"

강좌는 이메일로 발송됩니다. 단계별 작업을 완료하여 프로그래머가 되십시오.

참여하려면 컴퓨터와 인터넷만 있으면 됩니다.

강좌 무료 이용:

Sp-force-hide ( 디스플레이: 없음;).sp-form ( 디스플레이: 블록; 배경: #eff2f4; 패딩: 5px; 너비: 270px; 최대 너비: 100%; 테두리 반경: 0px; -moz-border -반경: 0px; -webkit-border-radius: 0px; 글꼴 계열: Arial, "Helvetica Neue", sans-serif; 배경 반복: 반복 없음; 배경 위치: 중앙; 배경 크기: 자동;) .sp-form 입력(디스플레이: 인라인 블록; 불투명도: 1; 가시성: 표시;).sp-form .sp-form-fields-wrapper(여백: 0 자동; 너비: 260px;).sp-form .sp -form-control ( 배경: #ffffff; 테두리 색상: #cccccc; 테두리 스타일: 단색; 테두리 너비: 1px; 글꼴 크기: 15px; 왼쪽 패딩: 8.75px; 오른쪽 패딩: 8.75px; 테두리 -반경: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; 높이: 35px; 너비: 100%;).sp-form .sp-필드 라벨( 색상: #444444; 글꼴- 크기: 13px; 글꼴 스타일: 일반; 글꼴 두께: 굵은 글꼴;).sp-form .sp-버튼( border-radius: 4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; 배경색: #f4394c, 색상: #ffffff, 너비: 100%, 글꼴 두께: 700, 글꼴 스타일: 일반; 글꼴 모음: Arial, "Helvetica Neue", sans-serif; 상자 그림자: 없음; -moz-box-shadow: 없음; -webkit-box-shadow: 없음; 배경: 선형 그라데이션(위로, #e30d22 , #f77380);).sp-form .sp-button-container ( 텍스트 정렬: 중앙; 너비: 자동;)

다음은 초보자를 위한 몇 가지 사실입니다. 값 테이블 작업에 대한 간단한 예입니다.

1. 값 테이블 만들기

ValueTable = 새 ValueTable;


2. 값 테이블의 열을 생성합니다.

ValueTable.Columns.Add("이름");
Value Table.Columns.Add("성");


3. 열 이름을 사용하여 새 행을 추가합니다.


NewLine.Name = "바실리";
NewLine.LastName = "강아지";


4. 값 테이블에서 값을 찾는 방법:
원하는 값이 포함된 테이블 행을 찾아야 합니다.

FoundRow = ValueTable.Find(검색값);


5. 값 표의 특정 열에서 첫 번째 항목을 찾습니다.

FoundRow = ValueTable.Find(SearchValue, "공급자, 구매자");


6. 값 표에서 모든 항목을 찾아야 하는 경우:
우리는 검색 구조를 사용합니다.

SearchStructure = 구조("직원", SearchValue);
FoundRows 배열 = ValueTable.FindRows(SearchStructure);


각 요소에 열 이름을 키로 포함하고 이 열에서 원하는 값을 값으로 포함하는 검색 구조를 만들어 보겠습니다. 검색 구조를 FindLines() 메서드에 매개 변수로 전달합니다. 결과적으로 테이블 행을 얻습니다.
예를 들어 Responsible 열과 같은 검색 구조에 원하는 값에 대한 검색을 추가하면 FindLines() 메서드를 적용한 결과 Employee와 Responsible이 모두 동일한 모든 행을 얻게 됩니다. 검색된 값입니다.

7. 값 테이블을 무작위 순서로 반복하는 방법

값 테이블 루프의 각 현재 행에 대해
Report(현재행.이름);
엔드사이클;

인덱스를 사용해도 마찬가지입니다.

SeniorIndex = ValueTable.Quantity() - 1;
계정 = 0에서 SeniorIndex 주기까지
Report(TableValues[계정].이름);
엔드사이클;


8. 기존 값 테이블 행 삭제

ValueTable.Delete(삭제할 행);

색인별

ValueTable.Delete(0);


9. 값 테이블의 기존 열 삭제

ValueTable.Columns.Delete(ColumnDeleted);


색인별

ValueTable.Columns.Delete(0);

값 테이블의 "중간"에서 행(또는 열)을 삭제하면 삭제된 "뒤"에 있는 행의 인덱스가 1씩 감소한다는 점을 고려해야 합니다.

10. 변수에 열 이름이 포함된 경우 값 테이블을 채우는 방법은 무엇입니까?

NewRow = ValueTable.Add();
NewRow[열이름] = 값;


11. 값 테이블의 전체 열을 원하는 값으로 채우는 방법은 무엇입니까?
값 표 값 표의 회계 회계 플래그 열은 False 값으로 채워야 합니다.

값 표 값을 입력합니다(거짓, "재정 회계 플래그").


값 테이블에는 FillValues() 메서드를 사용합니다. 첫 번째 매개변수는 채워질 값입니다. 두 번째 매개변수는 채울 컬럼의 이름입니다.

12. "SourceTable" 값 테이블의 데이터로 "Receiver Table" 값 테이블을 어떻게 채울 수 있습니까?

작업 시 수신자 테이블이 아직 존재하지 않거나 이전 열을 저장할 필요가 없는 경우 원본의 전체 복사본으로 생성할 수 있습니다.

수신자 테이블 = 소스 테이블.Copy();


옵션 2: ReceiverTable 테이블이 존재하며 해당 테이블의 열과 열 데이터 유형에 대한 제한 사항을 잃는 것은 안타까운 일입니다. 그러나 이름이 원본 테이블의 이름과 일치하는 열에 대한 데이터를 채워야 합니다.

이름이 일치하는 열에 대한 부분 데이터 전송:

SourceTable 주기에서 SourceTable의 각 행에 대해
FillPropertyValues(NewRow, SourceTableRow);
사이클의 끝


원본 테이블의 각 행에 대해 새 행이 수신 테이블에 추가되고 이름이 원본 테이블의 열 이름과 일치하는 새 테이블의 해당 열에 값이 채워집니다.

테이블에 동일한 이름의 열이 없으면 대상 테이블에는 원본 테이블의 행 수만큼 null 값이 있는 행이 포함됩니다.
동일한 이름의 일부 열에 대해 원본 테이블의 데이터 값 유형이 대상 테이블의 허용된 열 유형 배열에 속하지 않는 경우 해당 필드에 빈 값이 표시됩니다.
세 번째 경우를 고려해 보겠습니다. 동일한 이름의 컬럼인 경우, 대상 테이블의 컬럼은 원본 테이블의 컬럼과 완전히 일치해야 합니다.

이름이 일치하는 열의 데이터 전체 복사

동일한 열 = 새 배열();

SourceTable.Columns 주기의 각 열에 대해
MatchingColumn = TableReceiver.Columns.Find(열.이름);

일치하는 열인 경우<>정의되지 않은 다음

// 열 속성을 가져옵니다.
이름 = 열.이름;
ValueType = 열.값 유형;
헤더 = 열.헤더;
너비 = 열.너비;

// 대상 테이블의 열을 교체합니다.
인덱스 = TableReceiver.Columns.Index(MatchingColumn);

TableReceiver.Columns.Delete(색인);
ReceiverTable.Columns.Insert(색인, 이름, 값 유형, 헤더, 너비);

// 일치하는 열의 다음 이름을 배열에 추가합니다.
동일 열.Add(열.이름);

endIf;

엔드사이클;

// 소스 테이블의 행을 순환합니다.
SourceTable 주기의 SourceTable의 각 행에 대해

// 대상 테이블에 새 행을 추가합니다.
NewRow = TableReceiver.Add();

// 일치하는 셀에 값을 채웁니다.
각 이름 열에 대해 동일한 이름의 열에서 순환
NewRow[열이름] = SourceTableRow[열이름];

엔드사이클;

엔드사이클;


대상 테이블의 열을 새 열로 바꿔야 합니다. 이 열의 속성은 원본 테이블의 열과 완전히 일치합니다.
따라서 수신자 테이블에 동일한 이름의 열이 있으면 변수에 새 열에 대한 모든 속성을 수집합니다. 다음으로 이전 항목을 삭제하고 새 열을 만듭니다. 그런 다음 소스 테이블의 행을 반복합니다.
루프에서는 수신 테이블에 새 행을 추가하고 일치하는 열 배열의 열 이름에 대한 루프를 엽니다.
이 중첩 루프 내에서 대상 테이블의 셀을 소스 테이블 셀의 데이터로 채웁니다.

13. 유형 제한이 있는 값의 "ValueTable" 테이블에 열을 추가하는 방법은 무엇입니까?

열을 추가할 때 간단히 이름을 지정하고 Add() 메서드의 두 번째 매개 변수를 그대로 두면 됩니다. 이 경우 열 데이터 유형은 임의적입니다.

데이터 유형을 지정하지 않고 열 추가

// 유형 제한 없이 열을 추가합니다.
ValueTable.Columns.Add("개체");


두 번째 매개변수의 값을 입력할 수 있습니다. 거기에서 열에 허용되는 유형에 대한 설명을 전달해야 합니다. 설명 자체는 생성자를 사용하여 해당 유형의 문자열 이름(유형이 많은 경우 쉼표로 구분) 또는 유효한 유형의 배열을 매개변수로 전달하여 얻을 수 있습니다.

데이터 유형을 나타내는 열 추가

// 열 데이터 유형에 대한 제한사항:
// "상대방" 디렉터리의 요소만 해당됩니다.
값 테이블.Columns.Add("계정", 새 유형 설명("DirectoryLink.Accounts"));


열 데이터 채우기에 허용되는 유형 중 문자열이 있는 경우 비트 깊이(길이)를 제한하고 변수 또는 고정 길이의 사용을 지정할 수 있습니다. 이 모든 것은 String Qualifiers 생성자를 사용하여 객체를 생성함으로써 달성됩니다. 다음으로 이 개체는 TypeDescription 생성자의 매개 변수 중 하나로 사용됩니다.

한정자를 사용하여 값 테이블 열의 데이터 유형 지정

// String 유형의 데이터에 대한 제한을 준비하고 설정합니다.
문자열 한정자 = 새 문자열 한정자(20, AllowedLength.Variable);
ValidTypes = NewTypeDescription("String", StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


숫자 및 날짜 한정자와 관련하여 유사한 작업을 수행할 수 있습니다.
참고: 유형 설명은 생성자에 의해 "처음부터" 작성되거나 기존 유형 설명을 기초로 사용할 수 있습니다.

기존 유형 선언을 사용하여 값 테이블 열의 데이터 유형 지정

// 이전에 사용된 유형 설명의 확장입니다.
QualifiersNumbers = 새로운 QualifiersNumbers(10, 2, ValidSign.Non-negative);
DateQualifiers = New DateQualifiers(DateParts.Date);
Extended ValidTypes = New TypeDescription(ValidTypes, "숫자, 날짜", 숫자 한정자, 날짜 한정자);

ValueTable.Columns.Add("참고", ExtendedAcceptableTypes);

1C 8.3(8.2) 플랫폼의 값 표는 개발자가 소프트웨어 개발 중에 알고리즘을 구현하는 데 사용할 수 있는 보편적인 값 모음입니다. 기본적으로 1C 값 테이블은 열과 열이 있는 동적 값 집합입니다.

1C의 다른 보편적인 값 모음에 관한 기사

내 책 "Programming in 1C in 11 steps"에서 1C 프로그래밍을 배우십시오.

  1. 이 책은 초보자를 위해 명확하고 간단한 언어로 작성되었습니다.
  2. 1C 아키텍처를 이해하는 방법을 배우십시오.
  3. 1C 언어로 코드 작성을 시작합니다.
  4. 기본 프로그래밍 기술을 익히십시오.
  5. 문제집을 통해 지식을 강화하세요.

초보 개발자와 숙련된 프로그래머 모두를 위한 관리형 1C 애플리케이션 개발에 대한 훌륭한 가이드입니다.

  1. 매우 접근하기 쉽고 이해하기 쉬운 프레젠테이션 언어
  2. 책은 PDF 형식으로 이메일로 전송됩니다. 모든 기기에서 열 수 있습니다!
  3. 관리되는 1C 애플리케이션의 이념 이해
  4. 관리형 애플리케이션을 개발하는 방법을 알아보세요.
  5. 관리되는 1C 양식을 개발하는 방법을 배우십시오.
  6. 관리되는 양식의 기본적이고 필요한 요소를 사용하여 작업할 수 있습니다.
  7. 관리되는 애플리케이션에서의 프로그래밍이 명확해질 것입니다.

15% 할인 프로모션 코드 - 48PVX헤유


이 강의가 문제 해결에 도움이 되었거나, 마음에 들었거나, 유용하다고 생각했다면, 얼마든지 기부하여 내 프로젝트를 지원할 수 있습니다.

수동으로 결제할 수 있습니다.

Yandex.Money - 410012882996301
웹머니 - R955262494655

내 그룹에 가입하세요.

2024wisemotors.ru. 작동 방식. 철. 채광. 암호화폐.