Unelte utilizator

Unelte site


hbilant:bila_1

1. DESCRIEREA SITUAŢIILOR

1.1. Introducere

În hBILANŢ se pot implementa situaţiile financiare, declaraţii lunare şi alte situaţii economico-financiare sau manageriale ale căror date de intrare provin din contabilitate, mai concret din baze de date realizate cu hCONT.

În acest capitol vom detalia modalitatea de descriere a situaţiilor. Recomandăm parcurgerea acestui capitol mai rapid, pentru înţelegerea celor descrise în formulele din situaţii. Informaţiile din prezentul capitol sunt descrise detaliat pentru utilizatorii experimentaţi ai hBILANT, care doresc să conceapă singuri situaţii.

1.2. Grupe de situaţii

Din considerente de operare situaţiile trebuie grupate. Trebuie incluse în aceeaşi grupă acele situaţii care sunt completate în acelaşi moment şi care au tematică sau destinaţie similară. Odată grupate, precizarea perioadelor, a contabilităţilor din care se extrag datele, precum şi iniţializarea, extragerea, verificarea situaţiilor se poate face o singură dată pentru toate situaţiile din grupă.

Grupa de situaţii este caracterizată prin cod (un caracter), denumire, perioada situaţiilor şi denumirea perioadelor din coloane.

Exemple:

       A-Situaţii financiare anul 20XX
       B-Situaţii financiare sem.I 20XX+1
       C-Situaţii financiare anul 20XX+1
       ...
       L-Situaţii lunare (calculator impozit profit etc.)
       S-Situaţii de analiză/contabilitate de gestiune
       U-Buget de venituri şi cheltuieli

Desigur, denumirea grupelor poate diferi în caz concret.

La definirea grupelor de situaţii trebuie să indicaţi şi perioadele pentru care doriţi să extrageţi date în grupa respectivă. Această descriere se face la modul general.

De exemplu: un bilanţ de regulă cuprinde date din Anul precedent şi Anul curent, deci aici vom înscrie numai aceste 2 perioade. Concretizarea perioadei se va face numai înainte de extragerea datelor, în Iniţializare perioadă din meniul Operaţii curente.

1.3. Situaţii

O situaţie este privită ca un tabel având rânduri şi coloane. Elementele tabelului sunt câmpuri care vor primi o valoare numerică pe baza unei formule de calcul. De regulă, fiecare rând reprezintă o informaţie de natură contabilă, iar pe fiecare coloană se calculează valoarea acesteia la diverse momente sau perioade.

Situaţia este implementată în hBILANŢ sub forma a două tabele de aceeaşi dimensiune:

  • primul tabel conţine formule, adică definirea situaţiei şi îl vom numi în continuare descrierea situaţiei. Acest tabel şi operaţiile conexe sunt tratate în meniul principal Descriere situaţii din program.

  • al doilea tabel conţine date, adică sume care sunt calculate pe baza formulelor din descriere. Acest tabel se numeşte tabel de date. Situaţia privită ca un tabel de date este tratată în meniul Operaţii curente.
  • în plus, la fiecare situaţie se poate ataşa un pachet de corelaţii. Corelaţiile sunt nişte relaţii între câmpurile de date ale situaţiei, relaţii care trebuie să fie satisfăcute pentru ca situaţia să poată fi considerată corect întocmită (vezi meniul Corelaţii).

Contabilul poate opta să utilizeze numai situaţiile livrate şi actualizate de noi, sau poate să conceapă adevărate „tablouri de bord“ cu ajutorul cărora să aibă posibilitatea de a furniza informaţii conducerii, deci diverse forme ale contabilităţii de gestiune. De aceea, pentru înţelegerea modului de întocmire a situaţiilor, vom descrie mai pe larg modul de concepere şi realizare a situaţiilor.

Descrierea situaţiei este de fapt implementarea situaţiei pentru mai multe perioade - sau eventual pentru mai multe unităţi - şi este o operaţie mai dificilă, în anumite cazuri necesitând conlucrare între contabil şi informatician.

Exemplu:

                         Bilant incheiat la ...
                                                               - lei-
  ________________________________________________________________________
  Rd. Titlu rind                     An curent (început an)
                                     An curent (sfârşit an)
  ________________________________________________________________________
  01  I.  IMOBILIZARI NECORPORALE
                     sia 201+203+205+2071+208+233+234-sip 2075-280-290-2933
                     sfa 201+203+205+2071+208+233+234-sfp 2075-280-290-2933
  02  II. IMOBILIZARI CORPORALE
                     sia 211+212+213+214+231+232-sip 281-291-2931
                     sfa 211+212+213+214+231+232-sfp 281-291-2931
  03  III.IMOBILIZARI FINANCIARE
                     sia 261+262+263+264+265+267-sip 296
                     sfa 261+262+263+264+265+267-sfp 296
  04  ACTIVE IMOBILIZATE-TOTAL
                     rd 01+02+03  (sau rd 01 la 03)
                     rd 01+02+03
  ...
  ________________________________________________________________________
  Corelaţia ataşată
     rd 04 col 1 si 2 = rd 01 la 03 col 1 si 2

Situaţia fiind descrisă, se poate trece la generarea şi completarea tabelului cu date (meniul Operaţii curente). Această operaţie se poate executa chiar în mod repetitiv: lună de lună sau an de an.

Programul include opţiunea „Multisocietate“, adică descrierile se pot utiliza pentru întocmirea unor situaţii pentru toate firmele, la care se ţine contabilitatea cu hCONT.

Observaţie

La definirea situaţiilor, în anumite puncte, trebuie făcut un compromis între efortul de definire a situaţiei şi efortul de completare a situaţiei:

  • fie se scriu formule mai complexe şi se fac referiri la conturi analitice specifice unităţii, obţinând rezultate mai complete şi necesitând muncă manuală mai puţină,
  • fie se scriu formule mai simple şi se fac referiri doar la conturi sintetice, obţinând rezultate mai puţin complete, dar care necesită modificare, completare manuală mai multă.

La descriere, situaţia este privită ca un tabel de formule.

Pentru nevoi proprii de informare, puteţi să concepeţi şi singuri o serie de situaţii care să conţină date preluate din contabilitate, eventual prelucrate în scopul analizei economico-financiare.

La început, vă recomandăm să creaţi o grupă de situaţii nouă în care să definiţi o nouă situaţie prin Adăugare/Copiere.

Capul situaţiei

Mai întâi, în meniul Situaţii descrieţi capul situaţiei: codul, denumirea, factorul de conversie.

Codul are cel mult 4 caractere: gssx

      g  - cod grupă  de situaţii. De  exemplu: toate situaţiile al căror
           cod începe cu B, aparţin  grupei B (ex. B01,B02..B99 etc.
           care pot aparţine aceluiaşi bilanţ)
      ss - cod situaţie, de obicei 2 cifre: 10, 22 etc.
      x  - pt. extensii

Denumire situaţie: titlul situaţiei

UM şi factorul de conversie: reprezintă ordinul de mărime în care sunt exprimate datele situaţiei faţă de datele din contabilitate.
La extragere datele din contabilitate sunt înmulţite cu factorul de conversie, iar UM este unitatea de mărime.

Exemple:

  UM:-lei-         factorul de conversie:1 sau vid
     -mii lei-                           1/1000
     -milioane lei-                      1/1000000
     -EUR-                               1/3.91122
                               (inscrieti cursul la care doriti
                                transformarea leu-euro sau leu-dolar)

1.4. Rânduri de situaţii

După descrierea titlului, definiţi rândurile situaţiei. Recomandăm, ca să efectuaţi această operaţie din meniul Rânduri de situaţii. Se poate realiza şi din Situaţii, dar aici se văd rândurile din fiecare situaţie existentă şi eventual se pot prelua rânduri gata descrise din situaţiile existente.

Rândurile sunt de două feluri:

  • rânduri de titlu care descriu capul de tabel
  • rânduri de date care vor reprezenta rândurile situaţiei extrase

De exemplu:

  ___________________________________________________________________________
   Rând  Titlu rând                   Coloane                               
  ___________________________________________________________________________
   SITUATIA: I10  --> BILANT PRESCURTAT la ... (titlul situaţiei)
   RAND TITLU (descriere cap tabel)
   00 Denumirea elementului (denumire conţinut cap tabel)
                                      01               (nr. col. - 01)
                                      Sold la 01.01.12 (titlu col. 01)
                                      N  12.0          (numeric, 12 
                                                        caractere
                                                        fără zecimale)
                                      Perioada coloanei: An curent 
                                                       (perioada 
                                                        datelor
                                                        extrase)
  RAND DATE (descriere continut rând)
  41   CAPITALURI - TOTAL (rd 39+40) (titlu rând)
                                      01  rd 39+40  (formula pt.col.1)
                                          rd 39+40  (formula pt.col.2)
  ...   
  RAND DATE
  RAND DATE
  RAND TITLU (daca in aceeaşi situaţie sunt mai multe capuri de tabel)
  RAND DATE
  RAND DATE
  RAND DATE
  ...

Apăsând tasta F10-meniu o să apară o listă a operaţiilor executabile în fereastra respectivă:

Fiecare rând are obligatoriu o coloană de titlu (4 x 50 caractere), o coloană de cod rând (4 caractere) şi cel mult 12 coloane de date (fiecare de cel mult 20 caractere lăţime).

A.Rând de titlu: este descrierea capului de tabel.

  • Cod: cod rând, asigură ordonarea şi identificarea rândurilor
  • Titlu rând: titlul coloanei de titlu rând
  • Formule identice în coloane? DA, dacă toate coloanele se vor calcula după aceeaşi formulă.

Exemple:

  • a)

    dacă pe rândul 01 dorim să extragem cifra de afaceri pe 3 ani consecutivi în 3 coloane, putem să răspundem DA. Astfel, pe rândul de date vom înscrie formula în prima coloana (în exemplu rcr 70), şi ea va fi copiată automat pentru toate coloanele.

  • b)

    dacă însă dorim să completăm cele 3 coloane cu date diferite (de exemplu sold la începutul anului, variaţia şi soldul la sfârşitul anului pentru contul 301), aici răspundem NU şi pe rândul 01 de date vom înscrie formulele în primele 3 coloane:

           
  col.1   sid 301
  col.2   rfd 301 - rfc 301
  col.3   sfd 301

Pentru fiecare coloană de date:

  • Titlu coloană în capul de tabel:
    • este fragmentat automat în lăţimea indicată de lungimea datelor care se pot înscrie
    • fragmentarea poate să fie comandată prin „;“
    • linii se pot trage în interiorul coloanei cu „//“
    • coloane ascunse: <titlu coloană>, dacă titlul coloanei este între <…>, atunci coloana respectivă conţine date auxiliare şi coloana nu este listată.
  • Tip: N, celelalte nu sunt recomandate în versiunea actuală
  • Lăţime: maxim 20 cifre
  • Zecimale: din care zecimale
  • Perioada coloanei: una din perioadele definite în grupa situaţiei, tastaţi <F1> pentru lista perioadelor.

Înfăţişarea capului de tabel definit poate fi studiată (prin listarea situaţiei pe ecran) în meniul Operatii curente, după extragerea datelor din tabelul respectiv. Capul de tabel poate fi remodelat în Descriere situatii fără a porni o nouă extragere.

De exemplu:

  • dintr-o descriere mai complexă a unui cap de tabel:
  Col. Titlu coloana
   1   Sold la 1 ianuarie
   2   Cresteri//Total,d.c.:
   3   ;//prin transfer
   4   Reduceri//Total,d.c.:
   5   ;//prin transfer
   6   Sold la 31 decembrie
  • rezultă un cap de tabel listat astfel:
..________________________________________________________________________
.. |Rind|Sold la 1 |Cresteri  |          |Reduceri  |          |Sold la   |
.. |    |ianuarie  |__________|__________|__________|__________|31        |
.. |    |          |Total,    |prin      |Total,    |prin      |decembrie |
.. |    |          |d.c.:     |transfer  |d.c.:     |transfer  |          |
..________________________________________________________________________|

O situaţie poate să conţină mai multe rânduri de titlu dacă ea este compusă din mai multe subsituaţii (cum este de regulă formularul Date informative din bilanţ). Subsituaţiile din aceeaşi situaţie pot avea coloane diferite atât ca număr, cât şi ca lăţime. Chiar şi perioadele la care se referă subsituaţiile pot fi diferite.

Apartenenţa rândurilor de date de un anume rând de titlu depinde de numerotare. Rândul de titlu trebuie să aibă un număr rând mai mic sau egal cu primul rând de date care i se ataşează. Dacă urmează un nou rând de titlu în cadrul aceluiaşi tabel, rândurile de date cu număr rând mai mare sau egal vor aparţine la a doua subsituaţie.

De exemplu:

 00 RAND TITLU 1
    01 RAND DATE
    02 RAND DATE
 03 RAND TITLU 2
    03 RAND DATE
    04 RAND DATE
    05 RAND DATE

Rândul de titlu nu poate fi şters dacă conţine rânduri de date, deci dacă se doreşte ştegerea lui, se parcurg următoarele etape:

  • dacă situaţia conţine deja date extrase, acestea se golesc (Operaţii curente/Alegere grupă/Alegere situaţie/Golire)
  • se şterg rândurile de date aferente rândului de titlu respectiv (Descriere situaţii/Randuri/Stergere sau Alt S)
  • se şterge şi rândul de titlu (ca mai sus)

B.Rânduri de date:

  • Cod: cod rând, asigură ordonarea şi identificarea rândurilor.
    Cod rând titlu poate fi egal cu cod rând date următor
    Dacă se doreşte înserarea ulterioară a unor rânduri într-o situaţie existentă, se poate utiliza numerotarea zecimală. (de exemplu, după rândul 11 vor urma 111,112,…11A etc.)
  • Titlu rând: denumirea rândului
    Dacă titlul rândului (coloanei) este între <…>, atunci rândul este considerat ascuns şi nu se listează. Astfel de rânduri servesc pentru calcule parţiale.
    În titlu se poate înscrie orice text, care explică conţinutul datelor de pe rândul respectiv.

Pentru fiecare coloană definită în rândul de titlu anterior:

  • Formule: sunt de mai multe feluri, vezi mai jos.
  • Tip rezultat: dacă formula lipseşte sau dacă este incompletă şi după extragere câmpul trebuie modificat manual, atunci se trece „!“.
    Acest semn atenţionează contabilul, că după extragere trebuie să parcurgă datele obţinute şi să introducă date sau corecturi în acele câmpuri. În cazul unor corelaţii neverificate, aceste câmpuri sunt primele care se vor verifica mai atent.
Tipuri de formule
Tip formula Sintaxa Tip camp
limbaj descriere expresii
formula de extragere din contabilitate spatii
nr 1
rdb 401
sic 401
spatii
(1)
(rdb('401'))
(sic('401'))
camp primitiv:
- calculat in EXTRAGERE
- modificabil manual
formula de calcul st A10 rd 10 col 1 (cit('A10','10','1')) camp derivat:
- calculat in CALCUL
- manual nu se modifica

Unele tipuri de situaţii pot necesita, ca chiar şi câmpurile derivate (de regulă subtotalurile sau sume obţinute după o împărţire) să fie modificabile manual. În aceste cazuri, la Tip rezultat se introduce „M

Formule de extragere

Există următoarele tipuri de formule:

  • Câmp fără formulă (spaţii, vid):
    Câmpul nu poate fi calculat automat (prin formulă), ci se va completa manual. La extragere primeşte valoarea implicită, adică 0 în cazul numerelor.
  • Constante şi operaţii (+,-,*,/) cu constante:
  rd 01/nr 3.91122      (suma din rd.01/cursul unei valute)
  nr 15 / nr 100        (15%)
  ("     x     ")      - dacă nu are sens să se înscrie o valoare
                         de fapt este o convenţie, câmpul va conţine "x"
  • Conturi şi operaţii (+,-) cu conturi:

    sid 301
    rdb 301
    sid 301+302+303
    sid 301+302+rdb 301+302
    sid 211+212-sic 2811-2812

    ATENŢIE!:
    NU funcţionează cu paranteză, tot ce se scade se scrie cu semnul minus!
    sid, sfd, rdb sunt cuvinte cheie şi reprezintă valori ale contului la diferite momente sau din diverse perioade.

  • Perechi de conturi şi operaţii cu acestea
    La închiderea conturilor de venituri sau cheltuieli apar formule de genul:
      rul 701=121+702=121+703=121+704=121+705=121+706=121+708=121
      sau:
      rul  121=711 daca > 0        -> dacă rul 121=711 pozitiv,
                                           atunci acest rulaj, 
                                           altfel 0
      rul  121=711 daca < 0        -> dacă  rul 121=711 negativ,
                                            atunci acest rulaj, 
                                            altfel 0
  • Operaţii între rânduri
    rd 04 col 1+rd 06 col 2

    Atenţie!
    La descrierea formulelor nu trebuie să folosim puncte, de exemplu dacă înscriem rd.04 col 1+rd 06 col 2, apare mesajul „Eroare de sintaxă la cuvântul…“, ceea ce însemnă că formula trebuie corectată după limbajul specific utilizat de program.
    Puncte se pot folosi puncte numai în simbolul conturilor: 623.1

Operatori (Cuvinte cheie)

Dacă ne situăm pe Formule în modificarea unei coloane, apăsând tasta F1 apare o fereastră de ajutor, din care putem vedea toate prescurtările contabile care sunt acceptate în formule:

   _________________________________________________
         SOLD INCEPUT AN
   sid - sold inceput an debitor
   sia - sold inceput an in activ
   sic - sold inceput an creditor
   sip - sold inceput an in pasiv
   _________________________________________________
         RULAJ INCEPUT AN - INCEPUT PERIOADA CURENTA
   rpd - rulaj precedent debitor
   rpc - rulaj precedent creditor
   _________________________________________________
        SOLD LA INCEPUTUL PERIOADEI
   spd - sold precedent debitor
   spa - sold precedent in activ
   spc - sold precedent creditor
   spp - sold precedent in pasiv
   _________________________________________________
         RULAJ IN PERIOADA CURENTA
   rdb - rulaj curent debitor
   rcr - rulaj curent creditor
   rul - rulaj curent (x = y)
   _________________________________________________
       - RULAJ INCEPUT AN - SFIRSIT PERIOADA CURENTA
   rfd - rulaj final debitor
   rfc - rulaj final creditor
   _________________________________________________
         SOLD LA SFIRSITUL PERIOADEI CURENTE
   sfd - sold final debitor
   sfa - sold final in activ
   sfc - sold final creditor
   sfp - sold final in pasiv
   _________________________________________________

De regulă, aceste formulări coincid cu cele contabile. Expresiile „în activ“, respectiv „în pasiv“ se utilizează pentru definirea situaţiei patrimoniului din bilanţ, unde este important, ca indiferent de modul de contabilizare, datele să ajungă la locul lor. Astfel, un sold iniţial în activ înseamnă, că dacă un cont bifuncţional are un sold debitor sau un sold creditor cu minus, acesta să ajungă în bilanţ în partea de activ.

Semnificaţia cuvintelor cheie este în funcţie de Perioada coloanei în care apare formula. Următoarele două exemple sugerează aceste semnificaţii:

Perioada coloanei: 01/04/2010-30/06/2010

  si             sp            sf
  |      rp       |   rdb,rcr   |
  |<------------->|<----rul---->|
  |<--------------------------->|
              rf

Perioada coloanei: 01/01/2010-31/01/2010

  si=sp               sf
  |      rdb,rcr      |
  |<-------rul------->|
  rp=0     rf

Alte reguli:

  • simbolul contului este un şir de caractere care poate conţine orice caracter în afară de următoarele semne: spaţiu, +, -, *, /, < , >, =, #, ; etc. Poate să conţină semnele: ., _, ~
    Exemple: 201, 290.1, 290.1A, 290.1B, XXX, XXX.1 etc.
  • operaţii de tipul celor de mai jos nu sunt suportate:
    sic 121 + nr 18045      -> eroare de sintaxă (cont+constantă)
    sic 121 + rul 121=601   -> eroare de sintaxă (cont+pereche conturi)
    rul 121=601+nr 100      -> eroare de sintaxă (pereche+constantă)
    rul 121=601+rul 121=602 -> eroare de sintaxă (rul numai la început)
  • cuvintele cheie trebuie despărţite de cont prin spaţiu:
    sid121+ rdb 121         -> eroare de sintaxă
    sid 121+ rdb121         -> cont inexistent: rdb121

Funcţii de extragere

Există următoarele funcţii de extragere:

  • Constante şi operaţii:
    (123)
    (1+15/100)
  • Conturi şi operaţii:
    (sid('121'))
    (sid('121')+rdb('121'))
  • Perechi de conturi şi operaţii:
    (rul('121','301')+rul('121','302'))
  • Alte reguli:
    • funcţiile de mai sus pot fi combinate în operaţii oricum, cu condiţia ca să rezulte expresii CLIPPER corecte. De exemplu:
      (MAX(rul('121','711'),0))
      (IF(sdb('121')>0, rul('121','601'), -rul('601','121')))
    • numele funcţiilor de extragere din contabilitate coincid cu cuvintele cheie de mai sus

Sintaxa generală a constantelor:

Constantele sunt unele cifre folosite în calcule.
Ele se introduc în formule folosind semnul „nr“ în faţa cifrei.
De exemplu, dacă dorim să calculăm 16% din valoarea extrasă în rândul 04, putem înscrie în rd. 05:
rd 04 * nr 16/nr 100

Sintaxa generală a funcţiilor cu un cont:

  xxx (cont,[um]) -   unde cont - simbol cont între ' '
                           um   - UM a contului, dacă există
  sid,sic,spd,spc,sfd,sfc  - sold db/cr în funcţie de funcţia contului.
                             Dacă sid#0, atunci sic=0 şi invers.
  sia,sip,spa,spp,sfa,sfp  - sold în activ/sold în pasiv indiferent de
                             functia contului; sold va avea în partea în
                             care soldul este pozitiv.
                             Dacă sia#0, atunci sip=0 şi invers.
  rdb,rcr                  - rulaj debitor/creditor în perioada
                             coloanei în care este utilizat.

Exemple:

  ___________________________________________________________
   Contul in hCONT                  sxd    sxc    sxa    sxp
  ___________________________________________________________
  301    A    sdb:  100              100      0    100     0
  301    A    sdb: -100             -100      0      0   100
  401    P    scr:  100                0    100      0   100
  401    P    scr: -100                0   -100   +100     0
  441*   P    scr:  100                0    100      0   100
  441*   P    scr: -100                0   -100   +100     0
  512*   B    sdb:  100              100      0    100     0
  512*   B    scr:  100                0    100      0   100
  ___________________________________________________________
  sxd 4111 + sxa 441                ex. cu ct.*
  sxd 301  + sxd 308 - sxc 308      ex. cu +/-

Observaţie
Conturile cu * pot figura atât în Activ cât şi în Pasiv în funcţie de sold.

Sintaxa în cazul funcţiilor cu 2 conturi: rul ([c1],[c2])

  • suma înregistrărilor de forma c1=c2 din arhiva carte mare, pentru perioada corespunzătoare.
  • c1 şi c2 trebuie să fie conturi de nivel carte mare sau chiar superior nivelului carte mare

Conturi de nivel Carte mare

De regulă, formule de genul 7…= 121 sau 121 = 6… avem la contul de profit şi pierdere sau la calculul impozitului pe profit. Aceste solduri înainte de închidere se găsesc în hCONT în Cartea Mare.

Conturile de nivel carte mare se pot urmări în Planul de cont din hCONT. De regulă, nivelul carte mare înseamnă conturile marcate cu tip balanţă „S“, adică cele care aparţin balanţei sintetice. Acest sistem funcţionează dacă nu este definită nici o balanţă cu cod „*“ (Conturi de nivel carte mare).

Dacă dorim o soluţie mai complexă, pentru a marca şi alte conturi pentru care urmărim rulajele din cartea mare, se defineşte balanţa de mai sus cu cod „*“.

Se adaugă şi acest tip de balanţă la conturile selectate ca făcând parte din balanţa „S“ şi se marchează selectiv şi celelalte analitice pe care dorim să le avem cu rulaje în Cartea mare.

De exemplu, contul 623.1 (Cheltuieli de protocol) este necesar pentru calculul impozitului pe profit. În cazul în care contul este marcat de la începutul anului cu balanţa „*“ în hCONT, vom obţine rulaje corecte în arhiva carte mare pentru acest cont.

Dacă însă analiticul s-a introdus numai în cursul anului sau nu a fost marcat de la început, este important, ca să modificăm în formulă de exemplu la rfd 623.1, în loc de 121 = 623.1.

De fapt, rezultatul extragerii va fi şi aşa corect, în afară de situaţiile în care s-au făcut înregistrări de corectare prin creditarea conturilor de cheltuieli sau debitarea conturilor de venituri.

Pentru evitarea modificării nedorite a rulajelor, recomandăm ca astfel de înregistrări să se facă în hCONT numai prin evidenţierea sumelor cu minus („în roşu“).

Nu recomandăm însă marcarea tuturor conturilor cu „*“, deoarece aceasta ar duce la ocuparea inutilă a memoriei şi la timp de încărcare mărit din cauza conturilor analitice.

  • unul dintre conturi poate lipsi, în acest caz fiind identic cu rd/rc
  • poate fi apelată şi pt. rădăcini de cont. De ex. chiar dacă la nivel carte mare există 121.1, 121.2 se poate apela rul('121',) şi atunci se va returna suma rulajelor de la ambele conturi.
  • dacă este apelat rul('121','623.1') şi 623.1 nu este de nivel carte mare, atunci rezultatul este 0!
  • se poate întâmpla ca perioada să fie anul şi conturile analitice 121.1, 121.2 au fost introduse din martie. În acest caz funcţia rul('121.1',) returnează rulaje doar începând din martie, în schimb funcţia rul('121',) returnează o valoare corectă pentru toată perioada.

Importanţa funcţiei rul

Normele de întocmire a bilanţului au prevăzut utilizarea soldurilor conturilor de venituri şi cheltuieli înainte de a fi transferate asupra contului de rezultate pentru completarea contului de profit şi pierdere, deoarece numai astfel este asigurat că rezultatul obţinut va fi identic cu cel din contul 121.

Formule de calcul

Formulele de calcul sunt operaţii între câmpurile situaţiei.

Un câmp de situaţie se descrie astfel:

      st Xxx rd yy col z,

unde Xxx este codul situaţiei, yy este codul rândului, iar z este codul coloanei. Obligatoriu este prezent rd yy, iar specificarea situaţiei şi a coloanei poate să lipsească, valoarea acestora fiind: situaţia curentă şi coloana curentă.

Operaţiile pot fi +,-,*,/.
Operaţiile de adunare între mai multe rânduri sau coloane consecutive se pot descrie prescurtat, următoarele expresii fiind echivalente:

      rd 01+rd 02+rd 03
      rd 01+02+03
      rd 01 la 03

Exemple:

      rd 10 col 1
      rd 10 col 1 * nr 38000 - nr 1
      rd 10 col 1+rd 10 col 2
      rd 10 col 1*rd 10 col 2
      rd 10 col 1 la 4
      rd 10 la 14 col 1
      rd 10 la 14 col 1 la 4
      rd 10+11+12 col 1 + rd 10+11+12 col 2
      rd 10+11+12 col 1  - rd 10+11+12 col 2
      rd 10+11+12 col 1  * rd 10+11+12 col 2
      rd 10+11+12 col 1  / rd 10+11+12 col 2
      rd 10 col 1-rd 11-12 col 1   -> rd 10 col 1-rd 11 col 1+rd 12 col 1
                                      rd 11-12 funcţionează ca şi cum
                                         ar fi în paranteză
      rd 10+13 la 20 col 1
      rd 10 col 1 - rd 11 col 2 daca > 0  -> dacă valoare expresie pozitiv,
                                               atunci valoare expresie,
                                               altfel 0
      rd 10 col 1 - rd 11 col 2 daca < 0  -> dacă valoare expresie negativ,
                                               atunci valoare expresie,
                                               altfel 0

Formulele trebuie concepute astfel încât să nu existe formule recursive (să nu existe referiri în formula rândului yy tocmai la rândul yy etc).
Totuşi aceste recursivităţi sunt detectate în faza de calcul, pentru că calculul executat în ciclu este oprit după 10 paşi. Exemple de formule recursive:

                    rd  col           formula
                    ______________________________________
               1.   10    1      rd 10 col 1 + rd 09 col 1
               2.   10    1      rd 11 col 1 + rd 09 col 1
                    11    1      rd 10 col 1 + rd 19 col 1
               3.   10    1      rd 11 col 1 + rd 09 col 1
                    11    1      rd 12 col 1
                    12    1      rd 10 col 1 + rd 19 col 1

Funcţii de calcul:

Funcţiile de calcul sunt operaţii între câmpurile situaţiei, descrise ca expresii CLIPPER. Valoarea unui câmp de situaţie este returnată de funcţia:

  cit ([st],rd,[col]),

unde st este codul situaţiei, rd este codul rândului, iar col este codul coloanei. Numai parametrul rd este obligatoriu, celelalte două fiind opţionale, caz în care sunt considerate valorile curente respective.

Exemple:

      (cit('A10','11','1'))
      (cit(,'11','1')+cit(,'12','1'))
      (cit(,'11')+cit(,'12'))
      (MAX(cit(,'11')-cit(,'12'),0))

Dacă nu este specificat codul situaţiei, programul va interpreta că evaluarea se va face pentru situaţia şi coloana din care este apelată formula.
Sunt considerate câmpuri derivate, cele în care formula conţine funcţia cit. De exemplu: (cit(,'20')-cit(,'10')).

Dar expresia (sid('121')-cit(,'10')), cu toate că programul nu sesizează, nu este o expresie corectă pentru că conţine atât funcţii de calcul (cit) cât şi de extragere (sid). Conform definiţiei de mai sus, programul îl consideră câmp derivat, dar va fi calculat în etapa de CALCUL şi asupra valorii sid('121') nu se va aplica factorul de conversie. De aceea, astfel de expresii ambigue trebuie ocolite.

Aceste funcţii sunt utilizate numai în mod excepţional, dacă limbajul utilizat de program este insuficient pentru a descrie problema dată.

1.5. Corelaţii

Corelaţiile sunt relaţii între câmpurile unei situaţii sau între câmpurile mai multor situaţii din aceeaşi grupă. Situaţiile se consideră corect întocmite, dacă aceste corelaţii sunt satisfăcute.

Descrierea unei corelaţii se compune din:

  • Cod situaţie: de obicei este situaţia între câmpurile căreia trebuie să fie satisfăcută corelaţia. Când se doreşte descrierea unor corelaţii între câmpurile mai multor situaţii, se defineşte o situaţie fictivă (fără rânduri), de care se vor ataşa aceste corelaţii (vezi de regulă situaţia cod X99 din bilanţ)
  • Cod corelaţie: 4 caractere pentru identificarea şi ordonarea corelaţiilor în cadrul aceleaşi situaţii.

Formule de corelaţii

Forma generală a unei formule de corelaţie este:

  <expresie stânga> <operator> <expresie dreapta> dacă <condiţie>
  • expresiile din stânga şi dreapta sunt la fel ca la formulele de calcul cu următoarele excepţii:
    1. nu sunt admise formele … daca > 0 şi … daca < 0
    2. în schimb sunt admise forme de descriere repetitivă
  • operator: <, >, =, #, >=, ⇐
  • condiţie: <expresie stânga> <operator> <expresie dreapta> într-un singur şir de caractere.

Corelaţia este evaluată în felul următor:

  • dacă există condiţie, atunci este evaluată mai întâi condiţia,
    • dacă condiţia este adevărată, atunci se continuă evaluarea,
    • altfel evaluarea se termină şi corelaţia se consideră adevărată,
  • este evaluată expresia stângă, rezultând o valoare numerică,
  • este evaluată expresia dreaptă, rezultând o valoare numerică,
  • dacă relaţia dintre cele două numere este satisfăcută,
    • atunci corelaţia se consideră adevărată,
    • altfel corelaţia se consideră falsă

Pentru definirea repetitivă a unei corelaţii există posibilităţile:

  1. înşiruire elemente cu „,“ între ele:
    rd 10 col 1,2,3,4 = rd 11+12 col 1,2,3,4
  2. înşiruire elemente cu „şi“ între ele:
    rd 10 col 1 şi 2 şi 3 şi 4 = rd 11+12 col 1 şi 2 şi 3 şi 4
  3. înşiruire elemente cu „,“ şi „şi“ între ele:
    rd 10 col 1, 2, 3 şi 4 = rd 11+12 col 1, 2, 3 şi 4
  4. indicând primul şi ultimul element cu „rep“ între ele:
    rd 10 col 1 rep 4 = rd 11+12 col 1 rep 4

Formele repetitive de mai sus sunt echivalente cu următoarele egalităţi:

         rd 10 col 1 = rd 11+12 col 1
         rd 10 col 2 = rd 11+12 col 2
         rd 10 col 3 = rd 11+12 col 3
         rd 10 col 4 = rd 11+12 col 4

Repetiţia poate fi aplicată şi la rânduri.

Numărul de repetiţii care rezultă din expresia stângă trebuie să fie egal cu numărul de repetiţii care rezultă din expresia din partea dreaptă. Această egalitate este pusă în evidenţă abia în operaţia de Verificare corelaţii.

Repetiţia nu se acceptă însă în cazul condiţiei verificate. Aici, dacă trebuie să se verifice o condiţie pentru 2 coloane, trebuie să scriem corelaţia pentru col.1 şi să o copiem ca o nouă corelaţie pentru col.2.

Exemplu:

O corelaţie din bilanţ este descrisă astfel în norme:

rd. 63 col. 1 si 2  >= 0,  dacă rd 64 col 1 si 2 = 0

Această corelaţie trebuie despărţită în 2 corelaţii în hBILANT:

corel.20A  rd 63 col 1  >= 0,  daca rd 64 col 1 = 0
corel.20B  rd 63 col 2  >= 0,  daca rd 64 col 2 = 0

Problema este valabilă numai la corelaţiile în care la descrierea condiţiei se face referire la mai multe coloane deodată.

Corelaţii între situaţii

Aplicaţia permite şi definirea unor corelaţii între situaţii. În acest caz trebuie creată o situaţie separată, de exemplu cu cod X99 pt. bilanţul din grupa X. În Descriere rânduri, nu se vor adăuga rănduri, dar în Corelaţii se vor trece aici toate corelaţiile între formulare. La descrierea corelaţiilor trebuie specificate situaţiile la care se referă cele 2 laturi ale egalităţii. Pt. această situaţie nu are sens să pornim Extragere, numai Verificare corelaţii.

Funcţii în corelaţii

Expresia stângă şi expresia dreaptă pot fi funcţii CLIPPER care fac referire la câmpurile situaţiei.

Atenţie!
Dacă trebuie îndeplinite 2 condiţii simultan, pentru ca o corelaţie să fie verificată, trebuie să se scrie o expresie Clipper, deoarece sintaxa actuală nu acceptă definirea unor asemenea corelaţii.

Dacă se doreşte ştergerea completă a unei grupe de situaţii, se începe cu golirea datelor în Operaţii curente, după care se şterg corelaţiile definite pentru acea situaţie filtrând numele situaţiei pe care dorim să o ştergem în Corelaţii după care se alege operaţia Stergere selectivă.
După aceea se pot şterge situaţiile şi grupele de situaţii devenite inutile.

Atenţie!
Dacă nu selectăm numele unei situaţii concrete, se vor şterge astfel corelaţiile pentru toate situaţiile definite.

hbilant/bila_1.txt · Ultima modificare: 2022/05/08 21:34 (editare externă)