Állítsa be a formálási időszakot az SCD-ben. A tárolórendszeren meghatározott gyakorisággal készítünk jelentést

11.05.2020 hírek

Jó napot kívánok a blogoldal kedves olvasói! Az utolsó cikkben megtudtuk, miért van szükség ezekre a szerepekre. És ma, e cikksorozat második részében megvizsgáljuk szerepkör beállítása az „Időszak” tulajdonsággal, és vegyen példákat e szerepek betöltésére. A maradékot az „Időszak” szerepkörű mező segítségével számítja ki. Akárcsak a terepen a „Dimenzió” szerepkörrel, amiről máskor is szó lesz. Szóval, kezdjük!

Hozzunk létre egy új jelentést:

  1. A Konfigurátorban válassza ki a „Fájl” – „Új” – „Külső jelentés” menüpontot.
  2. Kattintson az „Adatösszetételi diagram megnyitása” gombra. A megnyíló párbeszédpanelen kattintson a „Befejezés” gombra.
  3. Most hozzunk létre egy, amely hozzáfér a "Felhalmozási regiszterek" virtuális táblához.
  4. Kattintson a jobb gombbal az „Adatkészletek” csomópontra, és válassza az „Add Set – Query” sort.
  5. Most kattintson a „Lekérdezéskészítő” gombra. Válasszuk ki a „GoodsInWarehousesRemainsAndTurnover” felhalmozási regisztert (USP konfiguráció).
  6. Nyissuk meg a „Virtual Table Parameters” párbeszédablakot, és jelezzük, hogy az „Auto” periodicitást használjuk, azaz több periódus megadására is lehetőség nyílik.

Most állítsuk be a kimeneti mezőket. Legyenek ezek a következő mezők: „Regisztrátor”, „IdőszakHónap”, „Nómenklatúra”, „Minőség” és egyenlegadatok. A mező hozzáadásához kattintson duplán a bal egérgombbal a kívánt mezőre, vagy használja a „>” gombot. A mezők hozzáadása után kattintson az „OK” gombra.

Kérjük, vegye figyelembe, hogy egyes mezőkben a „Period” tulajdonságú szerepkör automatikusan konfigurálva van.

Nézzük, mi létezik szerepkör beállításai az „Időszak” tulajdonsághoz. Először az időszak sorszámát kell feltüntetni. A számozásnak folyamatosnak kell lennie, egytől kezdve, a legalacsonyabb időszakoktól a legmagasabbig, azaz először lesz például a sorszám, majd a „Rögzítő”, majd a második, nap, hét, hónap, negyedév, év.

Így a kérésünkben megjelenő mezőket számozni kell. Figyeljük meg, hogy két időszak mezőnk van: "Regisztrátor" és "Időszakhónap". Az alsó mező a „Regisztrátor”, hozzá van rendelve egy, a felső mező pedig a „Időszak hónap”, ehhez kettő van hozzárendelve. Ezzel a következő cikkben részletesebben is foglalkozunk.

Állítsuk össze a jelentésünket:

  1. Lépjünk az „Erőforrások” fülre, és határozzuk meg a jelentésünk forrásait.
  2. Kattintson a „>>” gombra az összes erőforrás mező kiválasztásához.
  3. Most menjünk a „Beállítások” fülre, és hozzunk létre egy beállítást lista formájában.
  4. Kattintson az „Adatösszetétel-beállítások tervezője” gombra (a gomb varázspálca formájában).
  5. Jelentés típusa: "Lista". Kattintson a „Tovább” gombra.
  6. Állítsuk be a kimeneti mezőket a ">>" gombra kattintva. Rendezzük őket így: „IdőszakHónap”, „Nómenklatúra”, „Minőség”, „Regisztrátor”.
  7. Kattintson a „Tovább” gombra, és állítsa be a csoportosítást. A csoportosítást a következő sorrendben fogjuk felállítani: „IdőszakHónap”, „Nómenklatúra”, „Minőség”. A „Regisztrátor” csoportosítás részletes nyilvántartások formájában jelenik meg.
  8. Kattintson az „OK” gombra.

Nyissuk meg a beszámolónkat. Ha ezt a jelentést futtatjuk, akkor látni fogunk néhány funkciót az egyenlegek fogadásakor. Ha alaposan megnézi a jelentés eredményét, azonnal számos hibát észlel. Valamilyen oknál fogva a vállalat tevékenységi időszakának legelején van egy kezdeti egyensúly.

És ez a hiba az egyenlegek regisztrátortól való fogadásának jellemzőjéhez kapcsolódik. Annak érdekében, hogy ezek az egyenlegek helyesen jelenjenek meg, hozzá kell adni egy további mezőt a kérelem kimeneti mezőihez - a „PeriodSecond” mezőt. A „PeriodSecond” mező hozzáadásához nyissa meg a jelentést a Konfigurátorban, és kattintson az „Adatösszetételi séma megnyitása” gombra. Most kattintson a „Query Builder” gombra, és adja hozzá a „PeriodSecond” elemet. Ebben az esetben a „Regisztrátor” mező marad az időszak első mezője, a „PeriodSecond” a második, a „PeriodMonth” pedig a harmadik.

Mire való a második? Az adatalkotó rendszer számítással számolja ki az egyenlegeket, és ahhoz, hogy egyértelműen meghatározza a rögzítő helyzetét az időtengelyen, nem elegendő magának a rögzítőnek a hivatkozása, szükség van egy másodpercre is, vagyis ennek a rögzítőnek a dátumára, és akkor az elrendezési rendszer számítással tudja majd elérni a helyes egyensúlyt. Ha megadjuk a mezők helyes sorrendjét, és újra elkészítjük a jelentést, akkor a következőt kapjuk:

Most már nem maradt egyensúly a Plinth nómenklatúra szerinti tevékenységek megkezdésére. Aztán a következő periódusra ez egybeesik a végső mérleggel, vagyis valóban korrekt eredményt látunk. Az alábbi linkről letölthet egy példajelentést. Tetszett a cikk? Mit lehet változtatni, mit lehet hozzáadni? Nyugodtan oszd meg róla kommentben!

A cikk végén szeretnék ajánlani egy ingyeneset Anatolij Szotnyikovtól. Ez a tanfolyam egy tapasztalt programozótól. Külön bemutatja, hogyan kell jelentéseket készíteni a beléptető rendszerben. Csak figyelmesen kell hallgatni és emlékezni! Az alábbi kérdésekre kap választ:
  • Hogyan készítsünk egyszerű listajelentést?
  • Mire szolgálnak a Mező, Elérési út és Cím oszlopok a „Mezők” lapon?
  • Milyen korlátozások vonatkoznak az elrendezési mezőkre?
  • Hogyan kell helyesen beállítani a szerepeket?
  • Mi a szerepe az elrendezési mezőknek?
  • Hol találom az adatösszetétel lapot egy lekérdezésben?
  • Hogyan kell konfigurálni a paramétereket a beléptető rendszerben?
  • Egyre érdekesebb lesz...
Talán nem szabad megpróbálnia saját maga az interneten szörfözni a szükséges információk keresésére? Ráadásul minden készen áll a használatra. Csak kezdd el! Minden részlet az ingyenes videoleckékről

Íme az egyik lecke az adatösszetétel lekérdezésben történő könyvjelzővel való megjelölésével kapcsolatban:



Ez a cikk bemutatja az időszak beállításának néhány jellemzőjét adatkompozíciós rendszer (DCS) használatakor, olyan problémákat, amelyek a hétköznapi felhasználó és az 1C rendszer közötti időszak fogalmának különbségei miatt merülnek fel, és javaslatokat tesz ezek megoldására. .
A legtöbb adatösszeállítási rendszer (DCS) használatával készült jelentés megköveteli a felhasználótól, hogy adja meg azt az időszakot, amelyre a jelentés készül. Általános szabály, hogy az ACS-ben a periódusbevitelt paramétereken keresztül szervezzük, a következő konstrukció segítségével, lásd. 1. ábra A periódus megadásának ez a módszere „klasszikusnak” tekinthető; az ITS-ről szóló cikkben és más, az 1C fejlesztéssel foglalkozó irodalomban le van írva, tehát vegyük alapul. Tekintsünk példának egy egyszerű kérést, amely megkapja az összes dokumentumot Áruk és szolgáltatások értékesítése egy adott időszakra vonatkozóan, ld. 2. ábra A jelentés használatakor a felhasználó a paramétereken keresztül állítja be az időszakot, lásd. 3. ábraÚgy tűnik, minden rendben van... DE van egy kis probléma:

A helyzet az, hogy a felhasználók túlnyomó többsége másként „érti” az időszakot, mint az 1C „érti”, példák:
1). Mérlegeljük 3. ábra
A felhasználó szemszögéből nézve az időszak nincs megadva, azaz KORLÁTOZTALAN, azaz MINDEN dátumkorlátozás nélküli dokumentum szerepeljen a jelentésben.
Az 1C rendszer „szempontjából” a paraméter-periódus be van állítva, és ... mindkét határa 01.01.0001, és csak az üres dátummal rendelkező dokumentumok kerülnek be a jelentésbe, ami a gyakorlatban azt jelenti, hogy egyetlen dokumentum sem kerül bele.
2). Mérlegeljük 4. ábra
A felhasználó szempontjából a jelentésnek tartalmaznia kell minden dokumentumot a 2010.01.28-tól kezdődően.
Az 1C „szempontjából” a 2010.01.28. – 0001.01.01. időszak jelent kivételt.

Természetesen megpróbálhatja elmagyarázni a felhasználónak, hogy a jelentés miért nem azokat a dokumentumokat jeleníti meg, amelyeket látni szeretne, és hogyan jelenik meg az időszak az 1C „szempontjából”, de ez egy hálátlan feladat, és szintén rossz. Jó program mindenekelőtt kényelmesnek kell lennie a felhasználó számára, mert a program a felhasználó számára létezik, és nem fordítva, ezért meg kell „tanítani” az 1C-t, hogy megértse az időszakot, ahogyan a felhasználó megérti, nevezetesen:
1). Az időszak kezdete és az időszak vége nincs megadva -> minden dokumentum.
2). Csak az Időszak eleje van megadva –> az Időszak elejétől kezdődő összes dokumentum
3). Ezenkívül ellenőrizni fogjuk, hogy az Időszak vége >= Időszak eleje, és ha ez nem igaz, akkor feltételezzük, hogy az Időszak vége nincs megadva, azaz. 2).
A fentiek alapján a Befejezés dátuma paraméter kifejezése így fog kinézni:

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

Korabeli válogatásunk végleges formája a képen látható 5. ábra

Beléptető rendszerről szóló jelentések készítésekor gyakran szükség van időszakválasztás megjelenítésére a jelentés űrlapon, így nem kell kézzel megadni a dátumokat, hanem a szabványos időszakok listájából kell kiválasztani, például: „Év” , „Hónap”, „Hét” stb. A Dátum típusú paramétereknél csak „Ez év eleje, hónap stb.” adható meg, de a „Vége” nincs megadva.

A helyzet az, hogy az adattípusok közül csak a „Normál kezdő dátum” típus érhető el, de szeretnék a „Szabványos befejezési dátumot” is.

Van mód ennek megkerülésére.

  1. Hozzunk létre egy új paramétert, nevezzük „időszaknak”
  2. Állítsa ezt a paramétert a „Szabványos időszak” típusra.
  3. A kérelemben használt „Időszak kezdete” és „Időszak vége” paraméterek „Kifejezés” mezőjében állítsa be a „ &Period.StartDate" és " &Period.End Date” sorrendben.

De van egy kis finomság. Ha virtuális táblákat használunk a lekérdezésben, akkor nagy valószínűséggel a jelentés leáll, és egy hibaüzenet jelenik meg, például „Hiba a nézet feldolgozása során, típushiba, paraméterszám...”.

Ennek elkerülése érdekében el kell távolítania az összes virtuális tábla paramétert.

És adja hozzá őket az „Adatösszetétel” lap táblázataihoz.

Ahhoz, hogy a paraméterek megjelenjenek a gyorsjelentés beállításaiban, engedélyezzük a megfelelő jelzőt a jelentés paramétereinél.

Most így néz ki az időszak kiválasztása a jelentés űrlapon.

Az időszak beállításának néhány jellemzője a beléptető rendszerben.

A legtöbb adatösszeállítási rendszer (DCS) használatával készült jelentés megköveteli a felhasználótól, hogy adja meg azt az időszakot, amelyre a jelentés készül.

Általános szabály, hogy az ACS-ben a periódusbevitelt paramétereken keresztül szervezik, a következő konstrukció segítségével, lásd: Ez az időszakbeviteli módszer „klasszikusnak” tekinthető; le van írva az ITS-ről szóló cikkben és más, az 1C fejlesztéssel foglalkozó irodalomban, így vegyük alapul. Tekintsünk példának egy egyszerű kérést, amely megkapja az összes dokumentumot Áruk és szolgáltatások értékesítése egy adott időszakra vonatkozóan, ld.

A jelentés használatakor a felhasználó beállítja az időszakot a paramétereken keresztül, lásd. Úgy tűnik, minden rendben van... DE van egy kis probléma:

A helyzet az, hogy a felhasználók túlnyomó többsége másként „érti” az időszakot, mint az 1C „érti”, példák:

A felhasználó szemszögéből nézve az időszak nincs megadva, azaz KORLÁTOZTALAN, azaz MINDEN dátumkorlátozás nélküli dokumentum szerepeljen a jelentésben.

Az 1C rendszer „szempontjából” a paraméter-periódus be van állítva, és ... mindkét határa 01.01.0001, és csak az üres dátummal rendelkező dokumentumok kerülnek be a jelentésbe, ami a gyakorlatban azt jelenti, hogy egyetlen dokumentum sem kerül bele.

A felhasználó szempontjából a jelentésnek tartalmaznia kell minden dokumentumot a 2010.01.28-tól kezdődően.

Az 1C „szempontjából” a 2010.01.28. - 0001.01.01. időszak jelent kivételt.

Természetesen megpróbálhatja elmagyarázni a felhasználónak, hogy a jelentés miért nem azokat a dokumentumokat jeleníti meg, amelyeket látni szeretne, és hogyan jelenik meg az időszak az 1C „szempontjából”, de ez egy hálátlan feladat, és szintén téves. Egy jó programnak mindenekelőtt felhasználóbarátnak kell lennie, mert a program a felhasználó számára létezik, és nem fordítva, ezért meg kell „tanítania” az 1C-t, hogy megértse az időszakot, ahogyan a felhasználó megérti, nevezetesen:

1). Az időszak kezdete és az időszak vége nincs megadva -> minden dokumentum.

2). Csak az Időszak eleje van megadva -> az Időszak elejétől kezdődő összes dokumentum

3). Ezenkívül ellenőrizni fogjuk, hogy az Időszak vége >= Időszak eleje, és ha ez nem igaz, akkor feltételezzük, hogy az Időszak vége nincs megadva, azaz. 2).

A fentiek alapján a Befejezés dátuma paraméter kifejezése a következő:

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

AKKOR DATETIME(3999;12;31)

MIKOR &Időszak.Befejező dátum<&Период.ДатаНачала

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

&Period.Befejezés dátuma

Korabeli válogatásunk végleges formája a képen látható

Megjegyzés: ez a paraméter beállítási mechanizmus a régebbi 1C 8.1 és 8.2 platformokhoz (és az ezek irányítása alatt futó konfigurációkhoz) készült; az 1C platform régebbi verziói beépített mechanizmusokkal rendelkeznek az üres paraméterek vezérlésére, és nincs szükség a mechanizmus igénybevételére A cikkben leírtak szerint az 1C platform egyes verzióiban hibák és helytelen működés lehetséges.

Szóval, kezdjük.

Az egyszerűség kedvéért a példa megértése érdekében egyetlen egyszerű, keringő felhalmozási regiszterre építünk.

Az én esetemben ez a "Folyamatban lévő könyvelés" felhalmozási nyilvántartás.

Például a paramétereit mereven fogjuk jelezni (nem a paraméterek lágy rákényszerítésével a beléptető rendszerre):

Kérjük, vegye figyelembe, hogy a virtuális tábla gyakorisága „Rekord”.

De, mint fentebb megjegyeztük, szükségünk van az időszakra a periodicitás szempontjából, ezért javaslom az „Időszak” mező kiszámítását a következő módon (nem túl szép, de nem láttam jobb lehetőséget):

Amint a képernyőképen látható, egy paramétert adnak át a kérésnek, amelyet a felhasználó az űrlapon ad meg: A "Frekvencia" felsorolás értéke - ez a felsorolás szinte minden szabványos megoldásban megtalálható.

Az elérhető típusokat a „Paraméterek” fülön jelezzük:

Ezzel a beállítással úgy formázzuk az időszakunkat, hogy minden szép és kellemes legyen a szemnek)

Itt vannak maguk a formátumok:

Hónap: DF="MMMM yyyy "y."

Nap: DF = nn.MM.yyyy

Hét: DF = ""Hét a következőtől: "nn.MM.yyyy"

Negyed: DF = "negyed" yyyy "y."

Év: DF = "yyyy "y."

Évtized: DF = "" Évtized a következővel: "nn.MM.yyyy"

Félév: DF = ""Fél év a következőtől:" nn.MM.yyyy"

Ez minden. A kimenet egy csodálatos kép: