Postavite razdoblje formiranja u SCD. Izrađujemo izvješće s određenom učestalošću na sustavu pohrane

11.05.2020 Vijesti

Dobar dan, dragi čitatelji bloga! U prošlom smo članku naučili zašto su te uloge potrebne. A danas, u drugom od ove serije članaka, pogledat ćemo postavljanje uloge sa svojstvom “Period”., te također razmotrite primjere popunjavanja ovih uloga. Ostatak se izračunava korištenjem polja s ulogom “Period”. Baš kao i na terenu s ulogom “Dimenzije”, o kojoj ćemo drugom prilikom. Dakle, počnimo!

Kreirajmo novo izvješće:

  1. U konfiguratoru odaberite stavku izbornika “Datoteka” - “Novo” - “Vanjsko izvješće”.
  2. Kliknite na gumb "Otvori dijagram sastava podataka". U dijaloškom okviru koji se otvori kliknite gumb "Završi".
  3. Kreirajmo sada koji pristupa virtualnoj tablici "Registri akumulacije".
  4. Desnom tipkom miša kliknite čvor "Skupovi podataka" i odaberite redak "Dodaj skup podataka - upit".
  5. Sada kliknite na gumb "Query Builder". Izaberimo akumulacijski registar “Roba U Skladištima Ostaci I Promet” (USP konfiguracija).
  6. Otvorimo dijaloški okvir "Parametri virtualne tablice" i naznačimo da će se koristiti periodičnost "Auto", odnosno da će biti moguće odrediti nekoliko razdoblja.

Sada konfigurirajmo izlazna polja. Neka to budu sljedeća polja: “Matičar”, “RazdobljeMjesec”, “Nomenklatura”, “Kvaliteta” i podaci o stanjima. Dodavanje polja vrši se dvostrukim klikom lijeve tipke miša na željeno polje ili korištenjem tipke “>”. Nakon dodavanja polja, kliknite gumb "OK".

Imajte na umu da se za neka polja uloga sa svojstvom "Period" automatski konfigurira.

Pogledajmo što postoji postavke uloga za svojstvo "Period".. Prvo je naznačen redni broj razdoblja. Numeriranje mora biti kontinuirano, počevši od jedan, od najnižih razdoblja do najviših, odnosno prvo će biti, na primjer, broj retka, zatim "Recorder", zatim drugi, dan, tjedan, mjesec, kvartal, godina.

Stoga bi polja koja se pojavljuju u našem zahtjevu trebala biti numerirana. Primijetite da imamo dva polja razdoblja - "Matičar" i "RazdobljeMjesec". Nisko polje je “Matičar”, dodjeljuje mu se jedan, a visoko polje je “PeriodMjesec”, dodjeljuje mu se dva. To ćemo detaljnije pogledati u sljedećem članku.

Postavimo naše izvješće:

  1. Idemo na karticu "Resursi" i definiramo resurse našeg izvješća.
  2. Kliknite gumb “>>” za odabir svih polja za resurse.
  3. Sada idemo na karticu "Postavke" i stvorimo postavku u obliku popisa.
  4. Kliknite gumb "Dizajner postavki sastava podataka" (gumb u obliku čarobnog štapića).
  5. Vrsta izvješća: "Popis". Pritisnite gumb "Dalje".
  6. Konfigurirajmo izlazna polja klikom na gumb ">>". Rasporedimo ih ovako: “RazdobljeMjesec”, “Nomenklatura”, “Kvaliteta”, “Matičar”.
  7. Pritisnite gumb "Dalje" i postavite grupiranje. Grupiranje ćemo postaviti sljedećim redoslijedom: “RazdobljeMjesec”, “Nomenklatura”, “Kvaliteta”. Grupacija “Matičar” bit će prikazana u obliku detaljnih zapisa.
  8. Pritisnite gumb "OK".

Otvorimo naše izvješće. Ako pokrenemo ovo izvješće, vidjet ćemo neke značajke prilikom primanja stanja. Ako pažljivo pogledate rezultat izvješća, odmah ćete primijetiti nekoliko grešaka. Konkretno, iz nekog razloga, na samom početku razdoblja djelovanja tvrtke, postoji početna bilanca.

I ova je pogreška povezana sa značajkom primanja stanja od matičara. Kako bi se ta stanja ispravno prikazala potrebno je dodati još jedno polje izlaznim poljima zahtjeva - polje “PeriodSecond”. Za dodavanje polja “PeriodSecond” otvorite izvješće u konfiguratoru i kliknite na gumb “Otvori shemu sastava podataka”. Sada kliknite na gumb "Query Builder" i dodajte "PeriodSecond". U ovom slučaju, polje “Registrar” će ostati prvo polje razdoblja, “PeriodSecond” će biti drugo, a “PeriodMonth” će biti treće.

Čemu služi sekunda? Sustav za komponiranje podataka računski izračunava bilance, a za jednoznačno određivanje položaja snimača na vremenskoj osi nije dovoljan sam link na snimač, potrebna je i sekunda, odnosno datum ovog snimača, a tada će sustav rasporeda proračunom moći dobiti točnu ravnotežu. Ako navedemo točan redoslijed polja i ponovno generiramo izvješće, dobit ćemo:

Sada više nema ravnoteže za početak aktivnosti pod nomenklaturom Plinth. Zatim se za sljedeće razdoblje poklapa s konačnom bilansom, odnosno vidimo doista točan rezultat. Primjer izvješća možete preuzeti na donjoj poveznici. Svidio vam se članak? Što se može promijeniti, što dodati? Slobodno podijelite o tome u komentarima!

Na kraju članka želim vam preporučiti besplatnu od Anatolija Sotnikova. Ovo je tečaj iskusnog programera. Posebno će vam pokazati kako izraditi izvješća u sustavu kontrole pristupa. Samo treba pažljivo slušati i zapamtiti! Dobit ćete odgovore na sljedeća pitanja:
  • Kako izraditi jednostavno izvješće s popisom?
  • Čemu služe stupci Polje, Put i Naslov na kartici "Polja"?
  • Koja su ograničenja za polja izgleda?
  • Kako ispravno konfigurirati uloge?
  • Koje su uloge za polja izgleda?
  • Gdje mogu pronaći karticu sastava podataka u upitu?
  • Kako konfigurirati parametre u sustavu kontrole pristupa?
  • Postaje još zanimljivije...
Možda ne biste trebali sami pokušati surfati internetom u potrazi za potrebnim informacijama? Štoviše, sve je spremno za korištenje. Samo počnite! Sve pojedinosti o tome što se nalazi u besplatnim video lekcijama

Ovdje je jedna od lekcija o označavanju sastava podataka u upitu:



Ovaj članak govori o nekim značajkama postavljanja razdoblja pri korištenju sustava za sastavljanje podataka (DCS), problemima koji nastaju zbog razlika u konceptu razdoblja između običnog korisnika i 1C sustava, a također predlaže načine za njihovo rješavanje. .
Većina izvješća koja se razvijaju pomoću sustava za sastavljanje podataka (DCS) zahtijevaju od korisnika da unese razdoblje za koje će se izvješće izraditi. U pravilu je u ACS-u unos perioda organiziran kroz parametre, koristeći sljedeću konstrukciju, vidi. Sl. 1 Ova metoda unosa razdoblja smatra se "klasičnom", opisana je u članku o ITS-u i drugoj literaturi posvećenoj razvoju u 1C, pa je uzmimo kao osnovu. Uzmimo kao primjer jednostavan zahtjev koji prima sve dokumente Prodaja roba i usluga za određeno razdoblje, vidi sl.2 Prilikom korištenja ovog izvješća, korisnik postavlja razdoblje kroz parametre, vidi. sl.3Čini se da je sve točno... ALI postoji mali problem:

Stvar je u tome što velika većina korisnika "shvaća" razdoblje drugačije nego što ga "shvaća" 1C, primjeri:
1). Razmotrimo sl.3
Sa stajališta korisnika, razdoblje nije specificirano, odnosno NEOGRANIČENO, odnosno u izvješće trebaju biti uključeni SVI dokumenti bez datumskog ograničenja.
„S gledišta“ sustava 1C, parametar-razdoblje je postavljen i ... obje njegove granice su jednake 01.01.0001 i samo dokumenti s praznim datumom bit će uključeni u izvješće, što u praksi znači niti jedan dokument neće biti uključen.
2). Razmotrimo sl.4
Sa stajališta korisnika, izvješće treba uključivati ​​sve dokumente počevši od datuma 28.01.2010.
„S gledišta“ 1C, razdoblje 28.01.2010. – 01.01.0001. uzrokovat će iznimku.

Možete, naravno, pokušati objasniti korisniku zašto izvješće ne prikazuje dokumente koje očekuje vidjeti i kako je razdoblje prikazano s "gledišta" 1C, ali to je nezahvalan zadatak i je također pogrešno. Dobar program mora prije svega biti pogodan za korisnika, jer program postoji za korisnika, a ne obrnuto, stoga je potrebno "naučiti" 1C da razumije razdoblje onako kako ga korisnik razumije, naime:
1). Početak razdoblja i kraj razdoblja nisu navedeni -> svi dokumenti.
2). Naveden je samo početak razdoblja –> svi dokumenti počevši od početka razdoblja
3). Osim toga, provjerit ćemo da je kraj razdoblja >= početak razdoblja, a ako to nije točno, tada ćemo pretpostaviti da kraj razdoblja nije naveden, tj. 2).
Na temelju gore navedenog, izraz za parametar Datum završetka izgledat će ovako:

SELECT WHEN &Period.EndDate=DATETIME(1,1,1) THEN DATETIME(3999,12,31,23,59,59) ELSE SELECT WHEN &Period.EndDate<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

Konačni oblik našeg dizajna odabira razdoblja prikazan je u sl.5

Prilikom izrade izvješća na sustavu kontrole pristupa često se javlja potreba da se na obrascu izvješća prikaže odabir razdoblja, tako da ne morate ručno unositi datume, već birate s popisa standardnih razdoblja, kao što su: “Godina” , “Mjesec”, “Tjedan” itd. Za parametre tipa Datum možete navesti samo "Početak ove godine, mjesec itd.", ali "Kraj" nije naveden.

Stvar je u tome da je od vrsta podataka dostupna samo vrsta "Standardni datum početka", ali želim i "Standardni datum završetka".

Postoji način da se to zaobiđe.

  1. Kreirajmo novi parametar, nazovimo ga "Period"
  2. Postavite ovaj parametar na vrstu "Standardno razdoblje"
  3. U polju “Izraz” parametara “Početak razdoblja” i “Kraj razdoblja”, koji se koriste u zahtjevu, postavite izraze “ &Razdoblje.Datum početka" i " &Razdoblje.Datum završetka”.

Ali postoji mala suptilnost. Ako u upitu koristimo virtualne tablice, izvješće će najvjerojatnije prestati raditi i prikazat će se poruka o pogrešci poput "Pogreška obrade prikaza, neusklađenost tipa, broj parametra...".

Da biste to izbjegli, morate ukloniti sve parametre virtualne tablice.

I dodajte ih u tablice na kartici "Sastav podataka".

Kako bi se parametri prikazali u postavkama brzog izvješća, omogućimo odgovarajuću zastavicu za parametre izvješća.

Sada odabir razdoblja na obrascu izvješća izgleda ovako.

Neke značajke postavljanja razdoblja u sustavu kontrole pristupa.

Većina izvješća koja se razvijaju pomoću sustava za sastavljanje podataka (DCS) zahtijevaju od korisnika da unese razdoblje za koje će se izvješće izraditi.

U pravilu, u ACS-u, unos razdoblja je organiziran kroz parametre, koristeći sljedeću konstrukciju, vidi. Ova metoda unosa razdoblja smatra se "klasičnim"; opisana je u članku o ITS-u i drugoj literaturi posvećenoj razvoju u 1C, tako da uzmimo to kao osnovu. Uzmimo kao primjer jednostavan zahtjev koji prima sve dokumente Prodaja roba i usluga za određeno razdoblje, vidi

Kada koristi ovo izvješće, korisnik postavlja razdoblje kroz parametre, vidi Čini se da je sve točno..., ALI postoji mali problem:

Stvar je u tome što velika većina korisnika "shvaća" razdoblje drugačije nego što ga "shvaća" 1C, primjeri:

Sa stajališta korisnika, razdoblje nije specificirano, odnosno NEOGRANIČENO, odnosno u izvješće trebaju biti uključeni SVI dokumenti bez datumskog ograničenja.

„S gledišta“ sustava 1C, parametar-razdoblje je postavljen i ... obje njegove granice su jednake 01.01.0001 i samo dokumenti s praznim datumom bit će uključeni u izvješće, što u praksi znači niti jedan dokument neće biti uključen.

Sa stajališta korisnika, izvješće treba uključivati ​​sve dokumente počevši od datuma 28.01.2010.

“Sa gledišta” 1C, razdoblje 01/28/2010 - 01/01/0001 uzrokovat će iznimku.

Možete, naravno, pokušati objasniti korisniku zašto izvješće ne prikazuje dokumente koje očekuje vidjeti i kako je razdoblje prikazano s "gledišta" 1C, ali to je nezahvalan zadatak i je također pogrešno. Dobar program bi prije svega trebao biti jednostavan za korištenje, jer program postoji za korisnika, a ne obrnuto, stoga ćete morati "naučiti" 1C da razumije razdoblje onako kako ga korisnik razumije, naime:

1). Početak razdoblja i kraj razdoblja nisu navedeni -> svi dokumenti.

2). Naveden je samo početak razdoblja -> svi dokumenti počevši od početka razdoblja

3). Osim toga, provjerit ćemo da je kraj razdoblja >= početak razdoblja, a ako to nije točno, tada ćemo pretpostaviti da kraj razdoblja nije naveden, tj. 2).

Na temelju gore navedenog, izraz za parametar Datum završetka je:

WHEN &Period.EndDate=DATETIME(1,1,1)

ZATIM DATETIME(3999;12;31)

KADA &Razdoblje. Datum završetka<&Период.ДатаНачала

ZATIM DATETIME(3999;12;31) DATETIME(3999,12,31,23,59,59)

&Razdoblje. Datum završetka

Konačni oblik našeg dizajna odabira razdoblja prikazan je u

Napomena: ovaj mehanizam za postavljanje parametara namijenjen je starijim platformama 1C 8.1 i 8.2 (i konfiguracijama koje se izvode pod njihovom kontrolom); starije verzije 1C platforme imaju ugrađene mehanizme za kontrolu praznih parametara i nema potrebe posezati za mehanizmom opisano u ovom članku, dodatno Na nekim verzijama platforme 1C moguće su pogreške i neispravan rad.

Dakle, počnimo.

Radi jednostavnosti, razumijevanja primjera, gradit ćemo na jednom jednostavnom cirkulirajućem registru akumulacije.

U mom slučaju to je akumulacijski registar "Računovodstvo nedovršene proizvodnje".

Na primjer, naznačit ćemo njegove parametre kruto (ne mekim nametanjem parametara na sustav kontrole pristupa):

Imajte na umu da je učestalost virtualnog stola "Snimanje".

Ali, kao što je gore navedeno, potrebno nam je razdoblje u smislu periodičnosti, pa predlažem izračunavanje polja "Period" na sljedeći način (nije baš lijepo, ali nisam vidio nijednu bolju opciju):

Kao što se može vidjeti na snimci zaslona, ​​zahtjevu se prosljeđuje parametar koji korisnik specificira na obrascu: Vrijednost enumeracije "Frequency" - ova enumeracija se nalazi u gotovo svim standardnim rješenjima.

Naznačit ćemo njegove dostupne vrste na kartici "Parametri":

Ovom postavkom oblikujemo svoju mjesečnicu tako da sve bude lijepo i ugodno oku)

Evo samih formata:

Mjesec: DF="MMMM yyyy "y.""

Dan: DF = dd.MM.gggg

Tjedan: DF = ""Tjedan od "dd.MM.gggg"

Četvrtina: DF = "do "četvrtina" yyyy "y.""

Godina: DF = "yyyy "y.""

Desetljeće: DF = ""Desetljeće s "dd.MM.gggg"

Polugodište: DF = ""Polugodište od" dd.MM.gggg"

To je sve. Rezultat je prekrasna slika: