Pojem základných a vedúcich typov výpočtu. Komplexné periodické zúčtovania Aký typ zdroja výpočtového registra môže byť?

Nový objekt „Plán výpočtových typov“ je vzdialenou analógiou výpočtových typov v 7.7. Typy výpočtov sú dátové objekty, nie metaúdajové objekty. Môžu existovať preddefinované typy výpočtov.

Namiesto vylúčených sídelných skupín môžete použiť vstavané mechanizmy tabuľky typov osídlenia a registrov osídlenia. Na zoskupenie typov výpočtov môžete použiť iné objekty, napríklad podrobnosti o typoch výpočtov alebo adresár.

Nový objekt "Register výpočtov" - vzdialený analóg denníka výpočtov v 7.7

Namiesto kalendárov sa na implementáciu pracovných harmonogramov používajú informačné registre.

Vstavaný jazyk

Na výrazné rozšírenie možností platformy bol vyvinutý nový jednotný objektový model jazyka 1C: Enterprise 8.0. To umožnilo dramaticky rozšíriť možnosti platformy, urýchliť jej vývoj a zvýšiť zrozumiteľnosť softvérových modulov.

Boli zavedené nové literály a typy údajov, ako napríklad literály Undefined, Null, True a False (booleovský typ údajov). Typ dátumu zahŕňa čas.

Debugger je súčasťou konfigurátora. Vie, ako zobraziť zoznam vlastností objektov s ich hodnotami a typmi. Je možné zobraziť kolekcie, ako sú polia a tabuľky hodnôt.

Zaviedli sa všeobecné moduly, v ktorých je len časť procedúr a funkcií. V konfigurácii sú dostupné procedúry a funkcie bežných modulov, deklarované kľúčovým slovom "Export".

Pri písaní softvérových modulov sa používa technológia kontextovej nápovedy (analogická k IntelliSense). Textový editor programových modulov podporuje zoskupovanie (skladanie) syntaktických konštrukcií, ako aj popisy postupov a funkcií (vo forme komentárov).

Funkcionalita externého komponentu v7plus.dll je zahrnutá v platforme vo forme objektov "Pošta", "Informácie o systéme", "Pripojenie k internetu", "Pripojenie FTP atď. Sú tu nástroje pre prácu s dokumentmi XML, ako aj ako pre sekvenčné čítanie a zápis.veľké textové súbory.

V systéme 1C: Enterprise sú objekty registrov zúčtovania navrhnuté tak, aby zohľadňovali výsledky výpočtov vykonávaných s určitou frekvenciou, ktoré navzájom úzko súvisia podľa určitých pravidiel a vzájomne sa ovplyvňujú v určitom období.

Vlastnosti výpočtového registra

Spolu so všeobecnými vlastnosťami, ktoré sú vlastné všetkým metaúdajovým objektom, majú registre výpočtov množstvo špecifických vlastností.

Výpočtový register sa upravuje v editovacom okne.

Pri editácii kalkulačného registra sa určí plán typov kalkulácií, podpora doby platnosti a základného obdobia, frekvencia, štruktúra registra: vytvoria sa sady dimenzií, zdroje a detaily registra, ak je to potrebné, obrazovka a sú vytvorené tlačové formuláre na prezeranie pohybov registrov.

Tabuľka typov výpočtu- hlavná charakteristika registra. Vyberie sa jeden z objektov typu "Plán typov výpočtov".

Platnosť- ak je vlastnosť nastavená, potom sa stanovuje konkurenčný charakter vzájomného ovplyvňovania pohybov tohto registra. Príklady konkurenčných pohybov sú akruálne mzdy a výplata nemocenského - nemôžeš byť chorý a zároveň pracovať, t.j. dostávať plat aj peniaze práceneschopnosť... Takéto výpočty sa navzájom časovo vylučujú a systém musí zabezpečiť, aby zavedenie jedného z nich viedlo k vylúčeniu druhého.

Rozvrh Platnosť... Vlastnosť predstavuje odkaz na informačný register, ktorý popisuje dočasnú schému zdrojových údajov zahrnutých do výpočtu. Harmonogram by sa mal uviesť pre tie výpočty, ktoré závisia od zdrojových údajov distribuovaných v rámci obdobia platnosti pre určité pravidlo... Môže to byť napríklad rozvrh pracovného času organizácie v členení podľa dní, sledovanie hodín prednášok v členení podľa hodín atď.

Hodnota grafu- nehnuteľnosť je k dispozícii, ak je nehnuteľnosť nastavená Platnosť... Vlastnosť vyberá zdroj informačného registra definovaný vo vlastnosti Rozvrh.

Dátum plánu- nehnuteľnosť je k dispozícii, ak je nehnuteľnosť nastavená Platnosť... Vlastnosť vyberá dimenziu registra informácií definovanú vo vlastnosti Rozvrh a je typu Dátum. Hodnota tejto vlastnosti sa používa na naviazanie na hodnoty zdroja informačného registra špecifikovaného vo vlastnosti Chart value.

Základné obdobie- ak je vlastnosť nastavená, tak sa stanovuje súvisiaci charakter vzájomného ovplyvňovania pohybov tohto registra. Príkladom súvisiacich pohybov môže byť prepojenie výpočtu súm časovo rozlíšených platieb na základe priemeru súm naakumulovaných v základnom období.

Periodicita- definuje obdobie, s ktorým sú pohyby zaznamenávané a v rámci ktorých sa môžu pohyby navzájom ovplyvňovať (pre registre, ktoré podporujú dobu platnosti).

Prepočty- podriadené objekty registra, ktoré umožňujú nastaviť pravidlá vzájomného ovplyvňovania pohybov registrov. V palete vlastností objektu v skupine Vzťah vo vlastnosti Meranie register určuje hlavný rozmer aktuálneho registra, ktorý by sa mal prepočítať pri zmene údajov vedúcich registrov uvedených vo vlastnosti Údaje vedúcich registrov. Napríklad prepočet výšky odpočtu pre jednotlivca sa vytvorí pri zmenách poplatkov (mzdy, prémie).

Ak je vlastnosť nastavená Základné obdobie, potom sa automaticky vykoná vytvorenie údajov prepočtu. Ak vlastnosť nie je nastavená, vytváranie údajov prepočtov by mal vykonať používateľ manuálne (počas návrhu by sa mal vyvinúť špeciálny formulár na zadávanie prepočtov a mechanizmus ich implementácie).

Na záložke „Iné“ sa nastavuje režim blokovania objektov (automatické alebo riadené) a nastavuje sa znak fulltextového vyhľadávania objektov tohto typu.

Výpočtové registre

Výpočtové registre sú určené na uchovávanie záznamov výpočtov (priebežné a celkové výsledky). Registračné formuláre umožňujú prezeranie záznamov o vysporiadaní. Napríklad na obrázku nižšie je znázornená podoba hlavného registra časového rozlíšenia.

Ako môžete vidieť, v tomto registri pre každého prírodný človek uchovávajú sa výsledky výpočtu základných poplatkov (mzda, dovolenka) atď. Dvojklikom na záznam sa otvorí registračný doklad, ktorý záznam zapísal do mzdovej knihy.

Každá zúčtovacia kniha je založená na špecifickom pláne typov osídlenia. Pri editácii výpočtového registra sa uvádzajú aj jeho ďalšie charakteristiky, napríklad frekvencia výpočtov, podpora mechanizmu získavania základne, podpora doby platnosti (pre preemptívny mechanizmus), harmonogramy, podľa ktorých budú doby platnosti monitorované atď.

Štruktúra výpočtového registra určuje, ktoré informácie a v ktorých aspektoch budú v registri uložené. Vývojár špecifikuje rozmery, zdroje a podrobnosti o registrácii:

Merania sú časti uložených informácií. Napríklad register Základné časové rozlíšenie bude mať dimenzie Jednotlivec, Organizácia, Oddelenie, Pozícia a Daňový register bude mať len dve dimenzie: Jednotlivec a Organizácia.

Zdroje - výsledky výpočtu, napríklad zdroj Časovo rozlíšený zdroj pre Hlavný register časového rozlíšenia, zdroj Zadržaný pre register Dane atď. Zdroje môžu byť len číselného typu.

Požiadavky - dodatočná charakteristika záznamu o výpočte. Atribúty môžu byť takmer akéhokoľvek typu uložené v databáze. Napríklad atribúty Dni a Hodiny pre hlavný register časového rozlíšenia, atribút Základ dokumentu pre register držby. Na obrázku nižšie je znázornená štruktúra registra výpočtu časového rozlíšenia zamestnancov.

Grafy

Ak je pre register zaškrtnuté políčko "Obdobie platnosti", potom môžete vyplniť vlastnosti "Graf", "Hodnota grafu" a "Dátum grafu". V skutočnosti je graf neperiodickým registrom informácií popisujúcich časové rozloženie počiatočných údajov pre výpočet. Môže ísť napríklad o rozvrh práce organizácie v členení podľa pracovných dní a hodín, rozvrh trvania pracovných zmien, rozvrh hodín prednášok a pod.

Nižšie je uvedený príklad informačného registra, ktorý slúži ako rozvrh hodín.

Prepočty

Systém umožňuje automaticky sledovať záznamy, ktoré vyžadujú prepočet. Táto situácia môže nastať, keď ich výsledky nejakým spôsobom súvisia s inými typmi výpočtov a tie boli zmenené (vymazané alebo pridané nové záznamy).

Napríklad, keď zmeníte poplatky za zamestnanca, musíte prepočítať dane. Potom pre typ výpočtu "daň z príjmu fyzických osôb" budú hlavné typy výpočtu časové rozlíšenie, ktoré sa konfiguruje v pláne typov výpočtu na karte "Hlavné".

Povedzme, že máme kalkulačné registre Základné časové rozlíšenie, Bonusy a Zádržné. Dane sa počítajú po všetkých časových rozlíšeniach a poistnom tak, ako sa používajú ich výsledky.

Ak chcete automaticky sledovať relevantnosť daňových záznamov pre každého zamestnanca, musíte vytvoriť alokáciu s dimenziou Jednotlivci v registri uchovávania. Ako údaje základných registrov je priradená jednotlivá dimenzia z evidencie Základné časové rozlíšenie a evidencie Bonusov.

Nasledujúci príklad ukazuje, ako funguje prideľovanie:

Zmenené záznamy sú v každom registri zvýraznené. V dôsledku toho sa záznamy s nimi spojené v registri výdrže stali irelevantnými, t. vyžadujú prepočet, ktorý sa prejaví v prevodnej tabuľke.

Prepočet je teda tabuľka, v ktorej sú uložené hodnoty dimenzií, pre ktoré chcete prepočítať. Okrem meraní sú v tejto tabuľke uložené typy výpočtov a odkazy na dokumenty registrátora. Pomocou alokačnej tabuľky môžete určiť, ktoré záznamy sa stali irelevantnými a vyžadujú si pridelenie (alebo aspoň väčšiu pozornosť).

Dotazy na výpočet registrov

Dotazy na údaje registra výpočtov vám umožňujú získať informácie o vykonaných výpočtoch. V dotazoch sa môžete odvolávať na nasledujúce zdrojové tabuľky:

  • hlavná tabuľka záznamov výpočtového registra,
  • tabuľka skutočnej platnosti,
  • alokačná tabuľka.

Pomocou nástrojov dopytovacieho nástroja môžete zoskupiť výsledky výpočtov do potrebných sekcií, vypočítať súčty, vybrať iba potrebné záznamy výpočtov. To vám umožní generovať celý rad potrebných zostáv, napríklad Zúčtovacie hárky, Osobné účty, Mzdy atď. Mechanizmus dotazovania bol podrobne popísaný v kapitole Dopyty. Zoznam polí tabuliek-zdrojov výpočtových registrov je uvedený v dokumentácii.

Mnoho programátorov 1C sa vo svojej praxi nikdy nestretlo s komponentom Calculation, a preto, keď musia absolvovať skúšky pre špecialistu na platformu 8.0, kde každá úloha má úlohu komplexných periodických výpočtov, vznikajú ťažkosti, predovšetkým ťažkosti s porozumením.

Skúsme sa vysporiadať s týmto komponentom v 8.0. Skúsme sa namiesto riešenia rôznych výpočtových úloh popasovať s touto zložkou, aby sme vedeli vyriešiť akýkoľvek výpočtový problém. Po preštudovaní tohto návodu pochopíte, ako sú usporiadané a fungujú výpočtové registre.

Použijeme napríklad konfiguráciu kostry nastavenú na skúškach.

Aby som bol úprimný, dlho som sa snažil vymyslieť, na čo sú ešte potrebné výpočty, ale neprišiel som na to, takže zvážime úlohu výpočtu mzdy.

Čo sú výpočty

V podstate je konečným produktom mzdovej agendy súbor záznamov kalkulačného registra vo formulári:

zamestnanec

Obdobie

Typ výpočtu

Výsledok

Údaje

Komentár

Meranie

servis

servis

Rekvizity

Hodnota v stĺpci „Údaje“ vyjadruje základnú mzdu zamestnanca (podľa pracovná zmluva), ale táto suma môže byť navýšená o prémie, znížená o pokuty a absencie a pod., preto sa skutočná suma na zaplatenie zadáva až po vykonaní výpočtu v stĺpci „Výsledok“. Toto je výpočet. Suma v stĺpci „Zdroj“ pre tohto zamestnanca je mzda, ktorá mu patrí.

Výpočtový register je teda v podstate súbor záznamov, štruktúrou je podobný ako otočný akumulačný register. Len na vykonávanie zložitých výpočtov sú preň uvedené ďalšie nastavenia, ktoré vám potom umožňujú zostaviť veľa virtuálnych tabuliek pre register výpočtov, hoci v skutočnosti je tento register iba súborom záznamov uvedených na obrázku.

Každý záznam v registri vyrovnaní sa vzťahuje na konkrétny typ vyrovnania a časové obdobie.

Typy výpočtov

Každý záznam typov zúčtovania má premennú služby - typ zúčtovania.

Typ výpočtu si možno predstaviť ako prvok špeciálnej referenčnej knihy typu "Plán typov výpočtu" - má tiež podrobnosti, tabuľkové časti, preddefinované a užívateľom zadané prvky. Systém môže obsahovať niekoľko takýchto „adresárov“.

Vytvoríme si napríklad plán výpočtových typov Základné a v ňom preddefinované výpočtové typy plat, cena, absencia, pracovná cesta.

Typy výpočtov sa funkčne používajú na vyjadrenie vzájomného vplyvu záznamov registra výpočtov. Stručne však hovoria o vzájomnom vplyve typov výpočtov:

Typ výpočtu

Popis

Príklad

Podľa základného obdobia

Výsledok výpočtu závislého obdobia závisí od výsledku základného obdobia. Ak sa zmení výsledok základného obdobia, potom treba prepočítať výsledok závislého obdobia.

Bonus závisí od základného obdobia zo mzdy.

Jazda podľa obdobia

Doba platnosti závislého obdobia vytláča dobu platnosti základného obdobia, takže základné obdobie má aktuálnu

Neprítomnosť ovplyvňuje skutočnú dobu platnosti mzdy.

Vedúce výpočty

Výpočet závisí od vedúceho výpočtu, ale nie priamo, ale nepriamo, t.j. výpočet A závisí od základného výpočtu B a výpočet B závisí od základného výpočtu C, preto A nepriamo závisí od C, t.j. A závisí od hlavného výpočtu B. V skutočnosti, keď sa zmení výpočet C, môže sa zmeniť aj B, a preto sa môže zmeniť aj A. Systém automaticky nesleduje také zložité závislosti, takže musíte uviesť, ktoré výpočty vedú.

Bonus závisí od základu platu, ale nepriamo závisí aj od absencie.

V dôsledku tohto vplyvu je doba platnosti záznamu z registra osídlenia rozdelená do štyroch období:

Obdobie

Popis

Obdobie registrácie

V akom období bola udalosť zaregistrovaná, t.j. zvyčajne pri zadávaní dokumentu.

Platnosť

V akom období je akcia platná, t.j. do akého obdobia udalosť patrí.

Základné obdobie

Má význam len pre obdobia so základným obdobím – popisuje interval základného obdobia.

Skutočná doba platnosti

Ak je doba platnosti nahradená inými typmi vyrovnania, skutočná doba platnosti pozostáva z niekoľkých období, kedy je tento typ vyrovnania skutočne platný.

Evidenčné obdobie je určené jedným číslom - začiatok obdobia zodpovedajúceho periodicite výpočtového registra. Aj keď v tomto poli služby nastavíme iný dátum, bude stále nahradený začiatkom obdobia. Ostatné obdobia sú špecifikované dvoma poliami - začiatok a koniec obdobia. Skutočné obdobie platnosti je súbor období, od r. môže mať viacero rozsahov dátumov.

Časové grafy

Systém má možnosť prepojiť údaje z účtovných registrov s časovými osami, takže za ľubovoľné obdobie môžete získať počet pracovných hodín.

Časová os je jednoduchá informačná kniha, kde jedna dimenzia ukladá dátum, iná je spojená s dimenziou pomocou knihy výpočtov a jeden zo zdrojov sa používa na sledovanie času.

Dimenzujte to spojené s registrom osídľovania zvyčajne nesiečo znamená „druh grafu“.

dátum

Zobrazenie grafu

Význam

11.01.05 Pia

Päť dní

11.01.05 Pia

Šesť dní

12.01.05 So

Päť dní

12.01.05 So

Šesť dní

Prečo sa používa dimenzia dátumu a nie periodická účtovná kniha? Všetko je veľmi jednoduché – ak máme 11. januára v piatok 8 pracovných hodín na päť dní, neznamená to, že na druhý deň budeme mať opäť 8 pracovných hodín. Ak by sme však použili periodický register, pri absencii záznamov by sa hodnota pre nasledujúci deň prevzala z predchádzajúceho dňa.

Tým, že máme určité obdobie (skutočný úkon, registrácia, základné obdobie, atď.), môžeme automaticky získať počet hodín pre toto obdobie podľa rozvrhu.

Prepočet

Prepočet je trochu ako hranica sekvencie. Keďže máme závislé výpočty, pri zmene ich základu a vedenia výpočtov si systém musí nejako všimnúť, že musíme prepočítať závislé výpočty.

Na to slúžia prepočty.

Ak počítame základné záznamy, tak systém v prepočtoch označí, že potrebujeme na výpočet závislých záznamov. Hneď ako vypočítame závislé záznamy, prepočty sa vymažú.

Prepočty sú v podstate zoznamom záznamov registra vyrovnaní, ktoré sa majú prepočítať.

Ak v prepočtoch nevytvoríte ani jeden rozmer, tak pri zmene základných prepočtov sa do zoznamu prepočtov zapíšu všetky závislé záznamy.

Ak v alokácii vytvoríme dimenziu "Zamestnanec", tak pri zmene výpočtu základu pre zamestnanca sa do alokácií pridajú závislé záznamy len pre tohto zamestnanca.

Praktická úloha

Dosť bolo teórie. Skúsme si detaily naštudovať v praxi. Ako základ si vezmime konfiguráciu wireframe.

Formulácia problému:

Príplatok nech je stanovený pevným percentom zo mzdy (okrem absencií a cestovných náhrad).

Cestovné náhrady nech sa vyplácajú v dvojnásobnej mzde + fixná výška platieb za každý deň zájazdu.

Nechajte zamestnanca pokutovať za neprítomnosť vo výške polovice platu za obdobie neprítomnosti.

Pokrok:

Počiatočná príprava

Vytvorme nový plán výpočtových typov "Základné".

Definujme typy výpočtov a závislosti medzi nimi:

Základné

Premiestňovanie

Vedenie

Plat

Absencia, služobná cesta

cena

Absencia, služobná cesta

Plat, absencia, služobná cesta

Pracovná cesta

Neprítomnosť

Zapíšme si tieto typy výpočtov do plánu výpočtových typov "Základné" a do vlastností výpočtových typov dajme závislosti podľa tabuľky.

V mzdovom registri urobme dimenziu „Zamestnanec“ typu „Jednotlivci“ – tak, aby register obsahoval analytickú časť podľa zamestnancov.

Konfigurácia už obsahuje doklad „Mzdy“.

V hlavičke má dva dátumy – „dátum“ a „obdobie registrácie“, ako aj dva dátumy „dátum začiatku“ a „dátum ukončenia“ v každom riadku.

Rozumie sa, že dátumom je len dátum vystavenia dokladu, registračné obdobie udáva, za ktorý mesiac počítame mzdu a dátumy v každom riadku popisujú dobu platnosti každého typu výpočtu.

Do modulu dokladu doplníme prvotné nastavenie premennej "Údaje" - zadáme do nej počiatočnú mzdu, nastavenie doby evidencie, doby platnosti a základného obdobia.

Modul dokumentu bude vyzerať asi takto:

Pre Každému TextStringList Zo zoznamu slučiek

// register Výpočty

Pohyb = Pohyb .Výpočty. Pridajte();

Pohyb .S torno= nepravda;

Pohyb .V idCalculation = Zobrazenie TextStringList.Calculation;

Pohyb .Obdobie pôsobenia Štart= začiatok dňa ( TextStringList.Počiatočný dátum);

Pohyb .Obdobie účinku Koniec= Koniec dňa ();

Pohyb .Obdobie registrácie = Obdobie registrácie;

Pohyb .B základné obdobie Zač= začiatok dňa ( TextStringList.Počiatočný dátum);

Pohyb .B základné obdobie Koniec= Koniec dňa ( TextStringList.Ending Date);

Pohyb .Zamestnanec = TextStringList.Employee;

Pohyb .Rozvrh = TextStringList.Chart;

Pohyb .Výsledok = 0;

Pohyb .Údaje = TextStringList.Size;

Koniec cyklu;

Atribút Storno je potrebný na obrátenie záznamov (podobne ako znamienko mínus).

Odložíme typ výpočtu, uvedieme dátumy na začiatok a koniec dňa. Samozrejme, že základné obdobie je možné nastaviť len pre typy výpočtu, ktoré sú závislé od základu a Údaje je možné nastaviť len pre mzdu, ale všetko tak funguje.

Všetky doklady budeme datovať 20. 1. 2003, doba registrácie bude stanovená na 1. 2. 2003 (konkrétne uvádzam nie počiatočné a konečné údaje, tu je to jedno, každopádne pri písaní Obdobie registrácie sa prepočítava na začiatok obdobia 01.01.2003). Použijeme január 2003, pretože na toto obdobie máme vyplnené harmonogramy prác.

Začnime prepočet „Prepočet“, pridajte k nemu dimenziu „Zamestnanec“ spojenú s dimenziou „Zamestnanec“.

Hráme sa s prepočtami.

Pre hru otvorte konzolu žiadosti - spracovanie " Vlastná žiadosť"V konfigurácii drôtového modelu. Vytvorme nový dotaz pomocou konštruktora dotazov, pridáme tam virtuálnu tabuľku Prepočty. Výpočty. Prepočet, text žiadosti bude vyzerať takto:

VYBRAŤ

CalculationsRecalculation.About objectRecalculation,

Výpočty,

VýpočtyPrepočet. So zamestnancom

OD

Register of Calculation.Calculation.Recalculation AKO VýpočtyPrepočet

Vytvoríme tri doklady - mzdu najskôr pripočítame zamestnancom A a B. Zamestnanec A pracuje od 1. do 31. januára, B pracuje od 1. do 20. januára. Druhému zamestnancovi B pripadne príplatok za obdobie od 1. januára do 31. januára a tretiemu bude pridelená absencia zamestnanca A od 20. do 25. januára.

Hráme sa s aktuálnym obdobím pôsobenia.

Vytvorme nový dotaz - tentoraz doň pridajte údaje tabuľky RegistreVýpočet.Výpočet.Skutočný.

Urobme si žiadosť a uvidíme, že doba platnosti mzdy zamestnanca A je rozdelená na dve obdobia - od 1. do 19. a od 26. do 31. januára. Dúfam, že chápete, že obdobie bolo rozdelené na dve časti, pretože absencia nahradila plat.

Myslím si, že mechanizmy výpočtového registra sa nám vyjasňujú pred očami.

Skúmanie grafov.

Teraz skúsme vypočítať mzdu zamestnanca.

Vytvorme nový dotaz na výpočtový register pomocou virtuálnej tabuľky RegistersCalculations.Calculations.DataGraphics... Pre túto virtuálnu tabuľku môžete nastaviť parameter – podmienku výberu záznamov napr Zamestnanec = & Vybraný zamestnanec a Typ vysporiadania = & Typ vysporiadania a Graf = & Grafické zobrazenie.

Nastavíme parametre požiadavky pre konkrétnych zamestnancov, typy výpočtov a rozvrhov a uvidíme, koľko hodín sa tým získa.

Stĺpec výsledkov

Význam

ValuePeriodAction

Za akú dobu platnosti v hodinách bol záznam v registri.

Hodnota Skutočné obdobie

Koľko hodín zamestnanec skutočne odpracoval v hodinách

Obdobie základu hodnoty

Pre mzdu to nemá zmysel, pre bonus - počet odpracovaných hodín v základnom období.

Obdobie registrácie hodnoty

Koľko pracovných hodín počas registračného obdobia (mesiac január)

V tomto článku zvážime teoretický základ pracovať s kalkulačnými registrami, ako aj vykonávať výpočet mzdy zamestnanca v pomere k počtu odpracovaných hodín.

teória

Register výpočtov (RR)- objekt konfiguračných metaúdajov používaný na implementáciu periodických výpočtov v systéme 1C. Zo samozrejmých oblastí použitia kalkulačných registrov možno rozlíšiť: výpočet miezd, výpočet nájomného, ​​výpočet nájomného.

Výpočtové registre majú podobnú štruktúru ako akumulačné registre alebo informačné registre. Rovnako ako akumulačné registre majú rozmery, zdroje, detaily, ale princíp fungovania kalkulačných registrov je úplne iný.

V podstate merania v akumulačnom registri slúžia ako „ filter»V rámci ktorých dostávame údaje z akumulačného registra. Ako príklad uvedieme „zostatky“ podľa akumulačného registra „Zostatky tovaru“ v kontexte určitej nomenklatúry alebo „úsek tej druhej“ podľa registra informácií „Platy zamestnancov“ v kontexte určitého zamestnanca. Na rozdiel od akumulačného registra sa merania v periodickom kalkulačnom registri používajú na realizáciu „“ (to je vtedy, keď si typy kalkulácií rozšírené v čase konkurujú na intervale doby platnosti záznamu, napr. pracovná cesta typ výpočtu nahrádza typ výpočtu mzdy o dobu platnosti) a „“ (Vtedy typ výpočtu prémie závisí od typu výpočtu mzdy za minulé obdobia).

vytesňovací mechanizmus podľa doby pôsobenia«:

Tu vidíme, že typ kalkulácie „Služobná cesta“ má časovú dĺžku a je platný od 10. do 20. apríla, „Služobná cesta“ je označená ako vytesňujúci typ kalkulácie pre typ kalkulácie „Plat“. „Plat“ má tiež dĺžku a platí od 1. do 30. apríla. Nakoľko pre typ výpočtu "Mzda" sa ako vytesňujúci typ výpočtu "Mzda" uvádza "Služobná cesta" (má vyššiu prioritu ako mzda) a platí po dobu platnosti mzdy, mzda je vytláčaná pracovnou cestou a vzniká „Skutočná doba platnosti mzdy". „Skutočná doba platnosti mzdy. »Ide o dobu platnosti mzdy po vytlačení pracovnou cestou, v našom prípade pozostáva z 2 období - od 1. apríla do 9. apríla a od 21. do 30. apríla a spolu je 19 dní. Mechanizmus posunu na základe periódy funguje len pre výpočty, ktoré sú časovo predĺžené.

Obrázok vyššie graficky znázorňuje princíp „ mechanizmus závislosti od základného obdobia«:

Povedzme, že na konci apríla 2017 chceme zamestnancovi pripísať bonus vo výške 10 % z jeho mzdy. Mzda je uvedená ako základné typy výpočtu bonusu.

Ale ako "základ" pre výpočet poistného si nevezmeme celý mesiac apríl, ale len interval od 10. apríla do 20. apríla (11 dní). Vypočítajme základ pre bonus, mzda zamestnanca je 60 000 rubľov, v mesiaci máme 30 dní, denná mzda = 60 000/30 = 2 000 rubľov. Potom 2000 * 11 = 22 000 rubľov. Základom pre výpočet poistného je 22 000 rubľov.

Vypočítajme prémiu: (22000/100) * 10 = 2200 rubľov. Bonus vo výške 10% z platu je 2200 rubľov.

S knihou zúčtovania úzko súvisí aplikačný objekt metadát "Plán typov zúčtovania".

Plán typu výpočtu (PVR)- objekt metadát konfigurácie, ktorý ukladá informácie o typoch typov výpočtov a určuje vplyv rôznych výpočtov na seba.

Jeden graf typu výpočtu možno použiť vo viacerých knihách kalkulácií, ale jedna kniha kalkulácií nemôže používať niekoľko plánov typu výpočtu súčasne.

Výpočtový register je tabuľka, v ktorej sú uložené vypočítané údaje a v pláne typov výpočtov sú uložené algoritmy na výpočet týchto údajov. Mzdová evidencia musí mať aspoň jednu evidenciu dokladov, ktorá robí pohyby v mzdovej evidencii (napríklad Mzdová evidencia).

Mechanizmy zúčtovania v systéme 1C Enterprise sú navrhnuté tak, že najskôr je potrebné vykonať záznamy v registri zúčtovania a až potom vykonať výpočet na základe týchto údajov. Napríklad nemôžete vypočítať prémiu na základe mzdy, kým tá istá mzda nebude zaznamenaná v registri výpočtov.

Cvičte

Pozrime sa bližšie na výpočtové registre v praxi:

Krok 1 Začnime s tabuľkou typov výpočtov. Pred vytvorením knihy vyrovnania musíte vytvoriť tabuľku typov vyrovnania. Plán typov výpočtov vytvárame pred výpočtovým registrom, pretože pred vytvorením tabuľky na ukladanie vypočítaných údajov (t. j. výpočtového registra) je potrebné špecifikovať algoritmy na výpočet týchto údajov (t. j. plán typov výpočtov).

Vytvorme si plán výpočtových typov "Základné poplatky". Okamžite prejdeme na kartu „Výpočet“. Tu okamžite vidíme vlajku “ Používa dobu platnosti", Keď je tento príznak nastavený, budú mať všetky typy výpočtov zahrnuté v tomto pláne dĺžka v čase(napríklad Mzda, Pracovná cesta) a pre tento plán typov výpočtu: vytesňovací mechanizmus podľa doby pôsobenia". Ak nie je zaškrtnuté políčko „Použije dobu platnosti“, potom typy výpočtu nebudú mať dĺžku v čase (napríklad Bonus, Penalizácia) a nebude fungovať „mechanizmus predkupného práva podľa doby platnosti“. Na tejto karte sú tiež sekcie „Závislosť od základne“ a „Základné grafy typov výpočtov“ - používajú sa na implementáciu „ mechanizmus závislosti od základného obdobia“, Ale o tom si povieme neskôr. Zatiaľ nechajme "Základnú závislosť" v režime "Nezávisí".

Vytvorme si preddefinovaný typ výpočtu „Plat“. Na karte „Všeobecné“ je všetko jednoduché. Nastavíme názov a kód typu výpočtu.

Vďaka tomu, že sme nastavili vlajku " Používa dobu platnosti"Teraz máme kartu" Premiestňovanie"A zapnuté" dobový posunový mechanizmus«.

Na tejto záložke uvádzame typy výpočtu, ktoré posunú mzdu o dobu platnosti (napríklad Pracovná cesta).

Poznámka: v "Premiestnenie" môžete pridať typy výpočtov patriace len do tohto plánu typov výpočtov.

Je tam aj záložka „ Vedenie"- označuje typy výpočtu pri zmene, ktoré sa majú prepočítať aktuálny pohľad kalkulácia. Tu môžete zadať aj typy výpočtov z iných plánov typov výpočtov. Napríklad typ výpočtu „Mzda“ je vedúcim typom výpočtu „Bonus“, t.j. pri zmene mzdy treba prepočítať aj bonus. bonus sa vypočíta v závislosti od mzdy. V tomto prípade typ výpočtu „Mzda“ patrí do PVR „Základné časové rozlíšenie“ s použitím doby platnosti a typ výpočtu „Bonus“ patrí do PVR „Doplatky“, ktorý nevyužíva dobu platnosti.

Krok 2.Vytvorte referenciu "Grafy" s predvolenou štruktúrou. V referenčnej knihe "Rozvrhy" budeme ukladať pracovné režimy zamestnancov (päťdňový, šesťdňový atď.).

Krok 3Ďalej potrebujeme objekt, do ktorého budeme ukladať Výrobný kalendár (pracovné dni a víkendy). Na tieto účely používame neperiodický nezávislý informačný register.

Vytvorme si neperiodický nezávislý register informácií „Rozvrhy prác“ s 2 dimenziami „Dátum“ a „Rozvrh“ a zdroj „Počet hodín“.

Vďaka registru informácií „Rozvrhy prác“ budeme vedieť vypočítať mzdu zo mzdy v pomere k počtu odpracovaných dní.

Krok 4.Vytvorte dokument „Mzdy“ so štruktúrou údajov zobrazených nižšie:

Požiadavky:

Spustenie promptu nastavíme na hodnotu „Zakázať“ odkedy pre mechanizmus periodického zúčtovania v 1C to nedáva zmysel - nikdy neúčtujeme bonus, plat ani pokutu v reálnom čase.

Vytvorme formulár dokumentu s predvolenými nastaveniami.

Krok 5... Nakoniec sme sa dostali k tvorbe výpočtových registrov.

Objekt metadát výpočtového registra sa nachádza vo vetve Výpočtové registre konfigurátora.

Vytvorme register výpočtu "Základné poplatky". Zvážte nastavenia registra výpočtov nižšie:

1. V poli „Plán typov výpočtov“ uveďte IRR „Základné poplatky“ vytvorené v kroku 1.

2. Nastavte príznak "Platnosť" na hodnotu "Pravda" odvtedy PVR špecifikovaný v kroku 1 má dĺžka v čase.

Po nastavení tohto príznaku sa nám okamžite sprístupnia štandardné detaily „Obdobie platnosti“, „Začiatok obdobia platnosti“, „Koniec obdobia platnosti“, čo znamená, že typy výpočtov evidované v tomto registri výpočtov majú dĺžka v čase a bude k dispozícii u nás " vytesňovací mechanizmus podľa doby pôsobenia«.


P.S. Ak zadáte TAP s dĺžka v čase pre PP s príznakom "Platnosť" nastaveným na "False", potom tento TAP bude fungovať ako TAP bez dĺžka v čase.

3. Po nastavení príznaku „Obdobie platnosti“ na hodnotu „True“ sa nám sprístupnia polia „Graf“, „Hodnota grafu“, „Dátum grafu“.

V poli „Plán“ uveďte informačný register „Rozvrh“ vytvorený v kroku 3.

V poli "Hodnota rozvrhu" uveďte zdroj "Počet hodín" informačného registra "Rozvrhy".

V poli „Dátum harmonogramu“ uveďte dimenziu „Dátum“ registra informácií „Rozvrh“.

4. V poli „Frekvencia“ uvádzame hodnotu „Mesiac“, čo znamená, že údaje sa budú do registra zapisovať na mesačnej báze.

Nižšie je uvedená štruktúra metadát registra:

Príznak „Základné“ pre dimenziu ovplyvňuje iba výkon, možno ho ponechať nezačiarknutý, ale ak je začiarknutý, pole „Zamestnanec“ bude indexované.

Dimenzia "Zamestnanec" - používa sa v " vytesňovací mechanizmus podľa doby pôsobenia" a " mechanizmus závislosti od základného obdobia«.

Zdroj "Suma" - napíše sa tam vypočítaná mzda.

Premenná „Rozvrh“ je špecifikovaná ako atribút, nie ako dimenzia registra. ani on, ani on nič nevytesňuje – vlastne referenčné pole. Dôležité!!! Nezabudnite vyplniť pole „Odkaz na rozvrh“. pri premennej „Rozvrh“ musí byť uvedená dimenzia „Rozvrh“ informačného registra „Rozvrh“, inak sa mzda nevypočíta.

Atribút "Parameter" uloží hodnotu mzdy.

Teraz, keď sme naznačili prepojenie s PC „Rozvrhy práce“, mzda zamestnanca sa vypočíta v pomere k počtu odpracovaných dní.

Ako registrátor uvádzame dokument „ Mzda“Vytvorené v kroku 4.

Krok 6... Vykonávame pohyby v registri výpočtu "Základné poplatky".

Vráťme sa k dokumentu „Mzdy“ vytvorenému v kroku 4.

Popíšme si spracovanie transakcie v module objektu dokumentu:

Fragment kódu spracovania dokumentu

1C (kód)

Postup Spracovanie účtovania (odmietnutie, režim účtovania) // registrácia MainAcountsMotion.MainCalculations.Write = True; Movements.MainCalculations.Clear (); Obdobie registrácie = Počiatočný mesiac (dátum); Pre každý TekStringBasicAccounts from BasicAccounts Cycle Movement = Movement.MainCalculations.Add (); Hnutie Storny = lož; Movement.CalculationType = CurrentStringBasicAccounts.Calculation Type; Movement.Action PeriodStart = CurrentStringMainAccounts.StartDate; Movement.ActionPeriodEnd = Deň ukončenia (CurrentStringBasicAccounts.EndDate); Movement.Registration Period = Obdobie registrácie; Movement.Employee = TechStringBasicAccounts.Employee; Movement.Chart = TekStringBasicAccounts.Chart; Movement.Parameter = TekStringMainCalculations.Size; Koniec cyklu; Koniec procedúry

Postup spracovania účtovania (odmietnutie, režim účtovania)

// register Main

Pohyb. Základné časové rozlíšenie. Napísať = Pravda;

Pohyb. Základné časové rozlíšenie. Jasný ();

Obdobie registrácie = Počiatočný mesiac (dátum);

Pre každý riadok textu

Pohyb = Pohyb. Základné časové rozlíšenie. Add() ;

Pohyb. Storno = nepravda;

Pohyb. Typ výpočtu = CurrentStringMainCalculations. Typ výpočtu;

Pohyb. Platnosť PeriodStart = CurrentStringMainCalculations. dátum začiatku;

Pohyb. Validity PeriodEnd = EndDay (CurrentStringBasicAccounts .EndDate);

Pohyb. Registračné obdobie = Registračné obdobie;

Pohyb. Zamestnanec = TekStringBasic Accruals. zamestnanec;

Pohyb. Graf = TekStringMainCalculations. Rozvrh;

Pohyb. Parameter = CurrentStringMainCalculations. Veľkosť;

Koniec cyklu;

Koniec procedúry

Vytvoríme testovací dokument a spustíme ho:

Poďme na "Pohyby dokumentov":

Vidíme, že registračné obdobie bolo nastavené ako začiatok mesiaca, od r frekvencia RR je označená ako "Mesiac". Tiež vidíme, že sú vyplnené všetky polia okrem sumy (mzda ešte nie je vypočítaná).

Krok 7.Napíšeme mzdový kód.

Vytvorme všeobecný modul „Výpočet“ s nasledujúcimi príznakmi:

V tomto všeobecnom module prebehne samotný výpočet.

Napíšme do modulu „Výpočet“ funkciu exportu „Výpočet poplatkov“:

Keďže sme v nastaveniach PP „Základné poplatky“ vyplnili polia „Tabuľka“, „Hodnota grafu“, „Dátum grafu“, máme teraz prístup k virtuálnej tabuľke kalkulačného registra. DataGraphics, v dotaze na virtuálnu tabuľku nás zaujímajú polia:

"Počet hodín skutočného obdobia" - obsahuje počet skutočne odpracovaných hodín vypočítaný na základe údajov z grafu

"Počet hodín Obdobie prevádzky" - obsahuje počet pracovných hodín vo výpočtovom období vypočítaný na základe rozvrhových údajov

Mzdový postup

1C (kód)

Postup Výpočet časového rozlíšenia (register, množina záznamov) Export // Žiadosť o mzdu = Nová požiadavka; Zapros.Tekst = "SELECT | ESTNULL (OsnovnyeNachisleniyaDannyeGrafika.KolichestvoChasovFakticheskiyPeriodDeystviya, 0) AS ChasovFakt, | OsnovnyeNachisleniyaDannyeGrafika.Parametr, | ESTNULL (OsnovnyeNachisleniyaDannyeGrafika.KolichestvoChasovPeriodDeystviya, 0) AS ChasovPlan, | OsnovnyeNachisleniyaDannyeGrafika.NomerStroki | Z | RegistrRascheta.OsnovnyeNachisleniya.DannyeGrafika (| Recorder = & Registrátor | A Typ vysporiadania = & Typ vysporiadania Mzda) AKO Základné údaje grafu časového rozlíšenia "; Request.SetParameter ("Registrátor", Registrátor); // prenesie dokument do registrátora tak, že vyhľadávanie sa vykoná len na aktuálnom dokumente Request.SetParameter ("Typ zúčtovania", Plans of Settlement Types.MainCalculations.Ware); // nastavíme typ výpočtu mzdy od r vypočítať mzdu Vzorka = Request.Run ().Vybrať (); Štruktúra vyhľadávania = Nová štruktúra; SearchStructure.Insert ("LineNumber", 0); // vytvorenie štruktúry na získanie údajov na výpočet podľa čísla riadku Pre každý cyklus záznamu zo sady záznamov // cyklus cez sadu záznamov aktuálneho dokumentu SearchStructure.StringNumber = Record.LineNumber; // vyplňte číslo riadku pre vyhľadávanie If Selection.FindNext (SearchStructure) Then // vyhľadajte údaje vo výbere pre výpočet podľa aktuálneho čísla riadku Record.Sum =? (Sample.HoursPlan = 0.0, Sample.HoursFact / Sample. Plán hodín * Vzorový .Parameter); // vypočítam mzdu v pomere k odpracovaným dňom, v Parameter - aktuálna mzda EndIf; Fetch.Reset (); // resetovať výber, chceme, aby ďalší záznam v sade záznamov hľadal výber ako prvý End of Loop; Recordset.Write (, Pravda); // zapíšeme vypočítané záznamy do databázy, predáme parameter Replace = True EndProcedure

//Plat

Žiadosť = Nová požiadavka;

Dopyt. Text = "VYBRAŤ

| JE NULL (BasicAcountGraphicsData.Number of HoursActualActionPeriod, 0) AS HoursFact,

| BasicAccountingDataGraphics.Parameter,

| JE NULL (Basic AccrualsGraphicsData. Počet hodínObdobie akcie, 0) AS HoursPlan,

| BasicAccountsDataGraphics.NumberStrings

| OD

| Register výpočtov.BasicAccruals.DataGraphics (

| Registrátor = & Registrátor

informačný register, ktorý bude obsahovať graf použitý pri výpočte. V našom prípade je to register WorkingDaysPodľa plánu... V teréne Hodnota grafu vybrať si Pracovný deň- v tomto zdroji informačný register sa zachová 1, ak je deň pracovným dňom. V teréne Dátum plánu vyberte rozmer registra dátum.

Nastavte vlajku Základné obdobie.

Nastavíme v skupine parametrov Periodicita parameter mesiac.

Poďme na kartu Údaje... Tu nastavíme nasledujúce parametre, obr. 1.11:


Ryža. 1.11.

Meranie zamestnanec- typ DirectoryRef.Employees, vlajka Základné nastaviť. Do tejto dimenzie uložíme zamestnanca, pre ktorého sa výpočet vykonáva.

Zdroj Výsledok- typ číslo, dĺžka 10, presnosť 2. Práve tento zdroj bude obsahovať vypočítanú hodnotu typu výpočtu zadaného pre zamestnanca. Výsledok bude obsahovať hodnotu v rubľoch, to je to, čo určuje parametre typu údajov, ktoré sa na to používajú.

Rekvizity Počiatočné údaje- typ číslo, dĺžka 10, presnosť 2. Do tejto premennej zapíšeme počiatočné údaje pre výpočet. Napríklad pre typ výpočtu Plat tu vypíšeme pôvodnú mzdu, pre typ výpočtu cena- percento, ktoré by sa malo odobrať z výpočtového základu pre daný typ výpočtu Udržanie- výška zrážky v rubľoch.

Rekvizity Rozvrh- typ ReferenceRef.Graphs... Do tejto náležitosti uložíme rozvrh, ktorý zodpovedá zamestnancovi, ktorému mzdu počítame. V majetku tejto rekvizity Vzťah k rozvrhu nastaviť meranie Rozvrh informačný register Pracovné harmonogramy... Práve vďaka tomuto nastaveniu budeme môcť používať rôzne rozvrhy práce pre rôznych zamestnancov (päťdňové, šesťdňové) a pri výpočte získať pre každý rozvrh správny počet pracovných dní.

Pred pokračovaním v úprave nastavení výpočtový register, musíme vytvoriť dokument, ktorý bude vytvárať pohyby pozdĺž registra osídľovania.

1.6. Doklad o mzdách

Vytvorme nový dokument, pomenujeme ho Mzda... Tento dokument by mal mať nasledujúce funkcie:

  1. Možnosť manuálneho zadávania poplatkov;
  2. Tvorba pohybov na registra osídľovania ;

Poďme na kartu Údaje ukotviteľný panel vlastností dokumentu Mzda, ryža. 1.12. Vytvorte rekvizity dokumentu Obdobie registrácie- typ dátum, zloženie rande je dátum.


Ryža. 1.12.

Vytvorme tabuľkovú sekciu Časové rozlíšenie a zádržné... Vytvorme v ňom nasledujúce atribúty:

Teraz poďme na kartu Pohyb... Zakázať prevádzku držanie dokumentov, pridajte register Časové rozlíšenie a zádržné.

Kliknite na tlačidlo Konštruktor pohybu... Otvorí sa okno konštruktora, obr. 1.13.


Ryža. 1.13.

Pri vypĺňaní polí, ktoré definujú pravidlá tvorby pohybov, ich vyplníme nasledovným spôsobom:

BasePeriodStart a BasePeriodEnd konštruktor nevyplníme. Tieto polia potrebujeme pre typ výpočtu cena, preto ich vyplníme v kóde postupu spracovania pre tento typ zúčtovania.

Kliknite na tlačidlo OK v okne konštruktora pohybu a pozrite sa, aký kód vygeneroval:

Postup ProcessingPerformance (Odmietnutie, režim) // ((__ CONSTRUCTOR_MOVEMENT_REGISTERS // Tento fragment vytvoril konštruktor. // Keď konštruktor znova použijete, zmeny vykonané ručne sa stratia !!! Pridať (); Dvizhenie.Storno = False ; Dvizhenie.VidRascheta = TekStrokaNachisleniyaIUderzhaniya.VidRascheta; Dvizhenie.PeriodDeystviyaNachalo = TekStrokaNachisleniyaIUderzhaniya.DataNachala; Dvizhenie.PeriodDeystviyaKonets = TekStrokaNachisleniyaIUderzhaniya.DataOkonchaniya; Dvizhenie.PeriodRegistratsii = PeriodRegistratsii; Dvizhenie.Sotrudnik = TekStrokaNachisleniyaIUderzhaniya.Sotrudnik ;. pohyb InitialData = CurrentAcountAndRetentionString.InitialData; Movement.Chart = CurrentAcountAndRetentionString.Chart; Koniec cyklu; //)) __ MOVEMENT_REGISTERS_ CONSTRUCTOR EndProcedure

Je zrejmé, že pre každý riadok tabuľkovej časti sa vytvorí nový prvok zbierky dokumentov Pohyby, časové rozlíšenie a zadržanie, po ktorom sa vyplnia vlastnosti nového prvku.

Upravme tento kód takým spôsobom, aby sme nastavili parametre základné obdobie pre typ časového rozlíšenia cena... Za týmto účelom skontrolujeme typ výpočtu prítomný v spracovanom riadku, ak je - cena- nastaviť parametre základné obdobie... Vložme nasledujúci kód do cyklu na spracovanie riadkov tabuľkovej časti:

Ak CurrentAccrualAndRetention.CalculationType = CalculationType.Main.PriceThen Movement.BasicPeriodStart = StartMonth (Registračné obdobie); Movement.BasePeriodEnd = EndMonth (RegistrationPeriod); Koniec Ak;

Teraz trochu zmeníme časť kódu, ktorá nastavuje začiatok a koniec. dobu platnostičasové rozlíšenie. V našom prípade je potrebné „vybaviť“ len jeden typ časového rozlíšenia dobu platnosti, ktorá bude výslovne nastavená používateľom. toto - Neprítomnosť... Pre všetky ostatné sa doba platnosti bude rovnať jednému mesiacu - začiatok obdobia sa zhoduje so začiatkom mesiaca, za ktorý sa vypláca mzda, koniec dobu platnosti sa bude zhodovať s koncom mesiaca. Preto sme, aby sme zbavili užívateľa dokumentu Mzda od zadávania nepotrebných hodnôt pridajte do nášho modulu nasledujúci kód a umiestnite ho do cyklu na spracovanie riadkov tabuľkovej časti:

If Movement.CalculationType = PlansCalculationTypes.Main.Walk Then Movement.ActionPeriodStart = CurrentAccrualAndDeterline.Start Date; Movement.ActionPeriodEnd = CurrentAccrualAndRelay.EndDate; V opačnom prípade Motion.ActionPeriodStart = StartMonth (RegistrationPeriod); Movement.ActionPeriodEnd = EndMonth (RegistrationPeriod); Koniec Ak;

Tento kód nahradí riadky

Movement.Action PeriodStart = CurrentAccountAndRetentionStart.Date; Movement.ActionPeriodEnd = CurrentAccrualAndRelay.EndDate;

Po všetkých týchto úkonoch doklad pri zaúčtovaní doplní údaje pre výpočet do účtovnej knihy. Poďme si to overiť. Začnime našu konfiguráciu v režime 1C: Enterprise, vytvorte nový dokument Mzda, vyplňte ho údajmi a skontrolujte, ako sa tieto údaje prejavili registra osídľovania po drží dokument.

Pred vytvorením skutočného dokladu o mzdách musíte vstúpiť do adresára Pracovné harmonogramy aspoň pár grafov a vyplňte k nim register Pracovné dni podľa plánu... Vyplňme tento register ručne, napríklad na pár grafov na jeden mesiac.

Na obr. 1.14 môžete vidieť nami vyplnený doklad a pohyby v ňom registra osídľovania, ktorý vytvoril po vykonaní, po vypracovaní kódu, ktorý sme napísali vyššie.

Ak je všetko správne prevedené a v našom prípade je to presne tak, môžeme pristúpiť k implementácii postupu výpočtu. Urobíme to v rovnakom module, v ktorom sa vykonáva tvorba pohybov.

Hneď by som rád poznamenal, že v existujúcich konfiguráciách sa zvyčajne používa niekoľko ďalších metód implementácie výpočtových postupov. Charakterizuje ich najmä nasledujúca postupnosť akcií. Keď dokument vytvorí pohyby v registri, údaje sa zapíšu do registra, po ktorom sa kontrola prenesie do postupu výpočtu všeobecného modulu s nastavenou vlastnosťou. Server, čo je relevantné, ak systém pracuje v režime klient-server. V procedúre pomocou dotazu na tabuľky výpočtový register, prijímať zaznamenané údaje a vykonávať s nimi manipuláciu. Všetky tieto akcie v konečnom dôsledku vedú k zvýšeniu výkonu. aplikované riešenia, ktorý možno použiť v rôznych režimoch na prácu s veľkým množstvom údajov. Podstata akcie je rovnaká ako v našom príklade, ale implementácia je iná. Hlavným cieľom nášho študijného príkladu je ukázať princípy, ktorými sa uskutočňuje riešenie výpočtových problémov, preto sa tu sústreďujeme na základné princípy bez toho, aby sme venovali pozornosť optimálnosti kódu alebo jeho výkonu.

Pridajme k postupu drží dokument príkaz na zaznamenanie vygenerovaných pohybov:

Pohyb.Účtovníctvo a držba.Napíšte ();

Tento príkaz musí nasledovať po príkaze na uzavretie cyklu tvorby pohybu.

Pridajme do kódu blok výpočtu retencie. V súlade s logikou vyššie uvedených typov výpočtov tu iba kopírujeme Počiatočné údaje pre Udržanie v Výsledok.

Pre každý pohyb z cyklu Movement.AccountingAnd Holding If Movement.Calculation Type = Plans of CalculationTypes.Main.Calculation Then Movement.Result = Movement.Initial Data; Koniec Ak; Koniec cyklu; Pohyb.Účtovníctvo a držba.Napíšte ();

Teraz prejdime k výpočtu platu.

Pre každý pohyb z cyklu Movement.AccountingAnd Holding If Movement.Calculation Type = Plans of Calculation Types.Basic.Parse Then Plan = Movement.GetGraph Data (CalculationRegisterPeriod.Action Period); Fakt = Movement.GetGraphicalData (CalculationRegisterPeriod.ActualActionPeriod); Movement.Result = Movement.InitialData * Actual.WorkDay / Plan.WorkDay; Koniec Ak; Koniec cyklu; Pohyb.Účtovníctvo a držba.Napíšte ();

Metóda GetDataGraphics záznamy výpočtový register vráti údaje grafu vo forme tabuľky hodnôt, navyše sa táto metóda volá s parametrom typu KindPeriodRegisterCalculation... Ak to nazvete akousi bodkou Platnosť- údaje budú vrátené podľa harmonogramu, zohľadňujúc v našom prípade celkový počet pracovných dní. Volanie metódy s typom obdobia Skutočné obdobie vráti dané údaje premiestňovanie typov výpočtu.

Záznam formulára Fakty vám umožňuje odkázať na riadok tabuľky hodnôt. A nahrávaním Fakt.Pracovný deň(pripomeňme si Pracovný deň je názov zdroja informačný register, ktorý sa používa ako graf) „vytiahneme“ požadované údaje. V našom prípade je to v skutočnosti počet odpracovaných pracovných dní.

V dôsledku toho po získaní potrebných údajov vykonáme nasledujúce manipulácie: skutočný počet odpracovaných dní vydelíme plánovaným a vynásobíme platom.

A nakoniec, poslednou fázou nášho výpočtového problému je výpočet poistného. Implementujeme ho pomocou nasledujúceho kódu:

Zdroje = Nové pole (1); Zdroje = "Časové rozlíšenie A zrážky. Výsledok"; Dimenzie = Nová štruktúra ("Zamestnanec", "Časové rozlíšenie a udržanie. Zamestnanec"); Pre každý pohyb z pohybu. Cyklus účtovania a držania Ak Pohyb. Typ výpočtu = Typy výpočtov. Základné. Cena PotomBaseData = Pohyb. ZískaťBase (zdroje, merania); Movement.Result = Movement.InitialData * BaseData.Result / 100; Koniec Ak; Koniec cyklu; Pohyb.Účtovníctvo a držba.Napíšte ();

Najprv si pripravíme parametre na prechod do metódy Získajte základňu... Toto bude pole Zdroje ktorý v našom prípade obsahuje názov základného zdroja výpočtový register vo formáte "RegisterName.ResourceName"... Pripravíme aj štruktúru Merania... Do štruktúry pridáme nový prvok, ktorého názov je zhodný s názvom dimenzie výpočtový register ("zamestnanec") a hodnota obsahuje zoznam dimenzií (vo formáte "RegisterName.DimensionName"), v našom prípade ide o jeden rozmer. Tieto údaje sa použijú na získanie výpočtového základu pri výpočte poistného.

V slučke zapisujeme do premennej databázy výsledky vykonania metódy Získajte základňu pre aktuálny záznam výpočtový register(teda pre typ výpočtu cena). Metóda Získajte základňu vráti tabuľku hodnôt, v riadkoch ktorej sú uložené údaje požadované pri volaní metódy.

Zapamätajme si názov zdroja výpočtový register, v ktorej sú uložené výsledky výpočtov - ide o zdroj Výsledok... Práve pod týmto názvom môžeme odkazovať na riadok tabuľky hodnôt (v našom prípade je to jeden riadok s indexom 0) a získať vypočítaný základ.

Po prijatí vymeriavacieho základu vypočítame výšku poistného. Keďže pri vypĺňaní dokladu sa predpokladá, že percento poistného zadávame v tvare počtu percent (10, 40 atď.), na zistenie výšky poistného musíme zadané rozdelenie rozdeliť. percento z poistného 100 a následne vynásobiť výsledným vypočítaným základom.

Po dokončení všetkých vyššie uvedených krokov môžeme naše riešenie otestovať v praxi. Ak je všetko vykonané správne - v

Zdieľajte to