Računala Windows Internet

1s skd izlaz dokumenata u razdoblju. Izrađujemo izvješće sa zadanom frekvencijom na skladištu

Dobar dan, dragi čitatelji blog stranice! U prošlom članku saznali smo čemu služe te uloge. A danas, u drugom iz ove serije članaka, pogledat ćemo postavljanje uloge sa svojstvom "Period"., te također razmotriti primjere ispunjavanja ovih uloga. Ostatak se izračunava za polje s ulogom "Razdoblje". Isto kao i za teren s ulogom “Dimenzija”, o kojem ćemo drugi put. Dakle, počnimo!

Kreirajmo novo izvješće:

  1. U konfiguratoru odaberite stavku izbornika "Datoteka" - "Novo" - "Vanjski izvještaj".
  2. Kliknite na gumb "Otvori shemu sastava podataka". U dijaloškom okviru koji se otvori kliknite gumb "Završi".
  3. Sada napravimo , koji se odnosi na virtualnu tablicu "Registri akumulacije".
  4. Pritisnimo desni klik Kliknite na čvor "Skupovi podataka" i odaberite redak "Dodaj skup podataka - Upit".
  5. Sada kliknite na gumb "Graditelj upita". Odaberimo registar akumulacije "Ostaci i promet robe u skladištima" (USP konfiguracija).
  6. Otvorimo dijaloški okvir "Opcije virtualne tablice" i označimo da će se koristiti frekvencija "Auto", odnosno da će biti moguće odrediti nekoliko razdoblja.

Sada postavimo izlazna polja. Neka to budu sljedeća polja: "Registar", "RazdobljeMjesec", "Nomenklatura", "Kvaliteta" i podaci o stanju. Dodavanje polja vrši se dvostrukim klikom lijeve tipke miša na željeno polje ili korištenjem tipke ">". Nakon što dodate polja, kliknite gumb U redu.

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

Razmotrimo što su postavke uloge za svojstvo "Period".. Najprije je naznačen serijski broj razdoblja. Numeracija bi trebala biti kontinuirana, počevši od jedne, od mlađih razdoblja do starijih, odnosno prvo će ići npr. broj reda, zatim "Matičar", zatim drugi dan, tjedan, mjesec, kvartal, godina.

Dakle, polja koja se pojavljuju u našem zahtjevu trebaju biti numerirana. Primijetite da imamo dva polja razdoblja - "Registar" i "RazdobljeMonth". Juniorsko polje je "Upisnik" dodjeljuje mu se jedan, a seniorsko polje "RazdobljeMjesec" dodjeljuje mu se dva. Pobliže ćemo pogledati sljedeći članak.

Postavimo naše izvješće:

  1. Idemo na karticu "Resursi" i definiramo resurse našeg izvješća.
  2. Kliknite na gumb ">>" za odabir svih polja za resurse.
  3. Sada idemo na karticu "Postavke" i stvorimo postavku u obliku popisa.
  4. Kliknite na gumb "Konstruktor postavki sastava podataka" (gumb u obliku čarobnog štapića).
  5. Vrsta izvješća: "Popis". Pritisnite gumb "Dalje".
  6. Postavite izlazna polja klikom na gumb ">>". Posložimo ih ovako: "RazdobljeMjesec", "Nomenklatura", "Kvaliteta", "Registar".
  7. Kliknite gumb "Dalje" i konfigurirajte grupiranje. Grupiranje će biti konfigurirano sljedećim redoslijedom: "RazdobljeMjesec", "Nomenklatura", "Kvaliteta". Grupacija "Registar" bit će prikazana kao detaljni zapisi.
  8. Pritisnite gumb "OK".

Otvorimo naše izvješće. Ako izvršimo ovo izvješće, vidjet ćemo neke značajke prilikom primanja stanja. Ako pažljivo pogledate rezultat izvješća, odmah možete primijetiti nekoliko pogrešaka. Konkretno, iz nekog razloga, na samom početku razdoblja aktivnosti tvrtke postoji početni saldo.

A ova je pogreška povezana s posebnošću primanja stanja od strane matičara. Kako bi ta stanja bila ispravno prikazana, potrebno je u izlazna polja zahtjeva dodati još jedno polje - polje "PeriodSecond". Za dodavanje polja "PeriodSecond", otvorite izvješće u Konfiguratoru, kliknite na gumb "Otvori shemu sastava podataka". Sada kliknite na gumb "Graditelj upita" i dodajte "PeriodSecond". U ovom slučaju, polje "Registar" će ostati prvo polje razdoblja, "PeriodSecond" će biti drugo, a "RazdobljeMonth" će biti treće.

Čemu služi sekunda? Sustav sastavljanja podataka izračunava ostatke računskim putem, a da bi se nedvosmisleno odredio položaj registratora na vremenskoj osi nije dovoljna referenca na sam snimač, potrebna je i sekunda, odnosno datum ovog snimača. , a tada će sustav sastava moći izračunati točan ostatak. Ako navedemo ispravan redoslijed polja i ponovno generiramo izvješće, dobivamo:

Sada više nema ravnoteže za početak djelovanja u nomenklaturi postolja. Nadalje, za iduće razdoblje to se poklapa s konačnim stanjem, odnosno vidimo stvarno ispravan rezultat. Primjer izvješća možete preuzeti na donjoj poveznici. Svidio vam se članak? Što se može promijeniti, što se može dodati? Slobodno ga podijelite u komentarima!

Na kraju članka želim vas savjetovati bez Anatolija Sotnikova. Ovo je tečaj iskusnog programera. On će vam zasebno pokazati kako sastaviti izvješća u ACS-u. Samo treba pažljivo slušati i zapamtiti! Dobit ćete odgovore na pitanja kao što su:
  • Kako napraviti jednostavno izvješće o popisu?
  • Čemu služe stupci Polje, Put i Naslov na kartici Polja?
  • Koja su ograničenja za polja izgleda?
  • Kako pravilno postaviti uloge?
  • Koje su uloge polja izgleda?
  • Gdje mogu pronaći karticu rasporeda podataka u upitu?
  • Kako konfigurirati parametre u SKD-u?
  • Dalje 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 je u besplatnim video tutorialima

Evo jedne od lekcija o kartici sastava podataka u upitu:



Prilikom izrade izvješća na ACS-u često postaje potrebno prikazati odabir razdoblja na obrascu izvješća, štoviše, tako da ne morate ručno popunjavati datume, već birati s popisa standardnih razdoblja, kao što su: "Godina", "Mjesec", "Tjedan" itd. . Za parametre tipa Datum možete odrediti samo "Početak ove godine, mjesec, itd.", ali "Kraj" nije naveden.

Činjenica je da je od tipova podataka dostupan samo tip "Standardni datum početka", ali želim i tip "Standardni datum završetka".

Postoji način da se ovo zaobiđe.

  1. Kreirajmo novi parametar, nazovimo ga "Period"
  2. Postavite ovaj parametar na tip "Standardno razdoblje"
  3. U polju "Izraz" parametara "StartPeriod" i "EndPeriod" koji se koriste u upitu postavite izraze " &Period.Datum početka" i " &Period.EndDate" odnosno.

Ali postoji mala suptilnost. Ako u upitu koristimo virtualne tablice, tada će najvjerojatnije izvješće prestati raditi i generirati će se poruka o pogrešci poput "Pogledaj pogrešku obrade, nepodudarnost tipa, broj parametra...".

Da biste to izbjegli, morate ukloniti sve parametre virtualnih tablica.

I dodajte ih u tablice na kartici Sastav podataka.

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

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

Neke značajke postavljanja razdoblja u ACS-u.

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 generirati.

U pravilu, u ACS-u je unos razdoblja organiziran kroz parametre, koristeći sljedeću konstrukciju, vidi Ova metoda unosa razdoblja smatra se "klasičnom", opisana je u članku o ITS-u i drugoj literaturi posvećenoj razvoju u 1C , pa uzmimo to kao osnovu. Razmotrimo, kao primjer, jednostavan upit koji dohvaća sve dokumente o prodaji roba/usluga za određeno razdoblje (vidi sl.

Prilikom korištenja ovog izvješća korisnik postavlja razdoblje kroz parametre, vidi. Čini se da je sve točno... ALI postoji mali problem:

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

Sa stajališta korisnika, rok nije postavljen, odnosno NIJE OGRANIČEN, odnosno SVI dokumenti bez datumskog ograničenja trebaju biti uključeni u izvješće.

"S gledišta" 1C sustava, parametar-razdoblje je postavljeno i ... obje njegove granice su jednake 01.01.

Sa stajališta korisnika, svi dokumenti počevši od 28.01.2010.

"Sa gledišta" 1C razdoblje 28.01.2010 - 01.01.0001 prouzročit će iznimku.

Naravno, možete pokušati objasniti korisniku zašto izvješće ne prikazuje dokumente koje očekuje vidjeti i kako je razdoblje predstavljeno sa "gledišta" 1C, ali to je nezahvalan zadatak i pogrešan. Dobar program trebao bi prije svega biti prikladan za korisnika, jer program postoji za korisnika, a ne obrnuto, stoga će biti potrebno "naučiti" 1C da razumije razdoblje kako ga korisnik razumije, naime:

jedan). StartPeriod i EndPeriod nisu postavljeni -> svi dokumenti.

2). Postavlja se samo StartPeriod -> svi dokumenti počevši od StartPeriod

3). Osim toga, provjerit ćemo je li Kraj razdoblja >= Početak razdoblja, a ako to nije točno, onda ćemo pretpostaviti da Kraj razdoblja nije postavljen, tj. 2).

Na temelju gore navedenog, izraz za parametar EndDate je:

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

ZATIM DATETIME(3999,12,31)

KADA &Razdoblje.Završni datum<&Период.ДатаНачала

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

&Razdoblje.Završni datum

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

Napomena: ovaj mehanizam za podešavanje parametara namijenjen je starim 1C 8.1 i 8.2 platformama (i konfiguracijama koje se izvršavaju pod njihovom kontrolom), starije verzije 1C platforme imaju ugrađene mehanizme za kontrolu nepopunjenih parametara i nema potrebe pribjegavati opisanom mehanizmu u ovom članku, osim na nekim verzijama platforme 1C, moguće su pogreške i netočan rad.

Dakle, počnimo.

Radi jednostavnosti, razumijevajući primjer, gradit ćemo na jednom jednostavnom registru obrnutog nakupljanja.

U mom slučaju to je registar akumulacije „Knjigovodstvo nedovršenih radova“.

Na primjer, strogo ćemo odrediti njegove parametre (ne mekim nametanjem parametara na ACS):

Imajte na umu da je frekvencija virtualne tablice "Snimanje".

Ali, kao što je gore navedeno, potrebno nam je razdoblje u kontekstu periodičnosti, pa predlažem da izračunamo polje "Razdoblje" na sljedeći način (nije baš lijepo, ali nisam vidio bolje opcije):

Kao što možete vidjeti na snimci zaslona, ​​zahtjevu se prosljeđuje parametar koji korisnik navodi na obrascu: Vrijednost nabrajanja "Periodičnost" - ovo nabrajanje je dostupno u gotovo svim standardnim rješenjima.

Njegove dostupne vrste navedene su na kartici "Parametri":

Ovom postavkom oblikujemo svoje razdoblje tako da sve bude lijepo i oku ugodno)

Evo stvarnih formata:

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

Dan: DF = dd.MM.gggg

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

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

Godina: DF = "gggg "y."

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

Pola godine: DF = "" Pola godine od" dd.MM.gggg"

To je sve. Kao rezultat, imamo prekrasnu sliku:

Ovaj članak govori o nekim od značajki postavljanja razdoblja pri korištenju sustava za sastavljanje podataka (ACS), problemima koji nastaju zbog razlike u konceptu razdoblja između prosječnog korisnika i 1C sustava, te 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 generirati. U pravilu se u ACS-u unos razdoblja organizira kroz parametre, koristeći sljedeću konstrukciju, vidi sl. 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 ćemo je uzeti kao osnovu. Razmotrimo, kao primjer, jednostavan upit koji dohvaća sve dokumente o prodaji roba/usluga za određeno razdoblje (vidi sl. sl.2 Kada koristi ovo izvješće, korisnik postavlja razdoblje kroz parametre vidi. sl.3Čini se da je sve točno ... ALI postoji mali problem:

Stvar je u tome da velika većina korisnika razdoblje "shvaća" drugačije nego što ga 1C "razumi", primjeri:
jedan). Smatrati sl.3
Sa stajališta korisnika, rok nije postavljen, odnosno NIJE OGRANIČEN, odnosno SVI dokumenti bez datumskog ograničenja trebaju biti uključeni u izvješće.
"S gledišta" 1C sustava, parametar-razdoblje je postavljeno i ... obje njegove granice su jednake 01.01.
2). Smatrati sl.4
Sa stajališta korisnika, svi dokumenti počevši od 28.01.2010.
"Sa gledišta" 1C razdoblje 28.01.2010 - 01.01.0001 prouzročit će iznimku.

Naravno, možete pokušati objasniti korisniku zašto izvješće ne prikazuje dokumente koje očekuje vidjeti i kako je razdoblje predstavljeno sa „gledišta“ 1C, ali to je nezahvalan zadatak i pogrešan. Dobar program bi prije svega trebao biti prikladan za korisnika, jer program postoji za korisnika, a ne obrnuto, stoga ćete morati "naučiti" 1C da razumije razdoblje kako ga korisnik razumije, naime:
jedan). StartPeriod i EndPeriod nisu postavljeni -> svi dokumenti.
2). Postavlja se samo StartPeriod –> svi dokumenti počevši od StartPeriod
3). Osim toga, provjerit ćemo je li Kraj razdoblja >= Početak razdoblja, a ako to nije točno, onda ćemo pretpostaviti da Kraj razdoblja nije postavljen, tj. 2).
Na temelju prethodnog, izraz za parametar EndDate izgledat će ovako:

ODABIR KADA &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 prikaz našeg dizajna odabira razdoblja prikazan je u sl.5