1c 동적 목록 테이블을 우회합니다. 동적 목록 데이터 검색

구성을 마무리하는 과정에서 모든 1C 프로그래머는 동적 목록을 접하게 됩니다.
동적 목록은 데이터베이스 개체 또는 개체가 아닌 데이터(등록 항목)의 다양한 목록을 표시하는 데 사용되는 인터페이스 개체입니다.
예를 들어 동적 목록은 항목 목록을 표시하는 데 사용됩니다.

동적 목록의 기능을 보여주기 위해 다음을 만들어 보겠습니다. 외부 처리, 기본 양식을 추가합니다. "동적 목록" 유형을 사용하여 양식에 새 속성을 추가해 보겠습니다. 해당 속성으로 이동하여 거기에 무엇이 있는지 살펴보겠습니다.
우리는 "Custom request" 속성에 관심이 있습니다. 이를 활성화하면 동적 목록의 모든 기능이 표시됩니다. 1C: Enterprise 시스템 쿼리 언어의 거의 모든 기능을 사용하여 요청을 작성할 수 있습니다. 확인란을 선택하고 "열기" 링크를 클릭하세요.

기본적으로 목록에는 모든 창고의 총 잔액이 포함된 품목 목록이 표시됩니다. 이러한 목록을 구현하려면 다음 쿼리를 추가하세요.


기본 테이블로 "Directory.Nomenclature"를 선택하면 명명법 목록과 마찬가지로 동적 목록으로 작업할 수 있습니다(삭제할 디렉터리 요소 추가, 변경, 표시). 또한 기본 테이블을 설정하면 저렴한 기회동적 데이터 읽기 - 이는 샘플링이 필요에 따라 부분적으로 수행됨을 의미합니다.
다음으로 목록에 대한 양식 요소를 만들어야 합니다.

이 형식으로 처리를 실행하려고 하면 오류가 발생합니다.


이를 제거하려면 "기간" 매개변수의 값을 설정해야 합니다. 이렇게 하려면 동적 목록의 "Parameters" 컬렉션에 있는 "SetParameterValue" 메서드를 사용할 수 있습니다. 이 메서드는 두 가지 매개변수를 사용합니다.
. "매개변수" - 유형: 문자열; DataComposition매개변수. 값을 설정하려는 매개변수 또는 데이터 구성 매개변수의 이름입니다.
. "값" - 유형: 임의. 설정할 값입니다.
다음 형식의 "OnCreateOnServer" 핸들러에서 호출할 수 있습니다.

질문이 있거나 컨설턴트의 도움이 필요하십니까?


우리는 사용자에게 잔액 수령 기간을 변경할 수 있는 기회를 제공합니다. 이렇게 하려면 속성과 이와 관련된 "날짜" 양식 요소를 추가하세요.


"Date" 양식 요소의 "OnChange" 핸들러에서 "SetParameterValue" 메소드를 호출하여 연관된 속성의 값을 값으로 전달합니다. 비슷한 방법으로 폼의 “서버에서 생성할 때” 절차를 변경해 보겠습니다. 클라이언트에서 메서드를 사용할 수 있으므로 서버를 호출할 필요가 없습니다.


이제 날짜가 변경되면 잔액이 자동으로 업데이트됩니다.




사용자가 현재 잔액이나 계획된 영수증을 보고 싶어한다고 가정해 보겠습니다. 구현 옵션 중 하나를 고려해 보겠습니다. 부울 유형 양식 속성과 관련 스위치를 추가해 보겠습니다.


스위치 값을 변경하면 요청 텍스트도 변경됩니다. 이를 위해 "영수증 수량 표시" 양식 요소에 대한 "변경 시" 이벤트 핸들러를 사용합니다. 속성 값에 따라 동적 목록의 "QueryText" 속성을 변경해야 합니다. 이 속성은 클라이언트에서 사용할 수 없으므로 서버 프로시저를 호출해야 합니다.


변경 결과:



플랫폼 1C:Enterprise 8.2는 데이터베이스 테이블의 많은 레코드를 동적 방식으로 작업할 수 있습니다. 즉, 데이터를 부분적으로 읽을 수 있습니다. 이전 기사에서 우리는 동적 목록의 메커니즘과 작업을 최적화하는 방법을 살펴보았습니다.

오늘은 동적 목록에 대한 비표준 문제를 해결하겠습니다."금액" 문서 속성을 사용하여 총액을 계산하고 목록 바닥글에 표시해야 합니다. 마찬가지로 "등급" 필드의 평균값을 계산하고 이를 동적 목록의 바닥글에도 표시합니다. 전체 필드 계산 시 문서 목록 설정에서 사용자가 설정한 선택 사항을 고려해야 합니다.

전체적인 어려움은 동적 목록이 모든 항목을 한 번에 수신하지 않고 부분적으로 수신한다는 사실에 있습니다. 따라서 현재 선택 항목에 해당하는 모든 문서의 요약을 즉시 얻을 수 없습니다. 합계를 계산하는 방법은 무엇입니까?

구현

이제 문제 해결로 넘어 갑시다. 양식 변경부터 시작해 최종 값을 얻는 알고리즘을 설명하겠습니다.

형태와 인터페이스

먼저 결과 필드를 표시할 문서 양식을 준비하겠습니다. 이를 위해 “Rating” 및 “Amount” 형식의 두 가지 문자열 세부 정보를 추가합니다.

문서의 총 가치가 이러한 세부 사항에 기록됩니다.

동적 목록의 바닥글에 세부 정보 값을 표시하려면 목록 양식의 관련 요소에 대해 해당 옵션을 활성화해야 합니다(다음 스크린샷 참조).

이제 목록 바닥글의 결과가 업데이트될 이벤트를 결정해야 합니다. 개발을 쉽게 하기 위해 "업데이트" 명령과 해당 양식 요소를 명령 패널에 추가해 보겠습니다. 이 명령을 실행하면 합계가 업데이트됩니다.

글 마지막에 있는 링크에서 다운로드할 수 있는 테스트 구성에서는 문서 기록 시 요약 업데이트 이벤트도 추가했습니다. 이 경우 양식 알림 메커니즘이 사용됩니다. 이에 대해서는 더 자세히 설명하지 않겠습니다.

연산

가장 문제가 되는 부분은 남아 있습니다. 총 값을 구해야 합니다. 다음과 같이 진행해 보겠습니다. 동적 목록의 선택 세트에 따라 최종 필드의 값을 얻기 위해 데이터베이스에 요청을 작성합니다. 선택이 그룹에서 복잡한 조건을 가질 수 있다는 점을 고려해 볼 가치가 있습니다.

참고: 동적 목록 설정(위 스크린샷 참조)은 데이터 구성 시스템(DCS)의 메커니즘을 기반으로 합니다. 따라서 비슷한 방식으로 작업할 수 있습니다(프로그래밍 방식으로 추가, 변경, 읽기 등).

결과를 얻기 위한 요청을 구성하는 단계는 다음과 같습니다.

1. 동적 목록에 대한 초기 요청을 받습니다.

보시다시피 요청은 모든 문서 세부정보를 선택합니다. 좀 더 복잡하게 만들기 위해 "SELECT" 구문으로 생성된 "Rating Level" 필드를 추가했습니다.

2. 우리는 요청 조건의 텍스트(“WHERE” 섹션)를 작성하고 이를 원래 요청으로 대체합니다.

구성된 동적 목록 선택에 따라 수신된 소스 요청 텍스트에 조건을 추가해야 합니다.

전달된 선택 요소(그룹 또는 선택 요소)의 유형에 따라 절차는 해당 조건 텍스트를 생성합니다. 그룹 내 모든 조건은 괄호로 묶이고, 그룹에 포함된 조건도 괄호로 묶습니다. 표현식 사이의 조건은 상위 그룹에 따라 다릅니다. "AND" 조건은 계층 구조의 최상위 요소 사이에 배치됩니다.

요소에 사용 플래그가 설정된 경우("사용" 속성) 해당 요소가 처리됩니다. 생성된 텍스트는 비교 조건(같음, 같지 않음, 목록 등)에 따라 달라집니다. 비교 유형에 대한 생성된 조건 텍스트의 의존성은 다음 함수에서 볼 수 있습니다.

내 생각에 또 다른 흥미로운 기능은 "GetFieldTextByView"입니다. 쿼리 언어 표현식으로 구성된 필드를 쿼리 조건으로 대체하려면 필요합니다. 위에서는 원래 요청에 '등급 수준' 필드를 추가했습니다. 사용자가 이를 선택에 사용하는 경우 전체 표현식을 쿼리 조건으로 대체해야 합니다. 이 기능표현을 기반으로 요청에서 필드의 텍스트를 가져옵니다. 이러한 복잡한 필드의 경우 표현식의 전체 텍스트를 반환합니다.

알고리즘에 대한 자세한 내용은 기사에 첨부된 테스트 구성을 참조하세요. 아래는 선택 설정과 이에 대해 생성된 요청 조건의 스크린샷입니다.

생성된 조건 텍스트는 원래 동적 목록 요청에 추가됩니다. 쿼리 결과는 임시 테이블에 저장됩니다.

3. 첫 번째 쿼리를 임시 테이블에 배치하고 필요한 집계 함수를 사용하여 요약 필드별로 그룹화를 수행합니다.

“등급” 필드의 평균값과 “금액” 필드의 총액을 가져와야 한다는 점을 상기시켜 드리겠습니다. 선택 사항을 고려하여 이미 요청을 생성했으며 남은 것은 총 값을 계산하는 것뿐입니다. 이는 다음 요청으로 수행됩니다.

요청을 실행한 후 결과 결과를 처리하여 클라이언트에 반환하고 이전에 생성한 양식 세부 정보에 기록합니다. 궁극적으로 동적 목록의 바닥글에 결과가 표시되었습니다(기사의 첫 번째 스크린샷 참조).

솔루션의 최적성

일반적으로 이 접근 방식은 성능에 부정적인 영향을 미칠 수 있습니다. 예를 들어, 프로그램이 없이 합계를 계산하는 경우 확립된 선택동적 목록에서는 선택한 레코드 수가 엄청날 수 있습니다(예: 몇 년에 걸쳐). 결과적으로 각 결과 업데이트는 수십(!!!)초 동안 지속될 수 있습니다. 따라서 선택이 설정된 경우에만 결과를 계산하는 것이 좋습니다. 이러한 조건테스트 구성에 설치되었습니다.

또한 서버 측에서만 총계와 요청을 계산할 수 있습니다. 따라서 합계를 업데이트하는 절차가 매우 자주 수행될 수 있으므로 서버에 진지하게 접근해야 합니다. 분당 최대 5개의 영수증, 시간당 최대 300개의 영수증을 입력할 수 있는 무역 조직의 금전 등록기 영수증 저널을 상상해 보십시오. 문서가 작성될 때마다 합계가 업데이트됩니다. 따라서 상황 외 절차를 사용하여 전송되는 트래픽을 줄이는 것이 합리적입니다.

다음 스크린샷은 다음과 같습니다. 프로그램 코드총계를 반환하는 컨텍스트 외부 서버 함수를 호출합니다.

첫 번째 매개변수는 동적 목록 선택을 전달하고, 두 번째 매개변수는 "SelectionFieldNameSelectionFieldValueType" 유형의 구조입니다. 함수의 첫 번째 매개변수는 자체 값으로 얻어집니다. 이유를 정확히 말할 수는 없지만 선택 항목을 링크로 전달하면 플랫폼에서 선택 항목을 변경할 수 없다는 오류가 표시됩니다. 이 방법으로만 오류를 피할 수 있었습니다.->

참고: 상황에 맞는 서버 프로시저("&OnServer" 지시문)와는 달리 양식 데이터가 서버로 전송되지 않기 때문에 상황 외 프로시저를 사용하면 전송되는 트래픽의 크기를 여러 배로 줄일 수 있습니다.

결론

결론적으로 동적 목록의 합계를 계산하는 이러한 접근 방식은 개발 방법론의 관점에서 올바르지 않다고 말씀드리겠습니다. 총계를 레지스터로 구하는 것이 정확할 것입니다. 예를 들어, 수표 일지에서도 문서나 해당 누적 기록부에서 현재 금전 등록기의 금액을 얻을 수 있습니다.

또한 누적 레지스터를 사용하면 선택을 고려하지 않고 총계를 계산할 수 있습니다. 시스템이 이전 달에 대해 이미 계산된 총계를 사용하여 최적으로 작동하기 때문입니다.

그럼에도 불구하고 기사에 설명된 방법은 문제를 해결할 때 발생합니다.

다운로드할 파일:

드디어 모든 7세 어린이의 꿈이 이루어졌습니다. 프로그램 7.7 사용자는 얼마나 자주 항목의 정상적인 선택을 요청했습니까? 잔액, 가격을 확인하고 필터를 설정할 수 있습니다. 우리는 외부 구성 요소 작성을 포함하여 다양한 트릭을 생각해내야 했습니다. 1C 8.2에서는 동적 목록이 나타났습니다. 나는 그것이 무엇이며 1C 8.3에서 우리에게 무엇을 줄 수 있는지 고려할 것을 제안합니다.

몇 가지를 기초로 삼자 테스트 구성 1C: "엔터프라이즈 회계 3.0". 지금은 선택하지 않고 "Nomenclature" 디렉토리에 다른 선택 양식을 추가하고 임시로 기본 항목으로 만듭니다.

생성되면 시스템은 기본적으로 "동적 목록" 유형의 테이블 필드를 양식에 추가합니다.

해당 속성으로 이동하여 거기에 무엇이 있는지 살펴보겠습니다.

우선 'Custom request' 체크박스에 관심이 있습니다. 이는 동적 목록의 모든 장점을 보여줍니다. 매개변수를 사용하여 자체 요청을 작성할 기회가 있습니다. 확인란을 선택하고 "열기" 링크를 클릭하세요.

다음과 같은 창이 열립니다. 기성 코드에 . 현재로서는 "명명법" 디렉토리의 모든 필드가 여기에 나열되어 있습니다.

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

보시다시피 통화 버튼 " "과 목록의 내용을 동적으로 변경할 수 있는 확인란이 있습니다. 즉, 다른 사용자가 디렉토리에서 무언가를 변경하면 목록에서도 변경됩니다. 또한 "설정"탭이 있는데 이에 대해서는 나중에 다루겠습니다.

동적 목록의 사용자 정의 쿼리

먼저 잔액과 가격에 필요한 요청을 생성해 보겠습니다. 그렇게:

“설정” 탭

그리고 이제 가장 중요한 부분! "설정" 탭으로 이동합니다. 그리고 첫 번째 탭에서 요청의 모든 필드에 대해 원하는 항목을 선택할 수 있음을 즉시 알 수 있습니다.

동적 목록에서 프로그래밍 방식으로 쿼리 매개변수 설정 1C 8.3

요청에는 "기간"과 "가격 유형"이라는 두 가지 매개변수가 있다는 점을 잊지 마세요. 이를 요청에 전달해야 합니다. 그렇지 않으면 오류가 발생합니다.

양식 매개변수에 이러한 매개변수를 작성하고 양식 모듈에 다음 줄을 추가해 보겠습니다.

&OnServerProcedureWhenCreatingOnServer(실패, 표준처리) 목록. 옵션. SetParameterValue("기간" , 매개변수.날짜) ; 목록. 옵션. SetParameterValue("가격 유형", 매개변수.가격 유형) ; 절차 종료

인쇄(Ctrl+P)

동적 목록

1. 일반정보

동적 목록은 데이터베이스 테이블의 임의 정보를 양식에 표시할 수 있는 특수 데이터 유형입니다. 이렇게 하려면 데이터를 표시할 테이블을 지정하거나 쿼리 언어로 결과 선택을 설명해야 합니다.
메커니즘은 데이터 구성 시스템을 기반으로 하며 수신된 데이터를 정렬, 선택, 검색, 그룹화 및 조건부 형식 지정 기능을 제공합니다. 이 경우 데이터 소스는 시스템에서 자동으로 생성되거나(지정된 데이터를 기반으로) 개발자가 수동으로 작성한 요청입니다.

쌀. 1. 동적 목록 생성 옵션

유형의 양식 속성을 생성할 때 동적목록개발자는 데이터 쿼리를 구성하는 두 가지 방법을 선택할 수 있습니다.
● 메인 테이블 지정 - 이 경우 데이터를 수신할 테이블(메인 테이블 속성)만 지정하면 시스템이 자동으로 데이터에 대한 쿼리를 생성합니다(그림 2의 오른쪽 부분 참조). 1).
● 수동으로 요청 생성 - 이를 위해서는 사용자 정의 요청 속성을 설정해야 합니다(그림 1의 왼쪽 참조). 그 후에는 정보베이스에서 데이터를 얻기 위한 요청을 수동으로 생성할 수 있습니다.
쿼리는 여러 테이블에서 데이터를 검색할 수 있으므로 기본 테이블을 지정할 수 있습니다. 이는 동적 목록에서 어떤 데이터가 기본 데이터이고 어떤 데이터가 보조 데이터인지 판단하고, 정보를 올바르게 선택 및 표시하고 표준 명령을 제공할 수 있도록 하기 위한 것입니다. 다만, 쿼리에서 메인 테이블을 판별할 수 없는 경우에는 지정할 수 없으나,
동적 목록은 기본 테이블과 관련된 명령을 제공하지 않습니다. 또한 이 경우(메인 테이블을 지정하지 않고) 동적 목록으로 데이터를 얻는 효율성이 크게 감소합니다.
성능을 향상시키려면 데이터 작성 시스템 쿼리 언어 확장을 사용하여 추가 데이터를 얻기 위해서만 사용자 지정 쿼리에 사용되는 조인을 선택 사항으로 만드는 것이 좋습니다.
주요 폼 속성인 동적 목록의 경우 폼 매개변수를 이용하여 선택값 설정이 가능합니다. 선택. 이렇게 하려면 매개변수에 있는 구조 속성의 이름이 필요합니다. 선택,
동적 목록 선택 필드의 이름과 일치합니다. 이 경우 구조 속성의 값은 선택 요소의 올바른 값으로 설정됩니다. 배열, 고정 배열 또는 값 목록이 동적 목록 양식의 선택 매개변수 요소 값으로 전달되면 목록에 있음 옵션이 있는 조건이 선택 항목에 올바른 값으로 추가됩니다. 그 중 값 목록이 배치됩니다 (배열 및 고정 배열이 변환됨).
동적 목록의 임의 쿼리는 매개변수를 사용하여 필드 값을 생성하는 쿼리일 수 있습니다. 예를 들면 다음과 같습니다.

선택하다
선택
WHEN 배송.계수 = 1 THEN 프레젠테이션(&P)
그렇지 않으면 배달됩니다. 계수
END AS 비율
에서

또한, 매개변수 값의 유형이 객체 속성의 유형과 다른 경우(예: 소품1유형이 있음 숫자, 매개변수 값은 유형입니다. ), 필드를 올바르게 표시하려면 매개변수 값을 원하는 유형으로 명시적으로 캐스팅해야 합니다.

선택하다
선택
WHEN Delivery.Coefficient = 1 THEN EXPRESS(&Representation AS String(100)) ELSE 전달. 계수
END AS 비율
에서
문서.제품배송 배송방법

선택이 설정된 필드가 기능 옵션을 사용하여 비활성화된 경우 선택 값이 양식 매개변수 또는 선택 매개변수 링크로 전달되더라도 해당 필드에 의한 선택은 설치되지 않습니다.
동적 데이터 읽기 속성을 사용하면 데이터를 작은 부분으로 읽어야 함을 동적 목록에 나타냅니다.
(동적 목록 및 데이터 캐싱을 사용하여 데이터를 얻는 방법에 대한 자세한 내용은 아래를 참조하세요.) 이 속성에 관계없이 다음 조건이 적용됩니다.

● 계층적 목록 보기 모드를 설정한 경우 현재 그룹의 데이터만, 전체 그룹의 데이터는 상위 요소(하위 요소 없이).
● 트리 보기 모드가 설정된 경우 열려 있는 트리 노드의 데이터만 읽습니다.
● 계층적 탐색이 설정되고(표시 속성이 트리로 설정됨) 초기 트리 표시가 모든 수준 확장으로 설정된 경우 동적 목록 데이터의 일회성 로드가 지원되지 않습니다. 데이터를 얻으려면 표시된 목록에 있는 노드 수만큼 서버에 요청해야 합니다.
단일 데이터 검색 내에서 다음 조건이 충족되면 동적 목록은 이전에 생성된 임시 테이블을 재사용합니다.
● 목록 일괄 쿼리는 기본 일괄 쿼리 이후에 쿼리가 없습니다.
● 임시 테이블과 그 안의 필드 구성은 이전 일괄 요청 실행과 동일합니다.

해당 작업에서 동적 목록은 메타데이터 개체 세부 정보의 다음 속성 값을 사용합니다.
● 형식,
● 편집 형식,
● 힌트,
● 음수 값을 강조 표시하는 기호,
● 마스크,
● 여러 줄 모드 표시,
● 고급 편집 표시,
● 비밀번호 모드.
데이터 구성 시스템의 선택 항목과 매개변수를 표시하고 편집할 때 해당 필드의 편집 형식이 사용됩니다.

2. 제한사항 및 특징

동적 목록에서 선택을 설정할 때 동적 목록의 표시 모드가 계층 목록 또는 트리인 경우 선택은 그룹에 영향을 주지 않는다는 점을 기억하십시오. "그룹"이란 ThisGroup 속성이 True로 설정된 특성 유형의 디렉토리 또는 계획의 요소를 의미합니다.
표준 세부사항 소유자, 상위, 날짜, 기간 및 ThisGroup에 동적 목록을 통해 자동으로 적용되는 자격이 적용됩니다.
표준 수단데이터 구성 시스템. 동적 목록을 통해 주요 필드에 자동으로 적용되는 선택은 데이터 구성 시스템의 표준 수단과 요청 텍스트에 조건을 직접 추가하여 적용할 수 있습니다. 안에메인 테이블의 필드로 이동합니다. 레이아웃 도구를 사용하여 선택 사항을 적용하면 중첩 쿼리와 가상 테이블의 매개 변수 모두에 적용할 수 있습니다.

동적 목록을 개발할 때 사용자 정의 쿼리를 사용하여 모든 동적 목록을 테스트하는 것이 좋습니다. 확인 프로세스 중에 목록 쿼리에 중첩 쿼리 또는 가상 테이블이 포함되어 있는지 확인해야 하며, 해당 필드에 표준 세부 정보의 별칭과 일치하는 별칭이 있는 필드 소유자, 상위, 날짜, 기간, ThisGroup 또는 키 필드를 사용할 수 있는지 확인해야 합니다. 선택하면 해당 필드는 닉네임과 일치하는 표준 세부 정보에 해당하는 유효한 필드입니다. 그렇지 않은 경우 일치하거나 일치하도록 요청을 변경해야 합니다.
별명이 달랐다.
요청을 수동으로 생성하도록 선택하면 요청에 몇 가지 제한 사항이 적용됩니다.
● 동적 목록 쿼리에서는 FIRST 문을 사용할 수 없습니다. 동적 목록의 레코드 수에 의해 제한된 선택을 사용해야 하는 경우 요청의 실제 콘텐츠가 하위 쿼리에 배치되고 레코드 수를 제한하는 방식으로 동적 목록 생성 요청을 재작업해야 합니다. 이 하위 쿼리에서 받았습니다. 하위 쿼리 대신 임시 테이블을 사용할 수도 있습니다.
● 선택, 정렬, 그룹화는 지원되지 않습니다.

  • 세부정보별 표 부분.
  • 필드를 봅니다.
  • 데이터 버전 필드.
  • 미리 정의된 데이터 이름 필드입니다.
  • 계정과목표 테이블 유형 필드입니다.
  • 누적 레지스터 테이블의 이동 필드 유형입니다.
  • 필드 유형특성 유형 계획 테이블의 값입니다.
  • 유형 필드 유형;
  • 문자열 유형의 필드(길이 무제한)
  • BinaryData 유형의 필드입니다.

● 하위 콘토 필드별 정렬 및 그룹화는 지원되지 않습니다.<НомерСубконто>및 ViewSubconto<НомерСубконто>회계 기록부의 테이블 이동하위 콘토.
● 다음을 포함하는 쿼리 언어 표현식인 필드별로 그룹화 집계 함수.
● 기본 테이블을 선택한 경우 동적 목록 쿼리에는 다음과 같은 제한 사항이 있습니다.

  • 조인은 지원되지 않습니다.
  • ORDER BY 섹션은 지원되지 않습니다. 기본 테이블 없이 쿼리를 사용하거나 동적 목록 설정을 통해 필요한 순서를 설정해야 합니다.

● 동적 목록이 계층적 목록이나 트리로 표시되는 경우 해당 항목의 상위 항목 중 하나 이상이 표시되지 않는 한 해당 항목은 동적 목록으로 표시되지 않습니다. 즉, 계층적 목록의 요소를 표시하려면 동적 목록은 목록 상단까지 해당 요소의 모든 부모도 표시해야 합니다. 이 경우 목록 상단은 다음 중 하나를 의미합니다.
동적 목록에 의해 표시되는 계층적 개체의 루트 요소 또는 동적 목록에 대한 양식 테이블 확장의 ParentTopLevel 속성으로 설정된 요소입니다.

다음 테이블을 동적 목록의 기본 테이블로 사용하는 것은 지원되지 않습니다.

● 각 테이블 레코드(객체 테이블에 대한 참조 및 레지스터 테이블에 대한 레코드 키)를 고유하게 식별하는 키가 없는 테이블입니다. 그러나 다음 테이블은 키가 없더라도 동적 목록의 기본 테이블로 설정할 수 있습니다.

● 회계 기록부의 하위 테이블;
● MovementsSubconto 테이블을 제외한 회계 등록부의 모든 가상 테이블;
● 상수 값 표(상수 표 포함)
● 테이블 외부 소스키 필드가 없는 데이터;
● 외부 데이터 소스의 큐브 테이블.
● 누적 레지스터 테이블:

  • 혁명 테이블;
  • 잔액 테이블;
  • 매출 및 잔액 테이블.

● 계산 레지스터 테이블:

  • 실제 유효기간 표;
  • 일정 데이터;
  • 기본적인 정보.

● 객체의 표 부분 표;
● 변경 등록 테이블(데이터 교환 메커니즘에 사용됨)
● 시퀀스 테이블;
● 변환 테이블(정기 결제 메커니즘에 사용됨).
● 외부 조인에서만 쿼리에 사용되는 테이블입니다.

즉, 쿼리 실행 결과 다음과 같은 경우 지정된 기본 테이블이 포함된 동적 목록이 올바르게 작동합니다.
데이터 소스로 지정하면 기본 테이블에서 얻은 행 수가 증가하지 않습니다(부과된 선택을 고려). 쿼리를 실행한 결과, 기본 테이블에서 쿼리를 통해 얻은 행 수가 증가하면 목록에 표시되는 테이블의 레코드 키 고유성을 위반하게 됩니다. 이 경우 기본 동적 목록 테이블의 사용을 비활성화해야 합니다.
동적 목록으로 작업할 때 목록에 표시된 세부정보에 대한 액세스 권한을 고려해야 합니다.
● 항상 사용 속성으로 표시되어 있지만 다음과 같은 동적 목록 열의 데이터입니다. 현재 사용자보기 권한이 없습니다. 해당 열의 데이터에 액세스(CurrentData 속성 및 RowData() 메서드 사용)
클라이언트 측에서는 불가능합니다.
● 현재 사용자에게 동적 목록의 키 필드에 대한 보기 권한이 없는 경우 해당 동적 목록에서 데이터를 검색하면 액세스 위반 오류가 발생합니다.
열거 목록을 표시하는 동적 목록의 경우 목록을 대화형으로 사용자 정의할 수 있는 옵션이 없습니다.
동적 목록의 열 구성과 설정은 선택 필드의 별칭을 사용하여 쿼리 필드와 연결됩니다. 선택 필드에 대한 쿼리에서 별칭이 명시적으로 지정되지 않고 필드가 시스템 필드인 경우 내장 언어의 영어 버전에 대한 필드 이름이 별칭으로 사용됩니다.
지정된 관계는 변경(또는 자동 별칭이 사용된 필드에 대한 별칭을 명시적으로 지정)할 때
동적 목록 데이터를 생성하는 쿼리 필드의 별칭, 동적 목록 속성 설정이 손실되고, 양식 요소에 표시된 세부 정보가 "손실"되고, 동적 목록 설정이 올바르지 않게 됩니다.
동적 목록의 데이터 소스가 기간별 선택을 설정할 수 있는 테이블(일반 또는 가상)인 경우 사용자가 이러한 동적 목록에서 표시 기간을 설정하면(날짜 간격 설정... 명령)
지정된 기간 경계는 선택 값 또는 가상 테이블 매개 변수로 설정됩니다. 언어 확장을 통해
데이터 구성 시스템에 대한 쿼리에서 가상 테이블 매개변수의 이름이 명시적으로 지정되었습니다.
이름. 데이터 표시 또는 처리 기간을 제어할 수 있는 테이블:
● 기간별로 선택할 수 있는 등록 테이블(메인 또는 가상)(계산 등록의 경우 - 등록 기간별)
● 문서, 비즈니스 프로세스 및 작업의 주요 테이블;
● 문서 저널의 주요 테이블;
● 주 서열 테이블, 서열 경계 테이블.
동적 목록 쿼리 매개변수는 배열 또는 값 목록일 수 있습니다. 그러나 매개변수가 값 목록인 경우 목록의 첫 번째 값만 선택 값으로 사용됩니다. 동적 목록이 매개변수가 있는 쿼리를 사용하는 경우 초기 설치매개변수 값은 OnCreationOnServer 핸들러에서 실행되어야 합니다.
동적 목록 데이터를 표시할 때 다음 사항에 유의하세요.
● 동적 목록의 속성을 프로그래밍 방식으로 변경할 때 목록과 연결된 명령 패널은 자동으로 다시 채워지지 않습니다.
이 동적 목록으로.
● 여러 필드가 하나의 셀에서 그룹화 모드를 사용하여 그룹으로 그룹화되고 그룹화된 필드에 확인란으로 표시되는 필드가 있는 경우 이 확인란은 항상 결과 셀의 첫 번째(왼쪽)에 표시됩니다. 텍스트).
동적 목록에서 표현식에 매개변수, 필드 또는 리터럴이 포함된 필드의 데이터 유형을 결정할 때 결과 유형은 필드 및 리터럴의 유형에 따라 결정됩니다. 매개변수 값 유형이 결과 데이터 유형에 포함되지 않으면 해당 값이 잘립니다.
예를 들어, 다음 예에서 필드는 숫자 유형입니다.

선택
거짓말일 때
그런 다음 5
그렇지 않으면
매개변수(&P)

Parameter 매개변수를 다른 유형의 값으로 설정하면 해당 필드의 동적 목록은 값 0(숫자 유형의 기본값)을 받게 됩니다.
이러한 상황에서 다른 유형의 매개변수를 선택해야 하는 경우 쿼리 언어 구성을 사용하는 것이 좋습니다. 표현하다. 예를 들어,
위의 예에서 100자 이하의 문자열을 매개변수에 전달해야 하는 경우 매개변수의 간단한 표시를 명시적 유형 캐스팅이 있는 표현식으로 바꿔야 합니다.

선택
거짓말일 때
그런 다음 5
그렇지 않으면
EXPRESS(&매개변수 AS 문자열(100))

동적 목록 요청의 임의 텍스트가 선택 필드의 표현식에 매개변수를 사용하는 경우 구문을 사용하여 매개변수 유형을 명시적으로 표시해야 합니다. 표현하다. 예를 들어, 대신 &명칭 AS 명명법사용
EXPRESS(&Nomenclature AS Directory.Nomenclature) AS 명명법. 그렇지 않으면 검색창을 통해 검색할 수 있습니다.
부정확하거나 오류가 발생합니다.

3. 동적 목록을 사용하여 데이터를 검색하고 캐싱하는 방법

표시할 데이터를 가져올 때 동적 목록은 다음 세 가지 방법 중 하나를 사용합니다.
1. 데이터베이스에서 읽기는 목록에 동시에 표시되는 행 수보다 약간 큰(20개 이상) 데이터 요소 수를 포함하는 청크로 수행됩니다. 데이터가 서버에 캐시되지 않습니다.
2. 데이터베이스 읽기는 1,000개 데이터 항목의 페이지 단위로 수행됩니다. 데이터가 서버에 캐시되고 있습니다. 계층적 데이터가 캐시됩니다. 각 상위 요소에 대해 2페이지 이하의 요소가 캐시됩니다. 동적 목록당 최대 20페이지의 항목이 캐시됩니다. 다음 테이블에 대한 동적 목록을 통해 캐싱이 활성화됩니다.
● 선택 기준;
● 기본 테이블과 MovementsSubconto 테이블을 제외한 회계 기록부의 모든 테이블.
● 메인 테이블을 제외한 모든 누적 레지스터 테이블;
● 메인 테이블을 제외한 정보 레지스터의 모든 테이블;
● 메인 테이블을 제외한 계산 레지스터의 모든 테이블;
● 수행자별 작업의 가상 테이블;
● 키가 없는 외부 소스 테이블;
● 외부 소스의 큐브.

3. 데이터베이스 읽기는 1,000개 요소의 페이지 단위로 수행됩니다. 첫 번째 부분은 1페이지와 같습니다. 각 후속 부분은 1페이지씩 늘어납니다(이전 샘플의 끝에 도달할 때). "시점"이 표시된 데이터의 끝으로 가까울수록 데이터베이스에서 읽혀지는 샘플의 크기가 커지고 결과적으로 표시된 모든 데이터와 동일해집니다. 데이터가 서버에 캐시되고 있습니다. 캐시 및 동적 목록의 최대 항목 수는 1,000,000개입니다.
동적 목록의 기본 테이블에서 선택한 내용과 동적 읽기 속성의 값에 따라 데이터를 읽는 하나 이상의 방법이 사용됩니다.

● 메인 테이블 속성의 값으로 다음 테이블 중 하나가 지정됩니다: 교환 계획, 디렉터리, 문서 목록, 문서 분개장, 특성 유형 계획, 계정과목표, 계산 유형 계획, 비즈니스 프로세스, 작업, 테이블 비즈니스 프로세스 포인트:



● 다음 테이블 중 하나가 메인 테이블 속성의 값으로 지정됩니다: 정보 레지스터의 메인 테이블, 누적 레지스터, 회계 레지스터, 계산 레지스터, 회계 레지스터 MovementsSubconto의 가상 테이블:

● 동적 읽기 속성:
● 설치됨: 방법 1이 사용됩니다(방법에 대한 설명은 위에 나와 있습니다).
● 재설정: 방법 2가 사용됩니다(방법에 대한 설명은 위에 나와 있음).

● 기본 테이블 속성에는 실행자별 선택 기준 테이블 또는 작업 테이블이 포함됩니다(수행자별 작업).
● 테이블 행을 식별하는 키: 링크.

● Main 테이블 속성은 정보 레지스터 SliceFirst 또는 SliceLast의 가상 테이블을 지정합니다.
● 테이블 행을 식별하는 키: RecordKey.
● 동적 읽기 속성은 적용할 수 없습니다.
● 방법 2가 사용됩니다(방법에 대한 설명은 위에 나와 있음).

● 기본 테이블 속성은 다음 중 하나로 설정됩니다. 가상 테이블위에 나열된 것 이외의 레지스터:

● 동적 읽기 속성은 적용할 수 없습니다.

● 기본 테이블 속성이 지정되지 않았으며 임의 쿼리가 사용되었습니다.
● 테이블 행을 식별하는 키: 숫자.
● 동적 읽기 속성은 적용할 수 없습니다.
● 방법 3이 사용됩니다(방법에 대한 설명은 위에 나와 있음).

표시를 위해 데이터는 첫 번째 데이터 읽기 방법(이 섹션 시작 부분에서 설명)의 부분 크기와 유사한 크기로 클라이언트에 전송됩니다.
동적 목록이 포함된 양식을 생성하면 표시되는 각 동적 목록에 대한 45개의 데이터 항목이 처음에 클라이언트에 전달됩니다(목록에 45개 이상의 항목이 있는 경우). 동적 목록에 45개 이상의 행이 표시되면 누락된 데이터 항목을 검색하기 위해 양식을 열 때 추가 서버 호출이 수행됩니다.

4. 동적 목록 설정

속성 목록 설정 - 열기 하이퍼링크를 클릭하면 동적 목록 표시를 설정하는 양식이 열립니다. 목록 설정은 데이터 구성 시스템의 유사한 작업과 동일한 방식으로 수행됩니다.


쌀. 2. 동적 목록의 조건부 스타일링

구성에서 동적 목록을 설정할 때 애플리케이션 개발자는 다음을 수행할 수 있습니다.
● 정렬하려는 필드를 설정합니다.
● 목록에서 데이터 선택을 설명합니다.
● 조건부 모양 설정을 지정합니다.
● 데이터를 그룹화하려는 필드를 설정합니다.
시스템에 설치된 기본 정렬이 만족스럽지 않은 경우 개발자에게 정렬을 설정하는 것이 좋습니다.

조언.정렬 필드를 잘못 선택하면(데이터 선택 및 그룹화도 포함) 동적 샘플링 효율성에 부정적인 영향을 미친다는 점을 기억해야 합니다.
애플리케이션 개발자의 관점에서 동적 목록 설정은 상호 연결된 여러 부분으로 구성됩니다. 동적 목록의 설정을 관리할 수 있는 주요 속성은 다음과 같습니다. 링커 설정. 이 개체에는 시스템이 실행될 때 동적 목록에 적용되는 최종 설정을 결정하는 세 가지 설정 집합이 포함되어 있습니다.
● 설정 – 구성자 모드에서 생성된 설정입니다. Order가 제공하는 동적 목록 속성 빠른 액세스동적 목록 설정 작성기의 Settings.Order 속성에 추가되므로 다음 구성은 동일합니다.
List.Order 및 List.SettingsLinker.Settings.Order;
● UserSettings – 1C:Enterprise 모드에서 사용자가 변경하는 설정입니다.
● 고정 설정 – 이 설정은 내장 언어에서 설정됩니다. 이 속성에는 해당 매개변수를 사용하여 양식으로 전송되는 선택 값도 포함되어 있습니다. 동적 목록 속성 선택, 옵션, 조건부 모양은 동적 목록 설정 작성기의 고정 설정에 대한 빠른 액세스를 제공합니다. 즉, 다음 호출은 동일합니다.
List.Settings Composer.FixedSettings.Selection 및 List.Selection.
동적 목록의 최종 설정을 생성할 때 다양한 설정 옵션이 다음과 같이 결합됩니다.
● 모든 유형의 설정이 완전히 맞춤으로 표시되면 결과 설정에 맞춤 설정이 포함됩니다.
(List.ComposerSettings.UserSettings). 또한 설정 요소가 사용할 수 없는 것으로 표시된 경우 이러한 설정은 List.Settings Composer 속성의 결과 설정에 배치됩니다. 설정.
● 모든 유형의 설정이 전체가 아닌 요소별로 사용자 정의로 표시되면 다음을 수행합니다.
● 사용자 정의로 표시된 항목은 List.SettingsComposer.CustomSettings 속성의 결과 설정에 포함됩니다.
● 사용할 수 없는 것으로 표시된 항목은 List.SettingsComposer.Settings 속성의 결과 설정에 포함됩니다.
● 고정 설정(List.SettingsComposer.FixedSettings)은 결과 설정에 "있는 그대로" 추가됩니다. 동시에 고정 및 사용자 설정에 동일한 이름의 설정이 포함되는 것은 허용되지 않습니다. 예를 들어 조건에 동일한 왼쪽 값이 있는 선택이 있습니다.

기능 옵션을 사용하여 비활성화된 설정이 동적 목록 설정에 있는 경우 해당 설정은 목록에서 제거됩니다. 사용 가능한 설정동적 목록 데이터를 검색할 때.
사용자가 사용할 수 있는 설정과 사용하지 않을 설정을 제어하는 ​​작업은 동적 목록 설정 창에서 수행됩니다.


쌀. 3. 사용자 설정에 포함 제어

창 하단에 있는 확인란(그림 3 참조)은 전체 설정 유형을 설정(일반 또는 빠른)에 배치하는 역할을 합니다. 이 기능은 선택, 정렬, 그룹화 및 조건화에 사용할 수 있습니다. 편집 모드에서 설정을 지정한 경우 빠른 선택, 동적 목록을 표시하는 양식 테이블의 사용자 정의 설정 그룹 속성에서 동적 목록의 빠른 사용자 정의 설정과 관련된 요소가 위치할 빈 양식 그룹을 지정해야 합니다. 그룹을 지정하지 않으면 빠른 사용자 설정이 양식에 표시되지 않습니다. 동적 목록 확장의 CreateCustomSettingsFormItems() 메서드를 사용하여 내장 언어를 사용하여 사용자 정의 설정 생성을 명시적으로 호출할 수도 있습니다.
사용자 설정에 특정 설정 항목을 넣을지 여부를 선택하는 것도 가능합니다. 이 기능은 선택 및 조건부 디자인 요소에 사용할 수 있습니다(그림 3 참조).

동적 목록을 열 때 특별한 설정을 로드해야 하는 경우 다음 두 가지 방법으로 수행할 수 있습니다.
● 동적 목록 양식 매개변수 UserSettings를 사용합니다. 이 매개변수에 포함된 데이터는 사용자의 동적 목록 설정에 배치됩니다.
● 동적 목록 양식 매개변수UserSettingsKey를 사용합니다. 양식을 열 때 이 매개변수를 지정하면 지정된 키와 함께 설정 저장소에 있는 사용자 설정이 양식의 주요 속성인 동적 목록에 로드됩니다.

5. 동적 목록에서 검색

양식에 있는 동적 목록은 표시된 데이터를 대화형으로 검색하는 기능을 제공합니다. 검색은 검색 창, 검색 대화 상자, 현재 값 검색, 검색 기록 사용 및 기간 설정(문서를 표시하는 동적 목록의 경우) 도구를 사용하여 수행할 수 있습니다. 검색 결과는 제한된 레코드 집합입니다.
동적 목록(사용 가능한 이 사용자에게) 검색 기준과 일치합니다.
동적 목록의 검색 기능을 제어하는 ​​세 가지 테이블 속성이 있습니다. 통제된 형태, 동적 목록 표시:
● 검색 문자열 위치 – 검색 문자열의 위치를 ​​결정합니다. 다음 값을 사용할 수 있습니다: 자동, 명령 모음, 없음, 위쪽, 아래쪽.


쌀. 4. 동적 목록에서 문자열 검색

이 속성의 값이 명령 패널로 설정된 경우 검색 문자열은 양식 명령 패널(동적 목록이 기본 양식 속성인 경우) 또는 동적 목록과 연결된 명령 패널에 표시됩니다. 명령 표시줄에 있는 검색 표시줄은 항상 명령 표시줄의 오른쪽 가장자리를 누르고 있습니다(검색 표시줄 오른쪽에 있는 버튼과 함께).
속성이 아니요로 설정된 경우 검색 문자열은 양식에 표시되지 않으며 입력을 시작할 때 검색 문자열대화가 열립니다.
속성이 Top으로 설정된 경우 검색 표시줄은 목록 명령 표시줄과 동적 목록을 표시하는 테이블 사이에 위치합니다. 속성이 Bottom으로 설정된 경우 검색 문자열은 동적 목록을 표시하는 테이블 바로 뒤에 배치됩니다.


● 호환성 모드 속성이 사용 안 함 또는 버전 8.3.4 이전으로 설정된 경우 값은 명령 패널입니다.
다음과 같이 검색 라인으로 이동합니다.
● Ctrl+F 키 조합을 눌러;
● 마우스;
● 동적 목록에서 입력을 시작할 때(동적 목록의 SearchOnTyping 속성 값 고려).
● 보기 상태 위치 - 보기 상태가 표시되는 위치, 즉 검색된 필드와 값을 설명합니다.
모든 분야에서 검색되었습니다. 다음 값을 사용할 수 있습니다: 자동, 없음, 상단, 하단


쌀. 5. 동적 목록에서 상태 검색

속성을 아니요로 설정하면 보기 상태가 양식에 표시되지 않습니다. 결과적으로 검색 취소 버튼의 사용 가능 여부만으로 검색이 완료되었는지 여부를 확인할 수 있습니다.
속성이 Top으로 설정된 경우 보기 상태는 목록 명령 모음과 동적 목록을 표시하는 테이블 사이에 위치합니다. 속성이 Bottom으로 설정된 경우 뷰 상태는 동적 목록을 표시하는 테이블 바로 뒤에 배치됩니다.
양식이 1C:Enterprise 버전 8.3.4 이하에서 생성된 경우 속성은 아니요로 설정됩니다. 양식이 1C:Enterprise 버전 8.3.5 이하에서 작성된 경우 속성은 자동으로 설정됩니다. 이 경우 부동산의 실제 가치는 다음과 같이 결정됩니다.
● 호환성 모드 속성이 버전 8.3.4 이하로 설정된 경우 – 값은 No입니다.
● 호환성 모드 속성이 사용 안 함 또는 버전 8.3.4 이전으로 설정된 경우 – 값 Top;
● 검색 제어 위치 – 검색 제어 버튼이 나타날 위치를 결정합니다. 버튼을 누르면 현재 값으로 찾기, 고급 검색, 검색 취소, 기간 설정(문서 및 저널 목록용) 및 검색 쿼리 기록(마지막 5개 쿼리) 명령 등의 정보가 포함된 메뉴가 열립니다. 속성은 자동, 없음, 명령 패널 값을 사용할 수 있습니다.


쌀. 6. 동적 목록에서 검색 관리

속성이 아니요로 설정된 경우 검색 컨트롤 버튼이 양식에 표시되지 않습니다. 그러나 명령은 추가 메뉴를 통해 사용할 수 있습니다. 명령 모음 속성 값은 동적 목록을 표시하는 테이블과 연결된 명령 모음에 단추를 배치합니다.
양식이 1C:Enterprise 버전 8.3.4 이하에서 생성된 경우 속성은 아니요로 설정됩니다. 양식이 1C:Enterprise 버전 8.3.5 이하에서 작성된 경우 속성은 자동으로 설정됩니다. 이 경우 부동산의 실제 가치는 다음과 같이 결정됩니다.
● 호환성 모드 속성이 버전 8.3.4 이하로 설정된 경우 – 값은 No입니다.
● 호환성 모드 속성이 사용 안 함 또는 버전 8.3.4 이전으로 설정된 경우 값은 명령 패널입니다.
양식에 명령 패널이 여러 개 있고 명령 소스가 관리되는 양식의 한 테이블(동적 목록 데이터 표시)인 경우 검색 줄과 검색 컨트롤 단추는 하나의 명령 패널에만 위치합니다.
● 또는 동적 목록 자체의 명령 모음에서(자동 완성이 활성화된 경우)
● 또는 나머지 명령 패널 중 하나에서.

동적 목록에서 검색을 사용하는 기능을 살펴보겠습니다.
● 검색을 편리하게 사용하려면(성능 측면 포함) 동적 목록의 기본 테이블로 사용할 수 있는 모든 구성 개체에 대해 전체 텍스트 검색을 활성화해야 합니다. 또한 전체 텍스트 검색에는 동적 목록에 표시될 수 있고 검색이 필요할 수 있는 구성 개체의 모든 세부 정보가 포함되어야 합니다.
개체가 전체 텍스트 검색에서 제외되면 해당 검색 메커니즘은 작동하지만 해당 검색 성능은 매우 낮습니다. 전체 텍스트 검색으로 인덱싱되지 않은 개체에 대해서는 검색을 사용하지 않는 것이 좋습니다.
● 애플리케이션 솔루션에는 다음이 있어야 합니다. 일상적인 작업, 전체 텍스트 검색 색인을 정기적으로 업데이트합니다.

● 동적 목록(및 구성 개체)의 모든 열에 대해 검색이 수행되지 않고 테이블에 표시된 열에 대해서만 검색이 수행됩니다.
● 임의 표현이 포함된 참조 유형 필드별 동적 목록 검색은 다음에 사용되는 필드에 의해 수행됩니다.
표현 형성(여기 참조). 뷰에 포함된 필드는 해당 객체의 ViewFieldGettingProcessing() 핸들러를 고려하여 가져옵니다.
● 지정된 기본 테이블이 있는 동적 목록의 경우 기본 테이블에서 전체 텍스트 검색이 사용됩니다. 기본 테이블의 색인화되지 않은 모든 링크는 전체 텍스트 검색 결과에 추가됩니다. 기본 테이블에 대한 전체 텍스트 검색 결과는 키 필드를 기반으로 한 선택 항목으로 사용됩니다. 전체 텍스트 검색은 다른 테이블의 목록에 표시된 필드에서도 수행됩니다(필드 및 구성 개체가 전체 텍스트 검색을 사용하는 경우). 전체 텍스트 검색을 활성화하지 않으면 데이터가
찾았지만 검색 자체가 매우 느릴 것입니다.
전체 텍스트 검색을 수행하는 중 오류가 발생하면 전체 텍스트 검색을 적용하지 않고 검색이 수행됩니다.
예를 들어, 한 글자와 많은 줄을 검색할 때 이런 일이 발생할 수 있습니다. 정보 베이스, 이 편지로 시작합니다.
● 동적 목록의 기본 테이블에 있는 필드에 대해 비교 유형이 같음 선택 항목을 사용하는 경우 전체 텍스트 검색을 수행하면 선택 값이 이 테이블에 대한 검색 쿼리에 추가됩니다.
● 검색 문자열은 단어로 분할됩니다. 이 분할은 다음 규칙에 따라 수행됩니다.
● 줄은 공백과 탭 문자를 구분 기호로 사용하여 구분됩니다.
● 그런 다음 각 결과 조각이 처리됩니다.
● 조각이 현재 세션 로케일을 기반으로 한 날짜 표현(시간 포함 또는 제외)인 경우 단어는 조각입니다.
● 그렇지 않으면 ",.-/\" 문자를 구분 기호로 사용하여 조각이 추가로 분할됩니다. 이 경우 문자열의 각 결과 조각은 단어로 간주됩니다.

● 각 단어에 대해 "OR"로 결합되는 자체 조건 집합이 형성됩니다. 이 조건 세트는 이 필드를 얻은 테이블에서 특정 단어에 대한 전체 텍스트 검색이 하나 이상의 개체를 반환했거나 이 필드에 대해 전체 텍스트 검색이 사용되지 않은 경우 생성됩니다. 조건은 다음과 같이 구성됩니다.
● 문자열 유형 필드의 경우 조건은 FieldName LIKE %Word%입니다.
● 숫자 유형 필드의 경우 조건 형식은 FieldName=Value입니다. 여기서 값은 숫자 유형으로 변환된 단어입니다. 캐스트를 수행할 수 없는 경우 필드 검색이 수행되지 않습니다.
● 단어는 현재 세션에 대해 정의된 기본 부울 표현의 하위 문자열로 조회됩니다. 검색어가 뷰에서 발견되면 해당 단어가 발견된 뷰에 해당하는 값을 검색합니다. 이 경우 검색에서는 형식 양식 요소 특성을 사용하여 지정된 보기를 사용하지 않습니다.
● 날짜 유형 필드의 경우 조건은 FieldName>=StartofDay(Word) ANDFieldName과 같습니다.<=КонецДня(Слово). Если Слово подобно дате, в которой год
한 자리 또는 두 자리로 표시되면 연도는 현재 세기로 감소되고 이 값이 검색 조건에 추가됩니다.
● 참조 필드의 경우 참조 보기를 형성하는 데 사용된 필드에 대한 검색이 수행됩니다. 각 필드에서 검색
위에서 설명한 규칙에 따라 수행됩니다. 검색에서는 사용자 정의 데이터 표현을 구성하는 데 사용되는 필드를 사용하지 않습니다.
각 단어에 대한 조건 세트는 "AND"로 결합됩니다.
● 앞에 0이 있는 값의 경우 앞에 0이 있는 문자열이나 앞에 0이 없이 지정된 문자열을 검색할 수 있습니다.
● 동적 목록에 문서 목록이나 문서 내역이 표시되는 경우 원하는 동적 목록의 보기 상태를 표시하기 위해 예약된 양식 영역에 지정한 목록 보기 간격도 표시됩니다.
● 동적 목록의 메인 테이블이 선택 기준인 경우에는 현재값 검색 명령을 사용할 수 없습니다.
● 발견된 문자열 조각은 테이블에 표시될 때 강조 표시됩니다.
● 하나의 열에는 하나의 검색 문자열만 지원됩니다. 이미 검색 중인 열에 새 검색어를 추가하면 두 개의 검색어가 함께 추가되는 것이 아니라 검색식이 대체됩니다.
● 양식에 동적 목록을 표시하는 테이블(양식 요소 추가 소스 속성)과 연결된 검색 문자열 표시의 양식 요소 추가가 없는 경우 Ctrl+F 키 조합을 누르면 검색 대화 상자가 열립니다.


쌀. 7. 검색 대화상자

양식에 동적 목록을 표시하는 테이블(양식 요소 추가 소스 속성)과 연결된 양식 검색 문자열 표시의 양식 요소 추가가 포함된 경우 검색 대화 상자를 열려면 고급 검색 명령을 사용해야 합니다.
● 검색 대화 상자를 사용할 때 다음 사항에 유의하십시오.
● 키보드 단축키를 사용하여 검색 대화 상자를 열면 현재 셀의 값이 검색 대상 줄에 표시되고 검색 방법 스위치의 값은 정확히 일치 기준으로 설정됩니다.

● 동적 목록에서 검색 문자열을 직접 입력하기 시작하여 검색 대화 상자를 열면 검색 방법 스위치의 값이 문자열의 일부에 따라 값으로 설정되고 입력된 텍스트가 What 필드를 검색합니다.

6. 동적 목록으로 표시되는 데이터 가져오기

동적 목록을 사용할 때 적용된 선택 및 검색을 고려하여 현재 동적 목록에 표시된 데이터에 대해 다양한 작업을 수행해야 할 수도 있습니다. 이러한 작업에는 표시된 정보 처리(예: 선택한 문서 재전송 또는 선택한 개체에 대한 일부 세부 정보 설정), 사용 가능한 개체 목록 생성(디자인 등 포함)(예: 인쇄 또는 스프레드시트 문서에 저장)이 포함됩니다.
동적 목록으로 표시되는 데이터를 얻으려면 GetExecutableDataCompositionSchema() 및
GetExecutableDataCompositionSettings().
데이터 수신 예:

스키마 = Elements.List.GetExecutableDataCompositionSchema();
설정 = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(구성표, 설정);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = 새 OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

데이터를 값 컬렉션(테이블 또는 값 목록)으로 가져오는 것도 동일한 방식으로 수행됩니다.
이러한 방식으로 동적 목록 데이터를 얻으려면 애플리케이션 솔루션을 개발할 때 고려해야 할 여러 가지 기능이 있습니다.
● 다음 테이블 디자인은 지원되지 않습니다.
● 대체 선 색상;
● 헤더 사진;
● 지하실 사진;
● 바닥글 배경색;
● 바닥글 텍스트 색상;
● 바닥글 글꼴;
● 지하실의 수평 위치;
● 비밀번호 모드.
● 관리되는 양식에 지정된 조건부 모양은 지원되지 않습니다.
● 링크 유형 필드를 기준으로 계층 테이블을 오름차순으로 정렬할 때 빈 링크가 포함된 레코드가 항상 먼저 배치됩니다.

모든 프로그래밍 언어에서 찾을 수 있는 기본 데이터 유형 외에도 1C에는 고유한 유형이 있습니다. 각각에는 시스템에서 고유한 속성, 방법, 기능, 목적 및 사용 뉘앙스가 있습니다. 이러한 유형 중 하나는 많은 적용 작업을 크게 촉진하는 동적 목록입니다. 그렇기 때문에 개발자는 이 범용 도구를 알고 처리할 수 있어야 합니다.

1C의 동적 목록 기능

이 유형의 목적은 유형에 관계없이 모든 데이터베이스 테이블의 정보를 표시하는 것입니다. 이 메커니즘은 SKD를 기반으로 만들어졌으며 유사한 기능을 가지고 있습니다. 그러나 이것이 기회가 존재하고 사용해야 함에도 불구하고 반드시 1C 언어로 요청을 작성해야 함을 의미하지는 않습니다. 관심 있는 정보가 있는 테이블을 간단히 지정하면 1C가 독립적으로 간단한 쿼리를 생성합니다.

동적 목록이 어떻게 구성되고 어떤 데이터가 표시되는지 확인하려면 구성 도구에 있는 관리되는 양식을 열어야 합니다. 세부 정보 목록에서 상황에 맞는 메뉴를 사용하여 해당 속성을 열고 "사용자 정의"에 주의하세요. 요청”항목입니다. 확인란이 없으면 "기본 테이블" 매개변수는 데이터를 가져온 데이터베이스 테이블을 반영합니다. 그렇지 않은 경우 동적 목록은 목록 설정을 열어 볼 수 있는 사용자 지정 쿼리의 데이터를 반영합니다.

사용자 정의 쿼리 구성표는 다양한 데이터를 결합하고 표시할 수 있는 훌륭한 기회를 제공하므로 훨씬 더 일반적으로 사용됩니다. 대부분 이 메커니즘은 창고 잔액, 품목 가격, 영수증, 비용 또는 구매를 반영하는 데 사용됩니다. 복잡한 쿼리의 경우 성능이 저하될 수 있으므로 주의해서 사용해야 합니다.

"목록 설정" 비문을 클릭하면 동적 목록의 또 다른 유용한 속성이 열립니다. 이 메뉴를 사용하면 표준 필드 집합을 사용하는 경우에도 최종 사용자가 정보에 더 쉽게 접근하고 이해할 수 있도록 할 수 있습니다. 요청이 임의적인지 여부에 관계없이 다음을 지정할 수 있는 "설정" 탭이 표시됩니다.

  • 동적 목록 선택;
  • 여러 떼;
  • 정렬;
  • 장식.

매개변수를 사용하면 동적 목록이 보편적이고 매우 유연해집니다. 또한 관리되는 양식의 세부정보에 연결할 수도 있으며, 데이터는 사용자가 선택한 매개변수에 따라 변경됩니다. 이러한 메커니즘의 사용은 실제 문제의 예를 고려하여 이해하고 평가할 수 있습니다.

예를 들어, 명명법의 잔해를 통제된 형식에 반영하는 작업을 생각해 보세요. 실제로 이러한 순서는 다양한 구성에서 자주 발생하며 동적 목록은 도구로 이상적입니다. 이 작업을 위해서는 사용자 정의 쿼리, 동적 목록 매개변수 및 해당 설정을 사용해야 합니다.

더 명확하게 하기 위해 별도의 외부 처리를 만들고 여기에 동적 목록을 배치해 보겠습니다. 계획을 구현하려면 명명법이 포함된 테이블로는 충분하지 않으므로 임의의 쿼리를 허용해야 합니다. 여기서는 항목 목록 및 잔액 등록과 디렉토리의 왼쪽 연결을 설명하고 디렉토리를 기본 테이블로 설정합니다. 이 구성표를 사용하면 동적 목록으로 작업하는 사용자가 항목을 추가하거나 변경할 수 있습니다.



SELECT NomenclatureList.Name AS 이름, GoodsInWarehousesRemainings.Warehouse AS 창고, GoodsInWarehousesRemainings.QuantityRemaining AS QuantityRemaining FROM Directory.Nomenclature AS NomenclatureList LEFT CONNECTION RegisterAccumulations.GoodsInWarehouses.Remainings(&CurrentDate,) AS GoodsOnUS 보물Remaining 소프트웨어 NomenclatureList.Link = ProductsInWarehousesRe 메인링.명칭은 어디에 있나요?

요청이 "CurrentDate" 매개변수를 사용했기 때문에 처리를 사용하기 전에 해당 값을 설정해야 합니다. 이렇게 하려면 "When CreatedOnServer" 절차의 양식 모듈에서 표준 명령을 사용하여 "CurrentSessionDate" 함수를 할당합니다. 또한 명확성을 위해 컨트롤 폼에 동적 목록을 표시하고 필드 순서를 변경해야 합니다. "남은 명명법" 속성을 양식 요소(왼쪽 위 부분)로 끌고 파란색 화살표를 사용하여 양식 테이블의 필드 순서를 변경합니다.

서버에서 생성될 때 서버 프로시저에서 &On(실패, 표준 처리) 명명법은 그대로 유지됩니다. 매개변수 설정 Set ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


이미 이 단계에서 1C에서 외부 처리를 열고 동적 목록이 작동하는지 확인할 수 있습니다. 잔액을 확인하고, 항목과 그룹을 생성하고, 검색할 수 있습니다. 고객은 잔액을 확인할 날짜를 선택하는 기능을 추가해 달라고 요청하는 경우가 많습니다. 동적 목록이 있는 양식의 경우 이는 추가 필드와 이를 사용한 매개변수 설정을 통해 달성됩니다.

"Date" 유형의 "DateRemaining" 속성을 추가하고 이를 양식 요소에 전달합니다. 필드 이벤트에서는 “OnChange” 이벤트를 생성하고 동적 요청에 사용되는 “CurrentDate” 매개변수를 설정하기 위한 코드를 작성합니다. 양식을 열 때 사용자가 잔액을 본 날짜를 즉시 이해할 수 있도록 "When CreatedOnServer" 절차를 약간 변경합니다.



&OnServerProcedureWhenCreatingOnServer(Failure, StandardProcessing)RemainingDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue("CurrentDate", RemainingDate); 프로시저 종료 클라이언트 프로시저에서 &남은 DateWhenChanged(Element)명칭 Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); 절차 종료

결과적으로 동적 목록 양식은 모든 날짜의 잔액을 반영할 수 있습니다.

우리는 이 툴킷의 기능 중 작은 부분만을 고려했지만, 이는 이미 이러한 유형의 동적 목록의 편리함을 이해하기에 충분합니다. 유사한 메커니즘이 많은 작업에 사용되지만 관리되는 양식의 일반적인 구성에서 가장 자주 발견됩니다.

  1. 선택;
  2. 기울기.

동적 목록과 해당 요청을 표준 관리 양식으로 받으려면 개발자가 구성자에서 원하는 양식을 열어야 합니다. 세부 정보 섹션에서 "DynamicList" 데이터 유형의 세부 정보를 찾습니다(대부분 굵게 강조 표시됨). 해당 속성에는 요청 텍스트, 선택 항목 및 기타 설정이 포함됩니다.