이 소식을 먼저 읽으신 분들이 있습니다.
최신 기사를 받으려면 구독하십시오.
이메일
이름
종을 어떻게 읽고 싶습니까?
스팸 없음

새 검색 기능은 두 가지 메커니즘을 기반으로 합니다.
- 전체 텍스트 검색(매우 빠르게 작동하며 최소한의 컴퓨팅 리소스 필요)
- DBMS에 의한 검색(일반적인 경우 검색시간 및 전산자원의 비용은 표의 정보량에 비례함)

현재 구현에서는 목록이 검색됩니다. 사용하지 않고다음과 같은 경우 전체 텍스트 검색():
- infobase 수준에서 전체 텍스트 색인이 비활성화됩니다.
- 기본 테이블의 개체는 전체 텍스트 인덱스로 인덱싱되지 않습니다.
- 전체 텍스트 검색을 사용한 검색 결과 오류가 발생했습니다.

정보 베이스에서 전체 텍스트 검색이 활성화되고 색인이 전혀 또는 부분적으로 업데이트되지 않는 경우(고객 정보 베이스의 95%에 대한 내 관행에 따름) 검색 중에 사용자는 신뢰할 수 없거나 비어 있는 검색 결과를 받게 됩니다. .

우리는 회사 1C에 묻습니다-어떻게 될까요? 검색 결과가 항상 유효한지 확인하는 방법은 무엇입니까?
답을 얻습니다. 예, 전체 텍스트 검색이 활성화되었을 때 검색 결과를 최신 상태로 유지하려면 전체 텍스트 검색 색인이 최신 상태인지 확인해야 합니다. 최신 검색 아직 ().

그리고 일반적으로 "실제 전체 텍스트 인덱스"가 있는지 여부? 사용자 수, 데이터베이스의 정보 변경 강도 및 인덱스 업데이트 빈도에 따라 다릅니다. 일반적으로 인덱스 업데이트는 60초마다 실행됩니다. 많은 개체가 변경되지 않았다면 프로시저는 이 60초 안에 모든 변경 사항을 처리할 수 있었습니다. 문서 그룹을 다시 게시하거나 디렉토리를 대량으로 다시 작성했다면? 이 경우 아무도 인덱스 검색이 다시 신뢰할 수 있는 데이터를 제공할 시간을 보장할 수 없습니다.
원칙적으로 이것은 몇 가지 상황을 제외하고는 특별히 중요하지 않습니다. 사용자가 작업하는 일반적인 옵션은 "상대방"과 같은 일부 값으로 목록에서 선택 항목을 설정하거나 새 값을 입력하거나 기존 문서를 복사하여 기록하는 것입니다. 이전 검색에서는 새 문서가 목록에 즉시 표시되었습니다. 이제 사용자는 기껏해야 N초 후에만 이를 볼 수 있습니다. 여기서 N은 2-3초가 아니라 50-60초에 가깝습니다.
새 문서가 없다는 것을 알지 못하고 선택한 결과를 기반으로 다른 사람에게 정보를 제공하면 분명히 신뢰할 수 없습니다.

이것은 정보베이스를 사용한 정상적인 작업의 경우였습니다. 특정 상황에서는 어떻게 됩니까? 몇 가지 예를 들겠습니다.
1) 작업 데이터베이스에서 전체 텍스트 인덱스가 활성화되고 자주 업데이트됩니다. 사용자는 데이터를 분석할 수 있도록 작업 데이터베이스의 복사본을 자신에게 배포하도록 요청합니다.
백업을 복원하고 액세스 권한을 부여합니다. 그러나 전체 텍스트 검색은 작동하지 않습니다. 인덱스는 DBMS에 저장되지 않고 별도의 파일(파일 및 클라이언트-서버 버전 모두)에 저장됩니다. 색인이 dt 파일에 없습니다.
저것들. 사용자가 목록 검색을 사용하려면 이 데이터베이스의 전체 텍스트 인덱스를 꺼야 합니다. 사실, 사용자는 검색이 훨씬 더 오래 걸린다는 사실에 약간 놀랄 것입니다. 또는 전체 데이터베이스에서 색인을 다시 작성하십시오.

2) (다소 큰 기지에 대한 실제). 프로덕션 데이터베이스에서는 전체 텍스트 인덱스가 활성화되고 자주 업데이트됩니다. 월말이 다가오고 기간 마감이 시작됩니다. 문서를 대량으로 로드하고 전송하기 시작했습니다. 시스템의 부하를 줄이기 위해 예약된 작업의 실행을 각각 차단하고 인덱스 업데이트를 중지합니다. 사용자는 가볍게 말해서 당황할 것입니다. 목록에 새롭거나 변경된 문서가 없는 이유는 무엇입니까? 유일한 방법은 정보베이스에 대한 전체 텍스트 검색을 비활성화하고 그에 따라 모든 세부 사항에 대한 과도한 검색으로 인해 장비에 더 많은 부하를 가하는 것입니다.

따라서 인덱스 업데이트 작업은 Infobase 관리자에게 또 다른 골칫거리가 될 것 같습니다.
이전에는 언제든지 정보의 정확성과 관련성을 100% 보장했던 시스템이 이제 완전히 확신할 수 없는 참조 시스템으로 변모하고 있습니다.
그리고 사용자는 IT 직원을 비난하는 또 다른 이유를 얻습니다. "시스템이 제대로 작동하지 않습니다."

8.3 플랫폼에서 전체 텍스트 검색은 개발자들이 오래 전에(8.3.5 플랫폼 이후) 발표했음에도 불구하고 표준 구성에서 적극적으로 사용되지 않았습니다. Enterprise Accounting 3.0의 최근 릴리스에서 개발자는 많은 목록에 전체 텍스트 검색을 포함했습니다. 내 사용자에게 이것은 충격으로 판명되었습니다. 프로그램이 검색을 중지했습니다.

물론 전체 텍스트 검색은 작동하지만 "찾기" 창이 보이지 않는 사용자는 혼란스러워합니다. 일반적인 사용 시나리오: 키보드에서 입력을 시작하면 입력하는 동안 검색할 필드, 검색할 텍스트 및 검색 모드 "문자열의 일부"를 나타내는 "찾기" 창이 나타납니다.

Enter 버튼을 누르면 목록이 필터링되고 목록 위에 검색 상태 표시줄이 나타납니다. 사용자 자신이 원하는 분야와 대상을 결정합니다. 새 검색은 입력하는 즉시 작동하기 시작하며 목록에 표시된 모든 필드에 영향을 미칩니다. 별도의 창이 나타나지 않고 일치하는 모든 검색어가 색상으로 강조 표시됩니다.

며칠 동안 우리는 새로운 검색으로 살았습니다. 사용자는 고통받고, 불평하고, 파괴당했습니다. 불만은 멈추지 않았고 경영진은 "모든 것을 그대로 만드는 것"이라는 임무를 받았습니다.

어디서부터 시작해야 할까요? 양식이 서로 어떻게 다른지 이해해야 합니다. 새로운 검색 동작과 이전 검색 동작이 포함된 구성 소스 코드를 다운로드하고 양식의 소스 코드를 비교했습니다.

"검색 문자열" 유형의 양식 요소 추가는 새로운 전체 텍스트 검색 기능을 담당합니다. 무엇을 찾아야 하는지 명확해졌습니다. ITS 7.3.1.5에서 기사를 찾았습니다. 동적 목록에서 검색합니다. 이 기사를 검토한 결과 검색이 작동하는 새로운 방식이 두 가지 요소에 따라 달라진다는 결론에 도달했습니다. 1. 양식에 위의 양식 요소 완성이 있어야 합니다. 2. 양식의 동적 목록에 다음과 같지 않은 "SearchStringPosition" 속성이 있어야 합니다. "없음".

이론적으로 서버에서 양식을 만들 때 "SearchString Position" 목록 속성을 "SearchString Position.No"로 설정하면 충분하지만 모든 양식에서 작동하지 않았으며 경우에 따라 새 검색이 계속 작동했습니다. 프로그래밍 방식으로 생성되지 않은 양식 요소를 프로그래밍 방식으로 삭제할 수는 없지만 가시성은 제어할 수 있습니다. 양식 요소 "AdditionSearchString"이 가시성에서 제거되면 전체 텍스트 새 검색도 작동하지 않습니다. 실험 중에 다음 코드가 생성되었으며, 이를 일반 모듈에 배치했습니다.

절차 비활성화 NewSearchInLists(Form) 목록 내보내기 = Form.Items.Find("목록"); 목록 = 정의되지 않은 경우 반환; EndIf; List.SearchStringPosition = SearchStringPosition.None; AdditionSearchString = Form.Elements.Find("AdditionSearchString"); If NOT ComplementSearchString = Undefined Then ComplementSearchString.Visibility = False; EndIf; 종료 절차

"목록에서 새 검색 비활성화" 절차에서 수정된 양식을 전달해야 합니다. 그러나 어떻게 모든 양식에 대해 한 번에 수행할 수 있습니까?

첫 번째 솔루션은 양식 편집기를 사용하여 구성자에서 필요한 양식을 수동으로 수정하는 것입니다. 나는 즉시이 결정을 거부했습니다. 길고 지루하며 나중에 구성을 업데이트하기가 어렵습니다.

두 번째 해결 방법은 양식을 열 때 프로그래밍 방식으로 새 검색을 비활성화하는 프로시저를 호출하는 것입니다. 이 절차는 모든 형식으로 이미 등록된 다른 절차에서 호출할 수 있습니다. 이 경우 추가 업데이트를 통해 이 절차를 모니터링하기만 하면 변경되지 않습니다. 저는 다음과 같은 GeneralModule.ManagePrint를 선택했습니다.

OnCreateOnServer(Form,DefaultCommandPlace,PrintObjects) 내보내기

이 절차는 인쇄 명령을 입력하기 위해 서버에 양식을 만들 때 호출됩니다. 이 절차에서는 목록에서 새 검색을 비활성화하는 함수를 호출하는 코드를 작성합니다.

MyGeneralModule.Disabling NewSearchInLists(Form);

회계사는 이전 검색을 즐기고 있으며 Enterprise Accounting 3.0의 호환성 모드를 통해 이 기능을 확장에 포팅할 수 있는 시기를 준비하고 있습니다.

지금까지 8.1 버전부터 1C:Enterprise 플랫폼에 전체 텍스트 검색이라는 훌륭하고 매우 유용한 메커니즘이 있다는 사실을 아는 사람은 거의 없습니다. 이게 뭐야? 그것이 어떻게 당신에게 유용할 수 있습니까? 이 질문은 V.V.의 기사에서 답변됩니다. 낚시, 회사 "1C".

먼저 어떤 종류의 메커니즘인지에 대한 몇 마디. 간단한 용어로 전체 텍스트 검색을 사용하면 사용된 구성의 거의 모든 위치에 있는 텍스트 정보를 찾을 수 있습니다. 동시에 전체 구성에서 필요한 데이터를 검색하거나 검색 영역을 몇 가지 개체(예: 특정 유형의 문서 또는 디렉터리)로 좁혀 필요한 데이터를 검색할 수 있습니다. 검색 기준 자체는 상당히 광범위하게 다를 수 있습니다. 즉, 구성에 저장된 위치와 기록 방법을 정확히 기억하지 않고도 필요한 데이터를 찾을 수 있습니다.

전체 텍스트 검색은 다음과 같은 기능을 제공합니다.

  1. 음역 지원이 있습니다(GOST 7.79-2000에 따라 라틴 문자로 러시아어 단어 쓰기). 예: "러시아어 문구" = "러시아어 fraza".
  2. 대체 지원이 있습니다(단일 키 라틴 문자를 사용하여 러시아어 단어로 일부 문자 쓰기). 예: "russrfz frapf"(예를 들어 운영자 오류의 결과로 각 단어의 끝이 라틴어로 입력됨).
  3. 퍼지 임계값 표시와 함께 퍼지 검색(발견된 단어의 문자가 다를 수 있음) 가능성이 있습니다. 예: 검색 문자열에 "hello"라는 단어를 지정하고 17%의 퍼지도를 지정하면 "hello", "hello", "bring"과 같이 오류가 있거나 없는 유사한 단어를 모두 찾습니다.
  4. 선택한 메타데이터 개체에 대한 검색 범위를 지정할 수 있습니다.
  5. 표준 필드 이름("코드", "설명" 등)의 전체 텍스트 인덱싱은 모든 구성 언어에서 수행됩니다.
  6. 검색은 러시아어, 영어 및 우크라이나어의 동의어를 고려하여 수행됩니다.
  7. 러시아어의 형태 사전에는 1C:Enterprise 프로그램 시스템을 사용하여 자동화된 활동 영역과 관련된 여러 특정 단어가 포함되어 있습니다.
  8. 기본적으로 제공된 사전에는 사전 데이터베이스와 시소러스 사전 및 러시아어, 우크라이나어 및 동의어 사전이 포함되어 있습니다. 영어인포매틱 제공.
  9. 와일드카드 문자("*")를 사용하고 검색 연산자("AND", "OR", "NOT", "NEAR") 및 특수 문자를 지정하여 검색할 수 있습니다.

전체 텍스트 검색은 1C:Enterprise 8.1 플랫폼의 모든 구성에서 수행할 수 있습니다.

이는 버전 8.0에서 변환된 구성에도 적용됩니다. 전체 텍스트 검색 기능을 활성화하려면 구성의 "작업" 메뉴로 이동하여 "전체 텍스트 검색 관리" 항목을 선택한 다음 이 기능을 활성화하십시오(그림 1 참조).

쌀. 하나

8.1 플랫폼에서 일반적인 구성을 사용하는 경우 이미 "데이터 검색" 처리가 내장되어 있을 가능성이 큽니다("도구" / "데이터 검색" 메뉴). 이러한 처리가 사용된 구성에 없는 경우 문제가 되지 않습니다.

항상 ITS 디스크에서 찾을 수 있습니다. 이 기사에서는 데모 구성 "Enterprise Accounting"(rev. 1.6)에서 이 특정 처리 작업의 예를 사용하여 전체 텍스트 검색 기능을 시연합니다.

이미 언급한 바와 같이 검색 연산자와 정확한 구를 사용하여 여러 단어로 검색을 수행할 수 있습니다. 또한 검색 위치는 특정 구성 개체(예: 생산 서비스법 문서) 또는 구성 개체 목록/세트로 제한될 수 있습니다.

데이터를 검색할 때 테이블에 지정된 검색 문자열에 검색 연산자를 사용할 수 있습니다(모든 연산자는 대문자로만 지정하고 따옴표 없이 지정해야 함).

테이블


명심하십시오: 연산자가 지정되지 않은 경우(단어는 공백과 함께 입력됨) 프로그램은 "AND" 연산자를 사용하여 쿼리에서 모든 단어를 검색합니다.

쌀. 도 2는 간단한 단어 부분 검색의 예를 보여준다. "hope *"를 입력하면 다음 링크가 표시됩니다. 개인, "신뢰할 수있는 클라이언트"라는 문구가 나오는 주석에서 문서뿐만 아니라.


쌀. 2

쌀. 3은 검색 문자열에서 "OR" 구성을 사용하고 "Nomenclature" 디렉토리 및 문서 "상품 및 서비스 수령", "상품 및 서비스 판매"에서 검색 영역을 제한하는 보다 복잡한 검색의 예를 보여줍니다. 검색 결과 이름에 "찻주전자" 또는 "BINATONE"이라는 단어가 포함된 전체 명명법과 모든 관련 명명법이 포함된 이러한 유형의 모든 문서가 반영되었음을 분명히 알 수 있습니다.


모든 회계사가 이것에 대해 아는 것은 아닙니다. 유용한 도구 1C: 회계 8, 전체 텍스트 검색. 전체 텍스트 검색 메커니즘을 사용하면 구성의 모든 위치에서 텍스트 정보를 찾을 수 있습니다.

전체 텍스트 검색은 "도구" 메뉴에 있는 "데이터 검색" 처리를 사용하여 수행됩니다.

전체 텍스트 검색 메커니즘이 작동하는 방법에 대한 몇 가지 예를 살펴보겠습니다.

예 1예를 들어 Marlboro 담배와 같은 특정 제품 수령에 대한 문서를 신속하게 찾아야 한다고 가정합니다.
"도구" 메뉴에서 "데이터 검색"을 선택합니다. 열리는 창의 위쪽 필드에 검색어 "Marlboro"를 입력하고 "검색" 버튼을 클릭합니다.


예 2우리 조직은 Rumyantsev 비즈니스 센터 근처에 사무실을 임대합니다. 데이터베이스에서 2010년 3월 임대 행위를 신속하게 찾아야 합니다. 다음과 같은 검색 쿼리를 작성합니다.


옵션 3.상품을 배송할 때 일부 문서 "상품 및 서비스 판매"- "후불"에 다음과 같은 설명을 남겼다고 가정합니다. 그리고 지연된 상태로 배송된 모든 문서를 찾아야 했습니다. 다음과 같은 검색 쿼리를 작성합니다.

검색 연산자(AND, OR, NOT, NEAR)를 사용하여 보다 복잡한 검색을 수행할 수도 있습니다.
검색 영역은 특정 구성 개체(예: 상품 및 서비스 영수증 문서)로 제한될 수 있습니다. 이렇게 하려면 "설정" 버튼을 클릭합니다.

구성 개체를 선택하는 필드가 나타납니다. "검색 범위 제한" 상자를 선택하고 "검색할 메타데이터 개체 선택" 버튼을 클릭합니다.

예를 들어 "상품 및 서비스 수령"문서를 선택하십시오.

검색어를 입력하고 검색해야 합니다.

"데이터 검색" 처리 하단에 인덱스의 관련성이 반영됩니다. "인덱스가 최신 상태가 아닙니다"가 표시되면 "인덱스 업데이트" 버튼을 클릭해야 합니다.

전체 텍스트 검색- 사용된 구성의 거의 모든 위치에 있는 텍스트 정보를 찾을 수 있습니다. 동시에 전체 구성에서 필요한 데이터를 검색하거나 검색 영역을 몇 가지 개체(예: 특정 유형의 문서 또는 디렉터리)로 좁혀 필요한 데이터를 검색할 수 있습니다. 검색 기준 자체는 상당히 광범위하게 다를 수 있습니다. 즉, 구성에 저장된 위치와 기록 방법을 정확히 기억하지 않고도 필요한 데이터를 찾을 수 있습니다.

전체 텍스트 검색은 다음 기능을 제공합니다.

  • 음역 지원이 있습니다(GOST 7.79-2000에 따라 라틴 문자로 러시아어 단어 쓰기). 예: "러시아어 문구" = "러시아어 fraza".
  • 대체 지원이 있습니다(단일 키 라틴 문자를 사용하여 러시아어 단어로 일부 문자 쓰기). 예: "russrfz frapf"(예를 들어 운영자 오류의 결과로 각 단어의 끝이 라틴어로 입력됨).
  • 퍼지 임계값 표시와 함께 퍼지 검색(발견된 단어의 문자가 다를 수 있음) 가능성이 있습니다. 예: 검색 문자열에 "hello"라는 단어를 지정하고 17%의 퍼지도를 지정하면 "hello", "hello", "bring"과 같이 오류가 있거나 없는 유사한 단어를 모두 찾습니다.
  • 선택한 메타데이터 개체에 대한 검색 범위를 지정할 수 있습니다.
  • 표준 필드 이름("코드", "설명" 등)의 전체 텍스트 인덱싱은 모든 구성 언어에서 수행됩니다.
  • 검색은 러시아어, 영어 및 우크라이나어의 동의어를 고려하여 수행됩니다.
  • 러시아어의 형태 사전에는 1C:Enterprise 프로그램 시스템을 사용하여 자동화된 활동 영역과 관련된 여러 특정 단어가 포함되어 있습니다.
  • 기본적으로 제공된 사전에는 Informatik에서 제공하는 러시아어, 우크라이나어 및 영어의 시소러스 및 동의어 사전과 어휘 데이터베이스가 포함되어 있습니다.
  • 와일드카드 문자("*")를 사용하고 검색 연산자("AND", "OR", "NOT", "NEAR") 및 특수 문자를 지정하여 검색할 수 있습니다.

전체 텍스트 검색은 1C:Enterprise 8 플랫폼의 모든 구성에서 수행할 수 있습니다.

전체 텍스트 검색 제어 창을 열려면 다음을 수행하십시오.

일반 신청- 메뉴 아이템 작업 - 전체 텍스트 검색 관리.

관리되는 애플리케이션- 메뉴 아이템 메인 메뉴 - 모든 기능 - 표준 -전체 텍스트 검색 관리.


  • 인덱스 업데이트– 인덱스 생성/인덱스 업데이트
  • 색인 지우기– 인덱스 제로화(모든 데이터 업데이트 후 권장)
  • 항목 인덱스 병합 허용- 기본 인덱스와 추가 인덱스 병합을 담당합니다.

전체 텍스트 검색은 전체 텍스트 색인을 사용하여 수행됩니다. 인덱스가 없으면 전체 텍스트 검색이 불가능합니다. 검색이 성공하려면 필요한 모든 데이터가 전체 텍스트 인덱스에 포함되어야 합니다. 사용자가 새 데이터를 데이터베이스에 입력하면 해당 인덱스에 포함되어야 합니다. 그렇지 않으면 검색에 참여하지 않습니다. 이를 방지하려면 전체 텍스트 인덱스를 업데이트해야 합니다. 업데이트할 때 시스템은 문자열, 참조 유형의 데이터(문서, 디렉토리에 대한 링크), 숫자, 날짜, 값 저장소와 같은 특정 유형의 데이터만 분석합니다. 사용자가 특정 정보에 대한 액세스 권한이 없으면 검색 결과에서 해당 정보를 볼 수 없습니다. 또한 검색을 수행할 개체의 속성을 다음으로 설정해야 합니다. 전체 텍스트 검색 - 사용, 기본적으로 설정되어 있습니다.

숙소는 보시다시피 사용전체 디렉토리에 대해 설정 상대방, 하지만 이는 해당 유형의 각 속성에 대해서도 수행할 수 있습니다.

기본 인덱스와 추가 인덱스의 두 부분(인덱스)으로 구성된 전체 텍스트 인덱스에 대해 자세히 살펴보겠습니다. 고속데이터 검색은 기본 인덱스를 희생하여 제공되지만 업데이트는 데이터 양에 따라 상대적으로 느립니다. 보완 지수는 그 반대입니다. 데이터가 훨씬 빠르게 추가되지만 검색 속도는 느립니다. 시스템은 두 인덱스를 동시에 검색합니다. 대부분의 데이터는 기본 인덱스에 있고 시스템에 추가된 데이터는 보조 인덱스에 있습니다. 보조 인덱스의 데이터 양이 적은 한 이를 통한 검색은 상대적으로 빠릅니다. 시스템의 부하가 적은 시간에 인덱스 병합 작업이 발생하여 추가 인덱스가 지워지고 모든 데이터가 기본 인덱스에 배치됩니다. 인덱스는 시스템의 부하가 적은 시간에 병합하는 것이 좋습니다. 이를 위해 규제 작업 및 예약 작업을 생성할 수 있습니다.

검색 표현식을 지정할 때 허용되는 특수 연산자

전체 텍스트 검색 메커니즘을 사용하면 단일 키 라틴 문자로 러시아어 단어 문자의 일부를 쓸 수 있습니다. 검색 결과는 변경되지 않습니다.

두 명의 오퍼레이터가 나란히

  • 쉽게 한. 8단어 떨어져
  • NEAR/[+/-]n – n-1 단어 사이의 거리에서 한 속성의 데이터를 검색합니다.

기호는 첫 번째 단어에서 두 번째 단어를 검색할 방향을 나타냅니다. (+ - 후, - 전)

와일드카드 "*"는 단어의 끝을 대체하는 용도로만 사용할 수 있습니다.

퍼지 연산자 "#". 이름의 정확한 철자가 알려지지 않은 경우.

소프트웨어 도구 및 도구 1s: 프로그래밍.

동의어 연산자 "!". 단어와 동의어를 찾을 수 있습니다.

전체 텍스트 검색 인덱스를 프로그래밍 방식으로 업데이트하는 방법은 무엇입니까?

Code 1C v 8.x 프로시저 UpdateIndexes() 내보내기
FulltextSearch.UpdateIndex();
종료 절차

전체 텍스트 데이터 검색 예

변수 정의 검색 목록

코드 1C v 8.x 변수 검색 목록;

또한 이벤트 처리 절차에서 양식이 열리면 이 변수에 전체 텍스트 검색 목록이 포함되도록 정의하고 이를 통해 데이터를 검색합니다.

코드 1C v 8.x 절차 OnOpen()
SearchList = FullTextSearch.CreateList();
종료 절차

이제 찾기 버튼을 클릭하는 이벤트에 대해 SearchExpression 필드에 지정된 표현식에 따라 검색할 수 있는 코드를 작성해 보겠습니다.

코드 1C v 8.x 프로시저 FindClick(요소)
SearchList.SearchString = SearchExpression;
시도
SearchList.FirstPart();
예외
경고(ErrorDescription());
시도 종료;
If SearchList.TotalCount() = 0 그러면
FormElements.MessageOResult.Value = "찾을 수 없음";
FormElements.SearchResult.SetText("");
그렇지 않으면
PrintSearchResult();
EndIf;
종료 절차

이 절차에서는 먼저 사용자가 입력한 검색식을 전체 텍스트 검색을 위한 검색 문자열로 설정합니다. 그런 다음 실제로 전체 텍스트 검색을 시작하고 결과의 첫 번째 배치를 반환하는 FirstPart() 메서드를 실행합니다. 기본적으로 부분에는 20개의 항목이 포함됩니다. 그런 다음 검색 목록의 요소 수를 구문 분석합니다. 요소가 포함되어 있지 않으면 해당 메시지를 양식에 표시합니다. 그렇지 않으면 결과를 사용자에게 표시하는 OutputSearchResult() 프로시저가 호출됩니다.

폼 모듈에 같은 이름의 프로시저를 생성하고 그 안에 코드를 작성해 봅시다.

코드 1C v 8.x 프로시저 DisplaySearchResult()
FormElements.MessageOResult.Value = "표시됨" + String(SearchList.StartingPosition() + 1) + " - " + String(SearchList.StartingPosition() +SearchList.Count()) + "from" + SearchList.FullCount();
결과 = SearchList.GetDisplay(FullTextSearchDisplayType.HTMLText);
FormElements.SearchResult.SetText(결과);
접근성버튼();
종료 절차

이 절차의 단계는 간단합니다. 먼저, 어떤 요소가 표시되고 총 몇 개의 요소가 발견되었는지에 대한 메시지를 구성합니다. 그런 다음 전체 텍스트 검색 결과를 HTML 텍스트 형식으로 가져오고 이 텍스트를 양식에 있는 HTML 문서의 필드에 표시합니다.

마지막으로 ButtonsAccess() 프로시저로 제어를 전송하여 사용 가능하게 하거나 반대로 이전 부분 및 다음 부분 버튼에 대한 액세스를 금지합니다(결과의 어느 부분이 표시되는지에 따라 다름). 이 절차의 텍스트는 코드에 나와 있습니다.

Code 1C v 8.x 버튼 접근성 절차()
FormElements.NextPortion.Availability = (SearchList.FullCount() - SearchList.StartPosition()) > SearchList.Quantity();
FormElements.PreviousPortion.Availability = (SearchList.StartPosition() > 0);
종료 절차

이제 PreviousPortion() 및 NextPortion() 버튼을 누르기 위한 이벤트 핸들러를 만들어야 합니다.

코드 1C v 8.x 절차 PrevPartPress(요소)
SearchList.PreviousPart();
PrintSearchResult();
종료 절차
절차 NextBatchClick(항목)
SearchList.NextPart();
PrintSearchResult();
종료 절차

마지막 "터치"는 양식에 있는 HTML 문서 필드의 onclick 이벤트에 대한 이벤트 핸들러를 만드는 것입니다. HTML 텍스트로 표시되는 전체 텍스트 검색 결과에는 검색 목록의 여러 요소에 대한 하이퍼링크가 포함되어 있습니다. 그리고 우리는 사용자가 이 링크를 클릭할 때 시스템이 이 목록 요소에 포함된 개체의 형식을 열길 원합니다. 이를 위해 HTML 문서 필드에 포함된 HTML 문서의 onclick 이벤트를 가로채고 하이퍼링크에서 목록 항목 번호를 가져와 해당 개체의 양식을 엽니다. HTML 문서 필드의 onclick 이벤트 핸들러 텍스트는 코드에 표시됩니다.

코드 1C v 8.x ProcedureSearchResultonclick(요소, pEvtObj)
htmlElement = pEvtObj.srcElement;
// 요소 ID 확인
If (htmlElement.id = "FullTextSearchListItem") 그러면
// 파일 이름(검색 목록 줄 번호) 가져오기,
// 하이퍼링크에 포함
NumberInList = Number(htmlElement.nameProp);
// 검색 목록 문자열을 숫자로 가져옵니다.
SelectedRow = 검색목록[목록번호];
// 찾은 객체의 형식을 엽니다.
OpenValue(SelectedRow.Value);
pEvtObj.returnValue = 거짓;
EndIf;
종료 절차

이 소식을 먼저 읽으신 분들이 있습니다.
최신 기사를 받으려면 구독하십시오.
이메일
이름
종을 어떻게 읽고 싶습니까?
스팸 없음