1s exemplu SKD de creare a unui aspect. Instrucțiuni simple - cum să afișați imaginile în rapoarte privind sistemul de control al accesului. Afișarea unei imagini în antetul raportului

Cream un raport in sistemul de control acces.

Compoziția câmpurilor, de exemplu, este următoarea:

În rândurile de raport se află gruparea „Contraparte”, în coloane – gruparea „Proiect”. Datele raportului includ resursa „Decontări reciproce”.

Ca urmare, obținem un rezultat ca acesta:

Vedem că antetul raportului include titlul resursei „Așezări reciproce”. Nu avem nevoie de această rubrică aici, așa că vom scăpa de ea.

Există mai multe opțiuni.

Opțiunea 1.

Prin personalizarea aspectului.

Deschideți fila corespunzătoare în designerul de sistem de compoziție a datelor. Selectați „Adăugați aspectul de grupare”. În formularul „Aspect de grupare”, adăugați câmpul „Proiect”. Tip aspect - „Header”.

Am stabilit zona. De exemplu, celula R1C1. Pentru celulă, setați proprietatea de umplere la „Opțiune”. Să denumim parametrul, de exemplu, „Proiect”.

Setați expresia pentru parametrul: View(Project). Aceasta înseamnă o reprezentare a câmpului „Proiect”.

Rezultatul ar trebui să fie cam așa:

Ca urmare, raportul va lua forma de care avem nevoie, fără antetul resursei.

Opțiunea 2.

1. În câmpurile selectate ale întregului raport, lăsați doar resursa
2. În câmpurile de grupare a coloanelor selectate, eliminați câmpul automat și adăugați un câmp pentru această coloană (de exemplu, dacă coloanele sunt grupate după perioadă, selectați perioada aici)
3. În fila „Alte setări” a rădăcinii raportului, selectați „Locația resursei” - „verticală”.

Această opțiune nu necesită un aspect.

Astăzi ne vom uita la rezolvarea unei probleme interesante - afișarea imaginilor într-un raport.

La ce poate fi util acest lucru?

Aici câteva exemple:

  • Lista de prețuri cu poze cu produse și logo în antet
  • Profile de angajați cu fotografii
  • Reconcilierea calculelor cu ștampila și semnătura la subsol
  • Rapoarte/formulare tipărite cu imprimare scanată

În videoclip discutăm și noi formarea programului raportați la SKD. Se folosește această metodă de generare a rapoartelor în configurații standard– acesta este un alt motiv pentru a-l urmări cu atenție :)

Aspecte predefinite în ACS

Folosind aspecte predefinite, puteți suprascrie aspectul standard al raportului.

În această lecție, pe lângă stabilirea problemei, vom lua în considerare:

  • Stocarea datelor binare într-o configurație de model
  • Posibilitatea de a utiliza layout-uri ACS pentru afișarea imaginilor

Generarea programatică a unui raport privind sistemul de control acces

Pentru a rezolva problema afișării imaginilor într-un raport asupra sistemului de control acces, este necesar să îl generați programatic.

Atunci când se generează un raport în mod programatic, este posibil să se acceseze date binare.

În timpul acestei lecții vom face:

  • Ieșirea rezultatului aspectului într-un document foaie de calcul
  • Utilizarea obiectului Date de decriptare
  • Preluarea datelor binare din baza de date
  • Crearea programatică de desene într-un document foaie de calcul

Afișarea unei imagini în raportul ACS

În această lecție parcurgem pașii finali: afișam datele binare obținute anterior într-un raport.

Pentru a face acest lucru, un desen este adăugat la un document de foaie de calcul, după care este afișat în raport.

Versatilitatea algoritmului de ieșire a imaginii

Algoritmul de ieșire a imaginii dezvoltat este universal - algoritmul continuă să funcționeze indiferent de orice modificare a structurii raportului.

De fapt, asta vom demonstra în această lecție.

În plus, vom lua în considerare caracteristica generării de rapoarte de fundal pe sistemul de control al accesului (generarea unui raport folosind sarcini de rutină).

Afișarea unei imagini în antetul raportului

Adesea trebuie să afișați o imagine statică în antetul sau subsolul unui raport.

Ar părea o sarcină simplă, dar în cazul ACS trebuie să știți cum să o rezolvați:

  • Pasul 1. Generați un raport în mod programatic
  • Pasul 2. Creați un aspect separat cu antetul sau subsolul dorit
  • Pasul 3. Înainte de a completa raportul ACS, afișați o secțiune cu datele necesare.

Acest videoclip arată clar soluția problemei.

Vizionare placuta! :)

În ultimele zile am publicat materiale pe ACS.

Ce se întâmplă dacă programatorul/implementatorul 1C nu cunoaște sistemul de control al accesului? Poate că nu este chiar atât de important?

Ok, să ne uităm la ceea ce așteaptă un specialist care scrie rapoarte „pe genunchi” (de exemplu, folosind ieșirea manuală într-un document de foaie de calcul).

Nu împușca pianistul, el cântă cât poate de bine.

Rapoartele sunt practic în toate configurațiile standard bazat pe SKD.

Pentru un specialist fără cunoștințe CDS, finalizarea rapoartelor standard devine o loterie - de ce și cum este afișată această sau acea cifră în raport, cum să adăugați noi surse, unde să editați cifrele calculate în cod...

SKD – standard de raportareîn configurații standard, iar 1C nu scrie comentarii pe baza celor care nu au studiat încă standardele :)

Al naibii de timp...

Fără un sistem de control al accesului, elaborarea rapoartelor se face în mare parte manual.

Desigur, e mișto să ieși ca Rambaud cu o șurubelniță în dinți și să faci pe toată lumea :)

Ca urmare - costuri mari de muncă pentru elaborarea rapoartelor și depanare. Și asta va alarma cel puțin orice manager/client: „ciudat, dar chiar înțelege asta?”

Și când vine vorba de revizuirea ulterioară a raportului, aceasta devine adesea o durere de cap (mai ales dacă este vorba de raportul altcuiva)...

Călătorii de dezvoltare la clienți pentru a schimba gruparea din raport

SKD vă permite să primiți rapoarte de calitate fara programare. Se face scheletul pentru cateva minute, apoi – se înclină.

Și utilizatorii pot personaliza astfel de rapoarte fără a implica un programator, generați mai multe opțiuni de prezentare - diagrame, grafice, liste, tabele.

Pentru a obține o astfel de versatilitate în rapoartele create programatic, imposibil într-un interval de timp rezonabil.

Prin urmare - sună, tramvai, hai să mergem... Aceasta este o creștere profesională pentru o poreclă 1C...

„Nu ai același, dar cu nasturi sidef? „Din păcate, nu…” (c)

Ce se întâmplă dacă unele date trebuie obținute dintr-un alt sistem - dintr-o altă bază de date 1C sau deloc din 1C?

Folosind sistemul de control al accesului, puteți crea un raport care funcționează cu datele curente de securitate a informațiilor și care primește date dintr-o altă sursă - nu necesita programare.

Fără sisteme de control al accesului, datele externe vor fi obținute programatic și nu în cel mai banal mod.

Dacă doriți să stăpânește ACS profesional si zilnic aplica in munca ta, înscrie-te la curs:

A sustine - 2 luni. Domeniul cursului - 34 de ore de predare.

Nu amânați studiile!

Cel mai dificil lucru în utilizarea layout-urilor este completarea coloanei „Layout” din fila „Layouts” din designerul ACS.

Există informații bune în natură despre această problemă. Vă ajută să înțelegeți principiile de bază. Dar totuși, de fiecare dată trebuie să experimentați cu diferite tipuri de machete pentru a înțelege dacă o anumită problemă poate fi rezolvată folosind acest instrument sau nu. Prin urmare, mi-a venit ideea de a posta rezultatele experimentelor sub forma unui articol, astfel încât să mă pot referi la ele mai târziu și să economisesc timp în viitor. Nu trebuie să citiți textul, doar aruncați o privire rapidă la capturile de ecran pentru a alege tipul de aspect care este cel mai potrivit pentru sarcina în cauză
În articol voi repeta puțin referința menționată pentru a prezenta câteva detalii importante într-un limbaj mai înțeles și mai specific.

Am efectuat experimente pe următorul tip de raport.

Aspectul câmpului

Acest aspect se aplică unei anumite celule, spre deosebire de aspectul antet de grupare și grupare, care se aplică întregului rând.
Poate fi aplicat grupării câmpurilor și câmpurilor de resurse


Aspect antet de grupare

Acest tip de aspect, așa cum sa menționat mai sus, este aplicat întregului rând de antet.

Setări

Dacă îl atribuiți grupării de sus, acesta va fi aplicat întregului antet al tabelului de raport. După cum puteți vedea în figură, anteturile grupărilor rămase, precum și anteturile resurselor, sunt ascunse. Prin urmare, aceste titluri trebuie completate manual. Uneori, acest lucru este necesar, de exemplu, pentru a combina celule într-un antet

Setări

De obicei, nu are sens să folosiți acest aspect pentru grupări ale nivelului al doilea și inferior, deoarece rezultatul obtinut poate fi aplicat in putine locuri

Setări

Cu toate acestea, dacă atribuiți o înălțime de 1 unui rând de aspect, puteți ascunde anteturile de grupare ale nivelului curent și următor. În figura de mai jos, titlurile Titlu și Angajat sunt ascunse.

De remarcat este și utilizarea tipului de aspect Footer, de exemplu pentru afișarea semnatarilor.

Setări

Utilizarea Tipurilor Total general, din cate am inteles, nu afecteaza nimic. Nu am putut crea o setare cu aceste tipuri pentru a se aplica


Aspectul grupului

Acest aspect se aplică întregului rând de grupare. Poate fi folosit pentru unele sarcini tipice, deși nu este ușor să-ți dai seama cum să-l folosești

Dacă aplicați acest aspect grupării de sus cu tipul Heading, atunci antetul tabelului se repetă sub fiecare grupare. Acest aspect are sens în cazurile în care, de exemplu, trebuie să inserați întreruperi de pagină înainte de fiecare grupare

Setări

Dacă aplicăm această schemă pentru a grupa nivelul inferior, obținem asta:

Sau, dacă completați coloanele, va arăta așa

Dacă apare sarcina de a schimba subsolul cu totaluri, atunci trebuie să utilizați acest aspect cu tipul Subsol mare total sau Antet mare total. Din câte am înțeles, aceste două tipuri de layout fac același lucru

Setări

Aspectul resurselor

Aspectul este utilizat numai pentru TABLE. Se aplică la intersecția grupărilor specificate în setări

Setări


Limitări de aspect

  1. În multe cazuri, atunci când se utilizează layout-uri, capacitatea utilizatorului de a personaliza raportul se pierde. El nu va putea schimba ordinea resurselor și grupărilor sau dezactiva resursele și grupările, deoarece în acest caz, raportul ia o formă de neînțeles. Acest defect nu se aplică numai aspectului câmpului.
  2. Nu există nicio modalitate de a proiecta DOAR titlul resursei dorite (sau al grupului de resurse) folosind aspectul. De exemplu, dacă trebuie să centrați titlurile resurselor. Va trebui să completați întregul antet al tabelului și să obțineți constrângerea de la pasul 1
  3. Nu se poate proiecta DOAR antetul rezultatelor. De exemplu, de mai multe ori a fost necesar să înlocuiți cuvântul „Total” cu cuvântul „Total”. În acest caz, va trebui să desenați întregul rând de totaluri și să obțineți constrângerea de la pasul 1 sau să veniți cu altceva.

Fișiere

Toate exemplele descrise mai sus sunt atașate articolului ca fișier descărcabil. Conține o consolă ACS cu un set de circuite (încorporate în ea). Interogările din exemplu nu accesează tabelele bazei de date, astfel încât exemplele rulează pe orice configurație în modul aplicație gestionată.


ÎN

Să creăm un raport extern care va afișa informații de raportare despre soldurile articolelor și cifra de afaceri. Informațiile solicitate sunt solicitate prin cerere folosind un set de date de tip „Solicitare”, care conține textul solicitării:
ALEGE
_DemoNomenclature.Link CUM Nomenclatura
LOCUL Nomenclatura curentă
DIN
Director._DemoNomenclature CUM SE _DemoNomenclatura
UNDE
NOT _DemoNomenclature.Marcă de ștergere
ȘI NU _DemoNomenclature.Acesta este un grup
;

////////////////////////////////////////////////////////////////////////////////
ALEGE
CurrentNomenclature.Nomenclature,
_DemoRămășițe de mărfuri în locurile de depozitareRămăși și cifre de afaceri.Loc de depozitare,
_DemoRemaining GoodsIn Storage LocationsRemainingsAndTurnover.QuantityInitialRemaining,
_Demo Mărfuri rămase în locații de depozitareRemainingsAndTurnover.QuantityFinalRemaining,
_DemoRemaining BunsIn Storage LocationsRemainingsAndTurnover.QuantityIncoming,
_Demo Mărfuri rămase în locuri de depozitareRemainingsAndturnover.CantityConsumption,
_DemoRemaining GoodsIn Storage LocationsRemainingsAndTurnover.QuantityTurnover
DIN
CurrentNomenclature AS CurrentNomenclature
LEFT CONNECTION RegisterAccumulations._DemoRemaining GoodsInStorageLocations.RemainingsAndTurnover AS _DemoRemainingGoodsInStorageLocationsRemainingAndTurnover
Software CurrentNomenclature.Nomenclature = _DemoRemaining Buns în Storage LocationsRemainingsAndTurnover.Nomenclature

Ca urmare, raportul conține următoarele câmpuri (vezi Figura 1):

Deoarece informațiile sunt preluate din tabelul virtual „Solduri și cifre de afaceri”, ACS creează automat doi parametri de date, Începutul perioadei și Sfârșitul perioadei, care sunt necesari pentru a seta limitele perioadei de eșantionare a datelor. Prefer să nu lucrez direct cu astfel de parametri, ci să le setez valorile printr-un alt parametru care va fi disponibil utilizatorului pentru editare (vezi Figura 2).
Raportul își face față sarcinii, dar antetul raportului este destul de sec. În timpul muncii mele, am găsit mai multe modalități de a crea un antet de raport:

  1. Configurarea antetelor de câmp în fila ACS „Seturi de date”;
  2. Configurarea antetelor de câmp în fila „Setări” ACS;
  3. Setarea programatică a antetelor de câmp;
  4. Setarea antetului raportului folosind un aspect;
  5. Finalizarea rezultatului (document tabelar);
Să le privim în detaliu.

1. Configurarea antetelor în fila ACS „Seturi de date”.

Totul este simplu aici, bifați caseta de lângă proprietatea câmpului „Titlu” (adică anulați titlul automat) și introduceți textul titlului necesar (vezi Figura 4).
Dacă trebuie să setați designul pentru întregul câmp și nu doar pentru titlul acestuia, atunci există o proprietate de câmp „Design”, cu care puteți seta un design pentru câmp, de exemplu, schimbați fontul sau setați fundalul culoare (vezi Figura 5).
Aici se termină cunoștințele mele despre fila „Seturi de date”.

2. Configurarea antetelor de câmp în fila „Setări” ACS

Pentru a seta un titlu de câmp, trebuie să selectați câmpul dorit, faceți clic dreapta pentru a deschide meniul contextual și selectați „Setare titlu” (vezi Figura 6)
Pentru a grupa câmpuri (de exemplu, după tipul de informații), trebuie să adăugați un câmp de grupare și să plasați câmpurile necesare în el (vezi Figura 7), imbricarea este nelimitată.
De asemenea, puteți juca cu proprietatea câmpului de grupare „Locație”, care determină tipul de grupare a câmpurilor.

Aceste acțiuni pot fi efectuate și în modul 1C:Enterprise prin deschiderea setărilor raportului, DAR, elementul „Câmpuri selectate” trebuie inclus în setările raportului (vezi Figura 8).
Aceasta completează partea ușoară a configurației antetului raportului. Unul dintre avantajele acțiunilor de mai sus: toate setările sunt efectuate folosind instrumente standard. Dintre minusuri: incapacitatea de a seta un titlu de câmp cu mai multe rânduri.

3. Setarea programatică a antetelor câmpurilor

Platforma vă permite să setați în mod programatic anteturile de câmp, în plus, să setați cele pe mai multe linii, ceea ce, la rândul său, face posibilă setarea flexibilă și dinamică a antetelor de câmp atunci când se generează un raport.

Pentru a face acest lucru, vom defini o procedură în modulul de raportare La prezentarea rezultatului. În această procedură, vom scrie cod pentru a seta antetele câmpurilor.

// 1. Obțineți setările utilizatorului.
SettingsKD = ThisObject.SettingsLitter.GetSettings();

// 2. Obținem valoarea parametrului „Perioada” din care determinăm data de început și de sfârșit a perioadei.
ParameterPeriod = NewDataCompositionParameter("Perioada");
Perioada = SettingsCD.DataParameters.FindParameterValue(PeriodParameter).Value;
StartPeriod = Period.StartDate;
EndPeriod = Period.EndDate;

// 3. Pregătiți informații despre redefinirea antetelor de câmp. Pentru a face acest lucru, haideți să creăm
// o matrice care va conține informații: FieldName - valorile proprietății „Path” în
// set de date (vezi Figura 1), Titlu - textul titlului.
FieldList = New Array;
pagePeriodStart = Format(PeriodStart, "DF=zz.LL.aaaa; DP="Data goală"");
FieldInitialRemaining = Structură nouă ("FieldName, Heading", "QuantityInitialRemaining", "Remaining on " + Symbols.PS + pageBeginningPeriod);
List ofFields.Add(FieldInitialRemaining);
strEndPeriod = Format(EndPeriod, "DF=zz.LL.aaaa; DP="Data goală"");
FieldFinalRemaining = New Structure("FieldName, Heading", "QuantityFinalRemaining", "Remaining on " + Symbols.PS + strEndPeriod);
FieldList.Add(FieldFinalRemaining);

// 4. Obțineți o listă de câmpuri care se află în grupul „Remaining” (vezi Figura 7) și
// setează un titlu nou prin parcurgerea elementelor într-o buclă.
SelectedFields = SettingsCD.Selection.Items; // Primul nivel de câmpuri.
SelectedFieldsRemains = SelectedFields.Items; // Rămâne gruparea câmpurilor.
Pentru fiecare SelectedField din SelectedFieldsRemainders Cycle
Pentru fiecare element al unui tablou dintr-un ciclu de listă de câmpuri
LayoutField = NewDataCompositionField(ArrayItem.FieldName);
Dacă SelectedField.Field = LayoutField Atunci
SelectedField.Header = ArrayItem.Header;
endIf;
EndCycle;
EndCycle;

// 5. Încărcați înapoi setările de utilizator modificate.
ThisObject.SettingsLinker.LoadSettings(CDSettings);

Raportați rezultatul (vezi Figura 10):
Metoda este mai dificilă decât toate cele de mai sus, dar îmi place.

4. Setarea antetului raportului folosind un aspect

Pentru o personalizare mai flexibilă a aspectului raportului, ACS asigură crearea de layout-uri. În setările raportului, vom crea o altă grupare „înregistrări detaliate” și vom stabili numele „DZ Line” pentru această grupare (vezi Figura 11).
În fila Aspecte, adăugați un aspect de antet de grupare. Pentru aspectul într-un document de foaie de calcul, vom crea un antet de raport (antetul raportului ar trebui să conțină atâtea antete de câmp cât numărul de câmpuri pe care le afișează înregistrarea detaliată) și vom indica zona documentului foaie de calcul pentru aspect (vezi figura 12).
Ca urmare, raportul are următorul antet (vezi Figura 13):

Figura 13. Aspectul ACS ca antet de raport
În opinia mea, layout-urile au un mare dezavantaj: incapacitatea de a se adapta la o anumită grupare de utilizatori, așa că ar trebui folosite dacă formularul de raportare este reglementat și nu poate fi modificat. Încercați să setați o grupare pentru gruparea „LineDZ” și veți vedea că aspectul este confuz.

Site-ul web de asistență pentru tehnologia informației conține un articol Utilizarea machetelor predefinite, care descrie în detaliu modul de utilizare a machetelor în sistemele de control al accesului.

5. Finalizarea rezultatului (document tabelar)

Această metodă folosește minunata metodă de documente cu foi de calcul GăsițiText(), dar pentru a utiliza această metodă, trebuie să dezactivați procesarea standard pentru generarea rezultatului raportului.

Să începem. Dezactivăm generarea standard, pentru a face acest lucru în modulul de raportare pentru eveniment La prezentarea rezultatului Să setăm variabila StandardProcessing la False și să scriem propriul aspect al rezultatului:
StandardProcessing = Fals;
LayoutLinker = newDataLayoutLayoutLinker;
LayoutLayout = LayoutLocker.Execute(
ThisObject.DataCompositionSchema,
ThisObject.SettingsLinker.Settings,
DecryptionData);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout, DecryptionData, True);
OutputProcessor = Nou OutputProcessorDataCompositionResultInTabularDocument;
OutputProcessor.SetDocument(DocumentResult);
OutputProcessor.Output(CompositionProcessor);
Structura software a rezultatului raportului este descrisă mai detaliat în articol

Rezultatul compilat este transmis într-un document de foaie de calcul - aceasta este variabila DocumentResult. Apoi, după ce generăm rezultatul și îl trimitem într-un document de foaie de calcul, scriem cod pentru a înlocui un text de celulă cu altul. De exemplu, să schimbăm numele grupului „Remainings” în „Remaining item” în antetul raportului (vezi Figura 14):
Celula = DocumentResult.FindText("Rămăsurile");
Dacă Cell<>Nedefinit Atunci
Cell.Text = „Elemente rămase”;
endIf;

De asemenea, puteți seta formatarea pentru celula găsită; consultați proprietățile celulei documentului foaie de calcul în asistentul de sintaxă.

Am descoperit recent această metodă; este simplă și vă permite să lucrați foarte flexibil cu antetul raportului, principalul lucru este că textul celulei are text unic.

P.S. Poate aveți o altă modalitate de a crea antete de câmp?

In acest articol as vrea sa vorbesc despre nuantele pe care le-am intalnit la elaborarea unui raport asupra unui sistem de control acces, mai exact cu gestionarea aspectului layout-ului raportului, si solutiile pe care le-am aplicat acestora.

Știu că aspectul din ACS poate fi înlocuit (schimbat) folosind codarea direct în formularul de raport, dar pentru mine a fost fundamental să fac modificări în ACS fără a recurge la codare.

Textul de interogare din raport a fost următorul:

Selectați elementul. Nume, Nomenclatură. Cod, Nomenclatură. Unitate de măsură de bază, nomenclatură. Unitate de măsurăLocul, Nomenclatură. Unitatea de depozitare a reziduurilor, Nomenclatură. UnitForReports, Nomenclatură. Comentariu, Nomenclatură. Articol, Nomenclatură. Link CUM Nomenclatura FROM Director. Nomenclatură AS Nomenclatură WHERE NOT Nomenclatură. Acest grup

Punctul 1. Raportul arbitrar și titlurile coloanei.


În mod implicit, ACS are capacitatea de a afișa textul titlului arbitrar. Acest lucru se face în setările ACS:

la ieșire obținem:

Dar dacă titlurile raportului și coloanelor trebuie să fie arbitrare, atunci această opțiune nu este potrivită. Așa că am făcut următoarele:

Specificat un nume pentru înregistrările detaliate:


Am desenat aspectul de care aveam nevoie în SKD

Acolo, în fila „Aspect”, am subliniat limitele aspectului antetului grupului:

și a indicat numele grupului:

apoi am desemnat zona de aspect care trebuie afișată în antetul raportului:

Dacă generați un raport, atunci:

nu tocmai ceea ce voiam să obțin. Pentru mine, am găsit o modalitate de a rezolva această problemă - am făcut culoarea de fundal și cadrul zonei de aspect, care este antetul raportului, alb:

iar rezultatul este tipul dorit de raport:

Punctul 2. Decodarea gratuită a câmpurilor de raport.

Sarcina este următoarea: atunci când faceți dublu clic pe câmpul „Articol”, ar trebui să fie posibil să deschideți cardul de articol care a generat această linie.

În raportul de mai sus, dacă dați dublu clic pe orice câmp, nu veți putea deschide cardul articolului:

De exemplu, dacă faceți clic pe câmpul „Articol”, obținem următoarele:

Solutia este:

Adăugarea unui aspect de câmp:

indicați câmpul (Articol), când faceți clic pe, cardul articolului ar trebui să se deschidă:

în aspect, completați orice câmp gol cu ​​textul „Articol”, în proprietățile indică - Umplere = „Parametru”, Parametru de decriptare = „Decodare Nomenclatură”:

și specificați acest aspect al câmpului de zonă de câmp:

După aceasta, ar trebui să apară opțiunile de aspect:

În acești parametri specificăm expresia pentru „Decoding Nomenclature”, în cazul meu acesta este un link către nomenclatură:


Avem posibilitatea de a deschide cardul produsului făcând clic pe câmpul „Articol”:

Cred că vor exista dezvoltatori care au întâlnit nuanțe similare și le-au rezolvat în alte moduri, dar acesta este un alt articol...

Raportul se bazează pe evenimente reale; aspectul, textul interogării și numele coloanelor au fost modificate în beneficiul articolului.