Transformarea raportării rusești folosind Excel. Ce este cartografierea

Problemă

Ați descărcat un raport de contabilitate a costurilor și doriți să îl afișați conducerii. Pentru a face acest lucru, trebuie să compilați datele din elementele contabile - în funcție de elementele contabile de gestiune. Știți cum se leagă între ele articolele contabile și cele contabile, dar de fiecare dată pregătirea manuală a unui astfel de raport vă ia prea mult timp.

Soluţie

Vom considera acest caz ca o continuare a celui precedent. Să ne imaginăm că ați creat următorul director în Excel:

Fig.2.1. Director: cartografierea articolelor BU și CU


În stânga este un element de cost (AC), în dreapta este un articol contabil de gestiune (MA). Este important ca elementul de cost să apară o singură dată în prima coloană, altfel mecanismul de mapare nu va funcționa corect.

(Apropo, maparea cuvintelor în limba engleză este tradusă ca afișare sau corespondență, deci cartea de referință în în acest caz,- asta e ceva regula generala modul în care articolele BU sunt reflectate în articolele OU).

Fig.2.2. Tabel plat: raport de cost (din „Cifrarea de afaceri a contului 20”)


Vă rugăm să rețineți că în coloana a 7-a a apărut coloana „Articolul TC”. Vizavi de fiecare element de cost am plasat un articol contabil de gestiune. Acest lucru se poate face manual, dar este mult mai convenabil să utilizați acest instrument:

Fig.2.3. Tabel plat: raport de cost (din „Cifrarea de afaceri a contului 20”)


În partea de jos a formularului sunt numele paginilor: „Acasă” este un tabel plat care conține date de cost (Fig. 2.2), „spr” este o carte de referință (Fig. 2.1).

Numerele coloanelor sunt indicate în partea de sus a formularului. Deci, în acest caz, dacă datele din coloanele 1 ale directorului și 3 ale paginii principale coincid, atunci datele din coloana a 2-a a directorului sunt copiate în coloana a 7-a a paginii principale.

Acest formular are și multe opțiuni suplimentare. De exemplu, puteți activa casetele de selectare „Feature #2” și „Feature #3”, iar apoi transferul datelor din coloana 2 a directorului în coloana 7 a paginii principale va fi posibil dacă directorul și pagina principala Voi potrivi două sau chiar trei detalii deodată.

Ca urmare a unei operații atât de simple, folosind un tabel pivot, puteți construi o serie de rapoarte analitice diferite, în care una dintre secțiuni va include analiza „Articol OU”. De exemplu, așa:

Fig.2.4. Raport de cost pentru atelierul de armare


Comparația cartografierii cu VLOOKUP()

Mulți utilizatori sunt familiarizați și folosesc funcția VLOOKUP() în aceste tipuri de situații. in orice caz Funcția VLOOKUP() funcționează bine numai pe volume mici date, în timp ce acest formular se descurcă bine cu procesarea tabelelor Excel, chiar dacă aveți, să zicem, 5.000 de rânduri în cartea de referință și 300.000 de rânduri pe pagina goav. Încercați să-l verificați și veți vedea că VLOOKUP() eșuează la astfel de volume. În plus, funcția VLOOKUP() creează o încărcare semnificativă pe Excel, forțându-l să efectueze cantități mari de calcule. Formularul de mapare evită acest dezavantaj: rulează o singură dată, durează câteva secunde (pentru volume mari de minute) și după aceea nu există încărcare suplimentară pe fisier Excel nu mai este creat.

Ai auzit de cartografiere? În transcrierea rusă este mapping, mapping. Conceptul are mai multe semnificații care nu sunt legate între ele. Să ne uităm la fiecare dintre ele în contextul zonei în care sunt relevante.

Ce înseamnă conceptul în general?

Mapping, mapping, mapping, mapping este determinarea corespondenței informațiilor dintre două semantici diferite ale unui obiect sau mai multor. Cu alte cuvinte, acesta este numele pentru conversia datelor dintr-un formular în altul.

Ce este cartografierea? În sensul său general, termenul este destul de larg - poate fi fie o transformare scrupuloasă a unei secvențe de elemente în alta, fie conversie normală valută, dosare. Astfel, tot ceea ce este ascuns sub termenul analizat este cel mai bine exprimat de conceptul de mapare a datelor în limba engleză.

Exemple de cartografiere

Să ne uităm la ce este maparea folosind următoarele exemple:

  • Întocmirea unui document de corespondență a conturilor contabile din diferitele planuri ale acestora. De exemplu, rusă, IFRS, contabilitate de gestiune etc.
  • Traducerea codurilor bazei de date de la un sistem la altul. De exemplu, trebuie să convertim denumirile 0 și 1 în „nu” și „da”.
  • Conversia dolarilor în euro este un fel de mapare.
  • Schimbarea formatului unei imagini de la .png la .jpg, un film de la .avi la .mp4, realizată într-un editor grafic sau video, se va raporta într-un fel la subiectul conversației noastre.

Dezvoltare de jocuri pe calculator

Mapping (din engleză. Hartă- „harta terenului”) poate fi folosită și în sensul designului de nivel. Acesta este numele dat disciplinei de dezvoltare a jocurilor video. Aceasta este, în primul rând, crearea unor niveluri de complexitate diferită - elaborarea misiunii jucătorului, designul locației, compunerea sarcinilor etc. În practică, astfel de activități se desfășoară în editorul de „niveluri”.

Tehnologiile de cartografiere aici sunt eterogene - totul depinde de bugetul dezvoltatorilor, caracterul, genul joc creat. Să ne uităm la un exemplu clasic pentru a înțelege mai bine conceptul:

  • Crearea unei hărți a teritoriului și împărțirea acesteia în zone - orașe, lanțuri muntoase, tuneluri subterane, păduri etc.
  • Definirea regiunilor asociate cu o anumită activitate specifică a jucătorului - un câmp de luptă, un magazin pentru atribute suplimentare, extragerea resurselor, fortificații, un loc de odihnă, o tablă de onoare etc.
  • Dezvoltarea obiectelor non-statice. Pot fi chei, uși, butoane și pasaje secrete, pasaje secrete care dispar etc.
  • Identificarea locațiilor importante ale organizațiilor - acesta este un punct de recuperare, comori, comori, cache cu armă secretăși așa mai departe.
  • Stabilirea locației de început și de sfârșit a mișcărilor pentru fiecare jucător.
  • Aducerea hărții la viață cu o serie de detalii: adăugarea de elemente precum texturi, sunete, sunet, efecte vizuale, iluzii, animații etc.
  • Inserarea declanșatoarelor necesare (mecanisme care verifică prezența oricărui obiect în spațiul de joc creat) și script-uri (scenarii, algoritmi scurti de acțiuni).
  • Crearea anumitor scripturi pentru mișcarea mafioților (obiecte nestatice, personaje): zone în care se pot deplasa, interacțiunea lor, dialog cu jucătorul etc.
  • Uneori include crearea de scene tăiate - frumos screensaver, un mini-film, un fel de trailer pentru un joc sau nivel, un grup de „niveluri” pe care un jucător nu poate decât să le vadă, dar nu influențează în niciun fel ceea ce se întâmplă în el.

Cartografiere video

Ce este maparea video (mapping 3D)? Aceasta este o tehnologie uimitoare care vă permite să proiectați imagini, filme special create pe suprafețe neuniforme la scară mare, de exemplu, pe fațadele clădirilor.

Unicitatea acestui lucru este că vă permite să „reînvie” casele și alte obiecte de interior oferindu-le mobilitate vizuală. Și totul se realizează doar prin proiectoare instalate după un anumit plan. „Magia” imaginilor tridimensionale în mișcare constă în corespondența super-preciză dintre elementele pe care se reflectă imaginea și proiecția video în sine.

Deși pentru mulți dintre noi cartografierea este o direcție destul de nouă, ea a luat naștere în anii șaizeci ai secolului trecut. Îi datorăm aspectul lui Walt Disney și studioului Disney. Apoi, numele de lucru al cartografierii a fost „lămpi cu umbră”, „spațiu”. realitate virtuala„. Primul spectacol este considerat a fi atracția Haunted Manor de la Disneyland. Pentru aceasta au fost create capete tăiate artificiale, pe care a fost proiectată o imagine, „revitalizandu-le”.

Cum poate fi maparea video?

În funcție de obiectul pe care se reflectă imaginea, tehnologia este împărțită în mai multe zone:

  • Arhitectural. Proiecție volumetrică pe obiect complex- fațada unei clădiri, pod, turn, precum și a unui avion, navă etc.
  • Interior. Crearea de soluții iluzorii interesante în interior prin proiectarea imaginilor pe pereți, tavan, podea.
  • Pentru obiecte mici. Sunt folosite atât forme mici, cât și elemente ale ceva mai mare. De exemplu, roți de mașină, tort, rochie de mireasă etc.
  • Amenajarea teritoriului. Baza sunt pădurile, munții și alte obiecte naturale.
  • Interactiv. Cea mai nouă direcție tema excelenta că aici o persoană devine un erou. Tehnologia aduce la viață obiectele din jurul artistului, ajutându-l să creeze un spectacol de neuitat.

Unde se utilizează cartografierea 3D?

Să vedem unde poate fi relevantă această tehnologie:

  • crearea de volum pe diferite suprafețe;
  • sărbători ale orașului, evenimente publice;
  • evenimente corporative majore;
  • deschiderea de centre comerciale, complexe de divertisment;
  • vacante pentru copii;
  • evenimente culturale, istorice, educative.

Acest spectacol arată cel mai impresionant în întuneric. Pentru a da un efect mai izbitor, organizatorii îl combină cu o volumetrică potrivită sunet sonor, muzica live, artificii.

Dacă doriți să faceți cunoștință cu recenzii ale tehnologiei, atunci ascultați-i pe cei care au vizitat cel puțin o dată Cercul de lumină din Moscova. De recent, în fiecare an în toamnă se desfășoară acest festival în capitală, atrăgând mii de spectatori. Designeri de la tari diferite creați proiecții video care sunt afișate pe fațadă Teatrul Bolșoi, pavilionul principal al VDNH, clădirea principală a Universității de Stat din Moscova etc.

Cartografierea este un concept cu mai multe valori. Aceasta include conversia complexă a datelor și crearea de locații în jocuri pe calculator, și un spectacol bazat pe proiectarea imaginilor pe obiecte mari și mici.

Zeci de cuvinte vin în limba rusă în fiecare an, se instalează în ea și ne rănesc urechile. Anglicismele sunt folosite inadecvat și deplasat, termenii își pierd sensul sens originalși treceți în zone noi, iar cuvintele familiare de mult timp apar brusc într-un context necunoscut - este ușor să fii confuz. Revista Strelka pune lucrurile în ordine în secțiunea Vocabular.

De unde a venit

Cuvântul este derivat din engleza „hartă” și sufixul -ing atașat acestuia. Traducere literală - cartografiere, cartografiere și ridicare topografică. ÎN În ultima vreme„mapping” este folosit într-un sens mai larg, trecând dincolo de subiectul pur topografic.

Ce este scris în dicționar

„Cartografie - reprezentare grafică procedură, proces, structură sau sistem care reflectă aranjamentul sau relațiile componentelor și, de asemenea, documentează fluxuri, de exemplu, bani, energie, mărfuri, informații, migrație.” (businessdictionary.com)

„Cartografierea video - folosită și pentru a însemna cartografierea 3D - o direcție în arta audiovizuală, care este o proiecție 3D pe un obiect fizic mediu inconjuratorținând cont de geometria și locația sa în spațiu.” (projection-mapping.org)

În sensul „vizualizării” - „o metodă de prezentare a informațiilor sub formă imagine optică(de exemplu, sub formă de desene și fotografii, grafice, diagrame, diagrame bloc, tabele, hărți etc.). Este foarte eficient folosit pentru a prezenta informații inițial non-vizuale (de exemplu, temperatura, densitatea populației, distribuția nivelurilor de câmpuri electromagnetice etc.)" (Dicționar de termeni de afaceri. "Akademik.ru". 2001)

„Mapping-ul mental este o tehnică grafică care se bazează pe utilizarea tendinței naturale a creierului de a gândi asociativ, de la centru la periferie.” (mind-mapping.co.uk)

Ce spun experții

Kuba Snopek, profesor la Institutul Strelka, vorbește despre cartografierea ca instrument pentru studiul orașului

„Eu nu numesc cartografie cartografică pentru că cartografia este recunoscută disciplina stiintifica, și implică o metodă foarte clară. Pe scurt: o persoană merge într-un loc nou și atacă tot ce vede.

Cartografierea pe care o folosim ca instrument pentru studierea orașului la Strelka este diferită și implică o reflectare a proceselor care au loc în oraș. Creăm o hartă peste cea existentă și verificăm ce s-a schimbat de când a fost creată baza geodezică. Și fiecare cercetător își poate obține propria hartă a aceluiași spațiu. Aceasta este partea cea mai interesantă: se poate privi doar arhitectura, alta la comportamentul oamenilor, o a treia la comportamentul animalelor sau la spectrul luminii.

Pentru mine, orice proiect începe cu o hartă. Fără aceasta este imposibil să mergi mai departe. În prezent, fac un proiect legat de bisericile poloneze. Există o hartă cu patru mii de obiecte, iar analiza acestei hărți este cea mai importantă parte a proiectului, este documentul său principal.”

Alexey Rozov, co-fondatorul companiei Power of Light, vorbește despre cartografierea 3D

„Ideea mapării 3D este că creăm o imagine care este suprapusă unui obiect fizic în conformitate cu forma și arhitectura acestuia. Acesta este ceea ce face posibilă modificarea unei clădiri folosind transformarea 3D sau schimbarea texturilor.

În primul rând, inginerii realizează un model 3D al clădirii. Dacă designul nu este foarte complex, atunci un model poate fi realizat mergând pe teritoriu și luând dimensiuni. Dacă acesta este, de exemplu, Teatrul Bolshoi, atunci se face scanarea laser și se creează un model din norul de puncte rezultat.

Scanarea laser 3D terestră a fațadelor / foto: severnpartnership.com

Animatorii-artişti folosesc apoi programe de modelare 3D pentru a crea conţinutul. În timp ce desenează, inginerii fac calcule despre câte proiectoare și câtă putere sunt necesare pentru a acoperi suprafața clădirii. De exemplu, Teatrul Bolshoi are nevoie de 12 proiectoare, Manege - opt și Universitatea de Stat din Moscova - 86. Se fac și calcule privind luminozitatea și rezoluția imaginii. Apoi o configurare virtuală - configurarea tuturor proiectoarelor astfel încât să formeze o singură imagine. Când conținutul este gata, toată lumea merge direct pe site. Turnul proiectorului este asamblat la fața locului și instalat serverele necesare, iar inginerii încep să aplatizeze imaginea astfel încât să cadă direct pe clădire. Computerul pornește cu conținutul încărcat și începe spectacolul. Nu ar trebui să existe greșeli. Chiar dacă sunt foarte mici, invizibile pentru spectatorul mediu. Am văzut exemple proaste în care oamenii au vrut să facă cartografiere 3D, dar grafica s-a dovedit a fi urâtă, proiecția nu a lovit obiectul foarte precis, lumina care ieșea din proiector a fost calculată greșit - și se dovedește că totul pare slab, imaginea este pixelată și nu decorează, ci, dimpotrivă, doar se strică.

Timpul petrecut într-un singur proiect depinde de dimensiunea clădirii și de lungimea videoclipului. Dacă, de exemplu, faci un spectacol pentru Universitatea de Stat din Moscova timp de o jumătate de oră, atunci, în termeni buni, ai nevoie de un an pentru a-l crea, iar dacă pentru Teatrul Bolșoi durează trei minute, o lună sau două este destul pentru tine.

Este greu de spus cât de dezvoltat este acest lucru în Rusia în comparație cu alte țări, dar, de exemplu, Moscova găzduiește puternicul festival anual Cercul luminii. Astăzi există tendința de a folosi cartografierea 3D ca design interior: bază permanentăîntr-un muzeu sau centru comercial au organizat un spectacol pentru oaspeți de mai multe ori pe zi.”

Exemple de utilizare

„Cartografierea relevă valoarea economică, culturală și politică a informațiilor pe care le oferă spațiul. Metoda vă permite să combinați toate aceste informații și să le legați la un anumit loc.” (Revista Strelka)

„Pentru cea de-a 125-a aniversare, Academia Cehă de Științe a pregătit un spectacol vizual - cartografiere video a clădirii sale istorice din Praga.” (420on.cz)

„Harta mentală este tradusă în rusă ca „hartă gândire”, „hartă mentală”, „hartă cu memorie”, „ hărți mentale„. Metoda de vizualizare poate fi folosită pentru a crea idei noi, a analiza și a organiza informații, a lua notițe, a lua decizii și multe altele.” („Știință și viață”)

Companiile care folosesc Excel pentru raportarea transformării primesc economii tangibile atunci când întocmesc situații financiare conform IFRS. Dacă volumele de tranzacții permit procesarea acreditărilor în foi de calcul, este recomandabil să folosiți Excel

12.01.2016

Tabelele Excel, pe lângă acuratețea aritmetică și claritatea procedurilor de transformare, fac posibilă generarea de date pentru analiza economică a activităților financiare pe baza rezultatelor IFRS, ceea ce transformă modelul de raportare într-un instrument de management.

Etapa pregătitoare a transformării raportării

Pe etapa pregătitoare se efectuează o analiză a diferențelor specifice dintre IFRS aplicabile unei anumite companii și practicile contabile conform RAS. Trebuie remarcat faptul că este inadecvat să începeți de la regulile contabilității ruse, deoarece în acest caz va fi dificil să vă îndepărtați de „prioritatea formei față de conținut” - ar trebui să începeți cu o analiză a companiei în ansamblu. și activitățile sale din punctul de vedere al IFRS.

Ar trebui incluse standardele internaționale relevante pentru fiecare afacere specifică politica contabila conform IFRS. De exemplu, este puțin probabil ca un comerciant să folosească instrumente financiare complexe sau prevederile IAS 41 " Agricultură” și o companie privată nu trebuie să dezvăluie rezultatul pe acțiune în conformitate cu IAS 33 Rezultatul pe acțiune. Procedura de elaborare a unei politici contabile ar trebui să vizeze nu numai crearea de reguli contabile și memorandumuri în conformitate cu IFRS, ci și de pregătirea unui bloc de note direct la situațiile IFRS, care să cuprindă principalele aspecte ale politicii contabile care trebuie dezvăluite în în conformitate cu IAS 1 „Prezentare situații financiare”.

Pe baza politicilor contabile obținute în conformitate cu IFRS, este necesar să se identifice discrepanțe în estimările și principiile aplicate în RAS și să se creeze o listă și reguli pentru calcularea principalelor ajustări de transformare, precum și o listă. Informații suplimentare, necesar în sensul IFRS, dar care nu este luat în considerare în conformitate cu cerințele legislației ruse.

La prima utilizare standarde internaționaleÎn conformitate cu IFRS 1, ar trebui să fiți conștienți de excepțiile și simplificările permise de standard și că aceste scutiri nu se mai aplică.

Procesul de actualizare a politicilor contabile conform IFRS, lista de ajustări și lista de informații suplimentare trebuie să fie constant, deoarece cerințele IFRS și legislația rusă sunt actualizate în mod constant.

Maparea planului de conturi pentru transformarea raportării

Mapping - din limba engleză mapping (corespondență, precum și transformare) - este o procedură de înregistrare a datelor în mai multe sisteme de coordonate, în cazul nostru, conversia soldurilor și cifrei de afaceri generate în conformitate cu planul de conturi RAS în structura planului de conturi. conturi conform IFRS (Tabelul 1).

Tabelul 1. Exemplu de mapare a planului de conturi

Câteva cuvinte despre întocmirea planului de conturi propriu-zis conform IFRS.

  • Fiecare indicator IFRS trebuie să aibă un unic cod digital, în cazuri extreme, alfanumerice, într-un format strict definit. Rezumarea indicatorilor în versiuni moderne Excel este posibil chiar și pe baza caracteristicilor textului, dar în acest caz riscul distorsiunii datelor crește în cazul unei simple greșeli de scriere. Pentru a minimiza erorile, se folosesc directoare și liste derulante cu coduri și nume de conturi și analize, precum și formule „SUMMIF” și „VLOOKUP” care rezumă date cu caracteristici specificate, și anume coduri unice.
  • Ierarhia planului de conturi ar trebui să vă permită să grupați datele nu numai pe elemente, ci și pe rânduri din formularul de raportare și note. Să presupunem că articolul „Clădiri și structuri - Costul inițial”, pe lângă codul propriu, ar trebui să conțină printre analize și codul de linie al situației situației financiare (denumit în continuare bilanţ) și codul bilanţului. tabel de note, care vă va permite să completați formulare și note de raportare tabelare folosind formule Excel.
  • Fiecare secțiune a formularelor de raportare din planul de conturi trebuie să conțină rezervă linii goale- acest lucru face posibilă ajustarea flexibilă a planului de conturi fără a reconfigura formulele și, de asemenea, vă permite să nu încălcați principiul comparabilității datelor. Este recomandabil să oferiți spațiu pentru noi secțiuni, de exemplu, dacă compania nu a deținut anterior investiții imobiliare, dar managementul intenționează să creeze sau să achiziționeze imobile pentru închiriere. În acest caz, pur și simplu completați rândurile goale și introduceți coduri de raportare, iar Excel agregează automat indicatorii.
  • Este necesar să se salveze istoricul modificărilor aduse cartografierii (de obicei, pe baza unui memorandum sau a unui alt document metodologic administrativ), indicând motivul, persoana responsabilă și momentul intrării în vigoare a modificărilor. Acest lucru este important atât pentru generarea de date comparabile de la o perioadă la alta, cât și pentru promovarea unui audit.

De remarcat că cu cât analistul conține mai mult plan rusesc conturi, cu atât este mai ușor să se efectueze ajustările de cartografiere și reclasificare necesare în legătură cu principii diferite agregarea datelor în RAS și IFRS. Prin urmare, dacă este posibil, planul de conturi RAS și analiticele acestuia ar trebui aduse cât mai aproape de nevoile IFRS pentru a crește eficiența procesului de transformare și a reduce costurile.

Colectarea informațiilor necesare pentru completarea modelului de transformare. Pe în această etapă Sunt colectate date despre soldurile conturilor bilanţiere şi cifra de afaceri a conturilor de venituri şi cheltuieli pentru perioada de raportare, se completează bilanţul iniţial şi contul de profit şi pierdere.

Odată cu acest proces, sunt revizuite tranzacții semnificative, litigii, noi contracte majore și dezvăluiri suplimentare. Ar trebui elaborată o listă reglementată de informații suplimentare, precum și cei responsabili pentru pregătirea datelor relevante și ar trebui stabilite termene limită.

Lista prezentată în Tabelul 2 poate fi fie scurtată dacă societatea nu are anumite operațiuni, fie extinsă semnificativ. De regulă, schimbările în activitățile unei companii care implică ajustări suplimentare la IFRS apar rar. Prin urmare, cea mai amănunțită analiză se face în timpul cunoașterii inițiale cu afacerea și numai atunci sunt monitorizate schimbările semnificative. Astfel, în majoritatea cazurilor, companiile ar trebui să facă aproximativ zece până la douăzeci de ajustări de transformare, care pot fi reglementate prin instrucțiuni metodologiceși sunt consacrate în documentul „Procedura de contabilizare a ajustărilor de transformare”.

Tabelul 2. Exemplu de listă de informații suplimentare

Toate ajustările ar trebui făcute sub forma unui document de lucru similar cu o situație contabilă. Documentul de lucru trebuie să conțină baza metodologicași premisele reale pe baza cărora s-au făcut anumite ajustări și calculele în sine. De asemenea, trebuie să instalați proceduri de control care vizează verificarea corectitudinii calculelor, reconcilierea datelor din documentele de lucru și modelele de transformare, precum și corectitudinea înregistrărilor.

Etapa de formare a ajustărilor primite. Ajustările primite sunt generate atunci când IFRS sunt aplicate pentru prima dată, precum și în tranzacțiile care implică achiziția de noi companii, care trebuie evaluate la valoarea justă.

Pentru început, elementele din bilanţ și contul de profit și pierdere sunt regrupate. Acestea sunt așa-numitele ajustări de reclasificare. Ajustările majore de reclasificare includ inversarea sau inversarea conturilor de încasat, plătibile și avansurilor, reclasificarea cheltuielilor amânate, separarea activelor și pasivelor curente și imobilizate, transferul în numerar a depozitelor cu scadențe mai mici de 90 de zile și un înregistrarea mai detaliată a veniturilor și cheltuielilor la facturile aferente dacă lucrare similară nu a fost făcută în etapa de cartografiere (Tabelul 3).

Tabelul 3. Exemplu de tabel de reclasificare

Următorul bloc de ajustări este corecțiile care afectează valoarea elementelor din bilanț, precum și veniturile și cheltuielile. Acestea nu trebuie confundate cu ajustările de reclasificare, deoarece numai ajustările estimate afectează valoarea impozitelor amânate conform IFRS.

În practică, cele mai semnificative sume de ajustare se referă la evaluarea activelor la valoarea justă - active fixe (în special în cazurile în care societatea deține active vechi) și active necorporale. Este imposibil să calculați singur astfel de ajustări, deoarece acest lucru necesită date dintr-un raport de examinare efectuat de un evaluator calificat. De exemplu, fără cunoștințe și experiență speciale este imposibil să se determine costul baza de clienti, care, la achiziționarea unei companii, trebuie recunoscută ca imobilizări necorporale conform IFRS. Doar după primirea datelor de evaluare cu privire la valoarea justă a costului inițial, gradul de amortizare, rămas viata utila de utilizare, registrele activelor fixe și ale activelor necorporale se întocmesc în conformitate cu IFRS. Contabilitatea mijloacelor fixe și a imobilizărilor necorporale se poate efectua fie într-un program separat, fie în foi de calcul, atunci când se ține un registru al mijloacelor fixe în Excel, se reflectă încasările, modernizările, cedările de obiecte, iar amortizarea se calculează la costul recunoscut în în conformitate cu IFRS.

Cel mai simplu mod de a calcula ajustările este de a compara datele RAS și IFRS și de a determina discrepanța dintre acestea. Aceste sume formează modificarea (Tabelul 4).

Tabelul 4. Calculul ajustărilor pentru reevaluarea imobilizărilor la valoarea justă

Pe lângă reflectarea reevaluării, pentru activele fixe și imobilizările necorporale poate fi necesară recalcularea sumei dobânzii capitalizate, deoarece RAS și IFRS conțin abordări diferite la determinarea valorii de capitalizare.

Prevederile IAS 36 Deprecierea activelor se concentrează mai mult pe testarea imobilizărilor corporale și a imobilizărilor necorporale, a căror valoare trebuie ajustată atunci când există dovezi de depreciere.

Dacă o companie utilizează contracte de leasing financiar în operațiunile sale (așa cum sunt interpretate de IFRS), modificările pot afecta, de asemenea, valoarea imobilizărilor corporale și a cheltuielilor cu amortizarea, în corespondență cu obligațiile de leasing financiar și creanțele cu dobânzi pentru utilizarea fondurilor de împrumut.

O atenție deosebită trebuie acordată ajustărilor legate de actualizare (cum ar fi, de exemplu, în cazul contractelor de leasing financiar pe termen lung, când atât costul activelor fixe, cât și datoria din contractele de leasing financiar sunt estimate pe baza actualizării). IFRS impune actualizarea oricăror active și datorii pe termen lung:

  • valoarea veniturilor atunci când plata este amânată în timp;
  • valoarea unei rezerve sau provizioane pe termen lung în conformitate cu IAS 37 „Provizioane, datorii contingente și active contingente”;
  • costul investiției într-o filială atunci când este prevăzută plata amânată pentru acțiuni;
  • componenta de datorie a obligațiunilor convertibile pe termen lung;
  • valoarea recuperabilă a unui activ financiar contabilizat la cost amortizat atunci când este testat pentru depreciere etc.

Printre cele mai frecvente ajustări mai putem remarca:

  • pentru stocuri (radierea stocurilor nelichide ca pierderi, crearea unei rezerve pentru deprecierea stocurilor, anularea lipsurilor și pierderilor din deteriorarea valorilor, precum și anumite tipuri de cheltuieli amânate);
  • pentru decontări cu personalul (ajustări ale rezervelor pentru concedii, crearea unei rezerve pentru remunerarea viitoare, decontări în cadrul planurilor de pensii);
  • Ajustări de limită (scăderea veniturilor amânate, acumularea suplimentară sau anularea veniturilor și cheltuielilor din perioada de raportare care nu au fost reflectate în RAS din cauza lipsei documentelor sau a diferențelor în abordarea recunoașterii momentului transferului riscurilor și beneficiilor, în corespondența cu conturile decontărilor cu contrapărțile);
  • pentru conturile de încasat și de plătit, precum și pentru împrumuturi și împrumuturi (reflectare la cost amortizat folosind metoda dobânzii efective, ajustarea rezervelor pentru datorii îndoielnice);
  • privind investițiile financiare (recunoașterea unei cote din profitul sau pierderea companiilor asociate, ajustări ale valorii investițiilor financiare prin care se poate determina valoarea curentă de piață etc.).

După ce au fost generate toate ajustările estimate, se determină valoarea ajustării impozitului pe profit amânat.

Desigur, nu sunt enumerate toate ajustările posibile, deoarece scopul este de a demonstra modul în care se formează grupul de ajustări primite și cum ar trebui reportate ajustările de la an la an (Tabelul 5).

Tabelul 5. Formarea unei liste de ajustări primite

În continuare, ținând cont de ajustările primite, se întocmesc bilanțul, contul de profit și pierdere, situația modificărilor capitalului, situația fluxurilor de numerar în format IFRS și se întocmesc, de asemenea, explicații pentru situații.

Ajustările primare sunt utilizate pentru a reporta în raportarea perioadelor ulterioare ca ajustări primite. Există două metode de transfer:

  • ajustările la conturile bilanțului sunt luate în considerare în corespondență cu contul rezultatului reportat;
  • ajustările la conturile de venituri/cheltuieli sunt inversate în corespondență cu contul de rezultat reportat.

Alegerea metodei de transfer afectează numai tehnica de calcul a ajustărilor curente pentru următoarele perioade de raportare, rezultat final va fi același, dar nu va mai fi posibil să schimbați modelul pentru calcularea ajustărilor, așa că ar trebui să determinați în prealabil metoda cea mai convenabilă și să rămâneți la ea.

Etapa de formare a ajustărilor pentru perioadele de raportare ulterioare. Ajustările tipice în următoarele perioade de raportare trebuie întocmite ținând cont de ajustările primite. Mecanismul de generare a datelor IFRS este următorul: tabele Excel completat pagina cu pagina:

  • maparea soldurilor și cifrei de afaceri conform RAS în solduri și cifrei de afaceri conform IFRS;
  • ajustări de reclasificare;
  • ajustări primite (excluzând reclasările din perioada anterioară);
  • ajustări pentru perioada curentă (calculate în documente de lucru separate ținând cont de ajustările primite acumulate).

Apoi, folosind formulele „SUMIF”, datele sunt trase în sus pe foaia de rezumat (vezi Tabelul 6).

Tabelul 6. Formarea datelor IFRS în modelul de transformare

Datele IFRS (coloana 8) sunt obținute prin însumarea datelor RAS originale, reclasificări, ajustări primite și curente. În etapa următoare, folosind și formula „SUMMIF”, indicatorii IFRS gata pregătiți sunt agregați pe paginile de raport (bilanț, situație de profit și pierdere) pe coduri de linii ale formularelor de raportare în conformitate cu codul de formular de raportare atribuit (Tabelul 7) . Completați în același mod forme tabelare note, formule de control și reconciliere sunt prescrise între tabelul de transformare, formularele de raportare și note, modificarea rezultatului reportat pentru perioada este comparată cu soldurile de deschidere și de închidere pentru indicator (sunt posibile discrepanțe în valoarea dividendelor acumulate).

Tabelul 7. Exemplu de utilizare Funcții Excel"SUMMESLI"

După cum putem vedea, Excel vă permite să generați destul de simplu și clar date IFRS prin transformare. În practică, sunt folosite și alte abordări pentru completarea tabelelor de transformare, de exemplu, precum un set de șah clasic. Cu toate acestea, dacă sunt multe ajustări, dosarele rezultate sunt greoaie și riscul erorilor tehnice crește; în plus, devine dificilă analiza modificărilor acumulate în mai multe perioade. Indiferent de modelul de transformare utilizat, există recomandări universale pentru lucrul cu Excel: stocarea datelor trebuie organizată pe un sistem fiabil și protejat de acces neautorizat servere, crearea automată copii de rezervă principalele fișiere de lucru și salvarea automată în timpul lucrului, arhivarea regulată atât a datelor primare, cât și a modelelor finale, urmărirea modificărilor la fișiere și menținerea unui fișier de stare rezumat (listă de verificare) care conține informații despre etapele necesare de transformare și gradul de finalizare a procedurilor stabilite.

Clasele înlocuite trebuie să declare o coloană cheie primară în tabelul bazei de date. Majoritatea claselor trebuie, de asemenea, să își declare propriile proprietăți în stil JavaBeans, inclusiv un identificator unic de entitate. Element în fișierul de mapare ei vor defini maparea acestui câmp unic la coloana tabelului, care acționează ca cheie primară.

(5)

(1)

nume (opțional): numele proprietății identificatorului.

(2)

tip (opțional): Un nume care definește tipul Hibernare al proprietății.

(3)

coloană (opțional - numele proprietății implicite): numele coloanei cheii primare.

(4)

unsaved-value (opțional - implicit nul): O valoare a proprietății de identificare care indică faptul că instanța este nouă (în termeni de stocare persistentă). Distinge această instanță de instanțe de tranzit care au fost încărcate sau salvate într-o versiune anterioară.

(5)

acces (opțional - implicit la proprietate): Aceasta este strategia pe care Hibernate o va folosi pentru a accesa această proprietate obiect.

Dacă atributul numelui nu este specificat, se presupune că clasa nu are o proprietate de identificare.

Atributul valoare nesalvată este important! Dacă proprietatea ID implicită a clasei dvs. nu este nulă, trebuie să setați atributul „unsaved-value” la valoarea corespunzătoare.

Există un anunț alternativ pentru a accesa date vechi cu chei compuse. Descurajăm cu tărie utilizarea cheilor compuse în alte cazuri.

5.1.4.1. generator

Element copil obligatoriu „a definește o clasă Java folosită pentru a genera identificatori unici pentru instanțe de clase persistente. Dacă este necesar, elementul Pentru a transmite parametrii de inițializare sau de configurare pentru o instanță de generator.

uid_table next_hi_value_column

Toate generatoarele implementează interfața net.sf.hibernate.id.IdentifierGenerator. Este o interfață foarte simplă; multe aplicații pot folosi propriul generator personalizat de implementare. În ciuda acestui fapt, Hibernate include multe generatoare încorporate. Mai jos sunt numele scurte (etichete) pentru generatoarele încorporate:

Creştere

generează identificatori de tip long, short sau int care sunt unici numai atunci când niciun alt proces nu adaugă date la același tabel. Nu utilizați într-un cluster.

identitate

Suportă coloane de identitate în DB2, MySQL, MS SQL Server, Sybase și HypersonicSQL. Tipul de identificare de returnare este lung, scurt sau int.

secvenţă

Utilizează o secvență în DB2, PostgreSQL, Oracle, SAP DB, McKoi sau un generator în Interbase. Tipul de identificare de returnare este lung, scurt sau int.

hilo

Utilizează algoritmul hi/lo pentru a genera eficient identificatori care sunt de tip long, short sau int, necesitând un nume de tabel și de coloană (în mod implicit hibernate_unique_key și, respectiv, next_hi) ca sursă a valorilor hi. Algoritmul hi/lo generează identificatori care sunt unici numai pentru baze separate date. Nu utilizați acest generator pentru conexiuni JTA sau conexiuni personalizate.

seqhilo

folosește algoritmul hi/lo pentru a genera identificatori de tip long, short sau int, folosind o secvență de bază de date.

uuid.hex

Utilizează un algoritm UUID de 128 de biți pentru a genera identificatori de șir care sunt unici în rețea (folosind o adresă IP). UUID este un șir de 32 de caractere care conține reprezentarea hexazecimală a numărului.

uuid.string

folosește același algoritm UUID, dar șirul atunci când se utilizează acest generator este format din 16 (unele) caractere ANSII. Nu utilizați cu PostgreSQL.

nativ

selectează identitatea, secvența sau hilo, în funcție de capacitățile bazei de date utilizate.

atribuit

oferă aplicației posibilitatea de a seta independent identificatorul de obiect înainte de a apela metoda save().

străin

este utilizat identificatorul altui obiect asociat. Folosit de obicei în tranzacțiile cu asociere prin cheie primară.

5.1.4.2. Algoritm Hi/Lo

Generatoarele hilo și seqhilo oferă două implementări alternative ale algoritmului hi/lo, abordarea preferată pentru generarea de identificatori. Prima implementare necesită un tabel „special” în baza de date pentru a stoca următoarea valoare „hi”. A doua implementare folosește secvența (în stil Oracle) în bazele de date care le suportă.

hi_value următoarea_valoare 100 hi_value 100

Din păcate, nu puteți utiliza hilo atunci când vă furnizați conexiunea la Hibernate și nici nu îl puteți utiliza într-o configurație în care Hiberante utilizează o sursă de date de server de aplicații gestionată de JTA. Hiberante trebuie să poată primi valoarea „hi” într-o nouă tranzacție. Abordare standardîn EJB, este să folosiți un bean fără stat de sesiune pentru a implementa algoritmul hi/lo.

5.1.4.3. Algoritmul UUID

Nu încercați să utilizați uuid.string în PostgreSQL.

5.1.4.4. Secvențe și coloane de identitate

Puteți utiliza generatorul de chei de identitate pentru bazele de date care acceptă coloane de identitate (DB2, MySQL, Sybase, MS SQL). Pentru bazele de date care acceptă secvențe, puteți utiliza stilul secvenței pentru a genera chei. Ambele strategii necesită două interogări SQL pentru a insera un nou obiect în baza de date.

uid_sequence

Pentru a dezvolta aplicații multiplatforme, utilizați strategia nativă. Va folosi strategii de identitate, secvență și hilo în funcție de capacitățile bazei de date cu care este conectat. acest moment momentul în care Hibernate rulează.

5.1.4.5. ID-uri definite

Dacă doriți ca aplicația să atribuie ID-uri în sine, puteți utiliza generatorul atribuit. Acest generator special folosește ID-uri care sunt setate de aplicație. Pentru a face acest lucru, aplicația setează identificatorul la proprietatea corespunzătoare a obiectului. Fiți foarte atenți când utilizați această funcție pentru a seta cheile (în cele mai multe cazuri, această decizie semnalează un design slab al aplicației).

Datorită naturii sale inerente, entitățile care folosesc acest generator nu pot fi salvate prin metoda Session.saveOrUpdate(). În schimb, trebuie să spuneți explicit lui Hibernate dacă obiectul trebuie creat sau actualizat apelând metodele adecvate ale obiectului Session: save() sau update().

5.1.5. id-compozit

......

Pentru tabelele cu chei compuse, puteți expune mai multe proprietăți de clasă ca proprietăți de identificare a obiectelor. Element acceptă mapările de proprietăți folosind elemente copil Și .

Clasa dvs. persistentă trebuie să suprascrie metodele equals() și hashCode() pentru a implementa echivalența identificatorului compus. De asemenea, trebuie să implementeze interfața Serializable.

Din păcate, capacitatea de a specifica identificatori compoziți implică faptul că obiectul persistent este identificatorul. Nu există nicio posibilitate de prelucrare convenabilă decât prin obiectul însuși. Trebuie să creați singur o entitate de clasă persistentă și să setați proprietatea de identificare a acesteia înainte de a încărca() starea persistentă asociată cu acel identificator compus. Vom descrie o modalitate mai adecvată, în care identificatorii compoziți sunt implementați ca o clasă separată, în Secțiunea 7.4, „Componente ca identificatori compoziți”. Atributele descrise mai jos sunt aplicabile numai metodei alternative:

    nume (opțional): O proprietate de tip de componentă care conține un identificator compus (vezi secțiunea următoare).

    clasă (opțional, implicit tipul proprietății este determinat prin reflecție): componenta acestei clase este folosită ca identificator compus (vezi secțiunea următoare).

    unsaved-value (opțional, implicit la none): dacă este setată la oricare, aceasta indică faptul că entitățile de tranzit sunt tratate ca noi.

5.1.6. discriminator

Element necesare pentru persistența polimorfă folosind strategia de mapare a ierarhiei tabelă pe clasă. Acest element declară o coloană discriminatoare, care este utilizată pentru a determina dacă o intrare de tabel corespunde unei anumite clase din ierarhie. Discriminatorul poate fi unul dintre următoarele tipuri: șir, caracter, întreg, octet, scurt, boolean, da_nu, adevărat_fals.

Valorile corespunzătoare ale coloanei discriminatorului pentru fiecare clasă sunt specificate în atributul discriminator-valoare pentru elemente Și .

Atributul forță este util numai dacă tabelul conține înregistrări cu valori suplimentare de discriminare care nu apar în clasa persistentă. De obicei, acest atribut nu este utilizat.

5.1.7. versiune (optional)

Element reflectă faptul că tabelul conține înregistrări cu etichete de versiune. Acest lucru este util mai ales dacă intenționați să utilizați tranzacții lungi(vezi mai jos).

(1)

coloană (opțional, implicit la numele proprietății): numele coloanei care stochează numerele de versiune.

(2)

nume: numele proprietății clasei persistente.

(3)

type (opțional, implicit este întreg): tipul proprietății versiunii.

(4)
(5)

unsaved-value (opțional, implicit nedefinit): O valoare a proprietății versiunii care indică faptul că entitatea nu a fost încă salvată (nesalvată). Nu confundați entitățile nesalvate cu entitățile de tranzit care au fost salvate sau încărcate într-o sesiune anterioară. (nedefinit indică faptul că valoarea identificatorului va fi utilizată.)

Numerele versiunilor pot fi de tip lung, întreg, scurt, marcaj temporal sau calendar.

5.1.8. marca temporală (opțional)

Element indică faptul că tabelul conține înregistrări marcate cu un marcaj temporal. Acest element acționează ca o alternativă la marcatorii de versiune. Marcajele de timp sunt prin definiție o implementare mai puțin sigură a blocării optimiste. Cu toate acestea, uneori o aplicație folosește marcaje temporale în alte scopuri

(1)

coloană (opțional, implicit la numele proprietății): numele coloanei care conține marcajul de timp.

(2)

nume: numele în stil JavaBeans al proprietății Date sau Timestamp a clasei persistente.

(3)

acces (opțional, implicit la proprietate): strategia pe care Hibernate ar trebui să o folosească pentru a accesa valoarea unei proprietăți.

(4)

unsaved-value (opțional - implicit nul): O valoare a proprietății de timp care indică faptul că entitatea nu a fost încă salvată (nesalvată). Nu confundați entitățile nesalvate cu entitățile de tranzit care au fost salvate sau încărcate într-o sesiune anterioară. (nedefinit indică faptul că valoarea identificatorului va fi utilizată.)

Notă: element este echivalent cu elementul .

5.1.9. proprietate

Element Declara o proprietate persistentă, în stil JavaBeans, a unei clase.

(1)

nume: numele proprietății, începând cu o literă mică.

(2)

coloană (opțional, numele proprietății este înlocuit implicit): numele coloanei corespunzătoare din tabelul bazei de date.

(3)

tip (opțional): Numele tipului Hibernare.

(4)

update, insert (opțional, implicit la true) : indică faptul că coloana corespunzătoare ar trebui inclusă în instrucțiunile SQL UPDATE și/sau INSERT. Setarea ambelor proprietăți la fals permite setarea valorii acelei proprietăți fie dintr-o altă proprietate care este afișată în aceeași coloană/coloane, printr-un declanșator, fie de către o altă aplicație.

(5)

formula (opțional): o expresie SQL care calculează valoarea proprietății. Câmpurile calculate nu trebuie mapate la o coloană a tabelului bazei de date.

(6)

acces (opțional, implicit la proprietate): strategia pe care Hibernate ar trebui să o folosească pentru a accesa valoarea unei proprietăți.

valoarea proprietății tip poate fi una dintre următoarele:

    Numele tipului de bază Hibernate (de exemplu, întreg, șir, caracter, dată, timestamp, float, binar, serializabil, obiect, blob).

    Numele clasei Java (de exemplu, int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob).

    Numele unei clase derivate din PersistentEnum (de exemplu, de exemplu.Color).

    Numele clasei Java care urmează să fie serializată.

    Numele clasei personalizate (de exemplu, com.illflow.type.MyCustomType).

Dacă nu specificați o valoare pentru proprietatea tip, Hibernate va folosi reflectarea asupra proprietății specificate pentru a ghici tipul Hibernate adecvat. Hibernate va încerca să determine numele clasei proprietății returnate de metoda get() folosind regulile 2, 3, 4 în această ordine. Cu toate acestea, acest lucru nu este întotdeauna suficient. În unele cazuri, mai trebuie să specificați atributul tip. (De exemplu, pentru a face diferența între Hibernate.DATE și Hibernate.TIMESTAMP sau pentru a specifica un tip personalizat.)

Atributul de acces vă permite să controlați modul în care Hibernate accesează un câmp în timpul execuției. În mod implicit, Hibernate apelează metode de obținere/setare pentru a accesa un câmp. Dacă specificați access="field" atunci Hibernate va ocoli metodele get/set și va accesa câmpul direct folosind reflectarea. Puteți specifica propria strategie de acces specificând o clasă care implementează interfața net.sf.hibernate.property.PropertyAccessor.

5.1.10. multi-la-unu

O relație normală cu o altă clasă persistentă este declarată folosind elementul multi-la-unu. În termeni relaționali, este o asociere multi-la-unu. Este de fapt doar o referire la un obiect.

(1)

nume: numele proprietății.

(2)

coloană (opțional): numele coloanei.

(3)

clasa (opțional - implicit, tipul câmpului este determinat prin reflecție): Numele clasei asociate.

(4)

cascadă (opțional): Specifică ce operație va fi cascada de la obiectul părinte la obiectul asociat.

(5)
(6)

update, insert (opțional - adevărat implicit) determină că coloanele afișate vor fi incluse în interogările SQL UPDATE și/sau INSERT. Setarea ambelor proprietăți la fals permite setarea valorii acelei proprietăți fie dintr-o altă proprietate care este afișată în aceeași coloană/coloane, printr-un declanșator, fie de către o altă aplicație.

(7)

property-ref: (opțional) Numele proprietății cheie a clasei asociate. Această proprietate va fi folosită pentru a lega. Dacă nu este specificată, este utilizată cheia primară a clasei asociate.

(8)

access (opțional - implicit la proprietate): Strategia pe care o folosește Hibernate pentru a accesa valoarea unui anumit câmp.

Atributul cascadă poate lua următoarele valori: all, save-update, delete, none. Setarea unei alte valori decât niciunul va implica anumite operații asupra obiectului asociat (copil). Vedeți „Cicul de viață al obiectului” de mai jos.

Atributul outer-join poate lua următoarele trei valori:

    auto (implicit) preia obiectele asociate folosind outer join dacă clasa asociată nu are un proxy.

    true Preluați întotdeauna obiectele asociate utilizând îmbinarea exterioară.

    false Nu recuperați niciodată obiectele asociate utilizând îmbinarea exterioară.

O declarație tipică de asociere multi-la-unu arată astfel

Atributul property-ref este utilizat numai pentru conectarea cu datele moștenite atunci când cheia străină se referă la o valoare unică a tabelului asociat, alta decât cheia primară. Aceasta este o decizie relațională periculoasă. De exemplu, este posibil ca clasa Product să aibă un număr unic de secvență care nu este cheia primară. (Atributul unic controlează generarea DDL a Hibernate. Generarea se face folosind utilitarul SchemaExport.)

Maparea pentru OrderItem poate folosi:

De fapt, este foarte descurajat să faci asta.

5.1.11. unu la unu

O asociere unu-la-unu cu o altă clasă persistentă poate fi declarată folosind elementul unu-la-unu.

(1)

nume: numele proprietății.

(2)

clasa (opțional - implicit determinată prin reflecție în funcție de tipul câmpului): Numele clasei asociate.

(3)

cascadă (opțional) specifică ce operație va fi cascată de la obiectul părinte la obiectul asociat.

(4)

constrâns (opțional) specifică că o cheie străină care face referire la un tabel al clasei asociate este constrânsă de cheia primară a tabelului respectiv. Această opțiune afectează ordinea în care sunt efectuate operațiunile în cascadă save() și delete() (și este folosită și de instrumentul de export de schemă).

(5)

outer-join (opțional - implicit la auto): Permite extragerea obiectelor asociate folosind outer-joins dacă opțiunea fișierului de configurare hibernate.use_outer_join este activată.

(6)

property-ref: (opțional) Numele proprietății clasei asociate care este inclusă în cheia primară a acestei clase. Dacă nu este specificată, este utilizată cheia primară a clasei asociate.

(7)

access (opțional, implicit la proprietate): strategia pe care Hibernate ar trebui să o folosească pentru a accesa acest câmp.

Există două tipuri de asociații unu-la-unu:

    relația cheie primară

    relație folosind o cheie străină unică

Pentru a organiza o asociere folosind o cheie primară, nu este nevoie de coloane suplimentare; Dacă două înregistrări sunt legate printr-o astfel de asociere, înseamnă că două înregistrări din două tabele au aceeași valoare a cheii primare. Prin urmare, dacă doriți să asociați două obiecte astfel încât să fie legate de o cheie primară, atunci trebuie să vă asigurați că ID-urile lor sunt setate la aceeași valoare!

Pentru o asociere de cheie primară, adăugați următoarea mapare pentru clasele Angajat și, respectiv, Persoană.

Acum trebuie să ne asigurăm că cheile primare ale înregistrărilor aferente din tabele sunt identice. Folosim un generator străin Hibernate special:

angajat ...

Instanței persistente a clasei Person i se atribuie aceeași valoare a cheii primare care este atribuită instanței clasei Employee la care face referire proprietatea angajat a clasei Person.

Ca alternativă la descrierea relației unu-la-unu de la Angajat la Persoană printr-o cheie străină unică, puteți utiliza următoarea notație:

Această asociere poate fi făcută bidirecțională prin adăugarea următoarei expresii la maparea clasei Person:

5.1.12. component, component-dinamic

Element mapează câmpurile unui obiect imbricat la coloanele de tabel ale clasei părinte. Componentele își pot defini, la rândul lor, propriile proprietăți, componente sau colecții. Consultați „Componentele” de mai jos.

(5) ........

(1)

nume: Numele proprietății (referitor la obiectul component).

(2)

class (opțional - implicit tipul componentei este determinat folosind reflectarea): Numele clasei componente.

(3)

insert: Dacă se setează la true, câmpurile afișate ale componentei participă la interogările SQL INSERT.

(4)

actualizare: dacă se setează la true, câmpurile afișate ale componentei participă la interogările SQL UPDATE.

(5)

access (opțional - implicit la proprietate): strategia pe care Hibernate ar trebui să o folosească atunci când accesează acest bean prin obiectul său părinte.

Etichete imbricate Mapați câmpurile componente în coloane de tabel.

Element permite element imbricat Care redă proprietatea componentei ca referință înapoi la obiectul părinte.

Element vă permite să utilizați o hartă ca componentă în care numele câmpurilor corespund cheilor hărții.

5.1.13. subclasă

În cele din urmă, persistența polimorfă necesită ca fiecare subclasă a clasei de bază să fie declarată. Pentru strategia de afișare (recomandată), ierarhia tabelă-pe-clasă utilizează elementul .

.....

Fiecare subclasă trebuie să-și declare propriile câmpuri și subclase persistente. Moștenirea proprietăților este permisă Și din clasa de bază. Fiecare subclasă din ierarhie trebuie să definească o valoare-discriminatorie unică. Dacă această valoare nu este specificată, numele complet al clasei este folosit ca discriminator.

5.1.14. subclasa unită

Alternativ, o subclasă ale cărei obiecte sunt stocate într-un tabel separat (strategie de mapare tabel pe subclasă) este declarată folosind elementul .

.....

Această strategie de afișare nu necesită specificarea coloanei discriminatorului. Cu toate acestea, fiecare subclasă trebuie să declare o coloană de tabel care conține identificatorul care urmează să fie afișat de element . Maparea dată la începutul secțiunii poate fi rescrisă după cum urmează:

Starea persistentă constă din referințe la alte entități și instanțe de tipuri de valori. Valorile sunt primitive, colecții, componente și alte obiecte imuabile. Spre deosebire de entități, instanțele de tip valoare (în special colecțiile și componentele) sunt păstrate și șterse atunci când sunt disponibile. Deoarece obiectele de tip valoare (și primitivele) sunt stocate și șterse împreună cu entitatea care le conține, ele nu pot avea versiune independentă. De asemenea, valorile nu au o identitate independentă și, prin urmare, nu pot fi împărtășite între două entități sau colecții.

Toate tipurile din Hibernate, cu excepția colecțiilor, acceptă semantica pointerului nul.

Până în acest moment, am folosit termenul „clasă persistentă” pentru a ne referi la entități. Vom continua să facem asta. Strict vorbind, nu toate clasele definite de utilizator cu stare persistentă sunt entități. De exemplu, o componentă este o clasă definită de utilizator cu semantică de tip valoare (componentele fac parte din entitățile care le conțin și sunt considerate câmpuri ale acelor entități).

5.2.2. Tipuri de valori de bază

Tipurile de bază pot fi împărțite aproximativ după cum urmează

întreg, lung, scurt, flotant, dublu, caracter, octet, boolean, da_nu, adevărat_fals

Mapări ale tipurilor Java primitive sau ale claselor wrapper la tipurile SQL corespunzătoare (dependente de furnizor) de coloane de tabel. boolean, yes_no și true_false sunt notații alternative pentru tipurile Java boolean sau java.lang.Boolean.

şir

Maparea tipului java.lang.String la VARCHAR (sau Oracle VARCHAR2).

data, ora, marcajul de timp

Maparea tipului java.util.Date și a subclaselor acestuia la tipurile SQL DATE, TIME și TIMESTAMP (sau echivalent).

calendar, calendar_date

Maparea tipului java.util.Calendar la tipurile SQL TIMESTAMP și DATE (sau echivalent).

zecimal_mare

Tipul de mapare java.math.BigDecimal la NUMERIC (sau Oracle NUMBER).

local, fus orar, monedă

Maparea tipurilor java.util.Locale, java.util.TimeZone și java.util.Currency la VARCHAR (sau Oracle VARCHAR2). Instanțele locale și valutare sunt mapate la codurile lor ISO. Instanțele TimeZone sunt mapate la identificatorii lor (ID-uri).

clasă

Tipul de mapare java.lang.Class la VARCHAR (sau Oracle VARCHAR2). Clasa este afișată ca nume complet.

binar

Mapează matricele de octeți la tipul SQL binar corespunzător.

text

Afișează șiruri Java lungi în SQL CLOB sau TEXT.

serializabil

Mapează tipurile Java serializabile la tipurile SQL binare corespunzătoare. De asemenea, puteți indica tipul serializabil Hibernate ca numele unei clase Java serializabile sau al unei interfețe care nu este un tip de bază și nu implementează interfața PersistentEnum.

clob, blob

Maparea tipului JDBC a claselor java.sql.Clob și java.sql.Blob. Aceste tipuri pot fi incomode pentru unele aplicații, deoarece obiectele blob și clob nu pot fi utilizate în afara tranzacțiilor. (În plus, driverele nu acceptă aceste tipuri complet și uniform.)

Identificatorii unici pentru entități și colecții pot fi de orice tip de bază, cu excepția celor binari, blob și clob. (De asemenea, sunt permise identificatorii compusi, vezi mai jos.)

Tipurile de valori de bază sunt descrise de constantele declarate în net.sf.hibernate.Hibernate. De exemplu, Hibernate.STRING reprezintă tipul șirului.

5.2.3. Tipuri de enumerare persistente

Un tip enumerat este un idiom Java de bază atunci când o clasă are un număr constant (mic) de instanțe imuabile (nota traducătorului în Java 5 aceasta a fost introdusă la nivel de limbaj, în versiunile anterioare a fost folosit un model special pentru aceasta). Puteți crea tipuri de enumerare persistente prin implementarea interfeței net.sf.hibernate.PersistentEnum și definirea operațiunilor toInt() și fromInt():

Pachetul de ex; import net.sf.hibernate.PersistentEnum; clasă publică Color implementează PersistentEnum ( cod privat final int; privat Culoare (cod int) ( this.code = cod; ) public static final Culoare TABBY = culoare nouă (0); public static final Culoare GINGER = culoare nouă (1); public static final Culoare NEGRU = culoare nouă(2); public int toInt() (codul returnat; ) public static Culoare fromInt(cod int) ( comutator (cod) ( caz 0: returnează TABBY; caz 1: returnează GINGER; caz 2: returnează NEGRU; implicit: aruncă o nouă excepție RuntimeException ("Cod de culoare necunoscut"); ) ) )

Numele unui tip Hibernate este pur și simplu numele clasei enumerate, în acest caz de ex.Color.

5.2.4. Tipuri de valori personalizate

Este relativ ușor pentru dezvoltatori să-și creeze propriile tipuri de valori. De exemplu, este posibil să doriți să stocați proprietăți de tip java.lang.BigInteger în coloane de tip VARCHAR. Hibernate nu oferă un tip încorporat pentru aceasta. Dar definirea tipurilor personalizate nu se limitează la maparea proprietăților (sau a elementelor de colecție) la o singură coloană de tabel. Deci, de exemplu, puteți avea o proprietate getName()/setName() de tipul java.lang.String care este stocată în coloanele FIRST_NAME, INITIAL, SURNAME.

Pentru a implementa un tip personalizat, implementați una dintre interfețele net.sf.hibernate.UserType sau net.sf.hibernate.CompositeUserType și declarați proprietatea folosind numele de clasă complet calificat al implementării tipului dvs. Examinați net.sf.hibernate.test.DoubleStringType pentru capabilitățile disponibile.

Notă: utilizați etichete pentru a afișa proprietăți în mai multe coloane.

Deși multitudinea de tipuri încorporate și suport pentru componente ale Hibernate înseamnă că rareori trebuie să utilizați tipuri personalizate, este totuși o bună practică să le folosiți ca clase (non-entități) pentru tipurile care sunt utilizate frecvent în aplicația dvs. De exemplu, clasa MonetaryAmount este un bun candidat pentru CompositeUserType, deși poate fi expusă ca componentă. Motivația principală este abstractizarea. Cu tipurile personalizate, documentul dvs. de cartografiere va fi mai rezistent la posibilele modificări în viitor dacă modificați reprezentarea tipului de monedă.

5.2.5. Orice tip de afișaj

Există un alt tip de afișare a proprietăților. Element de afișare declară o asociere polimorfă pentru clase din mai multe tabele. Acest tip de afișare necesită întotdeauna mai mult de o coloană. Prima coloană conține tipul entității asociate. Coloanele rămase conțin identificatorul. Nu este posibil să se definească o cheie străină pentru un anumit tip de asociere, astfel încât această mapare nu este utilizată de obicei pentru asocieri polimorfe. Ar trebui să utilizați această mapare numai în cazuri speciale (de exemplu, înregistrarea diferitelor tipuri de date, accesarea datelor sesiunii utilizator).

Atributul meta-type permite unei aplicații să specifice un tip personalizat care mapează valorile coloanei bazei de date la clase persistente ale căror proprietăți de identificare sunt de tipul definit de id-type. Dacă meta-tipul returnează entități java.lang.Class, atunci nimic altceva nu este necesar. În alte cazuri, când este un tip de bază, cum ar fi șir sau caracter, trebuie să mapați valorile la clase.

..... .....

(1)

nume: numele proprietății.

(2)

id-type: tipul de identificare.

(3)

meta-tip (opțional - implicit la clasă): un tip care mapează java.lang.Class într-o singură coloană a bazei de date sau, alternativ, un tip căruia i se permite să mapeze un discriminator.

(4)

cascadă (opțional - implicit la niciunul): tipul de operare în cascadă.

(5)

acces (opțional - implicit la proprietate): strategia pe care Hibernate ar trebui să o folosească pentru a accesa valoarea unei proprietăți.

Vechea proprietate a obiectului, care își are propriul loc în Hibernate 1.2, este încă acceptată, dar a fost depreciată.

5.3. Identificatori SQL între ghilimele

Puteți forța Hibernate să citeze identificatori în instrucțiunile SQL. Hibernate va urma regulile de citare conform dialectului SQL specificat (de obicei ghilimele duble, dar paranteze pentru SQL Server și ghilimele pentru MySQL).

...

5.4. Fișiere de afișare individuale

Puteți declara mapările subclaselor și subclaselor unite în documente separate, chiar în interiorul elementului hibernate-mapping. Acest lucru permite extinderea ierarhiei claselor prin adăugarea unui nou fișier de mapare. Cu această abordare, trebuie să specificați un atribut extins în maparea subclasei care conține numele superclasei pre-mapate. Utilizarea acestei caracteristici face ca ordinea în care documentele de cartografiere sunt listate să fie importantă.