Hvordan direkte søk skrives i 1C. Opprette og arbeide med spørringer (for nybegynnere)

Spørringsdesigneren i 1C 8.3 og 8.2 er et kraftig utviklingsverktøy. Den lar deg komponere en forespørselstekst ved å bruke et spesielt visuelt miljø. Derfor, for å lage en 1C-forespørsel, er det ikke nødvendig å kjenne det innebygde spørringsspråket, det er nok å navigere i det enkle og intuitive grensesnittet til designeren.

Spørringsbyggeren er et sett med faner, som hver er ansvarlig for sin egen del av spørringen. Så fyller ut fanen Tabeller og felt Vi velger tabeller hvorfra 1C-spørringen vil motta dataene og feltene i disse tabellene som er nødvendige for å løse et spesifikt problem. Fylling inn i murverket Forhold vi pålegger betingelser for de valgte tabellene for å velge fra dem bare dataene vi trenger, og så videre.

Beskrivelse av spørringsdesigneren på det offisielle 1C 8-nettstedet: v8.1c.ru

Tabeller og felt; ; ; ; ; ; Nestede søk (under utvikling).

For å ringe 1s 8 spørringsdesigneren i programkoden må du:

  • Opprett en ny forespørsel
Request = Ny forespørsel;
  • Angi en tom forespørselstekstlinje
Request.Text = "";
  • Plasser musepekeren mellom anførselstegnene og trykk på høyre museknapp. I det åpne kontekstmenyen Velg en Spørringskonstruktør og svar Ja til spørsmålet om å opprette en ny forespørsel. Hvis forespørselsteksten allerede er skrevet ned, må du klikke hvor som helst i den og ringe konstruktøren ;

La oss se på alle hovedfanene til spørringsbyggeren ved å bruke små eksempler på økende kompleksitet. Denne tilnærmingen vil tillate en nybegynner 1C-programmerer å mer effektivt studere konstruktøren og alle dens evner. For eksempler vil vi bruke konfigurasjonen Regnskap 3.0.

Leksjon 1. Spørringsbyggeren er den enkleste brukssaken.

Oppgave: skriv en forespørsel til nomenklaturkatalogen, velg hele nomenklaturen til katalogen.

Nye faner: Tabeller og felt.

Nye mekanismer: se og redigere forespørselsteksten ved å bruke "Request"-knappen.

For å begynne å lage en forespørsel, la oss lage en ny forespørsel og ringe konstruktøren (som skrevet noen avsnitt ovenfor). Etter dette åpnes designervinduet på fanen Tabeller og felt.

Teoretisk del av leksjon nr. 1

Tab Tabeller og felt består av tre seksjoner:

Database. Denne delen presenterer alle databasetabellene som kan brukes til å bygge en spørring;

Tabeller. I denne delen er tabellene som er nødvendige for denne spørringen valgt. For deretter å flytte dem fra delen database trenger å:

  • Eller dobbeltklikk på bordet;
  • Eller bruk ">" eller ">>"-knappene.

Over avsnitt Tabeller Det er en rekke knapper. De fleste av dem vil bli diskutert mer detaljert i de følgende leksjonene. Foreløpig vil jeg bare gi korte forklaringer.

  • Opprett en underspørring(Rød linje). Designet for å lage en ny underspørring;
  • Lag en midlertidig tabellbeskrivelse(gul linje). Lar deg spesifisere navnet på en midlertidig tabell som er plassert utenfor denne spørringen, den kan også brukes til å sende en tabell med verdier til spørringen;
  • Endre gjeldende element(grønn linje). Lar deg hoppe til den valgte underspørringen, den midlertidige tabellen eller den midlertidige tabellbeskrivelsen;
  • Fjern gjeldende element(blå linje). Fjerner den valgte tabellen fra de valgte tabellene;
  • Bytt bord(blå linje). Åpner dialogen for å erstatte den valgte tabellen. Nyttig hvis du har valgt feil register virtuell tabell, da posisjonering skjer på den gjeldende valgte tabellen i listen.
  • Virtuelle bordalternativer(lilla strek). Åpner parametrene til den virtuelle registertabellen.

Enger. Denne seksjonen velger tabellfelt fra forrige seksjon. Disse feltene vil være kolonnene i tabellen eller utvalget oppnådd som et resultat av spørringen. De er først og fremst nødvendige for å få fra de utvalgte tabellene kun den informasjonen som er nødvendig i et bestemt tilfelle. For å flytte dem fra delen Tabeller som trengs:

  • Eller dobbeltklikk på feltet;
  • Eller bruk ">" eller ">>" knappene;
  • Du kan også legge til et nytt felt selv ved å bruke et vilkårlig uttrykk fra feltene til utvalgte tabeller og spørringsspråkfunksjoner.

Over avsnitt Enger Det er en rekke knapper. Oppretting av felt ved hjelp av vilkårlige uttrykk vil bli diskutert mer detaljert i de følgende leksjonene. Foreløpig vil jeg bare gi korte forklaringer.

  • Legg til(grønn linje). Designet for å legge til et nytt felt ved hjelp av friuttrykksredigering;
  • Endre gjeldende element(Rød linje). Lar deg endre det valgte feltet ved hjelp av redigeringsprogrammet;
  • Slett gjeldende(blå linje). Fjerner det valgte feltet fra listen.

Praktisk del av leksjon nr. 1

Vi har funnet ut teorien som er nødvendig for å fullføre oppgaven som er gitt i denne leksjonen. La meg minne deg på hvordan det høres ut: skriv en forespørsel til nomenklaturkatalogen, velg hele nomenklaturen til katalogen.

La oss begynne å lage en forespørsel om varer:

  • La oss lage en ny forespørsel og åpne konstruktøren ved å bruke metoden spesifisert i begynnelsen av leksjonen;
  • I kapittel Database, la oss åpne en tråd Kataloger og vi finner en guide der Nomenklatur;
  • Velg den og bruk «>»-knappen for å flytte den til delen tabeller;
  • I kapittel Tabelleråpne nomenklaturkatalogen ved å bruke "+"-ikonet;
  • Finn feltet i listen over felt som åpnes Link og flytt den til delen Enger ved å bruke ">"-knappen
  • Vareforespørselen er klar, klikk på "OK"-knappen nederst i designervinduet.

Spørringsspråket 1C 8 er et uunnværlig verktøy for en 1C-programmerer, det lar deg skrive mer kortfattet, enkel, forståelig kode og bruke færre systemressurser når du arbeider med data. Denne artikkelen åpner en serie leksjoner dedikert til 1C 8-spørringsspråket. I den første leksjonen vil vi se på strukturen til hovedoperatøren til dette språket. VELGE. Ved å bruke denne operatoren kan du lage valg fra databasetabeller. Utvalgte tabelldata kan sorteres, betingelser plasseres på dem, kobles og kombineres med data fra andre tabeller, grupperes etter ulike felt og mye mer.

Spørringsspråk 1C enterprise 8 - Operatørstruktur SELECT

La oss se på strukturen til SELECT-operatøren (valgfrie deler av operatøren er angitt i hakeparenteser). 1C-spørringsspråket gir et bredt spekter av verktøy for å lage dataeksempler.

VELG [TILLATT] [ANNET] [FØRST A] [Felt1] [AS Alias1], [Felt2] [AS Alias2], ... [FeltM] [AS AliasB] [SETT TemporaryTableName] [FRA Table1 AS AliasTableTable1 [[INNER JOIN] ][LEFT JOIN][FULL JOIN] Table2 AS Alias ​​​​Table2 [[INNER JOIN][LEFT JOIN][FULL JOIN] TableC AS Alias ​​​​TablesC BY Expression1 [And Expression2]...[And ExpressionD]] .. ... BY Expression1 [Og Expression2]...[Og ExpressionE]] ... [TableF AS TableF Alias] ... ] [GRUPPER ETTER GroupingField1[,] ... [GroupingFieldG]] [HVOR Expression1 [AND Expression2] ... [AND ExpressionH]] [FORENE ALLE...] [; ...] [INDEKS ETTER Alias1 ... AliasB] [TOTALER [AggregationFunction(Field1)][,] [AggregationFunction(Field2)][,] ... [AggregationFunction(FieldI)] AV [GENERAL][,] [ GroupingField1][,] ... [GroupingFieldj]]

Nøkkelord og blokker for arbeid med felt

  • VELGE– et nøkkelord som indikerer begynnelsen av operatøren;
  • TILLATT indikerer at utvalget bør inkludere tabellposter som har lesetilgang for den gitte brukeren;
  • DIVERSE indikerer at prøven bare skal inkludere forskjellige (på tvers av alle felt) strømmer. Med andre ord vil dupliserte rader bli ekskludert fra prøven;
  • FØRSTE A hvis du spesifiserer dette nøkkelordet, vil bare den første A av radene valgt av spørringen bli inkludert i utvalget, der A er et naturlig tall;
  • Feltblokk— denne blokken angir feltene som må inkluderes i utvalget. Disse feltene vil være utvalgte kolonner. I det enkleste tilfellet ser feltet slik ut: Table Alias.TableFieldName AS Feltalias

    På denne måten indikerer vi hvilken tabell vi tar dette feltet fra. 1C-spørringsspråket lar deg spesifisere eventuelle aliaser, men de bør ikke gjentas i samme SELECT-setning. Et felt kan være mer komplekst og bestå av ulike kombinasjoner av tabellfelt, spørringsspråkfunksjoner og aggregerte funksjoner, men vi vil ikke dekke disse tilfellene i denne opplæringen.

Nøkkelord og blokker for arbeid med tabeller

  • PUT TemporaryTableName- nøkkelord PLASS er ment å lage en midlertidig tabell med et spesifikt navn, som vil bli lagret i tilfeldig tilgang minne i denne 1C 8-økten til den avsluttes eller til det midlertidige bordet er ødelagt. Det skal bemerkes at navnene på midlertidige tabeller i en 1C 8-sesjon ikke skal gjentas;
  • Blokk med tabeller og relasjoner— blokken angir alle tabellene som brukes i denne forespørselen, samt forbindelser mellom dem. Blokken begynner med et nøkkelord FRA, etterfulgt av navnet og aliaset til den første tabellen. Hvis dette bordet er koblet til andre tabeller, så er lenkene indikert. 1C-spørringsspråket inneholder følgende sett med tilkoblingstyper:
    • INDRE BLI MED— en post fra den venstre tabellen vil bare inkluderes i utvalget hvis tilkoblingsbetingelsen er oppfylt, en post fra den høyre tabellen vil bare inkluderes i utvalget hvis tilkoblingsbetingelsen er oppfylt;
    • VENSTRE FORBINDELSE— en post fra venstre tabell vil i alle fall inkluderes i utvalget, en post fra høyre tabell vil bare inkluderes i utvalget hvis tilkoblingsbetingelsen er oppfylt;
    • FULL TILKOBLING— en post fra venstre tabell vil i alle fall inkluderes i utvalget først, deretter bare hvis tilkoblingsbetingelsen er oppfylt, vil en post fra høyre tabell i alle fall inkluderes i utvalget først, deretter bare hvis tilkoblingsbetingelsen er møtt. I dette tilfellet ekskluderes de resulterende dupliserte radene fra prøven.

    Etter tilkoblingstypen er navnet og aliaset til den andre tabellen angitt. Deretter kommer nøkkelordet AV, etterfulgt av kommunikasjonsforhold forbundet med hverandre av logiske operatører OG, ELLER. Hvert uttrykk i betingelsen må returnere en boolsk verdi (True, False). Hvis den første tabellen er koblet til noen andre tabeller enn den andre, vises tilkoblingstypen igjen, og så videre. Hver av tabellene som deltar i forbindelsen kan på sin side kobles til andre tabeller, dette er vist i spørringsstrukturdiagrammet. Hvis tabellen ikke er relatert til den første, er den indikert uten tilkoblingstype, deretter kan tilkoblingene følge, og så videre;

Nøkkelord og datakonverteringsblokker

  • Gruppeblokk— denne blokken brukes til å gruppere tabellrader. Rader kombineres til én hvis verdiene til feltene spesifisert etter nøkkelordet GRUPPE AV vise seg å være det samme. I dette tilfellet summeres, gjennomsnittlig, maksimeres eller minimeres alle andre felt ved å bruke aggregerte funksjoner. Aggregatfunksjoner brukes i en feltblokk. Eksempel: Maximum(TableAlias.TableFieldName) AS FieldAlias
  • Tilstandsblokk- i denne blokken etter nøkkelordet HVOR betingede uttrykk atskilt med logiske operatorer er indikert OG, ELLER, for at noen av de valgte radene skal inkluderes i utvalget, er det nødvendig at alle betingelser i aggregatet har en verdi Ekte.
  • KOMBINER ALT– dette nøkkelordet brukes til å kombinere spørringer (operatører VELGE). 1C-spørringsspråket lar deg kombinere flere spørringer til ett. For at spørringer skal slås sammen, må de ha samme sett med felt;
  • «;» - semikolon brukes til å skille utsagn som er uavhengige av hverandre VELGE;
  • INDEKSER ETTER— nøkkelordet brukes til å indeksere feltene spesifisert etter det;
  • Oppsummeringsblokk- brukes til å bygge trelignende prøver. For hvert av grupperingsfeltene spesifisert etter nøkkelordet AV, det opprettes en egen rad i utvalget. På denne linjen, ved å bruke aggregerte funksjoner, beregnes de totale verdiene for feltene spesifisert etter nøkkelordet RESULTATER.

Vil du fortsette å lære 1C 8 spørringsspråket? Les deretter neste artikkel.

Be om . Tekst = "VELGE | StorageUnits.Link |FRA | Directory.usStorageUnits HVORDAN du brukerStorageUnits // Eksempel 1: sammenligning med en tom boolsk verdi: |HVOR | StorageUnits.AllowSelectionFromReserveZone = False // Eksempel 2. men hvis denne boolsk er definert, er den bedre slik: // betingelse for en negativ boolsk: |HVOR | IKKE lagringsenheter Tillat valg fra reservesone // Eksempel 3. valg basert på tilstanden til et tomt felt som har typen "katalog av en bestemt type" |HVOR | StorageUnits.ActiveSelectionArea = VERDI(Directory.SelectionArea.EmptyLink) // Eksempel 3a. valg basert på tilstanden til et tomt felt som har typen "dokument av en bestemt type" |HVOR | OurInformationRegister.Document = VERDI(Document.OurDocument.EmptyLink) // Eksempel 3b. valg basert på tilstanden til et tomt felt av typen "dokumenter" forskjellige typer" (sammensatt felt) |HVOR | (OurInformationRegister.Document = VALUE(Document.OurDocument1.EmptyLink) | OR OurInformationRegister.Document = VALUE(Document.OurDocument2.EmptyLink) | ELLER... (osv. - vi viser sekvensielt betingelsene for alle mulige typer av dette sammensatte feltet) ) // Eksempel 4. eller omvendt, hvis du trenger å velge en fylt verdi av typen "streng", vil betingelsen hjelpe: |HVOR | Lagringsenhet.navn > """" // Eksempel 5. Hvis du trenger å velge dokumenter av en bestemt type, med en sammensatt datatype, for eksempel i "RunningTasks"-registeret, har "Task"-ressursen en sammensatt type, blant verdiene som dokumentet "Utvalg" er mulig |HVOR | EXPRESS(InformasjonsregisterUtførte oppgaver.Task AS Document.Selection) LINK Document.Selection // Eksempel 5a. Et annet lignende eksempel når du trenger å velge dokumenter av en bestemt type | VALG | NÅR DU UTRYKKER (ag Korrespondanse av dokumenter. DocumentBU AS Dokument. Mottak av varer og tjenester) LINK Dokumenter for mottak av varer og tjenester | SÅ ""Mottak av varer og tjenester"" | NÅR DU UTRYKKES (ag Korrespondanse av dokumenter. DocumentBU AS Dokument. Salg av varer og tjenester) LINK Dokument salg av varer og tjenester | SÅ ""Salg av varer og tjenester"" | ELLER """" | AVSLUTT SOM dokumentvisning // Eksempel 6. valg etter betingelse av en udefinert verdi: |HVOR | SavedSettings.User = UDEFINERT // Eksempel 7. valg etter type bevegelse "Innkommende" av akkumuleringsregisteret, "Utgift" - tilsvarende): |HVOR | RegProductsInRetail.MovementType = VERDI(MovementTypeAccumulation.Incoming) // Eksempel 8. Hvordan indikere i en forespørsel at det ikke er nødvendig å utføre forespørselen (for eksempel må du, avhengig av en eller annen tilstand, programmessig returnere et tomt forespørselsresultat - Request.Text = StrReplace(Request.Text, "WHERE Doc.Link = &DocumentLink" , "HVOR ER LØGNEN");). For å gjøre dette, legg bare til betingelsen "Where is False". Forresten, uavhengig av mengden av data som er forespurt i prøven, vil en slik forespørsel bli utført umiddelbart. |HVOR ER LØGNEN // Eksempel 9. Kontroller at søkeresultatet inneholder data: Hvis ikkeBe om.Henrette().Tømme() Deretter // Eksempel 10. utvalg basert på en tom dato: |HVOR | tbStrings.CancellationDate = DATOTIME(1, 1, 1)

Artikkelen gir nyttige triks når du arbeider med 1C v.8.2-spørringer, samt informasjon som ikke er så godt kjent om spørringsspråket. Jeg prøver ikke å gi Full beskrivelse spørrespråk, men jeg vil bare dvele ved noen punkter som kan være nyttige for noen.

Så la oss begynne. En forespørsel er et spesielt objekt i 1C 8.2, som brukes til å generere og utføre spørringer mot databasetabeller i systemet. For å utføre en spørring må du komponere en spørringstekst som beskriver hvilke tabeller som skal brukes som spørringsdatakilder, hvilke felt som må velges, hvilke sorteringer og grupperinger som skal brukes osv. Du kan lese mer om spørringer i boken "1C 8.2 Developer's Guide". Spørringsspråket 1C 8.2 er veldig likt i syntaks til andre SQL-databasespørringsspråk, men det er også forskjeller. Blant hovedfordelene med det innebygde spørringsspråket er det verdt å merke seg referansen til felt, tilstedeværelsen av virtuelle tabeller, praktisk arbeid med totaler og utypede felt i spørringer. Ulempene er at du ikke kan bruke en spørring som et utdatafelt, du kan ikke bruke lagrede prosedyrer, og du kan ikke konvertere en streng til et tall.

Jeg vil gi informasjon og anbefalinger om søkespråket punkt for punkt:
1. For å øke lesbarheten til forespørselen og redusere antall forespørselsparametere, kan du bruke en bokstav for å få tilgang til forhåndsdefinerte konfigurasjonsdata i forespørselen VERDI (VERDIREPRESENTASJON). Som en representasjon av verdier, verdiene av oppregninger, forhåndsdefinerte data for kataloger, planer for beregningstyper, planer for typer egenskaper, kontoplaner, tomme lenker, verdier av rutepunkter, verdier for systemoverføringer ( for eksempel kan akkumuleringsbevegelsestype, kontotype) brukes.
Eksempler:

HVOR By = VERDI(Directory.Cities.Moskva)
HVOR By = VERDI(Directory.Cities.EmptyLink)
WHEREProductType = VERDI(Enumeration.ProductTypes.Service)
WHEREMovementType = VERDI(MovementTypeAccumulation.Incoming)
HVOR er rutepunktet =
VERDI(BusinessProcess.Agreement.RoutePoint.Agreement)

Uttrykket i parentes begynner alltid med ordet i entall(Katalog, Enumeration, etc.) som samsvarer med typen av den forhåndsdefinerte verdien.

2.Auto-bestilling i en spørring kan i stor grad bremse prosessen. Hvis sortering ikke er nødvendig, er det bedre å ikke bruke det i det hele tatt. I mange tilfeller er det mer effektivt å skrive sortering med et nøkkelord SORTER ETTER.

3. Du må sørge for at det ikke vises et tvetydig felt når du bruker aliaser. Ellers vil ikke systemet forstå hvilket objekt som må åpnes.
Eksempel på en forespørsel med et tvetydig felt:
VELGE
Nomenclature.Link,
Resterende varerRemaining.QuantityRemaining
FRA
Directory.Nomenclature AS Nomenclature
VENSTRE TILKOBLING Registrer Ansamlinger Resterende varer
Software Remaining ProductsRemaining.Nomenclature = Nomenclature.Link
Det er nødvendig å korrigere tabellaliaset, for eksempel slik: "Directory.Nomenclature AS Nomenclature1", og "Nomenclature.Link" bør korrigeres tilsvarende til "Nomenclature1.Link".

4. Noen ganger er det nyttig å få en representasjon av referansefelt ved hjelp av et nøkkelord OPPTREDEN sammen med en lenke slik at det ikke er gjentatt tilgang til databasen. Dette er nyttig når du viser resultatet av en spørring i en tabell.
Eksempel:
VELGE
REPRESENTASJON(Dokument.motpart) SOM mottaker,
PRESENTASJON(Dokument.Base)
FRA
Document.Invoice AS Dokument

5. Bruk i en forespørsel EXPRESS(Felt AS Type) lar deg fjerne unødvendige tabeller fra en forbindelse med et felt av en sammensatt datatype. Derved fremskyndes utførelsen av forespørselen.
Eksempel (opptaker - felt med kompositt type Til fysisk bord register over akkumulering av gjenværende varer, i forespørselen velges dato og antall dokumenter Mottak av varer, mens når du får tilgang til detaljene i dokumentet Dato og nummer gjennom registratoren, er det ingen multippel forbindelse mellom registertabellen og tabellene for dokumenter som er registrarer for restgodsregisteret):
VELG DIVERSE[b] EXPRESS(Resterende varer.Registrator AS Dokument. Varemottak). Nummer SOM KVITTERINGSNUMMER,
[b] EXPRESS(Resterende varer. Registrar AS Dokument. Varemottak). Dato AS MOTTAKSDATO
[b]FRA Register over Akkumuleringer AS Restgods HVOR (EXPRESS(Resterende varer.Registrator AS Document.Receipt of Goods) ER IKKE NULL)

6. Når det i 1C-konfigurasjonen er brukere som har begrensede rettigheter til visse konfigurasjonsobjekter, må nøkkelordet brukes i forespørselen til slike objekter TILLATT slik at forespørselen utføres uten feil (Velg Tillatt...)

7.Når du slår sammen tabeller som inneholder nestede tabeller (for eksempel et dokument med en tabelldel), kan nøkkelordet være nyttig TØM BORD når for eksempel et av dokumentene ikke har en tabelldel.
Eksempel:
VELG Link.Number, TOM TABELL.(Nr., Vare, Antall) SOM sammensetning

KOMBINER ALT
VELG Link.Number, Composition.(LineNumber, Nomenclature, Quantity)
FRA Document.Invoice

8. Når du arbeider med sammenføyninger av tabeller som inneholder én rad hver, kan det være nødvendig å slå sammen radene i tabellene (i begge tabellene er det ikke noe felt som de kan slås sammen med). Dette kan oppnås ved å bruke konstruksjonen " FULL TILKOBLING Tabell etter TRUE" Hvis tabeller har mer enn én rad, vil resultatet være antall rader lik produktet antall rader i begge tabellene. Hvis det er O-rader i en tabell, vil antallet rader i den resulterende tabellen være lik antall rader i den andre tabellen. For å koble til slike tabeller kan du også bruke det kartesiske produktet av tabeller, der alle kombinasjoner av rader fra begge tabellene vises i den resulterende tabellen. Vi må huske at hvis det er 0 rader i en av tabellene, vil det kartesiske produktet være 0, så en full sammenføyning vil være bedre. Generelt, i stedet for en fullstendig tilkobling AV SANT Du kan bruke en hvilken som helst annen type sammenføyning, men i dette tilfellet er det også mulig at den resulterende tabellen vil ha 0 rader, selv om en av tabellene har et antall rader som ikke er null. Ved full sammenføyning vil denne situasjonen kun oppstå i ett tilfelle, hvis antall rader i begge tabellene er 0. Hvis du vet at det er nøyaktig minst én rad i tabellen, så kan du bruke VENSTRE FORBINDELSE med et annet bord med tilstand AV SANT.
Eksempel (riktignok konstruert, for Full Join):
VELGE
Første 1
Gender.Link,
K. Motpart
FRA
Oppregning AS Kjønn
FULL TILKOBLING (Velg Første 1 D. Motpart FRA Dokument. Salg av varer HVORDAN D Ordne etter D. Tidspunkt) HVORDAN DU
PÅ(TRUE)

9. For å få unike poster for et bestemt felt, er det mer riktig å bruke et nøkkelord i stedet for å gruppere DIVERSE i forespørselen, fordi denne konstruksjonen er mye klarere og nøkkelordet GRUPPE AV har mer bred applikasjon og brukes ofte hvis det i tillegg er nødvendig å beregne aggregerte funksjoner etter grupperinger. I noen tilfeller er det nødvendig å trekke seg Begrenset mengde linjer. For å gjøre dette, bør du spesifisere nøkkelordet i forespørselsbeskrivelsen FØRST og etter det - det nødvendige antall linjer.
Eksempel for FØRST:
Velg Første 5
Directory.Nomenclature.Name,
Directory.Nomenclature.PurchasingPrice
Sorter etter
Directory.Nomenclature.PurchasePrice Synkende
Eksempel for DIVERSE:
Velg Diverse
Document.Consumable.Motpart

10. Aggregasjonsfunksjoner i en spørring kan brukes uten nøkkelord GRUPPE. I dette tilfellet vil alle resultater grupperes i én linje.
Eksempel:
Velge
Beløp(Faktura.Beløp) Som Beløp
Fra
Document.Invoice.Composition Som faktura

11.I spørringer i utvalgsfeltene kan du fritt få tilgang til detaljene i utvalgsfeltene. Denne funksjonen kalles select field dereference. Hvis datakilden er en nestet tabell (tabelldelen av dokumentet), kan du i utvalgsfeltene også få tilgang til feltene til hovedtabellen (for eksempel, gjennom koblingsfeltet, få tilgang til feltet til hovedtabellen Konto)
Eksempel:
VELGE[b] Mottak av varer og tjenester varer Kvantitet AS Kvantitet,. Mottak av varer og tjenesterGoods.Link.Counterparty FRA HVOR
Det er en særegenhet ved å bruke feltdereferering hvis det er grupperinger i forespørselen. I alle spørringer med grupperinger i listene over søkefelt kan du fritt få tilgang til detaljene for grupperingsfeltene.
Eksempel:
VELGE
Mottak av varer og tjenester, nomenklatur.
Nomenklatur for varer og tjenester.
SUM (Receipt of Goods and Services Goods. Quantity) AS Quantity,
Mottak av varer og tjenesterGoods.Link.Counterparty,
Mottak av varer og tjenesterGoods.Link.Date
FRA
Dokumentmottak av varer og tjenester HVORDAN mottak av varer og tjenester
HVOR
Mottak av varer og tjenesterGoods.Link = &Link
GRUPPE AV
Mottak av varer og tjenester, nomenklatur.
Mottak av varer og tjenesterGoods.Link
1C-hjelpen sier at hvis det er gruppering, kan bare grupperingsfelt og aggregerte funksjoner for utvalgsfeltene delta i søkeutvalgsfeltene. Det er en unntakstilfelle når aggregerte funksjoner brukes på felt i en nestet tabell. I dette tilfellet, i listen over utvalgsfelt, er det mulig å få tilgang til feltene i toppnivåtabellen, uten å gruppere resultatene etter disse feltene.
Eksempel:
VELGE
Mottak av varer og tjenester (SUM (mengde), nomenklatur.
Mottak av varer og tjenester Link.
Mottak av varer og tjenester
FRA
Dokumenter mottak av varer og tjenester HVORDAN mottak av varer og tjenester
GRUPPE AV
Mottak av varer og tjenester (nomenklatur).

12. Noen ganger, i stedet for å spesifisere et hvilket som helst felt i grupperingen, er det nyttig å inkludere følgende parameter i feltene for valg av spørring:
VELGE DocProducts.Nomenclature, &motpart, &Periode, SUM(DocProducts.Quantity * DocProducts.K) AS Quantity, SUM(DocProducts.Amount) AS Amount FRA Document.Admission.Products AS DocProducts HVOR DocProducts.Link = &Link
GRUPPE AV DocProducts.Nomenclature
Og sett deretter parameteren i forespørselsteksten:
Request.SetParameter("&Account", SelectAccount);
Query.SetParameter("&Period", Dato);

13. I universelle spørringer kan parametere brukes i beskrivelsen av spørringsdatakilder, under betingelsene HVOR, i betingelsene for å slå sammen tabeller og parametere for virtuelle tabeller. Det er to teknikker for å lage generiske søk:
A) bruk av strengsammenkoblingsmekanismen, og legger til variabler i forespørselsteksten;
Eksempel 1:

OrderingType = ?(NOE VARIABLER,"","DESC");
Query.Text = "Velg... Ordne etter felt1 " + OrderType + "...";
Eksempel 2:
Query.Text = "Velg felt1...";

Hvis NOEN VARIABEL = 1, så
Request.Text = Request.Text + ",Felt2 ...";
slutt om;
B) bruk parametrene i ulike deler forespørsel (for eksempel i datakildedelen av forespørselen), og deretter den innebygde språkmetoden - STREPLACE(). Når du designer universelle spørringer, er det nyttig å få tilgang til egenskapene til objekter METADATA(), med hvilken du kan bestemme navnet på tabellen for en lenke (for eksempel for et dokument vil det være noe sånt som dette - Link . METADATA().NAME), sendt gjennom en parameter til en universell prosedyre.
Eksempel:
Velge
DocTch.Nomenclature,
...
FRA
&Noen DocTC AS DocTC
Og sett deretter parameteren i forespørselsteksten
Request.Text = StrReplace(Request.Text, "&SomeDocTCH", "Document."+Link.Metadata().Name+".Products");

Parametere kan brukes i spørringsbetingelser for å aktivere en valgfri betingelse &Parameter OR NOT SomeProperty:
Request.SetParameter(“&Parameter”, “Counterparty.Name=””Ivanov”””);
Ved hjelp av en bokstavelig EKTE du kan fjerne visse filtre i forespørselen
Query.SetParameter("&Parameter", True);

14. Veldig nyttig i spørringsdesigneren er tabellkontekstmenykommandoen - " Gi tabell nytt navn...", som du kan komme opp med et generalisert navn for datakilden. For å lage spørringer for tabeller av samme type, lignende struktur, kan det være nyttig for den andre tabellen å kopiere spørringsteksten til den første tabellen, gå til spørringsdesignervinduet og velg elementet i kontekstmenyen i tabellen - Bytt bord... og velg den andre tabellen.

15.Når du arbeider med å lage nestede spørringer i seksjonene av betingelsene eller parameterne til virtuelle tabeller til spørringsdesigneren, brukes teknikken for å fremheve et mellomrom i parentes, deretter vises "Query Designer"-elementet i kontekstmenyen, og når du redigerer en nestet spørring, er hele spørringen i parentes uthevet i betingelsen.
Eksempel på et nestet søk:
Produkt B (Velg produkt...)

16. Når du designer ACS-rapporter i spørringer for å balansere registre, er det mer praktisk og riktig å bruke uttrykket som Periode-parameteren AddToDate(EndPeriod(Period,DAY),SECOND,1), siden virtuelle saldoer oppnås ved begynnelsen av perioden, ikke inkludert siste sekund. +1 sekund-teknikken kan ikke brukes med dokumenter: av ny teknikk ved kontering av dokumenter må registersaldo mottas for perioden spesifisert av grenseobjektet med tidspunkt for dokumentet inkludert (og ikke på datoen for dokumentet +1 sekund!), og i henhold til den gamle konteringsmetoden - kl. tidspunktet for dokumentet (og ikke på datoen for dokumentet!). Når man analyserer omsetning eller data for en periode, er det praktisk å legge til en parameter med typen StandardPeriode(i dette tilfellet er det ikke nødvendig å oppgi siste dato for intervallet på slutten av dagen). For standardfeltet "Start of Period" i feltet "Expression" må du skrive inn "&Periode.Startdato" Og for standardfeltet "End of Period" i "Expression"-feltet, skriv " &Periode.sluttdato". Så mange nyttig informasjon spørringsspråket finner du ikke i syntaksassistenten, men i full hjelp av 1C 8.2-konfiguratoren (F1-knapp)

17. Spørrefunksjon IsNull(det er mer praktisk å skrive den engelske versjonen IsNull) brukes vanligvis for å bli kvitt nullverdier for numeriske søkefelt. I noen tilfeller, for eksempel en fullstendig sammenføyning av to tabeller, funksjonen IsNull (Parameter1,Parameter2) kan erstatte designet VALG NÅR...SÅ..ANNET....SLUTTE, når for et hvilket som helst felt NULL-verdier kan være både i den første tabellen og i den andre (denne konstruksjonen lar deg få en ikke-Null-verdi for feltet). Men vi må huske det, i motsetning til betinget operatør VALG funksjon IsNull konverterer typen av det andre argumentet til typen til det første argumentet, som må tas i betraktning hvis argumenttypene er forskjellige!
Eksempel:
IsNull(Reg.Remaining,0)
IsNull(Doc.Product,Doc1.Item)

18. Ved betinget konstruksjon VALG Det er en alternativ syntaks for det enkle tilfellet å teste likhet til en viss verdi, men den er imidlertid udokumentert:
Valguttrykk Når 1 Deretter "Høy" Når 2 Deretter "Mellom" Ellers "Lav" slutt

19. NULL-verdikontrolloperatør Ja null(Vi kan anbefale å bruke den engelske versjonen Er null). Denne konstruksjonen dukket opp fordi enhver operasjon som sammenligner to verdier, hvorav minst én er Null, alltid er falsk. Skrive Hvor Navn = Null feil. Formen for negasjon av denne operatøren er også interessant Nei Null– feil, men rett Ja ikke null eller form Ikke (felt 1 er null)- dette er en betydelig forskjell fra alle operatører som brukes sammen med He-operatøren.

20. Noen ganger er operatørskjemaet nyttig I for å se etter samsvar med en av de oppførte verdiene.
Eksempel:
...Hvor er produktnavnet B ("husholdningsapparater", "datamaskiner")
For oppslagsverk kan operatørskjemaet være nyttig I kontroll av hierarkimedlemskap.
Eksempel:
...Hvor er nomenklaturen I HIERARKIET (&GRUPPEN)
Operatør I brukes ofte til å sjekke om en verdi er inkludert i resultatet av en underspørring.
Eksempel:
...Hvor Nomenclature.Link B (Velg Nomenclature.Link...).
I en underspørring kan du få tilgang til de ytre søkefeltene i en tilstand.
Eksempel:
// Velg navnene på produktene som var til stede
// i fakturaer
VELGE
Products.Name
FRA
Directory.Nomenclature HVORDAN produkter
HVOR
Produkter.Link B
(VELGE
InvoiceComposition.Nomenclature
FRA
Document.Invoice.Composition AS InvoiceComposition
HVOR
InvoiceContent.Nomenclature = Products.Link)
Operasjon I kan brukes med matriser, verdilister, verditabeller, nestede spørringer. I dette tilfellet er det mulig å redusere forholdene
Syntaks for en underspørring
(uttrykk1, uttrykk2,...,uttrykkN) I (Velg uttrykk1, uttrykk2,...,uttrykkN...)
Syntaks for verditabell
(uttrykk1, uttrykk2,...,uttrykkN) I (&TK), hvor de første N kolonnene brukes i tabellen over TK-verdier

20. Det er en vits på Internett om hvordan spørringsdesigneren alltid gjør VENSTRE slå sammen tabeller (og bytte dem), uansett hvordan vi spesifiserer IKKE SANT:
1C: Bedriften elsker "til venstre".

21. Det er praktisk å feilsøke komplekse spørringer i spørringskonsollen. Det er mange av dem på Internett. Etter å ha feilsøkt spørringen, kan du kopiere den, og i spørringsdesigneren er det en fantastisk knapp " Be om", hvor du kan lime den inn i samme skjema og lagre den (tidligere var det bare mulig å kopiere den i konfiguratoren og formatere forespørselen med linjeskifttegnet). I vinduet som åpnes når du klikker på "Query" -knappen, kan du redigere spørringen og se utførelsesresultatet, noe som er ganske praktisk.

22. Når du designer ACS-rapporter, må du huske at hvis du trenger å gi filtrering etter et bestemt felt, er det ikke nødvendig å legge til en parameter i forespørselsteksten. Spørringsbyggeren har en fane " Datasammensetning", hvor du kan legge til parametere til betingelsene. I tillegg er det på ACS-rapportnivå en betingelsesfane hvor du kan legge til vilkårlige betingelser og lagre dem i hurtiginnstillinger. I dette tilfellet vil betingelsene være universelle (likhet, ulikhet, tilhørighet, inkludering i listen, etc.).

23. Når du arbeider med dokumenter, må du kanskje legge til sortering etter et virtuelt tabellfelt TIDSØyeblikk, men uflaks - i nestede søk fungerer ikke sortering etter dette feltet riktig. Å danse med tamburiner hjelper: sortering etter virtuelt felt TIDSØyeblikk erstattes av to sorteringer: etter dato og etter lenke. Du kan også løse problemet gjennom en midlertidig tabell ved å flytte den nestede spørringen til en separat spørring. For mange utgivelser har denne funksjonen eller feilen ikke blitt fikset.
Et eksempel på en funksjonsfeil forespørsel som mottar det sist postede dokumentet for den angitte motparten (eller snarere, den tabellformede delen av dokumentet):

VELGE
ConsumableProducts.Link,
Forbruksvarer.Linjenummer,
ConsumableProducts.Product,
Forbruksvarer. Antall,
Forbruksvarer Pris,
Forbruksvarer.Beløp
FRA

HVOR
Forbruksprodukter Link B
(VELG TOPP 1
D. Link
FRA
Document.Consumable AS D
HVOR
D.Link.Utført

BESTILL ETTER D. Link Time of Time DESCENDING.

Mulige løsninger:
A) Erstatt med SORTER ETTER
BESTILL INNEN D.Dato DESK.
BESTILL PÅ D.Link SAMLING

B) Du kan flytte den nestede spørringen til en midlertidig tabell:
VELG TOPP 1
D. Link
SETTE TZLink
FRA
Document.Consumable AS D
HVOR
D.Link.Utført
Og D.motpart = &motpart

SORTER ETTER
D. Link Tidsøyeblikk
;

////////////////////////////////////////////////////////////////////////////////
VELGE
ConsumableProducts.Link,
Forbruksvarer.Linjenummer,
ConsumableProducts.Product,
Forbruksvarer. Antall,
Forbruksvarer Pris,
Forbruksvarer.Beløp
FRA
Document.Consumables.Goods AS ConsumablesGoods
HVOR
Forbruksprodukter Link B
(VELGE
T.Link
FRA
TZLink AS T)
C) Du kan referere til hovedtabellen i dokumentet, og først da til tabelldelen
VELG TOPP 1
Consumable.Link,
Forbruksvarer.varer.(
Link,
Linjenummer,
Produkt,
Mengde,
Pris,
Sum
)
FRA
Document.Consumables AS Consumables
HVOR
Expense.Counterparty = &Motpart
Og forbruksvarer. Utført

SORTER ETTER
Forbruksvarer. Tidsøyeblikk MINSK

24. Når du får tilgang til hovedtabellen til et dokument (katalog), kan du også få tilgang til dataene i den underordnede tabellen (tabelldelen). Denne muligheten kalles derereferansetabellfelt. Et eksempel på en oppgave er oppgaven med å søke etter dokumenter som inneholder et bestemt produkt i tabelldelen.
Eksempel:
Velg Receipt.Link FROM Document.Receipt Hvor Receipt.Goods.Nomenclature = &Nomenclature.

Fordelen med denne spørringen fremfor en spørring på den nestede tabellen Receipt.Goods er at hvis det er duplikater i dokumenter, vil søkeresultatet bare returnere unike dokumenter uten å bruke nøkkelordet DIVERSE.
Sammenligne:
Velg Various Products.Link FROM Document.Receipt.Products as Products Hvor Products.Nomenclature = &Nomenclature.
Dette er sannsynligvis alt som er nødvendig. Det er tydelig at det fortsatt er mange spørsmål i spørrespråket som jeg ikke har dekket. For å skrive denne artikkelen brukte jeg informasjonen jeg mottok etter å ha fullført grunnkurs 1C 8.2 spec8.ru, samt fra boken "1C 8.2 Developer's Guide" og Internett.
Takk til alle!

Spørringsspråket er en av de grunnleggende mekanismene til 1C 8.3 for utviklere. Ved å bruke spørringer kan du raskt hente alle data som er lagret i databasen. Syntaksen er veldig lik SQL, men det er noen forskjeller.

De viktigste fordelene med 1C 8.3 (8.2) spørringsspråk fremfor SQL:

  • derefererende referansefelt (henviser ett eller flere punkter til objektdetaljer);
  • å jobbe med resultater er veldig praktisk;
  • muligheten til å lage virtuelle tabeller;
  • forespørselen kan skrives på både engelsk og russisk;
  • muligheten til å blokkere data for å unngå vranglås.

Ulemper med spørringsspråket i 1C:

  • i motsetning til SQL, tillater ikke 1C-spørringer endring av data;
  • mangel på lagrede prosedyrer;
  • umulighet å konvertere en streng til et tall.

La oss ta en titt på miniopplæringen vår om de grunnleggende konstruksjonene til 1C-spørringsspråket.

På grunn av det faktum at spørringer i 1C bare lar deg motta data, må enhver spørring begynne med ordet "SELECT". Etter denne kommandoen indikeres feltene som data må hentes fra. Hvis du angir "*", vil alle tilgjengelige felt bli valgt. Stedet som dataene skal velges fra (dokumenter, registre, kataloger osv.) er angitt etter ordet "FRA".

I eksemplet diskutert nedenfor, er navnene på hele nomenklaturen valgt fra "Nomenklatur"-katalogen. Etter ordet "HVORDAN", er aliaser (navn) for tabeller og felt indikert.

VELGE
Nomenklatur Navn AS Navn på nomenklatur
FRA
Directory.Nomenclature AS Nomenclature

Ved siden av "SELECT"-kommandoen kan du spesifisere søkeord:

  • DIVERSE. Spørringen vil kun velge rader som er forskjellige i minst ett felt (uten duplikater).
  • Første n, Hvor n– antall rader fra begynnelsen av resultatet som må velges. Oftest brukes denne konstruksjonen i forbindelse med sortering (ORDER BY). For eksempel når du trenger å velge et visst antall dokumenter som er nyere etter dato.
  • TILLATT. Denne utformingen lar deg velge fra databasen bare de postene som er tilgjengelige for gjeldende bruker. Basert på bruken av dette nøkkelordet, vil brukeren motta en feilmelding når han forsøker å forespørre poster som de ikke har tilgang til.

Disse nøkkelordene kan brukes sammen eller hver for seg.

FOR ENDRING

Dette forslaget blokkerer data for å forhindre gjensidige konflikter. Låste data vil ikke bli lest fra en annen tilkobling før transaksjonen avsluttes. I denne klausulen kan du spesifisere spesifikke tabeller som må låses. Ellers blir alle blokkert. Designet er kun relevant for den automatiske låsemodusen.

Oftest brukes "FOR CHANGE"-klausulen ved mottak av saldo. Når alt kommer til alt, når flere brukere jobber i programmet samtidig, mens en mottar saldo, kan en annen endre dem. I dette tilfellet vil den resulterende resten ikke lenger være korrekt. Hvis du blokkerer dataene med dette forslaget, vil den andre ansatte bli tvunget til å vente til den første ansatte mottar riktig saldo og utfører alle nødvendige manipulasjoner med den.

VELGE
Gjensidige oppgjør.
Gjensidige oppgjør Mengde gjensidige oppgjør Saldo
FRA
Akkumuleringsregister. Gjensidige oppgjør med ansatte
FOR ENDRING

HVOR

Designet er nødvendig for å pålegge en eller annen form for valg på de opplastede dataene. I noen tilfeller av innhenting av data fra registre, er det mer rimelig å spesifisere utvalgsbetingelser i parametrene til virtuelle tabeller. Ved bruk av "WHERE" hentes alle poster først, og først deretter tas valget i bruk, noe som bremser spørringen betydelig.

Nedenfor er et eksempel på forespørsel om å skaffe kontaktpersoner til en bestemt stilling. Valgparameteren har formatet: &ParameterName (parameternavnet er vilkårlig).

UTVALG (CASE)

Designet lar deg spesifisere betingelser direkte i forespørselens brødtekst.

I eksemplet nedenfor vil "AdditionalField" inneholde tekst avhengig av om dokumentet er lagt ut eller ikke:

VELGE
AdmissionT&U.Link,
VALG
NÅR OpptakT&U.Utført
SÅ "Dokumentet er bestått!"
ELSE "Dokumentet ble ikke lagt ut..."
SLUTT SOM tilleggsfelt
FRA
Dokumentmottak av varer og tjenester HVORDAN Mottaksvilkår

BLI MED

Sammenføyninger kobler to tabeller basert på en spesifikk relasjonsbetingelse.

VENSTRE/HØYRE FORBINDELSE

Essensen av LEFT-koblingen er at den første spesifiserte tabellen tas i sin helhet og den andre er knyttet til den i henhold til tilkoblingstilstanden. Hvis det ikke er noen poster som tilsvarer den første tabellen i den andre, erstattes NULL som deres verdier. Enkelt sagt er hovedtabellen den første spesifiserte tabellen, og dataene til den andre tabellen (hvis noen) er allerede erstattet med dataene.

For eksempel er det nødvendig å hente varevarer fra «Mottak av varer og tjenester»-dokumenter og priser fra informasjonsregisteret «Varepriser». I dette tilfellet, hvis prisen for en posisjon ikke blir funnet, erstatter du NULL i stedet. Alle varer fra dokumentet vil bli valgt uavhengig av om de har en pris eller ikke.

VELGE
Kvittering&U.nomenklatur,
Priser.Pris
FRA
Dokumenter mottak av varer og tjenester
INTERN JOIN RegisterInformation.PricesNomenclature.SliceLast AS Priser
Software Receipt&U.Nomenclature = Priser.Nomenklatur

I HØYRE er alt stikk motsatt.

FULL TILKOBLING

Denne typen tilkobling er forskjellig fra tidligere emner, at som et resultat vil alle poster fra både det første og det andre bordet bli returnert. Hvis iht gitt tilstand Hvis det ikke finnes noen poster i den første eller andre tabellen, vil NULL bli returnert i stedet.

Når du bruker en full tilkobling i forrige eksempel, vil alle vareelementer fra "Mottak av varer og tjenester"-dokumentet og alle de siste prisene fra "Varepriser"-registeret bli valgt. Verdiene til postene som ikke ble funnet i både den første og andre tabellen vil være lik NULL.

INDRE BLI MED

Forskjell INTERN BLI MEDLEM fra FULL er at hvis en post ikke finnes i minst én av tabellene, vil ikke spørringen vise den i det hele tatt. Som et resultat vil kun de vareelementene fra dokumentet "Mottak av varer og tjenester" velges som det er poster for i informasjonsregisteret "Varepriser", hvis vi i forrige eksempel erstatter "FULL" med "INTERNAL".

GRUPPE AV

Gruppering i 1C-spørringer lar deg skjule tabellrader (grupperingsfelt) i henhold til en bestemt fellestrekk(grupperte felt). Grupperingsfelt kan bare vises ved bruk av aggregerte funksjoner.

Resultatet av følgende spørring vil være en liste over produkttyper med maksimumspriser for dem.

VELGE
,
MAX(Price.Price) AS Pris
FRA

GRUPPE AV
Priser.Nomenklatur.Type nomenklatur

RESULTATER

I motsetning til gruppering, når du bruker totaler, vises alle poster og totale rader legges til dem. Gruppering viser bare generaliserte poster.

Resultatene kan oppsummeres for hele tabellen (ved å bruke nøkkelordet "GENERAL"), for flere felt, for felt med hierarkisk struktur (søkeord "HIERARKI", "KUN HIERARKI"). Ved oppsummering av resultater er det ikke nødvendig å bruke aggregerte funksjoner.

La oss se på et eksempel som ligner på eksemplet ovenfor ved å bruke gruppering. I dette tilfellet vil søkeresultatet ikke bare returnere grupperte felt, men også detaljerte poster.

VELGE
Priser.Nomenklatur.Type nomenklatur AS Type nomenklatur,
Priser.Pris AS Pris
FRA
Register over informasjonspriser på nomenklaturen Øyeblikksbilde av de siste AS-prisene
RESULTATER
MAKSIMUM(pris)
AV
TypeNomenklatur

HA

Denne operatoren ligner på WHERE-operatoren, men brukes bare for aggregerte funksjoner. De resterende feltene, unntatt de som brukes av denne operatøren, må grupperes. WHERE-operatøren gjelder ikke for aggregerte funksjoner.

I eksemplet nedenfor er maksprisene for en vare valgt hvis de overstiger 1000, gruppert etter varetype.

VELGE

MAX(Price.Price) AS Pris
FRA
Register over informasjonspriser på nomenklaturen Øyeblikksbilde av de siste AS-prisene
GRUPPE AV
Priser.Nomenklatur.Type nomenklatur
HA
MAKSIMUM(Priser.Pris) > 1000

SORTER ETTER

Operatoren ORDER BY sorterer resultatet av en spørring. For å sikre at poster vises i en konsistent rekkefølge, brukes AUTO ORDER. Primitive typer er sortert etter vanlige regler. Referansetyper er sortert etter GUID.

Et eksempel på å få en liste over ansatte sortert etter navn:

VELGE
Ansatte.Navn AS Navn
FRA
Directory.Employees HVORDAN ansatte
SORTER ETTER
Navn
AUTO BESTILLING

Andre 1C spørringsspråkkonstruksjoner

  • KOMBINERE– resultater av to spørringer i ett.
  • KOMBINER ALT– ligner på COMBINE, men uten å gruppere identiske rader.
  • TOM BORD– noen ganger brukt når du slår sammen spørringer for å spesifisere en tom nestet tabell.
  • PLASS– oppretter en midlertidig tabell for å optimalisere komplekse 1C-spørringer. Slike forespørsler kalles batchforespørsler.

Språkfunksjoner

  • SUBSTRING avkorter en streng fra en spesifisert posisjon til et spesifisert antall tegn.
  • ÅR...ANDRE lar deg få den valgte verdien av en numerisk type. Inndataparameteren er datoen.
  • BEGYNNELSE PÅ PERIODE og SLUT PÅ PERIODE brukes når du arbeider med datoer. Periodetype (DAG, MÅNED, ÅR osv.) angis som en tilleggsparameter.
  • ADDKDATE lar deg legge til eller trekke fra spesifisert tid fra en dato bestemt type(ANDRE, MINUTT, DAG osv.).
  • FORSKJELL DATO bestemmer forskjellen mellom to datoer, og indikerer typen utdataverdi (DAG, ÅR, MÅNED, osv.).
  • ISNULL erstatter den manglende verdien med det angitte uttrykket.
  • REPRESENTASJON og REPRESENTASJONSLINKER få en strengrepresentasjon av det angitte feltet. Gjelder for alle verdier og kun referanseverdier.
  • TYPE, TYPE VERDIER brukes til å bestemme typen inndataparameter.
  • LINK er en logisk sammenligningsoperator for attributtverditypen.
  • UTTRYKKE brukes til å konvertere en verdi til ønsket type.
  • DATO TID får en verdi av typen "Dato" fra numeriske verdier(År, måned, dag, time, minutt, sekund).
  • BETYDNING i en 1C-forespørsel brukes den til å indikere forhåndsdefinerte verdier - kataloger, oppregninger, planer for typer egenskaper. Brukseksempel: " Hvor juridisk person = verdi(oppregning. juridisk person. individuell)«.

Spørringsbygger

For å lage spørringer med 1C er det en veldig praktisk innebygd mekanisme - spørringsdesigneren. Den inneholder følgende hovedfaner:

  • "Tabeller og felt" - inneholder feltene som må velges og deres kilder.
  • "Connections" - beskriver betingelsene for CONNECTION-strukturen.
  • "Gruppering" – inneholder en beskrivelse av grupperingsstrukturer og summerte felt basert på dem.
  • "Betingelser" - er ansvarlig for å velge data i forespørselen.
  • "Avansert" - flere søkeparametere, for eksempel nøkkelord for "SELECT"-kommandoen, osv.
  • "Joins/Aliases" - mulighetene for å slå sammen tabeller er indikert og aliaser er spesifisert ("HOW"-konstruksjonen).
  • "Ordre" er ansvarlig for å sortere resultatet av forespørsler.
  • "Totals" - ligner på "Gruppering"-fanen, men brukes for "TOTALS"-konstruksjonen.

Teksten til selve forespørselen kan sees ved å klikke på "Request"-knappen i nedre venstre hjørne. I dette skjemaet kan det rettes manuelt eller kopieres.


Be om konsoll

For raskt å vise resultatet av en spørring i Enterprise-modus, eller feilsøke komplekse spørringer, bruk . Den inneholder teksten til forespørselen, setter parametrene og viser resultatet.

Du kan laste ned spørringskonsollen på ITS-disken, eller via .