Hva er ppd-indeksen. Om interessante ting fra IT-verdenen, instruksjoner og anmeldelser

Spørsmål: Gjenoppbygge indeksen for 1C


God ettermiddag, jeg har en SCP-database i SQL 2014, det er rutineoppgaver:
1)
2)
Alt fungerte perfekt til å begynne med, ingenting ble bremset, halvannen måned gikk og bremsene startet. Jeg reinstallerte 1C, SQL, 1C server i håp om at jeg hadde konfigurert noe feil, men problemet gjensto. Jeg så på rapporten

Jeg ser fragmentering, det går ikke unna med noen ombygginger og omorganisering av indeksen. Er det noen måter å gjenopprette normal drift og bli kvitt fragmentering?
(Kanskje dette bare er tull som ikke påvirker bremsene?)

Svar: ()

Spørsmål: SQL og indeksfragmentering


Ved innsamling av statistikk viser det at mer enn hundre indekser krever ombygging, deres fragmentering er over 50%, men etter gjenoppbygging av indeksene forblir fragmenteringen den samme, hva kan gjøres?

Svar: Ok, takk, jeg skal ta hensyn til det

Spørsmål: Konsekvenser av å slette en indeks


God tid dager. Det er en 1C-database i SQL-format, som du må gjøre TII på, som ikke er gjort, og produsere følgende feil:

Jeg kan ikke bestemme hvilke data i 1C tabellene ovenfor er assosiert med. Hva kan være dårlig hvis jeg sletter indeksene ovenfor ved å bruke drop index?

Jeg er ikke forfatteren av emnet.
Alle kommandoer sendes av 1c til sql-serveren, indekser opprettes og slettes.
fremmed - hvis vi ikke lager indekser gjennom konfiguratoren, men på sql-serveren selv.
indeksen opprettet ved bruk av standard 1c-prosedyren vil ikke avvike fra indeksen opprettet av sql-serveren

Spørsmål: Hvordan konfigurere regelverket "Oppdatere PPD-indeksen" og "Slå sammen PPD-indeksen" (Les 19)


Hvordan konfigurere regelverket "Oppdatere PPD-indeksen" og "Slå sammen PPD-indeksen"?
Databasestørrelse 160 GB. Vi er nå satt opp. Begge hver time. Er det hensiktsmessig å sette "Oppdater PPD-indeks" en gang i timen, og "Slå sammen PPD-indeks" en gang om natten?
Vil den ha tid til å slå den sammen om natten?

Svar:

Spørsmålet er fjernet. Forskriften oppdaterte indeksen i porsjoner. 10 000 poster hver. Den gjorde jobben sin 10 000 ganger oppdatert. Men det viste seg å være over 10.000, så det viste seg at indeksen ikke var relevant likevel.

Spørsmål: Spørsmål om indekser i 1s


I hvilke tilfeller er det bedre å bruke dem? Hvor mye kan basen svelle ved hyppig bruk? hva er forskjellen: indekser og indekser med tillegg. bestilling.
Du kan også lenke til vanlige eksempler.
Takk skal du ha.

Svar:() Indekser kan være større størrelse data :)
() Det ser ut til at størrelsen på indekser ikke er deres største ulempe her er at det med "ekstra" indekser er "ekstra" skrivekostnader. IMHO.
Men med store (hundretusenvis av GB) databaser må du selvfølgelig se på størrelsen :)

Det generelle prinsippet er at hvis det er utvalg for dette feltet, vil vi indeksere dem hvis det ikke er utvalg. Hvis valg etter felt er nødvendig, men antallet rader er lite, er det ikke nødvendig med en indeks. Hvis valg etter felt er nødvendig, men nesten hele tabellen passer til det, er det ikke nødvendig med en indeks. IMHO.

Spørsmål: Verditabellindekser


God ettermiddag.
Det er et skjema med en verditabell. Klikk på knappen for å importere data fra Excel til denne tabellen.
Når du først åpnet skjemaet og klikket på knappen, ble for eksempel 10 linjer lastet inn. For hver rad ble indekser fra 0 til 9 automatisk tildelt Når jeg laster inn igjen (uten å lukke skjemaet), tømmer jeg tabellen og legger for eksempel til 5 rader til. Indeksene fortsetter å nummerere og vil være lik 10-14. Hvordan kan jeg tilbakestille indekstelleren og starte den på nytt?
Takk skal du ha

Svar:

Du hadde rett. Det var ikke det jeg var ute etter. Jeg var sikker på at indekser og identifikatorer er en og samme. Spørsmålet er lukket. Tusen takk for hjelpen

Spørsmål: Tilgang til PM-elementet etter indeks


Vi fikk en opplæringsoppgave for å sortere PM til et dokument uten å bruke en innebygd funksjon, men manuelt ved å bruke en eller annen algoritme.
Jeg lurer på om det er mulig å få tilgang til et PM-element etter indeks?

Svar: Borddelen har samme betydning.
Copy-paste fra SP:

Tabellsnitt
Samlingsartikler:

Tabellrekke
For et objekt er det mulig å krysse samlingen ved å bruke operatoren For hver... Fra... Sløyfe. Traverseringen velger elementene i samlingen.
Det er mulig å få tilgang til et samlingselement ved å bruke [...]-operatøren. Radindeksen (nummerert fra 0) sendes som et argument.

Spørsmål: etter oppdatering av plattformen ble reg-oppgaven for oppdatering av søkeindeksen deaktivert


installert 12.1616 på noen servere er alt bra, men serveren med konsolidering begynte å feile fryktelig, vertene faller ut etter 2...3 minutter...

Jeg fant ut at reg-oppgaven "oppdatere fulltekstsøkeindeksen" var skyld i alt, mens jeg deaktiverte den ...

Samtidig ser det ikke ut til at problemet vises på standardlogger

spørsmål
1. hvem andre har dette problemet?
2. hvordan du ser etter en detaljert årsak (du vil ikke aktivere oppgaveregistrering på et produksjonsprodukt, men du kan ikke på et test)
3. hva du skal gjøre

Svar: Jeg er ingen ekte sveiser, men på en testbase ville jeg slått av alle oppgaveregistre, bortsett fra "oppdatering av fulltekstsøkeindeksen" og overvåket den gjennom den tekniske loggen.

Spørsmål: For SQL-spesialister, hvordan påvirker generelle detaljer statistikk om indekser?


Spørsmål: Hvor arbeidskrevende vil det være å kutte ut generelle datadelingsdetaljer fra konfigurasjonen? Er det i det hele tatt verdt å gjøre dette?
BSP så, generelt ser det ut som det ikke er veldig mange plasser der, men det ble ikke tid til fordypning.
Og nå om grunnene til at dette interesserer meg.
BP 3.0-database, størrelse ca. 1 TB, hvorav 200 GB er regnskapsregistertabeller, registrerer fra 50 til 250 millioner I tabellene på serveren er Data AreaMainData-feltet av typen Numeric(7.0), så jeg vil ikke lagre. plass globalt (ca. 9 GB faller nå på dette feltet).
Hovedmålet er å fremskynde arbeidet med databasen litt, på grunn av:
*redusere størrelsen på tabeller og indekser; * raskere sampling ved å redusere størrelsen på dataraden (og indeksene) og mer nøyaktige spørringsplaner; * få fart på kommandoen 'oppdater statistikk';
*redusere kostnadene ved å vedlikeholde kolonnestatistikk (det er kanskje ikke nødvendig å vedlikeholde dem separat for enkelte felt i det hele tatt, siden dette feltet vil være det lengst til venstre i indeksen).

En liten hastighetsøkning av en enkeltradsoperasjon over millioner av rader resulterer i betydelige tidsbesparelser. Og i form av et år - enda mer, så for meg virker det som om målet er berettiget.
Og en liten teori som jeg bygger på.
Det er et velkjent faktum at MSSQL bare lager statistikk i kolonnen lengst til venstre i indeksen og lagrer 200 verdifordelingsintervaller der.

I standard regnskap 3.0-indekser er venstre kolonne "Data AreaMainData", skriv inn Number. Hvis separasjon ikke brukes, har dette feltet nuller overalt. Nedenfor er et eksempel på en slik indeks (regnskapsregister). 49 millioner poster, alle samlet på én linje i histogrammet.

Serveren lager kolonnestatistikk for alle felt som deltar i forespørsler


For eksempel ifølge registraren

– Laster bankklassifisereren Dette rutineoppgave

laster ned klassifiseringen av russiske banker fra RBC-nettstedet. Det vanlige arbeidet holder denne klassifiseringen oppdatert. Og når vi legger til en annen brukskonto, er det større sjanse for at banken den er åpnet i blir funnet av oss i BIC-klassifisereren.

Denne rutineoppgaven laster inn valutakurser for gjeldende dato. Hvis programmet utfører valutatransaksjoner, er det fornuftig å la denne oppgaven være aktivert slik at du ikke trenger å laste inn valutakurser manuelt hver gang.

– Fylle ut data for å begrense tilgangen

Når tilgangsbegrensningsmodus på rekordnivå er aktivert, fyller settene
tilgangsverdier. Fylling utføres i deler ved hver start til alt er
tilgangsverdisett vil ikke fylles ut.

Når du deaktiverer tilgangsbegrensningsmodus på rekordnivå, slettes sett med tilgangsverdier (tidligere fylt ut) når objekter overskrives, i stedet for alle på en gang.
Uavhengig av tilgangsbegrensningsmodus på postnivå, oppdaterer den cache-detaljene. Etter å ha fullført alle oppdateringer og fyllinger, deaktiverer bruken av den planlagte oppgaven.

Oppgaven er offisiell. Du trenger ikke å aktivere det manuelt.

– Tekstuttrekk

Brukes til raskt å søke etter data i vedlagte filer knyttet til en database. Hvis du bruker søk i vedlagte filer, er det fornuftig.

– Meldinger på tvers av arbeidsflytkontoer

Reguleringsoppgave for automatisk utveksling med tilsynsmyndigheter. Benyttes ved innsending av regulert rapportering direkte fra 1C.

– Oppdatering av enheter

Den planlagte oppgaven oppdaterer aggregater. Hva slags dyr er dette?

Ved å bruke aggregater kan du få betydelig raskere generering av rapporter om akkumuleringsregistre i tilfeller hvor antall poster i registeret er hundretusener, millioner eller mer.

Nøkkelfrasen her er "antall oppføringer i registeret er hundretusener, millioner eller mer," det vil si at for små registre, inkludert aggregater, ikke gir mening.

Aggregater lar deg lage forhåndsberegnet data for å generere rapporter som ligner summen av akkumuleringsregistre. Sistnevnte beregnes automatisk av plattformen (forutsatt at bruk av totaler for registeret er aktivert) i motsetning til aggregater. Men hvorfor trengs aggregater hvis resultatene utfører en lignende oppgave?

For det første beregnes totaler etter måned og dette kan ikke endres, mens aggregater kan beregnes etter dag, måned, kvartal, halvår og år.

For det andre kan seksjonene av aggregater være vilkårlige (en hvilken som helst sammensetning av målinger av akkumuleringsregisteret), i motsetning til totalene, som beregnes vha. til hele staben registrere.

– Oppdatering av veiledermonitordata

Rutineoppgaven fører til at dataene i informasjonsregisteret «Executive Monitor Data» oppdateres for alle organisasjoner. Hvis lederens monitor faktisk brukes, er oppgaven fornuftig.

– Oppdatere regnskapsføreroppgaver

Rutineoppgaven oppdaterer og fyller ut regnskapsførerens oppgaver (datoer for innsending av ulike erklæringer, rapporter osv.).

– PPD-indeksoppdatering

Oppdaterer fulltekstsøkeindeksen. Hvis du bruker fulltekstsøk, gir oppgaven mening. Den slås på automatisk hvis fulltekstsøk er aktivert i databaseinnstillingene.

– Oppdatere informasjon om rapporteringsanvisninger

Vi snakker om veibeskrivelser: til trygdefondet, til den føderale skattetjenesten, til pensjonsfondet. Kort sagt, noe relatert, igjen, til innsending av elektronisk rapportering fra 1C.

– Behandling av abonnentsøknader for tilkobling elektronisk signatur i tjenestemodellen

En slags serviceoppgave som behandler søknaden din om å koble til en elektronisk signatur, dersom du bruker 1C i tjenestemodellen. Generelt bør du definitivt ikke aktivere det selv.

– Forsinketg

Jobben administrerer utførelsen av utsatte oppdateringsbehandlere. Ikke aktiver det selv.

– Sende abonnentrapporter

Sende regulerte rapporter fra tjenesteabonnenter til regulatoriske myndigheter gjennom SOS «Kaluga-Astral»-rapporteringstjeneste. Ikke aktiver det selv.

– Rengjøring utdaterte versjoner gjenstander

Kun for offisiell bruk.

– Ombygging av enheter

Ombygging av enheter for sirkulerende akkumuleringsregistre. Ikke aktiver det selv.

– Omberegning av gjeldende verdier av relative datoer for forbud mot endringer

Rekalkulerer og oppdaterer gjeldende relative verdier
forbudsdatoer fra gjeldende sesjonsdato. Ikke aktiver det selv.

– Planlegging av tekstuttak i tjenestemodellen

Definerer en liste over dataområder der tekstuttrekking er nødvendig og planlegger utføringen for dem ved hjelp av en jobbkø. Offisielt.

– Motta resultatene av sending av rapporter

Motta resultatene av sending av rapporter fra tjenesteabonnenter til regulatoriske myndigheter fra SOS "Kaluga-Astral"-rapporteringstjenesten. Offisielt.

– Kontroll av motparter

For tjenestemodellen oppdaterer den statusen til motpartene (er alt OK med deres detaljer). For lokal modus, oppdaterer stater og poster som mangler skatteidentifikasjonsnummer og sjekkpunkt.

– Sammenslåing av PPD-indeksen

Utfører en sammenslåing av fulltekstsøkeindekser. Arbeidet med oppgaven er igjen knyttet til fulltekstsøk (hvor er søk uten indeks).

– Slett irrelevant informasjon synkronisering

Utfører sletting av synkroniseringsinformasjon som ikke ble slettet på grunn av programfeil. Filer med en publiseringsdato på mer enn 24 timer kan slettes.

– Sletting av merkede programobjekter

Fjerner merkede objekter fra en planlagt oppgave.

– Innstilling av perioden for beregnede totaler

En serviceoppgave som fastsetter perioden med beregnede resultater. Resultatene ble skrevet ovenfor.

Dessverre finnes det ingen normal dokumentasjon for rutineoppgaver i 1C: Regnskap. Derfor presenterer jeg informasjonen som jeg klarte å samle inn fra åpne kilder eller konfigurasjonskildekode.

Denne rutineoppgaven laster ned klassifiseringen av russiske banker fra RBC-nettstedet. Det vanlige arbeidet holder denne klassifisereren oppdatert. Og når vi legger til en annen brukskonto, er det større sjanse for at banken den er åpnet i blir funnet av oss i BIC-klassifisereren.

laster ned klassifiseringen av russiske banker fra RBC-nettstedet. Det vanlige arbeidet holder denne klassifiseringen oppdatert. Og når vi legger til en annen brukskonto, er det større sjanse for at banken den er åpnet i blir funnet av oss i BIC-klassifisereren.

Denne rutineoppgaven laster inn valutakurser for gjeldende dato. Hvis programmet utfører valutatransaksjoner, er det fornuftig å la denne oppgaven være aktivert slik at du ikke trenger å laste inn valutakurser manuelt hver gang.

– Fylle ut data for å begrense tilgangen

Når tilgangsbegrensningsmodus på rekordnivå er aktivert, fyller settene
tilgangsverdier. Fylling utføres i deler ved hver start til alt er
tilgangsverdisett vil ikke fylles ut.

Når du deaktiverer tilgangsbegrensningsmodus på rekordnivå, slettes sett med tilgangsverdier (tidligere fylt ut) når objekter overskrives, i stedet for alle på en gang.
Uavhengig av tilgangsbegrensningsmodus på postnivå, oppdaterer den cache-detaljene. Etter å ha fullført alle oppdateringer og fyllinger, deaktiverer bruken av den planlagte oppgaven.

Oppgaven er offisiell. Du trenger ikke å aktivere det manuelt.

– Tekstuttrekk

Brukes til raskt å søke etter data i vedlagte filer knyttet til en database. Hvis du bruker søk i vedlagte filer, er det fornuftig.

– Meldinger på tvers av arbeidsflytkontoer

Reguleringsoppgave for automatisk utveksling med tilsynsmyndigheter. Benyttes ved innsending av regulert rapportering direkte fra 1C.

– Oppdatering av enheter

Den planlagte oppgaven oppdaterer aggregater. Hva slags dyr er dette?

Ved å bruke aggregater kan du få betydelig raskere generering av rapporter om akkumuleringsregistre i tilfeller hvor antall poster i registeret er hundretusener, millioner eller mer.

Nøkkelfrasen her er "antall oppføringer i registeret er hundretusener, millioner eller mer," det vil si at for små registre, inkludert aggregater, ikke gir mening.

Aggregater lar deg lage forhåndsberegnet data for å generere rapporter som ligner summen av akkumuleringsregistre. Sistnevnte beregnes automatisk av plattformen (forutsatt at bruk av totaler for registeret er aktivert) i motsetning til aggregater. Men hvorfor trengs aggregater hvis resultatene utfører en lignende oppgave?

For det første beregnes totaler etter måned og dette kan ikke endres, mens aggregater kan beregnes etter dag, måned, kvartal, halvår og år.

For det andre kan seksjonene av aggregater være vilkårlige (en hvilken som helst sammensetning av målinger av akkumuleringsregisteret), i motsetning til totalene, som beregnes basert på hele registerets sammensetning.

– Oppdatering av veiledermonitordata

Rutineoppgaven fører til at dataene i informasjonsregisteret «Executive Monitor Data» oppdateres for alle organisasjoner. Hvis lederens monitor faktisk brukes, er oppgaven fornuftig.

– Oppdatere regnskapsføreroppgaver

Rutineoppgaven oppdaterer og fyller ut regnskapsførerens oppgaver (datoer for innsending av ulike erklæringer, rapporter osv.).

– PPD-indeksoppdatering

Oppdaterer fulltekstsøkeindeksen. Hvis du bruker fulltekstsøk, gir oppgaven mening. Den slås på automatisk hvis fulltekstsøk er aktivert i databaseinnstillingene.

– Oppdatere informasjon om rapporteringsanvisninger

Vi snakker om veibeskrivelser: til trygdefondet, til den føderale skattetjenesten, til pensjonsfondet. Kort sagt, noe relatert, igjen, til innsending av elektronisk rapportering fra 1C.

– Behandling av abonnentsøknader for tilkobling av elektronisk signatur i tjenestemodellen

En slags serviceoppgave som behandler søknaden din om å koble til en elektronisk signatur, dersom du bruker 1C i tjenestemodellen. Generelt bør du definitivt ikke aktivere det selv.

– Forsinketg

Jobben administrerer utførelsen av utsatte oppdateringsbehandlere. Ikke aktiver det selv.

– Sende abonnentrapporter

Sende regulerte rapporter fra tjenesteabonnenter til regulatoriske myndigheter gjennom SOS «Kaluga-Astral»-rapporteringstjeneste. Ikke aktiver det selv.

– Rydd opp i utdaterte versjoner av gjenstander

Kun for offisiell bruk.

– Ombygging av enheter

Ombygging av enheter for sirkulerende akkumuleringsregistre. Ikke aktiver det selv.

– Omberegning av gjeldende verdier av relative datoer for forbud mot endringer

Rekalkulerer og oppdaterer gjeldende relative verdier
forbudsdatoer fra gjeldende sesjonsdato. Ikke aktiver det selv.

– Planlegging av tekstuttak i tjenestemodellen

Definerer en liste over dataområder der tekstuttrekking er nødvendig og planlegger utføringen for dem ved hjelp av en jobbkø. Offisielt.

– Motta resultatene av sending av rapporter

Motta resultatene av sending av rapporter fra tjenesteabonnenter til regulatoriske myndigheter fra SOS "Kaluga-Astral"-rapporteringstjenesten. Offisielt.

– Kontroll av motparter

For tjenestemodellen oppdaterer den statusen til motpartene (er alt OK med deres detaljer). For lokal modus, oppdaterer stater og poster som mangler skatteidentifikasjonsnummer og sjekkpunkt.

– Sammenslåing av PPD-indeksen

Utfører en sammenslåing av fulltekstsøkeindekser. Arbeidet med oppgaven er igjen knyttet til fulltekstsøk (hvor er søk uten indeks).

– Fjerne irrelevant synkroniseringsinformasjon

Utfører sletting av synkroniseringsinformasjon som ikke ble slettet på grunn av programfeil. Filer med en publiseringsdato på mer enn 24 timer kan slettes.

– Sletting av merkede programobjekter

Fjerner merkede objekter fra en planlagt oppgave.

– Innstilling av perioden for beregnede totaler

En serviceoppgave som fastsetter perioden med beregnede resultater. Resultatene ble skrevet ovenfor.

eller

Hvorfor trenger en 1C-utvikler å "indeksere" registrere dimensjoner og detaljer?

– Vel, du har forespørsler! - databasen sa og hang...

Det korte svaret på tittelspørsmålet er at det vil tillate spørringer å kjøre raskt og redusere Negativ påvirkning låser på.

Hva er en indeks?

Optimalisering av indeksplassering

Når størrelsen på bordene ikke lar dem "passe" inn tilfeldig tilgang minne servere, hastighet kommer først disk undersystem(I/O). Og her kan du ta hensyn til muligheten til å plassere indekser i separate filer som ligger på forskjellige harddisker.

Detaljert beskrivelse handlinger http://technet.microsoft.com/ru-ru/bibliotek/ms175905.aspx
Å bruke en indeks fra en annen filgruppe forbedrer ytelsen til ikke-klyngede indekser på grunn av samtidigheten mellom I/O-prosesser og arbeidet med selve indeksen.
For å bestemme dimensjonene kan du bruke den ovennevnte behandlingen.

Innvirkning av indekser på låser

Fraværet av en nødvendig indeks for en spørring betyr å iterere gjennom alle tabellpostene, noe som igjen fører til overdreven låsing, dvs. unødvendige poster blokkeres. I tillegg, jo lengre tid det tar å fullføre et søk på grunn av manglende indekser, desto lengre vil låsetiden være.
En annen årsak til låser er et lite antall poster i tabeller. I denne forbindelse bruker ikke SQL Server, når du velger en plan for utføring av spørringer, indekser, men gjennomsøker hele tabellen (tabellskanning), og blokkerer hele tabellen. For å unngå slik blokkering er det nødvendig å øke antall poster i tabellene til 1500-2000. I dette tilfellet blir det dyrere å skanne tabellen og SQL Server begynner å bruke indekser. Selvfølgelig kan dette ikke alltid gjøres en rekke kataloger som "Organisasjoner", "Warehouses", "Divisions", etc. har vanligvis få oppføringer. I disse tilfellene vil ikke indeksering forbedre ytelsen.

Indeks ytelse

Vi har allerede bemerket i tittelen på artikkelen at vi er interessert i effekten av indekser på søkeytelse. Så, indekser er best egnet for følgende type oppgaver:

  • Spørringer som spesifiserer «smale» søkekriterier. Slike søk må kun lese et lite antall rader som oppfyller visse kriterier.
  • Spørringer som spesifiserer et verdiområde. Disse spørsmålene bør også leses en liten mengde linjer.
  • Et søk som brukes i koblingsoperasjoner. Kolonner, som ofte brukes som bindnøkler, er flotte for indekser.
  • Et søk der data leses i en bestemt rekkefølge. Hvis resultatsettet skal sorteres i gruppert indeksrekkefølge, er det ikke nødvendig med sortering fordi resultatsettet allerede er forhåndssortert. For eksempel, hvis en gruppert indeks opprettes på kolonnene etternavn, fornavn, og applikasjonen krever sortering etter etternavn og deretter etter fornavn, er det ikke nødvendig å legge til en ORDER BY-klausul.

Riktignok, med all nytten av indekser, er det en veldig viktig MEN - indeksen må brukes "effektivt" og må tillate data å bli funnet ved å bruke færre I/O-operasjoner og mengden systemressurser. Motsatt er det mer sannsynlig at ubrukte (sjelden brukte) indekser forringer dataskriveytelsen (siden hver operasjon som endrer dataene også må oppdatere indekssidene) og skaper overflødig databaseplass.

Dekker(Til av denne forespørselen), kalles en indeks som inneholder alle nødvendige felt for denne forespørselen. For eksempel, hvis en indeks opprettes på kolonnene a, b og c, og SELECT-setningen spør etter data fra bare disse kolonnene, er det kun nødvendig med tilgang til indeksen.

For å bestemme effektiviteten til en indeks, kan vi grovt estimere ved å bruke en gratis nettjeneste som viser «planen for utførelse av spørringer» og indeksene som brukes.

Fulltekstsøk- lar deg finne tekstinformasjon nesten hvor som helst i konfigurasjonen som brukes. I dette tilfellet kan du søke etter de nødvendige dataene enten gjennom hele konfigurasjonen som helhet, eller ved å begrense søkeområdet til flere objekter (for eksempel visse typer dokumenter eller kataloger). Søkekriteriene i seg selv kan variere over et ganske bredt spekter. Det vil si at du kan finne de nødvendige dataene uten å huske nøyaktig hvor de er lagret i konfigurasjonen og nøyaktig hvordan de ble registrert.

Fulltekstsøk gir følgende alternativer:

  • Det er støtte for translitterasjon (skrive russiske ord med latinske tegn i samsvar med GOST 7.79-2000). Eksempel: "russisk frase" = "russkaya fraza".
  • Det er støtte for substitusjon (skrive en del av tegnene i russiske ord med enkelt-tast latinske tegn). Eksempel: "russrfz frapf" (endelsene på hvert ord skrives med latinske bokstaver, for eksempel som et resultat av en operatørfeil).
  • Det er mulighet for fuzzy søk (bokstavene i de funne ordene kan variere) med indikasjon på fuzzy terskelen. Eksempel: ved å spesifisere ordet «hei» i søkefeltet og en vaghet på 17 %, vil vi finne alle lignende ord med og uten feil: «hei», «prevet», «prived».
  • Det er mulig å spesifisere omfanget av søket for utvalgte metadataobjekter.
  • Fulltekstindeksering av standard feltnavn ("Kode", "Navn", etc.) utføres på alle konfigurasjonsspråk.
  • Søket utføres under hensyntagen til synonymer til russisk, engelsk og ukrainsk språk.
  • Den morfologiske ordboken til det russiske språket inneholder en rekke spesifikke ord relatert til aktivitetsområder som er automatisert ved hjelp av 1C:Enterprise-programsystemet.
  • Som standard inkluderer de medfølgende ordbøkene ordbokdatabaser og ordbøker for synonymordbok og synonymer av russisk, ukrainsk og engelske språk, som er levert av Informatic-selskapet.
  • Søket kan utføres ved å bruke jokertegn ("*"), samt spesifisere søkeoperatorer ("AND", "OR", "NOT", "NEXT") og spesialtegn.

Fulltekstsøk kan utføres i alle konfigurasjoner på 1C:Enterprise 8-plattformen

For å åpne fulltekstsøkekontrollvinduet, gjør følgende:

Vanlig søknad- menyelement Drift - Administrere fulltekstsøk.

Administrert applikasjon- menyelement Hovedmeny - Alle funksjoner - Standard -Fulltekstsøkeadministrasjon.


  • Oppdater indeksen– Oppretting av indeks/indeksoppdatering;
  • Tøm indeks– tilbakestilling av indeksen (anbefalt etter oppdatering av alle data);
  • element Tillat indekssammenslåing– er ansvarlig for å slå sammen hoved- og tilleggsindeksen.

Fulltekstsøk utføres ved hjelp av en fulltekstindeks. Uten en indeks er fulltekstsøk som sådan ikke mulig. For at et søk skal være effektivt, må alle relevante data inkluderes i fulltekstindeksen. Dersom nye data legges inn i databasen av bruker, må de inkluderes i den aktuelle indeksen, ellers vil den ikke delta i søket. For å unngå dette må du oppdatere fulltekstindeksen. Ved oppdatering analyserer systemet kun visse typer data: Streng, Referansetypedata (lenker til dokumenter, kataloger), Nummer, Dato, Verdilagring. Hvis brukeren ikke har tilgangsrettigheter til visse opplysninger, vil han ikke kunne se den i søkeresultatene. Du bør også huske at i egenskapene til objektene som søket skal finne sted for, må verdien settes Fulltekstsøk – Bruk, som er satt som standard.

Hvordan kan du legge merke til eiendommen Bruk satt for hele katalogen Motparter, men dette kan gjøres for hver av dens attributter av den tilsvarende typen.

La oss se nærmere på fulltekstindeksen, som består av to deler (indekser): hovedindeksen og den ekstra. Høy hastighet Datainnhenting leveres av hovedindeksen, men oppdateringen er relativt sakte, avhengig av datavolumet. Tilleggsindeksen er det motsatte av den. Data legges til det mye raskere, men søket går tregere. Systemet søker i begge indeksene samtidig. Mesteparten av dataene er i hovedindeksen, og data lagt til systemet går inn i tilleggsindeksen. Mens mengden data i tilleggsindeksen er liten, går det relativt raskt å søke gjennom den. På et tidspunkt når systembelastningen er lett, skjer en indekssammenslåingsoperasjon, som et resultat av at tilleggsindeksen slettes og alle data plasseres i hovedindeksen. Det er å foretrekke å utføre indekssammenslåing på et tidspunkt da systembelastningen er minimal. For dette formålet kan du opprette regulerte oppgaver og planlagte oppgaver.

Spesielle operatorer tillatt når du spesifiserer et søkeuttrykk

Fulltekstsøkemekanismen gjør det mulig å skrive deler av tegnene i et russisk ord ved å bruke entast latinske tegn. Søkeresultatet endres ikke.

To operatører NESTE

  • forenklet. 8 ord fra hverandre
  • NEAR/[+/-]n – søk etter data i ett attributt med en avstand på n-1 ord mellom dem.

Tegnet indikerer i hvilken retning fra det første ordet det andre ordet skal søkes. (+ - etter, - før)

Jokertegnet "*" kan bare brukes som en erstatning for slutten av et ord

Uklarhetsoperatør "#". Hvis den nøyaktige stavemåten av navnet, navnet er ukjent.

Programvare og 1C-verktøy: programmering.

Synonymoperator "!" Lar deg finne et ord og dets synonymer

Hvordan oppdatere programmatisk en fulltekstsøkeindeks?

Kode 1C v 8.x Prosedyre UpdateIndices() Eksport
FulltextSearch.UpdateIndex();
Sluttprosedyre

Eksempel på fulltekstdatasøk

Definere søkelistevariabelen

Kode 1C v 8.x Variabel søkeliste;

I tillegg, i prosedyren for å behandle When Form Opens-hendelsen, vil vi bestemme at denne variabelen vil inneholde en fulltekst søkeliste, ved hjelp av hvilken vi vil søke i dataene

Kode 1C v 8.x Prosedyre OnOpen()
SearchList = FullTextSearch.CreateList();
Sluttprosedyre

Nå, hvis vi klikker på Finn-knappen, vil vi skrive kode som lar oss utføre et søk i samsvar med uttrykket spesifisert i SearchExpression-feltet

Code 1C v 8.x Prosedyre FindClick(Element)
SearchList.SearchString = SearchExpression;
Forsøk
SearchList.FirstPart();
Unntak
Advarsel(ErrorDescription());
Sluttforsøk;
Hvis SearchList.FullQuantity() = 0 Da
Form Elements.MessageOfResult.Value = "Ikke funnet";
Form Elements.SearchResult.SetText("");
Ellers
OutputSearchResult();
slutt om;
Sluttprosedyre

Først i denne prosedyren setter vi søkeordet som er angitt av brukeren som søkestreng for fulltekstsøk. Deretter kjører vi FirstPart()-metoden, som faktisk starter et fulltekstsøk og returnerer den første delen av resultatene. Som standard inneholder en del 20 elementer. Etter det analyserer vi antall elementer i søkelisten. Hvis den ikke inneholder noe element, viser vi en tilsvarende melding i skjemaet. Ellers kalles DisplaySearchResult()-prosedyren, som viser resultatene til brukeren.

La oss lage en prosedyre med samme navn i skjemamodulen og skrive koden i den:

Kode 1C v 8.x Prosedyre OutputSearchResult()
Form Elements.ResultMessage.Value = "Showing" + Row(SearchList.InitialPosition() + 1) + " - " + Row(SearchList.InitialPosition() +SearchList.Quantity()) + " fra " + SearchList.FullQuantity() ;
Result = SearchList.GetDisplay(FullTextSearchDisplayType.HTMLText);
FormElements.SearchResult.SetText(Result);
ButtonAvailability();
Sluttprosedyre

Trinnene i denne prosedyren er enkle. Først genererer vi en melding om hvilke elementer som vises og hvor mange totalt elementer som ble funnet. Da får vi fulltekstsøkeresultatet i form av HTML-tekst og viser denne teksten i HTML-dokumentfeltet som ligger i skjemaet.

Til slutt overfører vi kontrollen til Button Availability()-prosedyren for å gjøre tilgjengelig eller omvendt nekte tilgang til knappene for forrige del og neste del (avhengig av hvilken del av de oppnådde resultatene som vises). Teksten til denne prosedyren er presentert i koden

Kode 1C v 8.x Tilgjengelighet for prosedyreknapp ()
Form Elements.NextPosition.Availability = (SearchList.FullQuantity() - SearchList.StartPosition()) > SearchList.Quantity();
Form Elements.PreviousPosition.Availability = (SearchList.StartPosition() > 0);
Sluttprosedyre

Nå må du opprette hendelsesbehandlere for å klikke på knappene PreviousPart() og NextPart().

Kode 1C v 8.x Prosedyre Pressing av forrige porsjon (element)
SearchList.PreviousPart();
OutputSearchResult();
Sluttprosedyre
Prosedyre Trykking av neste porsjon (element)
SearchList.NextPart();
OutputSearchResult();
Sluttprosedyre

Den siste "touch" er å lage en onclick-hendelsesbehandler for HTML-dokumentfeltet som ligger i skjemaet. Faktum er at resultatet av et fulltekstsøk, presentert i form av HTML-tekst, inneholder hyperkoblinger til antall elementer i søkelisten. Og vi vil gjerne at når brukeren klikker på denne lenken, vil systemet åpne formen til objektet som er inneholdt i dette listeelementet. For å gjøre dette vil vi avskjære onclick-hendelsen til HTML-dokumentet i HTML-dokumentfeltet, hente listeelementnummeret fra hyperkoblingen og åpne skjemaet til det tilsvarende objektet. Teksten til onclick-hendelsesbehandleren til et HTML-dokumentfelt presenteres i kode

Kode 1C v 8.x Søkeresultat for prosedyre ved klikk(Element, pEvtObj)
htmlElement = pEvtObj.srcElement;
// Sjekk element id
If (htmlElement.id = "FullTextSearchListItem") Then
// Få filnavnet (linjenummer på søkelisten),
// inneholdt i hyperkoblingen
NumberInList = Number(htmlElement.nameProp);
// Få søkelisten etter nummer
SelectedRow = SearchList[NumberInList];
// Åpne formen til det funnet objektet
OpenValue(Selected Row.Value);
pEvtObj.returnValue = Usann;
slutt om;
Sluttprosedyre