Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Greške
  • 1c uvjet zahtjeva u grupi. Primjeri upita za rad s hijerarhijskim direktorijima

1c uvjet zahtjeva u grupi. Primjeri upita za rad s hijerarhijskim direktorijima

U ovom članku želimo o svemu razgovarati s vama Funkcije 1C jezika upita, i konstrukcije jezika upita. Koja je razlika između funkcije i dizajna? Funkcija se poziva sa zagradama i mogućim parametrima u njima, a konstrukcija se piše bez zagrada. Bez sumnje sve strukture i funkcije 1C jezika upita učiniti proces prikupljanja podataka fleksibilnim i multifunkcionalnim. Ove funkcije i konstrukcije primjenjuju se na polja zahtjeva, a neke se primjenjuju i na uvjete.

1C funkcije jezika upita

Jer jasan opis Funkcije 1C jezika upita je mnogo rjeđi od opisa struktura, odlučili smo da počnemo gledati funkcije. Sada pogledajmo svaki posebno, opisujući njegovu svrhu, sintaksu i primjer upotrebe, dakle:

1. Funkcija DATUM VRIJEME- ova funkcija kreira konstantno polje tipa "Datum".

sintaksa: DATUM VRIJEME(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Primjer upotrebe:

2. DATUM DIFFERENCE funkcija- vraća razliku između dva datuma u jednoj od dimenzija (godina, mjesec, dan, sat, minuta, sekunda). Mjerenje se prenosi kao parametar.

sintaksa: DATUM RAZLIKA(<Дата1>, <Дата2>, <Тип>)

Primjer upotrebe:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | KAO Količina dana";

3. Funkcija VALUE- postavlja konstantno polje sa unapred definisanim zapisom iz baze podataka; takođe možete dobiti prazan link bilo koje vrste.

Sintaksa: VALUE(<Имя>)

Primjer upotrebe:

Request.Text = "SELECT //predefinirani element | VALUE(Directory.Currencies.Dollar) AS Dollar, //prazna veza | VALUE(Document.Prijem robe i usluga.EmptyLink) AS Potvrda, //transfer vrijednost | VALUE(Transfer . Pravni pojedinac. Pojedinac) AS Pojedinac, //predefinisani račun | VRIJEDNOST(Kontni plan. Samonosivi. Materijali) AS Račun_10" ;

4. SELECT funkcija- pred nama je analog konstrukcije IF, koji se koristi u kodu, samo se ovaj koristi u 1C upitima.

sintaksa: IZBOR KADA<Выражение>ONDA<Выражение>U protivnom<Выражение>KRAJ

Primjer upotrebe:

Request.Text = //ako je iznos veći od 7500, tada bi trebao postojati popust od 300 rubalja, //pa ako se uvjet aktivira onda funkcija //vraća Sum - 300 //u suprotnom zahtjev će vratiti jednostavno Sum "SELECT | SELECT | WHEN TCReceipts.Iznos > 7500 | THEN TCReceipts.Iznos - 300 | ELSE TCReceipts.Iznos | END AS IznosWithDiscount |FROM | Dokument.Prijem robeUsluge.Roba AS TCReceipts";

5. EXPRESS funkcija- omogućava vam da izrazite konstantno polje sa određenim tipom.

sintaksa: EXPRESS(Ime polja AS Ime vrste)

Primjer upotrebe:

Query.Text = "IZABIR RAZNO | Sales.Registrar.Broj, | ODABIR | KADA Sales.Registrar LINK DOcument.Consumable | THEN EXPRESS(Sales.Registrar AS Document.Consumable) | ELSE SELECT | WHEN Sales.Registrar LINK Document.dokument | THEN EXPRESS(Sales.Registrar AS Dokument.Implementacija) | KRAJ | ... | KRAJ AS Broj | FROM | Registar Akumulacije.Kupovine AS Kupovine";

Postoji li druga opcija za korištenje funkcije EXPRESS u poljima mješovitih tipova, gdje se pojavljuju? Najjednostavniji primjer je “Registar” za bilo koji registar. Pa zašto bismo mogli da kvalifikujemo tip u registratoru? Razmotrimo situaciju kada iz registratora odaberemo polje "Broj", iz koje tabele će se odabrati broj? Tačan odgovor svih! Stoga, da bi naš upit brzo funkcionirao, trebali bismo specificirati eksplicitni tip koristeći funkciju EXPRESS

Primjer upotrebe:

Query.Text = "SELECT | EXPRESS(Nomenklatura.Komentar AS Linija(300)) KAO Komentar, | EXPRESS(Nomenklatura.Zbroj AS Broj(15,2)) AS Zbroj |FROM | Imenik.Nomenklatura AS Nomenklatura";

6. ISNULL funkcija(alternativno pravopis ISNULL) - ako je polje tipa NULL, tada se zamjenjuje drugim parametrom funkcije.

sintaksa: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Primjer upotrebe:

Također imajte na umu da je preporučljivo UVIJEK zamijeniti tip NULL nekom vrijednošću, jer poređenje s tipom NULL uvijek vraća FALSE čak i ako usporedite NULL sa NULL. Najčešće se NULL vrijednosti formiraju kao rezultat spajanja tablica (sve vrste spajanja osim internih).

Query.Text = //Odaberi cijelu stavku i njena stanja //ako nema stanja u nekoj stavci, tada će postojati polje //NULL koje će biti zamijenjeno vrijednošću 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Ostatak | FROM | Imenik.Nomenklatura AS Br. | LIJEVA VEZA Registrirajte Akumulacije. GoodsInWarehouses. Remainings AS GoodsInWarehousesRemains | ON (GoodsInWarehousesRemains. (GoodsInWarehousesRemains).

7. REPRESENTATION funkcija- omogućava vam da dobijete prikaz polja zahtjeva.

sintaksa: PERFORMANSE(<НаименованиеПоля>)

Primjer upotrebe:

Query.text = "Odaberite | reprezentaciju (freermaingredremains.nomenklatura) kao nomenklatura, | zastupanje (freermainaringRemaining.warehouse) kao skladište, | freermainaringRemaining.instockemainingRemaining.instockemaining | iz | akumulacijskog registra.Preemering.

Konstrukcije u 1C jeziku upita

Gore smo razgovarali s vama Funkcije 1C jezika upita, sada je vrijeme za razmatranje konstrukcije u 1C jeziku upita, nisu ništa manje važni i korisni, hajde da počnemo.

1. Građevinski LINK- je logički operator za provjeru referentnog tipa. Najčešće se susreće prilikom provjere polja složenog tipa u odnosu na određeni tip. sintaksa: VEZA<Имя таблицы>

Primjer upotrebe:

Request.Text = //ako je tip vrijednosti zapisivača dokument Prijem, //onda će upit vratiti "Prijem robe", u suprotnom "Prodaja robe" "SELECT | SELECT | WHEN Remainings.Registrar LINK Dokument.Prijem robe i Usluge | ONDA ""Prijem"" | OSTALO ""Potrošnja"" | KRAJ KAO Vrsta kretanja | IZ | Registar akumulacije. Preostali proizvodi u skladištima KAO ostaci" ;

2. Design BETWEEN- ovaj operator provjerava da li je vrijednost unutar navedenog raspona.

sintaksa: IZMEĐU<Выражение>I<Выражение>

Primjer upotrebe:

Request.Text = //dobijemo cijelu nomenklaturu čiji je kod u rasponu od 1 do 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code IZMEĐU 1 I 100" ;

3. HIJERARHIJA konstrukcije B i B- provjeriti da li je vrijednost u prenesenoj listi (nizovi, tablice vrijednosti itd. mogu se prenijeti kao lista). Operator IN HIERARCHY vam omogućava da vidite hijerarhiju (primjer korištenja kontnog plana).

sintaksa: IN(<СписокЗначений>), U HIJERARHIJI(<СписокЗначений>)

Primjer upotrebe:

Request.Text = //odaberite sve podračune računa "ODABIR | Samonosivi. Veza KAO račun | FROM | Kontni plan. Samonosivi AS Samonosivi | GDJE | Samonosivi. Veza U HIJERARHIJSKOJ VRIJEDNOSTI (Grafikon Računi. Samonosivi. Roba)";

4. Dizajn SLIČAN- Ova funkcija nam omogućava da uporedimo string sa uzorkom niza.

sintaksa: LIKE "<ТекстШаблона>"

Opcije uzorka redova:

% - niz koji sadrži bilo koji broj proizvoljnih znakova.

Jedan proizvoljan karakter.

[...] - bilo koji pojedinačni znak ili niz znakova naveden u uglastim zagradama. Nabrajanje može specificirati opsege, na primjer a-z, što znači proizvoljan znak uključen u raspon, uključujući krajeve raspona.

[^...] - bilo koji pojedinačni znak ili niz znakova naveden u uglastim zagradama osim onih navedenih iza znaka negacije.

Primjer upotrebe:

Query.Text = //pronađi cijelu nomenklaturu koja sadrži korijen TABUR i počinje //s malim ili velikim slovom t "SELECT | Nomenclature. Link | FROM | Directory. Nomenklatura KAO Nomenklatura | WHERE | Proizvodi. Naziv LIKE "" [Tt ]abur%""" ;

5. Dizajn DOZVOLJEN- ovaj operater vam omogućava da izaberete samo one zapise iz baze podataka za koje pozivalac ima dozvolu čitanja. Ova prava su konfigurisana na nivou zapisa (RLS).

sintaksa: ALOWED se piše iza ključne riječi SELECT

Primjer upotrebe:

Request.Text = "ODABIR DOZVOLJENO | Counterparts. Link | FROM | Directory. Counterparties AS Counterparts";

6. Dizajn VARIOUS- omogućava vam da odaberete zapise u kojima nema dupliranih zapisa.

sintaksa: VARIOUS se piše iza ključne riječi SELECT

Primjer upotrebe:

Request.Text = //odabire zapise na koje čitač ima prava "IZABIR RAZLIČITIH | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

Također, konstrukcija VARIOUS se može koristiti sa operatorom ALLOWED i drugim operatorima.

Primjer upotrebe:

Request.Text = //odabire različite zapise na koje čitalac ima prava "ODABIR DOZVOLJENIH RAZLIČITIH | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties";

7. Dizajn FIRST- bira broj zapisa navedenih u parametru iz rezultata upita.

Sintaksa: FIRST<число>

Primjer upotrebe:

Request.Text = //odaberite prva 4 CCD broja iz direktorijuma "IZABIR PRVI 4 | CCD brojevi. Veza | IZ | Direktorijuma. CCD brojevi KAO CCD brojevi";

8. Dizajn ZA PROMJENU- omogućava zaključavanje tabele, radi samo u transakcijama (relevantno samo za automatska zaključavanja).

sintaksa: ZA PROMJENU<НаименованиеТаблицы>

Primjer upotrebe:

Query.Text = "SELECT | Slobodni ostaci ostataka. Nomenklatura, | besplatni ostaci ostataka. Skladište, | besplatni ostaci ostataka. Ostalo na zalihama | FROM | Registar akumulacija. Slobodni ostaci. Ostaci KAO slobodni ostaci ostataka. Registar akumulacija | Registar akumulacija | . Slobodni ostaci. Ostaci";

9. Dizajn ORDER BY- organizira podatke po određenom polju. Ako je polje veza, onda prilikom postavljanja zastavice AUTO ORDER Sortiranje će se odvijati prema predstavljanju veze; ako je zastavica isključena, onda se veze sortiraju prema senioritetu adrese veze u memoriji.

sintaksa: SORT BY<НаименованиеПоля>AUTO ORDER

Primjer upotrebe:

Query.Text = "SELECT | Besplatni ostaci ostataka. Nomenklatura AS nomenklatura, | besplatni ostaci ostataka. Skladište AS skladište, | besplatni ostaci ostataka. Na zalihi Preostalo | FROM | Registrirajte akumulacije. Slobodni ostaci. Preostali KAO slobodni preostali ORDER Preostaje | | Nomenklatura | AUTO ORDER RECOVERY";

10. Dizajn GROUP BY- koristi se za grupisanje nizova upita prema određenim poljima. Numerička polja moraju se koristiti sa bilo kojom agregatnom funkcijom.

sintaksa: GROUP BY<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Primjer upotrebe:

Query.Text = "SELECT | ProductsInWarehouses.Nomenclature AS Nomenklatura, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.InStock) KAO INSTOCK |FROM | RegisterAccumulations.ProductsInWarehouses AS ProductsInWarehouses |No ProductsInWarehouses.Nomenklature.Grupa proizvoda.Wbyla | arehouse" ;

11. Dizajn HAVING- omogućava vam da primijenite agregatnu funkciju na uvjet odabira podataka, slično konstrukciji WHERE.

sintaksa: HAVING<агрегатная функция с условием>

Primjer upotrebe:

Query.Text = //odabira grupisane zapise u kojima je polje InStock veće od 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) KAO INSTOCK |FROM | RegisterAccumulations.ItemsSInSi | GROUP BY | ProductsInWarehouses.Nomenclature, | ProductsInWarehouses.Warehouse | |DOSTUPNO | IZNOS(ProductsInWarehouses.InStock) > 3" ;

12. Građevinski INDEX BY- koristi se za indeksiranje polja upita. Upit sa indeksiranjem traje duže da se završi, ali ubrzava pretragu kroz indeksirana polja. Može se koristiti samo u virtualnim tablicama.

sintaksa: INDEX BY<Поле1, ... , ПолеN>

Primjer upotrebe:

Query.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

13. Dizajn WHERE- omogućava vam da nametnete uslov na bilo koja polja za odabir. Rezultat će uključivati ​​samo zapise koji zadovoljavaju uvjet.

sintaksa: GDJE<Условие1 ОператорЛогСоединения УсловиеN>

Primjer upotrebe:

Query.Text = //svi zapisi sa CompensationRemaining su odabrani<>0 i //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |FROM.Registar kompenzacije Compens.Place. ationRPOstat ki |WHERE |CompensationRPORemaining.CompensationRemaining<>0 | I CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. REZULTATI dizajna... OPŠTE- koristi se za izračunavanje ukupnih iznosa; dizajn specificira polja po kojima će se zbroji izračunavati i agregatne funkcije se primjenjuju na ukupna polja. Kada se koriste zbrojevi za svako polje nakon konstrukcije TOTAL, podaci se grupišu. Postoji opcioni GENERAL konstrukt; njegova upotreba takođe obezbeđuje dodatno grupisanje. U nastavku ćete vidjeti primjer rezultata zahtjeva.

sintaksa: REZULTATI<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>BY<ОБЩИЕ> <Поле1, ... , ПолеN>

Primjer upotrebe:

Request.Text = "IZABIR | Izračuni. Ugovor sa drugom stranom. Vrsta ugovora AS Vrsta ugovora, | Izračuni. Ugovor sa drugom stranom AS Ugovor, | Izračuni. Druga strana, | Izračuni. Iznos međusobne namirnice kao Stanje | IZ. Registar akumulacija. Poravnanje SA drugim ugovornim stranama. Stanja KAO kalkulacije | UKUPNO | IZNOS (Stanje) |Softver | OPĆE, | Vrsta ugovora";

Na slici su prikazane grupe koje su formirane tokom izvršenja zahteva, gornja se odnosi na OPŠTI deo, a druga na polje Vrsta ugovora sa drugom stranom.

1C direktoriji su specijalizirani objekt stabla metapodataka koji služi za pohranu statičkih referentnih informacija. Na primjer, u tipičnim konfiguracijama možete vidjeti sljedeće prikaze: , Nomenklatura, Zaposleni, Osnovna sredstva, itd. Informacije u imenicima se po pravilu ne mijenjaju često. Imenici se kasnije koriste u gotovo svim računovodstvenim objektima kao računovodstveni odjeljak ili referentna informacija.

U nastavku ćemo pogledati postavljanje i dizajn direktorija iz konfiguratora koristeći direktorij “Nomenclature” kao primjer.

Basic Tab

Kartica „Osnovno“ navodi naziv, sinonim, prikaz objekta i opis svrhe.

Kartica “Hijerarhija imenika”.

Ovdje je uspostavljena hijerarhija direktorija.

Hijerarhija u 1C 8.3 je dva tipa - “ grupe i elementi" i " elementi". Razlikuje se po tome što u prvom slučaju samo folder (grupa) može biti roditelj (folder), au drugom slučaju element može biti i roditelj.

“Postavite grupe na vrh” - zastavica je odgovorna za prikaz grupa u obliku liste.

Također u postavkama možete ograničiti broj grupa u hijerarhiji direktorija koristeći odgovarajuću postavku.

Vlasnici Tab

Direktorij može biti podređen drugom direktoriju. Sa stanovišta konfiguracije 1C 8.3, to znači da atribut "Vlasnik" postaje obavezan za podređeni element. Primjer takve veze između imenika u standardnim konfiguracijama "Nomenklatura - mjerne jedinice", "Suradne strane - Ugovori ugovarača".

Vlasnik direktorija također može biti sljedeći objekti metapodataka: , .

Data Tab

Nabavite 267 video lekcija na 1C besplatno:

Najvažnija kartica sa stanovišta programera. Sadrži detalje direktorija.

Direktorij ima skup standardnih detalja koje ne uređuje 1C 8.2 programer; njihova lista se može vidjeti klikom na dugme "Standardni detalji":

Zadržat ću se na svakom detaljnije:

  • Ova grupa— atribut s Booleovim tipom, koji pokazuje da li je grupa ili element. Dostupno samo u hijerarhijskom direktoriju. Bilješka, vrijednost ovog atributa ne može se promijeniti u 1C: Enterprise modu.
  • Kod— rekviziti, broj tipa ili string (obično niz). Broj koji sistem automatski dodjeljuje. Obično se izračunava kao (prethodni kod + 1). Preporučujem korištenje tipa stringa, jer sortiranje numeričkih vrijednosti ne funkcionira kako se očekivalo. Može se koristiti kao prezentacija imenika na listi i u poljima za unos. Obično se koristi za traženje elementa prilikom unosa niza. Ako trebate ukloniti polje koda, unesite nulu u dužinu reda.
  • Ime— obavezni detalji, vrsta stringa. Maksimalna dužina reda je 150 znakova. Može se koristiti kao prezentacija imenika na listi i u poljima za unos. Obično se koristi za traženje elementa prilikom unosa niza. Ako trebate ukloniti polje Ime, unesite nulu u dužinu reda.
  • Roditelj— atribut tipa DirectoryLink.<ИмяТекущегоСправочника>. Dostupno samo u hijerarhijskom direktoriju. Pokazuje na nadređenog roditelja u hijerarhiji. Ako je element ili grupa u korijenu direktorija, specificira se vrijednost Direktorij.<ИмяТекущегоСправочника>.EmptyLink.
  • Vlasnik— veza do elementa vlasnika trenutnog elementa (grupe) direktorija. Dostupan samo u podređenom imeniku 1C.
  • FlagDeletion— rekviziti sa tipom Boolean. Odgovoran za prikazivanje “oznake za brisanje” u sistemu. Element označen za brisanje smatra se neupotrebljivim, ali na njemu mogu ostati stari pokreti dokumenta.
  • Veza— polje tipa string. Ovaj atribut pohranjuje jedinstveni identifikator objekta - GUID. Ono što vidimo u sistemu u vizuelnom prikazu zvanom „link” je samo reprezentacija objekta. Ne može se promijeniti.
  • Predefinisano— boolean tip, prikazuje da li je element unapred definisan, više o tome kasnije. Ne može se promijeniti.

Kartica “Podaci” također označava predstavljanje direktorija u sistemu; prije verzije 8.2.16, reprezentacija je mogla biti samo Šifra ili Ime. U novijim verzijama platforme (počevši od 8.3), pogled se može opisati nezavisno u modulu menadžera pomoću rukovaoca “ViewReceivingProcessing”.

Kartica numeracije

Ovdje možete odrediti postavke imenika u pogledu numeriranja. Preporučuje se korištenje autonumeracije. Kontrola jedinstvenosti je oznaka koja pomaže, ako je potrebno, da se kod učini jedinstvenim. Ako, sa postavljenom zastavicom, pokušate napisati element direktorija s nejedinstvenim kodom, u 1C ćete dobiti poruku "Kôd direktorija je postao nejedinstven."

Serija kodova - određuje kako numerirati imenik; možete unijeti numeraciju imenika po vlasniku. Na primjer, ugovorna strana "Rogovi i kopita" imat će vlastitu numeraciju ugovora - "1, 2, 3" itd.

Forms Tab

Ovdje su opisani obrasci za imenik. Ako se konfiguracija pokrene u normalnom i upravljanom načinu rada, tada će postojati dvije kartice s obrascima prema zadanim postavkama: “glavni” i “napredni” - različiti za normalne i upravljane aplikacije.

Ova stranica ima važnu karakteristiku imenika - ““. Ovo je vrlo zgodna funkcija 1C 8, koja vam omogućava da prilikom popunjavanja podataka u polju za unos ne ulazite u direktorij, već upisujete njegovo ime, kod itd. i odaberite željeni element sa padajuće liste. izgleda ovako:

Ostalo Tab

Na kartici možete brzo pristupiti glavnim modulima direktorija - modulu objekata i modulu menadžera.

Također možete definirati listu unaprijed definiranih elemenata direktorija na stranici. Ovo su stavke koje se ne mogu izbrisati u Enterprise modu. Predefiniranim elementima se može pristupiti direktno u konfiguratoru po imenu, na primjer: Directories.Nomenclature.Service.

Ova kartica također određuje način blokiranja - automatski ili kontrolirani. Upotreba pretraživanja punog teksta, kao i referentnih informacija o direktoriju, dostupnih u 1C: Enterprise modu.

Jezik upita u 1C 8 je pojednostavljeni analog dobro poznatog „strukturiranog programskog jezika“ (kako se češće naziva SQL). Ali u 1C se koristi samo za čitanje podataka; objektni model podataka se koristi za promjenu podataka.

Još jedna zanimljiva razlika je ruska sintaksa. Iako u stvari možete koristiti konstrukcije na engleskom jeziku.

Primjer zahtjeva:

ODABIR
Banke.Naziv,
Banks.CorrAccount
OD
Imenik.Banke KAKO Banke

Ovaj zahtjev će nam omogućiti da vidimo informacije o nazivu i korespondentnom računu svih banaka koje postoje u bazi podataka.

Jezik upita je najjednostavniji i najefikasniji način za dobijanje informacija. Kao što se može vidjeti iz gornjeg primjera, u jeziku upita morate koristiti imena metapodataka (ovo je lista sistemskih objekata koji čine konfiguraciju, tj. direktorije, dokumenti, registri, itd.).

Opis konstrukcija jezika upita

Struktura upita

Za dobivanje podataka dovoljno je koristiti konstrukcije “SELECT” i “FROM”. Najjednostavniji zahtjev izgleda ovako:

SELECT * FROM Directories.Nomenclature

Gdje “*” označava odabir svih polja tabele, a Imenici.Nomenklatura – naziv tabele u bazi podataka.

Pogledajmo složeniji i opći primjer:

ODABIR
<ИмяПоля1>KAKO<ПредставлениеПоля1>,
Suma(<ИмяПоля2>) KAKO<ПредставлениеПоля2>
OD
<ИмяТаблицы1>KAKO<ПредставлениеТаблицы1>
<ТипСоединения>COMPOUND<ИмяТаблицы2>KAKO<ПредставлениеТаблицы2>
BY<УсловиеСоединениеТаблиц>

GDJE
<УсловиеОтбораДанных>

GROUP BY
<ИмяПоля1>

SORT BY
<ИмяПоля1>

REZULTATI
<ИмяПоля2>
BY
<ИмяПоля1>

U ovom upitu biramo podatke polja “FieldName1” i “FieldName1” iz tabela “TableName1” i “TableName”, dodjeljujemo sinonime poljima pomoću “HOW” operatora i povezujemo ih koristeći određeni uslov “TableConnectionCondition ”.

Od primljenih podataka biramo samo podatke koji ispunjavaju uslov iz "GDJE" "Uslov odabira podataka". Zatim grupišemo zahtjev po polju "Naziv polja1", dok zbrajamo "Naziv polja2". Kreiramo zbrojeve za polje “Naziv polja1” i posljednje polje “Naziv polja2”.

Posljednji korak je sortiranje zahtjeva pomoću konstrukcije ORDER BY.

Opšti projekti

Pogledajmo opće strukture jezika upita 1C 8.2.

PRVOn

Koristeći ovaj operator, možete dobiti n broj prvih zapisa. Redoslijed zapisa određen je redoslijedom u upitu.

IZABERI PRVI 100
Banke.Naziv,
Banke Šifra AS BIC
OD
Imenik.Banke KAKO Banke
SORT BY
Banks.Name

Zahtjev će primiti prvih 100 unosa u imeniku „Banke“, poredanih po abecednom redu.

DOZVOLJENO

Ovaj dizajn je relevantan za rad s mehanizmom. Suština mehanizma je da ograniči čitanje (i druge radnje) na korisnike za određene zapise u tabeli baze podataka, a ne za tabelu u celini.

Ako korisnik pokuša upotrijebiti upit za čitanje zapisa koji su mu nedostupni, dobit će poruku o grešci. Da biste to izbjegli, trebali biste koristiti konstrukciju “ALOWED”, tj. zahtjev će čitati samo zapise koji su mu dozvoljeni.

ODABIR DOZVOLJENO
Repozitorijum dodatnih informacija Link
OD
Direktorij.Repozitorij dodatnih informacija

VARIOUS

Korištenje “DIFFERENT” će spriječiti duple linije da uđu u rezultat 1C upita. Dupliciranje znači da se sva polja zahtjeva podudaraju.

IZABERI PRVI 100
Banke.Naziv,
Banke Šifra AS BIC
OD
Imenik.Banke KAKO Banke

EmptyTable

Ova konstrukcija se vrlo rijetko koristi za kombiniranje upita. Prilikom spajanja, možda ćete morati navesti praznu ugniježđenu tablicu u jednoj od tabela. Operator “EmptyTable” je baš pravi za ovo.

Primjer iz 1C 8 pomoći:

ODABIR Link.Broj, PRAZNA TABLICA.(Br., Stavka, Količina) KAO Sastav
FROM Document.Expense Invoice
Kombinujte SVE
ODABIR Link.Broj, Sadržaj.(Broj reda, Proizvod, Količina)
IZ Dokument.Račun Dokument.Faktura.Sastav.*

ISNULL

Vrlo korisna funkcija koja vam omogućava da izbjegnete mnoge greške. YesNULL() vam omogućava da NULL vrijednost zamijenite željenom. Vrlo često se koristi za provjeru prisutnosti vrijednosti u spojenim tabelama, na primjer:

ODABIR
Nomenklatura Ref. Link,
IsNULL(Preostala stavka.Preostala količina,0) AS Preostala količina
OD


Može se koristiti na druge načine. Na primjer, ako za svaki red nije poznato u kojoj tablici postoji vrijednost:

ISNULL(Faktura primljena.Datum, Račun izdana.Datum)

HOW je operator koji nam omogućava da dodijelimo ime (sinonim) tablici ili polju. Gore smo vidjeli primjer upotrebe.

Ove konstrukcije su vrlo slične - omogućavaju vam da dobijete string reprezentaciju željene vrijednosti. Jedina razlika je u tome što REPRESENTATION konvertuje bilo koju vrijednost u tip stringa, dok REPRESENTATIONREF pretvara samo referentne vrijednosti. REFERENCE REPRESENTATION se preporučuje da se koristi u sistemskim upitima za sastav podataka radi optimizacije, osim ako se, naravno, ne planira da se polje referentnih podataka koristi u selekcijama.

ODABIR
View(Link), //string, na primjer “Unapredni izvještaj br. 123 od 10.10.2015.
View(DeletionMark) AS DeleteMarkText, //string, “Da” ili “Ne”
ViewReferences(DeletionMark) AS DeleteMarkBoolean //boolean, True or False
OD
Dokument.Napredni izvještaj

EXPRESS

Express vam omogućava da konvertujete vrijednosti polja u željeni tip podataka. Možete pretvoriti vrijednost u primitivni ili referentni tip.

Express za referentni tip se koristi za ograničavanje traženih tipova podataka u poljima složenog tipa, često se koristi za optimizaciju performansi sistema. primjer:

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items).Type of ActivityForTaxAccountingCosts

Za primitivne tipove, ova funkcija se često koristi za ograničavanje broja znakova u poljima neograničene dužine (takva polja se ne mogu porediti). Da izbjegnemo grešku" Nevažeći parametri u operaciji poređenja. Ne možete upoređivati ​​polja
neograničena dužina i polja nekompatibilnih tipova
", morate izraziti takva polja na sljedeći način:

EXPRESS(Komentirajte AS red(150))

DIFFERENCEDATE

Nabavite 267 video lekcija na 1C besplatno:

Primjer korištenja IS NULL u 1C zahtjevu:

BIRAJTE IZ
Ref
LIJEVA POVEZANOST Registar Akumulacije.ProizvodiUSkladištima.Preostalo KAO Preostali proizvod
Nomenklatura softveraRef.Link = Komiteti za prodanu robuRemains.Nomenclature
GDJE NIJE Preostali proizvodi Preostala količina JE NULL

Tip podataka u upitu može se odrediti korištenjem funkcija TYPE() i VALUETYPE() ili korištenjem logičkog REFERENCE operatora. Ove dvije funkcije su slične.

Unaprijed definirane vrijednosti

Osim korištenja proslijeđenih parametara u upitima na 1C jeziku upita, možete koristiti unaprijed definirane vrijednosti ili . Na primjer, transferi, unaprijed definirani imenici, kontni planovi itd. Za to se koristi konstrukcija “Vrijednost()”.

Primjer upotrebe:

WHERE Nomenklatura.Vrsta nomenklature = Vrijednost(Imenik.Vrste nomenklature.Proizvod)

WHERE Counterparties.Vrsta kontakt informacija = Vrijednost(Enumeracija.Vrste kontakt informacija.Telefon)

WHERE Stanje računa.Računovodstveni račun = Vrijednost(Kontni plan.Profit.ProfitGubitak)

Veze

Postoje 4 vrste veza: LIJEVO, PRAVO, KOMPLETAN, UNUTRAŠNJI.

LIJEVI i DESNI PRIKLJUČAK

Spojevi se koriste za povezivanje dvije tabele na osnovu specifičnog uslova. Feature when LEFT JOIN je da uzimamo prvu specificiranu tabelu u celini i uslovno vezujemo drugu tabelu. Polja druge tabele koja ne mogu biti vezana uslovom se popunjavaju vrednošću NULL.

Na primjer:

Vratiće čitavu tabelu Counterparty i popuniti polje “Banka” samo na onim mestima gde će biti ispunjen uslov “Counterparties.Name = Banks.Name”. Ako uslov nije ispunjen, polje Banka će biti postavljeno na NULL.

DESNO PRIDRUŽENJE na 1C jeziku apsolutno slicno LIJEVA veza, sa izuzetkom jedne razlike - u PRAVO PRIKLJUČIVANJA“Glavna” tabela je druga, a ne prva.

FULL CONNECTION

FULL CONNECTION razlikuje se od lijevog i desnog po tome što prikazuje sve zapise iz dvije tabele i povezuje samo one koje može povezati po uslovu.

Na primjer:

OD

FULL CONNECTION
Imenik.Banke KAKO Banke

BY

Jezik upita će u potpunosti vratiti obje tabele samo ako je ispunjen uslov za pridruživanje zapisima. Za razliku od lijevog/desnog spajanja, moguće je da se NULL pojavi u dva polja.

INNER JOIN

INNER JOIN razlikuje se od punog po tome što prikazuje samo one zapise koji se mogu povezati prema datom uslovu.

Na primjer:

OD
Imenik. Counterparties AS Klijenti

INNER JOIN
Imenik.Banke KAKO Banke

BY
Clients.Name = Banks.Name

Ovaj upit će vratiti samo redove u kojima banka i druga strana imaju isto ime.

Udruženja

Konstrukcije JOIN i JOIN ALL kombinuju dva rezultata u jedan. One. rezultat izvođenja dva bit će "spojen" u jedan, zajednički.

Odnosno, sistem radi potpuno isto kao i obični, samo za privremeni sto.

Kako koristiti INDEX BY

Međutim, treba uzeti u obzir jednu tačku. Izgradnja indeksa na privremenoj tabeli također zahtijeva vrijeme da se završi. Stoga je preporučljivo koristiti konstrukciju “ ” samo ako se pouzdano zna da će u privremenoj tabeli biti više od 1-2 zapisa. U suprotnom, efekat može biti suprotan - performanse indeksiranih polja ne kompenzuju vreme potrebno za izgradnju indeksa.

ODABIR
Tečaji Najnoviji presjek Valuta AS Valuta,
Kursevi Najnoviji presjek.
PUT Kurs valuta
OD
Informacija Registar.Kursi valuta.Posljednji dio(&Period,) AS tečajevi valutaPosljednji dio
INDEX BY
Valuta
;
ODABIR
CijeneNomenklatura.Nomenklatura,
CijeneNomenklature.Cijena,
CijeneNomenklature.Valuta,
Currency rates.Rate
OD
Informacije Registar.Nomenklaturne cijene.Posljednji dio(&period,
Nomenklatura B (&Nomenklatura) I Vrsta cijene = &Tip cijene) AS Nomenklatura cijene
LEFT JOIN Currency rates AS Currency rates
Software PricesNomenclatures.Currency = Kursevi valuta.Valuta

Grupisanje

1C jezik upita vam omogućava da koristite posebne agregatne funkcije prilikom grupisanja rezultata upita. Grupiranje se također može koristiti bez agregatnih funkcija za “eliminaciju” duplikata.

Postoje sljedeće funkcije:

Količina, Količina, Broj različitih, Maksimum, Minimum, Prosjek.

Primjer #1:

ODABIR
Prodaja robe i usluga Roba. Nomenklatura,
SUM(Prodaja robeUslugeRobe.Količina) AS količina,
SUM(Prodaja robeUslugeRobe.Iznos) AS iznos
OD

GROUP BY
Prodaja roba i usluga Roba.Nomenklatura

Zahtjev prima sve redove sa robom i sumira ih po količini i iznosima po artiklima.

Primjer br. 2

ODABIR
Banks.Code,
KOLIČINA (RAZLIČITE banke. Veza) KAO broj duplikata
OD
Imenik.Banke KAKO Banke
GROUP BY
Banks.Code

Ovaj primjer će prikazati listu BIC-ova u direktoriju “Banke” i pokazati koliko duplikata postoji za svaki od njih.

Rezultati

Rezultati su način da se dobiju podaci iz sistema sa hijerarhijskom strukturom. Agregatne funkcije se mogu koristiti za polja sažetka, baš kao i za grupisanje.

Jedan od najpopularnijih načina korištenja rezultata u praksi je serijski otpis robe.

ODABIR




OD
Dokument Prodaja robe i usluga Roba KAKO Prodaja robe i usluga Roba
SORT BY

REZULTATI
SUM (količina),
SUM(Zbroj)
BY
Nomenklatura

Rezultat upita bit će sljedeći hijerarhijski:

Opšti rezultati

Ako trebate dobiti zbrojeve za sve "zbirove", koristite operator "GENERAL".

ODABIR
Prodaja robe i usluga Roba Nomenklatura AS Nomenklatura,
Prodaja robe i usluga Roba Link AS Document,
Prodaja robe i usluga Roba Količina AS Količina,
Prodaja roba i usluga Roba Iznos AS Iznos
OD
Dokument Prodaja robe i usluga Roba KAKO Prodaja robe i usluga Roba
SORT BY
Prodaja robe i usluga Roba Link Datum
REZULTATI
SUM (količina),
SUM(Zbroj)
BY
ČESTI SU,
Nomenklatura

Kao rezultat izvršenja zahtjeva, dobijamo sljedeći rezultat:

U kojoj je 1 nivo grupisanja agregacija svih potrebnih polja.

Dogovaranje

Operator ORDER BY se koristi za sortiranje rezultata upita.

Sortiranje primitivnih tipova (string, broj, boolean) slijedi uobičajena pravila. Za polja referentnog tipa, sortiranje se događa internim predstavljanjem veze (jedinstveni identifikator), a ne kodom ili referentnim prikazom.

ODABIR

OD
Imenik.Nomenklatura AS Nomenklatura
SORT BY
Ime

Zahtjev će prikazati listu imena u imeniku nomenklature, poredanu po abecednom redu.

Auto-order

Rezultat upita bez sortiranja je haotično predstavljen skup redova. Programeri 1C platforme ne jamče da će redovi biti ispisani istim redoslijedom prilikom izvršavanja identičnih upita.

Ako trebate prikazati zapise tablice u konstantnom redoslijedu, morate koristiti konstrukciju automatskog reda.

ODABIR
Nomenklatura.Naziv AS Naziv
OD
Imenik.Nomenklatura AS Nomenklatura
AUTO ORDER

Virtuelni stolovi

Virtuelne tabele u 1C jedinstvena su karakteristika 1C jezika upita koja se ne nalazi u drugim sličnim sintaksama. Virtuelna tabela je brz način za dobijanje informacija o profilu iz registara.

Svaki tip registra ima svoj skup virtualnih tabela, koje se mogu razlikovati ovisno o postavkama registra.

  • rez prvog;
  • rez ovog drugog.
  • ostaci;
  • revolucije;
  • stanja i promet.
  • pokreti iz podkonto;
  • revolucije;
  • brzina Dt Kt;
  • ostaci;
  • stanja i promet
  • subconto.
  • baza;
  • podaci grafa;
  • stvarni period važenja.

Za programera rješenja, podaci se preuzimaju iz jedne (virtualne) tablice, ali zapravo 1C platforma uzima iz više tabela, pretvarajući ih u traženi oblik.

ODABIR
Proizvodi u skladištima Ostaci i promet. Nomenklatura,
ProductsInWarehousesRemainingAndTurnover.QuantityInitialRemaining,
Proizvodi u skladištima Ostaci i promet. KoličinaPromet,
RobaUSkladištimaRemainsAndTurnover.Količina Dolazni,
roba u skladištima Ostaci i promet. Količina Potrošnja,
ProizvodiUSkladištimaRemainingsAndTurnover.QuantityFinalRemaining
OD
Registrirajte Akumulacije.RobaUSkladištima.OstaciIPromet AS RobaUSkladištimaOstaciIPromet

Ovaj upit vam omogućava da brzo dohvatite veliku količinu podataka.

Opcije virtuelne tabele

Veoma važan aspekt rada sa virtuelnim tabelama je upotreba parametara. Parametri virtualne tablice su specijalizirani parametri za odabir i konfiguraciju.

Za takve tabele, smatra se netačnim korištenje odabira u konstrukciji “WHERE”. Pored činjenice da upit postaje suboptimalan, moguće je dobiti i netačne podatke.

Primjer korištenja ovih parametara:

Registar akumulacija. Roba u skladištima. Stanja i promet (& početak perioda, i kraj perioda, mjesec, kretanja i granice perioda, nomenklatura = & obavezna nomenklatura)

Algoritam za virtuelne tabele

Na primjer, najčešće korištena virtualna tablica tipa “Ostaci” pohranjuje podatke iz dvije fizičke tablice – stanja i kretanja.

Kada koristite virtuelnu tabelu, sistem izvodi sledeće manipulacije:

  1. Najbližu izračunatu vrijednost u smislu datuma i mjerenja dobijamo u tabeli ukupnih vrijednosti.
  2. Iznos iz tabele kretanja „dodajemo“ iznosu iz tabele ukupnih vrednosti.


Takve jednostavne radnje mogu značajno poboljšati performanse sistema u cjelini.

Korištenje Query Builder-a

Query Builder– alat ugrađen u 1C Enterprise sistem koji uvelike olakšava razvoj upita baze podataka.

Kreator upita ima prilično jednostavan, intuitivan interfejs. Ipak, pogledajmo detaljnije korištenje konstruktora upita.

Konstruktor teksta upita se pokreće iz kontekstnog menija (desno dugme miša) na željenom mestu u programskom kodu.

Opis konstruktora 1C zahtjeva

Pogledajmo detaljnije svaku karticu dizajnera. Izuzetak je kartica Builder, koja je tema za drugu diskusiju.

Tab Tabele i polja

Ova kartica navodi izvor podataka i polja koja treba da budu prikazana u izveštaju. U suštini, ovdje su opisane konstrukcije SELECT.. FROM.

Izvor može biti tabela fizičke baze podataka, tabela virtuelnog registra, privremene tabele, ugniježđeni upiti itd.

U kontekstualnom meniju virtuelnih tabela možete podesiti parametre virtuelne tabele:

Veze kartica

Kartica se koristi za opisivanje veza nekoliko tablica i kreira konstrukcije sa riječju CONNECTION.

Grupiranje kartica

Na ovoj kartici, sistem vam omogućava da grupišete i sumirate potrebna polja rezultata tabele. Opisuje upotrebu konstrukcija GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, KOLIČINA, BROJ RAZLIČITIH.

Kartica Uslovi

Odgovoran za sve što dolazi u tekstu zahtjeva nakon WHERE konstrukcije, odnosno za sve uslove postavljene na primljene podatke.

Napredna kartica

Tab Dodatno prepuna svih vrsta parametara koji su veoma važni. Pogledajmo svako od svojstava.

Grupisanje Odabir zapisa:

  • Prvo N– parametar koji vraća samo N zapisa na upit (operator FIRST)
  • Nema duplikata– osigurava jedinstvenost primljenih zapisa (DRUGAČI operator)
  • Dozvoljeno– omogućava vam da odaberete samo one zapise koje vam sistem dozvoljava da odaberete uzimajući u obzir (DOPUŠTENA konstrukcija)

Grupisanje Vrsta zahtjeva određuje koji će tip zahtjeva biti: dohvaćanje podataka, kreiranje privremene tablice ili uništavanje privremene tablice.

Ispod je zastava Zaključajte primljene podatke za kasniju modifikaciju. Omogućava vam da omogućite mogućnost podešavanja zaključavanja podataka, što osigurava sigurnost podataka od trenutka kada se čitaju do promjene (relevantno samo za režim automatskog zaključavanja, dizajn ZA PROMJENU).

Tab. Joins/Aliases

Na ovoj kartici dizajnera upita možete postaviti mogućnost spajanja različitih tabela i pseudonima (konstrukcija HOW). Tabele su naznačene na lijevoj strani. Ako postavite zastavice nasuprot tablice, koristit će se UNITE konstrukcija, u suprotnom - UNITE ALL (razlike između ova dva metoda). Na desnoj strani je naznačena korespondencija polja u različitim tabelama; ako korespondencija nije navedena, upit će vratiti NULL.

Tab

Ovo određuje redoslijed u kojem su vrijednosti sortirane (ORDER BY) - opadajuće (DESC) ili rastuće (ASC).

Tu je i zanimljiva zastava - Auto-order(u zahtjevu - AUTO NARUČIVANJE). Podrazumevano, 1C sistem prikazuje podatke u "haotičnom" redosledu. Ako postavite ovu zastavicu, sistem će sortirati podatke prema internim podacima.

Kartica Grupa upita

Na kartici dizajner upita možete kreirati nove i koristiti je kao navigaciju. U tekstu zahtjeva, paketi su odvojeni simbolom “;” (zarez).

Dugme “Upit” u dizajneru upita

U donjem lijevom kutu dizajnera zahtjeva nalazi se dugme Zahtjev, pomoću kojeg u svakom trenutku možete pogledati tekst zahtjeva:

U ovom prozoru možete izvršiti prilagođavanja zahtjeva i izvršiti ga.


Korištenje Query Console

Query Console je jednostavan i zgodan način za otklanjanje grešaka u složenim upitima i brzo dobijanje informacija. U ovom članku pokušat ću opisati kako koristiti Query Console i dati vezu za preuzimanje Query Console.

Pogledajmo pobliže ovaj alat.

Preuzmite 1C konzolu za upite

Prije svega, da biste počeli raditi sa konzolom za upite, morate je odnekud preuzeti. Tretmani se obično dijele na dvije vrste - kontrolisane forme i konvencionalne (ili se ponekad nazivaju 8.1 i 8.2/8.3).

Pokušao sam kombinovati ova dva pogleda u jednoj obradi - željena forma se otvara u željenom režimu rada (u upravljanom modu, konzola radi samo u debelom modu).

Opis 1C konzole za upite

Počnimo gledati konzolu za upite s opisom glavnog panela za obradu:

U zaglavlju konzole za upite možete vidjeti vrijeme izvršenja posljednjeg upita s preciznošću od milisekundi, što vam omogućava da uporedite različite dizajne u smislu performansi.

Prva grupa dugmadi na komandnoj traci je odgovorna za spremanje trenutnih upita u eksternu datoteku. Ovo je vrlo zgodno; uvijek se možete vratiti pisanju složenog zahtjeva. Ili, na primjer, pohranite listu tipičnih primjera određenih dizajna.

Na lijevoj strani, u polju “Zahtjev”, možete kreirati nove zahtjeve i pohraniti ih u strukturu stabla. Druga grupa dugmadi je odgovorna za upravljanje listom zahteva. Koristeći ga možete kreirati, kopirati, brisati, premještati zahtjev.

  • Izvršizahtjev– jednostavno izvođenje i rezultati
  • Izvrši paket– omogućava vam da vidite sve posredne upite u grupi upita
  • Pregled privremenih tabela– omogućava vam da vidite rezultate koje privremeni upiti vraćaju na tablicu

Parametri zahtjeva:

Omogućava vam da postavite trenutne parametre za zahtjev.

U prozoru parametara upita zanimljivo je sljedeće:

  • Dugme Uzmite iz zahtjeva automatski pronalazi sve parametre u zahtjevu radi pogodnosti programera.
  • Zastava Zajednički parametri za sve zahtjeve– kada je instaliran, njegova obrada ne briše parametre pri prelasku sa zahtjeva na zahtjev u opštoj listi zahtjeva.

Postavite parametar sa listom vrijednosti Vrlo je jednostavno, samo kada birate vrijednost parametra, kliknite na dugme za brisanje vrijednosti (križ), sistem će od vas tražiti da odaberete tip podataka, gdje trebate odabrati „Lista vrijednosti“:

Takođe na gornjoj ploči nalazi se dugme za pozivanje postavki konzole za upite:

Ovdje možete odrediti parametre za automatsko spremanje upita i parametre za izvršavanje upita.

Tekst zahtjeva se unosi u polje zahtjeva konzole. To se može učiniti jednostavnim upisivanjem testa upita ili pozivanjem posebnog alata - dizajnera upita.

Dizajner upita 1C 8 se poziva iz kontekstnog menija (desno dugme miša) kada kliknete na polje za unos:

Ovaj meni također ima korisne funkcije kao što je brisanje ili dodavanje prijeloma reda (“|”) u zahtjev ili primanje koda zahtjeva u ovom prikladnom obliku:

Zahtjev = Novi zahtjev;
Request.Text = ”
|ODABIR
| Currencies.Link
|OD
| Directory.Currenci AS valute”;
RequestResult = Request.Execute();

Donje polje konzole za upite prikazuje polje rezultata upita, zbog čega je kreirana ova obrada:



Također, konzola za upite, pored liste, može prikazati podatke u obliku stabla - za upite koji sadrže ukupne vrijednosti.

Optimizacija upita

Jedna od najvažnijih tačaka u povećanju produktivnosti 1C preduzeća 8.3 je optimizacijazahtjevi. Ova tačka je takođe veoma važna kada polaganje sertifikata. U nastavku ćemo govoriti o tipičnim razlozima za neoptimalne performanse upita i metode optimizacije.

Selekcije u virtualnoj tablici koristeći WHERE konstrukciju

Potrebno je primijeniti filtere na detalje virtualne tablice samo preko VT parametara. Ni pod kojim okolnostima ne biste trebali koristiti WHERE konstrukciju za odabir u virtuelnoj tabeli; ovo je ozbiljna greška sa tačke gledišta optimizacije. U slučaju odabira pomoću WHERE, zapravo, sistem će primiti SVE zapise i tek onda odabrati one potrebne.

PRAVO:

ODABIR

OD
Registar akumulacija Međusobna poravnanja sa učesnicima organizacija stanja (
,
Organizacija = &Organizacija
I Pojedinac = &Pojedinac) KAKO Međusobna poravnanja sa Učesnicima Organizacija Stanja

POGREŠNO:

ODABIR
Međusobna poravnanja sa Učesnicima Organizacija Stanje Iznos Stanje
OD
Registar akumulacija Međusobna poravnanja sa učesnicima organizacija Stanja (,) KAKO Međusobna poravnanja sa učesnicima organizacija Stanja
GDJE
Međusobna poravnanja sa učesnicima bilansa organizacija Organizacija = & Organizacija
I Međusobna poravnanja sa Učesnicima u bilansima organizacija. Pojedinac = &Pojedinac

Dobivanje vrijednosti polja složenog tipa pomoću tačke

Prilikom primanja podataka složenog tipa u upitu preko tačke, sistem se povezuje sa levim spojem tačno onoliko tabela koliko je tipova moguće u polju složenog tipa.

Na primjer, vrlo je nepoželjno za optimizaciju pristupiti polju registarskog zapisa – registrator. Registar ima složeni tip podataka, među kojima su svi mogući tipovi dokumenata koji mogu upisivati ​​podatke u registar.

POGREŠNO:

ODABIR
Record Set.Recorder.Date,
RecordSet.Quantity
OD
RegisterAcumulations.ProductsOrganizations AS SetRecords

To jest, u stvari, takav upit će pristupiti ne jednoj tabeli, već 22 tabele baze podataka (ovaj registar ima 21 tip registratora).

DESNO:

ODABIR
IZBOR
WHEN ProductsOrg.Registrar LINK Dokument. Prodaja proizvoda i usluga
THEN EXPRESS(Organizacija proizvoda.Registar AS dokument.Prodaja robeUsluge).Datum
KADA GoodsOrg.Registrar LINK Dokument.Prijem robeUsluge
ONDA EKSPRES (GoodsOrg.Registrar AS Dokument. Prijem robeUsluge).Datum
KRAJ KAO DATUM,
ProductsOrg.Quantity
OD
RegisterAcumulations.ProductsOrganizations AS ProductsOrganization

Ili je druga opcija dodavanje takvih informacija detaljima, na primjer, u našem slučaju, dodavanje datuma.

DESNO:

ODABIR
ProizvodiOrganizacije.Datum,
Proizvodi Organizacije. Količina
OD
Registar akumulacija Roba organizacija AS Roba organizacija

Podupiti u stanju spajanja

Za optimizaciju je neprihvatljivo koristiti potupite u uslovima spajanja, što značajno usporava upit. Preporučljivo je koristiti VT u takvim slučajevima. Da biste se povezali, morate koristiti samo metapodatke i VT objekte, nakon što ste ih prethodno indeksirali po poljima veze.

POGREŠNO:

ODABIR…

LIJEVO PRIDRUŽENJE (
SELECT FROM RegisterInformation.Limits
GDJE…
GRUPI PO...
) PO …

DESNO:

ODABIR…
PUT Limits
IZ Informacija Registar.Ograničenja
GDJE…
GRUPI PO...
INDEX BY...;

ODABIR…
IZ dokumenta Prodaja roba i usluga
LEFT JOIN Limits
BY …;

Spajanje zapisa sa virtuelnim tabelama

Postoje situacije kada pri povezivanju virtuelnog stola sa drugima sistem ne radi optimalno. U ovom slučaju, da biste optimizirali performanse upita, možete pokušati smjestiti virtualnu tablicu u privremenu tablicu, ne zaboravljajući indeksirati spojena polja u upitu za privremenu tablicu. To je zbog činjenice da su VT-ovi često sadržani u nekoliko fizičkih DBMS tablica; kao rezultat toga, potupit se kompajlira za njihovo odabiranje, a problem se ispostavi da je sličan prethodnoj točki.

Korištenje odabira zasnovanih na neindeksiranim poljima

Jedna od najčešćih grešaka pri pisanju upita je korištenje uslova na neindeksiranim poljima, što je u suprotnosti pravila optimizacije upita. DBMS ne može optimalno izvršiti upit ako upit uključuje odabir polja koja se ne mogu indeksirati. Ako uzmete privremenu tabelu, također morate indeksirati polja veze.

Za svaki uslov mora postojati odgovarajući indeks. Pogodan indeks je onaj koji zadovoljava sljedeće zahtjeve:

  1. Indeks sadrži sva polja navedena u uslovu.
  2. Ova polja se nalaze na samom početku indeksa.
  3. Ovi odabiri su uzastopni, odnosno vrijednosti koje nisu uključene u uvjet upita nisu „uklesane“ između njih.

Ako DBMS ne odabere ispravne indekse, cijela tabela će biti skenirana - to će imati vrlo negativan utjecaj na performanse i može dovesti do produženog blokiranja cijelog skupa zapisa.

Korišćenje logičkog ILI u uslovima

To je sve, ovaj članak je pokrio osnovne aspekte optimizacije upita koje bi svaki 1C stručnjak trebao znati.

Veoma koristan besplatni video kurs o razvoju i optimizaciji upita, Toplo preporučujem za početnike i više!

Pažnja! Ovo je uvodna verzija lekcije, čiji materijali mogu biti nepotpuni.

Prijavite se na stranicu kao student

Prijavite se kao učenik za pristup školskim materijalima

Jezik upita 1C 8.3 za programere početnike: operatori BETWEEN i IN

Logički operator BETWEEN

Operater IZMEĐU omogućava vam da provjerite je li vrijednost uključena? izraz naveden lijevo od njega u raspon specificiran desno ( zajedno sa granicama raspona, odnosno inkluzivno).

Dakle, umjesto

Ako je, naprotiv, potrebno odabrati svu hranu čiji sadržaj kalorija nije uključen u raspon, tada je prikladan sljedeći oblik negacije (pojavila se čestica NE):

Operater IZMEĐU Može se primijeniti na više od samo numeričkih raspona. Također dobro funkcionira sa datumima:

Logički operator B

Provjera podudaranja s jednim od navedenih

Operater IN omogućava vam da provjerite da li se vrijednost podudara izraz označen lijevo od njega, sa jednom od vrednosti opisano na desnoj strani.

Dakle, umjesto

Možete li napisati nešto sažetije?

A rezultat će biti isti:

Ako je, naprotiv, potrebno odabrati svu hranu čija se boja ne poklapa ni sa jednom vrijednošću s liste, tada je prikladan sljedeći oblik negacije (pojavila se čestica NE):

Provjera da li vrijednost odgovara jednom od rezultata upita

Pretpostavimo da iz baze podataka trebamo odabrati samo one boje koje su prisutne u opisu hrane. Dakle, odabrana lista ne bi trebala sadržavati, na primjer, crnu boju, jer u našoj bazi podataka nema crne hrane. Čitate probnu verziju lekcije, dostupne su pune lekcije.

Jedan od načina da to učinite je korištenje logičkog operatora IN, desno od kojeg će se nalaziti potupit koji bira nazive boja iz svih unosa direktorija Hrana:

SELECT Name FROM Directory. Boje WHERE Ime IN ( SELECT Color. Name FROM Directory. Food )

Na stranu, napomenuću da je iz internog zahtjeva moguće pristupiti poljima eksternog zahtjeva.

Opet, za ovaj oblik operatora IN, upotreba čestica je također dostupna NE ispred njega.

Provjera članstva u hijerarhiji za direktorije

Za direktorije se također može izvršiti provjera pripadnosti hijerarhiji.

Prvo, pogledajmo primjer hijerarhijskog direktorija. Otvorite direktorij "Gradovi" u našoj bazi podataka:

Imajte na umu da se njegovi elementi razlikuju od drugih direktorija ( Hrana, Boje, Okusi) prisustvo žutih fascikli. Ovo grupe imenika.

Grupe se razlikuju od običnih elemenata po tome što mogu uključivati ​​druge grupe i elementi. Baš kao što fascikle sadrže druge fascikle i datoteke.

Za pregled sadržaja grupe, dvaput kliknite na nju:

Da biste se popeli na nivo, ponovo kliknite dvaput na grupu:

Dakle, hijerarhijski imenik može sadržavati i obične elemente (na primjer, Rio de Janeiro, Salvador) i grupe (na primjer, Brazil, Indija). Čitate probnu verziju lekcije, dostupne su pune lekcije.

Svaki element (bilo da je grupa ili običan element) može imati roditelja. Na primjer, roditelj elementa Rio de Janeiro je grupa Brazil:

I to je istina jer je Rio de Janeiro dio brazilske grupe u hijerarhiji imenika:

Sada napišimo upit koji će tražiti odabranu grupu zemalja i sve elemente grada uključene u nju.

Imajte na umu da se u tekstu zahtjeva nalazi ampersand (&) ispred naziva GroupCountry. Imena sa znakom ampersanda sistem automatski prepoznaje kao parametre čija vrijednost mora biti postavljena prije nego što se upit izvrši.

Nakon što zalijepimo ovaj upit u konzolu i kliknemo dugme Pokreni za ažuriranje, moći ćemo postaviti ovaj parametar:

Odaberite grupu "Rusija" kao njenu vrijednost (dugme za odabir):

Ako sada kliknemo na dugme "Pokreni", rezultat upita će biti sledeći:

Rezultat zahtjeva bila je sama grupa (Rusija) i svi elementi koji su dio nje (Perm, Krasnojarsk i Voronjež).

Ako odaberete "Brazil" umjesto Rusije, rezultat će biti ovakav:

Tako rezultat operatora U HIJERARHIJI bit će TRUE ako je vrijednost izraza s lijeve strane referenca na element direktorija i uključena je u skup vrijednosti s desne strane (Brazil) ili hijerarhijski pripada nekoj grupi sadržanoj u ovom skupu (Sao Paulo, Rio de Janeiro, Salvador).

Skup vrijednosti koje treba provjeriti za podudaranje može uključivati ​​i rezultat upita. U ovom slučaju, desno od operatera IN morate navesti opis zahtjeva:

Za operatera U HIJERARHIJI Dostupna je i upotreba čestica NE ispred njega.

Uradite test

Pokreni test

1. Logički operator BETWEEN provjerava vrijednost

2. Logički izraz 1 IZMEĐU 1 I 1

3. Logički izraz 1 NE IZMEĐU 2 I 2

4. Logički operator B provjerava

5. Logički operator B vam omogućava da provjerite

Lista je sastavni atribut prikaza informacija u bilo kojoj konfiguraciji kreiranoj na platformi 1C:Enterprise 8.1. Za efikasan rad sa listama koje sadrže različite podatke, programi na platformi 1C:Enterprise 8.1 implementiraju pogodne i moćne mehanizme odabira i sortiranja. V.V. govori o karakteristikama njihove upotrebe. Ribolov, kompanija "1C".


Rice. 1

Liste

Na koje liste se korisnici susreću? To mogu biti spiskovi dokumenata u relevantnim časopisima. Gotovo svaki direktorij ispunjen podacima predstavljen je u obliku liste, koja, po pravilu, ima hijerarhiju (grupe mapa ili podređeni elementi). Često, za odabir elementa, program generiše liste automatski ili u skladu sa logikom koju su postavili programeri.

U gotovo svim listama možete koristiti mehanizme odabira (osim ako to nije izričito zabranio programer) i različito sortiranje (slika 1). U programu su ovi mehanizmi neraskidivo povezani jedan s drugim. Pogledajmo kako ih pravilno i efikasno koristiti.

Rice. 1

Mehanizam za sortiranje

Zašto nam je potreban mehanizam za sortiranje? Prvo, kao što ime govori, omogućava vam da sortirate listu prema željenom kriterijumu.

Drugo, platforma 1C:Enterprise 8.1 aktivno koristi mehanizam za brzo pretraživanje. Ovaj mehanizam vam omogućava da brzo pronađete željeni element na bilo kojoj listi upisivanjem prvih znakova (slika 2). Ali u dinamičkim listama (na primjer, lista stavki direktorija ili lista dokumenata), brzo pretraživanje funkcionira samo prema detaljima prema kojima je sortiranje dostupno.

Rice. 2

Sve detalje liste dostupne za sortiranje možete vidjeti otvaranjem prozora “Izbor i sortiranje”. Ovaj prozor je obično dostupan na radnoj traci (slika 3) ili u kontekstualnom meniju liste koji se otvara desnim tasterom miša (slika 4). U prozoru “Izbor i sortiranje” potrebno je otići na karticu “Sortiranje” koja prikazuje sve dostupne detalje po kojima je sortiranje moguće.

Rice. 3

Rice. 4

Slika 3 pokazuje da je za listu dokumenata „Prodaja robe i usluga“ dostupno sortiranje po dva detalja: „Datum“ i „Broj“. Međutim, sadržaj informacija prozora za sortiranje nije ograničen na ovo. Ovdje možete vidjeti koje je sortiranje trenutno omogućeno (lijeva strana prozora) i listu svih detalja dostupnih za sortiranje (desna strana). Također možete konfigurirati željeno sortiranje i njegov redoslijed. Napomena: trenutni atribut sortiranja će biti označen na listi posebnim simbolom - strelicom koja pokazuje smjer sortiranja. Na slici 5 prikazana su tri primjera različitog sortiranja (uključujući i kombinovano) i načini njegovog prikazivanja na listi.

Rice. 5

Imajte na umu da donji primjer ilustruje mogućnost korištenja kombiniranog sortiranja (istovremeno po nekoliko detalja). U našem slučaju, ovo je sortiranje po datumu u silaznom redoslijedu (najstariji datumi na dnu) i po broju u rastućem redoslijedu (najveći brojevi na dnu).

U svakoj listi možete pojedinačno sačuvati željeno sortiranje. Samo označite polje "Koristi ovu postavku sortiranja prilikom otvaranja" i kliknite "OK". Sistem će zapamtiti postavku i sledeći put kada otvorite ovu listu, postaviće sačuvano sortiranje.

Listu možete brzo sortirati po traženom atributu klikom na zaglavlje s nazivom ovog atributa.

Na primjer, u našem slučaju možete kliknuti na atribut „Datum“ (uključiće se sortiranje datuma uzlaznim redoslijedom, a možete koristiti brzu pretragu po datumu) ili na atribut „Broj“ (sortiranje po brojevi u rastućem redosledu će biti uključeni, nakon čega možete brzo pretraživati ​​po broju). Invertiranje sortiranja je takođe jednostavno - samo kliknite ponovo na isti atribut u zaglavlju liste.

Mehanizam selekcije

Selekcija je moćan mehanizam platforme 1C:Enterprise 8.1, koji vam omogućava da efikasno radite sa listama, čak i ako sadrže desetine ili stotine hiljada elemenata. Prvo, pogledajmo kako mehanizam selekcije funkcionira u općem slučaju.

Gotovo svuda gdje postoji lista (obično u obliku tabele), možete koristiti mehanizam za odabir, koji se aktivira bilo odgovarajućim gumbom na traci radnji ili u kontekstualnom izborniku liste (Slika 3 i 4). Ako je moguć izbor za željenu listu, otvoriće se prozor “Izbor i sortiranje”. Prikazaće sve moguće vrste detalja dostupnih za odabir. Lista dostupnih elemenata odabira ovisi o tome gdje će se odabir koristiti. Općenito, trebate pronaći jedan ili više potrebnih elemenata za odabir, odrediti vrijednosti i aktivirati konfiguriranu kombinaciju kriterija.

Lista mogućih uslova za određenu vrstu selekcije zavisi od vrste elemenata koji se u njoj koriste. Na primjer, opsezi će biti dostupni za brojeve i datume, pretraživanje podstringa će biti dostupno za nizove (uslovi "Sadrži"/"Ne sadrži"), a popunjavanje liste i analiza hijerarhije biće dostupni za elemente direktorija.

Ako navedete više kriterija odabira u isto vrijeme, na listi će biti prikazane samo one stavke koje ispunjavaju sve navedene kriterije.

Mehanizmi odabira i sortiranja sa primjerima

Pokušajmo riješiti nekoliko problema u demo bazi podataka („Knjigovodstvo preduzeća“, izdanje 1.6). Na primjer, prikažimo dokumente generirane za drugu stranu "Simon and Schuster LLC" u časopisu "Dokumenti kupaca". Odmah rezervirajmo da ćemo opisati pravila i standard logike odabira za platformu 1C:Enterprise 8.1, bez osvrta na bilo kakvu konfiguraciju i dodatne mogućnosti servisa implementirane u njoj.

Dakle, otvorite dnevnik dokumenata „Dokumenti korisnika“. U standardnom stanju, bez uključene selekcije, svi dokumenti svih kupaca su prikazani na ekranu (čak iu demo bazi podataka to zauzima više od jedne stranice).

Moramo brzo pogledati sve dokumente druge ugovorne strane Simon and Schuster LLC. Zadatak se realizuje na sledeći način: otvara se prozor za izbor, u elementu „Counterparty“ izaberite drugu stranu „Simon and Schuster LLC“ iz imenika (slika 6) i kliknite na „OK“. Problem je rešen (slika 7).

Rice. 6

Rice. 7

Za brzo korištenje željenog odabira dovoljno je odmah započeti odabir željenog kriterija. Nema potrebe da označite kućicu pored odabranog odabira. Program će to učiniti sam nakon što se specificiraju potrebni kriteriji. Možete brzo primijeniti konfigurirane kriterije odabira pritiskom na kombinaciju tipki Ctrl+Enter*.

Također imajte na umu da će prilikom navođenja vrijednosti u elementima odabira (u našem primjeru, druga strana "Simon and Schuster LLC") u većini slučajeva funkcionirati mehanizam brzog odabira, koji se široko koristi u platformi 1C:Enterprise 8.1. U našem primjeru, bilo je dovoljno upisati prve znakove imena druge ugovorne strane ili njen kod direktno u polje vrijednosti za odabir, pritisnuti Enter ili Tab i sistem bi automatski „pogodio“ element direktorija koji nam je potreban.

Imajte na umu da brzi odabir značajno ubrzava odabir vrijednosti koje poznajete. Koristite ga kad god je to moguće.

Sada ćemo prikazati listu stavki čiji nazivi sadrže riječ “Čajnik”. Da biste to uradili, otvorite direktorijum „Nomenklatura“, pozovite prozor za izbor, u elementu „Naziv“ izaberite uslov poređenja „Sadrži“ i navedite traženu reč (slika 8).

Rice. 8

Tip poređenja „Sadrži“ nije slučajno odabran. To je ono što vam omogućava da pronađete željenu riječ (ili njen dio) bilo gdje u nazivu nomenklature. Ako ostavite tip poređenja "Jednako", lista će prikazati samo one stavke nomenklature koje su imenovane tačno onako kako je upit napisan. Ali u našoj demo bazi podataka nema takvih stavki (to jest, nijedan element ne bi bio prikazan).

Pošto u našoj demo bazi podataka stavka ima atribut „Puno ime“, ona je prisutna na listi dostupnih izbora kao posebna pozicija. Ali u isto vrijeme, samo „Sadrži“/„Ne sadrži“ su dostupni kao uslovi za poređenje. Razlog je taj što je atribut “Puno ime” u našoj demo bazi podataka niz neograničene dužine.

Ako ne pretražujete po imenu, već po punom imenu, bolje je da poništite izbor u polju za odabir po imenu. U suprotnom, odabir će se koristiti i po imenu i po punom imenu, što možda nije uvijek potrebno (slika 9).

Rice. 9

Radi praktičnosti rada sa elementima direktorija kada se koriste selekcije, bolje je privremeno isključiti prikaz hijerarhije (slika 10).

Rice. 10

Kao treći zadatak, pogledajmo samo dokumente "Prodaja robe i usluga" u dnevniku dokumenata "Dokumenti kupaca". Rješenje ovog problema će pokazati posebnost jedne od vrsta selekcije, dostupne samo u časopisima dokumenata.

Otvorite dnevnik "Dokumenti kupaca" i u elementu za odabir "Vrsta dokumenta" označite dokument "Prodaja robe i usluga". Sam program pruža mogućnost odabira određene vrste dokumenta od onih uključenih u ovaj časopis. Za to postoji i lično dugme na akcijskom panelu (Sl. 11).

Rice. jedanaest

Slično odabiru prema vrsti dokumenta, platforma će automatski ponuditi element odabira „Struktura subordinacije“ ako je konfiguracija konfigurirala odnose između dokumenata.

Pokušajmo u dnevniku dokumenata "Dokumenti kupaca" pogledati samo dokumente "Faktura" za druge ugovorne strane koje se nalaze u grupi "Kupci" imenika. Ovaj zadatak je sličan prvom, sa jedinom razlikom što ne navodimo konkretnu drugu stranu, već analiziramo fakture cijele grupe ugovornih strana koje se nalaze u grupi „Kupci“.

Postoji nekoliko načina za implementaciju zadatka. Pogledajmo najefikasniji. Otvorite dnevnik "Dokumenti kupaca" i u elementu za odabir "Vrsta dokumenta" naznačite dokument "Izdan račun". Nakon toga, u elementu odabira “Counterparty” označavamo vrstu poređenja “U grupi”. Odaberite tip vrijednosti "Counterparties" i otvorite obrazac za odabir druge strane. U njemu izaberite grupu „Kupci“ (slika 12).

Rice. 12

Ovaj tip poređenja podrazumijeva da će uvjet biti zadovoljen od strane svih elemenata direktorija koji se nalaze u navedenoj grupi. Štaviše, čak i ako postoje podgrupe unutar navedene grupe, svi elementi koji su tu ugniježđeni će također zadovoljiti ovaj kriterij.

Sada da zakomplikujemo zadatak: pogledajmo samo dokumente „Faktura“ u dnevniku dokumenata „Dokumenti kupaca“, ali u isto vrijeme moramo pogledati dokumente i za kupce i za dobavljače. Rješavamo ga slično kao i prethodni, s izuzetkom jednog nametnutog kriterija odabira.

Na ljudskom jeziku, zadatak je formuliran na sljedeći način: „prikaži svu potrebnu dokumentaciju za sve izvođače koji se nalaze u grupama imenika Kupci, Dobavljači, Dobavljači za prodaju.“ Ovo je lako implementirati - u uslovu odabira “Counterparty” izaberite “U grupi sa liste” (Sl. 13). Nakon toga postaje dostupan mehanizam za popunjavanje liste u koji možete dodati potrebne grupe (ili elemente) direktorija. Štaviše, lista se može popuniti ručno. Analogno rješavanju prethodnog problema, pronađite željenu grupu i odaberite je, ponavljajući to za svaki novi element liste. Međutim, preporučljivije je koristiti prikladan mehanizam odabira, koji program automatski implementira. Uz pomoć odabira, puno je lakše i brže popuniti listu potrebnim komponentama. Nakon što je lista dovršena, kliknite na “OK” i aktivirajte konfigurirane kriterije odabira. Problem je riješen.

Rice. 13

Razlika između uslova odabira “U grupi sa liste” i uslova “Na listi” je u tome što će u prvom slučaju uslov biti zadovoljen za sve elemente direktorijuma koji su ili eksplicitno navedeni u listi ili se nalaze unutar grupe navedene na listi. Drugi slučaj jednostavno govori programu da provjeri listu prilikom odabira. Odnosno, ako tamo navedete grupu, tada će sama grupa biti uključena u izbor (kao nezavisni element direktorija), a elementi koji su uključeni u nju neće zadovoljiti kriterij odabira. Bilo je moguće riješiti problem "naprijed" - odaberite uvjet "Na listi" i, koristeći odabir, dodajte sve elemente sadržane u potrebnim grupama.

Uslovi odabira “Nije na listi” i “Nije u grupi sa liste” omogućavaju vam da navedete potrebne skupove podataka koji ne bi trebali biti uključeni u odabir. Odnosno, problem bi se mogao riješiti na suprotan način - navedite "Nije u grupi sa liste" i tamo dodajte sve grupe imenika, osim tri potrebne (Kupci, Dobavljači, Dobavljači na prodaju).

I na kraju, u dokumentu „Prodaja roba i usluga“ sa brojem TDN00002, u tabelarnom dijelu ćemo prikazati samo nomenklaturu koja u nazivima sadrži riječ „STINOL“. Ovaj zadatak će nam omogućiti da vidimo univerzalnost samog mehanizma selekcije, kao i koliko raznovrsna može biti njegova upotreba. Zadatak je zasnovan na stvarnim situacijama kada, na primjer, postoji nekoliko stotina (ili čak hiljade) redova u tabličnom dijelu računa i potrebno je brzo analizirati njegov sastav. U našoj demo bazi podataka nalazi se dokument „Prodaja robe i usluga“ sa brojem TDN00002, koji ima nekoliko redova u tabeli. Uprkos činjenici da u dokumentu nema dugmadi za korišćenje selekcija, pozivanje selekcije je dostupno preko kontekstnog menija (desno dugme miša).

Zatim, namećemo kriterijume odabira u kontekstu nomenklature. Odmah se postavlja još jedno pitanje - kako odabrati "STINOL" ako su uslovi za odabir nomenklature prilično ograničeni (dostupno "Jednako", "Nije jednako", "Na listi" i "Nije na listi"). Problem se pod takvim uslovima može rešiti. Odaberemo uslov „Na listi“, otvorimo već poznati prozor za popunjavanje liste i koristimo izbor stavki (sl. 14, 1). Možda postoji veliki broj elemenata u listi nomenklature, tako da nećemo tražiti potrebne stavke. Koristimo selekciju na listi stavki, specificirajući uslov odabira "Sadrži" za naziv stavke (sl. 14, 2).

Rice. 14

Nakon ovoga, ostaje samo da se odabrane stavke dodaju na listu odabira za dokument i primjene kriteriji odabira.

Korisne karakteristike mehanizma selekcije

Razmotrimo još nekoliko tačaka koje se na ovaj ili onaj način odnose na odabire u sistemu 1C:Enterprise 8.1.

U listama konfiguracijskih objekata koji koriste vezivanje datuma (na primjer, liste dokumenata) iu zapisnicima dokumenata, možete koristiti brzo filtriranje prema rasponu datuma. Da biste to uradili, samo kliknite na odgovarajuće dugme „Podešavanje perioda“ na traci sa radnjama (ili ga izaberite u kontekstualnom meniju) (slika 15). Na taj način možete pojedinačno podesiti kriterij za prikaz elemenata po datumu u svakoj listi.

Rice. 15

Možete brzo podesiti odabir po vrijednosti u trenutnoj ćeliji liste klikom na dugme “Izbor po vrijednosti u trenutnoj koloni” (Sl. 16). Kada kliknete na ovo dugme, odabir će se izvršiti na osnovu trenutne vrednosti u koloni. Ova funkcija radi samo za one kolone čiji se detalji mogu koristiti za postavljanje odabira. Ako lista već koristi bilo koju selekciju, nova će joj biti priložena. Štaviše, dugme postaje aktivno za ovu kolonu. Takav odabir možete poništiti na isti način - "pritiskom" dugmeta u odgovarajućoj koloni.

Rice. 16

Još jedno korisno svojstvo mehanizma selekcije je održavanje istorije selekcija (slika 17). Program pamti koji su odabiri postavljeni, tako da se možete brzo vratiti na bilo koji od njih jednostavnim odabirom sa padajuće liste. Usput, u prozoru “Izbor i sortiranje” obratite pažnju na dugme “Izbor” (slika 6). Klikom na ovo dugme, bićete prebačeni na interfejs gde možete da sačuvate i vratite podešavanja izbora kako biste se kasnije vratili na njih (Sl. 18).

Rice. 17

Rice. 18

I posljednja funkcija je poništavanje svih odabira (slika 19). Klikom na dugme "Onemogući odabir" onemogućavate sve odabire instalirane na listi. Slična radnja se može postići otvaranjem prozora “Izbor i sortiranje” i poništavanjem svih aktivnih elemenata.

Rice. 19

Program takođe ima mogućnost brzog pretraživanja po broju dokumenta u listama dokumenata ili u časopisima. Ova funkcija se poziva dugmetom „Traži po broju“ (Sl. 20) i omogućava vam da pronađete željeni dokument fleksibilnim podešavanjem parametara pretrage. Dokumenti pronađeni na osnovu navedenih kriterijuma prikazuju se na dnu prozora ovog servisa, a možete ići na željeni dokument.

Najbolji članci na ovu temu