Brojne linije u upitu 1c


Ključne riječi: numeriranje redaka upita, prvo, redovnici numeriranja u graditelju, numerirani

Ponekad postoji potreba za dodavanjem stupca linije na upit, na primjer, kada trebate prikazati broj retka u izvješće, a koristi se graditelj izvješća. Također, numeriranje nizova je korisno kada je potrebno za određene skupine za proizvodnju ograničenog broja podataka. Nešto poput prvih 5 dokumenata za svaku druge ugovorne strane.

Dakle, postoji kod koji odabire nomenklaturu, razvrstano po imenu:
Odabrati
Nomenklatura. Link
OD

Sortirati
Nomenklatura. Ime
izvorni zahtjev

Morate dodati stupac s brojevima redoslijeda nomenklature (unutar ovog sortiranja).
Odabrati

OD
Imenik. NamerenClature kao nomenklatura
Prema nomenklaturi. Naziv\u003e \u003d nomenclature_1.name // uvjet za sortiranje za numeriranje

Sortirati
Nomenklatura. Ime
zahtjev s brojevima retka

S ovim tablicom povezujemo prilično lukav način. Na desnom tablici brojimo broj nomenklature s imenom je manji od trenutnog lijevog, koristeći grupiranje.

Slična oprema se može primijeniti ako trebate odrediti numeriranje redaka, uzimajući u obzir grupiranje na nekom polju.
Odabrati
Nomenklatura. Veza kao nomenklatura,
Nomenklatura. Proizvod kao roditelj,
Broj (nomenklature_1.link) kao broj
OD
Imenik. NamerenClature kao nomenklatura
Priručnik za internu vezu. NamerenClature kao nomenklature_1
Prema nomenklaturi. Ime\u003e \u003d nomenklature_1.name
I nomenklature.rodel \u003d nomenklature_1.rodel

Grupirati
Nomenklature.rodel,
Nomenklatura. Link
zahtjev s linijama u grupiranju

To je isti upit, grupiranje "roditeljskog" polja se jednostavno dodaje, numeriranje za svakog roditelja ima svoje.

Ubrzati:
Ako govorimo o brzini, onda zahtjevi ove vrste prirodno resursno intenzivne (matematički osjetljive narudžbe n ^ 2). Za većinu svakodnevnih zadataka, njihova je uporaba prilično prihvatljiva.
Usput, drugi zahtjev je donekle brži od prvog, zbog čega je manja veličina pomoćnih tablica.

Primjer stvarne uporabe:
Sada malo o tome, za koje je sve to učinjeno, to je prednosti koje se mogu naučiti od numeriranja redova zahtjeva.

Na primjer, suočeni smo s zadatkom dobivanja za svaku ugovornicu pet nedavnih dokumenata za primitak roba i usluga:
Odabrati
Adaitovyovarovyvug.ControlTent kao ugovorna strana,
Charplementovarovarovyvuch. Link kao link,
Broj (admiretovyovarovyovyvug_1.link) kao broj
OD
Dokument. AvailableThetyovyovyovyvuga kao poljoprivreda
Dokument iz interijera. Nije dostupna dodatak opreme
Prema Adhetimetovarovu Superveuc.data.<= ПоступлениеТоваровУслуг_1.Дата
I adhesiveovarovyovyvuga.Contragent \u003d adulimyetovarovyvug_1.corstragent

Grupirati
Adamiethovarov Superlithitch
AdaitovyovyovServug.Coctragent

Imati
Broj (admiretovyovyovyovyvug_1.link)<= 5

Sortirati
Ugovorna strana
soba
zahtjev s brojevima linije ako postoji dvostruko područje interesa (koje je u odnosu na koga je izgrađen brojač)
Odabrati
Količina (fizikalno_1. Ime) kao broj,
Fizikalno. Veza kao puna
OD
Priručnik. Liječnik kao fizički
Priručnik za unutarnju priključak. Fizički elegantan kao Psihiiheitsa_1
Softver (fizički. Nadminacija + fizički. Kod\u003e \u003d Psihirelitis_1.name + Fizikal_1.kod)

Sortirati
soba
Zapravo, ideja je ono što: Koristite "kompozitno polje" kako biste dobili sve veći rezultat (dok jedno polje može sadržavati duplikat, a drugi u ovom primjeru nije.)
Rođeni u glavi Nekron "a

Sada ostaju uzeti u obzir.

Radne funkcije s redovima u zahtjevima 1c

Funkcije i operateri za rad s podacima o nizu u 1c upita.

Prvo, redovi u upitima mogu se presaviti. Da biste to učinili, koristite operatera "+":

Upit. Tekst \u003d "Odaberite
" "Crta: " + Izvor. Ime
;

Drugo, možete odabrati dio linije. To koristi funkciju Substro.Funkcija je slična ugrađenom jeziku 1c. Ima tri parametra:

  1. Izvorni izvor.
  2. Broj znakova iz kojeg se mora početi niz.
  3. Znakovi.

Upit. Tekst \u003d. "Odaberite
Podniz ("
"Crta: " ", 4, 3) kao rezultat"; // Rezultat: Oka

Funkcija Nalik

Null - posebna vrsta podataka na 1C platformi: poduzeće. To je jedina moguća vrijednost ovog tipa. Null se može pojaviti u upitima u nekoliko slučajeva: pri povezivanju s izvorima upita, ako je odgovarajuća vrijednost pronađena u jednom od tablica; pri kontaktiranju pojedinosti ne-postojećeg objekta; Ako je NULL naveden na popisu polja upita (na primjer, pri kombiniranju rezultata uzorka iz nekoliko tablica), itd.

Budući da Null nije ni nula ni prazna niti ili ne značenje Nedefiniran, Često je korisno zamijeniti za neki koristan tip podataka. U tu svrhu je funkcija namijenjena. Postoji neugodan.

Ima dva parametra:

  1. Provjerena vrijednost.
  2. Vrijednost na koju želite zamijeniti prvi parametar ako se ispostavi da je null.

Upit. Tekst \u003d. "Odaberite
Postoji neugodan (izvor. Izvor, 0) kao ostatak "
; // ako je kao rezultat ostatka polja upita \u003d ,
// onda će biti zamijenjeno s 0, a matematičke akcije mogu se izvesti s njom

Funkcije Zastupanjei Reprezentiole

Ove funkcije su dizajnirane za dobivanje reprezentacija različitih vrijednosti. To jest, pretvaraju veze, brojeve, boolean, itd. U običnom tekstu. Razlika između njih je to funkcija Zastupanjepretvara u tekst (niz) bilo koje vrste podataka i funkciju Reprezentiole- samo reference, a preostale vrijednosti se vraćaju kao što se ne transformira.

Upit. Tekst \u003d. "Odaberite
Izvedba (istina) kao Boolean
Zastupanje (4) kao broj
Prezentacija (izvor. Link) kao link,
Prezentacija (Datuster (2016.10.07)) kao datum "
;
// buleveo \u003d "Da", broj \u003d "4", link \u003d "Dokument troši novčani nalog br. ... od ..."
// Datum \u003d "07.10.2016 0:00:00"

Upit. Tekst \u003d. "Odaberite
Predstavlja prenevillere (istinu) kao Boolean,
Koji predstavljaju (4) kao broj,
Koji predstavljaju (izvor. Link) kao vezu,
Koji predstavljaju (Datastern (2016.10.07)) kao datum "
;
// booleo \u003d istina, broj \u003d 4, link \u003d "Dokument troši novčani nalog br. ... od ..."
// Datum \u003d 07.10.2016 0:00:00

Funkcije Tipi Tip

Funkcija Tipvraća vrstu podataka 1c platforme: Enterprise.

Upit. Tekst \u003d. "Odaberite
Tip (broj),
Tip (niz),
Tip (dokument. Tourcassoorner) "
;

Funkcija Tipvraća vrstu vrijednosti koje se prenose.

Upit. Tekst \u003d. "Odaberite
Vrsta vrste (5) kao broj
Tip ("
"Crta" ") Kao niz,
Tip (izvor. Link) kao direktorij
Iz priručnika. Izvor je kao izvor
;
// Broj \u003d broj, string \u003d string, referentna knjiga \u003d direktorij. izvor napajanja

Te se značajke prikladno koriste, na primjer, kada je potrebno saznati je li vrijednost dobivena u vrijednosti upita vrijednost neke vrste. Na primjer, primit ćemo kontaktne informacije o ugovoru iz podataka o kontaktima registra (ne postoje samo ugovorne strane, već i organizacije, pojedinci itd.):

Upit. Tekst \u003d. "Odaberite

OD

GDJE
Tip (kontakt integriran. Stavka) \u003d tip (direktorij. Kontroli) "
;

Funkcija VRIJEDNOST

Funkcija Vrijednostomogućuje vam korištenje 1C konfiguracijskih objekata u upitu izravno, bez uporabe.

Doplata prethodnog primjera je još jedan uvjet. Trebate samo primati telefonske telefone.

Upit. Tekst \u003d. "Odaberite
Kontaktne informacije. Konverzija
OD
Registriranje. Kontaktne informacije kao kontaktne informacije
GDJE
Vrsta (podaci o kontaktu). Stavka) \u003d Vrsta (direktorij. Kontroli)
I kontakt informacije. Vrsta \u003d vrijednost (unos. TypeContact informacije. Lefn) "
;

Treba napomenuti da se ova funkcija može koristiti samo s unaprijed određenim vrijednostima, tj. S vrijednostima na koje se možete kontaktirati izravno iz konfiguratora. To je funkcija VRIJEDNOST Ne možete se koristiti s elementima referentnih knjiga koje su stvorili korisnici, ali mogu raditi s popisima, s unaprijed određenim elementima referentnih knjiga, s vrijednostima Prazan.

Operater VEZA

Operater VEZAdizajniran za provjeru vrijednosti primljenih u upitu pripadati određenoj referentnoj vrsti. Isti zadatak može se izvršiti pomoću funkcija. Tipi Tip (koji imaju širi prostor primjene i razmotreni su gore).

Na primjer, zadatak odabira kontakt informacije o ugovornim stranama može se riješiti na sljedeći način:

Upit. Tekst \u003d. "Odaberite
Kontaktne informacije. Konverzija
OD
Registriranje. Kontaktne informacije kao kontaktne informacije
GDJE
Kontaktne informacije. Referentna referentna knjiga Link.
;

Operater Izraziti

Operater Izraziti Koristi se u 1c zahtjevima u dva slučaja:

  • kada trebate promijeniti karakteristike primitivnog tipa;
  • kada trebate s polja s kompozitnim tipom podataka, napravite polje jednim vrstama.

Glavne vrste podataka uključuju: broj, linija, datum, Boolean.Neki od tih vrsta podataka imaju dodatne karakteristike. Tip Broj Ima duljinu i točnost, tip Crta -duljina ili neograničenosti.

Operater Izraziti Omogućuje promjenu vrste podataka, naime dodatne karakteristike. Na primjer, može iz niza s neograničenom duljinom da napravi niz s ograničenom duljinom. To je korisno ako trebate grupirati rezultate upita za takvo polje. Nemoguće je izvesti grupiranje na poljima s neograničenom dužinom, tako da ga pretvaramo u niz s duljinom od 200 znakova.

Upit. Tekst \u003d. "Odaberite
Količina (razne Link ljepljive šipke) kao link
OD
Dokument. AvailableThetyovyovyovyvuga kao poljoprivreda TimeTovSerdrgug
Grupirati
Express (admiretovarovyovyvug.comments kao linija (200)) "
;

U nekim slučajevima, zahtjevi za polja s kompozitnim tipom podataka mogu se obraditi od strane 1c platforme neaptimalno. To dovodi do povećanja vremena izvršenja zahtjeva, stoga je korisno pretvoriti kompozitni tip unaprijed unaprijed.

Upit. Tekst \u003d. "Odaberite
Express (kretanje pokreta. Točnost kao dokument. Zakazlient). Podatke kao bazu podataka,
Motominetovovouts. Namerencatura
OD
Registrirajte se. Okorina. Rotira se kao pokreta
GDJE
Motomativovarovother. Referentni dokument točaka. Zakazlient "
;

Operateri Izbori Postoji nula

Operater Izbor Simulirani operator Ako a U ugrađenom 1C jeziku, ali ima nekoliko obrubljenih funkcionalnosti.

Pretpostavimo da želimo dobiti podatke o kontaktu s informacijama o kontaktima informacija i istovremeno u zasebnom polju upita, navedite da li pripadaju ugovornoj strani ili fizičkom licu.

Upit. Tekst \u003d. "Odaberite
Kontaktne informacije. Konvekcija,
Izbor
Prilikom upisa (kontakt informacije) \u003d vrsta (referentna knjiga.
Zatim "
Ugovorna strana "
Inače, izbor
Prilikom upisa (kontakt informacije) \u003d vrsta (referentna knjiga. Liječnik)
Zatim "
Fisliso "
Inače "netko drugi "
KRAJ
Završiti kao vlasnik
OD
Registriranja. Kontaktne informacije kao informacije o kontaktu "
;

Kao što se može vidjeti iz primjera, u dizajnu Izbor Uvijek postoji stanje nakon riječi KADA; Vrijednost se primjenjuje ako se stanje izvodi nakon riječi ZATIM i vrijednost korištena ako se stanje ne izvodi nakon riječi Inače.Sva tri elementa dizajna Izborsu obvezni. Donji element Inače, baš kao što je učinjeno kada koristite operatera Ako au ugrađenom jeziku od 1 °, to je nemoguće. Također u operateru Izbor Nema ekvivalentnog dizajna Upotrebljavanjeali možete uložiti jedan Izbor U drugoj, kao što je učinjeno u našem primjeru.

Operater Postoji nulakoristi se u dizajnu Izborda biste usporedili polje upita s null tipom.

Upit. Tekst \u003d. "Odaberite
Izbor
Kada je vrijednost nula, onda 0
Inače, vrijednost
KRAJ"
;

Osim toga, operater Postoji nulamože se koristiti u zahtjevu zahtjeva, na primjer u prijedlogu GDJE.

U testnoj konfiguraciji u dnevniku dokumenata potrebno je provesti numeriranje žica na dinamičkom popisu. Časopis uključuje tri dokumenta: "Aplikacija", "došla je red" i "nalog za izdatke". U početku, oblik popisa dnevnika dokumenata je sljedeći:

U načelu, zadatak bi se lako riješio ako bi se popis dokumenata primio u izvješću. Ali stvari su različite.

U izvješćima - ne problem!

Stvaranjem izvješća o sustavu rasporeda podataka za dobivanje popisa dokumenata, zadatak bi se riješio vrlo jednostavno. U polju izvješća bilo bi moguće dodati poseban polje "broj u red".

Kao rezultat toga, korisnik će vidjeti sličan rezultat formiranja izvješća:

Ali što ako trebate dobiti izravno upit? Na primjer, može biti potrebno za primanje redoslijeda broja snimanja u dinamičkom popisu.

Numeriranje u zahtjevu

Promijenite zahtjev za dinamički popis dokumenata na sljedeći način:

"Odaberite | t , Tele | T. , Veza, | T. , Datum, | T. , Uparivanje | T. , Soba, | T. , Održanog | T. , Tip |OD | (Odaberite" + // dobiti broj povezanih linkova u polje "Caller" " KOLIČINA (Različiti redni-in-zakoni. Link) kao kalorijski poredak, | Zapisivanje. Veza kao veza, | Zapisivanje. Datum kao datum | Zapisivanje. Pakiranje kao pločnik, | Zapisivanje. Broj kao sobu, | Zapisivanje. Drže se kao istrošeno | Zapisivanje. Upišite kao vrstu | OD | Zapisivanje. Zapisivanje kao zapisivanje | Lijevo povezivanje mreže. Zapisivanje kao mreža povećanja" + // Spojite tablicu dnevnika dokumenata na sebe pozivanjem na dokument. Broj je priložen. // linkovi i postoji niz redoslijeda " Prijavom. Referenca\u003e \u003d Umrežavanje fokus. Veza / | | Grupirati | Zapisivanje. Veza, | Zapisivanje. Datum, | Zapisivanje. Uparivanje | Zapisivanje. Soba, | Zapisivanje. Održanog | Zapisivanje. Tip) kao t"

Prilikom otvaranja dinamičkog popisa u načinu 1c: poduzeća dobivaju sljedeći rezultat:

Napomena: Primjer prikazuje samo načelo numeriranja žica izravno u upitu. Ako ste skrenuli pozornost, onda na screenshot gore navedenih dokumenata na popisu, razvrstani po broju narudžbe, "idite" u redoslijedu vrsta (prvi dolazak nalozi, zatim potrošni materijal, itd.). To se događa, jer, koristeći vezu za povezivanje, ne možemo jamčiti da će GUID "linkovi biti jedinstveni. Također ne možete usporediti veze različitih vrsta dokumenata - to će dovesti do pogrešnog rezultata. Možete koristiti vrijeme ili drugo vrijeme Polja koja određuju određeni položaj dokumenta s općim popisom časopisa.

Naravno, koristeći sličan pristup, kompliciramo zahtjev baze podataka, plus neke od mogućnosti dinamičkog popisa, važnih za rad korisnika, ne bi bilo dostupno (dinamično čitanje podataka, glavnu tablicu itd.) , ali primjer je stvoren samo da bi pokazao numeriranje redaka u upitima. Koristeći ovaj princip za rješavanje drugih zadataka, na primjer, za tiskane obrasce, takve probleme neće se pojaviti.

Treba razumjeti da korištenje ponovnog pristupa tablici dokumenata ili dnevnika dokumenata može negativno utjecati na performanse. Bilo bi optimalno stvoriti privremenu tablicu svih odabranih dokumenata, a zatim raditi s njom. Opet, sve ovisi o određenom zadatku!