매개변수를 통해 데이터 세트를 연결합니다. 데이터 구성 방식 생성자 - 데이터 세트 연결 탭

데이터 구성 시스템은 여러 데이터 세트를 사용할 수 있습니다. 그리고 이러한 데이터 세트가 어떻게든 서로 연결되어야 한다는 것은 매우 논리적입니다. 1C 쿼리 언어와 유사하게 데이터 세트는 또는 중 하나일 수 있습니다. 이 기사에서 우리는 접근 제어 시스템의 데이터 세트 연결.

단순히 하나의 데이터 세트 내에서 테이블을 조인할 수 있다면, 언뜻 보면 여러 개의 데이터 세트를 생성한 다음 이를 조인해야 하는 이유가 명확하지 않을 수 있습니다. 여기에는 적어도 하나의 이유가 있습니다. 외부 데이터 세트를 사용하는 경우입니다. 아시다시피 ACS 데이터 세트에 대한 쿼리를 작성할 때 해당 데이터 세트에 전달할 수 없습니다(예: ). 일반적인 요청의 경우 이는 매우 간단하게 수행됩니다. 액세스 제어 시스템을 사용하는 경우 값 테이블을 . 따라서 데이터 세트를 연결해야 합니다. 데이터 세트는 다음을 통해서만 연결할 수 있다는 점을 바로 알아두겠습니다. 왼쪽 연결. 따라서 여기와 달리 테이블 연결 유형을 담당하는 확인란이 표시되지 않습니다.

이제 액세스 제어 시스템에서 데이터 세트 연결을 고려할 수 있는 예를 사용하여 상황을 생각해 보겠습니다. 디렉토리가 있다고 가정하자 상품, 이는 다양한 공급업체로부터 받을 수 있으며 가장 유리한 가격의 공급업체를 선택하기 위해 공급업체별 상품 가격이 포함된 보고서를 생성하려고 합니다. 그리고 공급업체 웹사이트의 웹 서비스 등을 통해 현재의 가격을 적용합니다.

따라서 상품의 경우 요청을 통해 얻은 데이터 세트를 갖게 되고, 가격의 경우 외부 소스에서 얻은 데이터 세트를 갖게 됩니다.


이제 북마크로 이동해 보겠습니다. 데이터세트 관계그리고 그림과 같이 구성합니다.

북마크에 설정먼저, 상세 기록의 기본 출력을 만들어 보겠습니다.


우리 디렉토리에 두세요 상품다음 항목이 포함되어 있습니다

보고서를 실행하면 다음 그림이 표시됩니다.

즉, 데이터 세트가 모든 규칙에 따라 상호 연결되어 있음을 알 수 있습니다. 왼쪽 연결

북마크에 데이터세트 관계일부를 표시하는 것이 가능합니다. 추가 옵션적절한 분야에서. 그러나 그것들은 아주 드물게 사용됩니다. 기술 문서와 ITS 디스크에서 자세한 내용을 읽을 수 있습니다.

때로는 특정 레이아웃 결과를 얻기 위해 액세스 제어 시스템의 데이터 세트 간에 링크를 생성해야 하는 경우도 있습니다. 우리 기사에서 이것이 필요한시기와 수행 방법에 대해 이야기하려고 노력할 것입니다.

1C에 구현된 데이터 레이아웃 체계는 세 가지 유형의 데이터 소스를 지원합니다(그림 1).

데이터 소스

개발자가 가장 명확하고 자주 사용하는 데이터 소스는 쿼리입니다.

1C 버전 8에 구현된 쿼리 디자이너는 매우 편리하며 대부분의 경우 여러 테이블을 함께 연결하고 필요한 그룹화 및 선택을 그 테이블에서 직접 수행할 수 있습니다.

복잡한 경우, 일부 코드 실행을 사용하는 것이 필요하거나 더 편리한 경우(예: 타사 파일) 또는 쿼리를 사용할 수 없는 경우 "개체" 데이터 소스가 도움이 됩니다. 모듈에서 실행되는 임의 코드는 액세스 제어 시스템이 액세스할 수 있는 출력에서 ​​특정 구조를 가져야 합니다.

세 번째 데이터 소스는 'Union'입니다. 실제로 이 소스는 커뮤니케이션 유형 중 하나로 간주될 수 있습니다. 일치하지 않지만 특정 필드가 일치하는 경우 결합(여러 테이블을 하나로 축소)합니다. 즉, 조인되는 두 테이블에 각각 3행과 4행이 있는 경우 결과 데이터 원본에는 7행이 있습니다.

문제의 공식화

테스트 장소로 일반 애플리케이션 모드에서 작동하는 UPP 기반 버전 1.3.92.3을 선택합니다.

우리에게는 다음과 같은 작업이 주어졌습니다. 액세스 제어 시스템만을 사용하여 문서에서 구매한 품목의 테이블을 표시하는 보고서를 생성하고 가격은 상대방이 보낸 파일에서 가져옵니다.

따라서 우리는 다음을 수행해야 합니다.

  1. 영수증 문서의 표 부분을 가져옵니다.
  2. 파일을 "객체" 데이터 소스에 업로드합니다.
  3. 이 두 소스를 특정 매개변수(우리의 경우 코드)로 연결합니다.
  4. 결과 테이블을 표시합니다.

실행과정

나열된 모든 단계를 살펴보겠습니다.

  • 영수증 문서의 표 형식 부분에 대한 쿼리를 만듭니다(그림 2).

그림 2

  • 데이터 세트 객체를 생성합니다(그림 3).

그림 3

여기서는 "데이터가 포함된 개체의 이름"에 주의하는 것이 중요합니다. 이는 보고서 모듈의 코드에서 지정해야 할 이름입니다.

  • 보고서 모듈로 이동하여 "결과 작성 시" 절차를 생성합니다(그림 4).


그림 4

데이터를 얻는 절차 외부 파일이에 대해서는 설명하지 않고 "데이터 세트 2"에 대한 데이터를 얻을 수 있도록 레이아웃에 있어야 하는 코드 부분에 주의를 기울일 것입니다(그림 5).

그림 5

중요한! 연결하는 동안 프로시저 코드에서 "개체"를 생성할 때 StandardProcessing 매개 변수의 값은 False여야 합니다.

"데이터 세트 링크" 탭으로 이동합니다.

연결 세트

다이어그램의 해당 탭으로 이동합니다(그림 6).

몇 가지 예외를 제외하고 쿼리 디자이너에 있는 테이블 부분과 매우 유사한 테이블 부분이 표시됩니다. 통신 소스 세트와 통신 대상 세트에 대해서는 "전체" 체크박스를 선택할 수 없지만 몇 가지 항목이 추가되었습니다.

데이터 세트 관계에서는 쿼리 생성자의 왼쪽 외부 조인과 유사한 관계만 설정할 수 있습니다.

연결을 만들기 전에 열의 목적을 결정해 보겠습니다.

  1. 링크 소스는 사용 가능한 모든 값을 가져오는 첫 번째 데이터 세트입니다.
  2. 통신 수신기 – 당사의 조건에 해당하는 값이 선택되는 데이터 세트입니다.
  3. 소스 표현식 – 비교가 발생할 첫 번째 데이터 세트의 필드 또는 표현식입니다.
  4. 대상 표현식은 종속 세트의 필드 또는 표현식입니다.
  5. 매개변수 – 이 필드에 매개변수 이름을 지정하면 수신기 세트와의 통신은 매개변수에 지정된 값에 따라서만 수행됩니다.
  6. 매개변수 목록 – 값 목록을 매개변수로 사용할 가능성을 결정합니다.
  7. 연결 조건 – 여기에서 소스 필드를 사용하여 표현식을 지정하면 조건을 생성할 수 있으며, 그 이행은 연결 설정을 위한 신호 역할을 합니다.
  8. 초기값 - 연결의 초기값을 표시합니다.
  9. 필수 관계 - 소스(FALSE로 설정) 또는 대상(TRUE로 설정)에 사용된 필드가 활성화되어 있는지 여부를 결정하고 이를 기반으로 레이아웃에 관계를 추가합니다.

따라서:

  • 의사소통의 출처는 당사의 요청에 따른 결과입니다.
  • 개체는 수신기 역할을 합니다.
  • 소스 표현은 "NomenclatureCode"입니다.
  • 수신자 표현 "명명법";
  • 통신은 필수입니다(그림 7).

명명법의 이름이나 재현 유형 등을 연결 조건으로 표시했다면 작업에 대한 더 정확한 샘플을 얻을 수 있었을 것입니다. 우리의 행동 결과는 그림 8에서 볼 수 있습니다.

그림 8

가격 파일 보고서의 맨 아래 두 줄과 일치하는 항목이 없습니다.

이 경우 필수 체크박스는 소스(FALSE로 설정) 또는 대상(TRUE로 설정)에 사용된 필드가 활성화되어 있는지 여부를 결정하고 이를 기반으로 레이아웃에 관계를 추가합니다.

각 데이터 세트에 대해 계층 구조 검사를 설정할 수 있습니다.

이 옵션은 필드의 선택 조건을 비표준 방식으로 처리해야 하는 경우에 사용됩니다. 링크가 특정 값의 계층에 속하는지 여부를 확인하기 위해 데이터를 가져오는 데이터 세트로 필드를 지정할 수 있습니다.

시험 1C: 플랫폼 전문가의 질문 11.33. 여러 데이터 세트를 사용하는 것이 허용됩니까?

  1. 데이터 세트를 사용하는 경우에만 – 객체
  2. 데이터 세트를 사용하는 경우에만 - 쿼리

정답은 첫 번째이며 어떤 경우에도 허용됩니다.


시험 1C: Platform Professional의 질문 11.10. 데이터 구성도에서 두 데이터 세트 간의 관계를 정의할 때

  1. 연결 옵션(왼쪽, 전체)은 개발자가 선택했습니다.
  2. 첫 번째 세트와 두 번째 세트의 왼쪽 조인이 항상 사용됩니다.
  3. 두 번째 집합과 첫 번째 집합의 왼쪽 조인이 항상 사용됩니다.
  4. 첫 번째 세트에서 두 번째 세트의 왼쪽 조인이 사용되며 경우에 따라 내부 조인이 설정됩니다.

정답은 넷째입니다. 데이터 세트는 왼쪽 또는 내부 조인으로만 연결됩니다.

시험 1C: Platform Professional의 질문 11.13. 레이아웃 다이어그램 디자이너 창의 "데이터 세트" 탭에서 계층 구조 검사를 구성해야 하는 경우는 무엇입니까?

  1. 표준 계층과 다른 자신의 계층에 따라 합계 수신을 금지해야 하는 경우
  2. 표준 계층 구조와 다르게 자신의 계층 구조에 따라 합계를 구해야 하는 경우
  3. 표준 계층과 다른 자신의 계층 구조 그룹에 진입하기 위한 선택 설치를 금지해야 하는 경우
  4. 표준 계층 구조와 다른 자체 계층 구조 그룹에 선택 항목이 포함되도록 허용해야 하는 경우

정답은 게시물의 설명인 4번입니다.

시험 1C: 플랫폼 전문가의 질문 11.16. 작성 시스템에서 두 데이터 세트 간의 어떤 종류의 연결을 구현할 수 있습니까?

  1. 쿼리 언어의 모든 항목: "All to All", "Left", "Right", "Inner" 및 "Full"
  2. "모두 대 전체", "왼쪽", "오른쪽" 및 "내부"만
  3. "왼쪽"과 "내부"만
  4. "모두 대 전체", "왼쪽" 및 "내부"만
  5. "왼쪽", "오른쪽", "내부" 및 "전체"만

테스트 결과에 따르면 정답은 4번째입니다. 사실 세번째가 맞습니다.

시험 1C: 플랫폼 전문가의 질문 11.17. 두 데이터 세트 간의 관계를 설정할 때 "필수 관계" 플래그가 선택됩니다. 어떤 경우에 사용자의 작업으로 인해 연결이 실패하게 됩니까?

  1. 사용자가 어떤 설정을 했는지에 관계없이 두 세트의 데이터 연결이 구현됩니다.
  2. 선택한 필드 목록에는 왼쪽 세트의 필드만 표시됩니다.
  3. 선택한 필드 목록에서 오른쪽 세트의 필드만 지정됩니다.
  4. 선택된 필드 목록에서 왼쪽 세트의 필드만 표시되고, 오른쪽 세트의 필드가 선택됩니다.
  5. 선택된 필드 목록에는 오른쪽 세트의 필드만 표시되고, 왼쪽 세트의 필드가 선택됩니다.

정답은 두 번째입니다. 세트 (및 소스)가 하나만 있으면 연결할 것이 없습니다.

시험 1C: 플랫폼 전문가의 문제 11.39. 외부 데이터는 데이터 구성 시스템의 객체인 세트로 어떻게 전송됩니까?

  1. 데이터 구성 프로세서를 통해 내장된 언어를 통해
  2. 레이아웃 빌더를 통해 내장 언어 사용
  3. 데이터 구성 시스템의 출력 프로세서를 통해 내장된 언어를 통해

정답은 프로세서를 통해 첫 번째입니다.

41
나는 최근에 무한한 수의 열로 보고서를 만들었습니다. 코드를 만지작거리고 싶지 않았기 때문에 출입 통제 시스템에서 하기로 결정했습니다. 여기에는 아무런 문제가 없었습니다. 결과를 임의의 레이아웃(자신의 헤더 +...)으로 확장해야 했습니다. 27
CDS 학생들이 첫날이나 둘째 날에 이 내용을 접하더라도 FAQ 섹션에 있어야 합니다. 간단한 예 프로그램 출력기본 설정을 사용하여 레이아웃에 대해 보고합니다. //다이어그램 가져오기... 18
접근 제어 시스템에서 보고서를 생성할 때 기본적으로 모든 그룹이 확장되어 있지만, 생성 후 즉시 그룹이 축소된 보고서를 표시해야 하는 경우도 있습니다! 보고서 모듈의 이 코드를 사용하면 축소할 수 있습니다... 9
리포트를 개발할 때 필요한 것은 제한된 권한을 가진 사용자에 대해서는 권한 확인 없이 완전히 리포트가 생성된다는 것입니다! 특히 RLS가 구성된 경우 이를 수행하는 방법에는 여러 가지가 있습니다: 1. 설치...

데이터 레이아웃 다이어그램(1C SKD)- 생성에 편리한 생성자 소프트웨어 제품 1C: 생산 자동화의 개발 및 추적에 기여하여 최소한의 시간에 최대한 유연하고 아름답게 만들 수 있는 엔터프라이즈 복합 보고서입니다. 데이터 구성 체계(1C SKD)의 또 다른 장점은 제어된 보고서 양식의 자동 생성이며, 이 영역이 추가로 개발됨에 따라 보고서 개발 방법을 선택할 때 중요한 요소입니다. 그러나 데이터 구성 체계(1C SKD) 구조의 복잡성과 수많은 설정으로 인해 "출력 양식 디자이너"를 통하는 것보다 보고서 개발 시간이 더 길어지는 경우가 많습니다. 따라서 1C 프로그래머는 보고서 생성 개발 시간을 더욱 단축하기 위해 데이터 구성 체계(1C DCS)의 모든 복잡성을 이해해야 합니다.

데이터 구성 체계(1C SKD)의 처음 세 탭인 데이터 세트, 데이터 세트 연결 및 계산된 필드를 살펴보겠습니다.

1C SKD의 데이터 세트

데이터 세트에는 쿼리, 개체 및 공용체라는 세 가지 개체를 생성하는 기능이 포함되어 있습니다. 각각에 대해 자세히 살펴보겠습니다.

나타냅니다 정상적인 요청, 이는 쿼리 빌더 버튼을 사용하여 생성됩니다. 자동완성 플래그가 설정되면 선택한 모든 세부정보가 데이터 세트 필드에 자동으로 포함됩니다. 세 가지 탭이 있는 데이터 구성 탭에서 요청의 필드 채우기를 사용자 정의할 수도 있습니다.

테이블, 여기에서는 보고서 생성에 참여할 테이블이 선택됩니다. 일반적으로 테이블 및 필드 탭에서 필요한 문서, 디렉터리, 레지스터를 선택했기 때문에 기본 데이터가 선택됩니다.

필드, 여기서는 보고서에 포함되어야 하는 개체를 선택합니다. 하위 플래그는 개체에 대해 액세스 가능한 하위 요소가 있는지 여부를 나타냅니다. 문자열, 숫자 및 유사한 데이터의 경우 설정할 수 없다는 것이 논리적입니다. 플래그를 True로 설정합니다.

조건 여기서는 액세스 제어 시스템의 조건에 따라 사용할 수 있는 개체를 선택합니다.

작업 중 일부는 데이터 구성 체계에서 수행되고 일부는 프로그래밍 방식으로 수행됩니다. 간단한 예를 살펴보겠습니다.

먼저 문서의 데이터 레이아웃에 대한 레이아웃 다이어그램을 만들고 SKD(예: 1C SKD)라고 부릅니다. 그 안에 데이터 세트 개체를 만든 다음 필드를 채웁니다. 예를 들어 문서가 있습니다. 명칭, 수량 및 가격과 같은 세부 정보가 포함된 상품의 표 형식 부분입니다.

세 개의 필드를 추가하고 각 열에 세부 정보 이름을 입력하면 나머지 열은 자동으로 채워집니다.

문서 양식에 버튼을 만들고 작동 메커니즘을 설명하겠습니다. 제어된 양식:

&클라이언트에서

절차 인쇄()

OurReport = PrintOnServer(); //서버에서 함수 호출

OurReport.Show(); //생성된 보고서 표시

절차 종료

&서버에서

함수 PrintOnServer()

DocumentObject = FormAttributeValue("객체");

//SKD 자체에 데이터가 포함된 개체의 이름을 표시한 것과 동일한 방식으로 테이블 형식 부분 Products를 ProductsSKD라는 이름의 구조에 배치합니다.

DataSet = 새 구조;

DataSet.Insert("제품SKD", DocumentObject.Products);

//레이아웃을 가져오고 모든 보고서 출력 설정을 레이아웃에서 가져오도록 기본 설정을 지정합니다.

OurLayout = DocumentObject.GetLayout(“SKD”);

설정 = OurLayout.DefaultSettings;

//설정으로 데이터 레이아웃 레이아웃 만들기

LayoutLinker = newDataLayoutLayoutLinker;

LayoutLayout = LayoutComposer.Execute(OurLayout, 설정);

//데이터 세트로 데이터 구성 수행

DataCompositionProcessor = newDataCompositionProcessor;

DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

//스프레드시트 문서를 만들고 그 안에 보고서를 표시합니다.

ReportDocument = 새 TabularDocument;

OutputProcessor = 새 OutputProcessorDataCompositionResultInTabularDocument;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

문서 반환 보고서;

EndFunction

원하는 경우 다른 레이아웃 영역을 가져와서 이 보고서에 표시할 수도 있습니다. 예를 들어 지불 주문 생성을 위한 표준 레이아웃이 있고 그 안에 헤더가 잘 생성되어 있으므로 그렇게 하지 마십시오. 불필요한 작업이 있으므로 먼저 레이아웃을 가져오고 헤더를 표시한 다음 보고서를 생성하여 액세스 제어 시스템에 표시하겠습니다.

에 대한 통일

여기에 쿼리와 개체를 배치할 수 있지만 연결과 달리 단순히 테이블을 서로 추가하는 것뿐입니다. 즉, 두 개의 동일한 테이블을 연결하면 하나로 끝나고 결합하면 두 배가 됩니다. 간단한 예에서 :

테이블이 있습니다:

통신 시 당사는 다음을 받게 됩니다:

그리고 결합하면:

이제 데이터 세트의 열을 채우는 것을 고려해 보겠습니다. 일부는 다른 탭과 관련되어 있으므로 건너뛰고 향후 문서에서 다시 설명하겠습니다.

- 필드, 속성의 일반 이름을 나타냅니다.

­­- , 액세스 제어 시스템에서 연락할 세부 정보의 이름을 표시합니다(예: 계산된 필드;

- 제목, 보고서에 표시될 속성의 이름을 나타냅니다.

- 분야 제한, 이 필수 항목의 가용성을 나타냅니다.

- 세부 사항의 제한, 하위 요소의 가용성을 나타냅니다. 세부 사항의 가용성이 표시된 경우 필드 자체를 사용할 수 있으며 아마도 이 메커니즘은 향후 릴리스에서 변경될 수 있습니다.

- 필드 표현을 계산하는 표현식, 세부 사항의 출력을 약간 변경해야 할 때 사용하는 것이 편리합니다. 예를 들어 이름 뒤에 필요한 명명법표시되었다 재고, 해당 위치에 항목 + "창고에 있음" + 창고를 입력합니다. 세부정보에 대한 액세스는 열에 표시된 이름을 통해 수행됨을 반복합니다. 길;

- 표현 순서, 이전 지점과 유사하게 조건을 수동으로 설정할 수 있는 보고서 순서 설정을 위한 편리한 메커니즘이지만 실습에서 알 수 있듯이 이 메커니즘은 원하는 대로 작동하지 않는 경우가 많으므로 표준 정렬을 사용하는 것이 좋습니다.

- 값 유형는 속성 값의 유형을 나타내며, 다음 필드를 사용하는 경우 반드시 입력해야 합니다.

- 사용 가능한 값, 꽉 찬 경우에만 작동 값 유형, 양식을 열고 열에서 의미유형에 따라 변경해야 하는 요소를 나타냅니다. 사전 정의된 개체일 수도 있고 숫자(예: 세부 정보)일 수도 있습니다. 단순한 값, V 프레젠테이션부울 유형의 예를 들어 무엇으로 변경해야 하는지 나타냅니다.

- 장식표준 설정관리되는 양식의 설정과 유사한 필드 형식을 사용하면 특정 세부 사항의 출력을 더 정확하고 아름답게 사용자 정의할 수 있습니다.

1C SKD의 데이터 세트 연결

여기서만 설치됩니다 왼쪽 조인, 비슷한 원리로 사이요청에서,에서 의사소통의 원천연결을 위한 기본 테이블을 지정합니다. 수화기추가의. 안에 표현 소스그리고 표현 수신기우리는 커뮤니케이션이 이루어질 세부 사항을 나타냅니다. 나머지 열에 대해서는 탭을 볼 때 더 자세히 살펴보도록 하겠습니다. 옵션. 매개변수에 대한 추가 연결이 없는 경우 요청에서 연결을 수행하는 것이 좋습니다. 이렇게 하면 보고 속도가 빨라집니다.