Računalniki Windows Internet

Kako nastaviti obdobje v shemi sestave podatkov. Na sistemu za shranjevanje izdelamo poročilo z določeno frekvenco

Pri izdelavi poročil v sistemu za nadzor dostopa je pogosto treba na obrazcu za poročilo prikazati izbor obdobja, tako da vam ni treba ročno vnašati datumov, ampak izberite s seznama standardnih obdobij, kot je npr.: “Leto” , »Mesec«, »Teden« itd. Za parametre tipa Datum lahko podate le »Začetek tega leta, mesec itd.«, vendar »Konec« ni na voljo.

Stvar je v tem, da je od podatkovnih vrst na voljo le vrsta »Standardni začetni datum«, želim pa tudi »Standardni končni datum«.

Obstaja način, kako se temu izogniti.

  1. Ustvarimo nov parameter, poimenujmo ga »Pika«
  2. Ta parameter nastavite na vrsto "Standardno obdobje"
  3. V polju “Expression” parametrov “Start of Period” in “End of Period”, ki se uporabljata v zahtevi, nastavite izraze “ &Obdobje.Začetni datum" in " &Obdobje.Končni datum«.

Vendar obstaja majhna subtilnost. Če v poizvedbi uporabimo navidezne tabele, bo poročilo najverjetneje prenehalo delovati in prikazalo se bo sporočilo o napaki, kot je »Napaka pri obdelavi pogleda, neujemanje tipa, številka parametra ...«.

Da bi se temu izognili, morate odstraniti vse parametre navidezne tabele.

In jih dodajte v tabele na zavihku »Sestava podatkov«.

Da bodo parametri prikazani v nastavitvah hitrega poročila, omogočimo ustrezno zastavico za parametre poročila.

Zdaj je izbor obdobja na obrazcu za poročilo videti takole.

Ta članek obravnava nekatere značilnosti nastavitve obdobja pri uporabi sistema za sestavljanje podatkov (DCS), težave, ki nastanejo zaradi razlik v konceptu obdobja med običajnim uporabnikom in sistemom 1C, ter predlaga načine za njihovo rešitev. .
Večina poročil, ki so razvita s sistemom za sestavo podatkov (DCS), od uporabnika zahteva, da vnese obdobje, za katero bo izdelano poročilo. Praviloma je v ACS vnos obdobja organiziran preko parametrov z uporabo naslednje konstrukcije, glej. Slika 1 Ta način vnosa obdobja velja za "klasičen", opisan je v članku o ITS in drugi literaturi, posvečeni razvoju v 1C, zato ga vzemimo za osnovo. Vzemimo za primer preprosto zahtevo, ki prejme vse dokumente Prodaja blaga in storitev za dano obdobje, glej Slika 2 Pri uporabi tega poročila uporabnik nastavi obdobje s parametri, glej. Slika 3 Zdi se, da je vse pravilno ... VENDAR obstaja majhna težava:

Stvar je v tem, da velika večina uporabnikov obdobje "razume" drugače, kot ga "razume" 1C, primeri:
1). Razmislimo Slika 3
Z vidika uporabnika obdobje ni določeno, torej NEOMEJENO, torej naj bi bili v poročilo vključeni VSI dokumenti brez datumske omejitve.
"Z vidika" sistema 1C je parameter-obdobje nastavljen in ... obe njegovi meji sta enaki 01.01.0001 in v poročilo bodo vključeni samo dokumenti s praznim datumom, kar v praksi pomeni ne bo vključen niti en dokument.
2). Razmislimo Slika 4
Z vidika uporabnika mora poročilo vključevati vse dokumente od datuma 28.01.2010.
»Z vidika« 1C bo obdobje 28.01.2010 – 01.01.0001 povzročilo izjemo.

Seveda lahko poskusite uporabniku razložiti, zakaj poročilo ne prikazuje dokumentov, ki jih pričakuje, in kako je obdobje predstavljeno z "vida" 1C, vendar je to nehvaležna naloga in je tudi narobe. Dober program mora biti najprej uporabniku prijazen, saj program obstaja za uporabnika in ne obratno, zato boste morali 1C "naučiti", da razume obdobje, kot ga razume uporabnik, in sicer:
1). Začetek obdobja in konec obdobja nista navedena -> vsi dokumenti.
2). Določen je le Začetek obdobja –> vsi dokumenti od Začetka obdobja
3). Poleg tega bomo preverili, da je Konec obdobja >= Začetek obdobja, in če to ne drži, bomo domnevali, da Konec obdobja ni naveden, tj. 2).
Na podlagi zgoraj navedenega bo izraz za parameter Končni datum videti takole:

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) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

Končna oblika naše zasnove izbire obdobja je prikazana v Slika 5

Nekatere funkcije nastavitve obdobja v sistemu za nadzor dostopa.

Večina poročil, ki so razvita s sistemom za sestavo podatkov (DCS), od uporabnika zahteva, da vnese obdobje, za katero bo izdelano poročilo.

Praviloma je v ACS vnos obdobja organiziran prek parametrov z uporabo naslednje konstrukcije, glej. Ta način vnosa obdobja velja za "klasičen", opisan je v članku o ITS in drugi literaturi, posvečeni razvoju v 1C, tako da vzemimo za osnovo. Vzemimo za primer preprosto zahtevo, ki prejme vse dokumente Prodaja blaga in storitev za dano obdobje, glej

Pri uporabi tega poročila uporabnik nastavi obdobje s parametri, glej Zdi se, da je vse pravilno ..., VENDAR obstaja majhna težava:

Stvar je v tem, da velika večina uporabnikov obdobje "razume" drugače, kot ga "razume" 1C, primeri:

Z vidika uporabnika obdobje ni določeno, torej NEOMEJENO, torej naj bi bili v poročilo vključeni VSI dokumenti brez datumske omejitve.

"Z vidika" sistema 1C je parameter-obdobje nastavljen in ... obe njegovi meji sta enaki 01.01.0001 in v poročilo bodo vključeni samo dokumenti s praznim datumom, kar v praksi pomeni ne bo vključen niti en dokument.

Z vidika uporabnika mora poročilo vključevati vse dokumente od datuma 28.01.2010.

»Z vidika« 1C bo obdobje 28.01.2010 - 01.01.0001 povzročilo izjemo.

Seveda lahko poskusite uporabniku razložiti, zakaj poročilo ne prikazuje dokumentov, ki jih pričakuje, in kako je obdobje predstavljeno z "vida" 1C, vendar je to nehvaležna naloga in je tudi narobe. Dober program mora biti najprej uporabniku prijazen, saj program obstaja za uporabnika in ne obratno, zato boste morali 1C "naučiti", da razume obdobje, kot ga razume uporabnik, in sicer:

1). Začetek obdobja in konec obdobja nista navedena -> vsi dokumenti.

2). Določen je le Začetek obdobja -> vsi dokumenti od Začetka obdobja

3). Poleg tega bomo preverili, da je Konec obdobja >= Začetek obdobja, in če to ne drži, bomo domnevali, da Konec obdobja ni naveden, tj. 2).

Na podlagi zgoraj navedenega je izraz za parameter Končni datum:

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

POTEM DATETIME(3999;12;31)

KDAJ &Obdobje. Končni datum<&Период.ДатаНачала

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

&Obdobje.Končni datum

Končna oblika naše zasnove izbire obdobja je prikazana v

Opomba: ta mehanizem za nastavitev parametrov je namenjen starejšim platformam 1C 8.1 in 8.2 (in konfiguracijam, ki tečejo pod njihovim nadzorom); starejše različice platforme 1C imajo vgrajene mehanizme za nadzor praznih parametrov in ni potrebe po uporabi mehanizma opisano v tem članku, poleg tega Na nekaterih različicah platforme 1C so možne napake in nepravilno delovanje.

Torej, začnimo.

Za poenostavitev razumevanja primera bomo gradili na enem preprostem krožnem akumulacijskem registru.

V mojem primeru je to akumulacijski register "Računovodstvo nedokončane proizvodnje".

Na primer, njegove parametre bomo navedli togo (ne z mehkim nalaganjem parametrov na sistem za nadzor dostopa):

Upoštevajte, da je frekvenca navidezne tabele »Record«.

Toda, kot je navedeno zgoraj, potrebujemo obdobje v smislu periodičnosti, zato predlagam, da izračunate polje »Obdobje« na naslednji način (ni zelo lepo, vendar nisem videl boljše možnosti):

Kot je razvidno iz posnetka zaslona, ​​se zahtevku posreduje parameter, ki ga uporabnik določi na obrazcu: Vrednost oštevilčenja "Frequency" - to oštevilčenje najdemo v skoraj vseh standardnih rešitvah.

Razpoložljive vrste bomo označili na zavihku »Parametri«:

S to nastavitvijo oblikujemo menstruacijo tako, da je vse lepo in prijetno za oko)

Tu so sami formati:

Mesec: DF="MMMM llll "y.""

Dan: DF = dd.MM.llll

Teden: DF = ""Teden od "dd.MM.llll"

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

Leto: DF = "llll "y.""

Desetletje: DF = ""Desetletje z "dd.MM.llll"

Polletje: DF = ""Polletje od" dd.MM.llll"

To je vse. Rezultat je čudovita slika:

Dober dan, dragi bralci spletnega dnevnika! V zadnjem članku smo izvedeli, zakaj so te vloge potrebne. In danes, v drugem iz te serije člankov, si bomo ogledali nastavitev vloge z lastnostjo »Pika«., in razmislite tudi o primerih zapolnjevanja teh vlog. Preostanek se izračuna s pomočjo polja z vlogo »Pika«. Tako kot na terenu z vlogo Dimenzija, o kateri bomo drugič. Torej, začnimo!

Ustvarimo novo poročilo:

  1. V konfiguratorju izberite točko menija "Datoteka" - "Novo" - "Zunanje poročilo".
  2. Kliknite na gumb "Odpri diagram sestave podatkov". V pogovornem oknu, ki se odpre, kliknite gumb »Dokončaj«.
  3. Sedaj pa ustvarimo a, ki dostopa do virtualne tabele »Akumulacijski registri«.
  4. Z desno miškino tipko kliknite vozlišče »Nabori podatkov« in izberite vrstico »Dodaj nabor podatkov - poizvedba«.
  5. Sedaj kliknite na gumb "Query Builder". Izberimo register akumulacije »Ostanki blaga v skladiščih in promet« (konfiguracija USP).
  6. Odprimo pogovorno okno »Parametri navidezne tabele« in označimo, da bo uporabljena periodičnost »Samodejno«, kar pomeni, da bo mogoče določiti več obdobij.

Zdaj pa konfigurirajmo izhodna polja. Naj bodo to naslednja polja: »Registrar«, »ObdobjeMesec«, »Nomenklatura«, »Kakovost« in podatki o bilanci. Dodajanje polja izvedemo z dvoklikom z levim gumbom miške na želeno polje ali z uporabo gumba “>”. Ko dodate polja, kliknite gumb »V redu«.

Upoštevajte, da je za nekatera polja vloga z lastnostjo »Pika« samodejno konfigurirana.

Poglejmo, kaj obstaja nastavitve vloge za lastnost »Period«.. Najprej je navedena serijska številka obdobja. Številčenje mora biti neprekinjeno, začenši od ena, od najnižjih obdobij do najvišjih, to pomeni, da bo najprej na primer številka vrstice, nato "Recorder", nato drugi dan, teden, mesec, četrtletje, leto.

Zato morajo biti polja, ki se pojavijo v naši zahtevi, oštevilčena. Upoštevajte, da imamo dve polji za obdobje - "Registrar" in "PeriodMonth". Nizko polje je »Registrar«, dodeljeno mu je eno, visoko polje pa je »PeriodMonth«, dodeljeno mu je dve. To si bomo podrobneje ogledali v naslednjem članku.

Nastavimo poročilo:

  1. Pojdimo na zavihek "Viri" in določimo vire našega poročila.
  2. Kliknite gumb »>>«, da izberete vsa polja za vire.
  3. Zdaj pa pojdimo na zavihek »Nastavitve« in ustvarimo nastavitev v obliki seznama.
  4. Kliknite gumb »Oblikovalnik nastavitev sestave podatkov« (gumb v obliki čarobne palice).
  5. Vrsta poročila: "Seznam". Kliknite gumb "Naprej".
  6. Nastavimo izpisna polja s klikom na gumb ">>". Razporedimo jih takole: "ObdobjeMesec", "Nomenklatura", "Kakovost", "Registrar".
  7. Kliknite gumb »Naprej« in nastavite združevanje. Združevanje bomo vzpostavili v naslednjem vrstnem redu: “ObdobjeMesec”, “Nomenklatura”, “Kakovost”. Skupina »Registrar« bo prikazana v obliki podrobnih zapisov.
  8. Kliknite gumb »V redu«.

Odprimo naše poročilo. Če zaženemo to poročilo, bomo pri prejemanju stanja videli nekatere funkcije. Če pozorno pogledate rezultat poročila, boste takoj opazili več napak. Zlasti iz neznanega razloga na samem začetku obdobja delovanja podjetja obstaja začetno stanje.

In ta napaka je povezana s funkcijo prejemanja bilanc od registrarja. Da bi bila ta stanja pravilno prikazana, morate v izhodna polja zahteve dodati še eno polje - polje "PeriodSecond". Za dodajanje polja “PeriodSecond” odprite poročilo v konfiguratorju in kliknite na gumb “Odpri shemo sestave podatkov”. Zdaj kliknite na gumb "Query Builder" in dodajte "PeriodSecond". V tem primeru bo polje »Registrar« ostalo prvo polje obdobja, »PeriodSecond« bo drugo, »PeriodMonth« pa bo tretje.

Čemu služi sekunda? Sistem za sestavo podatkov računsko izračuna stanja in za nedvoumno določitev položaja zapisovalnika na časovni osi ni dovolj povezava s samim zapisovalnikom, potrebna je tudi sekunda, torej datum tega zapisovalnika, in potem bo lahko sistem postavitve z izračunom pridobil pravilno ravnotežje. Če določimo pravilen vrstni red polj in znova generiramo poročilo, dobimo:

Sedaj ni ostalo ravnotežja za začetek dejavnosti po nomenklaturi Plinth. Nato za naslednje obdobje sovpada s končno bilanco, to pomeni, da vidimo resnično pravilen rezultat. Primer poročila lahko prenesete s spodnje povezave. Vam je bil članek všeč? Kaj je mogoče spremeniti, kaj dodati? O tem lahko delite v komentarjih!

Na koncu članka vam želim priporočiti brezplačno Anatolija Sotnikova. To je tečaj izkušenega programerja. Na ločeni osnovi vam bo pokazal, kako zgraditi poročila v sistemu za nadzor dostopa. Morate le pozorno poslušati in si zapomniti! Prejeli boste odgovore na naslednja vprašanja:
  • Kako ustvariti preprosto poročilo s seznamom?
  • Čemu so namenjeni stolpci Polje, Pot in Naslov na kartici »Polja«?
  • Kakšne so omejitve za polja postavitve?
  • Kako pravilno konfigurirati vloge?
  • Kakšne so vloge polj postavitve?
  • Kje lahko najdem zavihek za sestavo podatkov v poizvedbi?
  • Kako konfigurirati parametre v sistemu za nadzor dostopa?
  • Postane še bolj zanimivo ...
Morda ne bi smeli sami brskati po internetu v iskanju potrebnih informacij? Poleg tega je vse pripravljeno za uporabo. Samo začni! Vse podrobnosti o tem, kaj je v brezplačnih video lekcijah

Tukaj je ena od lekcij o označevanju sestave podatkov v poizvedbi: