Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • OS
  • Jezik izraza sistema sastava podataka (1Cv8). Prijem cijena za datum dokumenta u zahtjevu Kako postaviti trenutni datum u SKD

Jezik izraza sistema sastava podataka (1Cv8). Prijem cijena za datum dokumenta u zahtjevu Kako postaviti trenutni datum u SKD

SKD 1C je skraćenica od Data Composition System. SKD 1C je novi način pisanja izvještaja u 1C, koji omogućava korisniku da sam u potpunosti prilagodi izvještaj.

Nedostatak SKD 1C je što su njegove postavke prilično složene i ne uče ih svi korisnici brzo.

Pisanje ACS izvještaja zahtijeva sposobnost rada sa upitima u 1C, o čemu smo govorili u.

Koja je tehnologija za kreiranje SKD 1C izvještaja:

  • Napišite 1C zahtjev u 1C SKD, koji omogućava prikupljanje podataka
  • Odredite ulogu polja u SKD 1C (izračunata polja, resursi)
  • Unesite zadane postavke 1C SKD.

Korisnik ima mogućnost mijenjanja mnogih postavki po želji.

Koja je tehnologija za kreiranje izvještaja o prethodnim tehnologijama:

  • Napišite zahtjev u programu 1C
  • Razvijte obrazac za postavke (jedinstven za izvještaj) koji će vam omogućiti da promijenite samo N postavki koje je odabrao programer
  • Napišite kod (program) za izvršavanje zahtjeva i izradu štampane forme izvještaja.

Kao što vidite, SKD 1C ima značajnu prednost i za korisnika i za programera:

  • Programer – eliminiše potrebu za pisanjem programa za pokretanje izveštaja i podešavanja
  • Korisnik – dobija značajan pristup postavkama izvještaja.

U svim novim 1C konfiguracijama, svi izvještaji će se koristiti samo na 1C SKD.

Pogledajmo kako sami napraviti izvještaj o SKD 1C od nule.

Kreiranje izvještaja SKD 1C

U konfiguratoru kliknite na dugme za novu datoteku (meni Datoteka/Novi).

Odaberite tip datoteke Novi izvještaj.

Novi izvještaj će biti kreiran. Unesite ime - bez razmaka za konfiguraciju, sinonim za korisnika.

Kreirajmo osnovnu shemu SKD 1C.

Kreirajte zahtjev za izvještaj SKD 1C

Postoji mnogo izvora podataka za SKD 1C. Da biste koristili, na primjer, dva odvojena upita, dodajte prvo „Skup podataka – Unija“, a zatim nekoliko upita.

U našem primjeru koristit ćemo jednostavan upit.

Skicirajmo zahtjev za dobijanje podataka.

Rad sa konstruktorom upita ne razlikuje se od uobičajenog; o tome smo raspravljali u.

Kao rezultat generiranja zahtjeva, SKD 1C će kreirati listu polja koja su dostupna za korištenje i popuniti ih zadanim nazivima.

Ako vam ime nije zgodno, možete ga promijeniti ovdje.

Imajte na umu da smo u zahtjevu koristili parametar &StartDate. U SKD 1C postoji zadani parametar (datum) koji se zove &Period i možete ga koristiti.

Štaviše, ne morate ga navesti direktno u zahtjevu - koristit će se automatski. Međutim, postoji suptilnost - primjenjuje se na sve tablice, uključujući lijeve spojeve i tako dalje, što može dovesti do grešaka.

Na primjer, dobijate stanje na početku mjeseca, a koristeći lijevo spajanje dobijate podatke za danas. Ako koristite period, on će se podjednako primijeniti na sve tabele i upit neće raditi ispravno.

Postavke SKD 1C

Na kartici Resursi označavamo polja koja će se zbrojiti za zbrojeve (tj. brojeve). Možete odrediti funkciju sumiranja za polja. Podrazumevano je suma (tj. zbrojite brojeve iz svih redova i dobijete zbroj), ali možete koristiti Prosjek, Količina, Maksimum itd.

Na kartici Postavke ćemo onemogućiti one koje nam nisu potrebne i omogućiti one koje nam trebaju. Ovdje također možete postaviti ljudsko ime za parametar.

Osnovna podešavanja se vrše na kartici Postavke:


Otvorimo ga u Enterprise modu. Napominjemo da nismo radili nikakvo programiranje, crtanje oblika itd. Da biste postavili parametar, kliknite na dugme Postavke.

Korisnik vidi skoro isti oblik podešavanja kao i programer.

Voila. Izvještaj radi.

Postavke SKD 1C

Sva podešavanja izveštaja SKD 1C vrše se klikom na dugme Podešavanja. Barem u zadanom predlošku. Obrazac izvještaja SKD 1C moguće je kreirati sami, a zatim se postavke mogu prenijeti na druge obrasce koje programer samostalno crta.

Povucimo skladište iz kolona u redove.

Povucimo stavku u skladište.

Kliknite OK i generirajte izvještaj. Ura - upravo smo promijenili način rada izvještaja u režimu programiranja bez programiranja.

Kliknite desnim tasterom miša na redove (ili bilo koje od polja) i izaberite Novo grupisanje.

Proširite polje Skladište i odaberite jedno od njegovih polja, na primjer Vrsta skladišta.

Nakon razmišljanja, sjetili smo se da bismo željeli da se u jednoj koloni prikaže nekoliko polja odjednom. Dvaput kliknite na novo kreirano polje levim tasterom miša. Ovdje možete dodati polja.

Ako dodate novo grupisanje, ali ne odaberete polje, to znači "Sva polja" (prikazano kao "Detaljni zapisi"). To izgleda ovako.

Kliknite lijevom tipkom miša na naše grupiranje (Skladište/Artikal) i prevucite ga u novo grupiranje (Vrsta skladišta).

Rezultat naših postavki.

Pored postavki, čiji je učinak lako pogoditi po imenu (Izbor, Sortiranje, itd.), postoji i kartica „Ostala podešavanja“. Omogućava vam da omogućite ili onemogućite takve stvari kao što su prikaz ukupnih vrijednosti, postavljanje grupa u kolone itd.

Imajte na umu da se postavke mogu postaviti za cijeli izvještaj (Izvještaj je odabran) ili za određeni red polja (odaberite red, na primjer Nomenklatura, i odaberite Postavke:Nomenklatura).

Sistemski jezik za sastavljanje podataka

Jezik izraza sistema za sastav podataka dizajniran je za pisanje izraza koji se koriste u različitim dijelovima sistema.

Izrazi se koriste u sljedećim podsistemima:

  • dijagram rasporeda podataka - za opisivanje izračunatih polja, ukupnih polja, izraza veze, itd.;
  • postavke rasporeda podataka - za opisivanje prilagođenih izraza polja;
  • raspored podataka - za opisivanje izraza za povezivanje skupova podataka, opisivanje parametara rasporeda itd.

Literali

Izraz može sadržavati literale. Moguće su sljedeće vrste literala:

  • Line;
  • Broj;
  • Datum;
  • Boolean.

Linija

Literal stringa se piše u znakovima "", na primjer:

“String literal”

Ako trebate koristiti znak “” unutar literala stringa, trebali biste koristiti dva takva znaka.

Na primjer:

„Doslovno „„pod navodnicima“““

Broj

Broj se piše bez razmaka, u decimalnom formatu. Razlomak se odvaja simbolom "." Na primjer:

10.5 200

datum

Literal datuma se piše pomoću ključnog literala DATETIME. Nakon ove ključne riječi, godina, mjesec, dan, sati, minute, sekunde su navedeni u zagradama, odvojeni zarezima. Specifikacija vremena nije potrebna.

Na primjer:

DATETIME(1975, 1, 06) – 6. januar 1975. DATUM (2006, 12, 2, 23, 56, 57) – 2. decembar 2006., 23 sata 56 minuta 57 sekundi, 23 sata 56 minuta 57 sekundi

Boolean

Booleove vrijednosti se mogu napisati pomoću literala True (True), False (False).

Značenje

Za specificiranje literala drugih tipova (sistemske enumeracije, unaprijed definirani podaci), koristi se ključna riječ Vrijednost, praćena imenom literala u zagradama.

Vrijednost (Tip računa. Aktivan)

Operacije na brojevima

unarno –

Ova operacija ima za cilj promjenu predznaka broja u suprotan predznak. Na primjer:

Sales.Quantity

Unary +

Ova operacija ne izvodi nikakve radnje na broju. Na primjer:

Sales.Quantity

binarni -

Ova operacija je namijenjena za izračunavanje razlike dva broja. Na primjer:

ResidualsAndTurnovers.InitialRemaining – RemainingsAndTurnovers.FinalResidualsRemainingsAndTurnovers.InitialRemaining - 100 400 – 357

Binarno +

Ova operacija je dizajnirana da izračuna zbir dva broja. Na primjer:

RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.Ortover ResiduesAndTurnover.InitialRemaining + 100 400 + 357

Posao

Ova operacija je dizajnirana za izračunavanje proizvoda dva broja. Na primjer:

Nomenklatura.Cijena * 1,2 2 * 3.14

Division

Ova operacija je dizajnirana da dobije rezultat dijeljenja jednog operanda drugim. Na primjer:

Nomenklatura.Cijena / 1.2 2 / 3.14

Ostatak divizije

Ova operacija je dizajnirana da dobije ostatak kada se jedan operand podijeli s drugim. Na primjer:

Nomenklatura Cijena % 1,2 2 % 3.14

Operacije sa stringovima

Konkatenacija (binarni +)

Ova operacija je dizajnirana za spajanje dva niza. Na primjer:

Nomenklatura.Član + “: ”+ Nomenklatura.Naziv

Sviđa mi se

Ova operacija provjerava da li niz odgovara proslijeđenom uzorku.

Vrijednost operatora LIKE je TRUE ako je vrijednost<Выражения>zadovoljava obrazac, a u suprotnom FALSE.

Sljedeći likovi u<Строке_шаблона>imaju značenje drugačije od samo drugog znaka u retku:

  • % - procenat: niz koji sadrži nula ili više proizvoljnih znakova;
  • _ - donja crta: jedan proizvoljan znak;
  • […] - jedan ili više znakova u uglastim zagradama: jedan znak, bilo koji od onih navedenih u uglastim zagradama. Nabrajanje može sadržavati opsege, na primjer a-z, što znači proizvoljan znak uključen u raspon, uključujući krajeve raspona;
  • [^...] - u uglastim zagradama ikona negacije praćena jednim ili više znakova: bilo koji znak osim onih navedenih iza ikone negacije;

Bilo koji drugi simbol označava sam sebe i ne nosi nikakav dodatni teret. Ako jedan od navedenih znakova treba biti napisan kao sam, onda mu mora prethoditi<Спецсимвол>, navedeno iza ključne riječi SPECIAL CHARACTER (ESCAPE).

Na primjer, šablon

“%ABV[abvg]\_abv%” POSEBNI KARAKTER “\”

označava podniz koji se sastoji od niza znakova: slovo A; slova B; slova B; jedna cifra; jedno od slova a, b, c ili d; donja crta; slova a; slova b; slova v. Štaviše, ovaj niz se može locirati počevši od proizvoljne pozicije u liniji.

Operacije poređenja

Jednako

Ova operacija ima za cilj da uporedi dva operanda radi jednakosti. Na primjer:

Sales.Counterparty = Sales.NomenclatureMainSupplier

Nije jednako

Ova operacija ima za cilj da uporedi dva operanda za nejednakost. Na primjer:

Sales.Counterparty<>Sales.NomenclatureMainSupplier

Manje

Ova operacija je dizajnirana da provjeri da li je prvi operand manji od drugog. Na primjer:

SalesCurrent.Amount< ПродажиПрошлые.Сумма

Više

Ova operacija je dizajnirana da provjeri da li je prvi operand veći od drugog. Na primjer:

SalesCurrent.Sum > SalesPast.Sum

Manje ili jednako

Ova operacija je dizajnirana da provjeri da li je prvi operand manji ili jednak drugom. Na primjer:

SalesCurrent.Amount<= ПродажиПрошлые.Сумма

Više ili jednako

Ova operacija je dizajnirana da provjeri da li je prvi operand veći ili jednak drugom. Na primjer:

SalesCurrent.Amount >= SalesPast.Amount

Operacija B

Ova operacija provjerava prisutnost vrijednosti u proslijeđenoj listi vrijednosti. Rezultat operacije će biti True ako je vrijednost pronađena, ili False u suprotnom. Na primjer:

Stavka B (&Proizvod1, &Proizvod2)

Operacija provjere prisutnosti vrijednosti u skupu podataka

Operacija provjerava prisutnost vrijednosti u navedenom skupu podataka. Skup podataka za validaciju mora sadržavati jedno polje. Na primjer:

Prodaja. Counterparty To Counterparties

Operacija provjere vrijednosti za NULL

Ova operacija vraća True ako je vrijednost NULL. Na primjer:

Sales.Counterparty JE NULL

Operacija provjere vrijednosti za NULL nejednakost

Ova operacija vraća True ako vrijednost nije NULL. Na primjer:

Prodaja.Druga strana NIJE NULL

Logičke operacije

Logičke operacije prihvataju izraze tipa Boolean kao operande.

Operacija NE

Operacija NOT vraća True ako je njen operand False i False ako je njen operand Tačan. Na primjer:

NOT Document.Consignee = Dokument.Pošiljalac

Operacija I

Operacija AND vraća True ako su oba operanda Tačna, i False ako je jedan od operanda False. Na primjer:

Document.Consignee = Document.Consignor I Document.Consignee = &Counterparty

OR operacija

Operacija OR vraća True ako je jedan od njenih operanada Tačan, i False ako su oba operanda False. Na primjer:

Document.Consignee = Document.Consignor OR Document.Consignee = &Counterparty

Agregatne funkcije

Agregatne funkcije izvode neku radnju na skupu podataka.

Suma

Agregatna funkcija Sum izračunava zbir vrijednosti izraza koji su joj proslijeđeni kao argument za sve zapise detalja. Na primjer:

Iznos(Prodaja.IznosPromet)

Količina

Funkcija Count izračunava broj vrijednosti koje nisu NULL. Na primjer:

Količina (Sales.Counterparty)

Broj različitih

Ova funkcija izračunava broj različitih vrijednosti. Na primjer:

Količina (razne prodaje.Counterparty)

Maksimum

Funkcija dobiva maksimalnu vrijednost. Na primjer:

Maksimum (preostalo. Količina)

Minimum

Funkcija dobiva minimalnu vrijednost. Na primjer:

Minimum (preostalo. Količina)

Prosjek

Funkcija dobiva prosjek vrijednosti koje nisu NULL. Na primjer:

Prosjek (preostalo. Količina)

Ostale operacije

Operacija SELECT

Operacija Select je namijenjena odabiru jedne od nekoliko vrijednosti kada su ispunjeni određeni uvjeti. Na primjer:

Odaberite Kada iznos > 1000, zatim iznos inače 0 Kraj

Pravila za poređenje dvije vrijednosti

Ako se vrste vrijednosti koje se uspoređuju razlikuju jedna od druge, tada se odnosi između vrijednosti određuju na osnovu prioriteta tipova:

  • NULL (najniže);
  • Boolean;
  • Broj;
  • Datum;
  • Line;
  • Referentni tipovi

Odnosi između različitih tipova referenci određuju se na osnovu referentnih brojeva tabela koje odgovaraju određenom tipu.

Ako su tipovi podataka isti, tada se vrijednosti uspoređuju prema sljedećim pravilima:

  • za Boolean tip vrijednost TRUE je veća od vrijednosti FALSE;
  • tip Broj ima uobičajena pravila poređenja brojeva;
  • za tip Datuma, raniji datumi su manji od kasnijih;
  • za tip String - poređenje stringova u skladu sa utvrđenim nacionalnim karakteristikama baze podataka;
  • referentni tipovi se upoređuju na osnovu njihovih vrijednosti (broj zapisa itd.).

Rad sa NULL vrijednošću

Svaka operacija u kojoj je jedan od operanada NULL će proizvesti NULL rezultat.

Postoje izuzeci:

  • Operacija AND će vratiti NULL samo ako nijedan od operanada nije False;
  • Operacija OR će samo vratiti NULL ako nijedan od njenih operanada nije Tačan.

Operativni prioriteti

Operacije imaju sljedeće prioritete (prvi red ima najniži prioritet):

  • B, JE NULL, NIJE NULL;
  • =, <>, <=, <, >=, >;
  • Binarno +, Binarno – ;
  • *, /, %;
  • Unarno +, Unarno -.

Funkcije jezika za sastavljanje podataka sistema ekspresije

Izračunati

Funkcija Calculate je dizajnirana da izračuna izraz u kontekstu određene grupe. Funkcija ima sljedeće parametre:

  • Izraz. Tip String. Sadrži izračunati izraz;
  • Grupisanje. Tip String. Sadrži naziv grupiranja u čijem kontekstu treba procijeniti izraz. Ako se kao ime grupisanja koristi prazan niz, proračun će se izvršiti u kontekstu trenutnog grupisanja. Ako se kao naziv grupe koristi string GrandTotal, izračunavanje će se izvršiti u kontekstu ukupnog zbroja. U suprotnom, proračun će se izvršiti u kontekstu nadređene grupe sa istim imenom. Na primjer:
Zbroj(Prodaja.Ukupan promet) / Izračunaj("Zbroj(Prodaja.Ukupan promet)", "Ukupno")

U ovom primjeru, rezultat će biti omjer iznosa za polje "Sales.AmountTurnover" zapisa grupisanja prema iznosu istog polja u cijelom izgledu.

Nivo

Funkcija je dizajnirana da dobije trenutni nivo snimanja.

Nivo()

NumberInOrder

Uzmite sljedeći redni broj.

Broj po narudžbi()

NumberInOrderInGrouping

Vraća sljedeći redni broj u trenutnoj grupi.

BrojByOrderInGroup()

Format

Dobijte formatirani niz proslijeđene vrijednosti.

Niz formata je postavljen u skladu sa nizom formata 1C:Enterprise.

Opcije:

  • Značenje;
  • Format string.

Format (Računi. Iznos dokumenta, "NPV=2")

Početak perioda

Opcije:

    • Minute;
    • Dan;
    • Sedmica;
    • Mjesec;
    • Quarter;
    • Decenija;
    • Pola godine.

Početni period(DatumVrijeme(2002, 10, 12, 10, 15, 34), "Mjesec")

rezultat:

01.10.2002 0:00:00

Kraj perioda

Funkcija je dizajnirana da izdvoji određeni datum iz datog datuma.

Opcije:

  • Datum. Unesite datum. Navedeni datum;
  • Tip perioda. Tip String. Sadrži jednu od sljedećih vrijednosti:
    • Minute;
    • Dan;
    • Sedmica;
    • Mjesec;
    • Quarter;
    • Decenija;
    • Pola godine.

EndPeriod(DatumTime(2002, 10, 12, 10, 15, 34), "Sedmica")

rezultat:

13.10.2002 23:59:59

AddToDate

Funkcija je dizajnirana da doda određenu vrijednost datumu.

Opcije:

  • Vrsta uvećanja. Tip String. Sadrži jednu od sljedećih vrijednosti:
    • Minute;
    • Dan;
    • Sedmica;
    • Mjesec;
    • Quarter;
    • Decenija;
    • Pola godine.
  • Iznos – za koliko trebate povećati datum. Tip broj. Razlomački dio se zanemaruje.

AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mjesec", 1)

rezultat:

12.11.2002 10:15:34

Razlika u datumu

Funkcija je dizajnirana da dobije razliku između dva datuma.

Opcije:

  • Izraz. Unesite datum. Originalni datum;
  • Izraz. Unesite datum. Oduzeti datum;
  • Vrsta razlike. Tip String. Sadrži jednu od sljedećih vrijednosti:
    • Sekunda;
    • Minute;
    • Dan;
    • Mjesec;
    • Quarter;

DATEDIFERENCE(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "DAN")

rezultat:

Podniz

Ova funkcija je dizajnirana da izdvoji podniz iz niza.

Opcije:

  • Linija. Tip String. Niz iz kojeg se izdvaja podniz;
  • Pozicija. Tip broj. Pozicija znaka iz koje počinje podniz koji se izdvaja iz niza;
  • Dužina. Tip broj. Dužina dodijeljenog podniza.

SUBSTRING(Računi.Adresa, 1, 4)

Dužina linije

Funkcija je dizajnirana da odredi dužinu niza.

Parametar:

  • Linija. Tip String. Niz čija je dužina određena.

Linija (Counterparties.Adresa)

Godina

Ova funkcija je dizajnirana da izdvoji godinu iz vrijednosti tipa datuma.

Parametar:

  • Datum. Unesite datum. Datum do kojeg je određena godina.

GODINA (Trošak.Datum)

Kvart

Ova funkcija je dizajnirana da izdvoji broj četvrtine iz vrijednosti tipa datuma. Broj četvrtine se obično kreće od 1 do 4.

Parametar

  • Datum. Unesite datum. Datum do kojeg se utvrđuje tromjesečje
KVARTAL(Trošak.Datum)

Mjesec

Ova funkcija je dizajnirana da izdvoji broj mjeseca iz vrijednosti tipa datuma. Broj mjeseca se obično kreće od 1 do 12.

  • Datum. Unesite datum. Datum do kojeg se određuje mjesec.
MJESEC (Trošak.Datum)

Dan u godini

Ova funkcija je dizajnirana da dobije dan u godini iz vrijednosti tipa Datum. Dan u godini se obično kreće od 1 do 365 (366).

  • Datum. Unesite datum. Datum do kojeg je određen dan u godini.
DAYYEAR(Račun troškova.Datum)

Dan

Ova funkcija je dizajnirana da dobije dan u mjesecu iz vrijednosti tipa Datum. Dan u mjesecu se obično kreće od 1 do 31.

  • Datum. Unesite datum. Datum do kojeg je određen dan u mjesecu.
DAY (Trošak.Datum)

Sedmica

Ova funkcija je dizajnirana da dobije broj sedmice u godini iz vrijednosti tipa datuma. Sedmice u godini se numerišu počevši od 1.

  • Datum. Unesite datum. Datum do kojeg se određuju brojevi sedmica.
SEDMICA(Trošak.Datum)

Dan u tjednu

Ova funkcija je dizajnirana da dobije dan u sedmici iz vrijednosti tipa Datum. Uobičajeni dan u sedmici kreće se od 1 (ponedjeljak) do 7 (nedjelja).

  • Datum. Unesite datum. Datum do kojeg se određuje dan u sedmici.
DAN U SJEDICI (Troškovi.Datum)

Sat

Ova funkcija je dizajnirana da dobije sat u danu iz vrijednosti tipa datuma. Sat u danu kreće se od 0 do 23.

  • Datum. Unesite datum. Datum do kojeg se određuje sat u danu.
HOUR (Trošak.Datum)

Minuta

Ova funkcija je dizajnirana da dobije minute u satu iz vrijednosti tipa datuma. Minuta u satu kreće se od 0 do 59.

  • Datum. Unesite datum. Datum do kojeg se određuje minuta u satu.
MINUTE(Trošak.Datum)

Sekunda

Ova funkcija je dizajnirana da dobije sekundu minute iz vrijednosti tipa datuma. Sekunda u minuti se kreće od 0 do 59.

  • Datum. Unesite datum. Datum do kojeg se određuju sekunde minuta.
SECOND (Trošak.Datum)

Express

Ova funkcija je dizajnirana da izdvoji tip iz izraza koji može sadržavati složeni tip. Ako izraz sadrži tip koji nije potreban, bit će vraćeno NULL.

Opcije:

  • Izraz za pretvaranje;
  • Indikacija tipa. Tip String. Sadrži niz tipa. Na primjer, "Broj", "String" itd. Pored primitivnih tipova, ovaj red može sadržavati naziv tabele. U ovom slučaju, pokušat će se izraziti referenca na navedenu tabelu.

Express(Podaci.Props1, "Broj(10,3)")

IsNull

Ova funkcija vraća vrijednost drugog parametra ako je vrijednost prvog parametra NULL.

U suprotnom će biti vraćena vrijednost prvog parametra.

DaNULL(Iznos(Prodaja.IznosPromet), 0)

Funkcije zajedničkih modula

Izraz mašine za sastav podataka može sadržavati pozive funkcijama globalnih zajedničkih konfiguracijskih modula. Za pozivanje takvih funkcija nije potrebna dodatna sintaksa.

U ovom primjeru, funkcija "AbbreviatedName" će biti pozvana iz općeg konfiguracijskog modula.

Imajte na umu da je korištenje zajedničkih funkcija modula dozvoljeno samo ako je specificiran odgovarajući parametar procesora sastava podataka.

Dodatno, funkcije zajedničkih modula ne mogu se koristiti u prilagođenim izrazima polja.

Često postoji potreba za radom sa varijablama tipa „Datum“. U ovom članku ćemo pogledati osnovne tehnike - prenošenje tekućeg datuma, provjeru prazne vrijednosti, proizvoljan datum.

Kada pišete upite, često morate da uporedite podatke sa trenutnim datumom. Ugrađeni 1C jezik ima funkciju CurrentDate(). Omogućava vam da odredite trenutno vrijeme i datum na vašem računaru. Da biste izvršili operacije s trenutnim datumom, morate proslijediti vrijednost ove funkcije kao parametar zahtjevu.

Ispod je upit koji odabire sve datoteke priložene izvještajima o troškovima s datumom kreiranja do sada:

ExampleRequest = Novi zahtjev;
Primjer Request.Text = "
|ODABIR
| AdvanceReportAttachedFiles.Link
|OD
| Directory.AdvanceReportAttachedFilesAS AdvanceReportAttachedFiles
|WHERE
| AdvanceReportAttachedFiles.Date< &ТекДата»;
Primjer Request.SetParameter("CurrentDate", CurrentDate());

Prilagođeni datum

Funkcija o kojoj smo gore govorili omogućava vam da uporedite i, prema tome, napravite izbor za bilo koji period. Ova metoda vam omogućava da navedete strogu selekciju u zahtjevu bez korištenja dodatnih parametara.

Imajte na umu da smo prilikom korištenja ove funkcije u gornjem primjeru proslijedili samo tri broja (godina, mjesec, dan) kao ulazne parametre. Posljednja tri (sat, minuta, sekunda) su opciona i, ako ih nema, zamjenjuju se sa "0", odnosno početkom dana.

Ovaj primjer će dohvatiti sve datoteke priložene izvještajima o troškovima do kraja prošle 2016. godine. U tom smislu, naznačićemo sat, minut i sekundu za poređenje vremenske tačke „31. decembar 2016. 23:59:59“.

ODABIR
AdvanceReportAttachedFiles.Link
OD
Directory.AdvanceReportAttachedFiles AS AdvanceReportAttachedFiles
GDJE
AdvanceReportAttachedFiles.Date< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Prazan datum

Najlakši način da provjerite varijablu da vidite sadrži li prazan datum je korištenje jednostavnog poređenja. U ovom primjeru, pomoću upita, izabraćemo sve novčane primitke na račun za koje nije popunjen ulazni datum.

Prijavite se na stranicu kao student

Sistem sastavljanja podataka 1C 8.3 za početnike: prvi izvještaj o SKD-u

Ako niste pročitali uvod u ovaj modul, pročitajte ga: .

Za završetak lekcija će vam trebati 1C 8.3 (ne niže 8.3.13.1644 ) .

Ako već imate instaliran 1C verziju 8.3, koristite ga. Ako ne, preuzmite i instalirajte obrazovnu verziju koju 1C proizvodi posebno u obrazovne svrhe: .

Sljedeća prečica bi se trebala pojaviti na vašoj radnoj površini:

Za sve lekcije u ovoj seriji koristit ćemo Gastronom bazu koju sam pripremio. Potpuno se poklapa sa bazom koju smo koristili u školskim modulima prilikom proučavanja upita. Stoga očekujem da budete upoznati sa njenim referentnim knjigama i dokumentima.

Ako ste ga izbrisali, preuzmite ga ponovo koristeći sljedeću, raspakirajte ga i dodajte na listu baza podataka.

Konačno, radni stol je postavljen i sada ćemo zajedno kreirati naš prvi izvještaj koristeći sistem za sastavljanje podataka. Biće vrlo jednostavno demonstrirati opšte mogućnosti sistema za sastavljanje podataka (skraćeno SKD).

Postavljanje cilja

Svrha ove lekcije- kreirati izvještaj koji u korisničkom načinu rada prikazuje listu klijenata sa sljedećim poljima:

  • Ime
  • Kat
  • Omiljena boja klijenta.

Izvještaj mora biti eksterni. To znači da će biti kreiran i konfigurisan u konfiguratoru, a zatim sačuvan kao zaseban (eksterni) fajl na računaru.

Za generiranje takvog izvještaja u 1C, korisnik će morati pokrenuti bazu podataka u korisničkom načinu rada, otvoriti ovu datoteku i kliknuti na dugme "Generiraj".

Idi!

Kreiranje izvještaja

Pokrećemo konfigurator za Gastronom bazu podataka:

Iz glavnog menija odaberite "Datoteka" -> "Novo...":

Odaberite "Spoljni izvještaj":

Kreiranje dijagrama rasporeda podataka unutar izvještaja

Otvara se prozor za kreiranje eksternog izvještaja. Za ime unesite: " Lekcija 1", a zatim pritisnite dugme " Otvoreni dijagram sastava podataka":

Dizajner kreiranja sheme je započeo. Slažemo se sa zadanim imenom " Shema rasporeda glavnih podataka" i pritisnite dugme " Spreman":

Otvoren je glavni radni prozor sa mnogo kartica i polja u kojima ćemo konfigurisati našu šemu rasporeda podataka.

Nema potrebe da se plašite - ovde zaista ima mnogo prilika, ali ne trebaju nam sve. Pogotovo na prvoj lekciji.

Sada smo na bookmarku" Skupovi podataka"Ostat ćemo tamo."

Zahtjev pišemo preko konstruktora

Sistem sastava podataka (skraćeno DCS) zahteva od nas podaci, koje će prikazati korisniku.

Najlakši način - napišite zahtjev do baze. U školi smo naučili da pišemo i razumijemo zahtjeve - tako da očekujem da imate odgovarajuće vještine.

Kliknite na zeleno znak plus i na padajućoj listi odaberite stavku " Dodaj skup podataka - upit":

Naš zadatak je da napišemo tekst zahtjeva u ovo polje. Jeste li već zaboravili kako se to radi?

dat ću vam savjet:

U ovom upitu odabrali smo tri polja (" Ime", "Kat" i " Omiljena boja") sa stola" Directory.Clients".

Ali nemojte žuriti da ručno upišete ovaj tekst u polje "Zahtjev".

Sada ćemo kreirati isti zahtjev vizualno, samo pomoću miša. Ova metoda se zove " Konstruktor upita".

Da pozovete ovaj konstruktor, kliknite na dugme " Konstruktor upita..." u gornjem desnom dijelu polja "Zahtjev":

U prozoru koji se otvori prevucite tabelu " Klijenti" iz prve kolone u drugu da naznačimo da ćemo iz ove tabele tražiti podatke:

Ispalo je ovako:

Zatim ćemo otvoriti sto " Klijenti"u drugoj koloni po znaku" Plus"da vidite sva njegova polja i prevučete polje" Ime" iz druge kolone u treću da naznačimo da iz ove tabele treba da postavimo upit za polje "Ime":

Ispalo je ovako:

Uradimo isto sa poljima" Kat" i " Omiljena boja". Rezultat će biti ovakav:

Kliknite na dugme "OK" da izađete iz graditelja upita i vidite da se tekst upita automatski dodaje u polje "Upit".

Štaviše, na osnovu teksta zahtjeva, 1C je sam izvukao nazive polja (područje iznad zahtjeva) koje će koristiti shema sastava podataka:

Sada kada smo sastavili zahtjev, ACS zna kako doći do podataka za izvještaj.

Postavljanje prezentacije podataka

Ostaje nekako vizualizirati ove podatke za korisnika u obliku štampanog obrasca. I ovdje ACS može učiniti čuda!

Da stvorimo takvo čudo, idemo na karticu " Postavke" i kliknite na dugme dizajnera postavki ( čarobni štapić):

U prozoru koji se otvori navedite vrstu izvještaja " lista" i pritisnite " Dalje":

U sledećem prozoru izaberite (prevlačenjem) polja koja treba da budu prikazana na listi (prevucite sva ona koja su nam dostupna: " Omiljena boja", "Ime" i " Kat"):

Hajde da dobijemo ovaj rezultat i pritisnemo dugme " uredu":

Dizajner postavki je zatvoren i stavka " Detaljni unosi":

Izveštaj je spreman, hajde da ga proverimo. Da biste to učinili, prvo sačuvajte izvještaj kao eksterni fajl.

Sačuvajte izvještaj kao datoteku

Otvorite stavku glavnog menija " File"->"Sačuvaj":

Sačuvaću ga na radnoj površini pod imenom " Lekcija 1":

Provjera izvještaja u korisničkom modu

Na kraju, zatvorimo konfigurator i idemo na našu bazu podataka u korisničkom modu:

Korisničko ime "Administrator", bez lozinke:

Kroz meni odaberite stavku " File"->"Otvori...":

I navedite datoteku izvještaja (spremio sam je na radnu površinu pod imenom “Lesson1.erf”:

Obrazac za prijavu je otvoren, kliknite na dugme " Forma":

Spremni! Evo našeg štampe sa listom klijenata, njihovom omiljenom bojom i spolom:

Obrazac za štampanje može se lako odštampati. Da biste to učinili, samo odaberite stavku " File"->"Pecati...":

Upravo tako, bez programiranja, uspjeli smo napraviti cjelovit izvještaj koji korisnici mogu otvoriti u svojim bazama podataka, generirati i ispisati.

studenti - odgovaram poštom, ali prvo pogledaj.

Prijavite se na stranicu kao student

Prijavite se kao učenik za pristup školskim materijalima

U svetlu predstojećeg izdanja 8.2.14, pokušaću da opišem neke nove funkcije sistema za sastavljanje podataka.

Otvorite dijagram rasporeda podataka, po mogućnosti u vanjskom izvještaju, da olakšate uređivanje.

Dodamo skup podataka tipa upita i napišemo, bilo ručno ili pomoću dizajnera upita, jednostavan upit:

1. Postavite zahtjev u sistemu kontrole pristupa.

2. Podesite izračunata polja u sistemu kontrole pristupa

3. Konfigurirajte raspored podataka na kartici postavki

4. Pokrenite 1C Enterprise 8.2.14. Otvorite izvještaj. Formiramo, primamo.

Opis samih novih funkcija:

1. Trenutni datum()

Vraća sistemski datum. Prilikom sastavljanja izgleda izgleda, u svim izrazima koji su prisutni u rasporedu, funkcija CurrentDate() se zamjenjuje vrijednošću trenutnog datuma.

2. COMPUTEEXPRESSION()

sintaksa:

IzračunajIzraz(,)

Opis:

Funkcija je dizajnirana da procijeni izraz u kontekstu nekog grupiranja.

Funkcija uzima u obzir odabir grupiranja, ali ne uzima u obzir hijerarhijske odabire.

Funkcija se ne može primijeniti na grupiranje u odabiru grupe te grupe. Na primjer, pri odabiru grupiranja po nomenklaturi, ne možete koristiti izraz CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000. Ali takav izraz se može koristiti u hijerarhijskoj selekciji.

Ako završni zapis prethodi početnom, onda se smatra da ne postoje zapisi za izračunavanje detaljnih podataka i izračunavanje agregatnih funkcija.

Prilikom izračunavanja intervalnih izraza za ukupni zbroj (parametar Grupiranje je postavljen na GrandTotal), pretpostavlja se da ne postoje zapisi za izračunavanje detaljnih podataka i izračunavanje agregatnih funkcija.

Layout linker prilikom generiranja izraza funkcije CalculateExpression, ako izraz za naručivanje sadrži polja koja se ne mogu koristiti u grupiranju, zamjenjuje funkciju CalculateExpression on NULL.

Opcije

Vrsta: Linija. Izraz koji se vrednuje.

Vrsta: Linija. Sadrži naziv grupiranja u čijem kontekstu treba procijeniti izraz. Ako se kao ime grupisanja koristi prazan niz, proračun će se izvršiti u kontekstu trenutnog grupisanja. Ako se kao naziv grupe koristi string GeneralTotal, izračunavanje će se izvršiti u kontekstu ukupnog zbroja. U suprotnom, proračun će se izvršiti u kontekstu nadređene grupe sa istim imenom.

Na primjer:

Zbroj(Prodaja.Ukupan promet)/Izračunaj("Zbroj(Prodaja.Ukupan promet)", "Ukupno")

U ovom primjeru, rezultat će biti omjer zbroja po polju Sales.AmountTurnover grupisanje zapisa na zbir istog polja u cijelom izgledu;

Vrsta: Linija. Parametar može imati sljedeće vrijednosti:

· Ukupno ukupno— izraz će se izračunati za sve grupne zapise.

· Hijerarhija— izraz će se procijeniti za roditeljski hijerarhijski zapis, ako ga postoji, i za cijelo grupisanje, ako ne postoji roditeljski hijerarhijski zapis.

· Grupisanje— izraz će biti procijenjen za trenutni zapis grupnog grupisanja.

· GroupingNonResource— kada se izračunava funkcija za grupni zapis prema resursima, izraz će se izračunati za prvi grupni zapis originalnog grupiranja.

Prilikom izračunavanja funkcije IzračunajIzraz() sa značenjem GroupingNonResource za grupne zapise koji nisu grupirani prema resursima, funkcija se izračunava na isti način kao što bi se izračunala da je vrijednost parametra jednaka vrijednosti Grupisanje.

Graditelj rasporeda sastava podataka, kada generira raspored sastava podataka prilikom izlaza polja resursa pomoću kojeg se vrši grupisanje u izgled, postavlja izraz u izgled koji se izračunava pomoću funkcije IzračunajIzraz() , što označava parametar GroupingNonResource. Za druge resurse, uobičajeni izrazi resursa se stavljaju u grupiranje resursa.

Vrsta: Linija. Označava od kojeg zapisa treba početi fragment, u kojem se agregatne izrazne funkcije treba izračunati i iz kojeg zapisa treba dobiti vrijednosti polja izvan agregatnih funkcija. Vrijednost može biti jedna od sljedećih:

· Prvo

· Posljednji (Posljednji)

· Prethodno

· Sljedeće (Sljedeće)

· Current

· LimitingValue(granična vrijednost) LimitingValue

Vrsta: Linija. Označava na koji zapis treba nastaviti fragment, u kojem treba izračunati agregatne funkcije izraza. Vrijednost može biti jedna od sljedećih:

· Prvo. Potrebno je pribaviti prvi zapis grupisanja. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak od početka grupiranja. Rezultirajuća vrijednost mora biti cijeli broj veći od nule. Na primjer, First(3) - primanje trećeg zapisa od početka grupisanja.

Ako je prvi zapis izvan grupisanja, onda se smatra da nema zapisa. Na primjer, ako postoje 3 zapisa, a želite da dobijete First(4), onda se smatra da nema zapisa.

· Posljednji (Posljednji). Morate dobiti posljednji zapis o grupisanju. Nakon riječi u zagradama možete odrediti izraz čiji će se rezultat koristiti kao pomak od kraja grupisanja. Rezultirajuća vrijednost mora biti cijeli broj veći od nule. Na primjer, Last(3) - primanje trećeg zapisa sa kraja grupe.

Ako je posljednji zapis izvan grupisanja, smatra se da nema zapisa. Na primjer, ako postoje 3 zapisa, a želite dobiti Last(4), onda se smatra da nema zapisa.

· Prethodno. Morate dobiti prethodni zapis o grupisanju. Nakon riječi u zagradama, možete odrediti izraz čiji će se rezultat koristiti kao pomak u odnosu na trenutni grupni zapis. Na primjer, Previous(2) - dobijanje prethodnog iz prethodnog zapisa.

Ako prethodni zapis ide dalje od grupisanja (na primjer, za drugi zapis grupisanja morate dobiti Previous(3)), tada se dobija prvi zapis grupisanja.

Prilikom preuzimanja prethodnog zapisa za zbroj grupiranja, smatra se da je dobijen prvi zapis.

· Sljedeće (Sljedeće). Morate dobiti sljedeći zapis grupisanja. Nakon riječi u zagradama, možete odrediti izraz čiji će se rezultat koristiti kao pomak naprijed od trenutnog grupnog zapisa. Na primjer, Next(2) - dobivanje sljedećeg iz sljedećeg zapisa.

Ako sljedeći zapis ide dalje od grupiranja, smatra se da zapisa nema. Na primjer, ako postoje 3 unosa, a treći unos prima Next() , tada se smatra da nema unosa.

Kada se primi sljedeći zapis za ukupno grupisanje, smatra se da nema zapisa.

· Current. Morate dobiti trenutni rekord.

Prilikom preuzimanja za zbir grupiranja, dobiva se prvi zapis.

· LimitingValue(granična vrijednost). Potreba da se dobije zapis po navedenoj vrijednosti. Posle reči LimitingValue u zagradama treba da naznačite izraz sa čijom vrednošću želite da pokrenete fragment, prvo polje za redosled.

Prvi zapis čija je vrijednost polja za redoslijed veća ili jednaka navedenoj vrijednosti će biti vraćena kao zapis. Na primjer, ako se polje Period koristi kao polje za naručivanje, a ima vrijednosti 01.01.2010., 01.02.2010., 03.01.2010., a želite da dobijete LimitingValue(DatumVrijeme(2010, 1, 15)), tada će biti primljen zapisnik sa datumom 01.02.2010.

Vrsta: Linija. Navodi izraze, odvojene zarezima, koji opisuju pravila uređenja. Ako nije navedeno, tada se poredak izvodi na isti način kao i za grupisanje za koje se izraz procjenjuje. Nakon svakog izraza možete odrediti ključnu riječ Dob(za naručivanje uzlaznim redoslijedom), Silazno(za redoslijed u opadajućem redoslijedu) i Auto-order(za redoslijed referentnih polja prema poljima po kojima želite poredati referentni objekt). Riječ Auto-order može se koristiti kao sa riječju Dob, tako i sa riječju Silazno.

Vrsta: Linija. Isto kao parametar Sortiranje. Koristi se za organiziranje hijerarhijskih zapisa. Ako nije navedeno, graditelj izgleda generira redoslijed prema redoslijedu navedenom u parametru Sortiranje.

Vrsta: Linija. Određuje pravilo za određivanje prethodnog ili sljedećeg zapisa u slučaju da postoji nekoliko zapisa s istom vrijednošću:

· Odvojeno označava da se niz uređenih zapisa koristi za određivanje prethodnog i sljedećeg zapisa. Zadana vrijednost.

· Zajedno označava da su prethodni i sljedeći zapisi određeni na osnovu vrijednosti izraza za naručivanje.

Na primjer, ako je rezultirajući niz poredan po datumu:

datum Puno ime Značenje
1 1. januara 2001

Ivanov M.

10
2 2. januara 2001 Petrov S. 20
3 3. januara 2001 Sidorov R. 30
4 04. januara 2001 Petrov S. 40

Odvojeno, To:

§ prethodni unos za unos 3 će biti unos 2.

Current, Current(prema tome, parametri Počni I Kraj), tada će se za zapis 2 ovaj fragment sastojati od jednog zapisa 2. Izraz će biti jednak 20.

Ako je vrijednost parametra Zajedno, To:

§ prethodni unos za unos 3 će biti unos 1.

§ ako je fragment proračuna definisan kao Current, Current(prema tome, parametri Počni I Kraj), tada će se za zapis 2 ovaj fragment sastojati od zapisa 2 i 3. Izraz CalculateExpression("Sum(Value)", Current, Current) biće jednako 50.

Kada specificirate vrijednost parametra jednaku Zajedno, u parametrima Počni I Kraj ne možete specificirati pomak za pozicije Prvi, posljednji, prethodni, sljedeći.

CalculateExpression("Sum(SumTurnover)", "Prvi", "Trenutni")

Ako želite da dobijete vrednost grupisanja u prethodnom redu, možete koristiti sledeći izraz:

CalculateExpression("Ocijena", "Prethodno")

Lista novo funkcije:

CalculateExpressionWithGroupArray(,) -

Funkcija vraća niz, čiji svaki element sadrži rezultat evaluacije izraza za grupisanje prema navedenom polju.

CalculateExpressionWithGroupValueTable(,) -

Funkcija vraća tablicu vrijednosti, čiji svaki red sadrži rezultat evaluacije izraza za grupisanje prema navedenom polju

ValueFilled() - Vraća Tačno ako je vrijednost drugačija od zadane vrijednosti ovog tipa, osim NULL, osim prazne reference, osim Undefined. Booleove vrijednosti se provjeravaju za NULL vrijednosti. Stringovi se provjeravaju na odsustvo znakova koji nisu razmak

Format(, ) - Primite formatirani niz proslijeđene vrijednosti. Niz formata je postavljen u skladu sa nizom formata sistema 1C:Enterprise.

Podniz(, , ) - Ova funkcija je dizajnirana da izdvoji podniz iz niza.

Dužina linije() - Funkcija je dizajnirana da odredi dužinu niza. Parametar je string izraz

Linija() - Ako je niz proslijeđen kao parametar, funkcija vraća string koji sadrži string reprezentacije svih elemenata niza, odvojene znakovima ";". Ako je tablica vrijednosti proslijeđena kao parametar, funkcija vraća niz koji sadrži nizove reprezentacija svih redova tablice vrijednosti, s prikazom ćelija svakog reda odvojenim znakovima ";", a redovima novim redom karakter. Ako je string reprezentacija elementa prazna, tada se prikazuje string umjesto njegovog prikaza.

Najbolji članci na ovu temu