itthon / Internet / Adott gyakorisággal készítünk jelentést a raktárról. Adott gyakorisággal készítünk jelentést az skd 1s skd standard periódus példáján

Adott gyakorisággal készítünk jelentést a raktárról. Adott gyakorisággal készítünk jelentést az skd 1s skd standard periódus példáján

Hozzunk létre egy jelentést egyetlen lekérdezési adatkészlettel:

KIVÁLASZTÁS A Raktárban lévő áruk maradványai. Raktár, Áru Raktárban Maradványok. Nómenklatúra, áruk Raktárban Maradványok. Mennyiségegyenleg a felhalmozási nyilvántartásból. áruk a raktárakban. Maradványok(&SajátDátum ,) AS ÁrukA Raktárban Maradványok

Most menjünk a paraméterek fülre, és nézzük meg, hogy a rendszer a &MyDate paraméterünkön kívül létrehozta a &Period paramétert is.
Az időszakok vizuális megfigyelése érdekében hozzuk létre a fő jelentési űrlapot, és helyezzünk el egy táblázat mezőt az adatokkal: BeállításokComposer.Settings.DataParameters

Mentse el a jelentést, és nyissa meg a vállalatban. A paramétereket tartalmazó táblázat mezőben csak az &Időszak paraméter jelenik meg:

Ennek megfelelően ezen paraméter bármilyen változtatása nem hozza meg a kívánt eredményt.

Miért nem érhető el a &MyDate? Természetesen, mert a paraméterek fülön van egy jelölőnégyzet Elérhetőségi korlátozás.

Eltávolítjuk a dawt. Most Elérhető opciók mindkettőt látjuk. Csak a jelentés létrehozásakor fogjuk látni, hogy a jelentés az &Időszak paraméterre válaszol, és nem a &Saját dátumra.

BAN BEN ezt a példát A legegyszerűbb, ha a lekérdezésben a &MyDate paramétert átnevezi &Időpontra, és eléri a kívánt eredményt. De lehet, hogy olyan kérése van, amely már használta a &Period paramétert, vagy vallási meggyőződése nem teszi lehetővé ennek a paraméternek a használatát, mindenesetre a következőképpen oldhatja meg a problémát:

KIVÁLASZTÁS A Raktárban lévő áruk maradványai. Raktár, Áru Raktárban Maradványok. Nómenklatúra, áruk Raktárban Maradványok. Mennyiségegyenleg a felhalmozási nyilvántartásból. áruk a raktárakban. Maradványok((&SajátDátum) ,) AS ÁrukRaktárokban Maradványok

UPD felhasználótól Lehurrogás:

A "standard" (rendszer által hozzáadott) paraméterek használatakor a fő probléma az, hogy több virtuális tábla használatakor a jelentésben, ha ez a paraméter definiálva van, akkor minden más esetben ennek értéke kerül felhasználásra a "saját" helyett.

Mondok egy példát:

SELECT EmployeesSP.Employee, EmployeesSP.ReasonChangeState, EmployeesSP.Period, EmployeesSPOtherDate.Period AS Period2, EmployeesSPOtherDate.ReasonChangeState AS Indokolás alkalmazott) AS WorkersSP BAL CSATLAKOZÁS Információk nyilvántartása.Szervezetek alkalmazottai.Az Utolsó(&MásDátum ,) AS alkalmazottakSPOtherDate szelet BY EmployeesSP.Employee = EmployeesSPOtherDate.Employee

A második allekérdezésben a „standard” PERIOD paraméter értéke lesz szelet dátuma paraméter, és nem az OtherDate érték.

Ez a "hiba" akkor is megfigyelhető, ha a második részlekérdezés a második adatkészlethez kerül, és már az ACS segítségével összekapcsolva van. A második lekérdezésben az "ADDDATE(&Period, MONTH, -1)" kifejezést használó opció sem fog működni, a hónap nem lesz kivonva. De a "Period" paraméter átnevezése a lekérdezésben például "FirstDate"-re megoldja ezt a problémát.

Egyébként pontosan ugyanaz a probléma jelentkezik virtuális asztalok felhalmozási és számviteli nyilvántartások, amelyeket például a forgalom kimutatására használnak. Ott a rendszer hozzáadja a "StartPeriod" és "EndPeriod" paramétereket.
Tehát még egy kicsit összetettebb kérések esetén is célszerű kikapcsolni a "standard időszakok" elérhetőségét és használatát.

Ez a cikk tárgyalja az adatösszetevő rendszer (ACS) használatakor az időszak beállításának néhány jellemzőjét, azokat a problémákat, amelyek az átlagos felhasználó és az 1C rendszer közötti időszak fogalmának különbségéből adódnak, é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 az 1C fejlesztéssel kapcsolatos egyéb szakirodalomban le van írva, ezért ezt fogjuk alapul venni. Vegyünk példaként egy egyszerű lekérdezést, amely az összes dokumentumot lekéri adott időszak cm. 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:
1). 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. 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:
1). 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őrizzük, 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, azaz. 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égeket):

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 "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 a következőtől:" 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:

Az ACS-re vonatkozó jelentések készítésekor gyakran szükségessé válik egy időszakválasztás megjelenítése a jelentési űrlapon, ráadásul azért, hogy ne kézzel kelljen dátumot kitöltenie, hanem a szabványos időszakok listájából kell kiválasztani, pl.: "É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 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 "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.

Ahhoz, hogy a paraméterek megjelenjenek a gyorsjelentés beállításaiban, engedélyezze 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.