Obținerea la cererea datei documentului. Caracteristica de primire a lansării celor mai recente înregistrări în Registrul de informații Obțineți prețul pe data documentului în cerere

/
Implementarea procesării datelor

Rezoluția rezultatelor pentru registrele periodice de informații

Domeniu de aplicare: aplicație controlată, aplicație mobilă, aplicare normală.

1.1. Pentru registrele periodice de informații, se recomandă rezolvarea rezultatelor dacă sunt îndeplinite toate condițiile următoare:

  • o cantitate mare de date este așteptată în registru (de exemplu, justificată pentru registru cu prețul nomenclaturii; dar nu are sens să se înregistreze la cursuri valutare);
  • configurația furnizează solicitări de frecvență la secțiunile din ultima dată și / sau la secțiunile primului pentru a obține date topice (adică, când perioada nu este specificată în parametrii tabelelor virtuale Dormiși Slicing.);
  • În același timp, condițiile rămase pentru tabele virtuale Dormi și Slicing. sunt specificate numai pe valorile de măsurare (și separatoarele în modul Independent și împreună);
  • În limitele accesului la date, se utilizează numai măsurătorile (și divizoarele în modul Independent și împreună).

O listă completă a tuturor condițiilor atunci când rezultatele registrului de informații sunt implicate în interogări, consultațidocumentație pentru platforma 1C: Enterprise.

De exemplu, dacă sunt furnizate solicitări de înregistrare frecvent în configurație Prețurile Pentru a obține prețurile curente ale nomenclaturii:

Selectați nomenclatorul. Articol ca articol, prețul de interes. Preț ca prețul ,. . . Din director. Nomenclatura ca nomenclatură stânga conexiune a registrului. Prețurile. Circling-durabil (Viditiones \u003d & Vidzeni) ca prețuri Materie de preț. Nomenclatură \u003d nomenclatură. Legătură. . .

care este supus tuturor celorlalte condiții enumerate mai sus, stabilind proprietatea Permiteți rezultatele: Tăiați ultima dată Accelerează în mod semnificativ executarea unor astfel de solicitări, se calculează că eșantionul va fi executat direct din tabele suplimentare în care sunt stocate numai ultimele valori (pentru tăierea recentă) și primele valori (pentru secțiunile primului ).

1.2. În plus, ar trebui luate în considerare opțiunile alternative pentru revizuirea solicitărilor de înregistrare în așa fel încât să se efectueze aceste condiții.

De exemplu, dacă în unele cazuri datele din registru Prețurile Înregistrat de data viitoare și când selecția bunurilor, este întotdeauna o interogare la data curentă (data este setată în mod clar în parametrul tabelului virtual Slicing.) Rezultatele nu vor accelera executarea acestor solicitări. Deoarece rezultatele sunt construite numai pentru primele și ultimele înregistrări.

Cu toate acestea, dacă deschideți formularul de selecție a mărfurilor, analizați dacă există înregistrări cu o dată viitoare și dacă nu există nicio cerere la ultima decupare a celor din urmă fără a instala data, atunci o astfel de solicitare va funcționa mai repede.

2. În toate celelalte cazuri, nu trebuie soluționat pentru registrele periodice de informare. În primul rând, dacă

  • cel mai adesea (întotdeauna) la tabelele virtuale ale secțiunilor primului / ultimului registru de informare periodică, interogările sunt executate pentru o anumită perioadă (de exemplu, pe data documentului).
  • În condiții de tabele virtuale Dormi și Slicing. Cel mai adesea (întotdeauna) utilizează subquerie și conexiuni (circulație "prin punctul" în câmpurile tabelelor asociate). De exemplu, în acest caz:

3. Nu este necesar să se prevadă în configurarea unui mecanism separat de recalculare a rezultatelor, deoarece actualizarea tabelelor de rezultat se efectuează automat cu fiecare înregistrare a înregistrărilor din registru.

: Dormi și Slicing. Luați în considerare lucrul cu aceste tabele virtuale utilizând 1c. Mult mai des aplicate Slicing., deci cu el și să începem.

Încresele acestora din urmă vă permit să obțineți cea mai recentă înregistrare a registrului de informații la data specificată în contextul măsurătorilor. Pentru tabelul de tăiere a ultimului (mai întâi) există o oportunitate în paranteze pentru a specifica doi parametri prin virgulă. În primul parametru, data este transmisă la care se efectuează tăierea (dacă parametrul nu specifică felia se face la data curentă). Al doilea parametru reprezintă starea în limba de interogare 1C și vă permite să instalați diferite selecții. De regulă, măsurătorile sunt utilizate în aceste separii. Toate acestea sună destul de ceață, așa că fără un exemplu nu puteți face.
Deci, să avem un registru periodic al informațiilor Preț în care prețurile sunt stocate în contextul bunurilor și furnizorilor. Frecvența registrului este ziua.

Registrul are următoarele intrări

Pentru a începe, obținem o tăietură a celor din urmă fără a folosi parametrii, după această solicitare.

Alegeți prețul unui predarea

Deoarece parametrii nu sunt specificați, tăierea se efectuează la data curentă - 01.02.2017. Ca rezultat, obținem această masă

Aici observăm că combinația de bunuri de măsurare + furnizorul este unică, adică Pentru fiecare combinație de măsurători de înregistrare, a fost efectuată o înregistrare cu o dată maximă, iar data înregistrării este mai mică sau egală cu data curentă.

Să presupunem că trebuie să facem același lucru, dar înregistrările pe care vrem să le obținem cu data mai puțin sau egală cu 15 ianuarie 2017. Pentru a face acest lucru, trebuie să schimbați șirul în interogare cu mesa de tăiere recentă după cum urmează.

De la înregistrare. Preț. Preventive (& dansator) ca prețul Transvest

Înainte de a efectua solicitarea, este cu siguranță necesar să se transfere parametrul. & Dataseca.. Acum rezultatul interogării va arăta

Și, în cele din urmă, imaginați-vă că trebuie să obținem o reducere tăiată la aceeași dată cu condiția că avem bunurile Creion, și furnizorii Papetărie. Pentru a face acest lucru, specificați al doilea parametru din interogare.

De la înregistrare. Preț. Preventive (& dansator, produs \u003d & bunuri și furnizor \u003d & furnizor) ca procură

Ca rezultat, primim doar o înregistrare

Pentru a nu fi confundat în toate aceste paranteze și virgule, este mai bine să utilizați designerul de solicitări. Vă voi arăta în exemplul ultimei interogări.

După selectarea în designerul tabelului de interogare cu o tăietură a acestuia din urmă, trebuie să faceți clic pe buton Setările tabelului virtual și în fereastră care se deschide pentru înregistrare

Nu este dificil să ghiciți că pentru tăierea primului principiu al acțiunii este același, cu excepția faptului că prima înregistrare este selectată după data de tăiere.

Două tabele virtuale sunt disponibile pentru registrele periodice de informații: Dormi și Slicing. Luați în considerare lucrul cu aceste tabele virtuale utilizând cererile 1C. Mult mai des aplicate Slicing., deci cu el și să începem.

Încresele acestora din urmă vă permit să obțineți cea mai recentă înregistrare a registrului de informații la data specificată în contextul măsurătorilor. Pentru tabelul de tăiere a ultimului (mai întâi) există o oportunitate în paranteze pentru a specifica doi parametri prin virgulă. În primul parametru, data este transmisă la care se efectuează tăierea (dacă parametrul nu specifică felia se face la data curentă). Al doilea parametru reprezintă starea în limba de interogare 1C și vă permite să instalați diferite selecții. De regulă, măsurătorile sunt utilizate în aceste separii. Toate acestea sună destul de ceață, așa că fără un exemplu nu puteți face.

Deci, să avem un registru periodic al informațiilor Preț în care prețurile sunt stocate în contextul bunurilor și furnizorilor. Frecvența registrului este ziua.

Registrul are următoarele intrări

Pentru a începe, obținem o tăietură a celor din urmă fără a folosi parametrii, după această solicitare.

Alegeți prețul predominatorilor. Perioada este ca perioada, prețul ultimului. Produs ca bunuri, procurare-durabilă. Furnizor ca furnizor, Învierea prețurilor. Suma este ca o sumă a înregistrărilor. Preț. Circulă ca prețul tradusului

Deoarece parametrii nu sunt specificați, tăierea se efectuează la data curentă - 01.02.2017. Ca rezultat, obținem această masă

Perioada | Produs | Furnizor | Sumă

01/25/2017 | Creion | Ltd. "Lesprot" | cincisprezece

02/01/2017 | Creion | PJSC "Papetărie" 31.

02/01/2017 | Mâner | PJSC "Papetărie" 145.

Aici observăm că combinația de bunuri de măsurare + furnizorul este unică, adică Pentru fiecare combinație de măsurători de înregistrare, a fost efectuată o înregistrare cu o dată maximă, iar data înregistrării este mai mică sau egală cu data curentă.

Să presupunem că trebuie să facem același lucru, dar înregistrările pe care vrem să le obținem cu data mai puțin sau egală cu 15 ianuarie 2017. Pentru a face acest lucru, trebuie să schimbați șirul în interogare cu mesa de tăiere recentă după cum urmează.

De la înregistrări. Preț. Circus-durabil (& dansator,) ca prețul de conservare

Înainte de a efectua solicitarea, este cu siguranță necesar să se transfere parametrul. & Dataseca.. Acum rezultatul interogării va arăta

Perioada | Produs | Furnizor | Sumă

01.01.2017 | Creion | Ltd. "Lesprot" | 10.

01.01.2017 | Creion | PJSC "Papetărie" 27.

01/03/2017 | Mâner | PJSC "Papetărie" 137.

Și, în cele din urmă, imaginați-vă că trebuie să obținem o reducere tăiată la aceeași dată cu condiția că avem bunurile Creion, și furnizorii Papetărie. Pentru a face acest lucru, specificați al doilea parametru din interogare.

De la înregistrări. Preț. Circling-durabil (& Dancer, Product \u003d & Amp; Produs și Furnizor \u003d & furnizor) ca preț tradus

Ca rezultat, primim doar o înregistrare

Perioada | Produs | Furnizor | Sumă

01.01.2017 | Creion | PJSC "Papetărie" 27.

Pentru a nu fi confundat în toate aceste paranteze și virgule, este mai bine să utilizați designerul de solicitări. Vă voi arăta în exemplul ultimei interogări.
După selectarea în designerul tabelului de interogare cu o tăietură a acestuia din urmă, trebuie să faceți clic pe buton Setările tabelului virtual și în fereastră care se deschide pentru înregistrare

Nu este dificil să ghiciți că pentru tăierea primului principiu al acțiunii este același, cu excepția faptului că prima înregistrare este selectată după data de tăiere.

43
Null - valori lipsă. Nu confunda cu valoarea zero! Null nu este un număr care nu este egal cu spațiul, o legătură goală, nedefinită. NULL - Valoarea formării tipului, adică Există un tip nul și singurul sens al acestui tip. NUL ... 26
Pentru a forma și a executa interogările la tabelele bazei de date din platforma 1c, se utilizează un obiect de programare specială de programare a obiectului. Acest obiect este creat prin apelarea unei noi cereri. Cererea este convenabilă ... 18
Articolul prezintă tehnici utile atunci când lucrează cu cererile 1c V.8.2, precum și informații care nu sunt atât de bine cunoscute pentru limba de interogare. Nu mă străduiesc să dau o descriere completă a limbii cererilor, dar vreau să mă opresc numai pe ... 13
Cum ar fi - operatorul verifică șirul pe modelul similar. Analog ca în SQL. Operatorul vă permite să comparați valoarea expresiei specificată în partea stângă, cu șirul șablonului specificat în partea dreaptă. Valoarea expresiei ...

Uneori aveți nevoie de o solicitare de a obține de la o informație periodică date informative pentru mai multe date imediat. Un exemplu tipic funcționează cu cursuri valutare. Luați în considerare algoritmul pentru a rezolva această sarcină pe exemplu.

Formularea problemei

În baza de date, a fost creat un document "Implementarea serviciului", în antetul cărora există o "monedă" de recuzită. Cererea este necesară pentru fiecare document pentru a primi o rată a monedei reale de la antet la data documentului. Depozitarea cursurilor de schimb valutar sunt efectuate în Registrul periodic al "Carsalyut".
Decizia "pe frunte" a acestei probleme ar putea fi o cerere în ciclu: primirea tuturor documentelor cu datele și moneda și în eșantionul apelului la tabelul virtual al lansului ultimului registru "Kursivalyut". Dar pentru că Cererea din ciclu este "rău", încercați să implementați sarcina cu o singură cerere.

Decizie

Pentru a rezolva problema, vom folosi faptul că tabelele sunt în cerere pot fi conectate nu numai la egalitatea câmpurilor.

ALEGE RealizatsiyaTovarovUslug.Ssylka, RealizatsiyaTovarovUslug.Valyuta, MAX (KursyValyut.Period) ca o perioadă de VTPeriodyUstanovkiKursov izgonească CUM Dokument.RealizatsiyaTovarovUslug RealizatsiyaTovarovUslug din stânga se alăture RegistrSvedeniy.KursyValyut CUM KursyValyut RealizatsiyaTovarovUslug.Valyuta \u003d KursyValyut.Valyuta Și RealizatsiyaTovarovUslug.Data\u003e \u003d KursyValyut.Period grupate în funcție de implementarea serviciului. Legătură, implementarea străzilor. Svaluta; ////////////////////////////////////////////// // // ////////////////////////////////////////////////// ////////////////////////////////////// /// // // Selectați TveriodoresOstorekurs. Link, Wtperiodoresostrovikurstovs.valuta, Kursivalyut.Kurs de la WTPeriodorestoreCars ca o instalație aglomerată a legăturii stângi a înregistrărilor. KashInalyuta ca setări de vaporiodină

Procedură în interogare:

  1. Obținerea unui curs de schimb valutar pentru fiecare document. Documentele sunt conectate la tabelul fizic "Kursivalyut". Aici ar trebui să acordați atenție condițiilor de conectare. Monedele trebuie să fie egale și data documentului\u003e \u003d perioada înregistrării de informații.
    Ca urmare a unei astfel de conexiuni, un set de șiruri care satisfac starea va fi obținut pentru fiecare document: toate înregistrările cursului de schimb valutar se stabilesc mai târziu de data documentului.
    Etapa finală va fi o grupare de corzi pentru a obține o perioadă maximă de curs. Ca urmare, pentru fiecare document, se va obține perioada necesară de instalare a cursului pentru moneda dorită (data maximă de instalare a cursului de schimb valutar, dar nu mai mult de data documentului). Rezultatul este plasat într-o masă temporară de sisteme de aglomerare.
  2. Obținerea unui curs. Tabelul temporar al taxelor este conectat la tabelul fizic "Krasalyut". Conexiunea are loc în funcție de moneda documentului și de perioada stabilirii cursului definită în al doilea tabel temporar.