Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Greške
  • Tipznch u zahtjevu 1s 8.2. Kako dobiti vrstu (vrstu) dokumenta u zahtjevu? TYPE na zahtjev

Tipznch u zahtjevu 1s 8.2. Kako dobiti vrstu (vrstu) dokumenta u zahtjevu? TYPE na zahtjev

1C vam omogućava da značajno pojednostavite knjigovodstvo ili jednostavno upravljate bilo kojom organizacijom, bilo da se radi o maloj radnji ili velikom preduzeću. Program je veliki sistem za upravljanje bazom podataka. Da se ne biste zbunili u svemu ovome, morate biti u stanju izvršiti razne jednostavne radnje i razumjeti suštinu. Zatim ćete razumjeti kako provjeriti vrstu vrijednosti u zahtjevu u 1C, kao i šta su, općenito, i kako ih razlikovati.

Vrste vrijednosti

1C: Preduzeće je uključilo posebnu funkciju u nove verzije (platforma 8.2). Koristeći ga, možete dodati bilo koje posebne parametre bilo kojim nazivima, elementima sistema podataka. Ovo je učinjeno kako bi se olakšalo uređivanje sistema i dodavanje novih elemenata. Ova funkcija se zove samo "Vrsta vrijednosti".

Zapravo, ovo je jedan od osnovnih koncepata koji sadrži većinu programskih jezika. Može se koristiti za klasifikaciju različitih podataka. Na primjer: datumi, brojevi, nizovi, veze. Ovo su samo osnovne klasifikacije. Možda ih ima mnogo više. Recimo, ako unesete informacije o gradovima u svoj sistem, možete koristiti: kopno, zemlju, okrug, itd.

Ispitivanje

Možete provjeriti određeno polje koristeći jezik upita. Da budemo precizniji, njegove funkcije: VRIJEDNOST TYPE. To jest, ako želimo da saznamo kakvu informaciju sadrži ćelija od interesa, moramo koristiti naredbu.

VALUETYPE(Vrijednost) = TYPE(String)

U gornjem primjeru definirali smo, koristeći naredbu, najjednostavniji pogled. Još jedan primjer validacije zahtjeva:

Dokumentacija

Samih tipova ima poprilično, korisnici se mogu snaći i sa početnim i unijeti svoje kako bi poboljšali bazu podataka. Evo nekih od njih.

  • DocumentLink. Koristi se za praktično skladištenje referenci na različite objekte unutar drugih delova sistema.
  • DocumentObject - uređivanje dokumenata.
  • DocumentSelection - sortiranje objekata iz baze podataka.

Osim toga, postoje posebni pojmovi koji karakteriziraju sve podatke:

  • forma;
  • linija;
  • boolean
  • broj;
  • datum;
  • niz;
  • potvrdni okvir;
  • slika.

Ovo je samo dio njih. Svaki objekat može biti samo nešto sa ove liste. Boolean je poseban parametar koji uzima dvije vrijednosti: true ili false. Postoje i posebne oznake koje vam omogućavaju da prilagodite zahtjev: kada, gdje, kako, inače itd. Oni postavljaju algoritam ponašanja programa. 1C se odlikuje činjenicom da se ove riječi ovdje, kao i sve ostalo, mogu unijeti na ruskom.

Važno je shvatiti da će sve ovo početnici i neprofesionalci doživljavati kao kinesko pismo. Da biste razumjeli šta je u pitanju i efikasno koristili 1C, morate znati osnove programiranja. Općenito, bit će prilično lako provjeriti tip u zahtjevu u programu 1C, u poređenju s drugim radnjama.

Pogledajmo sada ostalo.

Funkcije za rad sa stringovima u 1C upitima

Postoji nekoliko funkcija i operatora za rad sa string podacima u 1C upitima.

Prvo, stringovi u upitima se mogu dodati. Za ovo se koristi "+" operator:

Zahtjev. Text="ODABIR
" "Linija: " " + Izvor.Ime
;

Drugo, možete odabrati dio niza. Za to se koristi funkcija SUBSTRING. Funkcija je slična ugrađenom jeziku 1C. Ima tri opcije:

  1. Izvorni niz.
  2. Broj karaktera od kojeg bi odabrani niz trebao početi.
  3. likovi.

Zahtjev. Tekst= "IZABIR
SUBSTRING("
"Linija: " ", 4, 3) AS rezultat"; // Rezultat: oko

Funkcija IS NULL

NULL je poseban tip podataka na platformi 1C:Enterprise. To je ujedno i jedina moguća vrijednost ovog tipa. NULL se može pojaviti u upitima u nekoliko slučajeva: pri spajanju izvora upita, ako odgovarajuća vrijednost nije pronađena u jednoj od tabela; prilikom pristupa detaljima nepostojećeg objekta; ako je na popisu polja upita navedeno NULL (na primjer, kada se kombiniraju rezultati odabira iz nekoliko tabela) itd.

Pošto NULL nije ni null ni prazan string, pa čak ni vrijednost nedefinirano,često je korisno zamijeniti ga nekim korisnijim tipom podataka. To je ono čemu služi funkcija. IS NULL.

Ima dvije opcije:

  1. Vrijednost koju treba provjeriti.
  2. Vrijednost za zamjenu prvog parametra ako je NULL.

Zahtjev. Tekst= "IZABIR
ISNULL(Izvor.Ostatak, 0) KAO Ostatak"
; // Ako je kao rezultat zahtjeva polje ostatak=NULL,
// tada će biti zamijenjen sa 0, i bit će moguće izvoditi matematičke operacije s njim

Funkcije PERFORMANSE I LINKOVI ZA PREZENTACIJU

Ove funkcije su dizajnirane da dobiju nizove reprezentacija različitih vrijednosti. To jest, oni pretvaraju reference, brojeve, logičke vrijednosti, itd. na običan tekst. Razlika između njih je u funkciji PERFORMANSE pretvara sve tipove podataka u tekst (string) i funkciju LINKOVI ZA PREZENTACIJU- samo veze, i vraća preostale vrijednosti koje se ne pretvaraju.

Zahtjev. Tekst= "IZABIR
PRESENT(TRUE) KAO Boolean,
ZASTUPANJE (4) KAO Broj,
PRESENT(Izvor.Referenca) KAO referenca,
REPREZENTACIJA(DATETIME(2016,10,07)) KAO Datum"
;
// Boolean = "Da", Broj = "4", Referenca = "Dokument gotovinski vaučer #... datiran..."
// Datum="10/07/2016 0:00:00"

Zahtjev. Tekst= "IZABIR
REFERENTNA REPREZENTACIJA (TRUE) KAO Boolean,
REFERENTNI ZASTUP (4) AS Broj,
REPRESENTATIONLINK(Source.Link) AS Link,
REFERENTNI REPREZENTACIJA(DATETIME(2016,10,07)) KAO Datum"
;
// Boolean = TRUE, Number = 4, Ref = "Dokument gotovinski vaučer #... datiran..."
// Datum=07.10.2016 0:00:00

Funkcije TYPE I VALUETYPE

Funkcija TYPE vraća tip podataka platforme 1C:Enterprise.

Zahtjev. Tekst= "IZABIR
TIP (broj) ,
TYPE(String),
VRSTA (Dokument. Odlazni gotovinski nalog)"
;

Funkcija VALUETYPE vraća tip vrijednosti koja mu je proslijeđena.

Zahtjev. Tekst= "IZABIR
VALUETYPE(5) KAO broj,
VRSTA ("
"Linija" ") AS string,
TYPE(Source.Reference) AS Referenca
Iz Directory.Source AS Izvor"
;
//Number=Broj, String=String, Directory = DirectoryReference.Source

Ove funkcije su zgodne za korištenje, na primjer, kada trebate saznati da li je polje primljeno u zahtjevu vrijednost nekog tipa. Na primjer, iz registra Kontakt informacija ćemo dobiti kontakt informacije o ugovornim stranama (tamo se pohranjuju kontakti ne samo za druge ugovorne strane, već i za organizacije, pojedince itd.):

Zahtjev. Tekst= "IZABIR

OD

GDJE
VRIJEDNOST TYPE(ContactInformation.Object) = TYPE(Directory.Accounts)"
;

Funkcija ZNAČENJE

Funkcija Značenje omogućava vam korištenje 1C konfiguracijskih objekata direktno u zahtjevu, bez korištenja .

Dopunimo prethodni primjer još jednim uslovom. Potrebno je da nabavite samo telefone drugih strana.

Zahtjev. Tekst= "IZABIR
ContactInformation.View
OD
Registar informacija Kontakt informacije AS Kontakt informacije
GDJE
VRIJEDNOST TYPE(ContactInformation.Object) = TYPE(Catalog.Accounts)
I ContactInformation.Type = VALUE(Enumeration.ContactInformation Types.Phone)"
;

Imajte na umu da se ova funkcija može koristiti samo s unaprijed definiranim vrijednostima, tj. sa vrijednostima kojima se može pristupiti direktno iz konfiguratora. To je funkcija ZNAČENJE ne može se koristiti s elementima pretraživanja kreiranim od strane korisnika, ali može raditi s nabrajanjima, s unaprijed definiranim elementima pretraživanja, s vrijednostima EmptyLink.

Operater VEZA

Operater VEZA je dizajniran za provjeru vrijednosti primljenih zahtjevom za pripadnost određenom referentnom tipu. Isti zadatak se može izvesti pomoću funkcija TYPE I VALUETYPE(koji imaju širi obim i o kojima je gore bilo riječi).

Na primjer, zadatak odabira kontakt podataka ugovornih strana mogao bi se riješiti ovako:

Zahtjev. Tekst= "IZABIR
ContactInformation.View
OD
Registar informacija Kontakt informacije AS Kontakt informacije
GDJE
Kontakt informacije.Object LINK Directory.Counterparties"
;

Operater EXPRESS

Operater EXPRESS koristi se u 1C upitima u dva slučaja:

  • kada trebate promijeniti karakteristike primitivnog tipa;
  • kada je potrebno napraviti polje sa jednim tipom od polja sa kompozitnim tipom podataka.

Primitivni tipovi podataka uključuju: broj, string, datum, boolean. Neki od ovih tipova podataka imaju dodatne karakteristike. Tip Broj ima dužinu i preciznost, tip Linija - dužina ili neograničena.

Operater EXPRESS omogućava vam da promijenite ne tip podataka, već dodatne karakteristike. Na primjer, može napraviti niz ograničene dužine od žice neograničene dužine. Ovo je korisno ako želite grupirati rezultate upita prema takvom polju. Grupisanje po poljima neograničene dužine nije moguće, pa ćemo ga konvertovati u string dužine 200 karaktera.

Zahtjev. Tekst= "IZABIR
KOLIČINA (RAZLIČITI PRIHODI ROBA/USLUGA.REF) KAO REF
OD
Dokument. Prijem robe/usluga AS Prijem robe/usluga
GROUP BY
EXPRESS(Dolazeća roba/usluge. Komentirajte KAO NIZ(200))"
;

U nekim slučajevima, 1C platforma možda neće optimalno obraditi zahtjeve za polja sa složenim tipom podataka. Ovo dovodi do povećanog vremena izvršavanja upita, tako da može biti korisno unaprijed pretvoriti složeni tip u jedan tip.

Zahtjev. Tekst= "IZABIR
EXPRESS(Kretanje robnih prometa.Nalog AS dokument.Narudžba kupca).Datum AS NarudžbaDatum,
Kretanje robnog prometa Nomenklatura
OD
Registar akumulacije Kretanje robe Promet AS Kretanje robe Promet
GDJE
Kretanje robnog prometa. Narudžba LINK Dokument. Nalog klijenta"
;

Operateri IZBOR I IS NULL

Operater IZBOR slično operateru IF u ugrađenom 1C jeziku, ali ima nešto skraćenu funkcionalnost.

Pretpostavimo da želimo da dobijemo kontakt informacije iz registra Kontakt informacija i istovremeno naznačimo u posebnom polju zahteva da li pripadaju drugoj strani ili pojedincu.

Zahtjev. Tekst= "IZABIR
Kontakt informacije. Zastupstvo,
IZBOR
KADA VRSTA VRIJEDNOSTI(Informacija o kontaktu.Objekat) = VRSTA(Katalog.Računi)
ONDA "
druga strana "
ELSE CHOICE
KADA VRIJEDNOST TYPE(Informacija o kontaktu.Objekat) = TYPE(Katalog.Pojedinci)
ONDA "
pojedinac"
DRUGO „Neko drugi "
KRAJ
KRAJ KAO VLASNIK
OD
Registar informacija. Kontakt informacije AS Kontakt informacije"
;

Kao što se može vidjeti iz primjera, u dizajnu IZBOR uvek postoji uslov iza reči KADA; vrijednost koju treba primijeniti ako je uvjet istinit, nakon riječi ONDA i vrijednost koja se primjenjuje ako uvjet nije ispunjen nakon riječi U protivnom. Sva tri konstruktivna elementa IZBOR su obavezne. Izostavite element U protivnom, baš kao što se to radi kada se koristi operator IF u ugrađenom jeziku 1C, to je nemoguće. Takođe operater IZBOR nema analoga dizajnu ELSEIF, ali možete staviti jedan IZBOR u drugom, kao što je urađeno u našem primjeru.

Operater IS NULL koristi se u građevinarstvu IZBOR da uporedite polje zahteva sa NULL tipom.

Zahtjev. Tekst= "IZABIR
IZBOR
KADA JE Vrijednost NULL ONDA 0
ELSE Značenje
KRAJ"
;

Osim toga, operater IS NULL može se koristiti u uvjetima upita, na primjer u rečenici GDJE.

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

Funkcije jezika upita 1s

Pošto je jasan opis funkcije jezika upita 1s je mnogo rjeđi od opisa struktura, odlučili smo da počnemo gledati funkcije. Sada analizirajmo 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 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 = "ODABIR | DATUM RAZLIKA(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Broj dana";

3. Funkcija VALUE- postavlja konstantno polje sa unapred definisanim unosom iz baze podataka, takođe možete dobiti null referencu bilo koje vrste.

Sintaksa: VALUE(<Имя>)

Primjer upotrebe:

Query.Text = "SELECT //predefinirani element | VALUE(Currency.Dollar.Catalog.Dollar) AS Dollar, //prazna referenca | VALUE(Document.IncomingGoodsServices.EmptyReference) AS Potvrda, //transfer vrijednost | VALUE(Transfer.LegalIndividual . Pojedinac) AS Pojedinac, //predefinisani račun | VRIJEDNOST(Kontni plan.Samonosivi.Materijal) AS Račun_10" ;

4. SELECT funkcija- imamo analognu IF konstrukciju koja se koristi u kodu, samo se ova 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, //dakle, ako se uvjet pokrene, tada funkcija //vraća iznos - 300 //u suprotnom, zahtjev će jednostavno vratiti iznos "SELECT | SELECT | WHEN PMIncome.Amount > 7500 | THEN PTReceipt.Amount - 300 | ELSE PTReceipt.Amount | END AS Iznos Discounted |FROM | Document.ReceiptofGoodsServices.Goods ASTRe";

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, | SELECT | WHEN Sales.Registrar REF dokument.Trošak | THEN EXPRESS(Sales.Registrar AS Document.Expense) | ELSE SELECT | WHEN Sales.Registrar REF dokument.Im EXPRESS THEN EXPRESS(Sales.Registrar AS Document.Release) | KRAJ | ... | KRAJ AS Broj | FROM | Registar akumulacije.Kupovine KAO kupovine";

Još uvijek postoji varijanta korištenja funkcije EXPRESS u poljima mješovitih tipova gdje se takvi susreću? Najjednostavniji primjer je "Registar" za bilo koji registar. Zašto bismo onda morali 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, moramo specificirati eksplicitni tip koristeći funkciju EXPRESS

Primjer upotrebe:

Query.Text = "IZABIR | EXPRESS(Nomenklatura.Komentar KAO Niz(300)) KAO Komentar, | EXPRESS(Nomenklatura.Zbroj AS Broj(15,2)) AS Zbroj |FROM | Referentna.Nomenklatura AS Nomenklatura";

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

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

Primjer upotrebe:

Također imajte na umu da je poželjno UVIJEK zamijeniti tip NULL nekom vrijednošću, jer poređenje sa NULL uvijek se procjenjuje na FALSE čak i ako uspoređujete NULL sa NULL. Najčešće se NULL vrijednosti formiraju kao rezultat spajanja tablica (sve vrste spajanja osim unutrašnjih).

Query.Text = //Odaberi cijelu stavku i stanja na njoj //ako nema stanja u nekoj stavci, tada će postojati polje //NULL koje će biti zamijenjeno vrijednošću 0 "SELECT | No.Reference, | ISNULL(GoodsInWarehouseRemains.InStockRemaining, 0) KAKO Ostatak | IZ | Imenik. Nomenklatura AS Nom | LIJEVO PRIDRUŽENJE Registar akumulacije.

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

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

Primjer upotrebe:

Query.Text = "ODABIR | REPRESENTATION(Free RemainsRemains.Nomenclature) AS Nomenklatura, | REPRESENTATION(FreeRemainsRemains.Warehouse) AS Warehouse, | FreeRemainsRemains.AvailableRemains |FROM | Akumulacija Free Remains.Freins.Remarema AS

Konstrukcije u jeziku upita 1s

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

1. Građevinski LINK- je operator provjere logičkog referentnog tipa. Najčešće se susreće prilikom testiranja polja kompozitnog tipa za određeni tip. sintaksa: VEZA<Имя таблицы>

Primjer upotrebe:

Query.Text = //ako je tip vrijednosti registratora Potvrda dokumenta, //onda će upit vratiti "Dolazna roba", u suprotnom "Prodaja robe" "ODABIR | ODABIR | WHEN Remains.Registrar LINK Document.Incoming GoodsServices | ONDA ""Dolazni" | OSTALO "Trošak" | KRAJ KAO Vrsta kretanja | IZ | Registar akumulacije. Ostaci robe u skladištima KAO ostaci ";

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

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

Primjer upotrebe:

Query.Text = //dobijamo svu nomenklaturu čiji je kod u rasponu od 1 do 100 "SELECT | Nomenclature.Reference |FROM | Catalog.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code IZMEĐU 1 I 100" ;

3. Konstrukcija B i B HIJERARHIJE- provjerite da li se vrijednost nalazi u proslijeđenoj listi (nizovi, tablice vrijednosti itd. mogu se proslijediti kao lista). Operator IN HIERARCHY vam omogućava da vidite hijerarhiju (primjer korištenja PlanAccounts).

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

Primjer upotrebe:

Query.Text = // izaberi sve podračune računa "ODABIR | Samonosivi. Poveži KAO račun | FROM | Plan računa. Samonosivi AS Samonosivi | GDJE | Samonosivi. Referenca U HIERARHIJI VRIJEDNOSTI( Raspored računa. Samonosna roba)";

4. Izgradnja LIKE- ova funkcija nam omogućava da uporedimo string sa uzorkom niza.

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

Opcije predloška linije:

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

Jedan proizvoljan karakter.

[...] - bilo koji pojedinačni znak ili niz znakova navedenih u uglastim zagradama. Nabrajanje može sadržavati opsege, kao što je a-z, što znači bilo koji znak unutar raspona, uključujući i krajeve raspona.

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

Primjer upotrebe:

Query.Text = //pronađi cijelu nomenklaturu koja sadrži korijen TABUR i počinje //bilo s malim ili velikim slovom t "SELECT | Nomenclature.Reference |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Goods.Name LIKE ""[Tt ]abur%""" ;

5. Dizajn DOZVOLJEN- ova izjava vam omogućava da odaberete samo one zapise iz baze podataka za koje pozivalac ima pravo čitati. Ova prava su konfigurisana na nivou zapisa (RLS).

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

Primjer upotrebe:

Query.Text = "ODABIR DOZVOLJENO | Counterparties.Reference |FROM | Directory.Counterparties AS Counterparties";

6. Izgradnja VARIOUS- omogućava vam da odaberete zapise u kojima nema ponovljenih zapisa.

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

Primjer upotrebe:

Request.Text = //odabira zapise na koje čitač ima prava "IZABIR DRUGAČIJE | Counterparties.Name |FROM | Directory.Counterparties AS Counterparties" ;

DIFFERENT konstrukcija se također može koristiti s operatorom ALLOWED i drugim operatorima.

Primjer upotrebe:

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

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

Sintaksa: FIRST<число>

Primjer upotrebe:

Query.Text = //odaberite prva 4 GTD broja iz direktorija "IZABIR PRVA 4 | GTD brojevi.Referenca |FROM | Catalog.GTE brojevi KAO GTD 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 | FreeRemainsRemains.Nomenclature, | FreeRemainsRemains.Warehouse, | FreeRemainsRemains.AvailableRemains |FROM | Registar akumulacije.FreeRemains.Remains KAO FreeRemainsRemains |ZA PROMJENU |

9. Struktura ORDER BY- sortira podatke po određenom polju. Ako je polje veza, onda prilikom postavljanja zastavice AUTO ORDERće se sortirati prema prikazu 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 = "ODABIR | FreeRemainsRemains.Nomenklatura KAO Nomenklatura, | FreeRemainsRemains.Skladište KAO Skladište, | FreeRemainsRemains.In StockRemaining |FROM | Registar akumulacije.FreeRemains.Remains KAO FreeRemainsRemains | | ORDERLALE;

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 | ItemsInWarehouse.Nomenklatura AS Nomenklatura, | ItemsInWarehouse.Warehouse, | SUM(ItemsInWarehouse.InStock) AS InStock |FROM |

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

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

Primjer upotrebe:

Query.Text = //Odabire grupisane zapise u kojima je polje InStock veće od 3 "SELECT | GoodsInStock.Nomenklatura AS Nomenklatura, | GoodsInWarehouse.Warehouse, | SUM(ItemsInWarehouse.InStock) KAO InStock |FROM | Akumulacija Registar GoodsWInhouses ASInWarehouses | |GROUP BY | GoodsInWarehouses.Nomenclature, | GoodsInWarehouses.Warehouse | |IMAJUĆI | IZNOS(GoodsInWarehouses.InStock) > 3" ;

12. INDEX BY konstrukcija- koristi se za indeksiranje polja upita. Indeksirani upit traje duže da se završi, ali ubrzava pretraživanja indeksiranih polja. Može se koristiti samo u virtualnim tablicama.

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

Primjer upotrebe:

Query.Text = "SELECT | Tz.OS Naziv, | Tz.Folder Number, | Tz.CodeOS, | Tz.Term, | Tz.Type |PUT DataTz |FROM | &Tz HOW Tz | | INDEX BY | Tz.OS Naziv , | Tz .CodeOS";

13. Izgradnja GDJE- omogućava vam da nametnete uslov za bilo koja polja selekcije. Samo zapisi koji ispunjavaju uslov će biti uključeni u rezultat.

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

Primjer upotrebe:

Query.Text = //odaberite sve zapise sa CompensationRemainder<>0 i // AmountFor Calc.CompBalance > 100 "SELECT | Compensation RPO salda.Counterparty, | Compensation RPO balances.Child, | Compensation RPO balances. Compensation Balance, | Compensation RPO balances. AmountFor Calc.Comp Balance | PLACE DataTz | FROM | Registar akumulacije Kompenzacija RP Stanja AS Kompenzacija R Stanja | GDJE | Kompenzacija RPO stanja Kompenzacija Stanje<>0 | I bilansi RPO kompenzacije. Iznos za CalcComp ostatak > 100" ;

14. REZULTATI dizajna ... OPĆENITO- koristi se za izračunavanje ukupnih iznosa, dizajn specificira polja po kojima će se ukupni iznosi izračunati i agregatne funkcije primijenjene na ukupna polja. Kada se koriste zbrojevi za svako polje nakon konstrukcije TOTALS, podaci se grupišu. Postoji opcioni konstrukt GENERAL, njegova upotreba takođe omogućava dodatno grupisanje. U nastavku možete vidjeti primjer rezultata upita.

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

Primjer upotrebe:

Query.Text = "ODABIR | Poravnanja.Ugovor sa drugom stranom.Vrsta ugovora KAO Vrsta ugovora, | Poravnanja.Ugovor sa zemljom kao Ugovor, | Poravnanja.Protivstrana, | Poravnanja.Iznos međusobnih poravnanjaStanje KAO Stanje |OD, | Softver | | Vrsta ugovora";

Grupacije koje su formirane tokom izvršenja zahteva su zaokružene na slici, gornja se odnosi na OPŠTI deo, a druga na polje ContractContractorTypeContract.

Zahtjev . Tekst = "IZABIR | usStorageUnits.Reference OD | Reference.usStorageUnits AS usStorageUnits // Primjer 1. poređenje s praznom booleanskom vrijednošću: |WHERE | setStorageUnit.Allow SelectionFromStandbyZone = False // Primjer 2. ali ako je ovaj boolean definiran, onda je ovo bolje: // uvjet na negativnom booleovu: |WHERE | NIJE sa jedinicama za pohranu. Dozvoli povlačenje iz zone pripravnosti // Primjer 3. izbor po uslovu praznog polja tipa "referenca tipa betona" |WHERE | setStorageUnit.ActiveFilterRegion = VALUE(Catalog.FilterRegion us.NullReference) // Primjer 3a. izbor po uslovu praznog polja tipa "dokument određene vrste" |WHERE | OurInformationRegister.Document = VRIJEDNOST(Document.OurDocument.EmptyReference) // Primjer 3b. izbor po uslovu praznog polja tipa "dokumenti različitih vrsta" ( kompozitno polje) |WHERE | (OurInformationRegister.Document = VRIJEDNOST(Document.OurDocument1.EmptyReference) | OR OurInformationRegister.Document = VRIJEDNOST(Document.OurDocument2.EmptyReference) | ILI... (itd. - uzastopno navedite uslove za sve moguće tipove ovog složenog polja) ) // Primjer 4. ili obrnuto, ako trebate odabrati popunjenu vrijednost tipa "string", onda će uvjet pomoći: GDJE | usStorageUnits.Name > """" // Primjer 5. ako trebate odabrati dokumente određene vrste, sa složenim tipom podataka, na primjer, u registru "Izvršeni zadaci", resurs "Zadatak" ima složeni tip, među čijim vrijednostima dokument "Izbor" je moguć |WHERE | EXPRESS(InformationRegisterPoslovi koje treba izvršiti.Posao AS Document.Filter) REF Dokument.Filter // Primjer 5a. Još jedan sličan primjer kada trebate odabrati dokumente određene vrste | IZBOR | KADA IZRAŽITI(usklađenost agDocumenta.DocumentBU AS Document.Incoming Goods/Services) REFERENC Document.Incoming Goods/Services | ONDA ""Prijem dobara usluga"" | KADA IZRAŽITI(ar Korespondencija dokumenata.DokumentBU AS Document.Prodaja robe usluga) REFERENTNI dokument.Prodaja robe usluga | ONDA "Realizacija roba i usluga" | ELSE """" | END AS KindDocument // Primjer 6. odabir po uvjetu nedefinirane vrijednosti: |WHERE | SavedSettings.User = Nedefinirano // Primjer 7. odabir po vrsti kretanja "Dolazni" registra akumulacije, "Rashod" - slično): |WHERE | RegGoodsRetail.MovementType = VALUE(MovementAccumulationType.Income) // Primjer 8. Kako u upitu naznačiti da nije potrebno izvršiti upit (na primjer, potrebno je programski vratiti prazan rezultat upita u zavisnosti od nekog uslova - Query.Text = StrReplace(Query.Text, "WHERE Doc.Link = &DocumentLink" , "GDJE LEŽATI");). Da biste to učinili, samo dodajte uslov "Gdje je netačno". Inače, bez obzira na količinu traženih podataka u uzorku, takav zahtjev će biti izvršen trenutno. |GDE DA LEŽEM // Primjer 9. Provjera da li rezultat upita sadrži podatke: Ako neZahtjev.Trči().Prazan() Onda // Primjer 10. odabir po uvjetu praznog datuma: |WHERE | tbRows.Datum otkazivanja = DATETIME(1, 1, 1)

U ovom članku ćemo analizirati mogućnosti uvođenja tipova u 1C jeziku upita koje pruža funkcija "Express".
Pogledajmo nekoliko opcija za korištenje ove funkcije.
A prva opcija je zaokruživanje brojeva.

Da biste to učinili, koristite funkciju Express u sljedećem formatu:

ekspresno(<Число>kao broj (<ДлинаЧисла>,<Точность>))

gdje:
Broj— polje, parametar koji treba zaokružiti
LengthNumbers- maksimalna dužina broja
Preciznost- tačnost zaokruživanja brojeva

Parametri i dužina i preciznost moraju biti pozitivni cijeli brojevi.
Pogledajte kako ova funkcija radi na donjoj slici.

Drugi slučaj upotrebe je livenje struna. Vrlo često se u konfiguracijama koriste nizovi neograničene dužine, što nameće određena ograničenja. Na primjer, ne možemo porediti nizove neograničene dužine.
U upitu ispod, polje Puno ime je niza tipa neograničene dužine i ovaj upit neće raditi.

Da bi to funkcionisalo, potrebno je da konvertujete polje neograničene dužine u niz određene dužine, a to se radi pomoću Expressa u sledećoj funkciji formata:

ekspresno(<Строка>kao niz (<ДлинаСтроки>)

Gdje
String Length- maksimalna dužina na koju će niz biti smanjen.
Prepravimo upit: pod uslovom ćemo dovesti neograničeni string u niz određene dužine. Tada neće biti grešaka.

Razmotrimo posljednju i, rekao bih, najvažniju varijantu njegove primjene: pri radu s poljima kompozitnog tipa.
Ispod su dva upita koja koriste polja kompozitnog tipa. Prvi je pogrešan, a drugi je ispravan.

One. kada treba da dobijete polje nekog kompozitnog tipa, uvek dobijete vrednost ovog polja tek nakon izvođenja tipa pomoću funkcije Express. U ovom slučaju, format dokumenata i imenika bit će sljedeći:

ekspresno(<Документ>kao dokument.<ИмяТаблицы>)
ekspresno(<Справочник>kao imenik.< ИмяТаблицы >)
.

Gdje
TableName— naziv objekta u .

Uvijek koristite ekspresnu funkciju kada radite sa složenim tipovima, ovo uvelike optimizira upit.

Ako još uvijek "plutate" u konstrukcijama jezika upita, a čak vam i najjednostavniji upiti izazivaju poteškoće, onda vam preporučujem moj tečaj "Zahtjevi u 1C od početnika do profesionalca". Gdje su ova i mnoga druga pitanja detaljnije razmotrena.

Šta je posebno kod ovog kursa:
Kurs je dizajniran za one koji nisu upoznati sa jezikom upita u 1C;
Materijal za obuku je dobro organizovan i lak za učenje;
Nekoliko desetina lekcija;
Korisni praktični primjeri;
Sve lekcije su predstavljene jasnim i jednostavnim jezikom.

Za moje čitaoce, kupon za popust od 25%: hrW0rl9Nnx

Trudim se što češće objavljivati ​​razne zanimljive besplatne članke i video tutorijale. Stoga ću biti vrlo sretan ako podržite moj projekat prijenosom bilo kojeg iznosa:

Možete direktno prenijeti bilo koji iznos:
Yandex.Money — 410012882996301
Web Money - R955262494655

Pridružite se mojim grupama.

Top Related Articles