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

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

U ovom članku želimo s vama razgovarati o svemu 1C funkcije upitnog jezika, i konstrukcije upitnog jezika. 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. nedvojbeno sve strukture i funkcije 1C upitnog jezika učiniti proces prikupljanja podataka fleksibilnim i multifunkcionalnim. Ove funkcije i konstrukcije primjenjuju se na polja upita, a neke se također primjenjuju na uvjete.

1C funkcije jezika upita

Jer jasan opis 1C funkcije upitnog jezika mnogo rjeđi od opisa struktura, odlučili smo početi promatrati funkcije. Sada pogledajmo svaki zasebno, opisujući njegovu svrhu, sintaksu i primjer korištenja, dakle:

1. Funkcija DATUM VRIJEME- ova funkcija stvara konstantno polje s tipom "Datum".

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

Primjer upotrebe:

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

Sintaksa: DAFFERENCEDATE(<Дата1>, <Дата2>, <Тип>)

Primjer upotrebe:

Query.Text = "SELECT | DIFFERENCEDATE(DATUMTIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Qty.Days";

3. Funkcija VRIJEDNOST- postavlja konstantno polje s unaprijed definiranim zapisom iz baze podataka; također možete dobiti praznu vezu bilo koje vrste.

Sintaksa: VALUE(<Имя>)

Primjer upotrebe:

Request.Text = "SELECT //predefinirani element | VALUE(Directory.Currencies.Dollar) AS Dollar, //prazna veza | VALUE(Document.Receipt of Goods and Services.EmptyLink) AS Receipt, //prijenosna vrijednost | VALUE(Transfer . Pravna osoba. Fizička osoba) KAO Fizička osoba, //predefinirani račun | VRIJEDNOST(Kontni plan. Samoodržavajući. Materijali) KAO Račun_10" ;

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

Sintaksa: IZBOR KADA<Выражение>ZATIM<Выражение>INAČE<Выражение>KRAJ

Primjer upotrebe:

Request.Text = //ako je iznos veći od 7500, tada bi trebao postojati popust od 300 rubalja, //pa ako je uvjet pokrenut tada funkcija //vraća Sum - 300 //inače će zahtjev vratiti samo Sum "SELECT | SELECT | WHEN TCReceipts.Amount > 7500 | THEN TCreceipts.Amount - 300 | ELSE TCreceipts.Amount | END AS AmountWithDiscount |FROM | Document.Receipts of GoodsServices.Goods AS TCreips";

5. EXPRESS funkcija- omogućuje vam izražavanje konstantnog polja s određenim tipom.

Sintaksa: EXPRESS(Naziv polja AS Naziv tipa)

Primjer upotrebe:

Query.Text = "SELECT VARIOUS | Sales.Registrar.Number, | SELECT | WHEN Sales.Registrar LINK Document.Consumable | THEN EXPRESS(Sales.Registrar AS Document.Consumable) | ELSE SELECT | WHEN Sales.Registrar LINK Document.Implementation | THEN EXPRESS(Sales.Registrar AS Document.Implementation) | END | ... | END AS Number | FROM | RegisterAccumulations.Purchases AS Purchases";

Postoji li druga opcija za korištenje funkcije EXPRESS u poljima mješovitih tipova, gdje se pojavljuju? Najjednostavniji primjer je "Matičar" za bilo koji registar. Pa zašto bismo možda morali kvalificirati vrstu u registru? Razmotrimo situaciju kada iz matičara odaberemo polje "Broj", iz koje tablice će se odabrati broj? Točan odgovor od svih! Stoga, da bi naš upit radio brzo, trebali bismo navesti eksplicitni tip pomoću funkcije EXPRESS

Primjer upotrebe:

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS Comment, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenclature AS Nomenclature";

6. ISNULL funkcija(alternativni način pisanja 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 NULL tip nekom vrijednošću, jer usporedba s tipom NULL uvijek vraća FALSE čak i ako usporedite NULL s NULL. Najčešće se NULL vrijednosti formiraju kao rezultat spajanja tablica (sve vrste spajanja osim internih).

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

7. REPREZENTACIJA funkcija- omogućuje vam da dobijete prikaz polja zahtjeva.

Sintaksa: IZVOĐENJE(<НаименованиеПоля>)

Primjer upotrebe:

Query.Text = "SELECT | REPRESENTATION(FreeRemainingRemains.Nomenclature) AS Nomenclature, | REPRESENTATION(FreeRemainingRemaining.Warehouse) AS Warehouse, | FreeRemainingRemaining.InStockRemaining |FROM |Registar akumulacije.FreeRemaining.Remaining AS FreeRemainingRemain ing";

Konstrukcije u upitnom jeziku 1C

Razgovarali smo s vama gore 1C funkcije upitnog jezika, sada je vrijeme za razmatranje konstrukcije u 1C upitnom jeziku, nisu manje važni i korisni, počnimo.

1. Izgradnja 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 Primitak, //onda će upit vratiti "Primitak robe", inače "Prodaja robe" "SELECT | SELECT | WHEN Remainings.Registrar LINK Document.Recipt of Goods and Usluge | THEN ""Potvrda"" | ELSE ""Potrošnja"" | END AS Vrsta kretanja | OD | Registar akumulacije. Preostali proizvodi u skladištima KAO Ostaci" ;

2. Dizajn IZMEĐU- ovaj operator provjerava je li vrijednost unutar navedenog raspona.

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

Primjer upotrebe:

Request.Text = //dobijte cijelu nomenklaturu čiji je kod u rasponu od 1 do 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code BETWEEN 1 AND 100" ;

3. Konstrukcija B i B HIJERARHIJA- provjeriti nalazi li se vrijednost u prenesenoj listi (nizovi, tablice vrijednosti i sl. mogu se prenijeti kao lista). Operator IN HIERARCHY omogućuje pregled hijerarhije (primjer korištenja Kontnog plana).

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

Primjer upotrebe:

Request.Text = //odaberite sve podračune računa "SELECT | Samoodrživi. Povežite AS Račun | FROM | Kontni plan. Samoodrživi AS Samoodrživi | GDJE | Samoodrživi. Veza U HIJERARHIJI VRIJEDNOST (Tabela Računi. Samoodrživi. Roba)";

4. Dizajn SLIČAN- Ova nam funkcija omogućuje usporedbu niza s uzorkom niza.

Sintaksa: KAO "<ТекстШаблона>"

Opcije uzorka reda:

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

Jedan proizvoljan znak.

[...] - bilo koji pojedinačni znak ili niz znakova navedenih unutar uglatih zagrada. Nabrajanje može specificirati raspone, na primjer a-z, što znači proizvoljni znak uključen u raspon, uključujući krajeve raspona.

[^...] - bilo koji pojedinačni znak ili niz znakova navedenih unutar uglatih zagrada osim onih navedenih nakon znaka negacije.

Primjer upotrebe:

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

5. Dizajn DOZVOLJEN- ovaj operator omogućuje odabir samo onih zapisa iz baze podataka za koje pozivatelj ima dopuštenje za čitanje. Ta su prava konfigurirana na razini zapisa (RLS).

Sintaksa: ALLOWED se piše iza ključne riječi SELECT

Primjer upotrebe:

Request.Text = "ODABIR DOZVOLJENO | Protustrane. Veza | IZ | Imenik. Protustrane KAO Protustrane";

6. Dizajn VARIOUS- omogućuje odabir zapisa u kojima nema dvostrukih zapisa.

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

Primjer upotrebe:

Request.Text = //odabire zapise na koje čitatelj ima prava "SELECT VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

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

Primjer upotrebe:

Request.Text = //odabire različite zapise na koje čitatelj ima prava "SELECT ALLOWED VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties";

7. Dizajn PRVI- odabire broj zapisa navedenih u parametru iz rezultata upita.

Sintaksa: FIRST<число>

Primjer upotrebe:

Request.Text = //odaberite prva 4 CCD broja iz direktorija "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers";

8. Dizajn ZA PROMJENE- omogućuje vam zaključavanje tablice, radi samo u transakcijama (relevantno samo za automatska zaključavanja).

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

Primjer upotrebe:

Query.Text = "SELECT | Besplatni preostali ostaci. Nomenklatura, | Besplatni preostali ostaci. Skladište, | Besplatni preostali ostaci. Na zalihama preostali | OD | Registar akumulacija. Besplatni ostaci. Ostaci KAO besplatni preostali ostaci | ZA PROMJENU | Registar akumulacija . Besplatni ostaci. Ostaci";

9. Dizajn ORDER BY- organizira podatke po određenom polju. Ako je polje poveznica, tada prilikom postavljanja zastavice AUTO NARUDŽBA Razvrstavanje će se dogoditi prema prikazu veze; ako je zastavica isključena, tada se veze poredaju prema seniornosti adrese veze u memoriji.

Sintaksa: SORTIRAJ PO<НаименованиеПоля>AUTO NARUDŽBA

Primjer upotrebe:

Query.Text = "SELECT | Besplatni Preostali Preostali. Nomenklatura KAO Nomenklatura, | Besplatni Preostali Preostali. Skladište KAO Skladište, | Besplatni Preostali Preostali. Na skladištu Preostali | OD | Registrirajte akumulacije. Besplatni Preostali. Preostali KAO Besplatni Preostali Preostali | | NARUČI PO | Nomenklatura | AUTOMATSKI OPORAVAK NARUDŽBE";

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

Sintaksa: GRUPIRAJ PO<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Primjer upotrebe:

Query.Text = "SELECT | ProductsInWarehouses.Nomenclature AS Nomenclature, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.InStock) AS STOCK |FROM | RegisterAccumulations.ProductsInWarehouses AS ProductsInWarehouses | |GROUP BY | ProductsInWarehouses.Nomenclature, | ProductsIn Warehouse s.Skladište" ;

11. Dizajn HAVING- omogućuje vam primjenu agregatne funkcije na uvjet odabira podataka, slično konstrukciji WHERE.

Sintaksa: IMAJUĆI<агрегатная функция с условием>

Primjer upotrebe:

Query.Text = //odabire grupirane zapise gdje je polje InStock veće od 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInStocks AS ItemsInStocks | | GRUPIRAJ PO | ProizvodiUSkladištima.Nomenklatura, |ProizvodiUSkladištima.Skladište | |DOSTUPNO | IZNOS(ProizvodiUSkladištima.Na zalihama) > 3" ;

12. Izgradnja INDEX BY- koristi se za indeksiranje polja upita. Upit s indeksiranjem traje duže da se izvrši, ali ubrzava pretraživanje 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ćuje vam postavljanje uvjeta na bilo koje polje odabira. Rezultat će uključivati ​​samo zapise koji zadovoljavaju uvjet.

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

Primjer upotrebe:

Query.Text = //odabrani su svi zapisi s CompensationRemaining<>0 i //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |Place DataTz |FROM | Register akumulacije.CompensationRP.Remains AS Comp ensationRPOstat ki |WHERE |CompensationRPORemaining.CompensationRemaining<>0 | I CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. REZULTATI dizajna... OPĆENITO- koristi se za izračun ukupnih zbrojeva; dizajn specificira polja po kojima će se ukupni zbrojevi izračunavati i agregatne funkcije primijenjene na polja ukupnih zbrojeva. Kada koristite ukupne vrijednosti za svako polje nakon konstrukcije TOTAL, podaci se grupiraju. Postoji izborna konstrukcija GENERAL; njezina upotreba također omogućuje dodatno grupiranje. U nastavku ćete vidjeti primjer rezultata zahtjeva.

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

Primjer upotrebe:

Request.Text = "SELECT | Izračuni. Ugovor druge ugovorne strane. Vrsta ugovora KAO Vrsta ugovora, | Izračuni. Ugovor druge ugovorne strane KAO Ugovor, | Izračuni. Druga ugovorna strana, | Izračuni. Iznos salda uzajamne namire KAO salda | OD | Registar akumulacija. Uzajamni Nagodba S drugim ugovornim stranama. Stanja KAO Izračuni | UKUPNO | IZNOS (Stanje) | Softver | OPĆENITO, | Vrsta ugovora";

Na slici su prikazane grupe koje su nastale tijekom izvršenja zahtjeva, gornja se odnosi na odjeljak GENERAL, a druga na polje Counterparty AgreementAgreement Type.

1C imenici 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, Zaposlenici, Osnovna sredstva itd. Podaci u imenicima se u pravilu ne mijenjaju često. Imenici se kasnije koriste u gotovo svim računovodstvenim objektima kao računovodstveni dio ili referentni podaci.

U nastavku ćemo pogledati postavljanje i dizajn imenika iz konfiguratora koristeći imenik "Nomenklatura" kao primjer.

Osnovna kartica

Kartica “Osnovno” navodi naziv, sinonim, prikaz objekta i opis namjene.

Kartica "Hijerarhija imenika".

Ovdje se uspostavlja hijerarhija imenika.

Hijerarhija u 1C 8.3 ima dvije vrste - “ grupe i elementi"I" elementi". Razlikuje se po tome što u prvom slučaju roditelj (mapa) može biti samo mapa (grupa), a u drugom slučaju roditelj može biti i element.

“Postavi grupe na vrh” - zastavica je odgovorna za prikaz grupa u obliku popisa.

Također u postavkama možete ograničiti broj grupa u hijerarhiji imenika pomoću odgovarajuće postavke.

Kartica vlasnici

Imenik može biti podređen drugom imeniku. Sa stajališ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”, “Druge strane - Ugovori izvođača”.

Vlasnik imenika također mogu biti sljedeći objekti metapodataka: , .

Kartica podataka

Besplatno nabavite 267 video lekcija o 1C:

Najvažnija kartica sa stanovišta programera. Sadrži pojedinosti imenika.

Imenik ima skup standardnih detalja koje ne uređuje programer 1C 8.2; njihov popis možete vidjeti klikom na gumb "Standardni detalji":

Zadržat ću se na svakom detaljnije:

  • Ova grupa— atribut s Booleovim tipom, koji pokazuje radi li se o grupi ili elementu. Dostupno samo u hijerarhijskom imeniku. Bilješka, vrijednost ovog atributa ne može se promijeniti u načinu rada 1C: Enterprise.
  • Kodirati— rekviziti, upišite broj ili niz (obično niz). Broj koji sustav automatski dodjeljuje. Obično se izračunava kao (prethodni kod + 1). Preporučujem korištenje vrste niza jer sortiranje numeričkih vrijednosti ne radi kako se očekuje. Može se koristiti kao prezentacija imenika na popisu iu poljima za unos. Obično se koristi za traženje elementa prilikom unosa niza. Ako trebate ukloniti polje Šifra, unesite nulu u duljinu retka.
  • Ime— obvezni detalji, vrsta niza. Maksimalna duljina retka je 150 znakova. Može se koristiti kao prezentacija imenika na popisu iu poljima za unos. Obično se koristi za traženje elementa prilikom unosa niza. Ako trebate ukloniti polje Naziv, unesite nulu u duljinu retka.
  • Roditelj— atribut tipa DirectoryLink.<ИмяТекущегоСправочника>. Dostupno samo u hijerarhijskom imeniku. Pokazuje na nadređenog roditelja u hijerarhiji. Ako je Element ili Grupa u korijenu direktorija, navedena je vrijednost Imenik.<ИмяТекущегоСправочника>.EmptyLink.
  • Vlasnik— poveznica na element vlasnika trenutnog elementa imenika (grupe). Dostupno samo u podređenom imeniku 1C.
  • Brisanje zastavice— rekviziti tipa Boolean. Odgovoran za prikaz "oznake brisanja" u sustavu. Element označen za brisanje smatra se neupotrebljivim, ali na njemu mogu ostati stari dokumenti.
  • Veza— polje string tipa. Ovaj atribut pohranjuje jedinstveni identifikator objekta - GUID. Ono što vidimo u sustavu u vizualnom prikazu zvanom "link" samo je prikaz objekta. Ne može se promijeniti.
  • Unaprijed definirano— Boolean tip, prikazuje je li element unaprijed definiran, više o tome kasnije. Ne može se promijeniti.

Kartica "Podaci" također označava prikaz direktorija u sustavu; prije verzije 8.2.16, prikaz je mogao biti samo kod ili naziv. U novijim verzijama platforme (počevši od 8.3), pogled se može opisati neovisno u modulu upravitelja pomoću rukovatelja "ViewReceivingProcessing".

Tablica numeriranja

Ovdje možete odrediti postavke imenika vezane uz numeriranje. Preporuča se korištenje automatskog numeriranja. Kontrola jedinstvenosti je oznaka koja pomaže, ako je potrebno, da kod bude jedinstven. Ako s postavljenom zastavicom pokušate napisati element imenika s nejedinstvenim kodom, u 1C ćete dobiti poruku "Kod imenika je postao nejedinstven."

Serija šifri - određuje način numeriranja imenika, možete unijeti numeraciju imenika po vlasniku. Na primjer, druga ugovorna strana "Rogovi i kopita" imat će svoje numeriranje ugovora - "1, 2, 3", itd.

Kartica Obrasci

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

Ova stranica ima važnu značajku imenika - ““. Ovo je vrlo zgodna funkcija 1C 8, koja vam omogućuje da prilikom popunjavanja podataka u polje za unos ne idete u imenik, već da upišete njegovo ime, šifru itd. i odaberite željeni element iz padajuće liste. Ovako izgleda:

Ostalo Tab

Na kartici možete brzo pristupiti glavnim modulima imenika - objektnom modulu i upraviteljskom modulu.

Također možete definirati popis unaprijed definiranih elemenata imenika na stranici. Ovo su stavke koje se ne mogu izbrisati u načinu rada Enterprise. Predefiniranim elementima može se pristupiti izravno u konfiguratoru po nazivu, na primjer: Imenici.Nomenklatura.Usluga.

Ova kartica također određuje način blokiranja - automatski ili kontrolirani. Korištenje pretraživanja cijelog teksta, kao i referentnih informacija o imeniku, dostupnih u načinu rada 1C: Enterprise.

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 koristi se za promjenu podataka.

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

Primjer zahtjeva:

BIRAJTE
Ime banke,
Banke.CorrAccount
IZ
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.

Upitni jezik najjednostavniji je i najučinkovitiji način dobivanja informacija. Kao što se može vidjeti iz gornjeg primjera, u upitnom jeziku morate koristiti nazive metapodataka (ovo je popis objekata sustava koji čine konfiguraciju, tj. imenici, dokumenti, registri itd.).

Opis konstrukcija upitnog jezika

Struktura upita

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

SELECT * FROM Imenici.Nomenklatura

Pri čemu “*” označava odabir svih polja tablice, a Imenici.Nomenklatura – naziv tablice u bazi podataka.

Pogledajmo složeniji i općenitiji primjer:

BIRAJTE
<ИмяПоля1>KAKO<ПредставлениеПоля1>,
Iznos(<ИмяПоля2>) KAKO<ПредставлениеПоля2>
IZ
<ИмяТаблицы1>KAKO<ПредставлениеТаблицы1>
<ТипСоединения>SPOJ<ИмяТаблицы2>KAKO<ПредставлениеТаблицы2>
PO<УсловиеСоединениеТаблиц>

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

GRUPIRAJ PO
<ИмяПоля1>

SORTIRAJ PO
<ИмяПоля1>

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

U ovom upitu odabiremo podatke polja “FieldName1” i “FieldName1” iz tablica “TableName1” i “TableName”, dodjeljujemo sinonime poljima pomoću operatora “HOW” i povezujemo ih pomoću određenog uvjeta “TableConnectionCondition” ”.

Od primljenih podataka odabiremo samo podatke koji zadovoljavaju uvjet iz “WHERE” “Uvjet odabira podataka”. Zatim grupiramo zahtjev po polju “Field Name1”, dok zbrajamo “Field Name2”. Stvaramo ukupne vrijednosti za polje “Naziv polja1” i konačno polje “Naziv polja2”.

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

Generalni nacrti

Pogledajmo općenite strukture jezika upita 1C 8.2.

PRVIn

Pomoću ovog operatora možete dobiti n broj prvih zapisa. Redoslijed zapisa određen je redoslijedom u upitu.

ODABERITE PRVIH 100
Ime banke,
Banke.Kod AS BIC
IZ
Imenik.Banke KAKO Banke
SORTIRAJ PO
Banke.Ime

Zahtjev će primiti prvih 100 unosa direktorija "Banke", poredanih po abecedi.

DOZVOLJENO

Ovaj dizajn je relevantan za rad s mehanizmom. Bit mehanizma je ograničiti čitanje (i druge radnje) korisnicima za određene zapise u tablici baze podataka, a ne tablici kao cjelini.

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

ODABERITE DOZVOLJENO
Repozitorij dodatnih informacija. Link
IZ
Imenik.Repozitorij dodatnih informacija

RAZNO

Korištenje "DIFFERENT" spriječit će duplikate redaka da uđu u rezultat 1C upita. Dupliciranje znači da se sva polja zahtjeva podudaraju.

ODABERITE PRVIH 100
Ime banke,
Banke.Kod AS BIC
IZ
Imenik.Banke KAKO Banke

EmptyTable

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

Primjer iz 1C 8 pomoći:

SELECT Link.Number, EMPTY TABLE.(Br., Artikal, Količina) AS Composition
IZ Dokumenta.Troškovnica
SVE SPOJITI
SELECT Link.Number, Contents.(LineNumber, Product, Quantity)
FROM Dokument.Dokument.Račun.Dokument.Račun.Sastav.*

NIJE NULL

Vrlo korisna značajka koja vam omogućuje da izbjegnete mnoge pogreške. YesNULL() omogućuje zamjenu NULL vrijednosti sa željenom. Vrlo često se koristi u provjeri prisutnosti vrijednosti u spojenim tablicama, na primjer:

BIRAJTE
Veza za ref. nomenklaturu,
IsNULL(Preostala stavka.Preostala količina,0) AS Preostala količina
IZ


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

ISNULL(Datum.fakture, Datum.izdavanja fakture)

HOW je operator koji nam omogućuje da tablici ili polju dodijelimo naziv (sinonim). Gore smo vidjeli primjer korištenja.

Ove su konstrukcije vrlo slične - omogućuju vam da dobijete prikaz niza željene vrijednosti. Jedina je razlika u tome što REPRESENTATION pretvara sve vrijednosti u vrstu niza, dok REPRESENTATIONREF pretvara samo referentne vrijednosti. REFERENTNI PRIKAZ preporučuje se koristiti u upitima sustava za komponiranje podataka za optimizaciju, osim ako se, naravno, polje referentnih podataka ne planira koristiti u odabirima.

BIRAJTE
View(Link), //string, npr. “Avansno izvješće br. 123 od 10.10.2015.
View(DeletionMark) AS DeleteMarkText, //niz, “Da” ili “Ne”
ViewReferences(DeletionMark) AS DeleteMarkBoolean //boolean, True ili False
IZ
Document.Advance Report

IZRAZITI

Express vam omogućuje pretvaranje vrijednosti polja u željenu vrstu podataka. Možete pretvoriti vrijednost ili u primitivni tip ili u referentni tip.

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

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

Za primitivne tipove ova se funkcija često koristi za ograničavanje broja znakova u poljima neograničene duljine (s takvim se poljima ne može usporediti). Da biste izbjegli pogrešku " Nevažeći parametri u operaciji usporedbe. Ne možete uspoređivati ​​polja
neograničene duljine i polja nekompatibilnih tipova
", trebate izraziti takva polja na sljedeći način:

EXPRESS(Komentar KAO redak(150))

DATUM RAZLIKE

Besplatno nabavite 267 video lekcija o 1C:

Primjer korištenja IS NULL u 1C zahtjevu:

ODABRATI OD
Ref
LIJEVA VEZA RegistarAkumulacije.ProizvodiUSkladištima.Preostalo KAO Preostalo proizvoda
Software NomenclatureRef.Link = Prodana robaKomitetiOstaci.Nomenklatura
WHERE NOT Preostali proizvodi. QuantityRemaining JE NULL

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

Unaprijed definirane vrijednosti

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

Primjer upotrebe:

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

WHERE Druge strane. Vrsta podataka za kontakt = Vrijednost (nabrajanje. Vrste podataka za kontakt. Telefon)

WHERE Stanja računa. Računovodstveni račun = vrijednost (Kontni plan. Dobit. Dobit Gubitak)

Veze

Postoje 4 vrste veza: LIJEVO, PRAVO, KOMPLETAN, INTERNI.

LIJEVI i DESNI SPOJ

Spojevi se koriste za povezivanje dviju tablica na temelju određenog uvjeta. Značajka kada LIJEVO PRIDRUŽI je da prvu navedenu tablicu uzmemo u cijelosti i uvjetno vežemo drugu tablicu. Polja druge tablice koja se ne mogu vezati uvjetom popunjavaju se vrijednošću NULL.

Na primjer:

Vratit će cijelu tablicu Counterparties i popuniti polje “Bank” samo na onim mjestima gdje će biti ispunjen uvjet “Counterparties.Name = Banks.Name”. Ako uvjet nije ispunjen, polje Banka bit će postavljeno na NULL.

RIGHT JOIN na 1C jeziku apsolutno sličan LIJEVI priključak, s izuzetkom jedne razlike - u PRAVO PRIKLJUČKA"Glavni" stol je drugi, a ne prvi.

POTPUNA POVEZANOST

POTPUNA POVEZANOST razlikuje se od lijeve i desne po tome što prikazuje sve zapise iz dvije tablice i povezuje samo one koje može povezati po uvjetu.

Na primjer:

IZ

POTPUNA POVEZANOST
Imenik.Banke KAKO Banke

PO

Upitni jezik će u potpunosti vratiti obje tablice samo ako je ispunjen uvjet za spajanje zapisa. Za razliku od spajanja lijevo/desno, moguće je da se NULL pojavi u dva polja.

UNUTARNJI SPOJ

UNUTARNJI SPOJ razlikuje se od punog po tome što prikazuje samo one zapise koji se mogu povezati prema danom uvjetu.

Na primjer:

IZ
Imenik.Druge strane AS Klijenti

UNUTARNJI SPOJ
Imenik.Banke KAKO Banke

PO
Klijenti.Naziv = Banke.Naziv

Ovaj će upit vratiti samo retke u kojima banka i druga ugovorna strana imaju isti naziv.

Udruge

Konstrukti JOIN i JOIN ALL kombiniraju dva rezultata u jedan. Oni. rezultat izvođenja dva bit će "spojen" u jedan, zajednički.

Odnosno, sustav radi potpuno isto kao i obični, samo za privremenu tablicu.

Kako koristiti INDEX BY

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

BIRAJTE
Tečajevi valuta Najnoviji presjek Valuta KAO Valuta,
Tečajna lista Najnoviji presjek.
PUT tečajevi valuta
IZ
Registar informacija. Tečajevi valuta. Zadnji odsječak (&Razdoblje,) AS Tečajovi valuta Zadnji odsječak
INDEX BY
Valuta
;
BIRAJTE
Nomenklatura cijena.Nomenklatura,
CijeneNomenklature.Cijena,
CijeneNomenklature. Valuta,
Tečajevi valuta.Tečaj
IZ
Registar informacija. Cijene nomenklature. Zadnji odsječak (&razdoblje,
Nomenklatura B (&Nomenklatura) I PriceType = &PriceType) KAO Nomenklatura cijena
LIJEVO PRIDRUŽITE tečajeve valuta KAO tečajeve valuta
Nomenklature cijena softvera.Valuta = Tečajevi valuta.Valuta

Grupiranje

Jezik upita 1C omogućuje vam korištenje posebnih agregatnih funkcija prilikom grupiranja rezultata upita. Grupiranje se također može koristiti bez agregatnih funkcija za "eliminiranje" duplikata.

Postoje sljedeće funkcije:

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

Primjer #1:

BIRAJTE
Prodaja roba i usluga Roba Nomenklatura,
SUM(Sales of GoodsServicesGoods.Quantity) AS Količina,
SUM(Prodaja RobaUslugaRoba.Iznos) AS Iznos
IZ

GRUPIRAJ PO
Prodaja roba i usluga Roba Nomenklatura

Zahtjev prima sve retke s robom i sažima ih po količini i iznosima po stavkama.

Primjer br. 2

BIRAJTE
Banke.Kod,
QUANTITY(DIFFERENT Banks.Link) AS Broj duplikata
IZ
Imenik.Banke KAKO Banke
GRUPIRAJ PO
Banke.Šifra

Ovaj će primjer prikazati popis BIC-ova u imeniku "Banke" i pokazati koliko duplikata postoji za svaki od njih.

Rezultati

Rezultati su način dobivanja podataka iz sustava s hijerarhijskom strukturom. Skupne funkcije mogu se koristiti za polja sažetka, baš kao i za grupiranje.

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

BIRAJTE




IZ
Dokument Prodaja robe i usluga Roba KAKO Prodaja robe i usluga Roba
SORTIRAJ PO

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

Rezultat upita bit će sljedeća hijerarhija:

Opći rezultati

Ako trebate dobiti ukupne iznose za sve “ukupne iznose”, koristite operator “GENERAL”.

BIRAJTE
Prodaja roba i usluga Roba Nomenklatura AS Nomenklatura,
Prodaja roba i usluga Roba Link AS Dokument,
Prodaja roba i usluga Roba. Količina KAO Količina,
Prodaja roba i usluga Roba Iznos KAO Iznos
IZ
Dokument Prodaja robe i usluga Roba KAKO Prodaja robe i usluga Roba
SORTIRAJ PO
Prodaja roba i usluga Roba Veza Datum Datum
REZULTATI
SUM(količina),
SUM(Zbroj)
PO
SU ČESTI,
Nomenklatura

Kao rezultat izvršenja zahtjeva dobivamo sljedeći rezultat:

U kojoj je 1 razini grupiranja agregacija svih potrebnih polja.

Aranžiranje

Operator ORDER BY koristi se za sortiranje rezultata upita.

Sortiranje za primitivne tipove (string, broj, boolean) slijedi uobičajena pravila. Za polja referentnog tipa sortiranje se odvija prema internom prikazu veze (jedinstveni identifikator), a ne prema kodu ili prikazu reference.

BIRAJTE

IZ
Imenik.Nomenklatura AS Nomenklatura
SORTIRAJ PO
Ime

Zahtjev će prikazati popis imena u imeniku nomenklature, poredan po abecedi.

Automatska narudžba

Rezultat upita bez sortiranja je kaotično prikazan skup redaka. Programeri 1C platforme ne jamče da će retci biti ispisani u istom nizu prilikom izvršavanja identičnih upita.

Ako trebate prikazati zapise tablice stalnim redoslijedom, morate koristiti konstrukciju Auto-Order.

BIRAJTE
Nomenklatura. Ime KAO Ime
IZ
Imenik.Nomenklatura AS Nomenklatura
AUTO NARUDŽBA

Virtualni stolovi

Virtualne tablice u 1C jedinstvena su značajka 1C upitnog jezika koja se ne nalazi u drugim sličnim sintaksama. Virtualna tablica brz je način dobivanja informacija o profilu iz registara.

Svaki tip registra ima vlastiti skup virtualnih tablica, koje se mogu razlikovati ovisno o postavkama registra.

  • rez prvoga;
  • rez potonjeg.
  • ostaci;
  • revolucije;
  • stanja i prometa.
  • pokreti iz subkonta;
  • revolucije;
  • brzina Dt Kt;
  • ostaci;
  • stanja i prometa
  • subconto.
  • baza;
  • podaci grafikona;
  • stvarni rok valjanosti.

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

BIRAJTE
Proizvodi u skladištima Ostaci i promet Nomenklatura,
ProductsInWarehousesRemainingAndTurnover.QuantityInitialRemaining,
ProizvodiUSkladištimaOstaciIPromet.KoličinaPromet,
Roba U Skladištima Ostaci I Promet. Količina Ulaz,
Roba U Skladištima OstaciIPromet.KoličinaPotrošnja,
ProductsInWarehousesRemainingsAndTurnover.QuantityFinalRemaining
IZ
Registar Akumulacije.RobaUSkladištima.OstaciIPromet KAO RobaUSkladištimaOstaciIPromet

Ovaj vam upit omogućuje brzo dohvaćanje velike količine podataka.

Mogućnosti virtualnog stola

Vrlo važan aspekt rada s virtualnim tablicama je korištenje parametara. Parametri virtualne tablice su specijalizirani parametri za odabir i konfiguraciju.

Za takve se tablice smatra neispravnim koristiti odabir u konstrukciji "WHERE". Osim što upit postaje neoptimalan, moguće je dobiti netočne podatke.

Primjer korištenja ovih parametara:

Registar akumulacija.Roba u skladištima.Stanja i obrti (& Početak razdoblja, & Kraj razdoblja, Mjesec, Kretanja i granice razdoblja, Nomenklatura = & Potrebna nomenklatura)

Algoritam za virtualne tablice

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

Kada koristite virtualnu tablicu, sustav izvodi sljedeće manipulacije:

  1. Dobivamo najbližu izračunatu vrijednost u smislu datuma i mjerenja u tablici ukupnih iznosa.
  2. Iznosu iz tablice kretanja “dodajemo” iznos iz tablice ukupnih iznosa.


Takve jednostavne akcije mogu značajno poboljšati performanse sustava u cjelini.

Korištenje Query Buildera

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

Alat za izradu upita ima prilično jednostavno, intuitivno sučelje. Ipak, pogledajmo detaljnije korištenje konstruktora upita.

Konstruktor teksta upita pokreće se iz kontekstnog izbornika (desna tipka miša) na željenom mjestu u programskom kodu.

Opis konstruktora zahtjeva 1C

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

Tablice i polja

Ova kartica navodi izvor podataka i polja koja se trebaju prikazati u izvješću. Ovdje su u biti opisane konstrukcije SELECT.. FROM.

Izvor može biti fizička tablica baze podataka, virtualna registarska tablica, privremene tablice, ugniježđeni upiti itd.

U kontekstnom izborniku virtualnih tablica možete postaviti parametre virtualne tablice:

Kartica Veze

Kartica služi za opis povezivanja više tablica i stvara konstrukcije s riječju VEZA.

Kartica grupiranja

Na ovoj kartici sustav vam omogućuje grupiranje i sažimanje potrebnih polja rezultata tablice. Opisuje upotrebu konstrukcija GRUPIRAJ PO, ZBROJ, MINIMUM, PROSJEK, MAKSIMAL, KOLIČINA, BROJ RAZLIČITIH.

Kartica uvjeta

Odgovoran za sve što u tekstu zahtjeva dolazi nakon konstrukcije WHERE, odnosno za sve uvjete koji se postavljaju na primljene podatke.

Kartica Napredno

tab Dodatno prepuno svakakvih parametara koji su vrlo važni. Pogledajmo svako od svojstava.

Grupiranje Odabir zapisa:

  • Prvi N– parametar koji upitu vraća samo N zapisa (operator FIRST)
  • Nema duplikata– osigurava jedinstvenost primljenih zapisa (operator DIFFERENT)
  • Dopušteno– omogućuje odabir samo onih zapisa koje sustav dopušta odabir uzimajući u obzir (DOPUŠTENA konstrukcija)

Grupiranje Vrsta zahtjeva određuje koja će vrsta zahtjeva biti: dohvaćanje podataka, stvaranje privremene tablice ili uništavanje privremene tablice.

Ispod je zastava Zaključajte primljene podatke za kasniju izmjenu. Omogućuje vam da omogućite mogućnost postavljanja zaključavanja podataka, čime se osigurava sigurnost podataka od trenutka čitanja do promjene (relevantno samo za način automatskog zaključavanja, dizajn ZA PROMJENU).

Kartica Spojevi/pseudonimi

Na ovoj kartici dizajnera upita možete postaviti mogućnost spajanja različitih tablica i aliasa (konstrukcija HOW). Tablice su naznačene na lijevoj strani. Ako postavite zastavice nasuprot tablici, koristit će se UNITE konstrukcija, u protivnom - UNITE ALL (razlike između dvije metode). Na desnoj strani prikazana je korespondencija polja u različitim tablicama; ako korespondencija nije navedena, upit će vratiti NULL.

Kartica narudžbe

Ovo određuje redoslijed kojim su vrijednosti poredane (ORDER BY) - silazno (DESC) ili uzlazno (ASC).

Tu je i jedna zanimljiva zastava - Automatska narudžba(u upitu - AUTO NARUDŽBA). Prema zadanim postavkama, 1C sustav prikazuje podatke u "kaotičnom" redoslijedu. Ako postavite ovu zastavicu, sustav će sortirati podatke prema internim podacima.

Kartica Skupina upita

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

Gumb "Upit" u dizajneru upita

U donjem lijevom kutu dizajnera zahtjeva nalazi se gumb Zahtjev, s kojim u svakom trenutku možete pogledati tekst zahtjeva:

U ovom prozoru možete prilagoditi zahtjev i izvršiti ga.


Korištenje Query Console

Query Console je jednostavan i praktičan način za otklanjanje pogrešaka u složenim upitima i brzo dobivanje informacija. U ovom ću članku pokušati opisati kako koristiti Query Console i pružiti poveznicu za preuzimanje Query Consolea.

Pogledajmo pobliže ovaj alat.

Preuzmite 1C konzolu za upite

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

Pokušao sam spojiti ova dva pogleda u jednoj obradi - željena forma se otvara u željenom načinu rada (u upravljanom načinu rada konzola radi samo u debelom načinu rada).

Opis 1C konzole za upite

Počnimo gledati konzolu upita s opisom glavne ploče za obradu:

U zaglavlju konzole upita možete vidjeti vrijeme izvršenja zadnjeg upita s točnošću do milisekunde, što vam omogućuje usporedbu različitih dizajna u smislu izvedbe.

Prva grupa gumba u naredbenoj traci odgovorna je za spremanje trenutnih upita u vanjsku datoteku. Ovo je vrlo zgodno; uvijek se možete vratiti na pisanje složenog zahtjeva. Ili, na primjer, pohranite popis tipičnih primjera određenih dizajna.

S lijeve strane u polju “Zahtjev” možete kreirati nove zahtjeve i spremiti ih u strukturu stabla. Druga grupa gumba je odgovorna za upravljanje popisom zahtjeva. Pomoću njega možete stvoriti, kopirati, izbrisati, premjestiti zahtjev.

  • Izvršitizahtjev– jednostavna izvedba i rezultati
  • Izvrši paket– omogućuje pregled svih posrednih upita u skupini upita
  • Pregled privremenih tablica– omogućuje vam da vidite rezultate koje privremeni upiti vraćaju na tablici

Parametri zahtjeva:

Omogućuje vam da postavite trenutne parametre za zahtjev.

U prozoru parametara upita zanimljivo je sljedeće:

  • Dugme Dobiti od zahtjeva automatski pronalazi sve parametre u zahtjevu radi praktičnosti programera.
  • Zastava Zajednički parametri za sve zahtjeve– kada je instaliran, njegova obrada ne briše parametre prilikom prelaska sa zahtjeva na zahtjev na općem popisu zahtjeva.

Postavite parametar s popisom vrijednosti Vrlo je jednostavno, samo kada birate vrijednost parametra, kliknite na gumb za brisanje vrijednosti (križić), sustav će od vas zatražiti da odaberete vrstu podataka, gdje trebate odabrati "Popis vrijednosti":

Također na gornjoj ploči nalazi se gumb za pozivanje postavki konzole upita:

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

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

Dizajner upita 1C 8 poziva se iz kontekstnog izbornika (desna tipka miša) kada kliknete na polje za unos:

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

Zahtjev = Novi zahtjev;
Request.Text = ”
|ODABIR
| Valute.Link
|OD
| Imenik.Valute KAO Valute”;
RequestResult = Request.Execute();

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



Također, konzola za upite, osim liste, može prikazati podatke u obliku stabla – za upite koji sadrže totale.

Optimizacija upita

Jedna od najvažnijih točaka u povećanju produktivnosti 1C poduzeća 8.3 je optimizacijazahtjevi. Ova je točka također vrlo važna kada polaganje certifikacije. U nastavku ćemo govoriti o tipičnim razlozima za neoptimalne performanse upita i metodama optimizacije.

Odabiri u virtualnoj tablici pomoću konstrukcije WHERE

Potrebno je primijeniti filtere na detalje virtualne tablice samo kroz VT parametre. Ni pod kojim okolnostima ne biste trebali koristiti konstrukciju WHERE za odabir u virtualnoj tablici; to je ozbiljna pogreška s gledišta optimizacije. U slučaju odabira pomoću WHERE, sustav će zapravo primiti SVE zapise i tek onda odabrati one potrebne.

PRAVO:

BIRAJTE

IZ
Registar akumulacija. Međusobni obračuni sa sudionicima organizacija. Stanja (
,
Organizacija = &Organizacija
I Pojedinac = &Individualno) KAKO Međusobna obračuna sa sudionicima organizacija Stanja

POGREŠNO:

BIRAJTE
Međusobna poravnanja sa sudionicima organizacija Stanja Iznos Stanje
IZ
Registar akumulacija Međusobni obračuni sa sudionicima organizacija Stanja (,) KAKO Međusobni obračuni sa sudionicima organizacija Stanja
GDJE
Međusobna obračuna sa sudionicima Organizacija Stanja Organizacija = & Organizacija
I Međusobna poravnanja sa sudionicima organizacija Stanja. Pojedinac = & Pojedinac

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

Prilikom primanja podataka složenog tipa u upitu preko točke, sustav povezuje lijevim spojem točno onoliko tablica koliko je tipova moguće u polju složenog tipa.

Na primjer, krajnje je nepoželjno da optimizacija pristupa polju zapisa registra – matičar. Upisnik ima složeni tip podataka, među kojima su sve moguće vrste dokumenata koji mogu upisivati ​​podatke u registar.

POGREŠNO:

BIRAJTE
Record Set.Recorder.Date,
RecordSet.Quantity
IZ
RegisterAccumulations.ProductsOrganizations AS SetRecords

To jest, zapravo, takav upit neće pristupiti jednoj tablici, već 22 tablice baze podataka (ovaj registar ima 21 vrstu registratora).

PRAVO:

BIRAJTE
IZBOR
WHEN ProductsOrg.Registrar LINK Document.Sales of Products and Services
THEN EXPRESS(ProductsOrganization.Registrar AS Document.Sales of GoodsServices).Datum
WHEN GoodsOrg.Registrar LINK Document.Receipt of GoodsServices
THEN EXPRESS(GoodsOrg.Registrar AS Document.Recip of GoodsServices).Datum
ZAVRŠI KAO DATUM,
ProductsOrg.Quantity
IZ
RegisterAccumulations.ProductsOrganizations AS ProductsOrganization

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

PRAVO:

BIRAJTE
ProizvodiOrganizacije.Datum,
Proizvodi Organizacije. Količina
IZ
Registar akumulacija Dobra organizacija AS Dobra organizacija

Podupiti u uvjetima spajanja

Za optimizaciju je neprihvatljivo koristiti podupit u uvjetima spajanja; to značajno usporava upit. Preporučljivo je koristiti VT u takvim slučajevima. Za povezivanje trebate koristiti samo metapodatke i VT objekte, nakon što ste ih prethodno indeksirali po poljima veze.

POGREŠNO:

ODABERITE…

LIJEVO PRIDRUŽIVANJE (
SELECT FROM RegisterInformation.Limits
GDJE …
GRUPIRAJ PO...
) OD...

PRAVO:

ODABERITE…
PUT Ograničenja
IZ Informacijskog registra.Ograničenja
GDJE …
GRUPIRAJ PO...
KAZALO PO...;

ODABERITE…
IZ dokumenta.Prodaja roba i usluga
Ograničenja LIJEVOG PRIDRUŽIVANJA
OD …;

Spajanje zapisa s virtualnim tablicama

Postoje situacije kada pri povezivanju virtualnog stola s drugima sustav ne radi optimalno. U ovom slučaju, kako biste optimizirali izvedbu upita, možete pokušati smjestiti virtualnu tablicu u privremenu tablicu, ne zaboravljajući indeksirati spojena polja u upitu privremene tablice. To je zbog činjenice da su VT-ovi često sadržani u nekoliko fizičkih DBMS tablica; kao rezultat toga, podupit se sastavlja za njihov odabir, a problem se ispostavlja sličnim prethodnoj točki.

Korištenje odabira na temelju neindeksiranih polja

Jedna od najčešćih pogrešaka pri pisanju upita je korištenje uvjeta na neindeksiranim poljima, što je u suprotnosti pravila optimizacije upita. DBMS ne može izvršiti upit optimalno ako upit uključuje izbor u poljima koja se ne mogu indeksirati. Ako uzmete privremenu tablicu, također trebate indeksirati polja povezivanja.

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

  1. Indeks sadrži sva polja navedena u uvjetu.
  2. Ta se polja nalaze na samom početku indeksa.
  3. Ovi odabiri su uzastopni, to jest vrijednosti koje nisu uključene u uvjet upita nisu "uglavljene" između njih.

Ako DBMS ne odabere ispravne indekse, skenirat će se cijela tablica - to će imati vrlo negativan utjecaj na performanse i može dovesti do dugotrajnog blokiranja cijelog skupa zapisa.

Korištenje logičkog ILI u uvjetima

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

Vrlo koristan besplatni video tečaj o razvoju i optimizaciji upita, Toplo preporučam 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 student 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ćuje provjeru je li vrijednost uključena? izraz naveden lijevo od njega u raspon naveden desno ( zajedno s granicama raspona, odnosno uključivo).

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 numeričkih raspona. Također dobro funkcionira s datumima:

Logički operator B

Provjera podudarnosti s jednim od navedenih

Operater U omogućuje provjeru odgovara li vrijednost izraz naveden lijevo od njega, s jednom od vrijednosti opisano s desne strane.

Dakle umjesto

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

I rezultat će biti isti:

Ako je, naprotiv, potrebno odabrati svu hranu čija boja ne odgovara niti jednoj vrijednosti s popisa, tada je prikladan sljedeći oblik negacije (pojavila se čestica NE):

Provjera podudara li se vrijednost s jednim od rezultata upita

Pretpostavimo da iz baze podataka trebamo odabrati samo one boje koje su prisutne u opisu hrane. Dakle, odabrani popis ne bi smio sadržavati npr. crnu boju, jer u našoj bazi nema crne hrane. Čitate probnu verziju lekcije, dostupne su cijele lekcije.

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

ODABERITE ime IZ direktorija. Boje WHERE Naziv IN ( SELECT Boja. Naziv IZ Imenika. Hrana )

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

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

Provjera članstva u hijerarhiji za direktorije

Za imenike se također može izvršiti provjera članstva u hijerarhiji.

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

Imajte na umu da se njegovi elementi razlikuju od ostalih direktorija ( Hrana, Boje, Okusi) prisutnost žutih mapa. Ovaj grupe imenika.

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

Za pregled sadržaja grupe dvaput kliknite na nju:

Za prelazak na višu razinu ponovno dvaput kliknite 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 cijele lekcije.

Svaki element (bilo 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 grupe Brazil u hijerarhiji imenika:

Sada napišimo upit koji će zahtijevati odabranu grupu zemalja i sve elemente grada koji su u njoj uključeni.

Imajte na umu da se u tekstu zahtjeva nalazi znak & (&) ispred naziva GroupCountry. Imena sa znakom & sustav automatski prepoznaje kao parametre čija se vrijednost mora postaviti prije izvršenja upita.

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

Odaberite grupu "Rusija" kao svoju vrijednost (gumb Odaberi):

Ako sada kliknemo gumb "Pokreni", rezultat upita bit će sljedeć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:

Dakle 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 za koje treba provjeriti podudaranje također može uključivati ​​rezultat upita. U ovom slučaju, s desne strane operatera U morate navesti opis zahtjeva:

Za operatera U HIJERARHIJI također je dostupna upotreba čestica NE ispred njega.

Riješite test

Započni 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 omogućuje provjeru

Popis je sastavni atribut prikaza informacija u bilo kojoj konfiguraciji stvorenoj na platformi 1C:Enterprise 8.1. Za učinkovit rad s popisima koji sadrže različite podatke, programi na platformi 1C:Enterprise 8.1 implementiraju praktične i moćne mehanizme odabira i sortiranja. O značajkama njihove upotrebe govori V.V. Ribolov, tvrtka "1C".


Riža. 1

Popisi

S kojim se listama korisnici susreću? To mogu biti popisi dokumenata u relevantnim časopisima. Gotovo svaki imenik ispunjen podacima predstavljen je u obliku popisa koji u pravilu ima hijerarhiju (skupine mapa ili podređeni elementi). Često, za odabir elementa, program automatski generira popise ili u skladu s logikom koju su postavili programeri.

U gotovo svim popisima možete koristiti mehanizme odabira (osim ako to programer nije izričito zabranio) i raznoliko sortiranje (slika 1). U programu su ti mehanizmi neraskidivo povezani jedni s drugima. Pogledajmo kako ih pravilno i učinkovito koristiti.

Riža. 1

Mehanizam sortiranja

Zašto nam je potreban mehanizam za sortiranje? Prvo, kao što naziv sugerira, omogućuje sortiranje popisa prema željenom kriteriju.

Drugo, platforma 1C:Enterprise 8.1 aktivno koristi mehanizam brzog pretraživanja. Ovaj mehanizam omogućuje brzo pronalaženje željenog elementa na bilo kojem popisu upisivanjem prvih znakova (slika 2). Ali u dinamičkim popisima (na primjer, popis stavki imenika ili popis dokumenata), brzo pretraživanje funkcionira samo prema detaljima prema kojima je sortiranje dostupno.

Riža. 2

Sve pojedinosti popisa dostupne za sortiranje možete vidjeti otvaranjem prozora "Odabir i sortiranje". Ovaj prozor obično je dostupan na radnoj traci (Slika 3) ili u kontekstnom izborniku popisa koji se otvara desnom tipkom miša (Slika 4). U prozoru “Odabir i sortiranje” potrebno je otići na karticu “Sortiranje” koja prikazuje sve dostupne detalje po kojima je sortiranje moguće.

Riža. 3

Riža. 4

Na slici 3. vidljivo je da je za popis dokumenata „Prodaja roba i usluga“ dostupno sortiranje po dva detalja: „Datum“ i „Broj“. Međutim, informativni sadržaj prozora za sortiranje nije ograničen na ovo. Ovdje možete vidjeti koje sortiranje je trenutno omogućeno (lijeva strana prozora) i popis svih detalja dostupnih za sortiranje (desna strana). Također možete konfigurirati željeno sortiranje i njegov redoslijed. Imajte na umu: trenutni atribut sortiranja bit će označen na popisu posebnim simbolom - strelicom koja pokazuje smjer sortiranja. Tri primjera različitog sortiranja (uključujući kombinirano) i načina prikaza na popisu prikazana su na slici 5.

Riža. 5

Napominjemo da donji primjer ilustrira mogućnost korištenja kombiniranog sortiranja (istodobno po nekoliko detalja). U našem slučaju to je sortiranje po datumu u silaznom redoslijedu (najstariji datumi na dnu) i po brojevima u rastućem (najveći brojevi na dnu).

U svakom popisu možete pojedinačno spremiti željeno sortiranje. Samo potvrdite okvir "Koristi ovu postavku sortiranja pri otvaranju" i kliknite "U redu". Sustav će zapamtiti postavku i sljedeći put kada otvorite ovaj popis, postavit će spremljeno sortiranje.

Popis možete brzo sortirati prema traženom atributu klikom na zaglavlje s nazivom tog atributa.

Na primjer, u našem slučaju možete kliknuti na atribut “Datum” (uključit će se sortiranje datuma uzlaznim redoslijedom, a možete koristiti brzu pretragu po datumu) ili na atribut “Broj” (sortiranje po uključit će se brojevi u rastućem redoslijedu, nakon čega možete brzo pretraživati ​​po broju). Obrnuto razvrstavanje također je jednostavno - samo ponovno kliknite na isti atribut u zaglavlju popisa.

Selekcijski mehanizam

Odabir je moćan mehanizam platforme 1C:Enterprise 8.1 koji vam omogućuje učinkovit rad s popisima, čak i ako sadrže desetke ili stotine tisuća elemenata. Prvo, pogledajmo kako mehanizam odabira radi u općem slučaju.

Gotovo svugdje gdje postoji popis (obično u obliku tablice), možete koristiti mehanizam odabira koji se aktivira ili odgovarajućim gumbom na radnoj traci ili u kontekstnom izborniku popisa (sl. 3 i 4). Ako je moguć odabir za željeni popis, otvorit će se prozor “Odabir i sortiranje”. Prikazat će sve moguće vrste detalja dostupnih za odabir. Popis 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.

Popis mogućih uvjeta za određenu vrstu odabira ovisi o vrsti elemenata koji se u njemu koriste. Na primjer, rasponi će biti dostupni za brojeve i datume, pretraživanje podnizova bit će dostupno za nizove (uvjeti "Sadrži"/"Ne sadrži"), a popunjavanje popisa i analiza hijerarhije bit će dostupni za elemente imenika.

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

Mehanizmi odabira i sortiranja s primjerima

Pokušajmo riješiti nekoliko problema u demo bazi podataka ("Enterprise Accounting", izdanje 1.6). Na primjer, prikažimo dokumente generirane za drugu ugovornu stranu "Simon and Schuster LLC" u dnevniku "Dokumenti kupaca". Odmah napravimo rezervaciju da ćemo opisati pravila i standard logike odabira za platformu 1C:Enterprise 8.1, bez upućivanja na bilo koju specifičnu konfiguraciju i dodatne servisne mogućnosti implementirane u njemu.

Dakle, otvorite dnevnik dokumenata "Dokumenti kupaca". U standardnom stanju, bez omogućenog odabira, svi dokumenti svih kupaca prikazani su 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 provodi na sljedeći način: otvara se prozor za odabir, u elementu „Protustrana strana” iz imenika odaberite drugu ugovornu stranu „Simon and Schuster LLC” (slika 6) i kliknite na „U redu”. Problem je riješen (slika 7).

Riža. 6

Riža. 7

Za brzo korištenje željenog odabira dovoljno je odmah započeti s odabirom željenog kriterija. Nema potrebe označavati okvir pored korištenog odabira. Program će to učiniti sam nakon što se specificira potreban kriterij. Konfigurirane kriterije odabira možete brzo primijeniti pritiskom na kombinaciju tipki Ctrl+Enter*.

Također imajte na umu da će prilikom određivanja vrijednosti u elementima odabira (u našem primjeru, druga ugovorna strana "Simon and Schuster LLC") u većini slučajeva funkcionirati mehanizam brzog odabira, široko korišten u platformi 1C:Enterprise 8.1. U našem primjeru bilo je dovoljno utipkati prve znakove naziva druge ugovorne strane ili njenu šifru izravno u polje vrijednosti odabira, pritisnuti Enter ili Tab i sustav bi automatski "pogodio" element imenika 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 popis predmeta čiji nazivi sadrže riječ "Čajnik". Da biste to učinili, otvorite direktorij "Nomenklatura", pozovite prozor za odabir, u elementu "Naziv" odaberite uvjet usporedbe "Sadrži" i naznačite traženu riječ (slika 8).

Riža. 8

Tip usporedbe “Sadrži” nije odabran slučajno. To je ono što vam omogućuje da pronađete željenu riječ (ili njezin dio) bilo gdje u nazivu nomenklature. Ako ostavite vrstu usporedbe "Jednako", popis će prikazati samo one stavke nomenklature koje su imenovane točno onako kako je napisan upit. Ali u našoj demo bazi podataka nema takvih stavki (odnosno, niti jedan element ne bi bio prikazan).

Budući da u našoj demo bazi podataka stavka ima atribut "Puno ime", prisutna je na popisu dostupnih odabira kao zasebna pozicija. Ali u isto vrijeme, samo "Sadrži"/"Ne sadrži" dostupni su kao uvjeti usporedbe. Razlog je taj što je atribut "Puno ime" u našoj demo bazi podataka niz neograničene duljine.

Ako tražite ne po imenu, već po punom imenu, bolje je poništiti okvir za odabir po imenu. U suprotnom, odabir će se koristiti i po imenu i po punom imenu, što možda neće uvijek biti potrebno (slika 9).

Riža. 9

Radi praktičnosti rada s elementima imenika pri korištenju odabira, bolje je privremeno isključiti prikaz hijerarhije (slika 10).

Riža. 10

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

Otvorite dnevnik "Dokumenti kupaca" iu elementu za izbor "Vrsta dokumenta" označite dokument "Prodaja roba i usluga". Sam program pruža mogućnost odabira određene vrste dokumenta među onima koji se nalaze u ovom dnevniku. Za to postoji i osobni gumb na radnoj ploči (Sl. 11).

Riža. jedanaest

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

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

Postoji nekoliko načina za provedbu zadatka. Pogledajmo najučinkovitiji. Otvorite dnevnik "Dokumenti kupaca" i u izbornom elementu "Vrsta dokumenta" označite dokument "Izdani račun". Nakon toga, u elementu odabira „Druga ugovorna strana” označavamo vrstu usporedbe „U grupi”. Odaberite vrstu vrijednosti "Druge ugovorne strane" i otvorite obrazac za odabir druge ugovorne strane. U njoj odaberite grupu “Kupci” (slika 12).

Riža. 12

Ova vrsta usporedbe podrazumijeva da će uvjet zadovoljiti svi elementi direktorija koji su u navedenoj grupi. Štoviše, čak i ako postoje podgrupe unutar navedene grupe, svi elementi koji su tamo ugniježđeni također će zadovoljiti ovaj kriterij.

Zakomplicirajmo sada zadatak: pogledajmo samo dokumente "Račun" u dnevniku dokumenata "Dokumenti kupaca", ali u isto vrijeme trebamo pogledati dokumente i za kupce i za dobavljače. Rješavamo ga slično kao i prethodni, s izuzetkom jednog nametnutog kriterija odabira.

Ljudskim jezikom, zadatak je formuliran na sljedeći način: "prikažite sve potrebne dokumente za sve izvođače koji se nalaze u grupama imenika Kupci, Dobavljači, Dobavljači za prodaju." To je jednostavno implementirati - u uvjetu odabira "Druga strana" odaberite "U grupi s popisa" (Slika 13). Nakon toga postaje dostupan mehanizam za popunjavanje popisa u koji možete dodati potrebne grupe (ili elemente) imenika. Štoviše, popis 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 automatski implementira program. Uz pomoć odabira, puno je lakše i brže popuniti popis potrebnim komponentama. Nakon što je popis dovršen, kliknite "OK" i aktivirajte konfigurirane kriterije odabira. Problem je riješen.

Riža. 13

Razlika između uvjeta odabira “U grupi s popisa” i uvjeta “Na popisu” je u tome što će u prvom slučaju uvjet biti zadovoljen za sve elemente imenika koji su eksplicitno navedeni u popisu ili se nalaze unutar grupe navedene na popisu. Drugi slučaj jednostavno govori programu da provjeri popis prilikom odabira. Odnosno, ako tamo navedete grupu, tada će sama grupa biti uključena u odabir (kao neovisni element imenika), a elementi koji su u njoj uključeni neće zadovoljiti kriterij odabira. Bilo je moguće riješiti problem "direktno" - odaberite uvjet "Na popisu" i pomoću odabira dodajte sve elemente sadržane u potrebnim grupama.

Uvjeti odabira "Nije na popisu" i "Nije u grupi s popisa" omogućuju vam da navedete potrebne skupove podataka koji ne bi trebali biti uključeni u odabir. To jest, problem se može riješiti na suprotan način - navedite "Nije u grupi s popisa" i tamo dodajte sve grupe imenika, osim tri potrebne (Kupci, Dobavljači, Dobavljači za prodaju).

I na kraju, u dokumentu „Prodaja roba i usluga“ pod rednim brojem TDN00002, u tabličnom dijelu prikazat ćemo samo nomenklaturu koja u nazivima sadrži riječ „STINOL“. Ovaj zadatak će nam omogućiti uvid u univerzalnost samog mehanizma selekcije, kao i koliko raznolika može biti njegova upotreba. Zadatak se temelji na stvarnim situacijama kada se, primjerice, u tabelarnom dijelu fakture nalazi nekoliko stotina (ili čak tisuća) redaka i potrebno je brzo analizirati njegov sastav. U našoj demo bazi podataka nalazi se dokument “Prodaja roba i usluga” pod brojem TDN00002 koji u tabelarnom dijelu ima nekoliko redaka. Unatoč činjenici da u dokumentu nema gumba za korištenje odabira, pozivanje odabira dostupno je putem kontekstnog izbornika (desna tipka miša).

Zatim namećemo kriterije odabira u kontekstu nomenklature. Odmah se postavlja još jedno pitanje - kako odabrati "STINOL" ako su uvjeti za odabir nomenklature prilično ograničeni (dostupno "Jednako", "Nije jednako", "Na popisu" i "Nije na popisu"). U takvim uvjetima problem se može riješiti. Odaberemo uvjet "Na popisu", otvorimo već poznati prozor za popunjavanje popisa i koristimo odabir stavki (Sl. 14, 1). Na popisu nomenklature može postojati velik broj elemenata, stoga nećemo tražiti potrebne stavke. Upotrijebimo odabir na popisu stavki, navodeći uvjet odabira "Sadrži" za naziv stavke (Sl. 14, 2).

Riža. 14

Nakon toga preostaje samo dodati odabrane stavke na popis za odabir dokumenta i primijeniti kriterije odabira.

Korisne značajke mehanizma odabira

Razmotrimo još nekoliko točaka povezanih na ovaj ili onaj način s odabirima u sustavu 1C:Enterprise 8.1.

U popisima konfiguracijskih objekata koji koriste vezanje datuma (na primjer, popisi dokumenata) i u zapisnicima dokumenata možete koristiti brzo filtriranje prema rasponu datuma. Da biste to učinili, samo kliknite odgovarajući gumb "Period Setting" na radnoj traci (ili ga odaberite u kontekstnom izborniku) (Slika 15). Na taj način možete individualno podesiti kriterij za prikaz elemenata po datumu u svakoj listi.

Riža. 15

Možete brzo postaviti odabir prema vrijednosti u trenutnoj ćeliji popisa klikom na gumb "Odabir prema vrijednosti u trenutnom stupcu" (Slika 16). Kada kliknete na ovaj gumb, odabir će se napraviti na temelju trenutne vrijednosti u stupcu. Ova funkcija radi samo za one stupce čiji se detalji mogu koristiti za postavljanje odabira. Ako popis već koristi bilo koji odabir, novi će mu biti priložen. Štoviše, gumb postaje aktivan za ovaj stupac. Takav odabir možete poništiti na isti način - "stiskanjem" gumba u odgovarajućem stupcu.

Riža. 16

Drugo korisno svojstvo mehanizma odabira je održavanje povijesti odabira (slika 17). Program pamti koji su odabiri postavljeni, tako da se možete brzo vratiti na bilo koji od njih jednostavnim odabirom s padajućeg popisa. Usput, u prozoru "Odabir i sortiranje" obratite pozornost na gumb "Odabir" (slika 6). Klikom na ovaj gumb, bit ćete preusmjereni na sučelje gdje možete spremiti i vratiti postavke odabira kako biste im se kasnije mogli vratiti (Slika 18).

Riža. 17

Riža. 18

I zadnja funkcija je poništavanje svih odabira (slika 19). Klikom na gumb "Onemogući odabir" onemogućuju se svi odabiri instalirani na popisu. Slična se radnja može postići otvaranjem prozora "Odabir i sortiranje" i poništavanjem kvačica svih aktivnih elemenata.

Riža. 19

Program također ima mogućnost brzog pretraživanja po broju dokumenta u popisima dokumenata ili u žurnalima. Ova značajka se poziva pomoću gumba "Traži po broju" (Sl. 20) i omogućuje vam da pronađete željeni dokument fleksibilnim postavljanjem parametara pretraživanja. Pronađeni dokumenti prema zadanim kriterijima prikazuju se na dnu prozora ovog servisa, a možete ići na željeni dokument.

Najbolji članci na temu