ZƏNG

Bu xəbəri sizdən əvvəl oxuyanlar var.
Ən son məqalələri əldə etmək üçün abunə olun.
E-poçt
ad
soyad
“Zəng”i necə oxumaq istərdiniz
Spam yoxdur

Yeni axtarışın funksionallığı iki mexanizmə əsaslanır:
- tam mətn axtarışı (çox sürətli işləyir və minimum hesablama resursları tələb edir);
- DBMS vasitəsilə axtarış (ümumi halda, axtarışın müddəti və hesablama resurslarının dəyəri cədvəldəki məlumatların miqdarına mütənasibdir).

Cari tətbiqdə siyahı axtarılacaq istifadə etmədən aşağıdakı hallarda tam mətn axtarışı ():
- infobase səviyyəsində tam mətn indeksi deaktiv edilib;
- əsas cədvəlin obyekti tam mətn indeksi ilə indeksləşdirilməyib;
- tam mətnli axtarışdan istifadə edərək axtarış nəticəsində xəta alındı.

Əgər infobazada tam mətn axtarışı aktivləşdirilibsə və indeks tamamilə və ya qismən yenilənməyibsə (Müştərilərin infobazalarının 95%-i təcrübəmdən), onda istifadəçi axtarış zamanı ya etibarsız, ya da boş axtarış nəticəsi alacaq. .

1C firmasından soruşuruq - necə olmaq olar? Axtarış nəticələrinin həmişə etibarlı olmasını necə təmin etmək olar?
Cavabı alırıq: Bəli, tam mətnli axtarış aktiv olduqda axtarış nəticələrinin yenilənməsi üçün siz tam mətnli axtarış indeksinin yeni olmasını təmin etməlisiniz. bu günə qədər axtarış hələ ().

Və ümumiyyətlə "həqiqi tam mətn indeksi" varmı? İstifadəçilərin sayından, verilənlər bazasında məlumat dəyişikliklərinin intensivliyindən və indekslərin yenilənmə tezliyindən asılıdır. Tipik olaraq, indeks yeniləməsi hər 60 saniyədən bir həyata keçirilir. Yaxşı, əgər çox sayda obyekt dəyişdirilməyibsə və prosedur bu 60 saniyə ərzində bütün dəyişiklikləri emal etməyi bacarıb. Bir qrup sənədin yenidən yerləşdirilməsini və ya kataloqun kütləvi şəkildə yenidən yazılmasını etmisinizsə? Bu halda, heç kim indeksdəki axtarışın yenidən etibarlı məlumat verəcəyi vaxta zəmanət verə bilməz.
Prinsipcə, bir neçə vəziyyət istisna olmaqla, bu xüsusilə kritik deyil. İstifadəçilərin işləməsi üçün ümumi seçim siyahıda seçimi müəyyən dəyərlə təyin etməkdir, məsələn, "Qarşı tərəf", yenisini daxil edin və ya mövcud sənədi köçürüb yazın. Köhnə axtarışla yeni sənəd dərhal siyahıda görünürdü. İndi istifadəçi onu ən yaxşı halda N saniyədən sonra görəcək, burada N 2-3 deyil, 50-60 saniyəyə yaxındır.
Əgər yeni sənədin olmadığını görmürsənsə və seçilmiş nəticələrə əsasən kiməsə məlumat verərsənsə, bu, açıq-aydın etibarsız olacaq.

Bu, infobaza ilə normal iş vəziyyətində idi. Xüsusi hallarda nə baş verir? Mən sizə bir-iki misal verəcəm.
1) İşçi verilənlər bazasında tam mətn indeksi aktivləşdirilir və tez-tez yenilənir. İstifadəçi işçi məlumat bazasının surətini ona yerləşdirməyi xahiş edir ki, o, üzərindəki məlumatları təhlil edə bilsin.
Biz ehtiyat nüsxəsini bərpa edirik və giriş veririk. Amma tam mətnli axtarış işləməyəcək, çünki. indeks DBMS-də deyil, ayrı-ayrı fayllarda (həm faylda, həm də müştəri-server versiyasında) saxlanılır. İndeks dt faylında deyil.
olanlar. istifadəçinin siyahı axtarışından istifadə edə bilməsi üçün bu verilənlər bazasında tam mətn indeksi söndürülməlidir. Doğrudur, istifadəçi axtarışın daha uzun sürəcəyinə bir az təəccüblənəcək. Və ya indeksi bütün verilənlər bazasında yenidən qurun.

2) (Az və ya çox böyük bazalar üçün aktualdır). İstehsal məlumat bazasında tam mətn indeksi aktivləşdirilir və tez-tez yenilənir. Ayın sonu gəlir və dövrün bağlanması başlayır. Sənədləri toplu yükləməyə və köçürməyə başlayırıq. Sistemdəki yükü azaltmaq üçün biz müvafiq olaraq planlaşdırılan tapşırıqların icrasını bloklayırıq və indeks yeniləməsi dayanır. İstifadəçilər, yumşaq desək, itki ilə üzləşəcəklər - niyə siyahılarda yeni və ya dəyişdirilmiş sənədlər yoxdur. Yeganə çıxış yolu, infobaza üçün tam mətn axtarışını söndürmək və müvafiq olaraq, bütün detallar üçün ağır axtarış nəticəsində avadanlıqlara daha da böyük yük almaqdır.

Beləliklə, mənə elə gəlir ki, indeks yeniləmə əməliyyatı infobase administratorları üçün növbəti başağrısına çevriləcək.
Əvvəllər istənilən vaxt məlumatın 100% dəqiqliyinə və aktuallığına zəmanət verən sistem indi tam əmin olmaq mümkün olmayan bir istinad sisteminə çevrilir.
İstifadəçilər İT işçilərini qınamaq üçün başqa bir səbəb əldə edirlər - "sistemin düzgün işləmir".

8.3 platformasında tam mətn axtarışının tərtibatçılar tərəfindən uzun müddət əvvəl elan edilməsinə baxmayaraq (8.3.5 platformasından bəri), tipik konfiqurasiyalarda aktiv şəkildə istifadə edilməmişdir. Enterprise Accounting 3.0-ın son buraxılışlarında tərtibatçılar bir çox siyahıya tam mətn axtarışını daxil etmişlər. İstifadəçilərim üçün bu şok oldu - proqram axtarışı dayandırdı.

Əlbəttə ki, tam mətn axtarışı işləyir, lakin "Tap" pəncərəsini görməyən istifadəçilər çaşqınlıq içindədirlər. Tipik istifadə ssenarisi: Klaviaturada yazmağa başlayın, yazarkən axtarış ediləcək sahəni, axtarış mətnini və “Sətrin bir hissəsi” axtarış rejimini göstərən “Tap” pəncərəsi görünür.

Enter düyməsini sıxmaqla siyahı süzülür, siyahının üstündə axtarış statusu paneli görünür. Hansı sahədə və nə axtardığını istifadəçi özü müəyyənləşdirir. Yeni axtarış siz onu yazan kimi işə başlayır və siyahıda göstərilən bütün sahələrə təsir edir. Ayrı bir pəncərə görünmür, axtarış sözlərinin bütün uyğunluqları rənglə vurğulanır.

Bir neçə gün yeni axtarışla yaşadıq. İstifadəçilər əziyyət çəkdi, şikayətləndi, sabotaj edildi. Şikayətlər dayanmadı, rəhbərliyə “hər şeyi olduğu kimi et” tapşırığı verildi.

Haradan başlamaq lazımdır? Formaların bir-birindən necə fərqləndiyini başa düşməlisiniz. Mən konfiqurasiya mənbə kodlarını yeni axtarış davranışı və köhnəsi ilə endirdim və formaların mənbə kodlarını müqayisə etdim.

"Axtarış sətri" tipli forma elementinin əlavə edilməsi yeni tam mətn axtarışının funksionallığından məsuldur. Nə axtarmaq lazım olduğu aydın oldu. ITS 7.3.1.5 haqqında məqalə tapdım. Dinamik siyahıda axtarın. Bu məqalənin araşdırılması məni belə qənaətə gətirdi ki, axtarışın işinin yeni üsulu iki amildən asılıdır: 1. Forma yuxarıdakı forma elementinin tamamlanmasına malik olmalıdır, 2. Formdakı dinamik siyahının “SearchStringPosition” xassəsinə bərabər olmamalıdır. "Heç biri".

Nəzəri olaraq serverdə forma yaradarkən "SearchString Position" list xassəsini "SearchString Position. Xeyr" olaraq təyin etmək kifayətdir, lakin bu, bütün formalarla işləmədi, bəzi hallarda yeni axtarış işləməyə davam etdi. Biz proqramlı şəkildə yaradılmamış forma elementlərini silə bilmərik, lakin görünməni idarə etmək olar. "AdditionSearchString" forma elementi görünmə qabiliyyətindən silinərsə, tam mətnli yeni axtarış da fəaliyyətini dayandırır. Təcrübələr zamanı ümumi modula yerləşdirdiyim aşağıdakı kod yarandı:

NewSearchInLists(Forma) İxrac Siyahısının Deaktiv edilməsi proseduru = Form.Items.Find("Siyahı"); Əgər Siyahı = Qeyri-müəyyən deyilsə, Qayıdın; EndIf; List.SearchStringPosition = SearchStringPosition.None; AdditionSearchString = Form.Elements.Find("AdditionSearchString"); Əgər ComplementSearchString = Müəyyən edilməmişsə, ComplementSearchString.Visibility = False; EndIf; EndProcedure

"Siyahılarda yeni axtarışın söndürülməsi" prosedurunda siz düzəldilmiş formanı keçməlisiniz. Bəs bunu bütün formalar üçün eyni anda necə etmək olar?

Birinci həll forma redaktorundan istifadə edərək konfiquratorda lazımi formaları əl ilə düzəltməkdir. Mən bu qərardan dərhal imtina etdim - bu, uzun və üzücüdür və sonradan konfiqurasiyanı yeniləmək çətindir.

İkinci həll formanı açarkən yeni axtarışı proqramlı şəkildə söndürəcək proseduru çağırmaqdır. Proseduru işə salınması artıq bütün formalarda qeydə alınmış hər hansı digər prosedurdan çağırmaq olar, bu halda əlavə yeniləmələrlə biz yalnız bu prosedura nəzarət etməliyik - dəyişməməsi üçün. GeneralModule.ManagePrint-i seçdim, hansı ki:

OnCreateOnServer(Forma,DefaultCommandPlace,PrintObjects) İxrac

Bu prosedur çap əmrlərini doldurmaq üçün serverdə forma yaradıldıqda çağırılır. Bu prosedurda biz siyahılarda yeni axtarışı söndürmək üçün funksiyamızı çağıran kodu yazırıq:

MyGeneralModule.NewSearchInLists (Forma) Disableing;

Mühasiblər köhnə axtarışdan həzz alırlar və biz Müəssisə Mühasibatlığı 3.0-un uyğunluq rejimi bu funksiyanı genişləndirməyə nə vaxt köçürməyə imkan verəcəyinə hazırlaşırıq.

İndiyə qədər az adam bilir ki, 8.1 versiyasından başlayaraq 1C: Enterprise platformasının gözəl və çox faydalı mexanizmi var - tam mətn axtarışı. Bu nədir? Sizin üçün necə faydalı ola bilər? Bu suallara V.V.-nin məqaləsində cavab verilir. Balıqçılıq, firma "1C".

Birincisi, bunun hansı mexanizm olduğu haqqında bir neçə söz. Tam mətnli axtarış, sadə dillə desək, istifadə olunan konfiqurasiyanın demək olar ki, hər yerində yerləşən mətn məlumatını tapmağa imkan verəcək. Eyni zamanda, ya bütövlükdə bütün konfiqurasiya üzrə, ya da axtarış sahəsini bir neçə obyektə (məsələn, müəyyən növ sənədlər və ya kataloqlar) daraltmaqla lazımi məlumatları axtara bilərsiniz. Axtarış meyarlarının özləri kifayət qədər geniş diapazonda dəyişə bilər. Yəni, konfiqurasiyada dəqiq harada saxlandığını və dəqiq necə yazıldığını xatırlamadan lazımi məlumatları tapa bilərsiniz.

Tam mətn axtarışı aşağıdakı xüsusiyyətləri təmin edir.

  1. Transliterasiya üçün dəstək var (QOST 7.79-2000-ə uyğun olaraq latın hərfləri ilə rus sözlərini yazmaq). Nümunə: "Rus ifadəsi" = "Rus dili".
  2. Əvəzetmə (simvolların bir hissəsinin bir düyməli Latın hərfləri ilə rus sözlərində yazılması) dəstəyi var. Misal: "russrfz frapf" (hər sözün sonları latın dilində yazılır, məsələn, operator xətası nəticəsində).
  3. Qeyri-səlis axtarış həddinin göstəricisi ilə qeyri-səlis axtarış (tapılan sözlərdəki hərflər fərqli ola bilər) ehtimalı var. Nümunə: axtarış sətirində “salam” sözünü və qeyri-səlisliyi 17% göstərməklə, biz bütün oxşar sözləri səhvli və səhvsiz tapacağıq: “salam”, “salam”, “gətirin”.
  4. Seçilmiş metadata obyektləri üçün axtarışın əhatə dairəsini müəyyən etmək mümkündür.
  5. Standart sahələrin adlarının (“Kod”, “Təsvir” və s.) tam mətnli indeksləşdirilməsi bütün konfiqurasiya dillərində həyata keçirilir.
  6. Axtarış rus, ingilis və ukrayna dillərinin sinonimləri nəzərə alınmaqla aparılır.
  7. Rus dilinin morfoloji lüğəti 1C: Enterprise proqram sistemindən istifadə edərək avtomatlaşdırılmış fəaliyyət sahələrinə aid bir sıra xüsusi sözləri ehtiva edir.
  8. Standart olaraq, təqdim olunan lüğətlərə lüğət bazaları və tezaurus lüğətləri və rus, ukrayna və sinonimlər daxildir. İngilis dili Informatik tərəfindən təmin edilmişdir.
  9. Siz joker simvollardan ("*"), həmçinin axtarış operatorlarını ("AND", "OR", "NOT", "NEAR") və xüsusi simvollardan istifadə edərək axtarış edə bilərsiniz.

Tam mətnli axtarış 1C: Enterprise 8.1 platformasında istənilən konfiqurasiyada həyata keçirilə bilər.

Bu, 8.0 versiyasından çevrilmiş konfiqurasiyalara da aiddir. Tam mətn axtarış imkanlarını aktivləşdirmək üçün konfiqurasiyanızın "Əməliyyatlar" menyusuna keçin və "Tam mətn axtarışını idarə et" maddəsini seçin və sonra bu funksiyanı aktivləşdirin (Şəkil 1-ə baxın).

düyü. bir

8.1 platformasında tipik konfiqurasiyalardan istifadə edirsinizsə, çox güman ki, onlar artıq quraşdırılmış "Məlumat Axtarışı" emalına malikdirlər (menyu "Alətlər" / "Məlumat Axtarışı"). İstifadə olunan konfiqurasiyada belə emal yoxdursa, fərq etməz.

Onu həmişə ITS diskində tapmaq olar. Bu yazıda tam mətn axtarış imkanlarını nümayiş etdirmək üçün "Müəssisə Mühasibatlığı" demo konfiqurasiyasında (rev. 1.6) bu xüsusi emalın işinə dair nümunələrdən istifadə edəcəyik.

Artıq qeyd edildiyi kimi, axtarış bir neçə sözlə, axtarış operatorlarından istifadə etməklə və dəqiq bir ifadə ilə aparıla bilər. Bundan əlavə, axtarış yeri xüsusi konfiqurasiya obyektləri (məsələn, İstehsal Xidmətləri Aktı sənədləri) və ya konfiqurasiya obyektlərinin siyahısı/dəsti ilə məhdudlaşdırıla bilər.

Məlumatların axtarışı zamanı cədvəldə göstərilən axtarış sətirində axtarış operatorlarından (bütün operatorlar yalnız BAŞ hərflərlə və dırnaqsız göstərilməlidir) istifadə etməyə icazə verilir.

Cədvəl


Nəzərə alın: heç bir operator göstərilməyibsə (sözlər boşluqla yazılır), proqram "AND" operatorundan istifadə edərək sorğudan bütün sözləri axtarır.

düyü. 2 sadə bir söz hissəsi axtarışına nümunə göstərir. "Ümid *" yazmaqla nəticədə link əldə etdik fərdi, həmçinin şərhlərində "Etibarlı müştəri" ifadəsinin yer aldığı sənədlərdə.


düyü. 2

düyü. 3-də axtarış sətirində “OR” konstruksiyasından istifadə etməklə və “Nomenklatura” kataloqunda axtarış sahəsini məhdudlaşdıran daha mürəkkəb axtarış nümunəsi və “Malların və xidmətlərin qəbulu”, “Malların və xidmətlərin satışı” sənədləri göstərilir. Aydın görünür ki, axtarışda bütün nomenklatura öz əksini tapıb, onların adlarında ya “çaynik” sözü, ya da “BINATONE” sözü, eləcə də bütün müvafiq nomenklaturaları özündə əks etdirən bu tipli bütün sənədlər var.


Hər mühasib bunu bilmir. faydalı alət 1C-də: Mühasibat 8, tam mətn axtarışı kimi. Tam mətnli axtarış mexanizmi konfiqurasiyanın istənilən yerində mətn məlumatını tapmağa imkan verir.

Tam mətn axtarışı "Alətlər" menyusunda yerləşən "Məlumat Axtarışı" emalından istifadə etməklə həyata keçirilir:

Tam mətn axtarış mexanizminin necə işlədiyinə dair bir neçə nümunəyə baxaq.

Misal 1 Tutaq ki, müəyyən bir məhsulun, məsələn, Marlboro siqaretinin alınması üçün sənədləri tez tapmalıyıq.
"Alətlər" menyusundan "Məlumat Axtarışı" seçin. Açılan pəncərədə yuxarı sahədə "Marlboro" axtarış sorğusunu daxil edin və "Axtarış" düyməsini basın:


Misal 2 Təşkilatımız Rumyantsev biznes mərkəzinin yaxınlığında ofis icarəyə verir. Verilənlər bazasında 2010-cu ilin mart ayı üçün icarə aktını tez tapmaq lazımdır. Aşağıdakı axtarış sorğusunu edirik:


Seçim 3. Tutaq ki, mal göndərərkən bəzi sənədlərdə "Malların və xidmətlərin satışı" - "Təxirə salınmış ödəniş" şərhini buraxdıq. Və gecikmə ilə göndərilən bütün sənədləri tapmalı olduq. Aşağıdakı axtarış sorğusunu edirik:

Siz həmçinin axtarış operatorlarından (AND, OR, NOT, NEAR) istifadə edərək daha mürəkkəb axtarış həyata keçirə bilərsiniz.
Axtarış sahəsi xüsusi konfiqurasiya obyektləri ilə məhdudlaşdırıla bilər (məsələn, Malların və Xidmətlərin Qəbul sənədi). Bunu etmək üçün "parametrlər" düyməsini basın:

Konfiqurasiya obyektini seçmək üçün bir sahə görünəcək. "Axtarış sahələrini məhdudlaşdırın" qutusunu yoxlayın və "Axtarmaq üçün metadata obyektlərini seçin" düyməsini klikləyin:

Məsələn, "Malların və xidmətlərin qəbulu" sənədini seçin.

Axtarış sorğusunu daxil etmək və axtarış etmək qalır.

"Məlumat axtarışı" emalının aşağı hissəsində indeksin aktuallığı əks olunur. Əgər görürsünüzsə - "İndeks yeni deyil", "İndeksi yenilə" düyməsini sıxmalısınız.

Tam mətn axtarışı- istifadə olunan konfiqurasiyada demək olar ki, hər yerdə yerləşdirilən mətn məlumatlarını tapmağa imkan verir. Eyni zamanda, ya bütövlükdə bütün konfiqurasiya üzrə, ya da axtarış sahəsini bir neçə obyektə (məsələn, müəyyən növ sənədlər və ya kataloqlar) daraltmaqla lazımi məlumatları axtara bilərsiniz. Axtarış meyarlarının özləri kifayət qədər geniş diapazonda dəyişə bilər. Yəni, konfiqurasiyada dəqiq harada saxlandığını və dəqiq necə yazıldığını xatırlamadan lazımi məlumatları tapa bilərsiniz.

Tam mətn axtarışı aşağıdakı xüsusiyyətləri təmin edir:

  • Transliterasiya üçün dəstək var (QOST 7.79-2000-ə uyğun olaraq latın hərfləri ilə rus sözlərini yazmaq). Nümunə: "Rus ifadəsi" = "Rus dili".
  • Əvəzetmə (simvolların bir hissəsinin bir düyməli Latın hərfləri ilə rus sözlərində yazılması) dəstəyi var. Misal: "russrfz frapf" (hər sözün sonları latın dilində yazılır, məsələn, operator xətası nəticəsində).
  • Qeyri-səlis axtarış həddinin göstəricisi ilə qeyri-səlis axtarış (tapılan sözlərdəki hərflər fərqli ola bilər) ehtimalı var. Nümunə: axtarış sətirində “salam” sözünü və qeyri-səlisliyi 17% göstərməklə, biz bütün oxşar sözləri səhvli və səhvsiz tapacağıq: “salam”, “salam”, “gətirin”.
  • Seçilmiş metadata obyektləri üçün axtarışın əhatə dairəsini müəyyən etmək mümkündür.
  • Standart sahələrin adlarının (“Kod”, “Təsvir” və s.) tam mətnli indeksləşdirilməsi bütün konfiqurasiya dillərində həyata keçirilir.
  • Axtarış rus, ingilis və ukrayna dillərinin sinonimləri nəzərə alınmaqla aparılır.
  • Rus dilinin morfoloji lüğəti 1C: Enterprise proqram sistemindən istifadə edərək avtomatlaşdırılmış fəaliyyət sahələrinə aid bir sıra xüsusi sözləri ehtiva edir.
  • Standart olaraq, təqdim olunan lüğətlərə İnformatik tərəfindən təqdim olunan rus, ukrayna və ingilis dillərinin lüğət bazaları və tezaurus lüğətləri və sinonimləri daxildir.
  • Siz joker simvollardan ("*"), həmçinin axtarış operatorlarını ("AND", "OR", "NOT", "NEAR") və xüsusi simvollardan istifadə edərək axtarış edə bilərsiniz.

Tam mətnli axtarış 1C: Enterprise 8 platformasında istənilən konfiqurasiyada həyata keçirilə bilər

Tam mətn axtarışına nəzarət pəncərəsini açmaq üçün aşağıdakıları edin:

Ümumi tətbiq- menyu elementi Əməliyyatlar - Tam mətn axtarışının idarə edilməsi.

İdarə olunan Tətbiq- menyu elementi Əsas menyu - Bütün funksiyalar - Standart -Tam mətn axtarışının idarə edilməsi.


  • İndeksi yeniləyin– İndeksin yaradılması/İndeksin yenilənməsi;
  • İndeksi təmizləyin– indeksin sıfırlanması (bütün məlumatların yenilənməsindən sonra tövsiyə olunur);
  • element İndeksin birləşməsinə icazə verin- əsas və əlavə indeksin birləşməsinə cavabdehdir.

Tam mətnli axtarış tam mətn indeksindən istifadə etməklə həyata keçirilir. İndeks olmadıqda, tam mətn axtarışı mümkün deyil. Axtarışın uğurlu olması üçün bütün tələb olunan məlumatlar tam mətn indeksinə daxil edilməlidir. İstifadəçi tərəfindən verilənlər bazasına yeni məlumatlar daxil edilərsə, o, sözügedən indeksə daxil edilməlidir, əks halda o, axtarışda iştirak etməyəcək. Bunun qarşısını almaq üçün tam mətn indeksini yeniləməlisiniz. Yeniləmə zamanı sistem yalnız müəyyən növ məlumatları təhlil edir: String, İstinad tipli məlumatlar (sənədlərə, kataloqlara keçidlər), Nömrə, Tarix, Dəyər Saxlama. İstifadəçinin müəyyən məlumatlara giriş hüququ yoxdursa, o zaman onu axtarış nəticələrində görə bilməyəcək. Həm də yadda saxlamaq lazımdır ki, axtarışın aparılacağı obyektlərin xüsusiyyətləri müəyyən edilməlidir Tam Mətn Axtarışı - İstifadə edin, standart olaraq təyin olunur.

Gördüyünüz kimi əmlak istifadə edin bütün kataloq üçün təyin edin Qarşı tərəflər, lakin bu, onun müvafiq tipli atributlarının hər biri üçün də edilə bilər.

İki hissədən (indekslərdən) ibarət olan tam mətn indeksini daha ətraflı nəzərdən keçirək: əsas indeks və əlavə. Yüksək sürət Məlumatların axtarışı əsas indeks hesabına təmin edilir, lakin məlumatların miqdarından asılı olaraq onun yenilənməsi nisbətən ləng gedir. Tamamlayıcı indeks onun əksidir. Məlumat ona daha sürətli əlavə olunur, lakin axtarış daha yavaş olur. Sistem eyni vaxtda hər iki indeksi axtarır. Məlumatların əksəriyyəti əsas indeksdə yerləşir, sistemə əlavə edilən məlumatlar isə ikinci dərəcəli indeksdə bitir. Nə qədər ki, ikinci dərəcəli indeksdəki məlumatların miqdarı azdır, onun vasitəsilə axtarış nisbətən sürətlidir. Sistemdə yükün az olduğu bir vaxtda indekslərin birləşdirilməsi əməliyyatı baş verir, bunun nəticəsində əlavə indeks təmizlənir və bütün məlumatlar əsas indeksə yerləşdirilir. Sistemdəki yükün minimal olduğu bir vaxtda indeksləri birləşdirməyə üstünlük verilir. Bu məqsədlə siz tənzimlənən tapşırıqlar və planlaşdırılmış tapşırıqlar yarada bilərsiniz.

Axtarış ifadəsini təyin edərkən xüsusi operatorlara icazə verilir

Tam mətnli axtarış mexanizmi rus sözünün simvollarının bir hissəsini tək düyməli Latın hərfləri ilə yazmağa imkan verir. Axtarış nəticəsi dəyişməyəcək.

İki operator yan-yana

  • sadələşdirilmiş. 8 söz ayrı
  • NEAR/[+/-]n – aralarında n-1 söz məsafəsində bir atributda verilənləri axtarın.

İşarə birinci sözdən ikinci sözün hansı istiqamətdə axtarılacağını göstərir. (+ - sonra, - əvvəl)

Joker "*" yalnız sözün sonunu əvəz etmək üçün istifadə edilə bilər

Qeyri-səlis operator "#". Əgər adın dəqiq yazılışı bilinmirsə.

Proqram vasitələri və alətləri 1s: proqramlaşdırma.

Sinonim operator "!". Söz və onun sinonimlərini tapmağa imkan verir

Tam mətn axtarış indeksini proqramlı şəkildə necə yeniləmək olar?

Code 1C v 8.x Prosedur UpdateIndexes() Export
FulltextSearch.UpdateIndex();
EndProcedure

Tam mətn data axtarış nümunəsi

Dəyişən tərifli axtarış siyahısı

Kod 1C v 8.x Dəyişən Axtarış Siyahısı;

Bundan əlavə, hadisənin işlənməsi prosedurunda Forma açıldıqda, biz müəyyən edirik ki, bu dəyişən tam mətnli axtarış siyahısını ehtiva edəcək, onun köməyi ilə məlumatlarda axtarış edəcəyik.

Kod 1C v 8.x Proseduru OnOpen()
SearchList = FullTextSearch.CreateList();
EndProcedure

İndi Tap düyməsini sıxmaq hadisəsi üçün SearchExpression sahəsində göstərilən ifadəyə uyğun olaraq axtarış aparmağa imkan verəcək kodu yazaq.

Code 1C v 8.x Proseduru FindClick(Element)
SearchList.SearchString = SearchExpression;
Cəhd
SearchList.FirstPart();
İstisna
Xəbərdarlıq (ErrorDescription());
Cəhdin sonu;
SearchList.TotalCount() = 0 olarsa
FormElements.MessageOResult.Value = "Tapılmadı";
FormElements.SearchResult.SetText("");
Əks halda
PrintSearchResult();
EndIf;
EndProcedure

Bu prosedurda ilk olaraq istifadəçinin daxil etdiyi axtarış ifadəsini tam mətn axtarışı üçün axtarış sətri kimi təyin edirik. Sonra biz FirstPart() metodunu icra edirik ki, bu da əslində tam mətn axtarışına başlayır və nəticələrin ilk partiyasını qaytarır. Varsayılan olaraq, bir hissə 20 elementdən ibarətdir. Bundan sonra axtarış siyahısındakı elementlərin sayını təhlil edirik. Əgər onun tərkibində heç bir element yoxdursa, o zaman formada müvafiq mesajı göstəririk. Əks halda, nəticələri istifadəçiyə göstərən OutputSearchResult() proseduru çağırılır.

Forma modulunda eyni adlı prosedur yaradaq və kodu ona yazaq,

Kod 1C v 8.x Proseduru DisplaySearchResult()
FormElements.MessageOResult.Value = "Göstərildi" + String(SearchList.StartingPosition() + 1) + " - " + String(SearchList.StartingPosition() +SearchList.Count()) + "from" + SearchList.FullCount();
Nəticə = SearchList.GetDisplay(FullTextSearchDisplayType.HTMLText);
FormElements.SearchResult.SetText(Nəticə);
Əlçatanlıq Düymələri();
EndProcedure

Bu prosedurun addımları sadədir. Əvvəlcə hansı elementlərin göstərildiyi və cəmi neçə elementin tapıldığı barədə bir mesaj yaradırıq. Sonra tam mətnli axtarışın nəticəsini HTML mətni formasında alırıq və bu mətni formada yerləşən HTML sənədinin sahəsində göstəririk.

Nəhayət, biz Əvvəlki hissə və Sonrakı hissə düymələrini əlçatan etmək və ya əksinə (nəticələrin hansı hissəsinin göstərilməsindən asılı olaraq) girişi qadağan etmək üçün nəzarəti ButtonsAccess() proseduruna köçürürük. Bu prosedurun mətni Məcəllədə təqdim olunur

Kod 1C v 8.x Düymə Əlçatanlıq Proseduru()
FormElements.NextPortion.Availability = (SearchList.FullCount() - SearchList.StartPosition()) > SearchList.Quantity();
FormElements.PreviousPortion.Availability = (SearchList.StartPosition() > 0);
EndProcedure

İndi PreviousPortion() və NextPortion() düymələrini basmaq üçün hadisə idarəçiləri yaratmalısınız.

Kod 1C v 8.x Proseduru PrevPartPress(Element)
SearchList.PreviousPart();
PrintSearchResult();
EndProcedure
Prosedura NextBatchClick(Element)
SearchList.NextPart();
PrintSearchResult();
EndProcedure

Son "toxunma" formada yerləşən HTML sənəd sahəsinin onclick hadisəsi üçün hadisə idarəedicisinin yaradılması olacaq. Fakt budur ki, HTML mətni kimi təqdim edilən tam mətnli axtarışın nəticəsi axtarış siyahısı elementlərinin nömrələrinə hiperlinkləri ehtiva edir. Biz istərdik ki, istifadəçi bu linki kliklədikdə sistem bu siyahı elementində olan obyektin formasını açsın. Bunun üçün biz HTML sənədi sahəsində olan HTML sənədinin onclick hadisəsini kəsəcəyik, hiperlinkdən siyahı elementinin nömrəsini alacağıq və müvafiq obyektin formasını açacağıq. HTML sənəd sahəsinin onclick hadisə idarəedicisinin mətni kodda təqdim olunur

Code 1C v 8.x ProcedureSearchResultonclick(Element, pEvtObj)
htmlElement = pEvtObj.srcElement;
// Element identifikatorunu yoxlayın
Əgər (htmlElement.id = "FullTextSearchListItem") Sonra
// Fayl adını əldə edin (axtarış siyahısı sətir nömrəsi),
// hiperlinkdə var
NumberInList = Number(htmlElement.nameProp);
// Axtarış siyahısı sətirini nömrə ilə əldə edin
SelectedRow = AxtarışList[SiyahıNömrəsi];
// Tapılan obyektin formasını açın
OpenValue(SelectedRow.Value);
pEvtObj.returnValue = Yanlış;
EndIf;
EndProcedure

ZƏNG

Bu xəbəri sizdən əvvəl oxuyanlar var.
Ən son məqalələri əldə etmək üçün abunə olun.
E-poçt
ad
soyad
“Zəng”i necə oxumaq istərdiniz
Spam yoxdur