Calcularea SKD prin nu funcționează. Utilizarea resurselor din sistemul de control al accesului folosind exemplul creării unui raport tabelar extern. Creați un nou raport

În alcătuirea datelor stabilirea totalurilor arată puțin diferit decât în ​​cereri. Să definim setul de date „Interogare” în sistemul de compunere a datelor.

În cererea în sine, nu configurăm totalurile, ci mergem la fila „Resurse” a compoziției datelor. La nivelul schemei de compunere a datelor, noi determina resursele. Acestea sunt câmpurile care trebuie numărate la nivel de grupare. Faceți clic pe butonul „>>” și ​​sistemul însuși va transfera toate câmpurile numerice și le va defini ca resurse.

De asemenea, puteți specifica câmpuri non-numerice în resurse. De exemplu, dacă selectați atributul „Link”, sistemul va număra numărul de documente din grupurile noastre. Aceste informații pot fi, de asemenea, utile. Asa de, în diagrama de layout definim doar resurse, iar grupările în sine sunt configurate la nivel de variantă de raport. Utilizatorul poate crea, de asemenea, grupările pe care dorește să le vadă în setările sale pentru opțiunile de raportare.

Să creăm o setare standard de compoziție a datelor.
Faceți clic pe butonul „Deschideți designerul de setări”.

Să selectăm tipul de raport - listă. Faceți clic pe butonul „Următorul”.

Să selectăm toate câmpurile și să mutăm câmpul contraparte în poziția de sus. Faceți clic pe butonul „Următorul”.

Să selectăm toate câmpurile și să mutăm câmpul contraparte în poziția de sus. Faceți clic pe butonul „OK”.

Setarea rezultată a fost:

După cum puteți vedea, la configurarea unei opțiuni de raport, resursele sunt evidențiate cu o pictogramă verde, astfel încât să poată fi distinse rapid de alte câmpuri.

Dacă ne deschidem raportul în modul 1C:Enterprise și îl generăm, vom vedea că datele finale sunt generate la nivel de grupare. Rezultate pe post și pe contrapartide.

Configurarea resurselor în schema de compunere a datelor 1C

Acum să ne îndreptăm atenția asupra setări care există pentru resurse. În câmpul „Expresie” putem specifica o funcție de agregare care poate fi utilizată pentru a obține valoarea resursei. În lista derulantă puteți vedea o serie de funcții standard, dar nu toate. De exemplu, nu există funcții.

Aici în câmpul „Expresie” putem scrie propria noastră expresie.

În câmpul „Expresie” putem accesa și funcțiile modulelor comune.

În plus, puteți specifica în câmpul „Calculați după...” după ce grupări trebuie calculată resursa. Dacă câmpul „Calculați după...” nu este completat, atunci valoarea finală a resursei va fi calculată la toate nivelurile de grupare care sunt definite în setările opțiunii de raport. În cazul nostru, trebuie să completăm câmpul „Calculați după...” din resursa „Cantitate”, deoarece putem vinde mărfuri cu diferite unități de măsură. De exemplu: ulei în litri și roți în bucăți. Nu este adevărat că ar fi ilogic să adunăm cantitățile acestor mărfuri? Prin urmare, trebuie să lăsăm suma cantității la nivelul articolului și la nivelul contrapărții
Să eliminăm sumarea.

Dacă generăm un raport, vom vedea că totalurile cantităților sunt calculate numai pe articol, iar totalurile cantităților pentru contractori sunt goale.

Posibilități la descrierea resurselor în schema de compoziție a datelor 1C

sa luam in considerare o serie de caracteristici neevidente legate de descrierea resurselor.

  • Fiecare resursă poate defini de mai multe ori. Dar acest lucru are sens doar dacă
    resursa va fi calculată la diferite niveluri de grupări. De exemplu, dacă cantitatea, într-un caz
    se însumează pentru articol, iar pentru antreprenori obținem valoarea minimă.

Dacă generăm un raport, vom vedea că pentru contrapartea „Deriya” achiziția minimă este de cinci unități din gama de produse „Hârtie autoadezivă”.

  • În câmpul „Expresie”, pe lângă scrierea unei formule, puteți utiliza o funcție specială de compunere a datelor numită „Calculați”. Această funcție vă permite să calculați o valoare finală folosind o anumită formulă. De exemplu, pentru fiecare contraparte este necesar să se cunoască procentul achizițiilor în unități fizice raportat la volumul total. Dar cum să obțineți volumul total de achiziții după cantitate? Pentru a face acest lucru, utilizați funcția „Calculați” și scrieți următoarea expresie în câmpul „Expresie”:
Sumă(Cantitate)/Calculați(„Suma(Cantitate)”, „TotalTotal”)*100

Așa cum se vede, toți parametrii funcției „Calculate” sunt șiruri. Pentru ca câmpul cantității să fie afișat frumos în raport, îl vom configura în fila „Seturi de date”. În linia de cantitate vom găsi câmpul „Opțiuni de editare”. Să deschidem dialogul, să găsim linia „Format” și să edităm linia de format din ea, setând valoarea „Acuratețea” la două în fila „Număr”.

Să rulăm raportul și să vedem rezultatul calculării procentului de achiziții pentru contrapartea „AUPP KOS TOO” în raport cu
volum total:


La finalul articolului vreau să vă recomand unul gratuit de la Anatoly Sotnikov. Acesta este un curs de la un programator experimentat. Vă va arăta separat cum să creați rapoarte în sistemul de control al accesului. Trebuie doar să ascultați cu atenție și să vă amintiți! Veți primi răspunsuri la următoarele întrebări:
  • Cum se creează un raport simplu de listă?
  • Pentru ce sunt coloanele Câmp, Cale și Titlu din fila „Câmpuri”?
  • Care sunt limitările pentru câmpurile de aspect?
  • Cum se configurează corect rolurile?
  • Care sunt rolurile câmpurilor de aspect?
  • Unde pot găsi fila de compoziție a datelor într-o interogare?
  • Cum se configurează parametrii în sistemul de control acces?
  • Devine și mai interesant...
Poate că nu ar trebui să încerci să navighezi singur pe internet în căutarea informațiilor necesare? În plus, totul este gata de utilizare. Doar începeți! Toate detaliile despre ceea ce este în lecțiile video gratuite

Iată una dintre lecțiile despre marcarea compoziției datelor într-o interogare:

Articolul descrie un exemplu de utilizare practică a unei medii ponderate în rezultatele raportului. Sunt prezentate câteva tehnici de lucru cu sistemele de control al accesului. Articolul este destinat unui cititor instruit, cu cel puțin abilități de bază în lucrul cu sistemele de control al accesului și cu generatorul de interogări.

Calculul mediei ponderate este utilizat în mod activ în sarcinile legate de contabilitatea de gestiune și alte calcule de afaceri.

A-priory, - MEDIE PONDERATĂ(media ponderată) este o medie aritmetică care ia în considerare ponderea fiecăruia dintre termenii pentru care se calculează această medie.

În aproape toate manualele de contabilitate de gestiune, pentru a ilustra media ponderată, ele oferă un exemplu cu achiziționarea a trei loturi din același produs - fiecare lot de mărfuri are un preț de achiziție diferit și o cantitate diferită. Este clar că dacă într-o astfel de situație luăm media aritmetică a prețurilor de achiziție, vom obține temperatura medie în spital - o cifră care nu are sens practic. Într-o astfel de situație, media ponderată este cea care are sens.

Același exemplu de manual: mărfurile au fost achiziționate în trei loturi, dintre care unul era de 100 de tone pentru 70 de lire sterline. Artă. pe tonă, celălalt - 300 de tone la 80 de lire sterline. Artă. pe tonă și treime - 50 de tone la 95 lbs. Artă. pe tonă, apoi în total cumpără 450 de tone de marfă; prețul mediu obișnuit de achiziție va fi (70 + 80 + 95): 3 = 81,7 lire sterline. Artă. Prețul mediu ponderat, ținând cont de volumele fiecărui lot, este egal cu (100 × 70) + (300 × 80) + (50 × 95) : 450 = 79,4 lire sterline. Artă. pe tonă.

Formulă:

Unde X sunt valorile a căror medie ponderată dorim să o obținem, iar W sunt ponderile.

Aici se termină teoria.

A trebuit să mă ocup de asta când afișam date despre vânzările de mărfuri într-un raport, grupate pe manageri, unde era necesar să obțin profitabilitate ca urmare. Rândurile raportului au afișat profitabilitatea fiecărui produs vândut în rezultate, a fost necesar să se vadă cu ce rentabilitate a lucrat managerul; În consecință, profitabilitatea este o „valoare”, iar „ponderea” acestei valori este venitul. O serie de precizări pentru a completa imaginea. Venitul (volumul vânzărilor) este prețul de vânzare și cantitatea produsului înmulțit. Profitul brut este venitul minus costul (nu este important cum exact a fost calculat costul în contextul acestui articol). Și, în sfârșit, profitabilitatea noastră este raportul dintre profitul brut și venitul exprimat ca procent.

Apare întrebarea: ce profitabilitate a realizat managerul în perioada de raportare? Pentru a răspunde corect la această întrebare, trebuie să calculați valoarea medie ponderată a profitabilității.

Pentru a obține media ponderată în funcție de profitabilitate în SKD, în constructorul de interogări creăm un câmp auxiliar al formularuluiexpresie arbitrară, unde înregistrăm produsul profitabilității și veniturilor. Atribuim un alias acestui câmp -Câmp auxiliar. Vezi poza de mai jos.

Nu vom afișa acest câmp în raport, avem nevoie de date pentru a calcula rezultatele. Vom calcula rezultatele în fila ACSResurse.

O altă tehnică de lucru cu ACS în fila „Resurse”, unde este indicat calculul totalurilor, este capacitatea de a utiliza expresii în câmpul „Expresie” cu date din câmpul „Câmpuri disponibile”. Vezi poza de mai jos.

Pentru coloana raportului „Procent de profitabilitate” scriem expresia Amount(AuxiliaryField)/Amount(Revenue).

Să rezumam, în primul rând, este important să înțelegem ce este o medie ponderată și unde trebuie să utilizați doar media aritmetică și unde - media ponderată. Din punct de vedere tehnic, două puncte pot prezenta unele dificultăți - crearea unui câmp auxiliar în raport și capacitatea de a folosi o expresie arbitrară în resursele ACS pentru a calcula rezultatele de care avem nevoie.

Sper că acest articol va fi de folos cuiva.

1. Calculați (Evaluare)- are scopul de a evalua o expresie în contextul unei grupări. Funcția este utilizată pentru compatibilitatea cu versiunile anterioare ale platformei. Se recomandă utilizarea funcției CalculateExpression în schimb.

Sintaxă:
Calculați (expresie, grupare, tip calcul)

Opțiuni :

  • Expresie(Linia). Conține o expresie calculată;
  • Gruparea(Linia). Conține numele grupării în contextul căreia expresia urmează să fie evaluată. Dacă un șir gol este folosit ca nume de grupare, calculul va fi efectuat în contextul grupării curente. Dacă șirul GrandTotal este folosit ca nume de grup, calculul va fi efectuat în contextul totalului general. În caz contrar, calculul va fi efectuat în contextul grupului părinte cu același nume.
    De exemplu:
    Sumă(Vânzări.Suma Cifra de afaceri) / Calculate(„Suma(Vânzări.Suma Cifra de afaceri)”, „Total”).
    În acest exemplu, rezultatul va fi raportul dintre suma pentru câmpul „Vânzări.Sumă Cifra de afaceri” din înregistrarea grupării și valoarea aceluiași câmp în întregul aspect.
  • Tipul de calcul(Linia). Dacă acest parametru este setat la „TotalTotal”, expresia va fi calculată pentru toate înregistrările de grupare. Dacă valoarea parametrului este „Grupare”, valorile vor fi calculate pentru înregistrarea curentă a grupului de grupare.
2. Evaluați expresia (EvalExpression) - are scopul de a evalua o expresie în contextul unei grupări. Funcția ia în considerare selecția grupărilor, dar nu ia în considerare selecțiile ierarhice. Funcția nu poate fi aplicată unei grupări din selecția grupului respectiv.

Sintaxă:
CalculateExpression(Expresie, Grupare, Tip calcul, Start, Sfârșit, Sortare, Sortare ierarhică, ProcesareValoriComenziIdentice)

Opțiuni :

  • Expresie(Linia). Conține o expresie calculată;
  • Gruparea(Linia). Conține numele grupării în contextul căreia expresia urmează să fie evaluată. Dacă un șir gol este folosit ca nume de grupare, calculul va fi efectuat în contextul grupării curente. Dacă șirul GrandTotal este folosit ca nume de grup, calculul va fi efectuat în contextul totalului general. În caz contrar, calculul se va efectua în contextul grupării părinte cu acel nume;
  • Tipul de calcul(Linia). Dacă acest parametru este setat la „TotalTotal”, expresia va fi calculată pentru toate înregistrările de grupare. Dacă valoarea parametrului este „Grupare”, valorile vor fi calculate pentru înregistrarea curentă a grupului de grupare. Dacă parametrul este setat la „Grupare fără resurse”, atunci când se calculează funcția pentru o înregistrare de grup după resursă, expresia va fi evaluată pentru prima înregistrare de grup a grupării originale. La evaluarea funcției CalculateExpression cu valoarea „GroupingNonResource” pentru înregistrările de grup care nu sunt grupări după resursă, funcția este evaluată în același mod în care ar fi evaluată cu valoarea parametrului „Grouping”. Generatorul de aspect al compoziției de date, atunci când generează un aspect al compoziției de date la ieșirea unui câmp - o resursă prin care se realizează gruparea, la aspect, iese în aspect o expresie calculată folosind funcția CalculateExpression cu parametrul „GroupingNon-Resource” specificat. Pentru alte resurse grupate după resursă, sunt returnate expresii normale de resurse. Dacă parametrul este setat la „Ierarhie”, atunci expresia trebuie evaluată pentru înregistrarea ierarhică părinte, dacă există una, și pentru întreaga grupare, dacă nu există înregistrare ierarhică părinte. Generatorul de layout, când generează o expresie pentru câmpul % în grupul ierarhic, generează o expresie care conține relația expresiei resursă cu funcția CalculateExpression pentru expresia resursă calculată pentru gruparea curentă cu tipul de calcul Hierarchy.
  • start. Indică din ce înregistrare ar trebui să înceapă fragmentul, în care funcțiile de expresie agregată trebuie calculate și din ce înregistrare să se obțină valorile câmpului în afara funcțiilor agregate. Un șir care conține unul dintre:
    • "Primul" Este necesar să se obțină prima înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca decalaj de la începutul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, First(3) – primirea a treia înregistrare de la începutul grupării. Dacă prima înregistrare este în afara grupării, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți First(4), atunci se consideră că nu există înregistrări.
    • "Ultimul" Trebuie să obțineți ultima înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca decalaj față de sfârșitul grupării. Valoarea rezultată trebuie să fie un număr întreg mai mare decât zero. De exemplu, Last(3) – primirea a treia înregistrare de la sfârșitul grupului. Dacă ultima înregistrare este în afara grupării, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 înregistrări și doriți să obțineți Last(4), atunci se consideră că nu există înregistrări.
    • "Anterior" Trebuie să obțineți înregistrarea anterioară de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca o compensare față de înregistrarea de grupare curentă. De exemplu, Previous(2) – obținerea precedentului din înregistrarea anterioară. Dacă înregistrarea anterioară se află în afara grupării (de exemplu, a doua înregistrare de grupare necesită obținerea Previous(3)), atunci se obține prima înregistrare de grupare. La primirea înregistrării anterioare pentru totalul grupării, se obține prima înregistrare.
    • "Următorul" Trebuie să obțineți următoarea înregistrare de grupare. După cuvântul dintre paranteze, puteți specifica o expresie, al cărei rezultat va fi folosit ca o compensare înainte de înregistrarea de grupare curentă. De exemplu, Next(2) – obținerea următoarei din următoarea înregistrare. Dacă următoarea înregistrare depășește gruparea, atunci se consideră că nu există înregistrări. De exemplu, dacă există 3 intrări și a treia intrare primește Next, atunci se consideră că nu există intrări. Când se primește următoarea înregistrare pentru totalul grupării, se consideră că nu există nicio înregistrare.
    • "Actual". Trebuie să obțineți înregistrarea curentă. La preluarea pentru un total de grupare, se obține prima înregistrare.
    • „Valoare limită”. Necesitatea de a obține o înregistrare după valoarea specificată. După cuvântul LimitingValue din paranteze, trebuie să indicați expresia cu valoarea căreia doriți să începeți fragmentul, primul câmp de ordonare. Prima înregistrare a cărei valoare a câmpului de ordonare este mai mare sau egală cu valoarea specificată va fi returnată ca înregistrare. De exemplu, dacă câmpul Perioada este folosit ca câmp de comandă și are valorile 01/01/2010, 02/01/2010, 03/01/2010 și doriți să obțineți LimitingValue(DateTime(2010) , 1, 15)), apoi se va obține o înregistrare cu data 02/01 2010.
  • Sfârşit. Indică în ce înregistrare trebuie continuat fragmentul, în care trebuie calculată expresia agregată. Un șir care conține unul dintre:
    • "Primul"
    • "Ultimul"
    • "Anterior"
    • "Următorul"
    • "Actual".
    • „Valoare limită”.
  • Triere. Un șir care listează expresiile, separate prin virgule, în direcția în care trebuie ordonată secvența. Dacă nu este specificat, atunci ordonarea se realizează în același mod ca și pentru gruparea pentru care este evaluată expresia. După fiecare expresie se poate specifica cuvântul cheie Crescător, pentru ordonare crescătoare, Descrescător, pentru ordonare descrescătoare, Ordonare automată, pentru ordonarea câmpurilor de referință după câmpurile după care doriți să ordonați obiectul referit. Cuvântul Auto Order poate fi folosit atât cu cuvântul Crescător, cât și cu cuvântul Descendent.
  • Sortare Ierarhică. Similar cu sortarea. Folosit pentru organizarea înregistrărilor ierarhice. Dacă nu este specificat, compozitorul de layout generează ordonarea conform ordinii specificate în parametrul Sort.
  • Procesarea acelorași valori ale comenzii. Un șir care conține unul dintre:
    • „Împreună” înseamnă că o secvență de înregistrări ordonate este utilizată pentru a determina înregistrările anterioare și următoare;
    • „Separat” înseamnă că înregistrările anterioare și următoare sunt determinate pe baza valorilor expresiilor de ordonare;
    De exemplu, dacă secvența rezultată este ordonată după dată:
    1. 01 ianuarie 2001 Ivanov M. 10
    2. 02 ianuarie 2001 Petrov S. 20
    3. 02 ianuarie 2001 Sidorov R. 30
    4. 03 ianuarie 2001 Petrov S. 40
    Când utilizați procesarea valorilor identice ale comenzii „Separat”, cea anterioară pentru înregistrarea 3 va fi înregistrarea 2, iar când utilizați „Împreună” - înregistrarea 1. Și fragmentul pentru înregistrarea curentă pentru înregistrarea 2 pentru „Separat” va fi înregistrarea 2, iar pentru „Împreună” - înregistrările 2 și 3. Astfel, totalul pentru înregistrarea curentă pentru „Separat” va fi 20, iar pentru „Împreună” - 50. Când „Împreună” este specificat în Start și Parametrii de sfârșit, nu puteți specifica un offset pentru pozițiile „Primul”, „Ultimul”, „Anterior”, „Următorul”. Valoarea implicită este „Separat”.
Exemplu:
Obținerea raportului dintre suma pentru câmpul „Vânzări.Sumă Cifra de afaceri” a unei înregistrări de grupare și valoarea aceluiași câmp în întregul aspect:
Sum(Vânzări.Suma Cifra de afaceri) / CalculateExpression(„Suma(Vânzări.Suma Cifra de afaceri)”, „Total”).

Acest exemplu calculează valoarea ierarhiei curente:
Alegere
Când Level() > 0
Apoi EvaluateExpression ("Referință", "Ierarhie")
În caz contrar, nul
Sfârşit

Note:
Funcția ia în considerare selecția grupărilor, dar nu ia în considerare selecțiile ierarhice. Funcția nu poate fi aplicată unei grupări din selecția grupului respectiv. De exemplu, la selectarea grupării Nomenclatură, nu puteți utiliza expresia CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000 . Dar o astfel de expresie poate fi folosită în selecția ierarhică. Dacă înregistrarea finală precede înregistrarea de început, atunci se consideră că nu există înregistrări pentru calcularea datelor detaliate și calcularea funcțiilor agregate. Când se calculează expresii de interval pentru un total general (parametrul Grupare este setat la „Total brut”), se presupune că nu există înregistrări pentru calcularea datelor detaliate și calcularea funcțiilor agregate. Când se generează o expresie pentru funcția CalculateExpression, compozitorul de aspect, dacă expresia de ordonare conține câmpuri care nu pot fi utilizate în grupare, înlocuiește funcția CalculateExpression cu NULL.

3. Evaluați expresia cu matrice de grup (EvalExpression cu matrice de grup) - funcția returnează un tablou, fiecare element al căruia conține rezultatul calculării unei expresii pentru grupare după câmpul specificat.

Sintaxă:
CalculateExpressionWithGroupArray (Expresie, GroupFieldExpressions, SelectRecords, SelectGroups)

Opțiuni :

  • Expresie(Șir) - expresia care trebuie evaluată. De exemplu, „Amount(AmountTurnover)”;
  • FieldExpressionsGroups
  • Selectarea înregistrărilor
  • Selectarea Grupurilor- selecția aplicată înregistrărilor de grup. De exemplu: „Amount(AmountTurnover) > &Parameter1”.
Exemplu:
Maximum(CalculateExpressionWithGroupArray("Suma(Suma Cifra de afaceri)", "Contraparte"));


Generatorul de layout, atunci când generează expresii pentru afișarea unui câmp personalizat a cărui expresie conține doar funcția CalculateArrayWithGroup, generează expresia de afișare astfel încât datele afișate de vizualizări și datele să fie ordonate.
De exemplu, pentru un câmp personalizat cu expresia:
CalculateExpressionWithGroupArray(„Suma(AmountTurnover)”, „Contraparte”)
Generatorul de layout va genera următoarea expresie pentru ieșire:
ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable(„Vizualizare(Suma(DataSet.AmountTurnover)), Amount(DataSet.AmountTurnover))”, „DataSet.Account”), „2”)))

4. Calculați expresia cu GroupValueTable (EvalExpressionWithGroupValueTable) - funcţia returnează un tabel de valori, fiecare element conţinând rezultatul calculării unei expresii pentru grupare după câmpul specificat.

Sintaxă:
CalculateExpressionWithGroupValueTable (expresie, expresii GroupField, selecție înregistrări, selecție grup)

Opțiuni :

  • Expresie(Șir) - expresia care trebuie evaluată. O linie poate conține mai multe expresii separate prin virgule. După fiecare expresie poate exista un cuvânt cheie opțional AS și numele coloanei tabelului de valori. De exemplu: „Contraparte, Sumă (Suma Cifra de afaceri) Ca volum de vânzări”.
  • FieldExpressionsGroups- expresii de grupare a câmpurilor, separate prin virgule. De exemplu, „Contrapartidă, Partid”;
  • Selectarea înregistrărilor- o expresie aplicată înregistrărilor de detaliu. De exemplu, „Deletion Flag = False”. Dacă acest parametru folosește o funcție de agregare, va apărea o eroare la compunerea datelor;
  • Selectarea Grupurilor- selecția aplicată înregistrărilor de grup. De exemplu: „Amount(AmountTurnover) > &Parameter1”.
Exemplu:
CalculateExpressionWithGroupValueTable(„Contul CA contraparte, Suma(Suma Cifra de afaceri) AS SalesVolume”, „Contul”)

Rezultatul acestei funcții va fi un tabel de valori cu coloanele Contraparte și Volum vânzări, care va conține contrapartidele cu volumele lor de vânzări.
Generatorul de layout, atunci când generează un layout, convertește parametrii funcției în termeni de câmpuri de layout de date. De exemplu, câmpul Cont va fi convertit în DataSet.Account.
De exemplu, un câmp personalizat cu expresia:
CalculateExpressionWithGroupValueTable(„Cont, Sumă(Suma Cifra de afaceri)”, „Cont”)
Generatorul de layout va genera următoarea expresie pentru ieșire:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable), „DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField”, „1,,DataSet“, „3“, „3”. ), „2, 4”))

5. Nivel - funcția este concepută pentru a obține nivelul curent de înregistrare.

Sintaxă:
Nivel()

Exemplu:
Nivel()

6. SequenceNumber - obțineți următorul număr de serie.

Sintaxă:
NumberByOrder()

Exemplu:
NumberByOrder()

7. SequenceNumberInGrouping - returnează următorul număr de secvență din gruparea curentă.

Exemplu:
NumberByOrderInGroup()

8. Format - obțineți un șir formatat al valorii transmise.

Sintaxă:
Format(Valoare, FormatString)

Opțiuni :

  • Sens- expresia care trebuie formatată;
  • FormatString- șirul de format este setat în conformitate cu șirul de format 1C:Enterprise.
Exemplu:
Format(Facturi. Sumă document, „NPV=2”)

9. BeginOfPeriod

Sintaxă:
StartPeriod(Data, PeriodType)

Opțiuni :

  • Data(Data de). Data specificată;
  • Tipul perioadei
Exemplu:
StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), „Month”)
Rezultat: 10/01/2002 0:00:00

10. EndOfPeriod - funcția este concepută pentru a selecta o anumită dată dintr-o dată dată.

Sintaxă:
EndPeriod(Data, PeriodType)

Opțiuni :

  • Data(Data de). Data specificată;
  • Tipul perioadei(Linia). Conține una dintre următoarele valori: Minut; Ora; Zi; O săptămână; Lună; Sfert; An; Deceniu; Jumatate de an.
Exemplu:
EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), „Săptămâna”)
Rezultat: 13.10.2002 23:59:59

11. AddKDate (DateAdd) - funcția este concepută pentru a adăuga o anumită valoare datei.

Sintaxă:
AddToDate(Expresie, IncrementType, Magnitude)

Opțiuni :

  • Expresie(Data de). data originală;
  • TipMărire(Linia). Conține una dintre următoarele valori: Minut; Ora; Zi; O săptămână; Lună; Sfert; An; Deceniu; Jumatate de an.
  • Magnitudinea(Număr). Cu cât de mult trebuie mărită data, partea fracțională este ignorată.
Exemplu:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), „Lună”, 1)
Rezultat: 12.11.2002 10:15:34

12.DataDiferenta - funcția este concepută pentru a obține diferența dintre două date.

Sintaxă:
DifferenceDate(Expression1, Expression2, DifferenceType)

Opțiuni :

  • Expresia1(Data de). Data scăzută;
  • Expresia2(Data de). data originală;
  • Tip Diferență(Linia). Conține una dintre valorile: Al doilea; Minut; Ora; Zi; Lună; Sfert; An.
Exemplu:
DATEDIFERENCE(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), „DAY”)
Rezultat: 2

13. Subșir - această funcție este concepută pentru a extrage un subșir dintr-un șir.

Sintaxă:
Subșir (șir, poziție, lungime)

Opțiuni :

  • Linia(Linia). Șirul din care este extras subșirul;
  • Poziţie(Număr). Poziția caracterului din care începe subșirul care urmează să fie extras din șir;
  • Lungime(Număr). Lungimea subșirului alocat.
Exemplu:
SUBSTRING(Conturi.Adresă, 1, 4)

14. StringLength - funcția este concepută pentru a determina lungimea unui șir.

Sintaxă:
StringLength(Șir)

Parametru:

  • Linia(Linia). Un șir a cărui lungime este determinată.
Exemplu:
Linie(Contrapărți.Adresă)

15. Anul- această funcție este concepută pentru a extrage anul dintr-o valoare de tip Date.

Sintaxă:
An (Data)

Parametru:

  • Data(Data de). Data până la care este determinat anul.
Exemplu:
AN (Cheltuieli.Data)

16. Sfert - această funcție este concepută pentru a extrage numărul trimestrului dintr-o valoare de tip Date. Numărul sfertului variază în mod normal de la 1 la 4.

Sintaxă:
Trimestru (Data)

Parametru:

  • Data(Data de). Data până la care se stabilește trimestrul
Exemplu:
QUARTER(Cheltuială.Data)

17. Luna - această funcție este concepută pentru a extrage numărul lunii dintr-o valoare de tip Date. Numărul lunii variază în mod normal de la 1 la 12.

Sintaxă:
Luna(Data)

Parametru:

  • Data(Data de). Data până la care se stabilește luna.
Exemplu:
MONTH(Cheltuială.Data)

18. Ziua anului (DayOfYear) - această funcție este concepută pentru a obține ziua anului dintr-o valoare de tip Date. Ziua anului variază în mod normal între 1 și 365 (366).

Sintaxă:
Ziua anului (Data)

Parametru:

  • Data(Data de). Data până la care se stabilește ziua anului.
Exemplu:
DAYYEAR(Contul cheltuielilor.Data)

19. Ziua- această funcție este concepută pentru a obține ziua lunii dintr-o valoare de tip Date. Ziua lunii variază în mod normal între 1 și 31.

Sintaxă:
Ziua intalnirii)

Parametru:

  • Data(Data de). Data până la care se stabilește ziua lunii.
Exemplu:
ZI (Cheltuieli.Data)

20. Săptămâna - această funcție este concepută pentru a obține numărul săptămânii al anului dintr-o valoare de tip Date. Săptămânile anului sunt numerotate începând de la 1.

Sintaxă:
Săptămâna (Data)

Parametru:

  • Data(Data de). Data după care sunt determinate numerele săptămânii.
Exemplu:
SĂPTĂMÂNĂ(Cheltuieli.Data)

21. Ziua săptămânii - această funcție este concepută pentru a obține ziua săptămânii dintr-o valoare de tip Date. Ziua normală a săptămânii variază de la 1 (luni) la 7 (duminică).

Sintaxă:
Ziua săptămânii (Data)

Parametru:

  • Data(Data de). Data după care este determinată ziua săptămânii.
Exemplu:
ZIUA SĂPTĂMÂNII (Data facturii de cheltuieli)

22. Ora- această funcție este concepută pentru a obține ora din zi dintr-o valoare de tip Date. Ora zilei variază de la 0 la 23.

Sintaxă:
Ora (data)

Parametru:

  • Data(Data de). Data după care este determinată ora zilei.
Exemplu:
HOUR(Cheltuieli.Data)

23. Minutul - această funcție este concepută pentru a obține minutul orei dintr-o valoare de tip Date. Minutul orei variază de la 0 la 59.

Sintaxă:
Minutul (Data)

Parametru:

  • Data(Data de). Data după care este determinat minutul orei.
Exemplu:
MINUT(Cheltuieli.Data)

24. În al doilea rând - această funcție este concepută pentru a obține secunda dintr-un minut dintr-o valoare de tip Date. Secunda dintr-un minut variază de la 0 la 59.

Sintaxă:
A doua (data)

Parametru:

  • Data(Data de). Data după care sunt determinate secundele minutei.
Exemplu:
SECOND(Cheltuieli.Data)

25. Turnat - această funcție este concepută pentru a extrage un tip dintr-o expresie care poate conține un tip compus. Dacă expresia conține un alt tip decât cel cerut, va fi returnat NULL.

Sintaxă:
Express (Expresie, Indicație tip)

Opțiuni :

  • Expresie- expresia de convertit;
  • Indicație tip(Linia). Conține un șir de tip. De exemplu, „Număr”, „Șir”, etc. Pe lângă tipurile primitive, această linie poate conține numele tabelului. În acest caz, se va încerca să se exprime o referire la tabelul specificat.
Exemplu:
Express(Data.Props1, „Număr(10,3)”)

26. IsNull (IsNull) - această funcție returnează valoarea celui de-al doilea parametru dacă valoarea primului parametru este NULL. În caz contrar, va fi returnată valoarea primului parametru.

Sintaxă:
IsNull(Expresia1, Expresia2)

Opțiuni :

  • Expresia1- valoarea de verificat;
  • Expresia2- returnează valoarea dacă Expression1 este NULL.
Exemplu:
YesNULL(Suma(Vânzări.Sumă Cifra de afaceri), 0)

27.ACos- calculează arc cosinus în radiani.

Sintaxă:
ACos (expresie)

Parametru:

  • Expresie(Număr). Valoarea cosinusului (în intervalul -1 ... 1) după care este determinat unghiul.
28.ASin- calculează arcsinusul în radiani.

Sintaxă:
ASin(expresie)

Parametru:

  • Expresie(Număr). Valoarea sinusului (în intervalul -1 ... 1) după care este determinat unghiul.
29. ATan- calculează arctangenta în radiani.

Sintaxă:
ATan(expresie)

Parametru:

  • Expresie(Număr). Valoarea tangentei după care este determinat unghiul.
30.Cos- calculează cosinusul.

Sintaxă:
Cos(expresie)

Parametru:

  • Expresie
31. Exp- ridicarea numărului e la o putere.

Sintaxă:
Exp(Expresie)

Parametru:

  • Expresie(Număr). Sensul gradului.
32.Jurnal- calculează logaritmul natural.

Sintaxă:
Jurnal (expresie)

Parametru:

  • Expresie
33.Log10- calculează logaritmul lui X la baza 10.

Sintaxă:
Log10 (expresie)

Parametru:

  • Expresie(Număr). Numărul inițial este mai mare decât 0.
34. Pow- exponentiarea.

Sintaxă:
Pow (bază, indicator)

Opțiuni :

  • Baza(Număr). Baza operației de exponențiere.
  • Index(Număr). Exponent.
35. Păcat- calculează sinusul.

Sintaxă:
Păcat (expresie)

Parametru:

  • Expresie(Număr). Specificat în radiani.
36. str- calculează rădăcina pătrată.

Sintaxă:
Sqrt(expresie)

Parametru:

  • Expresie(Număr). Număr nenegativ.
37. Tan- calculează tangenta.

Sintaxă:
Tan(expresie)

Parametru:

  • Expresie(Număr). Valoarea sinusului după care este determinat unghiul.
38. Rotunda- rotunjește numărul original la adâncimea de biți necesară. Modul de rotunjire este standard (1,5 ca 2).

Sintaxă:
Env(Expresie, adâncime de biți)

Opțiuni :

  • Expresie(Număr). Numărul original;
  • Adâncime de biți(Număr). Numărul de zecimale la care se rotunjește.
39. Int- taie partea fracționară a unui număr.

Sintaxă:
Obiect (expresie)

Parametru:

  • Expresie(Număr). Un număr fracționar.
40. Funcţiile modulelor comune

O expresie de motor de compoziție de date poate conține apeluri la funcții ale modulelor de configurare comune globale. Nu este necesară nicio sintaxă suplimentară pentru a apela astfel de funcții.

Exemplu:
AbreviatedName(Documente.Link, Documente.Data, Documente.Număr)

În acest exemplu, funcția „AbreviatedName” va fi apelată din modulul de configurare generală.
Rețineți că utilizarea funcțiilor comune ale modulului este permisă numai dacă este specificat parametrul corespunzător al procesorului de compoziție a datelor.
În plus, funcțiile modulelor comune nu pot fi utilizate în expresiile de câmp personalizate.

41. Resentiment - această funcție returnează o reprezentare șir a valorii transmise a unui tip non-primitiv. Pentru valorile de tip primitiv, returnează valoarea în sine.

<Пустое значение>".

Exemplu:
Prezentare (contraparte)

42. Snur - această funcție convertește valoarea transmisă într-un șir.

Dacă o matrice sau un tabel de valori este folosit ca parametru, funcția returnează un șir care conține o reprezentare șir a tuturor elementelor matricei, separate prin caracterele „;”. Dacă orice element are o reprezentare șir goală, atunci șirul „ este afișat în locul reprezentării sale.<Пустое значение>".

Exemplu:
Rând (Data vânzărilor)

43. ValueIsFilled

Pentru valorile NULL, Undefined returnează întotdeauna False.
Pentru valorile booleene, returnează întotdeauna True.
Pentru alte tipuri, returnează True dacă valoarea diferă de valoarea implicită pentru tipul dat.

Exemplu:
ValueFilled(Data de livrare)

44. LevelInGroup - această funcție obține nivelul curent de înregistrare în raport cu gruparea.

Poate fi folosit pentru a obține nivelul de imbricare al unei înregistrări într-o grupare ierarhică.

Exemplu:
LevelInGroup()

45. ValueType

Sintaxă:
ValueType(Expresie)

Parametru:

  • Expresie(Linia). Tip de valoare șir.
Returnează o valoare de tip Type care conține tipul de valoare al parametrului funcției.

Conectați-vă la site ca student

Conectați-vă ca student pentru a accesa materialele școlare

Sistemul de compunere a datelor 1C 8.3 pentru începători: numărarea rezultatelor (resurse)

Scopul acestei lecții va fi:

  • Scrieți un raport care să afișeze o listă de produse (directorul de alimente), conținutul caloric și gustul acestora.
  • Grupați produsele după culoare.
  • Aflați despre rezumat (resurse) și câmpurile calculate.

Creați un nou raport

Ca și în lecțiile anterioare, deschidem baza de date " Delicatese„în configurator și creați un nou raport prin meniu” Fişier"->"Nou...":

Tipul documentului - raport extern:

În formularul de configurare a raportului, scrieți numele „ Lecția 3" și apăsați butonul " Diagrama de compoziție a datelor deschise":

Lăsați numele implicit al schemei și faceți clic pe „ Gata":

Adăugarea unei cereri prin constructor

Pe fila " Set de date" click verde semnul plus și selectați „ Adăugați un set de date - Interogare":

În loc să scriem manual textul solicitării, îl rulăm din nou constructor de interogare:

Pe „fila” Mese„trageți masa” Alimente" de la prima coloană la a doua:

Selectați din tabel " Alimente„câmpurile pe care le vom solicita. Pentru a face acest lucru, trageți și plasați câmpurile” Nume", "Gust", "Culoare" Și " Conținut caloric" de la a doua coloană la a treia:

A ieșit așa:

Apasa butonul " Bine" - textul cererii a fost generat automat:

Crearea setărilor de prezentare a raportului

Accesați fila „ Setări" și faceți clic pe bagheta magica, a apela designer de setări:

Selectați tipul de raport " Listă..." și apăsați butonul " Mai departe":

Trageți din coloana din stânga la dreapta câmpurile care vor fi afișate în listă și faceți clic pe „ Mai departe":

Trageți din coloana din stânga în câmpul din dreapta " Culoare" - se va intampla gruparea rândurile din raport. Faceți clic pe " Bine":

Și iată rezultatul muncii designerului. Ierarhia raportului nostru:

  • raportul în ansamblu
  • gruparea „Culoare”
  • intrări detaliate - rânduri cu nume de alimente

Salvați raportul (buton dischetă) Și fără a se închide Vom deschide imediat configuratorul în modul utilizator. A ieșit așa:

Schimbarea ordinii coloanelor

Dar haideți hai sa schimbam ordinea coloane (săgeți în sus și în jos), astfel încât să arate ca figura de mai jos:

Să salvăm raportul și să-l deschidem din nou în modul utilizator:

Grozav, e mult mai bine.

Să rezumam conținutul de calorii

Ar fi bine să rezumăm conținutul caloric al alimentelor pe grupe. Pentru a vedea suma conținutului de calorii al tuturor produselor, să zicem, alb sau galben. Sau aflați conținutul total de calorii al tuturor produselor din baza de date.

În acest scop, există un mecanism de calculare a resurselor.

Accesați fila „ Resurse"și trageți câmpul" Conținut caloric„(vom rezuma) din coloana din stânga la dreapta.

În acest caz, în câmp, selectați expresia din lista derulantă " Cantitate (calorii)", deoarece totalul va fi suma tuturor elementelor incluse în total:

Salvăm și generăm un raport:

Acum avem rezultate pentru fiecare dintre grupuri și pentru raportul în ansamblu.

Să rezumam (medie) în termeni de calorii

Acum să-l facem să apară într-o altă coloană in medie conținutul caloric al produselor pe grupuri și în raport în ansamblu.

Nu puteți atinge coloana „Calorii” existentă - totalul este deja afișat în ea, deci să creăm un alt câmp, care va fi o copie exactă a câmpului „Calorie”.

Pentru a crea un astfel de câmp „virtual”, vom folosi mecanismul câmpuri calculate.

Accesați fila „ Câmpuri calculate" și apăsați verde semnul plus:

Într-o coloană" Calea datelor„Noi scriem numele noului câmp ( fără întreruperi, fara spatii). Să se numească „ Conținut caloric mediu", iar în coloana " Expresie„Noi scriem numele unui câmp existent pe baza căruia se va calcula noul câmp. Scriem acolo” Conținut caloric". Coloana " Titlu" va fi completat automat.

Am adăugat un câmp nou (" Conținut caloric mediu"), dar nu va apărea în raport de la sine - trebuie să apelați din nou designer de setări("bagheta magică") sau adăugați acest câmp manual.

Hai să o facem al doilea cale. Pentru a face acest lucru, accesați fila " Setări", Selectați " Raport„(la urma urmei, dorim să adăugăm câmpul în întregime la raport), selectați fila din partea de jos” Câmpurile selectate"și trageți câmpul" Conținut caloric mediu„din coloana din stânga la dreapta:

A ieșit așa:

Salvăm și generăm un raport:

Câmpul a apărut și vedem că valorile sale sunt valorile câmpului „Calorie”. Grozav!

Pentru a face acest lucru, vom folosi din nou mecanismul deja familiar resurse(rezumat). Accesați fila „ Resurse"și trageți câmpul" Conținut caloric mediu„din coloana din stânga la dreapta:

Mai mult, în coloana „ Expresie"alege" Medie (Medie de calorii)":

Salvăm și generăm un raport:

Vedem că pentru grupuri, adică pentru fiecare culoare, și pentru raport în ansamblu, valoarea medie a fost calculată absolut corect. Dar ei sunt prezenți intrări suplimentare pentru produse individuale (nu grupuri) pe care aș dori să le elimin din raport.

Știți de ce au apărut (valori nu pe grup)? Pentru că atunci când am adăugat câmpul " Conținut caloric mediu„în setările raportului, la pasul doi am selectat întregul raportși acest câmp nou a ajuns în elementul " Detaliat înregistrări".

Să reparăm eroarea. Pentru a face acest lucru, reveniți la fila " Setări", Selectați " Intrări detaliate" mai întâi de sus (pasul 2) și apoi " Intrări detaliate„de jos (pasul 3), mergi la marcaj” Selectat câmpuri" și vom vedea în coloana din dreapta elementul " Auto".

Element " Auto" - acesta nu este un singur câmp. Acestea sunt mai multe câmpuri care se încadrează aici automat pe baza setărilor de nivel superior.

Pentru a vedea care sunt aceste câmpuri, faceți clic pe elementul " Auto" dreapta butonul și selectați „ Extinde":

Element " Auto" extins în următoarele câmpuri:

Și aici este domeniul nostru" Conținut caloric mediu"care a venit aici din punct de vedere" Raport" când l-am târât acolo. Doar hai sa scoatem bifați caseta de lângă acest câmp pentru a elimina rezultatul acestuia.

Există un registru de informații „Opriri de-a lungul traseului”, care stochează informații despre distanța de la început până la oprirea finală.

Orez. 1. Registrul de informații „Opriri de-a lungul traseului”

Este necesară elaborarea unui raport privind sistemul de control al accesului care să arate distanța dintre oricare două opriri de-a lungul traseului.

Soluţie

În orice configurație care acceptă formulare gestionate, vom crea un registru non-periodic de informații „Opriri de-a lungul traseului”. Să adăugăm la acesta dimensiunile Route și Stop cu un tip șir de lungime 4 și, respectiv, 50, precum și o resursă Distanță cu un tip de număr cu o lungime de 10,2. Să salvăm modificările în noua configurație. Pentru a crea un raport extern, în Meniu-->Fișier-->Nou, selectați „Raport extern”, setați-i numele și deschideți diagrama de aspect:

Orez. 2. Crearea unui raport extern asupra sistemului de control acces

În fereastra care se deschide, faceți clic pe butonul „Adăugați set de date” și selectați linia „Adăugați set de date - interogare”:

Orez. 3. Adăugarea unui set de date - interogare

Să creăm o nouă cerere. Pentru a rezolva problema, vom avea nevoie în interogare de registrul de informații „Opriri de-a lungul traseului” și, deoarece raportul ar trebui să arate clar distanța dintre oricare două opriri, vom crea o interogare pentru o reprezentare tabelară de-a lungul axelor X și Y. , folosind o îmbinare externă completă a tabelului de registru cu sine:

Orez. 5. Specificarea resurselor pentru sistemele de control acces

Să mergem acum la fila „Setări” și să facem clic pe butonul „Deschideți designerul de setări”, selectați tipul de raport Tabel:

Orez. 7. Selectarea câmpurilor de raport

Fig.8. Selectarea câmpurilor de grupare

Orez. 9. Selectarea câmpurilor de sortare

Tot ce rămâne este să folosiți butonul „Proprietăți ale elementelor setărilor utilizatorului” pentru a crea aceste setări și, de asemenea, pe fila „Alte setări” pentru a indica modul în care vor fi localizate resursele și a elimina totalurile (nu sunt necesare aici):

Orez. 10 Utilizator și alte setări.

Raportul este gata. Acum să trecem de la configurare la Enterprise și să completăm registrul de informații (dacă nu este deja completat):

Orez. 11. Completarea registrului de informații

Și, în sfârșit, din Meniu-->Fișier apelăm raportul nostru din locul în care l-am salvat în configurator, faceți clic pe butonul „Generează” și vedem soluția problemei:

Orez. 12. Raportați „Distanța dintre opriri”

Publicația m-a îndemnat să scriu un articol