A CSENGŐ

Vannak, akik előtted olvassák ezt a hírt.
Iratkozzon fel a legújabb cikkekért.
Email
Név
Vezetéknév
Hogy szeretnéd olvasni a Harangszót
Nincs spam

Az új keresés funkcionalitása két mechanizmuson alapul:
- teljes szöveges keresés (nagyon gyorsan működik, és minimális számítási erőforrást igényel);
- keresés DBMS segítségével (általános esetben a keresés időtartama és a számítási erőforrások költsége arányos a táblázatban szereplő információ mennyiségével).

A jelenlegi megvalósításban a lista keresésre kerül használat nélkül teljes szöveges keresés a következő esetekben ():
- a teljes szövegű index le van tiltva az infobázis szintjén;
- a főtábla objektumát nem indexeli a teljes szövegű index;
- a teljes szöveges kereséssel végzett keresés eredményeként hiba érkezett.

Ha az infobázisban engedélyezve van a teljes szöveges keresés, és az index egyáltalán vagy részben nem frissül (az Ügyfél információbázisainak 95%-ának gyakorlata szerint), akkor a felhasználó a keresés során megbízhatatlan vagy üres keresési eredményt kap. .

Megkérdezzük az 1C cégtől – hogyan legyünk? Hogyan biztosítható, hogy a keresési eredmények mindig érvényesek legyenek?
Megkapjuk a választ: Igen, ahhoz, hogy a keresési eredmények naprakészek legyenek, amikor a teljes szöveges keresés engedélyezve van, gondoskodnia kell arról, hogy a teljes szöveges keresési index naprakész legyen. Nincs más lehetőség a hatékony és naprakész keresésre. az aktuális keresés még ().

És általában van-e "valódi teljes szövegű index"? Függ a felhasználók számától, az adatbázis információváltozásának intenzitásától és az indexfrissítések gyakoriságától. Az indexfrissítés általában 60 másodpercenként fut. Nos, ha nem sok objektumot változtattak meg, és az eljárásnak sikerült az összes változást feldolgozni ebben a 60 másodpercben. És ha egy dokumentumcsoport újbóli közzétételét vagy a címtár tömeges átírását végezné el? Ebben az esetben senki sem tudja garantálni azt az időt, amely után az indexben végzett keresés ismét megbízható adatokat ad.
Ez elvileg nem különösebben kritikus, kivéve néhány helyzetet. Gyakori lehetőség a felhasználók számára az, hogy a listában valamilyen érték alapján kiválasztanak egy kijelölést, például "Szerződés fél", beírnak egy újat, vagy másolnak egy meglévő dokumentumot, és írják le. A régi kereséssel az új dokumentum azonnal látható volt a listában. A felhasználó most a legjobb esetben is csak N másodperc után fogja látni, ahol N közelebb van 50-60 másodperchez, nem pedig 2-3-hoz.
Ha nem veszi észre, hogy nincs új dokumentum, és a kiválasztott eredmények alapján ad tájékoztatást valakinek, akkor nyilvánvalóan megbízhatatlan lesz.

Ez az információs bázissal végzett normál munka esetén történt. Mi történik konkrét helyzetekben? Mondok egy-két példát.
1) A működő adatbázisban a teljes szövegű index engedélyezve van és gyakran frissül. A felhasználó azt kéri, hogy telepítse neki a működő adatbázis egy példányát, hogy elemezze a rajta lévő adatokat.
Visszaállítjuk a biztonsági másolatot, és hozzáférést biztosítunk. De a teljes szöveges keresés nem fog működni, mert. az index nem a DBMS-ben, hanem külön fájlokban van tárolva (a fájlban és a kliens-szerver verzióban is). Az index nincs a dt fájlban.
azok. ahhoz, hogy a felhasználó használni tudja a listás keresést, ebben az adatbázisban ki kell kapcsolni a teljes szöveges indexet. Igaz, a felhasználó kissé meg fog lepődni, hogy a keresés sokkal tovább tart. Vagy építse újra az indexet a teljes adatbázisban.

2) (Tényleges többé-kevésbé nagy alapokra). Az éles adatbázisban a teljes szövegű index engedélyezve van, és gyakran frissül. Eljön a hónap vége és kezdődik az időszak lezárása. Megkezdjük a dokumentumok tömeges betöltését és átadását. A rendszer terhelésének csökkentése érdekében az ütemezett feladatok végrehajtását blokkoljuk, és az indexfrissítés leáll. A felhasználók finoman szólva is tanácstalanok lesznek – miért nincsenek új vagy megváltozott dokumentumok a listákon. Az egyetlen kiút az infobázis teljes szöveges keresésének letiltása, és ennek megfelelően a berendezés még nagyobb terhelése az összes részlet intenzív keresése miatt.

Így számomra úgy tűnik, hogy az indexfrissítési művelet újabb fejtörést okoz az infobázis rendszergazdái számára.
A korábban az információk 100%-os pontosságát és relevanciáját garantáló rendszer mostanra inkább referenciarendszerré alakul, amelyben nem lehet teljesen biztos.
A felhasználók pedig újabb okot kapnak arra, hogy szemrehányást tegyenek az informatikusoknak: "a rendszer nem működik megfelelően".

Annak ellenére, hogy a 8.3-as platformon a teljes szöveges keresést a fejlesztők már régen bejelentették (a 8.3.5-ös platform óta), a szabványos konfigurációkban nem használták aktívan. Az Enterprise Accounting 3.0 legutóbbi kiadásaiban a fejlesztők számos listába belefoglalták a teljes szöveges keresést. Felhasználóim számára ez sokkolónak bizonyult - a program leállította a keresést.

Természetesen a teljes szöveges keresés működik, de a felhasználók, akik nem látják a "Keresés" ablakot, összezavarodnak. Tipikus használati forgatókönyv: Kezdje el a gépelést a billentyűzeten, miközben gépelés közben megjelenik egy "Keresés" ablak, amely jelzi a keresendő mezőt, a keresendő szöveget és a "String része" keresési módot.

Az enter gomb megnyomásával a lista szűrésre kerül, a lista felett megjelenik egy keresési állapotsor. A felhasználó maga határozza meg, hogy melyik területen és mit keres. Az új keresés azonnal működni kezd, amint beírta, és a listában megjelenő összes mezőre kihat. Külön ablak nem jelenik meg, a keresési szavak összes egyezése színnel kiemelve.

Néhány napig új kereséssel éltünk. A felhasználók szenvedtek, panaszkodtak, szabotáltak. A panaszok nem szűntek meg, a vezetőség azt a feladatot kapta, hogy "minden úgy legyen, ahogy volt".

Hol kezdjem? Meg kell értenie, hogy a formák miben különböznek egymástól. Letöltöttem a konfigurációs forráskódokat az új keresési viselkedéssel és a régivel, és összehasonlítottam az űrlapok forráskódjait.

A "Keresési karakterlánc" típusú űrlapelem hozzáadása felelős az új teljes szöveges keresés funkcionalitásáért. Világossá vált, mit kell keresni. Találtam egy cikket az ITS 7.3.1.5-ről. Keresés a dinamikus listában. Ezt a cikket megvizsgálva arra a következtetésre jutottam, hogy a keresés új működési módja két tényezőtől függ: 1. Az űrlapnak rendelkeznie kell a fenti űrlapelem-kiegészítéssel, 2. Az űrlapon lévő dinamikus listának a "SearchStringPosition" tulajdonsággal kell rendelkeznie, amely nem egyenlő "Egyik sem".

Elméletileg egy űrlap készítésekor a szerveren elég a "SearchString Position" list tulajdonságot "SearchString Position. No"-ra állítani, de ez nem minden űrlapnál működött, esetenként az új keresés tovább működött. A nem programozottan létrehozott űrlapelemeket nem tudjuk programozottan törölni, de a láthatóság szabályozható. Ha az "AdditionSearchString" űrlapelemet eltávolítják a láthatóságból, a teljes szövegű új keresés is leáll. A kísérletek során a következő kód született, amit az általános modulban helyeztem el:

Eljárás NewSearchInLists(Form) letiltása Export List = Form.Items.Find("List"); Ha Lista = Undefined, akkor Return; EndIf; List.SearchStringPosition = SearchStringPosition.None; AdditionSearchString = Form.Elements.Find("AdditionSearchString"); Ha NEM ComplementSearchString = Undefined, akkor ComplementSearchString.Visibility = False; EndIf; Vége eljárás

Az „Új keresés letiltása a listákban” eljárásban át kell adnia a javított űrlapot. De hogyan lehet ezt minden formánál egyszerre megtenni?

Az első megoldás a szükséges űrlapok manuális javítása a konfigurátorban az űrlapszerkesztő segítségével. Azonnal visszautasítottam ezt a döntést - hosszú és sivár, és nehéz később frissíteni a konfigurációt.

A második megoldás egy eljárás meghívása az űrlap megnyitásakor, amely programozottan letiltja az új keresést. Az eljárás bármely más eljárásból hívható, melynek indítása már minden formában regisztrálva van, ebben az esetben további frissítésekkel csak ezt az eljárást kell majd figyelemmel kísérnünk - hogy ne változzon. A GeneralModule.ManagePrint-et választottam, amely a következőket tartalmazza:

OnCreateOnServer(Űrlap,DefaultCommandPlace,PrintObjects) Export

Ezt az eljárást akkor hívják meg, amikor egy űrlapot hoznak létre a kiszolgálón a nyomtatási parancsok kitöltéséhez. Ebben az eljárásban megírjuk azt a kódot, amely meghívja a függvényünket az új keresés letiltásához a listákban:

MyGeneralModule.Disable NewSearchInLists(Form);

A könyvelők élvezik a régi keresést, mi pedig arra készülünk, hogy az Enterprise Accounting 3.0 kompatibilitási módja mikor teszi lehetővé számunkra, hogy ezt a funkciót egy bővítményre portoljuk.

Eddig kevesen tudják, hogy a 8.1-es verziótól kezdve az 1C:Enterprise platform egy csodálatos és nagyon hasznos mechanizmussal rendelkezik - a teljes szöveges kereséssel. Ami? Hogyan lehet hasznos az Ön számára? Ezekre a kérdésekre ad választ V.V. cikkében. Horgászat, cég "1C".

Először is néhány szót arról, hogy milyen mechanizmusról van szó. A teljes szöveges keresés egyszerű kifejezésekkel lehetővé teszi, hogy szöveges információkat találjon a használt konfigurációban szinte bárhol. Ugyanakkor megkeresheti a szükséges adatokat vagy a teljes konfiguráció egészében, vagy a keresési területet néhány objektumra szűkítve (például bizonyos típusú dokumentumokra vagy könyvtárakra). Maguk a keresési feltételek meglehetősen széles tartományban változhatnak. Vagyis megtalálhatja a szükséges adatokat anélkül, hogy pontosan emlékezne arra, hogy a konfigurációban pontosan hol vannak tárolva, és hogyan rögzítik őket pontosan.

A teljes szöveges keresés a következő funkciókat kínálja.

  1. Támogatja az átírást (az orosz szavak latin karakterekkel történő írása a GOST 7.79-2000 szerint). Példa: "orosz kifejezés" = "orosz fraza".
  2. Támogatja a helyettesítést (a karakterek egy részének orosz szavakkal történő írása egybillentyűs latin karakterekkel). Példa: "russrfz frapf" (az egyes szavak végződései például egy operátori hiba következtében latinul vannak beírva).
  3. Lehetőség van fuzzy keresésre (a talált szavak betűi eltérhetnek) a fuzzy küszöb jelzésével. Példa: a "hello" szó megadásával a keresési karakterláncban és a 17%-os elmosódottsággal minden hasonló szót megtalálunk hibával és hiba nélkül: "hello", "hello", "bring".
  4. Lehetőség van a kiválasztott metaadat-objektumok keresésének hatókörének megadására.
  5. A szabványos mezők nevének teljes szöveges indexelése ("Kód", "Leírás" stb.) minden konfigurációs nyelven megtörténik.
  6. A keresést az orosz, angol és ukrán nyelvek szinonimáinak figyelembevételével hajtják végre.
  7. Az orosz nyelv morfológiai szótára számos konkrét szót tartalmaz, amelyek az 1C:Enterprise programrendszerrel automatizált tevékenységi területekhez kapcsolódnak.
  8. A szállított szótárak standardként tartalmaznak szótáradatbázisokat és szótárakat a tezauruszról, valamint az orosz, ukrán és angol az Informatik biztosítja.
  9. Kereshet helyettesítő karakterek ("*"), valamint keresési operátorok ("AND", "OR", "NOT", "NEAR") és speciális karakterek megadásával.

A teljes szöveges keresés az 1C:Enterprise 8.1 platformon bármilyen konfigurációban végrehajtható.

Ez vonatkozik a 8.0-s verzióról átalakított konfigurációkra is. A teljes szöveges keresési lehetőségek engedélyezéséhez egyszerűen lépjen be a konfiguráció "Műveletek" menüjébe, válassza ki a "Teljes szöveges keresés kezelése" elemet, majd engedélyezze ezt a funkciót (lásd 1. ábra).

Rizs. egy

Ha tipikus konfigurációkat használ a 8.1-es platformon, akkor valószínűleg már be van építve az "Adatkeresés" feldolgozás ("Eszközök" / "Adatkeresés" menü). Ha ez a feldolgozás hiányzik a használt konfigurációban, ez nem számít.

Mindig megtalálható az ITS lemezen. Ebben a cikkben az „Enterprise Accounting” (1.6-os rev.) demókonfigurációban ennek a konkrét feldolgozásnak a munkájára fogunk példákat használni a teljes szöveges keresési lehetőségek bemutatására.

Mint már említettük, a keresés több szóval, keresési operátorokkal és a pontos kifejezéssel is végrehajtható. Ezenkívül a keresési hely korlátozható meghatározott konfigurációs objektumokra (pl. a termelési szolgáltatásokról szóló törvény dokumentumaira) vagy konfigurációs objektumok listájára/készletére.

Adatok keresésekor megengedett a keresési operátorok használata a táblázatban megadott keresési karakterláncban (minden operátort csak NAGYBETŰVEL és idézőjel nélkül kell megadni).

asztal


Ne feledje: ha nincs megadva operátor (a szavak szóközzel vannak beírva), a program az "AND" operátor segítségével megkeresi a lekérdezés összes szóját.

Rizs. A 2. ábra egy egyszerű szórész-keresés példáját mutatja be. A "remény *" beírásával egy linket kaptunk a következőre: Egyedi, valamint azokon a dokumentumokon, amelyek megjegyzéseiben a „Megbízható ügyfél” kifejezés szerepel.


Rizs. 2

Rizs. A 3. ábra példát mutat egy összetettebb keresésre, amely az "OR" konstrukciót használja a keresési karakterláncban, és korlátozza a keresési területet a "Nómenklatúra" címtárban és az "Áruk és szolgáltatások átvétele", "Áruk és szolgáltatások értékesítése" dokumentumokban. Jól látható, hogy a keresés a teljes nómenklatúrát tükrözte, amelynek nevei vagy a „teáskanna” szót vagy a „BINATONE” szót tartalmazzák, valamint az összes ilyen típusú dokumentumot, amely az összes vonatkozó nómenklatúrát tartalmazza.


Nem minden könyvelő tud erről. hasznos eszköz 1C-ben: Számvitel 8, teljes szöveges keresésként. A teljes szöveges keresési mechanizmus lehetővé teszi, hogy szöveges információkat találjon bárhol a konfigurációban.

A teljes szöveges keresés az "Adatkeresés" feldolgozás segítségével történik, amely az "Eszközök" menüben található:

Nézzünk meg néhány példát a teljes szöveges keresési mechanizmus működésére.

1. példa Tegyük fel, hogy gyorsan meg kell találnunk egy bizonyos termék, például a Marlboro cigaretta átvételéhez szükséges dokumentumokat.
Az "Eszközök" menüben válassza az "Adatkeresés" lehetőséget. A megnyíló ablak felső mezőjében írja be a "Marlboro" keresési lekérdezést, és kattintson a "Keresés" gombra:


2. példa Szervezetünk irodát bérel a Rumyantsev üzleti központ közelében. Gyorsan meg kell találni az adatbázisban a 2010. márciusi bérleti szerződést. A következő keresési lekérdezést végezzük:


3. lehetőség. Tegyük fel, hogy az áruk kiszállításakor a következő megjegyzést hagytuk néhány dokumentumban „Áruk és szolgáltatások értékesítése” - „Késleltetett fizetés”. És meg kellett találnunk az összes késéssel szállított dokumentumot. A következő keresési lekérdezést végezzük:

A keresési operátorok (ÉS, VAGY, NEM, KÖZEL) használatával összetettebb keresést is végezhet.
A keresési terület meghatározott konfigurációs objektumokra korlátozható (például az áruk és szolgáltatások nyugtája dokumentum). Ehhez kattintson a "Beállítások" gombra:

Megjelenik egy mező a konfigurációs objektum kiválasztásához. Jelölje be a "Keresési hatókör korlátozása" jelölőnégyzetet, és kattintson a "Metaadat-objektumok kiválasztása a kereséshez" gombra:

Például válassza ki az „Áruk és szolgáltatások átvétele” dokumentumot.

Marad a keresési lekérdezés megadása és a keresés.

Az "Adatkeresés" feldolgozás alján az index relevanciája tükröződik. Ha azt látja, hogy "Az index nem naprakész", kattintson az "Index frissítése" gombra.

Teljes szöveges keresés- lehetővé teszi a szöveges információk megtalálását a használt konfigurációban szinte bárhol elhelyezve. Ugyanakkor megkeresheti a szükséges adatokat vagy a teljes konfiguráció egészében, vagy a keresési területet néhány objektumra szűkítve (például bizonyos típusú dokumentumokra vagy könyvtárakra). Maguk a keresési feltételek meglehetősen széles tartományban változhatnak. Vagyis megtalálhatja a szükséges adatokat anélkül, hogy pontosan emlékezne arra, hogy a konfigurációban pontosan hol vannak tárolva, és hogyan rögzítik őket pontosan.

A teljes szöveges keresés a következő funkciókat kínálja:

  • Támogatja az átírást (az orosz szavak latin karakterekkel történő írása a GOST 7.79-2000 szerint). Példa: "orosz kifejezés" = "orosz fraza".
  • Támogatja a helyettesítést (a karakterek egy részének orosz szavakkal történő írása egybillentyűs latin karakterekkel). Példa: "russrfz frapf" (az egyes szavak végződései például egy operátori hiba következtében latinul vannak beírva).
  • Lehetőség van fuzzy keresésre (a talált szavak betűi eltérhetnek) a fuzzy küszöb jelzésével. Példa: a "hello" szó megadásával a keresési karakterláncban és a 17%-os elmosódottsággal minden hasonló szót megtalálunk hibával és hiba nélkül: "hello", "hello", "bring".
  • Lehetőség van a kiválasztott metaadat-objektumok keresésének hatókörének megadására.
  • A szabványos mezők nevének teljes szöveges indexelése ("Kód", "Leírás" stb.) minden konfigurációs nyelven megtörténik.
  • A keresést az orosz, angol és ukrán nyelvek szinonimáinak figyelembevételével hajtják végre.
  • Az orosz nyelv morfológiai szótára számos konkrét szót tartalmaz, amelyek az 1C:Enterprise programrendszerrel automatizált tevékenységi területekhez kapcsolódnak.
  • A szállított szótárak alapértelmezésként tartalmazzák az Informatik által biztosított szókincs-adatbázisokat és a tezaurusz szótárait, valamint az orosz, ukrán és angol szinonimákat.
  • Kereshet helyettesítő karakterek ("*"), valamint keresési operátorok ("AND", "OR", "NOT", "NEAR") és speciális karakterek megadásával.

A teljes szöveges keresés az 1C:Enterprise 8 platform bármely konfigurációjában elvégezhető

A teljes szövegű keresés vezérlőablakának megnyitásához tegye a következőket:

Általános alkalmazás- menü tétel Műveletek – Teljes szöveges keresés kezelése.

Felügyelt alkalmazás- menü tétel Főmenü - Minden funkció - Normál -Teljes szöveges keresés kezelése.


  • Index frissítése– Index létrehozása/Index frissítése;
  • Index törlése– az index nullázása (az összes adat frissítése után javasolt);
  • elem Index egyesítés engedélyezése- felelős a fő- és a kiegészítő index összevonásáért.

A teljes szövegű keresés teljes szövegű index segítségével történik. Index hiányában a teljes szöveges keresés önmagában nem lehetséges. A sikeres kereséshez minden szükséges adatnak szerepelnie kell a teljes szöveges indexben. Ha a felhasználó új adatot visz be az adatbázisba, akkor azt a kérdéses indexben fel kell venni, ellenkező esetben nem vesz részt a keresésben. Ennek elkerülése érdekében frissítenie kell a teljes szövegű indexet. Frissítéskor a rendszer csak bizonyos típusú adatokat elemzi: Karakterlánc, Hivatkozás típusú adatok (hivatkozások dokumentumokra, könyvtárak), Szám, Dátum, Értéktár. Ha a felhasználónak nincs hozzáférési joga bizonyos információkhoz, akkor azt nem fogja látni a keresési eredmények között. Emlékeztetni kell arra is, hogy az objektumok azon tulajdonságait, amelyek alapján a keresést végrehajtani kell, be kell állítani Teljes szöveges keresés – Használat, amely alapértelmezés szerint be van állítva.

Amint látja az ingatlan Használat beállítva a teljes könyvtárra Ügyfelek, de ez megtehető a megfelelő típusú attribútumainak mindegyikére is.

Tekintsük részletesebben a teljes szövegű indexet, amely két részből (indexből) áll: a fő indexből és a kiegészítő indexből. Magassebesség Az adatok visszakeresése a főindex rovására történik, frissítése azonban az adatmennyiségtől függően viszonylag lassú. A komplementer index ennek az ellentéte. Az adatok sokkal gyorsabban kerülnek hozzáadásra, de a keresés lassabb. A rendszer egyszerre keres mindkét indexben. Az adatok nagy része a fő indexben található, míg a rendszerhez hozzáadott adatok a másodlagos indexbe kerülnek. Amíg a másodlagos index adatmennyisége kicsi, a keresés viszonylag gyors. Amikor a rendszer terhelése alacsony, index-összevonási művelet történik, amelynek eredményeként a kiegészítő index törlődik, és minden adat a fő indexbe kerül. Célszerű az indexeket olyan időpontban egyesíteni, amikor a rendszer terhelése minimális. Ebből a célból szabályozott és ütemezett feladatokat hozhat létre.

Speciális operátorok megengedettek a keresési kifejezés megadásakor

A teljes szöveges keresési mechanizmus lehetővé teszi az orosz szó karaktereinek egy részének egybillentyűs latin karakterekkel történő írását. A keresés eredménye nem változik.

Két operátor egymás mellett

  • egyszerűsített. 8 szó különbséggel
  • NEAR/[+/-]n – adatok keresése egy attribútumban, köztük n-1 szó távolságra.

A jel jelzi, hogy az első szótól kezdve a második szó melyik irányban lesz keresve. (+ - után, - előtt)

A „*” helyettesítő karakter csak a szóvég helyettesítésére használható

A "#" fuzzy operátor. Ha a név pontos írásmódja nem ismert.

Szoftvereszközök és eszközök 1s: programozás.

"!" szinonimája. Lehetővé teszi egy szó és szinonimáinak megtalálását

Hogyan frissíthető programozottan a teljes szöveges keresési index?

Code 1C v 8.x UpdateIndexes() Exportálási eljárás
FulltextSearch.UpdateIndex();
Vége eljárás

Példa teljes szöveges adatkeresésre

Változódefiníciós keresési lista

Code 1C v 8.x Variable SearchList;

Ezenkívül az esemény feldolgozásának eljárásában Az űrlap megnyitásakor meghatározzuk, hogy ez a változó tartalmazzon egy teljes szöveges keresési listát, amelynek segítségével az adatokban fogunk keresni.

Code 1C v 8.x OnOpen() eljárás
SearchList = FullTextSearch.CreateList();
Vége eljárás

Most arra az esetre, ha a Keresés gombra kattintunk, írjuk be azt a kódot, amely lehetővé teszi a keresést a SearchExpression mezőben megadott kifejezésnek megfelelően

Code 1C v 8.x FindClick eljárás (elem)
SearchList.SearchString = SearchExpression;
Kísérlet
SearchList.FirstPart();
Kivétel
Figyelmeztetés(ErrorDescription());
A kísérlet vége;
Ha SearchList.TotalCount() = 0 Akkor
FormElements.MessageOResult.Value = "Nem található";
FormElements.SearchResult.SetText("");
Másképp
PrintSearchResult();
EndIf;
Vége eljárás

Ebben az eljárásban először a felhasználó által beírt keresési kifejezést állítjuk be keresési karakterláncként a teljes szöveges kereséshez. Ezután végrehajtjuk a FirstPart() metódust, amely ténylegesen elindítja a teljes szöveges keresést, és visszaadja az első találati köteget. Alapértelmezés szerint egy rész 20 elemet tartalmaz. Ezt követően elemezzük a keresési lista elemeinek számát. Ha nem tartalmaz elemet, akkor a megfelelő üzenetet jelenítjük meg az űrlapon. Ellenkező esetben az OutputSearchResult() eljárás kerül meghívásra, amely megjeleníti az eredményeket a felhasználó számára.

Hozzunk létre egy azonos nevű eljárást az űrlap modulban, és írjuk bele a kódot,

Code 1C v 8.x Procedure DisplaySearchResult()
FormElements.MessageOResult.Value = "Megjelenítve" + Karakterlánc(Keresési lista.Kezdőpozíció() + 1) + " - " + Karakterlánc(Keresési lista.Kezdőpozíció() +Keresési lista.Szám()) + "from" + Keresési lista.TeljesSzám();
Eredmény = SearchList.GetDisplay(FullTextSearchDisplayType.HTMLText);
FormElements.SearchResult.SetText(Result);
AccessibilityButtons();
Vége eljárás

Ennek az eljárásnak a lépései egyszerűek. Először üzenetet formálunk arról, hogy milyen elemek jelennek meg, és hány elemet találtunk összesen. Ezután megkapjuk a teljes szöveges keresés eredményét HTML szöveg formájában, és ezt a szöveget megjelenítjük az űrlapon található HTML dokumentum mezőjében.

Végül átadjuk a vezérlést a ButtonsAccess() eljárásnak, hogy elérhetővé tegyük, vagy éppen ellenkezőleg, megtiltsuk a hozzáférést az Előző rész és a Következő rész gombokhoz (attól függően, hogy az eredmények melyik része jelenik meg). Ennek az eljárásnak a szövege a kódexben található

Code 1C v 8.x Gombos kisegítő lehetőségek ()
FormElements.NextPortion.Availability = (SearchList.FullCount() - SearchList.StartPosition()) > SearchList.Quantity();
FormElements.PreviousPortion.Availability = (SearchList.StartPosition() > 0);
Vége eljárás

Most eseménykezelőket kell létrehoznia a PreviousPortion() és NextPortion() gombok megnyomására.

Code 1C v 8.x Eljárás PrevPartPress (Elem)
SearchList.PreviousPart();
PrintSearchResult();
Vége eljárás
Eljárás NextBatchClick(elem)
SearchList.NextPart();
PrintSearchResult();
Vége eljárás

Az utolsó "érintés" egy eseménykezelő létrehozása lesz az űrlapon található HTML dokumentummező onclick eseményéhez. A tény az, hogy a teljes szöveges keresés eredménye, HTML szövegként megjelenítve, hiperhivatkozásokat tartalmaz a keresési lista elemeinek számára. És szeretnénk, ha a rendszer megnyitná az ebben a listaelemben található objektum formáját, amikor a felhasználó erre a hivatkozásra kattint. Ehhez elfogjuk a HTML dokumentum mezőben található HTML dokumentum onclick eseményét, megkapjuk a listaelem számát a hiperhivatkozásból, és megnyitjuk a megfelelő objektum űrlapját. A HTML dokumentummező onclick eseménykezelőjének szövege megjelenik a kódban

Code 1C v 8.x ProcedureSearchResultonclick (Elem, pEvtObj)
htmlElement = pEvtObj.srcElement;
// Ellenőrizze az elemazonosítót
If (htmlElement.id = "FullTextSearchListItem") Akkor
// Fájlnév lekérése (keresési lista sorszáma),
// hiperhivatkozásban található
NumberInList = Szám(htmlElement.nameProp);
// A keresési lista lekérése szám szerint
SelectedRow = Keresési lista[Listaszám];
// Nyissa meg a talált objektum formáját
OpenValue(SelectedRow.Value);
pEvtObj.returnValue = Hamis;
EndIf;
Vége eljárás

A CSENGŐ

Vannak, akik előtted olvassák ezt a hírt.
Iratkozzon fel a legújabb cikkekért.
Email
Név
Vezetéknév
Hogy szeretnéd olvasni a Harangszót
Nincs spam