24.01.2021

Opțiuni funcționale. Principiul de funcționare și exemplul de utilizare. Construirea de sisteme informaționale distribuite, căutare, sarcini programate, opțiuni funcționale Opțiuni funcționale 1c 8.3


Tipărire (Ctrl + P)

1. Alocarea opțiunilor funcționale

Opțiunile funcționale permit dezvoltatorului să descrie capacitățile soluției aplicației, care pot fi activate sau dezactivate rapid în etapa de implementare și / sau în timpul funcționării sistemului. De exemplu, capacitatea de a lucra cu proprietăți suplimentare ale bunurilor poate fi separată într-o opțiune funcțională separată. Apoi, dacă dezactivați această caracteristică, toate caracteristicile conexe (cu proprietăți suplimentare ale bunurilor) vor fi „pierdute” în interfața soluției aplicației.
Sistemul este capabil să ia în considerare automat starea setărilor făcute - să ascundă caracteristicile dezactivate, făcând interfața aplicației mai clară și mai ușor de înțeles pentru utilizator.
În timpul dezvoltării, apar situații în care valoarea unei opțiuni funcționale ar trebui să depindă de anumiți parametri, de exemplu, contabilitatea valutară nu este păstrată de toate organizațiile. Pentru a implementa o astfel de dependență, se utilizează Parametrii opțiunii funcționale - obiecte care parametrizează opțiunile funcționale.

2. Ce afectează opțiunile funcționale

2.1. Informații generale

Opțiunile funcționale pot influența:
● Pentru interfața cu utilizatorul - când dezactivați orice opțiuni funcționale, sistemul ascunde toate elementele legate de aceasta în interfața cu utilizatorul. Următoarele elemente de interfață sunt afectate:
● interfață globală de comandă;
● atribute de formular (inclusiv coloane ale atributelor de formular din ValuesTable sau ValuesTree);
● comenzi de formular;
● rapoarte implementate utilizând sistemul de compunere a datelor.
ATENŢIE! Dacă o aplicație client funcționează cu o bază de date bazată pe fișiere prin intermediul unui server web, atunci schimbarea opțiunii funcționale va schimba interfața cu utilizatorul numai după repornirea serverului web (repornirea aplicației client nu va schimba interfața utilizatorului).
● Algoritmi scrise în limbajul încorporat - este posibil să se obțină valorile opțiunilor funcționale din limbajul încorporat și să le folosească în diferite condiții, de exemplu, pentru a reduce cantitatea de calcul.
ATENŢIE! Opțiunile funcționale și parametrii lor nu afectează compoziția bazei de date. Toate tabelele și câmpurile sunt prezente în baza de date, indiferent de starea opțiunilor funcționale.

2.2. Interfață globală de comandă

Efectul opțiunilor funcționale asupra interfeței globale de comandă este că sistemul ascunde comenzile tuturor obiectelor legate de opțiunile dezactivate. De exemplu, dacă valoarea opțiunii funcționale Achiziții este egală cu Fals, atunci comenzile pentru deschiderea secțiunii Achiziții, crearea documentului Bunuri primite, deschiderea listei Bunuri primite etc. vor fi ascunse.
La rândul său, opțiunea Achiziție poate lua în considerare valoarea unui parametru al unei opțiuni funcționale, de exemplu, Organizație. Prin modificarea valorii acestui parametru folosind metodele limbajului încorporat, puteți schimba starea opțiunii funcționale și, în consecință, vizibilitatea elementului de interfață.
De asemenea, ar trebui să țineți cont de următoarele caracteristici ale formării interfeței de comandă:
● O comandă va fi exclusă din interfața de comandă dacă un atribut care este un parametru de comandă este dezactivat de o opțiune funcțională.
● Comanda va fi exclusă din interfața de comandă dacă tipul de parametru de comandă este dezactivat de o opțiune funcțională. Dacă tipul de parametru de comandă este compus, comanda devine indisponibilă când toate tipurile de parametri sunt dezactivate.

2.3. Forma

În formular, opțiunile funcționale pot afecta atributele și comenzile formularului și (ca rezultat) pot modifica vizibilitatea elementelor de formular asociate acestora (câmpuri și coloane - pentru atribute de formular, butoane - pentru comenzi de formular). Atunci când dezvoltați un formular, este necesar să luați în considerare următoarele caracteristici ale comportamentului sistemului:
<Вид>Un obiect ( ReferenceObject t, DocumentObject etc.) vor fi dezactivate dacă obiectul de configurare corespunzător este dezactivat de opțiunea funcțională. Sunt analizate doar acele opțiuni funcționale care nu au parametri.
● Atributul principal al unui tip de formular gestionat Listă dinamică va fi dezactivat dacă opțiunea funcțională dezactivează obiectul de configurare, care este specificat ca tabelul principal al listei dinamice. Sunt analizate doar acele opțiuni funcționale care nu au parametri.
● Un atribut de formular al unui tip de referință este dezactivat dacă obiectul de configurare care formează acest tip este dezactivat de o opțiune funcțională. Un atribut de tip compozit este dezactivat dacă opțiunile funcționale dezactivează toate tipurile constitutive.
● Dezactivați tipul de atribut formular<Вид>Obiect (inclusiv atributul formularului principal), dacă obiectul de configurare care formează acest tip este dezactivat de o opțiune funcțională. Sunt analizate doar acele opțiuni funcționale care nu au parametri.
● Un tabel de formular va fi dezactivat dacă afișează date dintr-un atribut de formular dezactivat de o opțiune funcțională.
● Nu există tipuri în dialogul de selectare a tipului (de exemplu, pentru câmpurile de intrare asociate cu atributele unui tip compozit) dacă obiectele de configurare care formează aceste tipuri sunt dezactivate de opțiunea funcțională. Informațiile despre tipurile dezactivate de opțiunile funcționale sunt stocate în cache pe partea clientului și șterse după 20 de minute sau în timpul unui apel de metodă RefreshInterface().
ATENŢIE! Spre deosebire de interfața de comandă, valorile parametrilor opțiunilor funcționale sunt setate numai pentru o instanță specifică a formularului.

2.4. Sistem de compunere a datelor

Sistemul de compoziție a datelor este utilizat în principal pentru elaborarea rapoartelor. Opțiunile funcționale afectează compoziția datelor afișate în raport și compoziția setărilor raportului disponibile utilizatorului. De exemplu, dacă opțiunea funcțională Contabilitatea valutară este dezactivată, atunci în raportul care afișează registrul de documente Sosirea mărfurilor, coloana Valută și monedă va fi absentă, iar setările nu vor avea capacitatea de a selecta, grupa, sorta, etc. de câmpul Valută.

2.5. Specificații

Opțiunile funcționale afectează vizibilitatea câmpurilor de formular care afișează valoarea caracteristicii unui obiect. Pentru a face acest lucru, este necesar să se includă în opțiunea funcțională o variabilă care stochează valoarea caracteristicii.
Să vedem un exemplu. Caracteristicile sunt utilizate pentru catalogul Bunurilor, tipurile de caracteristici sunt stocate în plan tipuri de caracteristici Caracteristici și valori ca resursă de registru de informații Valorile caracteristicilor. Resursa este inclusă în opțiunea funcțională Contabilitate Caracteristici.

Orez. 1. Influența opțiunilor funcționale asupra performanței

Dacă o opțiune funcțională este dezactivată Contabilitate Caracteristiciîn forme, vizibilitatea câmpurilor (coloana Valoare și câmpul Valoare), afișând valorile caracteristicilor, este dezactivată, așa cum se arată în Fig. 1.

3. Schema generală de lucru

Mecanismul de opțiuni funcționale include două tipuri de obiecte de metadate: Opțiune funcționalăși .
O opțiune funcțională este un obiect de metadate care poate afecta direct compoziția interfeței aplicației (dacă opțiunea funcțională își stochează valoarea într-un atribut boolean). Cu obiecte de acest tip, puteți ascunde elemente care nu sunt funcționale disponibile. De exemplu, opțiunea Contabilitate valutară poate ascunde directorul Valute, câmpul Valute din documente și coloana Valoare valută din rapoarte. Sursa valorii opțiunii funcționale este obiectul de metadate selectat ca proprietate de stocare, de exemplu, acesta
poate o constantă.
În cazul stocării valorii unei opțiuni funcționale într-un atribut de referință sau o resursă de registru de informații, este necesară Informații suplimentare, care indică exact cum să selectați valoarea opțiunii. În acest scop este furnizat un obiect de metadate separat - Parametrii opțiunii funcționale.
Putem spune că parametrii opțiunilor funcționale sunt axele de coordonate ale spațiului valorilor opțiunilor funcționale. Mai mult, un parametru al opțiunilor funcționale poate determina valoarea axei sale de coordonate „proprii” simultan pentru o varietate de opțiuni funcționale.


Orez. 2. Opțiune funcțională parametrizabilă

Luați în considerare un exemplu: de exemplu, contabilitatea totală depinde de un depozit aparținând unei anumite organizații (a se vedea Fig. 98). În baza noastră de informații
puteți păstra evidențe în numele diferitelor organizații și în diferite depozite.
Pentru a stoca valorile opțiunilor funcționale, vom crea un registru de informații, unde măsurătorile (axele de coordonate) vor fi:

● Organizare (de tipul adecvat);
● Depozit (de tipul adecvat).

Resursa registrului informațional va fi valoarea opțiunii funcționale contabile totale.
Apoi, structura generală a configurației va arăta astfel:
● Registrul informațiilor Contabilitatea sumelor:
● Dimensiunea organizației;
● Măsurarea depozitului;
● Contabilitate sumară a resurselor, care are tipul boolean.
● Parametru de opțiuni funcționale Organizare. Proprietatea Utilizare indică dimensiunea Organizarea registrului de informații Sumat.
● Parametrul opțiunilor funcționale Depozit. Proprietatea Utilizare indică dimensiunea Depozit a registrului Rezumate.
● Opțiunea funcțională Contabilitate cumulativă. Proprietatea de stocare indică contul Rezumate din registrul de informații Rezumate.
Ca rezultat, pentru a determina necesitatea contabilității totale, trebuie să indicăm în fiecare caz valorile parametrilor opțiunilor funcționale (Organizare și Depozit) și să obținem valoarea opțiunii funcționale.
Deci, în exemplul prezentat în Fig. 2, pentru Organizația 1 și Depozitul 1, contabilitatea totală este permisă, iar pentru Organizația 2 și Depozitul 1, contabilitatea totală este interzisă.

4. Interacțiunea cu alte obiecte

Opțiunile funcționale pot fi atribuite următoarelor obiecte de configurare:
● Subsisteme,
● Comenzi generale,
Forme comune,
● constante,
● Criterii de selecție,
● Director,
● Document,
● Jurnal,
● Planul de conturi,
● Diagrama tipurilor caracteristice,
● Diagrama tipurilor de calcul,
● Procesul de afaceri,
● Sarcină,
● Schimb de planuri,
● Raportează,
● Prelucrare,
● Registrul de acumulare,
● Registrul informațiilor,
● Registrul contabilității,
● Registrul decontării,
● Echipa,
● Atributele obiectului metadate,
● Secțiune tabelară,
● Atributele secțiunii tabulare,
● Atribut contabil,
● Atributul contabil subconto,
● Detalii de adresare,
Înregistrați măsurarea,
● Înregistrați resursa.
De asemenea, opțiunile funcționale pot afecta vizibilitatea elementelor formularului.

5. Creația

5.1. Crearea unei opțiuni funcționale

Pentru a crea o opțiune funcțională, este necesar să creați un obiect de configurare Opțiune funcțională. Acest lucru se poate face în modul Configurator în mod obișnuit, adică în fereastra de configurare, selectați elementul General, apoi Opțiuni funcționale și adăugați obiect nou.

Orez. 3. Crearea unei opțiuni funcționale

Aceasta creează un obiect de configurare Opțiune funcțională pe care îl puteți utiliza pentru a atribui opțiuni funcționale altor obiecte de metadate.


Orez. 4. Stocarea valorii opțiunii funcției

În plus față de nume, obiectul are o proprietate necesară - stocare. În editor, puteți selecta unul dintre obiectele pentru acesta, care va fi sursa valorii opțiunii. Lista obiectelor disponibile include:
● constante,
● detalii despre directoare,
● resurse de registre de informații.
Nu există nicio restricție cu privire la tipul sursă al valorii opțiunii, dar numai acele opțiuni funcționale care își stochează valorile în atribute de tip boolean sunt potrivite pentru controlul interfeței. Valorile funcționale ale opțiunilor cu alte tipuri sunt disponibile numai pentru analiza limbajului încorporat.
Modul privilegiat pe proprietatea get este responsabil pentru modul în care valoarea opțiunii funcției este recuperată (și memorată în cache).


Orez. 5. Mod privilegiat atunci când obțineți valoarea unei opțiuni de funcție

Dacă această proprietate este setată, atunci valoarea opțiunii funcționale este obținută în modul privilegiat. Valoarea rezultată este stocată în cache pentru toate sesiunile asociate cu această bază de date.
Dacă proprietatea Mod privilegiat este ștearsă atunci când obțineți, atunci valoarea opțiunii funcționale este recuperată ca de obicei.
Memorarea în cache se efectuează pentru sesiunea curentă. Atât valoarea (dacă a fost obținută), cât și semnul imposibilității de a obține valoarea (dacă valoarea nu a putut fi obținută) sunt stocate în cache.
Cache-ul este șters când se modifică valorile parametrilor sesiunii.
SFAT... Este recomandat să setați modul Privileged on get property pentru toate cazurile în care valoarea unei opțiuni funcționale nu conține informații confidențiale.

5.2. Crearea unui parametru de opțiuni funcționale

Pentru a crea un parametru al unei opțiuni funcționale, trebuie să creați un obiect de configurare Parametrii opțiunii funcționale... Acest lucru se poate face în modul Configurator în mod obișnuit, adică în fereastra de configurare, selectați elementul General, apoi Parametrii opțiunii funcționaleși adăugați un obiect nou.

În plus față de nume, parametrul are proprietatea de utilizare necesară. Specifică un set de obiecte ale căror valori vor determina modul în care trebuie selectată valoarea opțiunii funcționale. Lista obiectelor disponibile include directoare și dimensiuni ale registrului de informații. Pentru fiecare parametru al opțiunilor funcționale din această listă, puteți selecta un director (din întreaga listă de directoare) și o dimensiune a fiecărui registru de informații.
ATENŢIE! Nu puteți utiliza același obiect de metadate în mai mulți parametri de opțiuni funcționale.

6. Utilizare

6.1 Atribuirea de metadate obiectelor

Un obiect de metadate (cum ar fi o referință) poate fi atribuit uneia sau mai multor opțiuni funcționale. Pentru a face acest lucru, utilizați proprietatea Opțiuni funcționale, care conține linkuri către opțiunile funcționale create în configurație.

Orez. 6. Atribuirea unei opțiuni funcționale unui obiect

Lista opțiunilor disponibile este limitată numai la acele opțiuni pentru care este atribuit un obiect cu tipul de valoare booleană în proprietatea Storage.
ATENŢIE! Dacă nu este atribuită nicio opțiune funcțională unui obiect, aceasta este întotdeauna considerată vizibilă. În caz contrar, obiectul este considerat vizibil dacă este activată cel puțin una dintre opțiunile funcționale atribuite acestuia (adică opțiunile funcționale sunt combinate „SAU”).

6.2. Alocarea cerințelor și comenzilor formularului

Obiectele aparținând formei (Atribute și Comenzi) pot fi, de asemenea, utilizate în mecanismul opțiunilor funcționale.


Orez. 7. Atribuirea unei opțiuni funcționale unei comenzi

Acest lucru se poate face în editorul de formulare prin setarea proprietății Opțiuni funcționale pentru obiectul solicitat.
Starea opțiunilor funcționale va afecta afișarea obiectelor de formular în același mod ca și în cazul obiectelor de metadate.
De exemplu, în cazul unei comenzi dezactivate utilizând o opțiune de caracteristică, toate butoanele asociate vor fi eliminate.
Dacă nu este atribuită nicio opțiune funcțională unui atribut sau comandă formular, atunci atributul sau comanda formular este considerat întotdeauna vizibil. În caz contrar, un atribut sau o comandă de formular este considerat vizibil dacă este activată cel puțin una dintre opțiunile funcționale atribuite acestuia.

6.3. Utilizare în mecanismul de restricționare a accesului la date

În contextul unui mecanism de restricționare a accesului la date Opțiuni funcționale poate fi folosit la fel ca Parametrii sesiunii... Este permisă utilizarea numai a opțiunilor independente de parametri, adică a celor care sunt legați de constante.
ATENŢIE! Sistemul controlează unicitatea numelor dintre parametrii sesiunii și opțiunile funcționale.

6.4. Determinarea valorii unei opțiuni funcționale

Valoarea unei opțiuni funcționale este determinată de obiectul specificat în proprietatea Storage. În cazul unei constante, se folosește valoarea acesteia. Pentru o opțiune asociată cu un atribut de dicționar sau o resursă de registru de informații - valorile stocate în aceste obiecte. Pentru a găsi un obiect specific care stochează valoarea unei opțiuni funcționale, sunt necesare informații suplimentare - un set de valori pentru parametrii opțiunilor funcționale.
Dacă opțiunea este stocată într-un atribut de catalog, parametrul trebuie să conțină un link către un anumit element de catalog. Dacă opțiunea este stocată într-o resursă a registrului de informații, trebuie specificate valorile pentru toate dimensiunile registrului. În acest caz, fiecare dimensiune trebuie să fie caracterizată de propriul parametru.
Dacă nu toți parametrii sunt specificați pentru o opțiune funcțională de tip boolean, atunci se efectuează adăugarea OR a tuturor valorilor cu parametri nespecificați. De exemplu, dacă o opțiune funcțională este stocată în registrul de informații cu dimensiunile Organizație și Depozit și este specificată doar dimensiunea Organizație, atunci valoarea opțiunii funcționale va fi Adevărat, dacă cel puțin unul dintre depozitele listate în dimensiunea Depozit are valoarea opțiunii funcționale egală cu True.
Pentru o opțiune funcțională care are un alt tip decât Boolean, o situație cu parametri incomplet specificați duce la aruncarea unei excepții.
Metodele de limbaj încorporat vă permit să obțineți valoarea unei opțiuni, atât în ​​funcție de parametrii trecuți, cât și pentru parametrii setați
pentru o interfață de comandă sau un formular specific. În cazul în care modificarea valorii obiectului specificat în proprietatea opțiunii funcționale Stocare se efectuează într-o tranzacție, valoarea reală a opțiunii funcționale va fi modificată numai după finalizarea tranzacției. În timp ce tranzacția este deschisă, valoarea opțiunii funcționale va fi egală cu valoarea actuală la momentul începerii tranzacției.
Dacă o opțiune funcțională este legată de o resursă periodică de registru de informații, sistemul folosește o porțiune din aceasta din urmă pentru a obține valoarea opțiunii. Dacă trebuie să obțineți valoarea opțiunii pentru o altă dată, trebuie să specificați o valoare pentru parametrul Opțiuni funcționale perioadă de tip Date, care va fi folosit ca data recuperării feliei. Acest parametru nu trebuie creat în metadate. Acesta este furnizat automat de sistem.

Luați în considerare următorul comportament atunci când utilizați opțiuni funcționale parametrizate:
● În formularele de listă, coloana de atribute asociată cu o opțiune funcțională parametrizată va fi afișată dacă cel puțin o valoare activată a acestei opțiuni funcționale este stocată în baza de date.
● Dacă doriți ca detaliile asociate cu opțiunile funcționale să fie dezactivate în mod implicit atunci când deschideți formularul, atunci trebuie
setați valorile acestor parametri la valorile absente în baza de date (pentru cărțile de referință - un link gol, pentru registrele de informații - valorile dimensiunilor pentru care nu există înregistrări). În acest caz, opțiunea funcțională va fi setată la False.
● În cazul în care o legătură către un grup este specificată ca parametru (dacă tipul de parametru al unei opțiuni funcționale permite crearea de grupuri) și nu o legătură către un element, comportamentul sistemului va fi după cum urmează:
● dacă un atribut care stochează valoarea unei opțiuni funcționale este utilizat atât pentru un element cât și pentru un grup, atunci valoarea opțiunii funcționale va fi determinată de valoarea acestui atribut.
● dacă atributul care stochează valoarea opțiunii funcționale nu este utilizat pentru grup, atunci când obțineți valoarea opțiunii funcționale folosind metodele Obțineți opțiunea funcțională(), () și () vor returna NULL. Dacă, parametrizată cu o astfel de valoare, o opțiune funcțională afectează interfața utilizatorului, sistemul o va trata ca fiind dezactivată (opțiunea funcțională va avea valoarea False).
● Pentru obiectele de metadate care formează comenzi, este posibil să se lege la o opțiune de funcție parametrizată. În interfața de comandă, comenzile unor astfel de obiecte vor fi afișate numai dacă există cel puțin o combinație de parametri de opțiune funcțională pentru care valoarea opțiunii funcționale este True. Cu toate acestea, folosind metoda (), puteți seta valori specifice pentru parametrii opțiunilor funcționale și apoi vizibilitatea
comenzile vor fi determinate de parametrii specificați.
● O listă dinamică utilizează automat opțiunile funcționale utilizate de formular. Dacă atributele utilizate în cererea listei dinamice sunt dezactivate pentru o combinație dată de parametri de opțiuni funcționale, datele lor nu vor fi selectate și afișate în lista dinamică, iar atributul va fi eliminat din listele atributelor disponibile în setările de afișare a datelor dialog
listă dinamică (în 1C: modul Enterprise).

7. Lucrul cu opțiuni funcționale în limbajul încorporat

Metode de context global GetFunctionalOption ()și Opțiune GetFunctionalInterface() returnează valoarea unui funcțional
Opțiuni. Diferența dintre ele este că prima metodă vă permite să specificați un set de parametri de opțiuni funcționale, în timp ce a doua returnează valoarea opțiunii funcționale pe baza parametrilor specificați pentru interfața de comandă. Formularul are propria sa metodă care returnează valoarea opțiunii pentru parametrii specificați în formular - GetFunctionalOptionForm().
Pentru a actualiza interfața globală de comandă, trebuie să apelați în mod explicit metoda SetParametersFunctionalOptionsInterface().
Interfața de comandă va fi actualizată pentru a reflecta noua stare a opțiunilor funcționale.
NOTE F. Dacă valoarea unei opțiuni funcționale este modificată în baza de date, atunci actualizarea automată a interfeței de comandă globale și a formularelor deschise în acest moment nu are loc. Pentru a face acest lucru, utilizați metoda UpdateInterface () după scrierea valorilor opțiunilor funcționale în baza de date.
Amintiți-vă că setarea parametrilor la opțiuni funcționale (și executarea unei metode RefreshInterface()) duce la următoarele consecințe:
● pentru fiecare formular, se solicită închiderea tuturor formularelor auxiliare (cu apelul gestionarilor corespunzători);
● formularele care refuză să se închidă nu sunt închise;
● se actualizează compoziția elementelor formularului principal;
● dacă în momentul actualizării interfeței formularul principal era forma activă, formularul principal este afișat în conformitate cu noua compoziție a elementelor;
● dacă în momentul actualizării interfeței formularul auxiliar era forma activă, atunci:
● va fi executată comanda de deschidere a unui formular auxiliar, dacă este disponibilă după actualizarea interfeței;
● în caz contrar, compoziția elementelor din formularul principal este actualizată și afișată;
● dacă în momentul actualizării interfeței formularul activ era un formular auxiliar deschis cu o comandă care nu este legată de bara de navigare a formularului, atunci compoziția elementelor principale ale formularului va fi actualizată și afișată în locul acestui formular.
Pentru a actualiza un anumit formular, fie redeschideți-l, fie apelați metoda SetParametersFunctionalOptionsForm (),
în acest caz, secvența de acțiuni descrisă mai sus funcționează numai pentru formularul în contextul căruia se numește setarea parametrilor opțiunilor funcționale ale formularului.
Parametrii nu trebuie specificați simultan, puteți modifica selectiv valoarea unui anumit parametru sau a unui set de parametri. Dar este exact instalare de grup valorile într-un singur apel.
Pentru a obține valorile parametrilor, trebuie să apelați funcția corespunzătoare ( GetParametersFunctionalOptionsInterface() sau
GetFormFunctionalOptionsParameters ()), care va returna parametrii setați sub forma unei structuri, unde numele parametrului va acționa ca o cheie.
Când formularul este deschis, acesta folosește automat parametrii opțiunilor funcționale stabilite pentru interfața de comandă.

Opțiuni funcționaleși Parametru opțional funcțional- acestea sunt obiecte de configurare 1C 8.3 (8.2), în agregat, reprezentând mecanismul opțiunilor funcționale. Mecanism de opțiuni funcționale - funcționalitate care vă permite să definiți un set de funcționalități de care utilizatorii au nevoie.

Simplu spus, mecanismul de opțiuni funcționale este un comutator de pornire / oprire pentru diferite funcționalități dintr-o configurație.

De ce ar putea fi necesar să dezactivați funcționalitatea?

Obțineți gratuit 267 tutoriale video 1C:

Adesea, funcționalitatea suplimentară poate complica munca angajaților. Un exemplu banal de utilizare a opțiunilor funcționale în 1C - baza de date păstrează înregistrări pentru o organizație sau depozit, de ce atunci obligăm utilizatorul să completeze aceste date în toate documentele?

Ce controlează opțiunile funcționale?

În primul rând, utilizarea opțiunilor funcționale se reflectă cel mai convenabil în interfață: detalii despre formular, formulare de comandă, interfața generală - toate acestea pot fi asociate cu opțiuni funcționale. În funcție de valoarea opțiunilor funcționale, puteți restricționa ieșirea datelor în raportul construit pe pânză.

Opțiuni funcționale Este una dintre noile caracteristici ale platformei 1C: Enterprise 8.2. Scopul utilizării acestora este că vă permit să personalizați interfața utilizatorului în conformitate cu setările opțiunilor funcționale, să setați vizibilitatea atributelor în formulare. În plus, dezvoltatorul are capacitatea de a implementa codul programului, a cărui execuție depinde de starea opțiunii funcționale.

Să creăm o opțiune funcțională care vă permite să activați și să dezactivați calculul salariiîn configurație. Cu ajutorul său, vom putea ascunde rapid acele părți ale interfeței care sunt legate de rezolvarea problemelor de calcul. O opțiune funcțională în sine nu stochează nicio valoare care să permită activarea și dezactivarea acesteia. De obicei, o constantă este utilizată pentru a stoca starea unei opțiuni funcționale, deși poate fi legată de un alt obiect, de exemplu, de un atribut al unui obiect.

Să creăm o nouă constantă, să o numim Contabilitatea salariilor, tip de - Boolean... Să includem constanta în subsistem Administrareși în forma constantelor, astfel încât să o putem edita. În plus, sub formă de constante, vom defini gestionarul AfterRecord cu următoarea formă:

& OnClient Procedură AfterWrite (WriteParameters) UpdateInterface (); Sfârșitul procedurii

Sensul utilizării comenzii UpdateInterface () este să actualizați, să redesenați interfața după ce schimbarea la constanta asociată cu opțiunea funcțională intră în vigoare. În caz contrar, pentru ca modificările să aibă efect, va trebui să reporniți configurația.

Să creăm o nouă opțiune funcțională, denumim-o Contabilitatea salariilor, pe filă Principalul, în parametru Depozitare indicăm constanta nou creată, Fig. 7.23. Să includem o opțiune funcțională în subsistem Administrare.


Orez. 7.23.

Acum să mergem la fila ferestrei de setări a opțiunii funcționale Compoziţieși selectați tot (Fig. 7.24) care se referă la salarizare. Dacă unele obiecte, de exemplu, dicționare, fac referire la diferite părți ale configurației, nu le vom marca, altfel, când opțiunea funcțională este dezactivată, acestea vor „dispărea” de pe interfață.


Orez. 7.24.

Selectarea subsistemului Pregătirea salarizării v acest caz nu duce la selectarea automată a tuturor obiectelor incluse în subsistem. Când alegem, ne referim doar la ascunderea sau afișarea secțiunii interfeței de comandă Pregătirea salarizării.

Rulând sistemul în modul utilizator, putem activa și dezactiva vizibilitatea obiectelor legate de subsistemul salarial din configurația noastră, pur și simplu prin setarea sau debifarea steagului la constantă Contabilitatea salariilor.

Mai dificil utilizare caz opțiunile funcționale constă în setarea vizibilității elementelor individuale ale formularului în cazul în care valoarea opțiunii funcționale este stocată în atributul unui obiect.

Să facem modificări în configurație, în special în cartea de referință Persoane fizice adăugați o recuzită booleană Are ExperiențăHumanityServiceși așezați-l pe formularul articolului din catalog.

Odată cu lansarea platformei 1C: Enterprise 8.2, un nou obiect a apărut în arborele de configurare - „Opțiuni funcționale”... Este utilizat în mod activ în toate configurații tipice bazat pe formulare gestionate și servește la simplificarea procesului de afișare a atributelor și obiectelor individuale în interfață. De exemplu, configurația dvs. are un modul pentru comunicarea cu servicii web externe. Acest modul folosește o serie de atribute în documente, registre și componente individuale din subsisteme. Modulul este opțional și nu este solicitat de fiecare companie. În mod logic, deoarece modulul nu este necesar de toată lumea, atunci nu este întotdeauna necesar să se afișeze toate elementele / câmpurile asociate acestuia.

În versiunile mai vechi ale platformei, rezolvarea unor astfel de probleme presupunea scrierea unui cod suplimentar, care trebuia apelat în toate zonele dependente. De exemplu, dacă trebuie să ascundem anumite detalii ale formularului (în funcție de valoarea setării), atunci trebuie să apelăm codul corespunzător când formularul a fost deschis. Nu a fost foarte convenabil și, în majoritatea cazurilor, dezvoltatorii nu au uitat de astfel de lucruri.

Este bine dacă doriți să ascundeți doar câmpurile sub formă de documente, dar putem avea în continuare formulare de înregistrare cu care poate interacționa și utilizatorul. Scrierea unei funcții generice de control al afișajului este destul de dificilă și va necesita timp suplimentar, ceea ce nu este niciodată suficient.

Opțiunile funcționale sunt concepute pentru a rezolva aceasta și multe alte dificultăți asociate cu afișarea elementelor interfeței / compoziției obiectelor disponibile în interfața utilizatorului. În această notă, nu voi lua în considerare exemple de utilizare a principalului scop al opțiunilor funcționale, dar vă voi atrage atenția asupra utilizării lor într-un mod nu destul de standard. Poate că este familiar pentru mulți dezvoltatori avansați, dar am ajuns la această metodă din întâmplare. Mai exact, a fost inspirat de practica programării în JavaScript.

Cazul nr. 1: opțiune funcțională ca învelitoare peste alte obiecte

Prima caracteristică non-standard a opțiunilor funcționale este capacitatea de a crea împachetări. Să luăm în considerare cel mai simplu exemplu - constante. De exemplu, adăugați o nouă constantă la o configurație cu un număr mare de roluri de utilizator. Pentru ca utilizatorii să poată accesa valoarea constantei, trebuie să setați permisiunile de citire pentru rolurile corespunzătoare. Dacă drepturile nu sunt setate, atunci utilizatorii nu vor putea obține valoarea acestuia. Dacă există multe roluri și acestea nu sunt moștenite de la rolul de bază, atunci va trebui să petreceți timpul setând casetele de selectare corespunzătoare.

O opțiune funcțională poate rezolva această problemă mai elegant. Ideea este următoarea: creați o constantă (de exemplu). Nu îi atribuim drepturi. Creați o opțiune funcțională cu același nume și specificați-o în proprietate "Depozitare" specifică o constantă „Oportunitate de economisire a datelor”... De asemenea, am pus steagul „Mod privilegiat la primire”.

Gata, acum oriunde în cod unde trebuie să vă referiți la constantă, scriem așa:

Deoarece am setat opțiunea la modul privilegiat, nu trebuie specificate drepturi suplimentare pentru constantă. Desigur, nu este nevoie să aplicați această tehnică în toate cazurile de situații imaginabile și de neconceput. Amintiți-vă, o reglementare competentă a drepturilor este o garanție a liniștii mintii. Folosiți trucul numai atunci când aveți cu adevărat nevoie.

Cazul numărul 2. Un nivel suplimentar de abstractizare

Nu știu care este numele corect pentru această metodă, dar în mintea mea sună așa. Să ne uităm la exemplul anterior. Avem în continuare aceeași constantă „Capacitatea de a salva date”. Lucrăm cu el folosind opțiunea funcțională cu același nume ca un wrapper.

Acum să ne imaginăm că am vrut să scăpăm de constantă și să trecem la utilizarea referinței. Un scenariu tipic pentru rezolvarea unei astfel de probleme (dacă folosim doar o constantă) ar fi lansarea unui instrument global de căutare pentru a detecta o referință la o constantă. Permiteți-mi să vă reamintesc că, dacă nu folosim o opțiune funcțională ca împachetare, atunci ar trebui să tratăm o constantă astfel:

Constants.DataSaving Capability.Get ();

Găsiți toate apelurile și înlocuiți-le cu calea către noul obiect de stocare. De acord, acest lucru este destul de incomod. Dacă am folosit cazul anterior (folosind o opțiune funcțională ca împachetare), atunci pentru a „muta” trebuie doar să mergem la proprietățile opțiunii funcționale și să schimbăm proprietatea "Depozitare"... De exemplu, specificați acolo „Director” sau „Registrul informațiilor”... Nu sunt necesare jocuri de căutare globală. Codul pentru accesarea valorii constante prin opțiunea funcțională va rămâne același:

GetFunctionalOption („Capacitate de economisire date”);

Obiectul 1c „Opțiuni funcționale” - concepute pentru a evidenția funcționalitatea unei soluții aplicate care poate fi activată (dezactivată) în timpul implementării fără a se modifica (împreună cu subsistemele, acestea formează interfața clientului subțire 1C). Acestea fac parte din mecanismul de opțiuni funcționale.

Mecanism de opțiuni funcționale include două obiecte de metadate:

  1. Opțiune funcțională;
  2. Parametrii funcționali ai opțiunii.

Mai multe detalii

Opțiune funcțională este un obiect de metadate care poate afecta direct compoziția interfeței aplicației (dacă opțiunea funcțională își stochează valoarea într-un atribut boolean). Cu obiecte de acest tip, puteți ascunde elemente care nu sunt funcționale disponibile. De exemplu, opțiunea Contabilitate valutară poate ascunde Valute, câmpul Valută din și coloana Valoare valută din rapoarte.

Sursa valorii opțiunii funcționale este obiectul de metadate selectat ca proprietate de stocare, de exemplu, poate fi.

Dacă valoarea unei opțiuni funcționale este stocată într-un atribut sau o resursă a cărții de referință, sunt necesare informații suplimentare care indică modul de selectare a valorii opțiunii. În acest scop este furnizat un obiect de metadate separat - Parametrii opțiunii funcționale.

Putem spune că parametrii opțiunilor funcționale sunt axele de coordonate ale spațiului valorilor opțiunilor funcționale. Mai mult, un parametru al opțiunilor funcționale poate determina valoarea axei sale de coordonate „proprii” simultan pentru o varietate de opțiuni funcționale.

[colaps]

Opțiunile funcționale pot influența:

  1. la interfața cu utilizatorul:
    • global;
    • cerințe (inclusiv coloanele elementelor de recuzită ale tipului de formular Tabelul valorilor sau Arborele valorii);
    • comenzi de formular;
  2. pentru rapoarte implementate utilizând sistemul de compunere a datelor;
  3. la algoritmi scrise în limbajul încorporat - este posibil să se obțină valorile opțiunilor funcționale din limbajul încorporat și să le folosească în diverse condiții, de exemplu, pentru a reduce cantitatea de calcul (a se vedea, de exemplu,).

ATENŢIE! Dacă o aplicație client funcționează cu o bază de date bazată pe fișiere prin intermediul unui server web, atunci schimbarea opțiunii funcționale va schimba interfața cu utilizatorul numai după repornirea serverului web (repornirea aplicației client nu va schimba interfața utilizatorului).

Proprietățile opțiunilor funcționale 1C

  • Stocarea este un câmp în care trebuie să selectați un obiect cu un tip boolean. De obicei, se folosesc constante.
  • la primire - steagul este responsabil pentru capacitatea de a obține valoarea unei opțiuni funcționale în modul privilegiat.
  • Compoziție - o listă de obiecte și atribute ale obiectelor, a căror vizibilitate este activată / dezactivată atunci când opțiunea funcțională este dezactivată / dezactivată (va fi controlată folosind un formular gestionat).

De exemplu, în funcție de condițiile unei implementări specifice, puteți prevedea dezactivarea contabilității mărfurilor de către depozite, astfel încât la înregistrarea documentelor de primire a mărfurilor, câmpul Depozit să nu fie afișat în formularul de document.

Caracteristicile utilizării opțiunilor funcționale 1C:

  1. Opțiunile funcționale pot fi de tip arbitrar (nu neapărat boolean).
  2. Când adăugați o nouă constantă pentru a utiliza o opțiune funcțională, asigurați-vă că o includeți în subsistemul corespunzător și atribuiți drepturi asupra acesteia.
  3. Lucrul cu opțiuni funcționale este disponibil din limbajul încorporat, datorită căruia dezvoltatorul își poate crea proprii algoritmi pentru valorile opțiunilor funcționale.
  4. Comanda interfeței de comandă va fi exclusă din interfața de comandă dacă opțiunea funcțională este dezactivată:
    • un atribut care este un parametru de comandă;
    • tipul parametrului de comandă (dacă tipul parametrului de comandă este compus, comanda devine indisponibilă când toate tipurile de parametri sunt dezactivate).

ATENŢIE! Opțiunile funcționale și parametrii lor nu afectează compoziția bazei de date: toate tabelele și câmpurile sunt prezente în baza de date, indiferent de starea opțiunilor funcționale.

Influența opțiunilor funcționale asupra atributelor și comenzilor formularului:

  1. tip de formular gestionat<Вид>Un obiect ( ReferenceObject, DocumentObject etc.) vor fi dezactivate dacă obiectul corespunzător este dezactivat de opțiunea funcțională. Sunt analizate doar acele opțiuni funcționale care nu au parametri.
  2. Principalele elemente de recuzită ale unui tip de formular gestionat Listă dinamică va fi dezactivat dacă opțiunea funcțională dezactivează obiectul de configurare, care este specificat ca tabelul principal al listei dinamice. Sunt analizate doar acele opțiuni funcționale care nu au parametri.
  3. Un atribut formular al unui tip de referință este dezactivat dacă obiectul de configurare care formează acest tip este dezactivat de o opțiune funcțională. Un atribut de tip compozit este dezactivat dacă opțiunile funcționale dezactivează toate tipurile constitutive.
  4. Un tabel de formular va fi dezactivat dacă afișează date dintr-un atribut de formular dezactivat de o opțiune funcțională.
  5. Nu există tipuri în dialogul de selectare a tipului (de exemplu, pentru câmpurile de intrare asociate cu atributele de tip compozit) dacă obiectele de configurare care formează aceste tipuri sunt dezactivate de opțiunea funcțională. Informațiile despre tipurile dezactivate de opțiunile funcționale sunt stocate în cache pe partea clientului și șterse după 20 de minute sau în timpul unui apel de metodă UpdateInterface ().

ATENŢIE! Spre deosebire de interfața de comandă, valorile parametrilor opțiunilor funcționale sunt setate numai pentru o instanță specifică a formularului.

Crearea unui parametru de opțiuni funcționale

Un parametru de opțiune funcțională este creat folosind obiectul de configurare 1C "Parametri de opțiuni funcționale".

[colaps]

Acest lucru se poate face în fereastra de configurare prin adăugarea unui nou obiect.

Proprietățile parametrilor de opțiuni funcționale:

  • Utilizare - setează un set de obiecte ale căror valori vor determina modul în care trebuie selectată valoarea opțiunii funcționale. Lista obiectelor disponibile include directoare și dimensiuni ale registrului de informații. Pentru fiecare parametru al opțiunilor funcționale din această listă, puteți selecta un director (din întreaga listă de directoare) și o dimensiune a fiecărui registru de informații.

ATENŢIE! Nu puteți utiliza același obiect de metadate în mai mulți parametri de opțiuni funcționale.


2021
mamipizza.ru - Bănci. Depozite și depozite. Transferuri de bani. Împrumuturi și impozite. Banii și statul