Funkcia získania prehľadu najnovších záznamov v informačnom registri. Funkcia získania prehľadu najnovších záznamov v informačnom registri Rozmery, zdroje a podrobnosti

/
Implementácia spracovania údajov

Rozlíšenie súčtov pre periodické informačné registre

Rozsah použitia: riadená aplikácia, mobilná aplikácia, bežná aplikácia.

1.1. Pre periodické informačné registre sa odporúča povoliť súčty, ak sú splnené všetky nasledujúce podmienky:

  • v registri sa očakáva veľký objem údajov (napr. má opodstatnenie pri registri s cenami položiek; pri registri s kurzami to však nemá zmysel);
  • konfigurácia poskytuje frekvenčné dopyty na segmenty druhého v aktuálnom čase a/alebo na segmenty prvého s cieľom získať aktuálne dáta (t. j. keď obdobie nie je špecifikované v parametroch virtuálnych tabuliek Najprv rezanie A Slice of the Last);
  • kým zostávajúce podmienky pre virtuálne tabuľky Najprv rezanie A Slice of the Last sú nastavené len na namerané hodnoty (a oddeľovače v režime Nezávisle a spoločne);
  • obmedzenia prístupu k údajom registra používajú iba dimenzie (a oddeľovače, ktoré sú v režime Nezávisle a spoločne).

Úplný zoznam všetkých podmienok, keď dopyty používajú súčty informačného registra, nájdete nadokumentáciu pre platformu 1C:Enterprise.

Napríklad, ak konfigurácia obsahuje často vykonávané dotazy do registra Ceny nomenklatúry na získanie aktuálnych cien tovaru:

Vybrať položku. Článok AS Článok, Nomenklatúra cien. Cena AS Cena, . . . Z adresára. Nomenklatúra AS Nomenklatúra ĽAVÉ SPOJENIE Register informácií. Ceny nomenklatúry. SliceLast(, PriceView = &Typ cien) AKO Ceny Nomenklatúry Nomenklatúry cien softvéru. Nomenklatúra = Nomenklatúra. Odkaz . . .

potom, pri splnení všetkých ostatných podmienok uvedených vyššie, nastavenie majetku Povoliť súčty: časť posledných výrazne zrýchli vykonávanie takýchto dotazov, pretože výber sa bude vykonávať priamo z doplnkových tabuliek, v ktorých sú uložené len posledné hodnoty (pre vystrihnutie posledných) a prvé hodnoty (pre vystrihnutie prvé).

1.2. Okrem toho by sa mali zvážiť alternatívne možnosti na revíziu registračných dotazov tak, aby boli splnené tieto podmienky.

Napríklad, ak v niektorých prípadoch údaje v registri Ceny nomenklatúry sú evidované k budúcemu dátumu a pri výbere tovaru do tejto evidencie sa vždy vykoná dotaz na aktuálny dátum (dátum je explicitne uvedený v parametri virtuálnej tabuľky Slice of the Last), potom výsledky nezrýchlia vykonávanie takýchto dotazov. Keďže súčty sú zostavené len pre prvý a posledný záznam registra.

Ak však pri otváraní formulára na výber produktu analyzujete, či existujú registrátori s budúcim dátumom, a ak nie sú žiadni, spustíte ďalší dotaz na časť druhého bez nastavenia dátumu, potom bude takýto dopyt fungovať rýchlejšie. .

2. Vo všetkých ostatných prípadoch by nemali byť povolené súčty pre periodické informačné registre. V prvom rade ak

  • najčastejšie (vždy) sa dopytuje do virtuálnych tabuliek prvého/posledného periodického registra informácií za konkrétne obdobie (napríklad na dátum dokumentu).
  • v podmienkach pre virtuálne stoly Najprv rezanie A Slice of the Last Najčastejšie (vždy) sa používajú poddotazy a spojenia (volania „cez bodku“ do polí súvisiacich tabuliek). Napríklad v tomto prípade:

3. V konfigurácii nie je potrebné poskytovať samostatný mechanizmus na prepočítavanie súčtov, pretože aktualizácia tabuliek súčtov sa vykonáva automaticky pri každom zápise sady záznamov do registra.

1C informačné registre ide o štruktúrovaný súbor údajov s dimenziami a zdrojmi. Navrhnuté na uchovávanie pravidelných informácií.

Periodicita

Informácie sú uložené podľa dimenzie a obdobia. Môžete nastaviť frekvenciu informačného registra:

  • Neperiodické
  • registrátorom
  • druhý
  • týždeň
  • mesiac
  • štvrťroku

Frekvencia je potrebná na výber informácií z registra za určité časové obdobie. Ak zadáte frekvenciu, zápisy do registra sa vykonajú s obdobím, kedy bol zápis vykonaný. Povedzme, že ak sa pozriete do registra „Ceny položiek“, môžete vidieť históriu zmien cien, s akými meraniami a v akom časovom období bol záznam vykonaný.

Periodicita v informačných registroch je potrebná pre informácie, ktoré sa časom menia, napríklad: výmenné kurzy, ceny produktov, zľavy a prirážky produktov atď.

Registrátori

Ak vykonávate zápis do registra informácií pomocou dokumentu, je potrebné nastaviť režim zápisu: „Podanie do registra“ a vybrať dokument, ktorým sa vykoná zápis do registra. Potom sa v registri objaví pole „Registrátor“, kde budú uložené informácie o tom, akým dokladom bol záznam vykonaný. Záznamník možno použiť aj ako bodku; na tento účel uveďte v poli „Frekvencia“ - „Podľa záznamníka“. Podriadenie registrátorovi sa vykonáva vtedy, keď je potrebné striktne prepojiť register s dokumentom a zmena záznamov v registri nebude dostupná manuálne.

Môže existovať niekoľko dokumentov, ktoré budú pôsobiť ako registrátori. Ak chcete pridať registrátora, musíte prejsť do vlastností požadovaného informačného registra, prejsť na kartu „Registrátori“ a začiarknuť políčka vedľa dokumentov, ktoré budú pôsobiť ako registrátor.

Môžete vidieť pohyby, ktoré rekordér robí z dokumentu. Ak to chcete urobiť, musíte prejsť na dokument, ktorý vás zaujíma, kliknúť na: Prejsť – Pohyby dokladov podateľňou.

Nezabudnite pridať práva vo vlastnostiach registra; možno ich prideliť na karte „Práva“. Následne je potrebné v zozname rolí vybrať rolu, ktorej chcete pridať práva do registra a v zozname práv nastaviť práva pre vybranú rolu.

Jedinečnosť záznamov

Jedinečnosť záznamu závisí od obdobia a meraní. Napríklad, ak chcete zapísať záznam s rovnakými mierami do registra „Ceny tovaru“ v ten istý deň, potom to nebudete môcť urobiť a program spôsobí chybu, pretože periodicita registra je do jedného dňa.

Ak frekvenciu nastavuje registrátor, podieľa sa aj na jedinečnosti záznamu.

Pre neperiodické a nezávislé registre závisí jedinečnosť od kombinácie dimenzií.

Formuláre

Na prezeranie záznamov slúži formulár zoznamu, v ňom si môžete nastaviť výber podľa polí, ktoré vás zaujímajú, prezerať si históriu záznamov a meniť ich cez formulár záznamov. Záznamy registra môžete zobraziť nasledovne: v hornom menu kliknite na tlačidlo „Operácie“ - „Informačné registre“. V okne, ktoré sa otvorí, vyberte register, ktorý potrebujete. Potom sa otvorí formulár zoznamu vo forme tabuľky, kde každý záznam je jedinečný záznam.

Na úpravu/vytvorenie použite formulár záznamu, ak je záznam podriadený registrátorovi, pole nebude dostupné a formulár nebude možné vytvoriť.

Formuláre musíte pridať v konfigurátore tak, že prejdete do registra informácií, v záložke „Formuláre“ a kliknete na „lupu“ vedľa požadovaného typu formulára. Ďalej sa otvorí okno, kde môžete nakonfigurovať polia budúceho formulára (umiestnenie, názvy a špecifikovať funkčnosť).


Rozmery, zdroje a podrobnosti

Rozmery sú určené na utváranie jedinečnosti záznamu, v budúcnosti si ich môžete vybrať a urobiť rez na základe konkrétneho rozmeru. Kombinácia meraní tvorí kľúč záznamu. Je lepšie nevytvárať veľké množstvo rozmerov, aby stôl pri práci s ním nerástol a nespomalil.

Dimenzie majú zaškrtávacie políčko „Leading“; ak je začiarknuté, záznam bude uložený v databáze, pokiaľ bude existovať táto dimenzia. Je možné vykonať niekoľko vedúcich meraní. Napríklad v informačnom registri „Ceny položiek“ je vedúcou dimenziou položka; ak vymažete položku, ktorá je zahrnutá v zázname, záznam v registri informácií pre túto položku sa automaticky vymaže.

Zdroje sú určené na uchovávanie súhrnných informácií: množstvo, cena atď. V budúcnosti budeme dostávať zdroje na určitý čas (ak je register periodický), podľa meraní.

Podrobnosti sú vo väčšine prípadov určené na uchovávanie dodatočných informácií, nepodieľajú sa na jedinečnosti záznamu. Do detailov môžete zadať napríklad informácie, ako je autor, komentár atď.

S registrom informácií môžete vykonávať nasledujúce akcie:

  • Vymazanie záznamu v informačnom registri 1C

Zvláštnosti

— Jedinečnosť záznamov na základe súboru dimenzií: každý záznam v informačnom registri je novou hodnotou zdroja.

— Záznamy do informačného registra môžu byť pravidelné alebo nie.

— Register informácií môže byť závislý od registrátora a nezávislý od neho.

— Je možné urobiť prierez prvým a posledným záznamom k požadovanému dátumu. Toto je implementované virtuálnymi tabuľkami: „Slice of the First“ a „Slice of the Last“. Na použitie týchto tabuliek môžete použiť výber aj dotaz (v návrhárovi dotazov vyberiete tieto virtuálne tabuľky a môžete na ne vytvoriť dotaz). Tieto tabuľky budú dostupné, ak bude informačný register periodický.

Register „Ceny položiek“ je periodický register informácií, zápisy sa vykonávajú podľa registrátora.

Obrázok ukazuje, že frekvencia je nastavená na jeden deň. To znamená, že cenu je možné zmeniť raz denne na základe meraní jedinečných počas dňa.

Register je podriadený dokumentu „Nastavenie cien položiek“. To znamená, že zápis do registra pochádza z tohto dokumentu. Pohyby na konkrétnom doklade je možné zobraziť z formulára dokladu „Nastavenie cien položiek“.

Register je určený na uchovávanie informácií o cene položky s rozmermi „Typ ceny“, „Položka“ a „Charakteristika položky“. Vedúcou dimenziou sú všetky trojrozmerné polia, na základe ktorých bude možné pri vzorkovaní vyberať.

Záver: Po prečítaní článku budete môcť vytvoriť informačný register 1C, pridať dimenzie a zdroje, nakonfigurovať úpravy a vypísať formuláre. Vytvorte záznam a vyberte existujúce záznamy. Ak máte nejaké otázky, použite komentáre v článku, pokúsim sa rýchlo odpovedať na vašu otázku.

Niekedy je potrebné použiť dotaz na získanie údajov pre niekoľko dátumov naraz z periodického informačného registra. Typickým príkladom je práca s výmennými kurzami. Zoberme si algoritmus na riešenie tohto problému pomocou príkladu.

Formulácia problému

V databáze je vytvorený doklad „Predaj tovaru a služieb“, v hlavičke ktorého je atribút „Mena“. Žiadosť vyžaduje pre každý doklad získať aktuálny kurz z hlavičky k dátumu dokladu. Kurzy mien sú uložené v periodickom informačnom registri „Kurzy mien“.
Priamym riešením tohto problému by mohol byť dopyt v slučke: získanie všetkých dokumentov s ich dátumami a menami a vo vzorke prístup k virtuálnej tabuľke s výrezom z najnovšieho registra „Currency Rates“. Ale pretože požiadavka v slučke je „zlá“, skúsme implementovať úlohu s jednou požiadavkou.

Riešenie

Na vyriešenie problému využijeme fakt, že tabuľky v dotaze možno spájať nielen pre rovnosť polí.

VYBERTE Predaj tovarov a služieb Odkaz, Predaj tovarov a služieb Mena, MAXIMÁLNE (kurzy meny. Obdobie) AKO Obdobie MIESTO V TPobdobiachNastavenie sadzieb Z DOKUMENTU Predaj tovarov a služieb AKO Predaj tovarov a služieb OPUSTILO PRIPOJENIE Register informácií. Kurzy mien AS Kurzový softvér Predaj produktov ovServices.Currency = Kurzy mien.Mena a predaj tovaruSlužby.Dátum >= Kurzy mien.Obdobie GROUP Software Predaj tovarov a služieb Odkaz, Predaj tovarov a služieb. ///////////////////////////////////////////////// /////////////////////////// SELECT VTPobdobiaNastavenie sadzieb.Link,VTPobdobiaNastavenie sadzieb.Mena, KurzyCurrency.Rate FROM VTPobdobiaNastavenie sadzieb AKO Obdobia VTPNastavenie sadzieb ĽAVÉ PRIPOJENIE RegistrovaťInformácie . Kurzy mien AKO kurzy mien ZAPNUTÉ Nastavenia kurzov v období VTP. Obdobie = Kurzy mien. Obdobie A Obdobie VTP Nastavenia kurzu. Mena = Kurzy mien. Mena

Postup pri vyžiadaní:

  1. Získanie obdobia pre nastavenie kurzu pre každý doklad. Dokumenty sú prepojené s FYZICKOU tabuľkou „Kurzy mien“. Tu by ste mali venovať pozornosť podmienkam pripojenia. Meny musia byť rovnaké a dátum dokumentu >= obdobie informačného registra.
    V dôsledku takéhoto spojenia sa pre každý dokument získa množina riadkov, ktoré spĺňajú podmienku: všetky záznamy o výmenných kurzoch pre menu dokumentu, vytvorené najneskôr k dátumu dokumentu.
    Posledným krokom bude zoskupenie riadkov, aby ste získali obdobie maximálnej sadzby. Výsledkom je, že pre každý doklad sa získa požadované obdobie na nastavenie výmenného kurzu pre požadovanú menu (maximálny dátum nastavenia výmenného kurzu, ale nie viac ako dátum dokladu). Výsledok sa umiestni do dočasnej tabuľky VTPeriodsSettingRates.
  2. Získanie kurzu. Dočasná tabuľka VTPeriodsSetting Rates je prepojená s FHYSICAL tabuľkou „Currency Kurzy“. Pripojenie sa uskutoční podľa meny dokladu a obdobia nastavenia sadzby definovaného v druhej dočasnej tabuľke.

: Najprv rezanie A Slice of the Last Uvažujme o práci s týmito virtuálnymi tabuľkami pomocou 1C. Oveľa častejšie používané Slice of the Last, tak začnime s tým.

Výrez najnovšieho umožňuje získať posledný záznam informačného registra k určenému dátumu v kontexte meraní. Pre poslednú (prvú) tabuľku výrezov je možné zadať dva parametre v zátvorkách oddelené čiarkami. Prvý parameter obsahuje dátum vytvorenia rezu (ak parameter nie je zadaný, rez je vytvorený v aktuálny dátum). Druhý parameter je podmienka v dopytovacom jazyku 1C a umožňuje nastaviť rôzne výbery. V týchto výberoch sa spravidla používajú merania. To všetko znie dosť vágne, takže bez príkladu to nie je možné.
Majme teda pravidelný register informácií cena ktorý ukladá ceny podľa produktov a dodávateľov. Frekvencia registra je deň.

Register obsahuje nasledujúce položky

Na začiatok získame jeho časť bez použitia parametrov vykonaním nasledujúcej požiadavky:

SELECT PriceSliceLast.Period AS Obdobie, PriceSliceLast.Product AS Product, PriceSliceLast.Subplier AS, PriceSliceSlice.Amount AS Množstvo OD Registrovať informácie.Price.SliceLast ASPriceSliceLast

Keďže parametre nie sú špecifikované, rez sa vykonáva k aktuálnemu dátumu - 02.01.2017. V dôsledku toho dostaneme nasledujúcu tabuľku

Tu vidíme, že unikátna je kombinácia rozmerov Produkt + Dodávateľ, t.j. Pre každú kombináciu meraní registra bol urobený záznam s maximálnym dátumom a dátum záznamu je menší alebo rovný aktuálnemu dátumu.

Povedzme, že musíme urobiť to isté, ale chceme získať záznamy s dátumom menším alebo rovným 15.01.2017. Ak to chcete urobiť, musíte zmeniť riadok s najnovšou tabuľkou výrezov v požiadavke nasledovne

FROM RegisterInformation.Price.SliceLast(&CutDate,) AS PriceSliceLast

Pred vykonaním požiadavky jej samozrejme musíte odovzdať parameter &Dátum vystrihnutia. Teraz bude výsledok dotazu vyzerať takto

A na záver si predstavte, že potrebujeme získať snímku najnovších k rovnakému dátumu s podmienkou, že tovar máme Ceruzka a dodávateľa Papiernictvo. Ak to chcete urobiť, zadajte druhý parameter v požiadavke

FROM RegisterInformation.Price.Last Cut(&Dátum vystrihnutia, Produkt = &Produkt A Dodávateľ = &Dodávateľ) AKO CenaPosledný rez

Výsledkom je, že dostaneme iba jeden záznam

Aby ste sa nestratili vo všetkých týchto zátvorkách a čiarkach, je lepšie použiť nástroj na tvorbu dotazov. Ako príklad vám ukážem poslednú požiadavku.

Po výbere tabuľky s výrezom najnovších v návrhárovi dotazov musíte kliknúť na tlačidlo Možnosti virtuálneho stola a do okna, ktoré sa otvorí, napíšte

Nie je ťažké uhádnuť, že pre prvý plátok je princíp fungovania rovnaký, až na to, že sa vyberie prvý záznam po dátume strihu.

V testovacej konfigurácii máme periodický informačný register „Nomenklatúrne ceny“ s nasledujúcimi počiatočnými údajmi:

Na obrázku je znázornená aj štruktúra metadát registra. Ako vidíme, register obsahuje dimenziu „Produkt“ s typom referencie „Produkty“, ako aj číselný zdroj „Cena“ a atribút „OldPrice“.

Povedzme, že v správe potrebujeme získať časť najnovších záznamov o produktoch a ich cenách s podmienkou, že stará cena je menšia alebo rovná 50.

Dve možnosti žiadosti

Hneď poviem, že zvážime správne a nesprávne možnosti. Začnime tými druhými. Toto je chyba, ktorú často robia začínajúci programátori. A tak bol pre správu napísaný nasledujúci dotaz:

Žiadosť = Nová požiadavka; Žiadosť. Text = " VYBRAŤ | | | | | OD | Register informácií. Ceny nomenklatúry. Plátok najnovších AKO Ceny Nomenklatúra Plátok najnovších|KDE | Ceny NomenklatúraPlátokNajnovšie. Stará cena< = 50 " ;

Venujte pozornosť stavu v časti „KDE“. Toto je hlavná chyba! Tento dotaz nevráti jediný záznam a tu je dôvod, prečo: pri použití virtuálnych tabuliek, v našom prípade „Posledný rez“, sa údaje najskôr načítajú z databázy podľa podmienok opísaných vo virtuálnej tabuľke a potom sa vykonávajú akcie opísané v časti vykonávajú sa text dotazu (zoskupenia, podmienky v sekcii "KDE", triedenie a pod.).

Preto v našom príklade požiadavka nevráti výsledok. Najprv dostane časť z toho druhého a až potom nastaví podmienku pre atribút „Stará cena“. Takto to vyzerá na diagrame:

Pre správne vyriešenie problému je potrebné preniesť podmienku pre atribút „Stará cena“ do podmienok virtuálneho stola. Takto bude vyzerať správny text žiadosti:

Žiadosť = Nová požiadavka; Žiadosť. Text = " VYBRAŤ Ceny NomenklatúraPlátokNajnovšie. obdobie, Ceny NomenklatúraPlátokNajnovšie. produkt, Ceny NomenklatúraPlátokNajnovšie. Cena, Ceny NomenklatúraPlátokNajnovšie. Stará cena OD Register informácií. Ceny nomenklatúry. SliceLast(, OldPrice< = 50 ) AKO CENANomenklatúraPlátokNajnovšie"

Teraz žiadosť dostane správne údaje, pretože bude prijatá časť najnovších cien s prihliadnutím na podmienku pre atribút „Stará cena“.

výsledky

Treba chápať, že vyššie uvedené platí pre všetky prípady použitia virtuálnych tabuliek v dotazoch (pre akumulačné registre, účtovné registre, úlohy atď.).

Z toho vyplýva aj hlavné pravidlo používania virtuálnych tabuliek: „pri používaní virtuálnej tabuľky nezabudnite nastaviť parametre výberu priamo vo virtuálnej tabuľke, inak dotaz dostane nepotrebné údaje, ktoré sa potom použijú na výber.“