Otsige praeguse väärtuse järgi.

Tere kõigile
Täna paluti rakendusdokumendi printimisel dokumendi eesliidet mitte kuvada, lahendasin probleemi järgmiselt.

StrReplace(Arv, Lev(Arv, 3), "" );

Kui uurisin süntaksiabi, meeldis see mulle nii väga, et tahtsin sellest kirjutada stringidega töötamine rakenduses 1C:Enterprise.

String 1C-s viitab primitiivsele andmetüübile.

Kui vaatate 1C abi, näeme stringitüübi järgmist kirjeldust:
Seda tüüpi väärtused sisaldavad suvalise pikkusega Unicode'i stringi.
Kui kasutate stringide kohta oma sõnu, siis see toimib. String on konstant, mis koosneb erinevatest märkidest, mis on alati ümbritsetud jutumärkidega.

Joone seadmine
Tervitus = "Tere reisija";

Tüüpiliste konfiguratsioonide mitmerealised read luuakse enamasti vertikaalse eraldaja “|” abil:
String = "Mitmerealine
|string
|kirjutada
|tekst";

Stringi sees olev jutumärk määratakse jutumärkidega.
String = ""Tekst jutumärkides"";

Stringidega on palju toiminguid (stringi seest otsimine, esimeste määramine jne), parem on vaadata süntaksiabi.
Süntaksiabimees - Sisseehitatud keele üldine kirjeldus -> sisseehitatud funktsioonid -> funktsioonid stringidega töötamiseks.

Funktsioonid stringidega töötamiseks

Siin on lühike kokkuvõte stringidega töötamise funktsioonidest:

VReg(<Строка>) — Funktsioon teisendab kõik stringis olevad märgid suurtähtedeks.

SymbolCode(<Строка>, <НомерСимвола>) – Funktsioon võtab vastu edastatud stringis asuva märgi koodi määratud numbriga kohas.

Lõvi(<Строка>, <ЧислоСимволов>) – Funktsioon valib stringi esimesed vasakpoolsed märgid.

Leia (<Строка>, <ПодстрокаПоиска>) — Funktsioon leiab otsingustringi esinemise lähtestringis alamstringina.

NReg(<Строка>) — Funktsioon teisendab kõik stringis olevad märgid väiketähtedeks.

õige(<Строка>, <ЧислоСимволов>) – See funktsioon erineb vasakpoolsetest funktsioonidest selle poolest, et see valib stringist paremalt viimased märgid.

Tühi rida (<Строка>) — Funktsioon kontrollib stringi oluliste märkide olemasolu suhtes.

Sümbol(<КодСимвола>) — Funktsioon teisendab märgikoodi tähemärki sisaldavaks stringiks.

AbbrL(<Строка>) — Funktsioon lõikab ära ebaolulised märgid, mis jäävad stringi esimesest olulisest märgist vasakule.

AbbrLP(<Строка>) — Funktsioon kärbib ebaolulised märgid rea esimesest olulisest märgist vasakule ja tühikud rea viimasest olulisest märgist paremale.

Lühend (<Строка>) — Funktsioon lõikab ära ebaolulised märgid stringi viimasest olulisest märgist paremal.

kolmapäev (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — Funktsioon valib tähemärgist alustades tähejada<НачальныйНомер>, koguarv<ЧислоСимволов>.

Tugevus(<Строка>) — Funktsioon hangib real olevate märkide arvu.

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) — Funktsioon leiab kõik otsitava alamstringi esinemised lähtestringist ja asendab selle asendava alamstringiga.

StrGetString(<Строка>, <НомерСтроки>) - Funktsioon saab mitmerealise stringi numbri järgi.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) — Funktsioon arvutab otsitava alamstringi esinemiste arvu lähtestringis.

StrNumberRow(<Строка>) — Funktsioon loendab ridade arvu mitmerealises stringis. Mitmerealises stringis eraldatakse read reavahetustega.

Treg(<Строка>) — Funktsioon teisendab stringi pealkirja suurtähtedeks. See tähendab, et iga sõna esimene täht teisendatakse pealkirja suurtähtedeks või suurtähtedeks, kui märgi jaoks pole pealkirja suurtähti määratud. Ülejäänud märgid teisendatakse väiketähtedeks.

Tüüp Konversioonid
Andmetüüpide selgesõnaliseks teisendamiseks on olemas sama nimega funktsioonid andmetüübiga, milleks teisendamine toimub: String(<Значение>)

StringFromNumbers = String(arv);

Kõiki neid funktsioone kirjeldatakse üksikasjalikult süntaksiabis; kirjeldasin artiklis, kuidas süntaksiabi saab aidata algajat programmeerijat.

Näited stringidega töötamiseks

Arvu teisendamine stringiks ja tagasi.

Aasta stringi esituse saamiseks kasutage funktsiooni Vorming.

Aasta = vorming(praegune kuupäev(), "DF=yyyy") // Aasta = "2012"

Arvu teisendamiseks stringiks ilma rühmaeraldusmärki lisamata (mittemurdev tühik) peate kasutama funktsiooni Format parameetriga NG=0:

Arv = 2012. rida = vorming (arv, "NH=0" ); //String = "2012"

String Tühikuteta.

Leidke kataloogi üksus 1C 8 võimalik kolmel viisil:

1) Otsige koodi järgi

Kui teada kood kataloogielement ja peate hankima sellele lingi, saate seda meetodit kasutada FindByCode(<Код>, <ПоискПоПолномуКоду>, <Родитель>, <Владелец>) kood kataloogielement ja tulemuseks on kas link kataloogielemendile või tühi link, kui sellise koodiga elementi ei leita. Tuleb märkida, et kui kataloog sisaldab mitut määratud koodiga elementi, tagastatakse see, mis leiti esimesena.

FoundElement = Directories.Nomenclature.FindByCode("00000011254" );

Meetodi parameetrite kirjeldus FindByCode:

  • <Код>(nõutud). Tüüp: number, string. Kirjeldus: vajalik kood, string või number, olenevalt konfiguraatori kataloogi sätetest.
  • <ПоискПоПолномуКоду>(valikuline). Tüüp: Boolean. Kirjeldus: määratleb otsingurežiimi täiskoodi järgi, tõene – otsitav kood tuleks määrata stringina, mis koosneb kataloogitasemete kaupa koodijadadest, eraldatuna sümboliga “/”. Vaikeväärtus: False.
  • <Родитель>(valikuline)
  • <Владелец>(valikuline)

2) Otsige nime järgi

Kui teada Nimi kataloogielement ja peate hankima sellele lingi, saate meetodit kasutada FindByName(<Наименование>, <ТочноеСоответствие>, <Родитель>, <Владелец>) kataloogihaldur. Lihtsamal juhul peate selle meetodi juurde minema Nimi kataloogielement ja tulemuseks on kas link kataloogielemendile või tühi link, kui samanimelist elementi ei leita. Tuleb märkida, et kui määratud nimega kataloogis on mitu elementi, tagastatakse see, mis leiti esimesena.

FoundElement = Directories.Nomenclature.FindByName( "Keevitusmasin");

Meetodi parameetrite kirjeldus FindByName:

  • <Наименование>(nõutud). Tüüp: string. Kirjeldus: string, mis sisaldab otsitavat nime.
  • Täpne vaste> (valikuline). Tüüp: Boolean. Kirjeldus: määrab otsingurežiimi täieliku vastega, otsing õnnestub, kui otsingustring: parameetri väärtuse korral Valetage- vastab parameetri väärtuse puhul nime vasakule küljele Tõsi- kattub täielikult nimega (välja arvatud nimes olevad "saba" tühikud). Vaikeväärtus: False.
  • <Родитель>(valikuline). Tüüp: DirectoryLink. Kirjeldus: vanem, mille piires otsing tuleks läbi viia; kui pole määratud, tehakse otsing kogu kataloogis.
  • <Владелец>(valikuline). Tüüp: DirectoryLink. Kirjeldus: omanik, kelle piires otsing tuleks läbi viia; kui pole täpsustatud, tehakse otsing kogu kataloogis.

3) Otsige suvaliste detailide järgi

Kui mis tahes tähendus rekvisiidid kataloogi ja peate hankima sellele lingi, saate meetodit kasutada FindByDetails(<ИмяРеквизита>, <ЗначениеРеквизита>, <Родитель>, <Владелец>) kataloogihaldur. Lihtsamal juhul peate sellele meetodile edastama atribuudi nime ja selle väärtuse ning selle tulemusel saate kas lingi kataloogielemendile või tühja lingi, kui sellise väärtusega element on määratud määratud väärtusega. atribuuti ei leitud. Tuleb märkida, et kui kataloogis on mitu elementi, mille määratud atribuudi väärtus on sama, tagastatakse see, mis leiti esimesena.

FoundElement = Directories.Nomenclature.FindByRequisites("Artikkel","A-255");

Meetodi parameetrite kirjeldus FindByProps:

  • <ИмяРеквизита>(nõutud). Tüüp: string. Kirjeldus: konfiguraatoris määratud atribuudi nimi, mille väärtuse järgi otsitakse. Väärtuse tüüp: suvaline, välja arvatud ValueStorage ja suvalise pikkusega stringid.
  • <ЗначениеРеквизита>(nõutud). Tüüp: tasuta. Kirjeldus: atribuudi väärtus, mille järgi otsing tuleks läbi viia.
  • <Родитель>(valikuline). Tüüp: DirectoryLink. Kirjeldus: vanem, mille piires otsing tuleks läbi viia; kui pole määratud, tehakse otsing kogu kataloogis.
  • <Владелец>(valikuline). Tüüp: DirectoryLink. Kirjeldus: omanik, kelle piires otsing tuleks läbi viia; kui pole täpsustatud, tehakse otsing kogu kataloogis.

Platvormi versioonis 8.3.6.1977 lisati uusi funktsioone, kuid ärge kiirustage neid kasutama enne, kui kõik lülituvad uutele platvormidele ilma 8.3.5 ühilduvusrežiimita.
Uued funktsioonid on mugavad – kahtlemata ei tööta need kõigi jaoks. Allpool on nimekiri vigade ja pärandvalikutega funktsioonidest, mis töötavad kõigil platvormidel.
Kas uusi funktsioone kasutada või mitte, on teie otsustada, kuid minu subjektiivne arvamus pole veel seda väärt.
Hõlmatud funktsioonid: StrFind(), StrTemplate(), StrCompare(), StrStartsWith(), StrEndsAt(), StrDivide(), StrConnect()

Rakendatud versioonis 8.3.6.1977.

"Oleme laiendanud stringidega töötamiseks mõeldud funktsioonide komplekti. Tegime seda selleks, et anda teile täpsemad tööriistad stringiandmete sõelumiseks. Uued funktsioonid on mugavad ja kasulikud tekstianalüüsi tehnoloogilistes ülesannetes. Parsimisega seotud ülesannetes tekst, mis sisaldab andmeid vormindatud kujul.See võib olla mõne seadmest saadud failide analüüs või näiteks tehnoloogilise logi analüüs. Sa võisid enne teha kõiki toiminguid, mis täidavad uusi funktsioone. Sisseehitatud keeles kirjutatud enam-vähem keerukate algoritmide kasutamine. Seetõttu ei anna uued funktsioonid teile põhimõtteliselt uusi võimalusi. Küll aga võimaldavad need koodi hulka vähendada ning muuta koodi lihtsamaks ja arusaadavamaks. Lisaks võimaldavad need toimingute täitmist kiirendada. Sest platvormis rakendatud funktsioonid töötavad loomulikult kiiremini kui sarnane sisseehitatud keeles kirjutatud algoritm."

Funktsioonid on tegelikult käepärased ja aitavad arendajaid igapäevaste toimingute tegemisel, kuid neid ei saa kasutada ühilduvusrežiimis. Seetõttu peate veel veidi ootama, kuni kõik on aeglaselt platvormi uusimatele versioonidele üle läinud ja saate uuendusi kõhklemata kasutada ja elu nautida.

Kui kirjutate "oma" konfiguratsioonidele, saate teha, mida soovite, kuid kui arendus läheb "kellegi teise" konfiguratsioonile, peaksite mõtlema, millist teed edasi minna:

  • Kasutage uusi funktsioone ja kohustage klienti uuele platvormile üle minema
  • Kontrollige platvormi praegust versiooni ja kasutage uusi funktsioone ja vanu töömehhanisme
  • Kasutage ainult vanu töömehhanisme

Seoses esimese punktiga - õnne korral ei soovi klient alati oma põhjustel uuele platvormile üle minna ja vabandusi on kümneid.

Teise järgi on see ideaalne variant, kuid mitte iga arendaja ei ehita linnu enne iga uue funktsiooni kutsumist, et platvormi versioon teada saada. Kuigi sellel valikul on õigus elule.

Ja kolmandaks - kõige optimaalsem (minu subjektiivne arvamus) palju lihtsam kui teine ​​võimalus, kuid halvem kui esimene, kuna see ei aita uusi platvorme massidele reklaamida

Stringidega töötamise funktsioon StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>)

Funktsioon otsib alamstringi erinevates suundades ja mitte ainult stringi algusest.

Aruanne(StrandFind("2212","1")); //tagasi 3

Ühilduvusrežiimis 8.3.5 ja uuemates versioonides ilmneb tõrge
(ExternalProcessing.ExternalProcessing1.ObjectModule(1,10)): määratud nimega protseduur või funktsioon pole määratletud (Strand Find)
Teatama(<>StrFind("1","2212"));

Olgem rahul sellega, mis meil on

Aruanne(Leia("2212","1")); //tagasi 3

vähem funktsioone, kuid ei jookse veaga kokku

Funktsioon Find() jääb ainult ühilduvuseks versiooniga 8.3.5 ja tulevikus eeldame, et see pole saadaval.


Stringidega töötamise funktsioon StrTemplate(<Шаблон>, <Значение1-Значение10>)

Funktsioon asendab metamärke (nagu %1) mallistringis reaalsete väärtustega.

Teavita(StrTemplate("TERE %1","RAHU!!!"); //tagastab HELLO WORLD!!!

Ühilduvusrežiimis ilmneb tõrge
(ExternalProcessing.ExternalProcessing1.ObjectModule(3,10)): määratud nimega protseduur või funktsioon pole määratletud (StrTemplate)
Teatama(<>StrTemplate("Viga real "" % 1 ""","MinuString"));

Stringidega töötamise funktsioon StrCompare(<Строка1>, <Строка2>)

Funktsioon Teostab stringide tõstutundlikku leksikograafilist võrdlust.

Report(StringCompare("Esimene rida", "Teine rida")); //tagasi 1

Tekkiv viga
(ExternalProcessing.ExternalProcessing1.ObjectModule(5,10)): määratud nimega protseduur või funktsioon pole määratletud (StrCompare)
Teatama(<>StrCompare("Esimene rida", "Teine rida"));

Kuid saate seda teha ka teisiti

Võrdle = New CompareValues; Report(Compare.Compare("Esimene rida", "Teine rida"));

Funktsioon stringidega töötamiseks LineStartsWith(<Строка>,<СтрокаПоиска>)

Funktsioon kontrollib, kas string algab alamstringiga.

SearchString = "http://"; ThisWeb = StringStartsWith("http://google.com", SearchString); Report(ThisWeb);//tagastab Tõene

Tekib viga

Teatama(<>

Kuid saate seda teha vanaviisi

SearchString = "http://"; Report(Lev("http://google.com",StringLength(SearchString))=SearchString); //tagasi tõeseks


Stringidega töötamise funktsioon StrEndsAt(<Строка>, <СтрокаПоиска>)

Funktsioon kontrollib, et string lõppeks alamstringiga.

SearchString = "@mail.ru"; ThisMailRu = StrEndsAt("vasya_pupk [e-postiga kaitstud]", SearchString); Report(ThisMailRu);//tagastab Tõene

Tekib viga
(ExternalProcessing.ExternalProcessing1.ObjectModule(22,10)): määratud nimega protseduur või funktsioon ei ole määratletud (string algab järgmisega)
Teatama(<>StringStartsWith("http://google.com", "http://"));

Kuid saate seda teha ka teisiti

SearchString = "@mail.ru"; Report(parem(" [e-postiga kaitstud]",StrLength(SearchString))=SearchString); //tagastab tõene


Stringidega töötamise funktsioon StrDivide(<Строка>,<Разделитель>,<ВключатьПустые>)
Stringidega töötamise funktsioon StrConnect(<Строки>, <Разделитель>)

Funktsioon StrDivide() jagab stringi osadeks, kasutades määratud eraldajat.

Funktsioon StrConnect() ühendab stringe alamstringide massiivist.

Array = StrDivide("1,2,3,4,5,6,7,8,9,10",","False);//tagastab massiivi Row = StrConnect(Array,","")// tagastab 1,2,3,4,5,6,7,8,9,10

Mugavad funktsioonid, kuid ilmneb viga

((1,10)): määratud nimega protseduur või funktsioon pole määratletud (StrDivide)
Massiiv =<>StrDivide("1,2,3,4,5,6,7,8,9,10",",",False);//tagastab massiivi
((2,10)): määratud nimega protseduur või funktsioon pole määratletud (StrConnect)
String =<>StrConnect(Array,","")//tagastab 1,2,3,4,5,6,7,8,9,10

Täisteksti otsing- võimaldab teil leida tekstiteavet, mis asub peaaegu kõikjal kasutatavas konfiguratsioonis. Sel juhul saate otsida vajalikke andmeid kas kogu konfiguratsioonist tervikuna või kitsendada otsinguala mitmele objektile (näiteks teatud tüüpi dokumentidele või kataloogidele). Otsingukriteeriumid ise võivad varieeruda üsna laias vahemikus. See tähendab, et võite leida vajalikud andmed, isegi ilma, et mäletaksite täpselt, kus need konfiguratsioonis on salvestatud ja kuidas need täpselt salvestati.

Täistekstiotsing pakub järgmisi valikuid.

  • Toetatakse transliteratsiooni (venekeelsete sõnade kirjutamine ladina tähtedega vastavalt standardile GOST 7.79-2000). Näide: "vene fraas" = "russkaya fraza".
  • Toetatakse asendamist (osa märkide kirjutamine vene sõnadega üheklahviliste ladina tähtedega). Näide: “russrfz frapf” (iga sõna lõpud trükitakse näiteks operaatorivea tõttu ladina tähtedega).
  • Võimalik on uduotsing (leitud sõnade tähed võivad erineda) koos häguse läve näitamisega. Näide: määrates otsinguribale sõna "tere" ja ebamäärasusega 17%, leiame kõik sarnased sõnad vigadega ja ilma: "tere", "prevet", "prived".
  • Valitud metaandmeobjektide jaoks on võimalik määrata otsingu ulatus.
  • Standardsete väljanimede ("Kood", "Nimi" jne) täisteksti indekseerimine toimub kõigis konfiguratsioonikeeltes.
  • Otsing tehakse vene, inglise ja ukraina keele sünonüüme arvesse võttes.
  • Vene keele morfoloogiline sõnastik sisaldab mitmeid spetsiifilisi sõnu, mis on seotud tegevusvaldkondadega, mis on automatiseeritud programmisüsteemi 1C:Enterprise abil.
  • Standardina sisaldavad tarnitavad sõnastikud sõnastiku andmebaase ja tesauruste sõnastikke ning vene, ukraina ja inglise keele sünonüüme, mida pakub ettevõte Informatik.
  • Otsingut saab teha metamärkide ("*") abil, samuti otsinguoperaatorite ("AND", "OR", "NOT", "NEXT") ja erimärkide määramisega.

Täistekstiotsingut saab platvormil 1C: Enterprise 8 teha mis tahes konfiguratsioonis

Täistekstiotsingu juhtakna avamiseks tehke järgmist.

Regulaarne pealekandmine- menüüelement Toimingud – täistekstiotsingu haldamine.

Hallatud rakendus- menüüelement Peamenüü - Kõik funktsioonid - Standardne -Täistekstiotsingu haldamine.


  • Uuenda indeksit– indeksi loomine/indeksi uuendamine;
  • Selge indeks– indeksi lähtestamine (soovitatav pärast kõigi andmete värskendamist);
  • üksus Luba indeksite liitmine– vastutab põhi- ja lisaindeksi liitmise eest.

Täistekstiotsing toimub täistekstiindeksi abil. Ilma indeksita pole täistekstiotsing kui selline võimalik. Selleks, et otsing oleks tõhus, peavad kõik asjakohased andmed sisalduma täisteksti registris. Kui kasutaja sisestab andmebaasi uusi andmeid, tuleb need lisada kõnealusesse indeksisse, vastasel juhul ei osale ta otsingus. Selle vältimiseks peate uuendama täisteksti registrit. Uuendamisel analüüsib süsteem ainult teatud tüüpi andmeid: String, Viitetüübi andmed (lingid dokumentidele, kataloogidele), Number, Date, Value Storage. Kui kasutajal ei ole teatud teabele juurdepääsuõigusi, siis ta seda otsingutulemustes ei näe. Samuti peaksite meeles pidama, et nende objektide atribuutides, mille kohta otsing toimub, tuleb määrata väärtus Täisteksti otsing – kasutamine, mis on vaikimisi määratud.

Kuidas saab vara märgata Kasutage seatud kogu kataloogi jaoks Vastaspooled, kuid seda saab teha iga selle vastavat tüüpi atribuudi puhul.

Vaatame lähemalt täisteksti indeksit, mis koosneb kahest osast (indeksist): põhiindeksist ja lisaindeksist. Suure andmeotsingu kiiruse tagab põhiindeks, kuid selle uuendamine on suhteliselt aeglane, olenevalt andmemahust. Lisaindeks on sellele vastupidine. Andmed lisatakse sellele palju kiiremini, kuid otsimine on aeglasem. Süsteem otsib mõlemat indeksit korraga. Suurem osa andmetest on põhiindeksis ja süsteemi lisatud andmed lähevad lisaindeksisse. Kui lisaindeksi andmemaht on väike, on selle kaudu otsimine suhteliselt kiire. Ajal, mil süsteemi koormus on väike, toimub indeksi liitmise toiming, mille tulemusena lisaindeks kustutatakse ja kõik andmed paigutatakse põhiindeksisse. Eelistatav on indeksite liitmine läbi viia ajal, mil süsteemi koormus on minimaalne. Sel eesmärgil saate luua reguleeritud ülesandeid ja ajastatud ülesandeid.

Otsinguavaldise määramisel on lubatud kasutada erioperaatoreid

Täistekstiotsingu mehhanism võimaldab kirjutada osa venekeelse sõna tähemärkidest üheklahviliste ladina tähtedega. Otsingutulemused ei muutu.

Kaks operaatorit JÄRGMINE

  • lihtsustatud. 8 sõna vahega
  • NEAR/[+/-]n – andmete otsimine ühest atribuudist n-1 sõna kaugusel.

Märk näitab, millises suunas alates esimesest sõnast teist sõna otsitakse. (+ - pärast, - enne)

Metamärki "*" saab kasutada ainult sõna lõpu asendajana

Hägususoperaator "#". Kui nime täpne kirjapilt on nimi teadmata.

Tarkvara ja 1C tööriistad: programmeerimine.

Sünonüümoperaator "!" Võimaldab leida sõna ja selle sünonüüme

Kuidas täistekstiotsingu registrit programmiliselt värskendada?

Kood 1C v 8.x Protseduur UpdateIndices() Eksport
FulltextSearch.UpdateIndex();
Menetluse lõpp

Täisteksti andmete otsimise näide

Otsinguloendi muutuja määratlemine

Kood 1C v 8.x muutujaotsingu loend;

Lisaks määrame sündmuse Kui vorm avaneb töötlemise protseduuris, et see muutuja sisaldab täisteksti otsinguloendit, mille abil otsime andmeid

Kood 1C v 8.x Protseduur OnOpen()
SearchList = FullTextSearch.CreateList();
Menetluse lõpp

Nüüd, kui klõpsate nupul Otsi, kirjutame koodi, mis võimaldab meil teha otsingu vastavalt väljal SearchExpression määratud väljendile

Kood 1C v 8.x Protseduur FindClick (element)
SearchList.SearchString = SearchExpression;
Katse
SearchList.FirstPart();
Erand
Hoiatus(ErrorDescription());
EndAttempt;
Kui SearchList.FullQuantity() = 0 Siis
Form Elements.ResultMessage.Value = "Ei leitud";
Vormi elemendid.Otsingu tulemus.SetText("");
Muidu
OutputSearchResult();
endIf;
Menetluse lõpp

Esiteks määrame selles protseduuris kasutaja sisestatud otsingutermini täistekstiotsingu otsingustringiks. Seejärel käivitame meetodi FirstPart(), mis tegelikult käivitab täistekstiotsingu ja tagastab tulemuste esimese osa. Vaikimisi sisaldab tükk 20 elementi. Pärast seda analüüsime otsinguloendis olevate elementide arvu. Kui see ei sisalda ühtegi elementi, kuvame vormil vastava teate. Vastasel juhul kutsutakse välja protseduur DisplaySearchResult(), mis kuvab tulemused kasutajale.

Loome vormimoodulis samanimelise protseduuri ja kirjutame sellesse koodi:

Kood 1C v 8.x Protseduur OutputSearchResult()
Vormi elemendid.ResultMessage.Value = "Näitab" + Rida(Otsinguloend.Algpositsioon() + 1) + " - " + Rida(Otsinguloend.Algpositsioon() +Otsinguloend.Kogus()) + " from " + SearchList.FullQuantity() ;
Tulemus = SearchList.GetDisplay(FullTextSearchDisplayType.HTMLText);
FormElements.SearchResult.SetText(Result);
Button Availability();
Menetluse lõpp

Selle protseduuri sammud on lihtsad. Esiteks genereerime sõnumi selle kohta, milliseid elemente kuvatakse ja kui palju elemente kokku leiti. Seejärel saame täistekstiotsingu tulemuse HTML-teksti kujul ja kuvame selle teksti vormil asuval HTML-dokumendi väljal.

Lõpuks anname juhtimise üle protseduurile Button Availability(), et teha kättesaadavaks või, vastupidi, keelata juurdepääs nuppudele Eelmine osa ja Järgmine osa (olenevalt sellest, milline osa saadud tulemustest kuvatakse). Selle protseduuri tekst on esitatud koodeksis

Koodi 1C v 8.x protseduurinupu saadavus ()
Vormi elemendid.NextPosition.Availability = (SearchList.FullQuantity() - SearchList.StartPosition()) > SearchList.Quantity();
Vormi elemendid.Eelminepositsioon.Saadaval = (Otsinguloend.Alguspositsioon() > 0);
Menetluse lõpp

Nüüd peate nuppude PreviousPart() ja NextPart() klõpsamiseks looma sündmuste käitlejad.

Kood 1C v 8.x Eelmise portsjoni pressimise protseduur (element)
Otsinimekiri.EelminePart();
OutputSearchResult();
Menetluse lõpp
Järgmise portsjoni pressimise protseduur (element)
Otsinimekiri.NextPart();
OutputSearchResult();
Menetluse lõpp

Viimane puudutus on vormil asuva HTML-dokumendi välja onclick sündmuse jaoks töötleja loomine. Fakt on see, et täistekstiotsingu tulemus, mis esitatakse HTML-teksti kujul, sisaldab hüperlinke otsinguloendi elementide numbritele. Ja me soovime, et kui kasutaja sellel lingil klõpsab, avaks süsteem selles loendielemendis sisalduva objekti vormi. Selleks peatame HTML-dokumendi väljal oleva HTML-dokumendi onclick sündmuse, saame hüperlingilt loendi üksuse numbri ja avame vastava objekti vormi. HTML-dokumendi välja onclick sündmuste töötleja tekst esitatakse koodina

Protseduuriotsingu kood 1C v 8.x Resultonclick (Element, pEvtObj)
htmlElement = pEvtObj.srcElement;
// Kontrollige elemendi ID-d
Kui (htmlElement.id = "FullTextSearchListItem") Siis
// Hankige faili nimi (otsingunimekirja rea ​​number),
// sisaldub hüperlingis
NumberInList = Number(htmlElement.nameProp);
// Hankige otsinguloendi string numbri järgi
ValitudRida = Otsinguloend[ArvLoendis];
// Avage leitud objekti vorm
OpenValue(SelectedRow.Value);
pEvtObj.returnValue = Väär;
endIf;
Menetluse lõpp

Selles artiklis räägin teile 1C Enterprise 8 kiirotsingu funktsioonist. Mis on kiirotsing? Väga lihtne. Kiirotsing on üks viise 1C kirjete suurtes loendites navigeerimiseks. Need võivad olla dokumentide loendid, kataloogid, registrid - kõik, mis on esitatud tabelites.

Mis on kiirotsing?

Kiirotsingu funktsioon 1C Enterprise'i dokumentides on äärmiselt mugav ja võimaldab teil mitte sirvida tohutul hulgal andmeid (näiteks kerimisriba kasutades), vaid minna kohe loendis soovitud kohta. Kahjuks ei kasuta 1C Enterprise 8 (sh 1C Accounting 8) algajad kasutajad alguses kiirotsingu võimalusi, eelistades dokumentide loendeid käsitsi kerida (ja neid saab Väga suur). See artikkel aitab teil mõista kiirotsingu kasutamist 1C-s.

Kõigepealt tuleb märkida, et hallatud vormidele üles ehitatud 1C Enterprise 8 konfiguratsioonides töötab kiirotsing teisiti kui 1C eelmistes versioonides. Seetõttu analüüsime eraldi kiirotsingu kasutamist hallatavates vormides ja tavalistes vormides.

Kiirotsing 1C raamatupidamises 8.2

1C raamatupidamise versioonides 8.0 kuni 8.2 See funktsioon on spetsiaalselt ette nähtud üleminek loendi soovitud ossa. Vaata näiteks joonisel näidatud kontoplaani akent.


Teatud rida on aknas esile tõstetud. Pöörake tähelepanu peenele triipude kolmnurgale, millele osutab punane nool. Nagu teistes Windowsi programmides, kus on loendeid (näiteks Exploreris), määrab selle markeri (kolmnurga) asukoht loendi sortimise tervikuna - Millisesse veergu marker asetatakse, sorteeritakse kogu loend selle veeru järgi. Joonisel on marker veerus Kood, mistõttu kontoplaanis olevad kontod sorteeritakse koodide järgi.

Markerit saab liigutada ühest veerust teise, klõpsates soovitud veerul ( veerus PÄÄLIK!) hiirega. Kui marker on juba praeguses veerus, siis klõpsamine muudab sortimise suuna vastupidiseks (st suurest väikeseks või vastupidi). See on kõigi Windowsi programmide standardkäitumine. Mis on selle markeri eripära 1C Enterprise'is ja kuidas see on seotud kiirotsinguga?

Kiire otsingu 1C Enterprise 8 loendites teostab veerg, milles marker asub. Sel juhul tehakse kontoplaanis kiire otsing, kasutades veergu Kood.

Artiklis oli oluline osa, kuid ilma JavaScriptita pole see nähtav!

Kuidas kasutada kiirotsingut 1C-s? Lihtsalt! Hakka lihtsalt SELLEST veerust otsitavat tippima, st. kus on marker. Ülaltoodud näites peate sisestama kontonumbri. Näiteks soovite leida konto 50 sularaha. Sel juhul sisestage ( Pole vaja kuskil klõpsata!) klaviatuurilt number 50 ja kui selles veerus on selle numbriga konto (ja loomulikult on üks), siis loendis keritakse sellele reale ja rida ise tõstetakse esile. Tulemus on näidatud alloleval kontoplaani ekraanipildil.

veebisait_

Tekst, millele nool osutab, on pärast pole vaja pesta- ta kaob ise.

Ülaltoodud näites, kui hakkate sisestama sõna "Kassa", sisestatakse akna allosas olev tekst ja seejärel kustutatakse see. See juhtub seetõttu, et niipea Alusta sisestatud kiirotsingu string ei vasta enam selle veeru vähemalt ühe rea algusele, järeldab 1C Enterprise, et otsitavat stringi ei leitud ja kustutab selle automaatselt. Selle tõttu Tuleb meeles pidada kahte reeglit.

1C Enterprise 8-s tehakse kiirotsing rea alguses, st. veerus otsitakse sisestatud teksti vastet selle veeru ühe rea algusega.
Siit tuleneb oluline soovitus: kataloogidesse andmeid sisestades nimeta elemente nii, et need oleks kiirotsinguga mugavalt leitavad. Näiteks on parem kirjutada vastaspoole nimeks "Firm Name LLC" kui "Firm Name LLC". Ja veelgi enam, te ei tohiks nimes kasutada jutumärke ja muid tarbetuid sümboleid (me räägime vormide välja Nimi täitmisest).

Kui hakkate teksti tippima ja see kustutatakse, pole otsitavat selles veerus! Sel juhul kontrollige nii sisestuskeelt kui ka veergu, milles kiirotsing tehakse. Tüüpiline viga on see, et valitakse vale veerg. Näiteks on marker seatud veerus Kood ja otsing toimub konto nime järgi.

Kiirotsing 1C raamatupidamises 8.3

Nüüd vaatame, kuidas kiire otsing erineb versioonis 1C Enterprise 8.3. Kasutus on suures osas sarnane versiooniga 8.2, kuid meeles on üks oluline erinevus.

1C raamatupidamises 8.3, aga ka muudes hallatavate vormide konfiguratsioonides (sama uus liides) töötab see filtrina. Lihtsamalt öeldes on kiirotsingu funktsiooni tulemusena osa loendist peidus.

Nüüd saame teada, kuidas seda kasutada. Kõigepealt vaadake allolevat 1C Accounting 8.3 kontoplaani akna ekraanipilti.

veebisait_

Nagu näete, on sama marker ühes veerus. Otsing viiakse läbi ka veerus, kuhu marker on paigaldatud. See kõik jääb muutumatuks. Kui aga hakkate sisestama teksti (näites kontonumbrit), juhtub järgmine.

veebisait_

Nagu näete, avanes otsinguaken lihtsalt automaatselt. Täpselt sama aken avaneb, kui klõpsate akna tööriistaribal otsingunupul (joonisel alla joonitud). Selle tulemusena, kui klõpsate otsinguaknas nuppu Otsi (peidetud pildil rippmenüü taha) või lihtsalt Enter, saate järgmise tulemuse.

veebisait_

Sellest on selge, et kiirotsing 1C Accounting 8.3-s jätab lihtsalt nähtavaks loendi osa, mis vastab otsingutingimustele. Sel juhul kaob nupp Otsi ja selle asemele ilmub ristiga objektiiv (joonisel alla joonitud), klõpsamisel naaseb loend algsesse olekusse (kiirotsingu tulemusel leitud rida jääb esile tõstetud) .

Veel üks oluline kiirotsingu funktsioon 1C raamatupidamises 8.3— vastet ei otsita rea ​​algusest, nagu versioonis 8.2, vaid vastet otsitakse mis tahes veeru ridade osaga. Seega, kui paned vastaspoole nimeks “Firm Name LLC” ja otsimisel hakkad sisestama “Firm Name LLC”, siis rida ikka leitakse!

Järelduste tegemine

Seega on 1C Accounting 8.2 ja varasemate versioonide kiirotsing mõeldud loendi kerimiseks soovitud reale ning 1C Accounting 8.3-s toimib kiirotsing nagu tavaline filter, peites loendi selle osa, mida te ei vaja.