itthon / Windows oktatóanyagok / 1s skd szabványos időszak példa. Adott gyakorisággal készítünk jelentést a raktárról

1s skd szabványos időszak példa. Adott gyakorisággal készítünk jelentést a raktárról

Jó napot kívánok a blogoldal kedves olvasói! Az utolsó cikkben megtudtuk, mire valók ezek a szerepek. És ma, e cikksorozat második részében megvizsgáljuk a szerep beállítása az "Időszak" tulajdonsággal, és vegyen példákat e szerepek betöltésére. A maradékot a rendszer az "Időszak" szerepkörrel rendelkező mezőre számítja ki. Ugyanaz, mint a „Dimenzió” szerepkörrel rendelkező mezőnynél, 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 séma megnyitása" gombra. A megnyíló párbeszédpanelen kattintson a "Befejezés" gombra.
  3. Most hozzuk létre a -t, amely a "Felhalmozási nyilvántartások" virtuális táblára utal.
  4. Kattintson a jobb gombbal az "Adatkészletek" csomópontra, és válassza az "Addset hozzáadása - lekérdezés" sort.
  5. Most kattintson a "Lekérdezéskészítő" gombra. Válasszuk ki a "Raktárokban lévő áruk maradványai és forgalma" (USP konfiguráció) felhalmozási regisztert.
  6. Nyissuk meg a "Virtuális tábla beállításai" párbeszédablakot, és jelezzük, hogy az "Auto" frekvenciát használjuk, vagyis több időszakot is megadhatunk.

Most állítsuk be a kimeneti mezőket. Legyen 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.

Gondoljuk át, melyek azok 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 fiatalabb időszakoktól a régebbiekig, azaz először megy például a sorszám, majd a „nyilvántartó”, majd a második nap, hét, hónap, negyedév, év.

Így a kérésünkben előforduló mezőket számozni kell. Figyeljük meg, hogy két időszaki mezőnk van: "Regisztrátor" és "Időszakhónap". A junior mező a "Regisztrátor" egy van hozzárendelve, a felső mező pedig az "Időszak hónap", amelyhez kettő van hozzárendelve. A következő cikket közelebbről megvizsgáljuk.

Á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 konstruktora" gombra (varázspálca formájában).
  5. Jelentés típusa: "Lista". Nyomjuk meg a "Tovább" gombot.
  6. Állítsa 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 konfigurálja a csoportosítást. A csoportosítás a következő sorrendben történik: "Időszak hónap", "Nómenklatúra", "Minőség". A "Regisztrátor" csoportosítás részletes rekordként jelenik meg.
  8. Nyomjuk meg az "OK" gombot.

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

És ez a hiba az egyenlegek regisztrátor általi fogadásának sajátosságához kapcsolódik. Ahhoz, hogy ezek az egyenlegek helyesen jelenjenek meg, még egy mezőt kell hozzáadnia a kérelem kimeneti mezőihez - a "PeriodSecond" mezőhöz. A "PeriodSecond" mező hozzáadásához nyissa meg a jelentést a Configuratorban, 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 a maradványokat, és ahhoz, hogy egyértelműen meghatározza a rögzítő helyzetét az időtengelyen, nem elegendő magára a rögzítőre való hivatkozás, kell egy másodperc is, vagyis ennek a rögzítőnek a dátuma. , és akkor a kompozíciós rendszer képes lesz kiszámítani a helyes maradékot. Ha megadjuk a mezők helyes sorrendjét, és újra elkészítjük a jelentést, a következőt kapjuk:

Most már nem maradt egyensúly a tevékenységek megkezdésére a Plinth nómenklatúrában. Továbbá a következő időszakra 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 kommentben!

A cikk végén Anatolij Szotnyikovtól mentesen szeretnék tanácsot adni. Ez a tanfolyam egy tapasztalt programozótól. Ő itt van külön alap megmutatja, hogyan készíthet jelentéseket SKD-ben. Csak figyelmesen kell hallgatni és emlékezni! Válaszokat kapsz olyan kérdésekre, mint pl.
  • Hogyan készítsünk egyszerű listajelentést?
  • Mire szolgál a Mező, Elérési út és Cím oszlop a Mezők lapon?
  • Milyen korlátozások vonatkoznak az elrendezési mezőkre?
  • Hogyan állítsuk be megfelelően a szerepeket?
  • Mi a szerepe az elrendezési mezőknek?
  • Hol találom az adatelrendezés lapot egy lekérdezésben?
  • Hogyan konfigurálhat paramétereket az SKD-ben?
  • További érdekesség...
Talán nem szabad megpróbálnia saját maga szörfölni az interneten a szükséges információk keresésére? Ráadásul minden készen áll a használatra. Csak kezdd el! Az ingyenes oktatóvideókban található összes részlet

Íme az egyik lecke a lekérdezések adatösszetétel lapjáról:



Az ACS-re vonatkozó jelentések készítésekor gyakran szükségessé válik az időszak választásának megjelenítése a jelentési űrlapon, sőt, hogy a dátumokat ne kézzel kelljen kitölteni, hanem a listából kell kiválasztani. szabványos időszakok, mint például: „Év”, „Hónap”, „Hét” stb. A Dátum típusú paramétereknél csak az "Év eleje, hónap stb." adható meg, de a "Vége" nincs megadva.

Az a tény, 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átum” típust 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 "Normál időszak" típusúra
  3. A lekérdezésben használt "StartPeriod" és "EndPeriod" paraméterek "Expression" mezőjében állítsa be a " kifejezéseket &Period.StartDate" és " &Period.EndDate" sorrendben.

De van egy kis finomság. Ha a kérésben használjuk virtuális asztalok, akkor nagy valószínűséggel a jelentés leáll, és egy hibaüzenet jelenik meg, például „Feldolgozási hiba megtekintése, típushiba, paraméterszám...”.

Ennek elkerülése érdekében el kell távolítania a virtuális táblák összes paraméterét.

És adja hozzá őket a táblázatokhoz az Adatösszetétel lapon.

Annak érdekében, hogy a paraméterek megjelenjenek gyors beállítások jelentést, engedélyezze a megfelelő jelzőt a jelentés paramétereihez.

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 az ACS-ben.

Az adatösszeállítási rendszer (DCS) használatával készített jelentések többsége megköveteli a felhasználótól, hogy adja meg azt az időszakot, amelyre vonatkozóan 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 a periódusbeviteli módszer "klasszikusnak" tekinthető, le van írva az ITS-ről szóló cikkben és más, az 1C fejlesztéssel foglalkozó irodalomban. , tehát vegyük alapul. Vegyünk példaként egy egyszerű lekérdezést, amely az összes dokumentumot lekéri meghatározott időszak cm.

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ó szempontjából az időszak nincs beállítva, azaz NINCS KORLÁTOZOTT, vagyis MINDEN dátumhatár nélküli dokumentumot be kell vonni a jelentésbe.

Az 1C rendszer „szempontjából” a paraméter-periódus be van állítva, és ... mindkét határa 01.01.

A felhasználó szemszögéből a 2010.01.28-i dátumtól kezdődő összes dokumentumot szerepeltetni kell a jelentésben.

A "szempontból" 1C időszak 2010.01.28. és 0001.01.01. között kivételt jelent.

Természetesen megpróbálhatja elmagyarázni a felhasználónak, hogy a jelentés miért nem jeleníti meg azokat a dokumentumokat, amelyeket látni szeretne, és hogyan jelenik meg az időszak az 1C "szempontjából", de ez hálátlan feladat, és téves. Jó program mindenekelőtt kényelmesnek kell lennie a felhasználó számára, mert a program létezik a felhasználó számára, é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:

egy). StartPeriod és EndPeriod nincs beállítva -> minden dokumentum.

2). Csak a StartPeriod van beállítva -> az összes dokumentum a StartPeriodtól kezdve

3). Ezenkívül ellenőrizni fogjuk, hogy az Időszak vége >= Az Időszak kezdete, és ha ez nem igaz, akkor feltételezzük, hogy az Időszak vége nincs beállítva, pl. 2).

A fentiek alapján az EndDate paraméter kifejezése a következő:

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

AKKOR DATETIME(3999;12;31)

WHEN &Period.EndDate<&Период.ДатаНачала

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

&Period.EndDate

A korszakválasztási tervünk végső nézete a következőben látható

Megjegyzés: ez a paraméterbeállító mechanizmus a régi 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 a kitöltetlen paraméterek vezérlésére, és nincs szükség a leírt mechanizmusra. ebben a cikkben az 1C platform egyes verziói mellett hibák és helytelen munka is lehetséges.

Ez a cikk bemutatja az időszak beállításának néhány jellemzőjét az adatösszetételi rendszer (ACS) használatakor, az átlagos felhasználó és az 1C rendszer közötti időszak fogalmának különbségéből adódó problémákat, és javaslatokat tesz ezek megoldására. .
Az adatösszeállítási rendszer (DCS) használatával készített jelentések többsége megköveteli a felhasználótól, hogy adja meg azt az időszakot, amelyre vonatkozóan a jelentés készül. Általános szabály, hogy az ACS-ben a periódusbevitelt paraméterek segítségével szervezzük, a következő konstrukció segítségével, lásd az ábrát. 1. ábra Az időszak 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, ezért ezt fogjuk alapul venni. Tekintsünk példának egy egyszerű lekérdezést, amely lekéri az összes áru/szolgáltatás értékesítési bizonylatot egy adott időszakra vonatkozóan (lásd az ábrát). 2. ábra A jelentés használatakor a felhasználó beállítja az időszakot a paramétereken keresztül, 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:
egy). Fontolgat 3. ábra
A felhasználó szempontjából az időszak nincs beállítva, azaz NINCS KORLÁTOZOTT, vagyis MINDEN dátumhatár nélküli dokumentumot be kell vonni a jelentésbe.
Az 1C rendszer „szempontjából” a paraméter-periódus be van állítva, és ... mindkét határa 01.01.
2). Fontolgat 4. ábra
A felhasználó szemszögéből a 2010.01.28-i dátumtól kezdődő összes dokumentumot szerepeltetni kell a jelentésben.
A "szempontból" 1C időszak 2010.01.28. és 0001.01.01. között kivételt jelent.

Természetesen megpróbálhatja elmagyarázni a felhasználónak, hogy a jelentés miért nem jeleníti meg azokat a dokumentumokat, amelyeket látni szeretne, és hogyan jelenik meg az időszak az 1C „szempontjából”, de ez egy hálátlan feladat, és téves. A jó programnak mindenekelőtt kényelmesnek kell lennie a felhasználó számára, mert a program létezik a felhasználó számára, é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:
egy). StartPeriod és EndPeriod nincs beállítva -> minden dokumentum.
2). Csak a StartPeriod van beállítva –> a StartPeriodtól kezdődő összes dokumentum
3). Ezenkívül ellenőrizni fogjuk, hogy az Időszak vége >= Az Időszak kezdete, és ha ez nem igaz, akkor feltételezzük, hogy az Időszak vége nincs beállítva, pl. 2).
A fentiek alapján az EndDate 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) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

A korszakválasztási tervünk végső nézete a következőben látható 5. ábra

Szóval, kezdjük.

Az egyszerűség kedvéért a példa megértése érdekében egyetlen egyszerű fordított halmozási regiszterre építünk.

Esetemben ez a "Folyamatban lévő munka elszámolása" felhalmozási nyilvántartás.

Például a paramétereit mereven fogjuk megadni (nem a paraméterek lágy rákényszerítésével az ACS-re):

Vegye figyelembe, hogy a virtuális tábla gyakorisága "Record".

De amint fentebb megjegyeztük, szükségünk van az időszakra a periodicitás összefüggésében, 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 az 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 "Periodikus" felsorolás értéke - ez a felsorolás szinte minden szabványos megoldásban elérhető.

Rendelkezésre álló típusai a "Paraméterek" fülön láthatók:

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

Itt vannak a tényleges formátumok:

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

Nap: DF = nn.MM.yyyy

Hét: df = ""Hét kezdete:" nn.MM.yyyy "

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

Év: DF = "yyyy "y."

Évtized: DF = ""Évtized óta" nn.MM.yyyy "

Fél év: DF = "" Fél év óta" nn.hh.yyyy"

Ez minden. Ennek eredményeként egy csodálatos képünk van: