Raportează în SCD cum să setezi perioada. Parametru standard & Perioada și probleme în utilizare

Câteva caracteristici de setare a perioadei în sistemul de control acces.

Majoritatea rapoartelor care sunt dezvoltate folosind un sistem de compoziție a datelor (DCS) solicită utilizatorului să introducă perioada pentru care va fi creat raportul.

De regulă, în ACS, intrarea perioadei este organizată prin parametri, folosind următoarea construcție, a se vedea. Această metodă de introducere a perioadei este considerată „clasică”; este descrisă într-un articol despre ITS și altă literatură dedicată dezvoltării în 1C, deci hai sa o luam ca baza. Să luăm ca exemplu o cerere simplă care primește toate documentele Vânzări de Bunuri și Servicii pentru o anumită perioadă, vezi

Când folosește acest raport, utilizatorul setează perioada prin parametri, vezi.Totul pare să fie corect...,DAR există o mică problemă:

Chestia este că marea majoritate a utilizatorilor „înțeleg” perioada altfel decât „înțelege” 1C, exemple:

Din punctul de vedere al utilizatorului, nu este specificată perioada, adică NELIMITAT, adică TOATE documentele fără restricții de dată ar trebui incluse în raport.

„Din punctul de vedere” al sistemului 1C, parametrul-perioada este setat și... ambele limite ale acestuia sunt egale cu 01.01.0001 și în raport vor fi incluse doar documentele cu data goală, ceea ce în practică înseamnă nu va fi inclus un singur document.

Din punctul de vedere al utilizatorului, raportul trebuie să cuprindă toate documentele începând cu data de 28.01.2010.

„Din punct de vedere” al 1C, perioada 28/01/2010 - 01/01/0001 va face excepție.

Puteți, desigur, să încercați să explicați utilizatorului de ce raportul nu afișează documentele pe care se așteaptă să le vadă și cum este prezentată perioada din „punctul de vedere” al 1C, dar aceasta este o sarcină ingrată și este este de asemenea greșit. Un program bun ar trebui, în primul rând, să fie ușor de utilizat, deoarece programul există pentru utilizator, și nu invers, de aceea va trebui să „învățați” 1C să înțeleagă perioada așa cum o înțelege utilizatorul, și anume:

1). Începutul perioadei și Sfârșitul perioadei nu sunt specificate -> toate documentele.

2). Se specifica doar Inceputul Perioadei -> toate documentele incepand de la Inceputul Perioadei

3). În plus, vom verifica că Sfârșitul perioadei >= Începutul perioadei, iar dacă acest lucru nu este adevărat, atunci vom presupune că Sfârșitul perioadei nu este specificat, adică. 2).

Pe baza celor de mai sus, expresia pentru parametrul Data de încheiere este:

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

APOI DATETIME(3999,12,31)

WHEN &Period.Data de încheiere<&Период.ДатаНачала

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

&Perioada.Data de încheiere

Forma finală a designului nostru de selecție a perioadei este afișată în

Notă: acest mecanism de setare a parametrilor este destinat platformelor mai vechi 1C 8.1 și 8.2 (și configurațiilor care rulează sub controlul acestora); versiunile mai vechi ale platformei 1C au mecanisme încorporate pentru controlul parametrilor gol și nu este nevoie să recurgeți la mecanism descrise în acest articol, în plus Pe unele versiuni ale platformei 1C sunt posibile erori și funcționare incorectă.

Să creăm un raport cu un set de date de interogare:

SELECTARE PRODUSE ÎN DEPOZITE Rămas. Depozit, MărfuriÎnDepoziteRămăși. Nomenclator, produse în depozite rămase. CantitateBalance DIN Registrul de acumulare. ProductsInWarehouses. Rămășițe(&MyDate,) AS ProductsInWarehousesRemains

Acum să mergem la fila parametri și să vedem că sistemul, pe lângă parametrul nostru &MyDate, a creat și parametrul &Period.
Pentru a monitoriza vizual perioadele, vom crea un formular de raport principal și vom plasa un câmp de tabel cu date pe el: Setări Composer.Settings.DataParameters

Să salvăm raportul și să-l deschidem în întreprindere. În câmpul tabel cu parametri, este afișat doar parametrul &Period:

În consecință, orice modificare a acestui parametru nu va da rezultatul dorit.

De ce parametrul &MyDate nu este disponibil? Desigur, pentru că în fila de parametri are bifată o casetă de selectare Limitare de disponibilitate.

Debifați caseta. Acum le vedem pe ambele în parametrii disponibili. Numai la generarea raportului vom vedea că raportul reacționează la parametrul &Period, și nu la &MyDate.

În acest exemplu, cel mai simplu lucru de făcut este să redenumiți parametrul &MyDate din cererea la &Period și să obțineți rezultatul dorit. Dar poate aveți o interogare în care parametrul &Period a fost deja folosit, sau opiniile dumneavoastră religioase nu vă permit să utilizați acest parametru, în orice caz, puteți rezolva problema astfel:

SELECTARE PRODUSE ÎN DEPOZITE Rămas. Depozit, MărfuriÎnDepoziteRămăși. Nomenclator, produse în depozite rămase. CantitateBalance DIN Registrul de acumulare. ProductsInWarehouses. Rămășițe((&MyDate) ,) AS ProductsInWarehousesRemains

UPD de la utilizator Boo:

Principala problemă când se utilizează parametri „standard” (adăugați de sistem) este că atunci când se utilizează mai multe tabele virtuale într-un raport, dacă acest parametru este definit, valoarea lui va fi folosită în toate celelalte cazuri în locul celor „proprii”.

Hai sa-ti dau un exemplu:

SELECTE EmployeesSP.Employee, WorkersSP.ReasonChangesConditions, WorkersSP.Period, WorkersSPAnotherDate.Period AS Period2, WorkersSPAnotherDate.ReasonChangesStates AS ReasonChangesCondition2 FROM RegisterInformation.EmployeesLast,Angajații &Angajați.AS.Period este JV CONEXIUNEA STÂNGA Register of Information.Employees of Organizations.Slice of the Latest(&OtherDate ,) AS EmployeesSPAnotherDate BY EmployeesSP.Employee = EmployeesSPAnotherDate.Employee

În a doua subinterogare, valoarea parametrului PERIOD „standard” va fi utilizată ca parametru al datei secțiunii, mai degrabă decât valoarea OtherDate.

Această „glitch” va fi observată chiar dacă a doua subinterogare este scoasă la al doilea set de date și conectată folosind ACS. Opțiunea care folosește o expresie precum „ADDATE(&Period, MONTH, -1)” în a doua solicitare, de asemenea, nu va funcționa, luna nu va fi scăzută. Dar redenumirea parametrului „Perioada” din cerere la, de exemplu, „FirstDate” rezolvă această problemă.

Apropo, exact aceeași problemă se observă cu tabele virtuale de acumulare și registre contabile, folosite pentru a obține, de exemplu, cifra de afaceri. Acolo sistemul adaugă parametrii „Începutul perioadei” și „Sfârșitul perioadei”.
Deci, în cazul solicitărilor de complexitate chiar ușor crescută, este logic să dezactivați disponibilitatea și utilizarea „perioadelor standard”.

O zi bună, dragi cititori ai blogului! În ultimul articol am aflat de ce sunt necesare aceste roluri. Și astăzi, în al doilea din această serie de articole, ne vom uita la configurarea unui rol cu ​​proprietatea „Perioad”.și luați în considerare, de asemenea, exemple de ocupare a acestor roluri. Restul se calculează folosind câmpul cu rolul „Perioadă”. La fel ca în teren cu rolul „Dimensiune”, despre care vom vorbi altădată. Deci, să începem!

Să creăm un nou raport:

  1. În Configurator, selectați elementul de meniu „Fișier” - „Nou” - „Raport extern”.
  2. Faceți clic pe butonul „Deschide diagrama compoziției datelor”. În caseta de dialog care se deschide, faceți clic pe butonul „Terminare”.
  3. Acum să creăm un care accesează tabelul virtual „Registre de acumulare”.
  4. Faceți clic dreapta pe nodul „Seturi de date” și selectați linia „Adăugați set de date - Interogare”.
  5. Acum faceți clic pe butonul „Query Builder”. Să selectăm registrul de acumulare „GoodsInWarehousesRemainsAndTurnover” (configurație USP).
  6. Să deschidem dialogul „Parametrii tabelului virtual” și să indicăm că va fi utilizată frecvența „Auto”, adică va fi posibilă specificarea mai multor perioade.

Acum să configuram câmpurile de ieșire. Acestea sunt următoarele câmpuri: „Registrar”, „PeriodLună”, „Nomenclatură”, „Calitate” și informații despre solduri. Adăugarea unui câmp se face făcând dublu clic pe butonul stâng al mouse-ului pe câmpul dorit sau folosind butonul „>”. După adăugarea câmpurilor, faceți clic pe butonul „OK”.

Vă rugăm să rețineți că pentru unele câmpuri este configurat automat un rol cu ​​proprietatea „Perioadă”.

Să ne uităm la ce există setări de rol pentru proprietatea „Perioad”.. În primul rând, este indicat numărul de serie al perioadei. Numerotarea trebuie să fie continuă, începând de la unu, de la cele mai mici perioade la cele mai mari, adică mai întâi va fi, de exemplu, numărul rândului, apoi „Înregistrator”, apoi a doua, zi, săptămână, lună, trimestru, an.

Astfel, câmpurile care apar în cererea noastră ar trebui numerotate. Observați că avem două câmpuri de perioadă - „Registrar” și „PeriodMonth”. Câmpul inferior este „Registrar”, îi este atribuit unul, iar câmpul superior este „PeriodMonth”, îi este atribuit doi. Vom analiza asta mai detaliat în articolul următor.

Să stabilim raportul nostru:

  1. Să mergem la fila „Resurse” și să definim resursele raportului nostru.
  2. Faceți clic pe butonul „>>” pentru a selecta toate câmpurile pentru resurse.
  3. Acum să mergem la fila „Setări” și să creăm o setare sub forma unei liste.
  4. Faceți clic pe butonul „Data composition settings designer” (butonul sub forma unei baghete magice).
  5. Tip raport: „Lista”. Faceți clic pe butonul „Următorul”.
  6. Să configuram câmpurile de ieșire făcând clic pe butonul „>>”. Să le aranjam astfel: „PeriodMonth”, „Nomenclatură”, „Calitate”, „Registrar”.
  7. Faceți clic pe butonul „Următorul” și configurați gruparea. Vom configura gruparea în următoarea ordine: „PerioadaLună”, „Nomenclatură”, „Calitate”. Gruparea „Registrar” va fi afișată sub formă de înregistrări detaliate.
  8. Faceți clic pe butonul „OK”.

Să deschidem raportul nostru. Dacă rulăm acest raport, vom vedea câteva caracteristici atunci când primim solduri. Dacă te uiți cu atenție la rezultatul raportului, vei observa imediat câteva erori. În special, din anumite motive, chiar la începutul perioadei de activitate a companiei, există un echilibru inițial.

Și această eroare este legată de caracteristica de a primi solduri de la registrator. Pentru ca aceste solduri să fie afișate corect, trebuie să adăugați încă un câmp la câmpurile de ieșire ale cererii - câmpul „PeriodSecond”. Pentru a adăuga câmpul „PeriodSecond”, deschideți raportul în Configurator și faceți clic pe butonul „Deschideți schema de compunere a datelor”. Acum faceți clic pe butonul „Query Builder” și adăugați „PeriodSecond”. În acest caz, câmpul „Registrar” va rămâne primul câmp al perioadei, „PeriodSecond” va fi al doilea, iar „PeriodMonth” va fi al treilea.

Pentru ce este o secundă? Sistemul de compunere a datelor calculează soldurile prin calcul și, pentru a determina fără ambiguitate poziția înregistratorului pe axa timpului, legătura cu înregistratorul în sine nu este suficientă; este necesară și o secundă, adică data acestui înregistrator, iar apoi sistemul de layout va putea obține echilibrul corect prin calcul. Dacă specificăm ordinea corectă a câmpurilor și generăm din nou raportul, vom obține:

Acum nu a mai rămas niciun echilibru pentru începerea activităților sub nomenclatura Plintei. Apoi pentru perioada următoare coincide cu bilanţul final, adică vedem un rezultat cu adevărat corect. Puteți descărca un exemplu de raport de la linkul de mai jos. Ți-a plăcut articolul? Ce se poate schimba, ce se poate adăuga? Simțiți-vă liber să împărtășiți despre asta în comentarii!

La finalul articolului vreau să vă recomand unul gratuit de la Anatoly Sotnikov. Acesta este un curs de la un programator experimentat. Vă va arăta separat cum să creați rapoarte în sistemul de control al accesului. Trebuie doar să ascultați cu atenție și să vă amintiți! Veți primi răspunsuri la următoarele întrebări:
  • Cum se creează un raport simplu de listă?
  • Pentru ce sunt coloanele Câmp, Cale și Titlu din fila „Câmpuri”?
  • Care sunt limitările pentru câmpurile de aspect?
  • Cum se configurează corect rolurile?
  • Care sunt rolurile câmpurilor de aspect?
  • Unde pot găsi fila de compoziție a datelor într-o interogare?
  • Cum se configurează parametrii în sistemul de control acces?
  • Devine și mai interesant...
Poate că nu ar trebui să încerci să navighezi singur pe internet în căutarea informațiilor necesare? În plus, totul este gata de utilizare. Doar începeți! Toate detaliile despre ceea ce este în lecțiile video gratuite

Iată una dintre lecțiile despre marcarea compoziției datelor într-o interogare:



Acest articol discută unele dintre caracteristicile configurarii unei perioade atunci când se utilizează un sistem de compunere a datelor (DCS), probleme care apar din cauza diferențelor în conceptul de perioadă dintre un utilizator obișnuit și sistemul 1C și, de asemenea, sugerează modalități de rezolvare a acestora .
Majoritatea rapoartelor care sunt dezvoltate folosind un sistem de compoziție a datelor (DCS) solicită utilizatorului să introducă perioada pentru care va fi creat raportul. De regulă, în ACS, intrarea perioadei este organizată prin parametri, folosind următoarea construcție, vezi. Fig.1 Această metodă de intrare într-o perioadă este considerată „clasică”; este descrisă într-un articol despre ITS și altă literatură dedicată dezvoltării în 1C, așa că să o luăm ca bază. Să luăm ca exemplu o cerere simplă care primește toate documentele Vânzări de Bunuri și Servicii pentru o anumită perioadă, vezi Fig.2 Când folosește acest raport, utilizatorul setează perioada prin intermediul parametrilor, vezi. Fig.3 Totul pare să fie corect... DAR există o mică problemă:

Chestia este că marea majoritate a utilizatorilor „înțeleg” perioada altfel decât „înțelege” 1C, exemple:
1). Sa luam in considerare Fig.3
Din punctul de vedere al utilizatorului, nu este specificată perioada, adică NELIMITAT, adică TOATE documentele fără restricții de dată ar trebui incluse în raport.
„Din punctul de vedere” al sistemului 1C, parametrul-perioada este setat și... ambele limite ale acestuia sunt egale cu 01.01.0001 și în raport vor fi incluse doar documentele cu data goală, ceea ce în practică înseamnă nu va fi inclus un singur document.
2). Sa luam in considerare Fig.4
Din punctul de vedere al utilizatorului, raportul trebuie să cuprindă toate documentele începând cu data de 28.01.2010.
„Din punct de vedere” al 1C, perioada 28/01/2010 – 01/01/0001 va face excepție.

Puteți, desigur, să încercați să explicați utilizatorului de ce raportul nu afișează documentele pe care se așteaptă să le vadă și cum este prezentată perioada din „punctul de vedere” al 1C, dar aceasta este o sarcină ingrată și este este de asemenea greșit. Un program bun ar trebui, în primul rând, să fie ușor de utilizat, deoarece programul există pentru utilizator, și nu invers, de aceea va trebui să „învățați” 1C să înțeleagă perioada așa cum o înțelege utilizatorul, și anume:
1). Începutul perioadei și Sfârșitul perioadei nu sunt specificate -> toate documentele.
2). Este specificat doar Începutul Perioadei –> toate documentele începând de la Începutul Perioadei
3). În plus, vom verifica că Sfârșitul perioadei >= Începutul perioadei, iar dacă acest lucru nu este adevărat, atunci vom presupune că Sfârșitul perioadei nu este specificat, adică. 2).
Pe baza celor de mai sus, expresia pentru parametrul Data de încheiere va arăta astfel:

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

Forma finală a designului nostru de selecție a perioadei este afișată în Fig.5

Când creați rapoarte pe un sistem de control al accesului, este adesea nevoie să afișați o selecție a perioadei pe formularul de raport, astfel încât să nu fie nevoie să introduceți datele manual, ci să selectați dintr-o listă de perioade standard, cum ar fi: „Anul” , „Lună”, „Săptămână”, etc. Pentru parametrii de tip Data, puteți specifica doar „Începutul acestui an, luna, etc.”, dar „Sfârșitul” nu este furnizat.

Chestia este că, dintre tipurile de date, este disponibil doar tipul „Data de început standard”, dar vreau și „Data de încheiere standard”.

Există o modalitate de a ocoli asta.

  1. Să creăm un nou parametru, numim „Perioadă”
  2. Setați acest parametru la tipul „Perioada standard”
  3. În câmpul „Expresie” al parametrilor „Începutul perioadei” și „Sfârșitul perioadei”, care sunt utilizați în cerere, setați expresiile „ &Period.StartDate" și " &Period.Data de încheiere” respectiv.

Dar există o ușoară subtilitate. Dacă folosim tabele virtuale în interogare, atunci cel mai probabil raportul nu va mai funcționa și va fi afișat un mesaj de eroare precum „Eroare la procesarea vizualizării, nepotrivirea tipului, numărul parametrului...”.

Pentru a evita acest lucru, trebuie să eliminați toți parametrii tabelului virtual.

Și adăugați-le în tabelele din fila „Compoziția datelor”.

Pentru ca parametrii să fie afișați în setările raportului rapid, să activăm marcajul corespunzător pentru parametrii raportului.

Acum, selecția perioadei de pe formularul de raport arată astfel.