1s uv standard alegere a perioadei sqd. Cream un raport cu o frecventa specificata pe sistemul de stocare

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. Hai să facem clic Click dreapta mouse-ul 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ă periodicitatea „Automat”, 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. Câmpul este adăugat dublu click 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 de 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...
Probabil, nu ar trebui să încercați să navigați singuri pe internet în căutarea informatie necesara? Î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:



Deci, să începem.

Pentru simplitate, înțelegerea exemplului, vom construi pe un registru de acumulare circulant simplu.

În cazul meu, acesta este registrul de acumulare „Contabilitatea lucrărilor în curs”.

De exemplu, vom indica parametrii săi în mod rigid (nu prin impunerea ușoară a parametrilor asupra sistemului de control al accesului):

Vă rugăm să rețineți că frecvența tabelului virtual este „Înregistrare”.

Dar, după cum am menționat mai sus, avem nevoie de perioada din punct de vedere al periodicității, așa că îmi propun să calculăm câmpul „Perioadă” în felul următor (nu foarte frumos, dar opțiuni mai bune N-am văzut):

După cum se poate vedea din captură de ecran, la cerere este transmis un parametru, pe care utilizatorul îl specifică pe formular: Valoarea enumerației „Frecvență” - această enumerare se găsește în aproape toate soluțiile standard.

Vom indica tipurile disponibile în fila „Parametri”:

Cu această setare ne formatăm menstruația astfel încât totul să fie frumos și plăcut ochiului)

Iată formatele în sine:

Luna: DF="MMMM aaaa "a."

Zi: DF = zz.LL.aaaa

Săptămâna: DF = „„Săptămâna de la „zz.LL.aaaa”

Trimestru: DF = „la „sfert” aaaa „y.”

An: DF = "aaaa "y."

Deceniu: DF = ""Deceniu cu "zz.LL.aaaa"

Semăn de an: DF = „„Jumătate de an de la” zz.LL.aaaa”

Asta e tot. Ieșirea este o imagine minunată:

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, vezi. 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. Program bun trebuie, în primul rând, să fie convenabil pentru utilizator, deoarece programul există pentru utilizator, și nu invers, de aceea este necesar să „învățăm” 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ă.

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.

Acțiune