Module generale. Module comune Datele proiectului pot fi introduse în sistem în mai multe moduri

Astăzi ne vom uita la modulele comune, ce sunt acestea, de ce sunt necesare și cum să le folosim. Puteți pune funcțiile care sunt utilizate în mai multe documente într-un modul comun. De exemplu, calcularea sumei în partea tabelară a documentului.

De exemplu, să luăm vechea noastră configurație, pe care am folosit-o în articolele anterioare. Avem două documente în el: Sosirea mărfurilor în depozit și Eliberarea mărfurilor în depozit. Ambele documente au proceduri care calculează suma într-un rând tabelar.

Fiecare document conține același cod pentru calcularea sumei.

Procedură MaterialePriceOnChange(Element)
TabularPart Row = Elements.Materials.CurrentData;
TabularPartLine.Amount = TabularPartLine.Quantity * TabularPartLine.Price;
Sfârșitul procedurii

Astăzi îl vom muta într-un modul comun și îl vom apela din document.

Creăm un modul general pentru calcularea sumei

Și să începem, mai întâi trebuie să creați un modul comun. Pentru a face acest lucru, accesați configuratorul, căutați elementul Module generale, faceți clic dreapta și adăugați altele noi, scrieți numele WorkWithDocuments. Introducem următorul cod în el.

De asemenea, asigurați-vă că bifați casetele de lângă Client (Aplicație gestionată) și Server în fereastra de proprietăți.

Acum trebuie să modificați ușor codul din modulul formular document. În stânga în configurație căutăm documentul Sosire mărfuri, extindeți ferestrele la fereastra Formulare, faceți dublu clic pe Formular document și în fereastra formular care se deschide, mergeți la fila Modul din partea de jos. Avem acest cod

Această procedură funcționează la modificarea cantității din partea tabelară a documentului de primire a mărfurilor și calculează suma.

&OnClient



Sfârșitul procedurii

Și această procedură începe să funcționeze atunci când prețul se modifică în partea tabelară a documentului de primire a mărfurilor și calculează suma.

&OnClient

TabularPart Row = Elements.Materials.CurrentData;
TabularPartLine.Amount = TabularPartLine.Quantity * TabularPartLine.Price;
Sfârșitul procedurii

Înlocuiește-l cu acesta

&OnClient
Procedura MaterialsQuantityOnChange(Element)
TabularPart Row = Elements.Materials.CurrentData;

Sfârșitul procedurii
&OnClient
Procedură MaterialePriceOnChange(Element)
TabularPart Row = Elements.Materials.CurrentData;
WorkWithDocuments.CalculateSum(TabularPartRow);
Sfârșitul procedurii

După cum ați observat, doar o linie se schimbă; la prima vedere, poate părea că o linie a fost înlocuită cu alta. Dar nu uitați că acesta este un exemplu. De fapt, cantitatea de cod poate fi mult mai mare dacă, de exemplu, ați efectuat calcule folosind o formulă complexă, caz în care codul va fi redus considerabil.

Facem același lucru și pentru documentul Eliberarea mărfurilor din depozit, rulăm și verificăm funcționalitatea codului. Deci tu și cu mine am realizat primul modul comun, sper că articolul meu va fi de folos cuiva.

Modulele platformei 1C: Enterprise 8.3, 8.2

Module comune

Funcțiile care sunt declarate cu steag „export” într-un astfel de modul pot fi apelate de oriunde în configurație. Apelul se face prin CommonModuleName.FunctionName().

Astfel de module nu au o secțiune variabilă.

Execuția modulelor comune depinde de setările din proprietățile lor:

Steagul „Global”

Dacă acest flag este setat, atunci contextul unui astfel de modul devine global. Adică, atunci când accesați funcțiile sale de export, nu trebuie să specificați numele modulului. Dar numele funcțiilor sale de export trebuie să fie unice în contextul configurației globale.

Steagul serverului

Funcțiile unui astfel de modul pot fi executate pe server.

Indicator „Client (aplicație obișnuită)”.

Funcțiile unui astfel de modul pot fi executate pe client în modul normal de aplicație.

Indicatorul „Client (aplicație gestionată)”.

Funcțiile unui astfel de modul pot fi executate pe client în modul de aplicație gestionată.

Steagul „Apel server”.

Steagul este disponibil pentru modulele cu setul de steag "Server". Permite clientului să apeleze funcțiile de export ale acestui modul (care vor fi executate pe server).

Steagul de alăturare externă

Funcțiile de export ale unui astfel de modul pot fi apelate la conectarea de la o sursă externă.

Steagul „Privilegiat”

Într-un modul cu acest indicator, verificarea drepturilor va fi dezactivată. Potrivit pentru productivitate sau activități administrative.

Opțiune de reutilizare

Dacă activați această opțiune, valorile returnate ale funcțiilor de export vor fi stocate în cache imediat după primul apel. Memorarea în cache este posibilă pe durata apelului (timpul de execuție al unei anumite proceduri) sau pe durata sesiunii utilizator.

Modul de aplicație

Proiectat pentru a gestiona evenimentele de pornire și terminare a aplicației. Există două tipuri: pentru aplicații obișnuite și gestionate.

Nu ar trebui să îl supraîncărcați, deoarece acest lucru afectează timpul de pornire a aplicației.

Modul de sesiune

Un modul special care este folosit pentru a inițializa parametrii sesiunii. Este necesar pentru a nu duplica codul în diverse module de aplicație.

Ar trebui să fie folosit cu atenție, deoarece modulul poate fi executat de mai multe ori și poate fi, de asemenea, executat fără a porni în continuare baza de date. Execut înaintea modulelor de aplicație.

Cu stimă, (profesor și dezvoltator).

Module generale 1C- un obiect de metadate de configurare pentru 1C 8.3 și 8.2, care stochează codul de program care este adesea numit în configurare. O funcție/procedură poate fi apelată de oriunde în configurație (dacă este una de export).

Cum se utilizează modulul partajat

Este o bună practică să plasați o procedură sau o funcție într-un modul comun dacă este apelată în mai multe locuri. În primul rând, dacă procedura este corectată, trebuie corectată doar într-un singur loc. În al doilea rând, acest lucru realizează o ordine mai mare în cod.

Un exemplu tipic de modul general este procesarea înregistrării într-un registru, obținerea sumei diferenței în zile lucrătoare, recalcularea cursurilor de schimb, recalcularea cantității/prețului/suma în secțiunea tabelar și alte funcții.

Proprietățile modulelor comune

Una dintre principalele caracteristici ale modulelor partajate din alte module este că nu puteți declara variabile partajate.

Obțineți 267 de lecții video pe 1C gratuit:

Să aruncăm o privire mai atentă la paleta de proprietăți a modulului general:

  • Global- dacă flag-ul este setat, funcțiile și procedurile din acest modul devin disponibile în context global. Acestea. acestea pot fi apelate oriunde în configurație prin accesare fără numele modulului comun. Cu toate acestea, se adaugă o condiție - numele procedurilor și funcțiilor din acest modul comun trebuie să fie unice în contextul global.
  • Server— procedurile și funcțiile acestui modul comun pot fi executate pe server.
  • Îmbinare exterioară— codurile de program ale acestui modul comun pot fi executate atunci când sunt conectate printr-o sursă externă (de exemplu, COM).
  • Client (aplicație gestionată)— procedurile și funcțiile acestui modul comun pot fi utilizate într-un client gros în modul aplicație gestionată.
  • Client (aplicație obișnuită)— codurile de program ale acestui modul comun pot fi utilizate într-un client gros în modul de aplicație normal.
  • Apel pe server— un flag care permite clientului să utilizeze proceduri și funcții din acest modul comun.
  • - dacă este setată la True, verificarea drepturilor de acces va fi dezactivată în acest modul comun.
  • Reutilizați— definește setările valorilor returnate; dacă opțiunea este activată, atunci după prima execuție sistemul își va aminti valoarea pentru acești parametri de intrare și va returna o valoare gata făcută. Poate lua următoarele valori: nefolosit- închide, pe durata apelului- pe durata unei anumite proceduri, pe durata sesiunii— până când utilizatorul închide sesiunea (programul).

Dacă începeți să învățați programarea 1C, vă recomandăm cursul nostru gratuit (nu uitați

Modulele software conțin cod executabil în limbajul 1C, care este necesar pentru a răspunde într-un anumit mod la acțiunile sistemului sau ale utilizatorului atunci când instrumentele de dezvoltare vizuală nu sunt suficiente. De asemenea, putem descrie propriile noastre metode (proceduri și funcții) în module software.

De obicei, un modul software este format din trei secțiuni:

  • zona de declarare a variabilei;
  • zona de descriere a procedurilor și funcțiilor;
  • textul principal al programului.

Exemplu de structură a unui modul de program:

//******************** AREA DE DECLARAȚIE VARIABILĂ ************************

Perem Nume Export; / /aceasta este o variabilă globală
Schimbarea numelui, patronimic; //aceasta este o variabilă de modul
numele complet Perem; //aceasta este, de asemenea, o variabilă de modul și poate fi accesată

//din orice procedură și funcție a modulului nostru

//*************** ZONA DESCRIEREA PROCEDURILOR ȘI FUNCȚIILOR ****************

Procedura Procedura1 ()
Variabila Total ; / /Rezultatul este o variabilă locală (variabilă de procedură)

Total = Prenume + " "+ Prenume + " "+ Al doilea nume;

Sfârșitul procedurii

Funcție Funcția1()

// operatori de funcții

Return(Nume + " "+ Prenume);

EndFunction

//*********************** TEXTUL PRINCIPAL AL ​​PROGRAMULUI ***********************

Nume = „Ivanov”;
Nume = "Ivan";
Patronimic = „Ivanovici”;

//******************************************************************************

Într-un anumit modul software, oricare dintre zone poate lipsi.
Zona de declarare variabilă plasat de la începutul textului modulului până la prima instrucțiune Procedure sau Function sau orice instrucțiune executabilă. Această secțiune poate conține numai instrucțiuni de declarare a variabilei variabile.

Zona pentru descrierea procedurilor și funcțiilor plasat de la prima instrucțiune Procedure sau Function la orice instrucțiune executabilă din afara corpului procedurii sau descrierii funcției.

Zona principală a textului programului este plasat de la prima instrucțiune executabilă în afara corpului de proceduri sau funcții până la sfârșitul modulului. Această secțiune poate conține numai instrucțiuni executabile. Zona principală de text a programului este executată în momentul inițializării modulului. De obicei, într-o secțiune a programului principal, are sens să plasați operatori pentru inițializarea variabilelor cu orice valori specifice care trebuie alocate înainte de primul apel la proceduri sau funcții ale modulului.

Modulele software sunt amplasate în acele locuri din configurație care pot necesita o descriere a anumitor algoritmi de operare. Acești algoritmi ar trebui să fie formalizați sub forma unor proceduri sau funcții care vor fi apelate de sistemul însuși în situații predeterminate (de exemplu, la deschiderea unui formular de director, la apăsarea unui buton într-o casetă de dialog, la schimbarea unui obiect etc.) .

Fiecare modul software individual este perceput de sistem ca un întreg, astfel încât toate procedurile și funcțiile modulului software sunt realizate într-un singur context.

Contextul de execuție al modulului este împărțit în client și server. În plus, unele module software pot fi compilate atât pe partea client, cât și pe partea serverului.

Modul de aplicație (gestionat sau obișnuit)

Modulul de aplicație descrie procedurile (de gestionare) a evenimentelor care sunt inițializate la începutul și la sfârșitul sistemului. De exemplu, când aplicația începe să ruleze, puteți actualiza unele date de configurare, iar când ieșiți din aplicație, puteți întreba dacă merită să ieșiți din program. În plus, acest modul interceptează evenimente de la echipamente externe, de exemplu, de tranzacționare sau fiscale. Este de remarcat faptul că modulul aplicației este executat numai atunci când aplicația este lansată interactiv, adică atunci când fereastra programului este lansată. Acest lucru nu se întâmplă dacă aplicația este lansată în modul conexiune com.
În platforma 1C 8 există două module de aplicație diferite. Acestea sunt modulul Aplicație obișnuită și modulul Aplicație gestionată. Acestea sunt declanșate atunci când sunt lansate diferiți clienți. Astfel, modulul Aplicație administrată este declanșat atunci când clientul web, clientul subțire și clientul gros sunt lansate în modul aplicație administrată. Iar modulul de aplicație obișnuit este declanșat atunci când clientul gros este lansat în modul de aplicație normal. Setarea modului de lansare a aplicației este specificată în proprietatea de configurare „Mod de lansare de bază”.

Un modul de aplicație poate conține toate cele 3 secțiuni - declarații de variabile, descrieri de proceduri și funcții, precum și textul principal al programului. Modulul de aplicație este compilat pe partea clientului, ceea ce limitează foarte mult utilizarea noastră a multor tipuri de date. Puteți extinde contextul modulului aplicației utilizând metode ale modulelor comune care au setată proprietatea „Apel server”. Toate variabilele și metodele modulului de aplicație care sunt marcate ca export vor fi disponibile în orice modul de configurare care rulează pe partea client. Cu toate acestea, oricât de tentant ar fi, nu ar trebui să plasați aici un număr mare de proceduri și funcții. Cu cât există mai mult cod într-un anumit modul, cu atât timpul de compilare este mai lung și, în consecință, timpul de lansare a aplicației.

După cum sa menționat mai sus, modulul de aplicație se ocupă de evenimentele de pornire și de terminare a aplicației. Pentru a gestiona fiecare dintre aceste evenimente în modulul de aplicație, există o pereche de handlere Înainte... și Când... Diferențele dintre ele sunt următoarele: la executarea codului în handlerul Înainte..., acțiunea nu a fost încă a avut loc și putem refuza să o executăm. Pentru asta este opțiunea Respingere. În handlerele On.., acțiunea a avut deja loc și nu putem refuza lansarea aplicației sau ieșirea din ea.

Modul de conectare extern

  • poate conține toate cele 3 zone
  • situat în secțiunea rădăcină a configurației

Scopul modulului este similar cu scopul modulului de aplicație. Procesează evenimentele de început și de sfârșit ale aplicației. Modulul de conexiune externă este declanșat atunci când aplicația este lansată în modul conexiune com. Procesul de îmbinare exterioară în sine nu este un proces interactiv. În acest mod, are loc munca programatică cu baza de informații și fereastra aplicației nu se deschide, ceea ce impune anumite restricții privind utilizarea metodelor destinate lucrului interactiv. În acest mod, apelurile la formularele de dialog, avertismentele și mesajele către utilizator, etc. nu pot fi utilizate. Pur și simplu nu vor fi executați.

Ca și în modulul de aplicație, toate cele trei zone sunt disponibile aici: declarații de variabile, descrieri ale procedurilor și funcțiilor, precum și textul principal al programului. Principala diferență față de modulul de aplicație este că, în modul de conectare com, toate lucrările cu baza de informații au loc pe partea serverului, astfel încât modulul de conexiune externă este compilat pe partea serverului. În consecință, variabilele de export și metodele modulelor client comune nu sunt disponibile în acesta.

Modul de sesiune

  • rulează pe partea serverului
  • situat în secțiunea rădăcină a configurației

Acesta este un modul foarte specializat conceput exclusiv pentru inițializarea parametrilor de sesiune. De ce a trebuit să-ți faci propriul modul pentru asta? Utilizarea sa se datorează faptului că aplicația în sine poate fi lansată în diferite moduri (rezultând fie executarea unui modul de aplicație gestionat, fie a unui modul de aplicație obișnuit, fie a unui modul de conexiune externă), iar inițializarea parametrilor de sesiune trebuie făcută indiferent a modului de pornire. Pentru a nu scrie același cod de program în toate aceste trei module, aveam nevoie de un modul suplimentar care să ruleze indiferent de modul de lansare a aplicației.

În modulul de sesiune, există un singur eveniment „SettingSessionParameters”, care este executat foarte întâi, chiar înainte de evenimentul din modulul de aplicație BeforeSystemStartOperation. Secțiunea de declarare a variabilelor și secțiunea principală a programului nu sunt disponibile în ea. De asemenea, nu puteți declara metode de export. Modulul este compilat pe partea serverului.

Module comune

  • poate conține o zonă care descrie proceduri și funcții
  • executat pe server sau pe partea client (în funcție de setările modulului)
  • este situat în ramura arborescentă a obiectelor de configurare „General” - „Module generale”

Modulele comune au scopul de a descrie niște algoritmi comuni care vor fi apelați din alte module de configurare. Modulul general nu conține zone de declarare variabile și textul programului principal. Puteți declara în el metode de export, a căror disponibilitate va fi determinată de setările modulului (pe ce parte se execută: pe partea de server sau de client). Datorită faptului că secțiunea de descriere a variabilelor nu este disponibilă, variabilele globale nu pot fi definite în modulele comune. Puteți utiliza un modul de aplicație pentru aceasta.

Comportamentul unui modul comun depinde de parametrii setați (globali sau nu, diverse steaguri de compilare, dacă este disponibil un apel de server etc.). Iată câteva sfaturi pentru configurarea modulelor comune:

Este o bună practică să nu folosiți steagul global peste tot. Acest lucru va reduce timpul de pornire al aplicației și, de asemenea, va îmbunătăți lizibilitatea codului (desigur, dacă modulul comun are un nume complet semnificativ);
- Nu este recomandabil să folosiți mai mult de un semnal de compilare. Nu există atât de multe metode care trebuie executate în contexte diferite și, dacă astfel de metode sunt încă necesare, atunci le poate fi alocat un modul comun separat;
- indicatorul „Server de apeluri” are sens numai dacă modulul este compilat „Pe server”. Prin urmare, toate celelalte steaguri de compilare ar trebui eliminate pentru a evita diverse probleme;
- dacă metodele modulului implică procesarea masivă a datelor, citirea și scrierea în baza de date, atunci pentru a crește viteza de lucru este mai bine să dezactivați controlul accesului prin setarea steagului „Privilegiat”. Acest mod este disponibil numai pentru modulele partajate compilate pe server.

Modul formular

  • poate conține toate cele 3 zone
  • executate pe server și pe partea clientului

Modulul formular este conceput pentru a procesa acțiunile utilizatorului cu acest formular (procesarea unui eveniment de clic pe buton, modificarea detaliilor formularului etc.). Există, de asemenea, evenimente asociate direct cu formularul în sine (de exemplu, deschiderea sau închiderea acestuia). Modulele de formulare gestionate și obișnuite diferă, în primul rând, prin faptul că modulul unui formular gestionat este clar împărțit în context. Fiecare procedură sau funcție trebuie să aibă o directivă de compilare. Dacă directiva de compilare nu este specificată, atunci această procedură sau funcție este executată pe partea serverului. În forma sa normală, tot codul este executat pe partea clientului.

Structura unui formular gestionat conține o secțiune pentru declarații de variabile, descrieri de proceduri și funcții, precum și textul principal al programului (executat la momentul inițializării formularului). Putem accesa evenimente de formular standard prin lista de proceduri și funcții așteptate ale formularului (Ctrl+Alt+P), sau prin paleta de proprietăți a formularului în sine.

Dacă un formular are alocat un atribut principal, atunci proprietățile și metodele obiectului aplicație utilizat ca atribut principal devin disponibile în modulul formular.

Modul obiect

  • poate conține toate cele 3 zone
  • rulează pe partea serverului

Acest modul este disponibil pentru majoritatea obiectelor de configurare și este în general destinat procesării evenimentelor legate direct de obiect. De exemplu, evenimente de înregistrare și ștergere a obiectelor, verificarea completării detaliilor obiectului, postarea unui document etc.

Unele evenimente din modulul obiect dublează evenimentele din modulul formular. De exemplu, evenimente asociate cu o înregistrare. Cu toate acestea, trebuie înțeles că evenimentele modulului de formular vor fi executate exclusiv în forma specifică a obiectului, adică atunci când formularul specific este deschis. Și evenimentele modulului obiect vor fi apelate în orice caz, chiar și în momentul lucrului programatic cu obiectul. Prin urmare, dacă aveți nevoie de metode asociate cu un obiect fără a fi legat de o formă specifică a obiectului, atunci este mai bine să utilizați modulul obiect pentru aceasta.

Modulul de gestionare a obiectelor

  • poate conține toate cele 3 zone
  • rulează pe partea serverului

Modulul de gestionare a obiectelor a apărut abia începând cu versiunea 1C 8.2. Modulul manager există pentru toate obiectele aplicației și este conceput pentru a gestiona acest obiect ca obiect de configurare. Modulul manager vă permite să extindeți funcționalitatea unui obiect prin introducerea de proceduri și funcții (scriind) care nu se referă la o instanță specifică a unui obiect de bază de date, ci la obiectul de configurare în sine. Modulul de gestionare a obiectelor vă permite să plasați proceduri și funcții generale pentru un anumit obiect și să le accesați din exterior, de exemplu, din procesare (desigur, dacă această procedură sau funcție are cuvântul cheie Export). Ce nou ne dă asta? În general, nimic în afară de organizarea procedurilor pe obiecte și stocarea lor în locuri separate - Module Object Manager. Putem plasa la fel de bine aceste proceduri și funcții în module generale, dar 1C recomandă plasarea procedurilor și funcțiilor generale ale obiectelor în Modulul Object Manager. Exemple de utilizare a procedurilor și funcțiilor Modulului Object Managers: completarea inițială a detaliilor individuale ale unui director sau document în anumite condiții, verificarea completării detaliilor unui director sau document în anumite condiții etc.

Modul de comandă

  • poate conține o secțiune care descrie proceduri și funcții
  • executate pe partea clientului

Comenzile sunt obiecte subordonate obiectelor aplicației sau configurației în ansamblu. Fiecare comandă are un modul de comandă în care poate fi descrisă o procedură CommandProcess() predefinită pentru a executa acea comandă.

Articolul continuă seria „Primii pași în dezvoltare pe 1C”, discută în detaliu următoarele probleme:

  • Ce este un modul software și din ce secțiuni constă?
  • Pentru ce este modulul de aplicație? De ce sunt doi dintre ei? Când începe care? Care sunt subtilitățile lucrării?
  • Ce evenimente sunt asociate cu începerea funcționării sistemului, cum și unde să le procesăm?
  • Pentru ce este modulul de conectare extern? Când și cum să-l folosești?
  • Când este utilizat modulul de sesiune?
  • Care sunt modulele comune? Care sunt proprietățile și regulile sale de funcționare? De ce să folosiți proprietatea „Reutilizarea valorilor returnate”?
  • Când este utilizat modulul formular și ce evenimente pot fi procesate în el?
  • Pentru ce este modulul obiect? Din ce secțiuni constă? Cum pot vedea evenimentele modulelor disponibile?
  • Care sunt subtilitățile lucrului cu modulele de manager de valoare (pentru constante) și modulele de set de înregistrări (pentru registre)?
  • Care sunt diferențele dintre un modul obiect și un modul manager? Când ar trebui să-l folosești pe acesta din urmă?

Aplicabilitate

Articolul discută platforma 1C:Enterprise 8.3.4.496. Materialul este, de asemenea, relevant pentru lansările actuale ale platformei.

Modulele din „1C: Enterprise 8.3”

Modulele sunt acele obiecte care conțin cod de program.

Există un număr destul de mare de tipuri de module în Platformă, fiecare dintre ele având propriul scop și caracteristici.

Orice linie de cod trebuie să fie într-un anumit modul. Există module de uz general și module obiect. Unele module pot fi compilate atât pe Client, cât și pe Server, iar unele doar pe Server.

Un modul poate consta din mai multe secțiuni. Secțiunea de descriere a variabilelor descrie variabilele locale ale acestui modul, care pot fi utilizate ulterior în orice procedură.

În cadrul fiecărei proceduri, puteți accesa o variabilă de modul. În plus, în cadrul procedurii în sine poate exista o altă declarație de variabilă cu același nume. Aceasta va fi o variabilă locală a acestei proceduri.

În ciuda aceluiași nume, acestea sunt două variabile diferite: una este utilizată în interiorul unei proceduri specifice, iar cealaltă este utilizată în afara acesteia.

În unele module, variabilele pot avea o locație de compilare (disponibilitate) pe Server sau Client. De exemplu:

Secțiunea care descrie variabile este urmată de o secțiune de proceduri și funcții, unde sunt indicate metodele locale ale acestui modul. Unele module trebuie să specifice unde va fi compilată procedura sau funcția.

În principiu, directiva de compilare poate fi omisă. În acest caz, directiva de compilare implicită este Server. Cu toate acestea, pentru comoditatea analizei codului programului, se recomandă să indicați în mod explicit unde va fi compilată o anumită procedură. Ordinea în care sunt descrise procedurile nu contează.

La sfârșitul modulului, după descrierea tuturor procedurilor și funcțiilor, există o secțiune a programului principal, care poate conține unii operatori și poate inițializa variabilele locale ale modulului formular. Această secțiune este executată la accesarea modulului.

Deci, de exemplu, la deschiderea unui formular element, secțiunea principală de program a modulului formular este executată mai întâi.

Trebuie remarcat faptul că secțiunea de declarare a variabilelor și secțiunea principală a programului nu există pentru toate modulele (adică, aceste secțiuni nu sunt valabile în unele module). O secțiune pentru descrierea procedurilor și funcțiilor poate exista în absolut orice modul.

Modul de aplicație

Acest modul este conceput pentru a gestiona evenimentele de pornire și terminare a aplicației. De exemplu, atunci când lansați aplicația, puteți descărca cursurile valutare de pe Internet. Când închideți o aplicație, puteți confirma cu utilizatorul că intenționează să renunțe.

De asemenea, în modulul de aplicație există handlere speciale care vă permit să interceptați evenimente externe din echipament.

Acestea ar putea fi evenimente de la un cititor de carduri magnetice sau un registrator fiscal. Și aceste evenimente pot fi, de asemenea, procesate într-un fel.

Vă rugăm să rețineți că este pornirea interactivă a sistemului care este monitorizată în modulul de aplicație.

Modulul de aplicație nu va funcționa dacă programul 1C este lansat, de exemplu, în modul de conectare com. În acest caz, fereastra programului nu este creată.

Trebuie remarcat faptul că în Platforma 8.3 există două module de aplicație diferite: modulul Aplicație gestionată și modulul Aplicație obișnuită. Evenimentele modulului de aplicație gestionată sunt procesate atunci când sunt lansate Clientul subțire și gros al aplicației gestionate și Clientul web.

Modul Aplicare regulată funcționează când rulează Thick Client în modul Aplicare regulată, care conține interfața obișnuită de comandă în formular Meniu principal.

Dacă aplicația rulează A reușit, și în mod Aplicare regulată, atunci este necesar să descriem procedurile de manipulare ca și pentru modul Aplicație gestionată, și pentru modul Aplicare regulată.

Modul Aplicație gestionată poate fi selectat din meniul contextual al nodului de configurare rădăcină.

Acest modul poate fi deschis și din paleta de proprietăți a elementului de configurare rădăcină.

Pentru a deschide un modul Aplicare regulată, ar trebui să vă referiți la setările de configurare (comandă Opțiuniîn meniu Serviciu).

Se va deschide formularul Opțiuni. Pe marcaj Sunt comune trebuie specificat modul de editare a configurației Aplicație gestionatăȘi Aplicare regulată.

În acest caz modulul Aplicare regulată se va putea deschide și din proprietățile nodului rădăcină.

Lista evenimentelor pentru care pot fi procesate A reușitȘi Aplicare regulată e aceeasi.

Acest modul poate conține o secțiune de declarare a variabilelor, o secțiune de descriere a procedurilor și funcțiilor arbitrare și o secțiune principală a programului. Dar, pe lângă procedurile și funcțiile arbitrare, în modul pot fi localizați handlere de evenimente speciale.

Lista manipulanților disponibili poate fi vizualizată apelând lista de proceduri și funcții ale modulului curent atunci când modulul este deschis.

Fereastra Proceduri și Funcții care se deschide afișează toate procedurile și funcțiile acestui modul, precum și evenimentele pentru care manipulatorii nu au fost încă creați.

Există două evenimente asociate cu pornirea sistemului („înainte” și „la”). Două evenimente asociate cu oprirea sistemului („înainte” și „la”). Și, de asemenea, procesarea evenimentelor externe (de exemplu, evenimente de echipamente comerciale).

Când se execută un handler de evenimente „înainte”, se consideră că acțiunea nu a avut loc încă. Când handlerul de evenimente „la” este executat, acțiunea a fost deja finalizată.

Eveniment Înainte de a porni sistemul apare în momentul lansării Enterprise 8.3, dar aplicația în sine nu a apărut încă pe ecran. Acest eveniment are următorul parametru: Refuz.

Dacă acest parametru ia valoarea Adevărat, atunci aplicația nu va porni. Eveniment La pornirea sistemului presupune că acțiunea a fost deja finalizată, fereastra a fost deja creată și, în acest caz, putem, de exemplu, să afișam un formular special. Nu mai este posibil să refuzi lansarea.

În mod similar, înainte de a închide sistemul, aplicația este încă deschisă și puteți refuza să o închideți. Când sistemul se închide, fereastra aplicației s-a închis deja. Este posibil doar să efectuați acțiuni suplimentare, de exemplu, ștergerea unor fișiere sau trimiterea unui e-mail.

În modul Aplicație gestionată Directivele pentru compilarea procedurilor și funcțiilor nu sunt specificate, deoarece modulul este compilat în întregime pe partea Clientului. Aceasta înseamnă că în procedurile și funcțiile modulului nu vom putea accesa direct, de exemplu, cărți de referință.

Dacă din modul Aplicație gestionată trebuie să efectuați un apel la server, apoi pentru aceasta va trebui să creați un apel special cu un steag .

În modul Aplicare regulată Nu există astfel de restricții, deoarece acest modul va fi compilat la încărcarea Thick Client. Aproape toate tipurile de date sunt disponibile în Thick Client.

Procedurile, funcțiile și variabilele unui modul de aplicație pot fi descrise ca exporturi.

Deoarece modulul este compilat în întregime pe Client, aceasta înseamnă că în procedurile client putem accesa această metodă și această proprietate.

De exemplu, puteți apela o procedură sau o funcție a unui modul de aplicație din modulul de formular al unui obiect. Cu toate acestea, se recomandă utilizarea modulelor comune pentru a descrie algoritmi generali. Scopul principal al modulului de aplicație este de a procesa punctul de început și punctul final.

Prin analogie cu un modul de aplicație, acest modul este conceput pentru a procesa evenimentul de deschidere a programului și evenimentul de închidere.

Spre deosebire de modulul de aplicație, care este inițiat în momentul lansării interactive a aplicației, modulul de conectare extern funcționează în modul de conectare COM, adică. când un obiect 1C:Enterprise 8 este creat și conectat la o anumită bază de date.

Acest modul are evenimente: La pornirea sistemuluiȘi La oprirea sistemului.

Modulul de conexiune externă poate fi deschis utilizând fie meniul contextual la nivel de obiect de configurare rădăcină, fie paleta de proprietăți pentru nodul rădăcină.

Procesul de conectare externă în sine este un proces de lucru programatic cu baza de informații, și nu interactiv. În consecință, în acest moment nu puteți utiliza formulare de dialog sau afișa mesaje de avertizare, deoarece nu există interfață cu utilizatorul.

În Modulul de conexiune externă este posibil să se descrie variabilele de export și metodele de export care vor fi disponibile pe partea în care are loc apelul extern la 1C:Enterprise 8.3.

Deoarece nu există o interfață cu utilizatorul într-o îmbinare exterioară, Modulul de îmbinare externă este compilat în întregime pe server.

Modul de sesiune

Acest modul este necesar pentru a inițializa parametrii sesiunii. Parametrii de sesiune sunt variabile globale rapide ale căror valori sunt disponibile oriunde în configurație.

Puteți deschide Modulul de sesiune fie prin meniul contextual, fie prin paleta de proprietăți a nodului rădăcină.

Modulul de sesiune oferă un eveniment SettingSessionParameters.

Când pornește aplicația, această procedură este apelată mai întâi. Parametrii de sesiune sunt necesari pentru orice operațiune a aplicației: atât când este lansată interactiv, cât și când este lansată în modul de conectare externă.

Modulul de sesiune descrie diferite acțiuni de inițializare a parametrilor de sesiune în funcție de diferite condiții.

Acest modul, de regulă, descrie mai multe proceduri care sunt apelate din procedură SettingSessionParameters. Prin urmare, toate aceste proceduri sunt separate într-un modul separat.

Modulul de sesiune rulează întotdeauna în modul privilegiat. Aceasta înseamnă că nu va fi efectuată nicio verificare a permisiunilor la accesarea bazei de date. Modulul de sesiune este compilat pe Server, adică Este posibil să accesați orice metodă de server (inclusiv citirea valorilor din baza de date).

În Modulul de Sesiune este posibil să se definească numai proceduri și funcții, de ex. nu există o secțiune de descriere variabilă și nici o secțiune principală a programului. Nu puteți defini metode de export într-un Modul de sesiune.

Dacă, la pornirea sistemului, este necesară efectuarea unor acțiuni pe Server, de exemplu, crearea unui element dintr-un director, atunci, opțional, este posibil să se utilizeze Modulul de sesiune, deoarece este compilat pe server și este întotdeauna executat în mod fiabil la pornirea sistemului. Cu toate acestea, trebuie luate în considerare următoarele puncte:

  • procedură SettingSessionParameters se execută nu numai la pornirea sistemului, ci și la accesarea parametrilor de sesiune neinițializați. Acestea. handlerul SetSessionParameters poate fi apelat în mod repetat în timpul funcționării aplicației;
  • dacă numărul de elemente din matricea parametrilor de sesiune este zero (matricea parametrilor necesari are un tip de date Undefined), atunci acesta este momentul lansării aplicației;
  • întrucât Modulul de sesiune funcționează în modul privilegiat și nu va exista nicio verificare a drepturilor de acces, ar trebui să lucrați cu mare atenție cu obiectele bazei de date, deoarece utilizatorul poate obține acces la date care nu ar trebui să îi fie furnizate;
  • Când sistemul pornește, nu se știe încă sigur dacă aplicația va fi lansată. În acest caz, acțiunile inutile pot fi efectuate în handlerul de evenimente SetSessionParameters.

Aceste module reprezintă o descriere a unor algoritmi generali, de ex. proceduri și funcții care pot fi apelate din diverse locuri.

Metodele legate logic pot fi grupate în diferite module comune. Aceste module sunt create în interiorul ramurii General.

Puteți adăuga orice număr de module partajate. Pentru ca metodele Common Module să fie disponibile în altă parte a configurației, acestea trebuie definite cu cuvântul cheie Export. Procedurile client ale modulelor comune vor fi disponibile pe Client, iar cele server – pe Server.

În Modulele generale, este disponibilă doar secțiunea care descrie proceduri și funcții. Acestea. în Modulul General nu puteți descrie variabile și nu puteți descrie o secțiune a programului principal.

Dacă este necesară o variabilă globală, puteți utiliza fie parametrii de sesiune, fie variabilele de export ale modulelor de aplicație.

Pentru modulele generale, puteți seta câțiva parametri care vor afecta comportamentul acestui modul. Dacă proprietatea Global este setată pentru un modul General, atunci metodele de export declarate în acest modul vor fi accesibile direct din exterior, fără instrucțiuni suplimentare.

Acestea. cel Modul general va participa la formarea contextului de configurare globală.

Proprietate Global pentru modulele generale poate fi util. Cu toate acestea, nu ar trebui să-l utilizați peste tot pentru toate modulele comune.

Acestea , care sunt marcate cu semnul Global, va fi compilat la pornirea sistemului. Cu cât mai multe astfel de module, cu atât programul va porni mai lent.

Dacă steagul Global Pentru Modul general nu este specificat, atunci compilarea acestui modul va fi efectuată în momentul primului apel către acesta (adică după pornirea sistemului).

În plus, utilizarea modulelor comune globale afectează înțelegerea codului. Metodele unui modul comun non-global sunt numite prin nume Modul generalși numele metodei, de exemplu:
Modul de calcul al costurilor.DistributeIndirectCosts();

În acest caz, denumirile modulelor comune trebuie să reflecte conținutul procedurilor descrise în acestea. Specificarea numelui modulului comun la apelarea unei proceduri ajută la înțelegerea mai bună a codului.

Pentru Modul general V Paleta de proprietăți puteți seta proprietatea Privilegiat.

Modulul privilegiat nu controlează drepturile de acces. Acest lucru este necesar dacă Modul general Este necesară efectuarea prelucrării în masă a datelor, obținând date din baza de date.

Controlul drepturilor de acces crește timpul necesar pentru a accesa o bază de date, iar algoritmii de masă trebuie adesea să funcționeze cât mai repede posibil.

De exemplu, salarizarea este o operațiune care necesită mult resurse. Trebuie făcută cât mai repede posibil. Pentru a face acest lucru, algoritmii care calculează salariile sunt plasați în privilegii .

Totodată, toate procedurile care asigură completarea documentelor de salarizare sunt în afara acestora Module comune. În aceste proceduri se realizează controlul drepturilor de acces.

În acest fel, se pot obține îmbunătățiri semnificative ale performanței. Acest lucru este valabil mai ales atunci când se utilizează un mecanism pentru controlul accesului rând cu rând la înregistrările de tabel.

Dacă un Modul Comun este privilegiat, atunci procedurile acestui modul pot fi compilate numai pe Server.

Există situații în care un obiect ar trebui să fie inaccesibil utilizatorului, de exemplu, un anumit director. Dar atunci când se realizează orice document, este necesară referirea la această carte de referință.

Acestea. Este necesar să extindeți temporar drepturile de utilizator și apoi să le readuceți la starea inițială. Acest efect poate fi obținut utilizând privilegiul Module comune.

Pentru a face acest lucru într-un privilegiat Modul general Ar trebui să creați o procedură care să acceseze datele necesare.

Această procedură va fi apelată din documentul corespunzător. Acestea. utilizatorului i se acordă efectiv drepturi extinse în momentul apelării acestei proceduri.

Pentru Module comune Este posibil să specificați locația de compilare. Indicatoarele sunt folosite pentru a determina dacă Modulul Comun va fi disponibil pe Client (aplicație gestionată), pe Server sau în modul Conexiune externă.

În plus, dacă comutați modul de editare a configurației la Aplicație gestionată și aplicație obișnuită, atunci va fi posibil un alt context de compilare - Client (aplicație obișnuită).

Astfel, există patru opțiuni pentru funcționarea programului. În funcție de aplicația care rulează, în funcție de lucrul pe Client sau pe Server, anumite Module Comune vor fi disponibile sau indisponibile.

În plus față de capacitatea de a specifica steaguri de compilare, este posibil să specificați directive de compilare pentru proceduri și funcții situate în Modulul Comun.

Dacă pentru o metodă este specificată o directivă de compilare, atunci, deși Modulul Comun este disponibil în toate contextele specificate, disponibilitatea metodei specifice va fi limitată de directiva de compilare.

În acest caz, procedura nu poate fi accesată într-un context care nu este accesibil întregului modul.

Dacă nu specificați o directivă de compilare pentru o procedură (funcție), aceasta va fi compilată în toate contextele definite pentru modul.

Acestea. În esență, se vor face mai multe copii ale procedurii. Alegerea unei anumite instanțe compilate depinde de locul în care este apelată procedura (după regula de apelare cea mai apropiată). Trebuie avut în vedere faptul că codul unei astfel de proceduri trebuie scris ținând cont de disponibilitatea acesteia în toate contextele definite pentru modul.

Modulele generice care sunt accesibile simultan în mai multe contexte diferite sunt concepute în primul rând pentru a crea proceduri care sunt accesibile în mai multe contexte.

Când se creează un Modul comun, se consideră o practică bună să nu se specifice directivele de compilare. Acestea. Disponibilitatea procedurilor și funcțiilor ar trebui să fie determinată de proprietățile modulului însuși.

Cu această abordare, procedurile client vor fi localizate în module comune separate, iar procedurile server vor fi localizate în module comune separate.

Modulele care au setate mai multe steaguri de compilare sunt folosite extrem de rar în practică. Acestea sunt câteva acțiuni comune disponibile atât pe client, cât și pe server. De obicei, acestea sunt niște calcule simple.

Important! Este posibil ca Clientul să acceseze metodele serverului de export ale unui Modul Comun, dar numai dacă acest Modul Comun este compilat numai pe Server. În acest caz, este furnizat un steag special pentru a oferi acces de la Client .

Pentru modulele comune non-globale, este posibil să stocați în cache valorile returnate de funcții. Acestea. După primul apel al unei funcții, sistemul își poate aminti rezultatul execuției acesteia. Dacă această funcție este apelată din nou cu aceiași parametri, sistemul va returna valoarea din cache.

Scopul acestui mecanism este de a accelera apelurile repetate. Pentru a configura acest comportament trebuie Paleta de proprietăți modul, setați valoarea corespunzătoare pentru proprietatea Reutilizarea valorilor returnate.

În mod implicit, această proprietate este setată la Nu folosiți. Alte valori posibile: cache În timpul apelului, sau Pe durata sesiunii.

Această proprietate are sens să fie utilizată numai pentru acele funcții ale căror rezultate depind numai de parametrii de intrare. Acest mecanism este disponibil numai pentru modulele comune non-globale.

Dacă este selectată valoarea parametrului corespunzător Pentru durata apelului, memoria cache va funcționa atâta timp cât rulează procedura din care a fost apelată metoda Modulului General. Dacă este selectată valoarea Pentru durata sesiunii, atunci se presupune în mod condiționat că memoria cache va funcționa în timp ce utilizatorul lucrează.

Cu toate acestea, există anumite restricții de timp. Cache-ul este șters automat la 20 de minute după ce valoarea intră în cache.

Modul formular

Acest modul este conceput pentru a procesa acțiunile utilizatorului. De exemplu, descrieți algoritmul pentru modul în care un program reacționează atunci când este apăsat un buton. Sau, de exemplu, în momentul introducerii unei valori într-un câmp, verificați imediat corectitudinea.

Pe lângă evenimentele asociate cu controalele formularului (butoane, câmpuri de introducere), există evenimente asociate direct cu formularul în sine.

De exemplu, puteți gestiona evenimentul de deschidere al formularului și puteți efectua o inițializare inițială. De asemenea, puteți gestiona evenimentul de închidere a formularului și puteți verifica dacă utilizatorul a introdus totul corect.

Există forme controlate și forme regulate. Modulele acestor formulare diferă în primul rând prin faptul că modulul de formular gestionat este clar împărțit în context. Fiecare procedură (funcție) trebuie să aibă o directivă de compilare. În formă normală, tot codul este utilizat pe Client.

Într-un modul de formular gestionat, puteți declara proceduri și funcții, puteți declara variabile și puteți descrie o secțiune a programului principal.

Codul de program al programului principal va fi executat în momentul inițializării formularului, adică. când utilizatorul începe să-l deschidă. Figura arată o listă de evenimente standard pentru un formular gestionat.

Lista de evenimente a unui formular gestionat este vizibilă și în lista de proprietăți direct pentru formularul în sine. Această listă este apelată în editorul de formulare gestionate.

Într-o formă gestionată, puteți gestiona evenimentul de scriere a articolului. Acest eveniment este prezent doar pentru formele obiect (directoare, documente și altele). Dacă formularul nu este legat de un anumit obiect, atunci nu există niciun eveniment de scriere.

Pentru un modul de formă obișnuită, lista evenimentelor standard este oarecum mai mică, deoarece Într-o formă gestionată, multe evenimente sunt făcute pentru a fi împerecheate (unul este executat pe Client și celălalt pe Server). În forma sa normală, tot codul este executat pe Client.

Modul obiect

Aceste module sunt tipice pentru directoare, documente, planuri pentru tipuri de calcule, planuri de conturi și multe alte obiecte. Modulul obiect este conceput pentru a gestiona evenimente standard. De exemplu, un eveniment pentru introducerea unui element de director, un eveniment pentru scrierea unui element, ștergerea, postarea unui document etc.

În principiu, evenimentul de scriere există și în Modulul Formular. Dar evenimentul de scriere din Modulul Formular are loc în timpul procesului de înregistrare interactivă, atunci când se lucrează cu un anumit formular.

Evenimentul de scriere din modulul obiect va fi executat pe orice scriere din orice formă a obiectului dat. În plus, dacă obiectul este scris programatic, evenimentul modulului obiectului se va declanșa.

În cazul de scriere a modulului obiect, puteți include toate verificările pentru corectitudinea datelor care sunt scrise, deoarece această procedură va fi executată în momentul absolut oricărei înregistrări.

Modulul acestui obiect poate fi apelat prin meniul contextual, din Paleta Proprietăți obiect și din fereastra de editare a obiectelor.

Figura de mai jos arată o listă de evenimente disponibile pentru modulul de director.

În Modulul Obiect puteți plasa o secțiune pentru descrierea variabilelor, descriind funcții arbitrare care ar putea să nu fie asociate cu un eveniment, precum și o secțiune a programului principal.

În secțiunea principală a programului, puteți, de exemplu, să inițializați variabilele locale ale unui anumit modul. Acest cod de program va fi executat atunci când acest obiect Modul este accesat.

Trebuie remarcat faptul că toate procedurile Modulului Obiect sunt compilate pe Server. În consecință, directivele de compilare pentru procedurile și funcțiile Modulului Obiect nu sunt necesare. Unele obiecte de configurare nu au module obiect.

Acest lucru se datorează caracteristicilor obiectelor în sine. Astfel de obiecte includ constanteȘi Registrele. Pentru Constant nu există un modul obiect, dar există un modul foarte asemănător numit Modulul de management al valorii.

ÎN Modulul de management al valorii vă puteți ocupa de evenimente de scriere constanteși procesarea de verificare a umplerii.

Întregul context al modulului este executat pe Server.

Pentru registre există un Modul Recordset.

Acest modul are, de asemenea, capacitatea de a gestiona evenimente de scriere și de a efectua verificări de ocupare.

În modulele obiect, modulele Value Manager (pentru constante) și modulele Recordset (pentru registre) puteți descrie metode care pot fi făcute exportabile, iar aceste metode vor fi accesibile din exterior.

Acestea. Pe lângă utilizarea metodelor fixe ale unei clase de obiecte, puteți crea metode suplimentare pentru un obiect în Modulul Obiect. Acest modul ar trebui să descrie procedura corespunzătoare cu cuvântul cheie Export.

Atunci se va putea accesa această procedură din exterior. Mai mult decât atât, această metodă va fi afișată în context tooltip. Noile metode din panoul explicativ context sunt evidențiate cu font albastru (pictograma albastră p() pentru proceduri și f() pentru funcții).

În mod similar, puteți crea o proprietate nouă declarând o variabilă cu cuvântul cheie Export. Această proprietate poate fi accesată și din exterior.

În acest fel, este posibilă extinderea funcționalității obiectelor (pentru a defini noi metode și noi proprietăți). Cu toate acestea, proprietățile sunt dinamice și nu sunt salvate în baza de date.

Dacă trebuie să utilizați o proprietate pentru un obiect care va fi stocat în baza de date, ar trebui să creați un atribut de obiect.

Modul manager

Acest modul există pentru multe obiecte (directoare, documente, registre etc.). Modulul este deschis fie prin meniul contextual pentru obiect, fie prin intermediul Paleta de proprietăți, sau prin fereastra de editare.

În Modulul Manager puteți suprascrie unele evenimente standard. De exemplu, în ProcesareReceivingSelectionData, atunci când un element este selectat din director, se pot face o filtrare sau verificare suplimentară.

În plus, puteți crea metode suplimentare în Modulul Manager și puteți indica că acestea sunt metode de export. În acest caz, este posibil să accesați aceste metode din exterior.

Pentru a efectua acest apel este necesar să obțineți tipul de date DirectoryManager.

Diferența dintre metodele de export ale Modulului Manager și Modulul Obiect este că pentru a accesa metoda Modulului Obiect, trebuie mai întâi să obțineți obiectul în sine (adică să obțineți cumva o legătură și apoi să convertiți această legătură într-un obiect) .

După aceasta, vor fi disponibile variabilele și metodele de export ale Modulului Obiect. Pentru Modulul Manager apelul este mai simplu, de exemplu:
Directoare.Contrapartide.NumeMetodă

Acestea sunt două apeluri diferite. Convertiți de la referință la obiect (metoda GetObject) este o acțiune destul de serioasă pentru sistem, deoarece la primirea unui obiect sunt citite absolut toate datele acestui obiect, ceea ce poate fi destul de lung.

A doua diferență este că Modul obiect numită în contextul unui element specific. În consecință, putem presupune că este aplicabil pentru un element dat (în cele mai multe cazuri, aceasta este exact logica folosită).

În ceea ce privește Modulul Manager, acesta descrie o acțiune comună pentru un grup sau pentru toate elementele unui director sau a unui document. De exemplu, dacă trebuie să imprimați un element de director, puteți utiliza Modulul Obiect.

Dar în Modulul Manager este posibil să se creeze un mecanism mai universal care va imprima, printre altele, un grup de elemente.

În plus, accesarea obiectului Modul este încă o acțiune mai lungă. Prin urmare, este mai de preferat să rezolvați această problemă în modulul manager.

Aceasta încheie cunoștințele noastre cu modulele din configurația sistemului 1C:Enterprise. Dacă rezumăm pe scurt toate cele de mai sus, concluziile de bază sunt următoarele:

  • Un modul software este o parte a configurației care poate conține doar text în limbajul 1C încorporat
  • Modulele software sunt clasificate în funcție de tipurile pe care le-am discutat în acest articol. Fiecare vizualizare este determinată de plasarea sa și de contextul programului disponibil.
  • Structura modulului constă din mai multe secțiuni, care sunt aranjate într-o anumită secvență. Compoziția secțiunilor este determinată de tipul de modul.

De asemenea, rețineți că am omis în mod deliberat un tip de modul, și anume modulul de comandă. Nu este nimic remarcabil și vă invităm să vă familiarizați cu funcționalitatea acestuia.

Până acum, am luat în considerare tot codul programului nostru separat de soluția aplicației și, de regulă, l-am scris într-o configurație mică de testare proprie. Știți că „nu puteți pur și simplu să mergeți” și să începeți editarea codului unei configurații standard? Nu? Apoi, în următorul articol vă vom explica totul!