Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Erori
  • 1c condiție de solicitare în grup. Exemple de interogări pentru lucrul cu directoare ierarhice

1c condiție de solicitare în grup. Exemple de interogări pentru lucrul cu directoare ierarhice

În acest articol dorim să discutăm totul cu tine Funcții de limbaj de interogare 1C, și constructele limbajului de interogare. Care este diferența dintre funcție și design? Funcția este apelată cu paranteze și posibili parametri în ele, iar constructul este scris fără paranteze. Fara indoiala toate structurile și funcțiile limbajului de interogare 1C face procesul de achiziție a datelor flexibil și multifuncțional. Aceste funcții și constructe se aplică câmpurilor de interogare, iar unele se aplică și condițiilor.

1C Funcții limbaj de interogare

Pentru că o descriere clară Funcții de limbaj de interogare 1C este mult mai puțin frecventă decât descrierile structurilor, am decis să începem să ne uităm la funcții. Acum să ne uităm la fiecare separat, descriindu-i scopul, sintaxa și exemplul de utilizare, deci:

1. Funcţie DATA ORA- această funcție creează un câmp constant cu tipul „Date”.

Sintaxă: DATA ORA(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Exemplu de utilizare:

2. Funcția DATE DIFERENTĂ- returnează diferența dintre două date într-unul dintre dimensiuni (an, lună, zi, oră, minut, secundă). Măsurarea este trecută ca parametru.

Sintaxă: DIFERENCEDATE(<Дата1>, <Дата2>, <Тип>)

Exemplu de utilizare:

Query.Text = „SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Qty.Days”;

3. Funcția VALUE- setează un câmp constant cu o înregistrare predefinită din baza de date; puteți obține și un link gol de orice tip.

Sintaxă: VALUE(<Имя>)

Exemplu de utilizare:

Request.Text = „SELECT //element predefinit | VALUE(Directory.Currencies.Dollar) AS Dollar, //link gol | VALUE(Document.Receipt of Goods and Services.EmptyLink) AS Receipt, //transfer value | VALUE(Transfer . Persoană fizică juridică. Persoană fizică) AS Persoană fizică, //cont predefinit | VALUE(Planul de conturi. Autoportant. Materiale) AS Account_10" ;

4. Funcția SELECT- avem în fața noastră un analog al construcției IF, care este folosit în cod, doar acesta este folosit în interogările 1C.

Sintaxă: ALEGERE CÂND<Выражение>APOI<Выражение>IN CAZ CONTRAR<Выражение>Sfârşit

Exemplu de utilizare:

Solicitare.Text = //dacă suma este mai mare de 7500, atunci ar trebui să existe o reducere de 300 de ruble, //deci dacă condiția este declanșată, funcția //returnează Suma - 300 //în caz contrar, cererea va returna pur și simplu Sumă „SELECT | SELECT | WHEN TTCReceipts.Amount > 7500 | THEN TTCReceipts.Amount - 300 | ELSE TTCReceipts.Amount | END AS AmountWithDiscount |FROM | Document.Receipt of GoodsServices.Goods AS TTCReceipts”;

5. Funcția EXPRESS- vă permite să exprimați un câmp constant cu un anumit tip.

Sintaxă: EXPRESS(FieldName AS TypeName)

Exemplu de utilizare:

Query.Text = "SELECT VARIOUS | Sales.Registrar.Number, | SELECT | WHEN Sales.Registrar LINK Document.Consumable | THEN EXPRESS(Sales.Registrar AS Document.Consumable) | ELSE SELECT | WHEN Sales.Registrar LINK Document.Implementation | THEN EXPRESS(Sales.Registrar AS Document.Implementation) | END | ... | END AS Număr | FROM | RegisterAcumulations.Purchases AS Purchase";

Există o altă opțiune pentru utilizarea funcției EXPRESS în câmpuri de tipuri mixte, unde apar acestea? Cel mai simplu exemplu este „Registrul” pentru orice registru. Deci, de ce ar trebui să calificăm tipul în registrator? Să luăm în considerare situația când selectăm câmpul „Număr” de la registrator, din ce tabel va fi selectat numărul? Răspunsul corect al tuturor! Prin urmare, pentru ca interogarea noastră să funcționeze rapid, ar trebui să specificăm un tip explicit folosind funcția EXPRESS

Exemplu de utilizare:

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS Comment, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenclature AS Nomenclature";

6. Funcția ISNULL(ortografie alternativă ISNULL) - dacă câmpul este de tip NULL, atunci se înlocuiește cu al doilea parametru al funcției.

Sintaxă: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Exemplu de utilizare:

De asemenea, rețineți că este recomandabil să înlocuiți ÎNTOTDEAUNA tipul NULL cu o anumită valoare, deoarece comparația cu tipul NULL returnează întotdeauna FALSE chiar dacă comparați NULL cu NULL. Cel mai adesea, valorile NULL sunt formate ca urmare a îmbinării tabelelor (toate tipurile de îmbinări, cu excepția celor interne).

Query.Text = //Selectați întregul articol și soldurile acestuia //dacă nu există sold într-un articol, atunci va exista un câmp //NULL care va fi înlocuit cu valoarea 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Rest | FROM | Directory.Nomenclature AS Nr. | LEFT CONNECTION Înregistrați acumulări. BunuriÎnDepozite. Rămășite AS BunuriÎnDepoziteRemains | ON (GoodsInWarehousesRemains. Nomenclatură)"; = No.

7. Funcția REPREZENTARE- vă permite să obțineți o reprezentare a câmpului de solicitare.

Sintaxă: PERFORMANŢĂ(<НаименованиеПоля>)

Exemplu de utilizare:

Query.Text = "SELECT | REPRESENTATION(FreeRemainingRemains.Nomenclature) AS Nomenclature, | REPRESENTATION(FreeRemainingRemaining.Warehouse) AS Warehouse, | FreeRemainingRemaining.InStockRemaining |FROM |Acumulation Register.FreeRemaining AS FreeRemaining;Remaining"

Construcții în limbajul de interogare 1C

Am discutat cu tine mai sus Funcții de limbaj de interogare 1C, acum este timpul să luați în considerare constructe în limbajul de interogare 1C, nu sunt mai puțin importante și utile, să începem.

1. Constructii LINK- este un operator logic pentru verificarea unui tip de referință. Cel mai des întâlnit la verificarea unui câmp de tip complex cu un anumit tip. Sintaxă: LEGĂTURĂ<Имя таблицы>

Exemplu de utilizare:

Solicitare.Text = //dacă tipul de valoare înregistrator este document Recepție, //atunci interogarea va returna „Recepție de mărfuri”, în caz contrar, „Vânzări de mărfuri” „SELECT | SELECT | WHEN Remainings.Registrar LINK Document.Receipt of Goods and Servicii | ATUNCI ""Chitare"" | ALTA ""Consum"" | END AS Tip de miscare | DIN | Registrul de acumulare. Produse ramase in depozite AS Resturi" ;

2. Design INTRE- acest operator verifică dacă valoarea se află în intervalul specificat.

Sintaxă: ÎNTRE<Выражение>ȘI<Выражение>

Exemplu de utilizare:

Request.Text = //obține întreaga nomenclatură al cărei cod este în intervalul de la 1 la 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code BETWEEN 1 AND 100" ;

3. Construcția B și B IERARHIE- verificați dacă valoarea se află în lista transferată (matricele, tabelele de valori etc. pot fi transferate ca listă). Operatorul ÎN IERARHIE vă permite să vizualizați ierarhia (un exemplu de utilizare a Planului de conturi).

Sintaxă: ÎN(<СписокЗначений>), ÎN IERARHIE(<СписокЗначений>)

Exemplu de utilizare:

Solicitare.Text = //selectați toate subconturile contului „SELECT | Auto-susținut. Link AS Account | FROM | Plan de conturi. Auto-susținut AS Auto-susținut | WHERE | Auto-susținător. Link ÎN VALOAREA IERARHIEI (Graficul de Conturi. Autoportante. Bunuri)";

4. Design similar- Această funcție ne permite să comparăm un șir cu un model de șir.

Sintaxă: LIKE "<ТекстШаблона>"

Opțiuni de model de rând:

% - o secvență care conține orice număr de caractere arbitrare.

Un personaj arbitrar.

[...] - orice caracter unic sau secvență de caractere enumerate între paranteze drepte. Enumerarea poate specifica intervale, de exemplu a-z, adică un caracter arbitrar inclus în interval, inclusiv capetele intervalului.

[^...] - orice caracter unic sau secvență de caractere enumerate între paranteze drepte, cu excepția celor enumerate după semnul de negație.

Exemplu de utilizare:

Interogare.Text = //găsiți întreaga nomenclatură care conține rădăcina TABUR și începe //fie cu litera mică sau majusculă t „SELECT | Nomenclatură. Link | FROM | Director. Nomenclatura AS Nomenclatură | WHERE | Produse. Nume LIKE "" [Tt ]abur%""" ;

5. Design PERMIS- acest operator vă permite să selectați doar acele înregistrări din baza de date pentru care apelantul are permisiunea de citire. Aceste drepturi sunt configurate la nivel de înregistrare (RLS).

Sintaxă: ALLOWED este scris după cuvântul cheie SELECT

Exemplu de utilizare:

Request.Text = "SELECTARE PERMIS | Contrapartide. Link | DIN | Director. Contrapartide AS Counterparties";

6. Design DIVERSE- vă permite să selectați înregistrări în care nu există înregistrări duplicat.

Sintaxă: VARIOUS este scris după cuvântul cheie SELECT

Exemplu de utilizare:

Request.Text = //selectează înregistrările la care cititorul are drepturi „SELECT VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties” ;

De asemenea, construcția VARIOUS poate fi folosită cu operatorul PERMIS și alți operatori.

Exemplu de utilizare:

Request.Text = //selectează diverse înregistrări la care cititorul are drepturi „SELECT ALLOWED VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties”;

7. Design FIRST- selectează numărul de înregistrări specificat în parametru din rezultatul interogării.

Sintaxă: FIRST<число>

Exemplu de utilizare:

Solicitare.Text = //selectați primele 4 numere CCD din directorul "SELECT FIRST 4 | Numere CCD. Link | FROM | Director. Numere CCD AS Numere CCD";

8. Design PENTRU SCHIMBARE- vă permite să blocați un tabel, funcționează numai în tranzacții (relevant doar pentru blocările automate).

Sintaxă: PENTRU SCHIMBARE<НаименованиеТаблицы>

Exemplu de utilizare:

Query.Text = "SELECT | Resturi libere. Nomenclator, | Resturi libere. Depozit, | Resturi libere. În stoc rămase | DIN | Registrul acumulărilor. Resturi libere. Rămășii ca resturi libere | PENTRU SCHIMBARE | Registrul acumulărilor. . Resturi libere. Resturi";

9. Design COMANDA DE- organizează datele după un anumit câmp. Dacă câmpul este un link, atunci când setați steag COMANDĂ AUTOMATĂ Sortarea va avea loc prin reprezentarea link-ului; dacă steag-ul este dezactivat, atunci link-urile sunt sortate după vechimea adresei link-ului din memorie.

Sintaxă: FILTREAZĂ DUPĂ<НаименованиеПоля>COMANDĂ AUTOMATĂ

Exemplu de utilizare:

Query.Text = "SELECT | Resturi libere. Nomenclator AS Nomenclator, | Resturi libere. Depozit AS Depozit, | Resturi libere. În stoc rămas | DIN | Înregistrați acumulări. Resturi libere. Rămase AS Resturi libere rămase BY | | Nomenclatură | RECUPERAREA COMANDĂ AUTOMATĂ”;

10. Design GROUP BY- folosit pentru gruparea șirurilor de interogări după anumite câmpuri. Câmpurile numerice trebuie utilizate cu orice funcție de agregare.

Sintaxă: A SE GRUPA CU<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Exemplu de utilizare:

Query.text = "SELECT | ProductsInWarehouses.Nomenclature as Nomenclature, | ProductsInwarehouses.warehouse, | sum (GoodSinwarehouses.Instock) ca instank | de la | RegisterAccumulations.ProductsinwareHouses as ProductSinwarehouses | ;

11. Design AVÂND- vă permite să aplicați o funcție agregată unei condiții de selecție a datelor, similară construcției WHERE.

Sintaxă: AVÂND<агрегатная функция с условием>

Exemplu de utilizare:

Query.Text = //selectează înregistrările grupate în care câmpul InStock este mai mare de 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.Stocks AS | ItemsInStocks AS | GROUP BY | ProductsInWarehouses.Nomenclature, | ProductsInWarehouses.Warehouse | | DISPONIBIL | SUMĂ(ProductsInWarehouses.InStock) > 3" ;

12. Constructii INDEX BY- folosit pentru indexarea câmpului de interogare. O interogare cu indexare durează mai mult, dar accelerează căutarea prin câmpurile indexate. Poate fi folosit doar în mesele virtuale.

Sintaxă: INDEX PRIN<Поле1, ... , ПолеN>

Exemplu de utilizare:

Query.Text = „SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

13. Design UNDE- vă permite să impuneți o condiție oricăror câmpuri de selecție. Rezultatul va include numai înregistrările care îndeplinesc condiția.

Sintaxă: UNDE<Условие1 ОператорЛогСоединения УсловиеN>

Exemplu de utilizare:

Query.Text = //toate înregistrările cu CompensationRemaining sunt selectate<>0 și //AmountForCalcCompRemaining > 100 „SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |Place Data Compensation.RPORemains.RPORemains.Accumulation.RPA | |UNDE |CompensationRPORremaining.CompensationRemaining<>0 | Și CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. Design REZULTATE... GENERAL- folosit pentru calcularea totalurilor; proiectul specifică câmpurile prin care vor fi calculate totalurile și funcțiile de agregare aplicate câmpurilor totale. Când se folosesc totaluri pentru fiecare câmp după construcția TOTAL, datele sunt grupate. Există o construcție GENERAL opțională; utilizarea sa oferă și grupări suplimentare. Veți vedea un exemplu de rezultat al cererii mai jos.

Sintaxă: REZULTATE<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>DE<ОБЩИЕ> <Поле1, ... , ПолеN>

Exemplu de utilizare:

Solicitare.Text = "SELECTARE | Calcule. Contract de contrapartidă. Tip de acord AS Tip de contract, | Calcule. Contract de contraparte AS Contract, | Calcule. Contraparte, | Calcule. Valoarea soldului decontării reciproce AS Sold | FROM | Registrul de acumulări. Mutual Decontare CU Contrapărțile. Solduri AS Calcule | TOTAL | SUMA (Sold) |Software | GENERAL, | Tip de acord";

Figura conturează grupările care s-au format în timpul executării cererii, cea de sus se referă la secțiunea GENERAL, iar cea de-a doua la câmpul Counterparty Agreement Agreement Type.

Directoarele 1C sunt un obiect specializat de arbore de metadate care servește la stocarea informațiilor statice de referință. De exemplu, în configurațiile tipice puteți vedea următoarele vizualizări: , Nomenclatură, Angajați, Mije fixe etc. Informațiile din directoare, de regulă, nu se schimbă des. Directoarele sunt utilizate ulterior în aproape toate obiectele contabile ca secțiune contabilă sau informații de referință.

Mai jos ne vom uita la configurarea și proiectarea unui director din configurator folosind directorul „Nomenclatură” ca exemplu.

Tabă de bază

Fila „De bază” specifică numele, sinonimul, reprezentarea obiectului și descrierea scopului.

Fila „Ierarhia directorului”.

Aici se stabilește ierarhia directorului.

Ierarhia din 1C 8.3 este de două tipuri - „ grupuri și elemente" Și " elemente". Diferă prin aceea că, în primul caz, doar un folder (grup) poate fi părinte (dosar), iar în al doilea caz, un element poate fi și părinte.

„Place groups on top” - steag este responsabil pentru afișarea grupurilor sub formă de listă.

De asemenea, în setări puteți limita numărul de grupuri din ierarhia directorului folosind setarea corespunzătoare.

Fila Proprietari

Un director poate fi subordonat altui director. Din punctul de vedere al configurării 1C 8.3, aceasta înseamnă că atributul „Owner” devine obligatoriu pentru elementul subordonat. Un exemplu de astfel de conexiune între directoare în configurații standard „Nomenclatură - Unități de măsură”, „Contrapărți - Contracte ale contractorilor”.

Proprietarul directorului poate fi, de asemenea, următoarele obiecte de metadate: , .

Fila Date

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

Cea mai importantă filă din punctul de vedere al unui programator. Conține detaliile directorului.

Directorul are un set de detalii standard care nu sunt editate de programatorul 1C 8.2; o listă a acestora poate fi văzută făcând clic pe butonul „Detalii standard”:

Mă voi opri asupra fiecăruia mai detaliat:

  • Acest grup— un atribut de tip boolean, care indică dacă este un grup sau un element. Disponibil numai în directorul ierarhic. Notă, valoarea acestui atribut nu poate fi modificată în 1C: modul Enterprise.
  • Cod— recuzită, tip număr sau șir (de obicei un șir). Un număr atribuit automat de către sistem. De obicei calculat ca (codul anterior + 1). Recomand să utilizați tipul șir, deoarece sortarea valorilor numerice nu funcționează așa cum era de așteptat. Poate fi folosit ca prezentare de director într-o listă și în câmpurile de intrare. Folosit de obicei pentru a căuta un element la introducerea unui șir. Dacă trebuie să eliminați câmpul Cod, introduceți zero în lungimea liniei.
  • Nume— detalii obligatorii, tip șir. Lungimea maximă a rândului este de 150 de caractere. Poate fi folosit ca prezentare de director într-o listă și în câmpurile de intrare. Folosit de obicei pentru a căuta un element la introducerea unui șir. Dacă trebuie să eliminați câmpul Nume, introduceți zero în lungimea liniei.
  • Mamă— un atribut de tip DirectoryLink.<ИмяТекущегоСправочника>. Disponibil numai în directorul ierarhic. Indică părintele superior din ierarhie. Dacă elementul sau grupul se află la rădăcina directorului, este specificată valoarea Directory.<ИмяТекущегоСправочника>.EmptyLink.
  • Proprietar— link la elementul proprietar al elementului (grupului) directorului curent. Disponibil numai în directorul subordonat 1C.
  • Ștergerea steagului— recuzită cu tip Boolean. Responsabil pentru afișarea „marcajului de ștergere” în sistem. Un element marcat pentru ștergere este considerat inutilizabil, dar mișcările documentelor vechi pot rămâne pe el.
  • Legătură— câmp de tip șir. Acest atribut stochează un identificator unic de obiect - GUID. Ceea ce vedem în sistem într-un afișaj vizual numit „link” este doar o reprezentare a obiectului. Nu poate fi schimbat.
  • Predefinit— tip boolean, afișează dacă elementul este predefinit, despre asta mai târziu. Nu poate fi schimbat.

Fila „Date” indică și reprezentarea directorului în sistem; înainte de versiunea 8.2.16, reprezentarea putea fi doar Cod sau Nume. În versiunile recente ale platformei (începând de la 8.3), vizualizarea poate fi descrisă independent în modulul manager folosind handlerul „ViewReceivingProcessing”.

Fila de numerotare

Aici puteți specifica setările directorului privind numerotarea. Se recomandă utilizarea numărării automate. Controlul unicității este un steag care ajută, dacă este necesar, ca codul să fie unic. Dacă, cu steagul setat, încercați să scrieți un element de director cu un cod neunic, în 1C veți primi mesajul „Codul directorului a devenit neunic”.

Seria de coduri - determină modul de numerotare a directorului; puteți introduce numerotarea directorului după proprietar. De exemplu, contrapartea „Horns and Hooves” va avea propria numerotare a contractelor - „1, 2, 3”, etc.

Fila Formulare

Formularele pentru director sunt descrise aici. Dacă configurația este lansată atât în ​​modul normal, cât și în modul gestionat, atunci vor exista două file cu formulare în mod implicit: „principal” și „avansat” - diferite pentru aplicațiile normale și gestionate.

Această pagină are o caracteristică importantă a directorului - „“. Aceasta este o funcție foarte convenabilă a 1C 8, care vă permite, atunci când completați datele în câmpul de intrare, să nu intrați în director, ci să introduceți numele, codul etc. și selectați elementul dorit din lista verticală. Arata cam asa:

Altele Tab

Pe filă puteți obține acces rapid la modulele principale ale directorului - modulul obiect și modulul manager.

De asemenea, puteți defini o listă de elemente de director predefinite pe pagină. Acestea sunt elemente care nu pot fi șterse în modul Enterprise. Elementele predefinite pot fi accesate direct în configurator după nume, de exemplu: Directories.Nomenclature.Service.

Această filă determină și modul de blocare - automat sau controlat. Utilizarea căutării full-text, precum și a informațiilor de referință despre director, disponibile în 1C: modul Enterprise.

Limbajul de interogare din 1C 8 este un analog simplificat al binecunoscutului „limbaj de programare structurat” (cum este numit mai des, SQL). Dar în 1C este folosit doar pentru citirea datelor; un model de date obiect este folosit pentru a schimba datele.

O altă diferență interesantă este sintaxa rusă. Deși de fapt poți folosi construcții în limba engleză.

Exemplu de cerere:

ALEGE
Banci.Nume,
Bănci.CorrAccount
DIN
Director.Bănci CUM Bănci

Această solicitare ne va permite să vedem informații despre numele și contul de corespondent al tuturor băncilor existente în baza de date.

Limbajul de interogare este cel mai simplu și mai eficient mod de a obține informații. După cum se poate vedea din exemplul de mai sus, în limbajul de interogare trebuie să utilizați nume de metadate (aceasta este o listă de obiecte de sistem care alcătuiesc configurația, adică directoare, documente, registre etc.).

Descrierea constructelor limbajului de interogare

Structura de interogare

Pentru a obține date, este suficient să folosiți construcțiile „SELECT” și „FROM”. Cea mai simplă cerere arată astfel:

SELECT * FROM Directoare.Nomenclatură

Unde „*” înseamnă selectarea tuturor câmpurilor din tabel, iar Directories.Nomenclature – numele tabelului din baza de date.

Să ne uităm la un exemplu mai complex și general:

ALEGE
<ИмяПоля1>CUM<ПредставлениеПоля1>,
Sumă(<ИмяПоля2>) CUM<ПредставлениеПоля2>
DIN
<ИмяТаблицы1>CUM<ПредставлениеТаблицы1>
<ТипСоединения>COMPUS<ИмяТаблицы2>CUM<ПредставлениеТаблицы2>
DE<УсловиеСоединениеТаблиц>

UNDE
<УсловиеОтбораДанных>

A SE GRUPA CU
<ИмяПоля1>

FILTREAZĂ DUPĂ
<ИмяПоля1>

REZULTATE
<ИмяПоля2>
DE
<ИмяПоля1>

În această interogare, selectăm datele câmpurilor „FieldName1” și „FieldName1” din tabelele „TableName1” și „TableName”, atribuim sinonime câmpurilor folosind operatorul „HOW” și le conectăm folosind o anumită condiție „TableConnectionCondition”. ”.

Din datele primite, selectăm doar datele care îndeplinesc condiția din „UNDE” „Condiția de selecție a datelor”. În continuare, grupăm solicitarea după câmpul „Nume câmp 1”, însumând „Nume câmp 2”. Creăm totaluri pentru câmp „Field Name1” și câmpul final „Field Name2”.

Ultimul pas este sortarea cererii folosind constructul ORDER BY.

Proiecte generale

Să ne uităm la structurile generale ale limbajului de interogare 1C 8.2.

PRIMULn

Folosind acest operator, puteți obține numărul n de primele înregistrări. Ordinea înregistrărilor este determinată de ordinea în interogare.

SELECTAȚI PRIMILE 100
Banci.Nume,
Bănci.Cod AS BIC
DIN
Director.Bănci CUM Bănci
FILTREAZĂ DUPĂ
Bănci.Nume

Solicitarea va primi primele 100 de intrări din directorul „Bănci”, sortate alfabetic.

PERMIS

Acest design este relevant pentru lucrul cu mecanismul. Esența mecanismului este de a restricționa citirea (și alte acțiuni) la utilizatori pentru anumite înregistrări dintr-un tabel de bază de date, și nu tabelul în ansamblu.

Dacă un utilizator încearcă să folosească o interogare pentru a citi înregistrările care îi sunt inaccesibile, va primi un mesaj de eroare. Pentru a evita acest lucru, ar trebui să utilizați construcția „PERMIS”, adică cererea va citi numai înregistrările care îi sunt permise.

SELECTARE PERMIS
Depozitul de informații suplimentare. Link
DIN
Director.Documentul de informații suplimentare

VARIAT

Utilizarea „DIFERENT” va împiedica introducerea liniilor duplicate în rezultatul interogării 1C. Dublarea înseamnă că toate câmpurile de solicitare se potrivesc.

SELECTAȚI PRIMILE 100
Banci.Nume,
Bănci.Cod AS BIC
DIN
Director.Bănci CUM Bănci

EmptyTable

Această construcție este folosită foarte rar pentru a combina interogări. Când vă alăturați, poate fi necesar să specificați un tabel imbricat gol într-unul dintre tabele. Operatorul „EmptyTable” este potrivit pentru asta.

Exemplu din 1C 8 ajutor:

SELECT Link.Number, EMPTY TABLE.(Nr., Articol, Cantitate) AS Compoziție
DIN Document.Factură de cheltuieli
COMBINA TOTUL
SELECTează Link.Number, Conținut.(LineNumber, Product, Quantity)
FROM Document.Invoice Document.Invoice.Composition.*

ISNULL

O caracteristică foarte utilă care vă permite să evitați multe greșeli. YesNULL() vă permite să înlocuiți valoarea NULL cu cea dorită. Foarte des folosit pentru a verifica prezența unei valori în tabelele unite, de exemplu:

ALEGE
Nomenclatură Ref. Link,
IsNULL(Articol rămas.Cantitate rămasă,0) AS Cantitate rămasă
DIN


Poate fi folosit în alte moduri. De exemplu, dacă pentru fiecare rând nu se știe în ce tabel există valoarea:

ISNULL(Data primirii facturii, Data emiterii facturii)

CUM este un operator care ne permite să atribuim un nume (sinonim) unui tabel sau câmp. Am văzut un exemplu de utilizare mai sus.

Aceste construcții sunt foarte asemănătoare - vă permit să obțineți o reprezentare în șir a valorii dorite. Singura diferență este că REPRESENTATION convertește orice valoare într-un tip șir, în timp ce REPRESENTATIONREF convertește doar valorile de referință. REPREZENTAREA REFERINȚEI este recomandată a fi utilizată în interogările sistemului de compoziție a datelor pentru optimizare, cu excepția cazului în care, desigur, câmpul de date de referință este planificat să fie utilizat în selecții.

ALEGE
Vizualizare(Link), //șir, de exemplu „Raportul anticipat nr. 123 din 10.10.2015
Vizualizare(DeletionMark) AS DeleteMarkText, //șir, „Da” sau „Nu”
ViewReferences(DeletionMark) AS DeleteMarkBoolean //boolean, True sau False
DIN
Document.Raport de avans

EXPRES

Express vă permite să convertiți valorile câmpurilor în tipul de date dorit. Puteți converti o valoare fie într-un tip primitiv, fie într-un tip de referință.

Express pentru un tip de referință este utilizat pentru a restricționa tipurile de date solicitate în câmpuri de tip complex, adesea folosite pentru a optimiza performanța sistemului. Exemplu:

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items).Tip de activitatePentruTaxAccountingCosts

Pentru tipurile primitive, această funcție este adesea folosită pentru a limita numărul de caractere în câmpuri de lungime nelimitată (cu astfel de câmpuri nu pot fi comparate). Pentru a evita eroarea " Parametri nevalidi în operația de comparare. Nu poți compara câmpuri
lungime nelimitată și câmpuri de tipuri incompatibile
", trebuie să exprimați astfel de câmpuri după cum urmează:

EXPRESS(Comentează AS Line(150))

DATA DIFERENTATA

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

Un exemplu de utilizare a IS NULL într-o solicitare 1C:

ALEGE DIN
Ref
CONEXIUNEA STÂNGA ÎnregistrareAcumulări.ProduseÎnDepozite.Rămas ca produs rămas
Software NomenclatureRef.Link = Sold GoodsCommitteesRemains.Nomenclature
WHERE NU Produsele rămase Cantitatea rămasă ESTE NULL

Tipul de date dintr-o interogare poate fi determinat folosind funcțiile TYPE() și VALUETYPE() sau prin utilizarea operatorului logic REFERENCE. Cele două funcții sunt similare.

Valori predefinite

Pe lângă utilizarea parametrilor trecuți în interogări în limbajul de interogare 1C, puteți utiliza valori predefinite sau . De exemplu, transferuri, directoare predefinite, planuri de conturi și așa mai departe. Pentru aceasta, se folosește constructul „Valoare()”.

Exemplu de utilizare:

WHERE Nomenclature.Type of Nomenclature = Value(Directory.Types of Nomenclature.Product)

WHERE Counterparties.Type of Contact Information = Value(Enumeration.Types of Contact Information.Phone)

WHERE Soldurile contului.Cont contabil = Valoare(Planul de conturi.Profit.ProfitsLoss)

Conexiuni

Există 4 tipuri de conexiuni: STÂNGA, DREAPTA, COMPLET, INTERN.

CONEXIUNEA STÂNGA și DREAPTA

Îmbinările sunt folosite pentru a lega două tabele pe baza unei anumite condiții. Caracteristică când LEFT JOIN este că luăm primul tabel specificat în întregime și legăm condiționat al doilea tabel. Câmpurile celui de-al doilea tabel care nu au putut fi legate de condiție sunt completate cu valoarea NUL.

De exemplu:

Va returna întregul tabel de Contrapartide și va completa câmpul „Bancă” numai în acele locuri în care va fi îndeplinită condiția „Contrapărți.Nume = Bănci.Nume”. Dacă condiția nu este îndeplinită, câmpul Bank va fi setat la NUL.

RIGHT JOIN în limba 1C absolut asemănătoare Conexiune LEFT, cu excepția unei diferențe - în DREPTUL DE CONECTARE Masa „principală” este a doua, nu prima.

CONEXIUNE COMPLETA

CONEXIUNE COMPLETA diferă de stânga și dreapta prin faptul că afișează toate înregistrările din două tabele și le conectează numai pe cele pe care le poate conecta în funcție de condiție.

De exemplu:

DIN

CONEXIUNE COMPLETA
Director.Bănci CUM Bănci

DE

Limbajul de interogare va returna ambele tabele complet numai dacă este îndeplinită condiția de a se alătura înregistrărilor. Spre deosebire de o îmbinare stânga/dreapta, este posibil ca NULL să apară în două câmpuri.

INNER JOIN

INNER JOIN diferă de cel complet prin faptul că afișează numai acele înregistrări care ar putea fi conectate în funcție de o anumită condiție.

De exemplu:

DIN
Director.Contrapărți AS Clienți

INNER JOIN
Director.Bănci CUM Bănci

DE
Clients.Name = Banks.Name

Această interogare va returna numai rândurile în care banca și contrapartea au același nume.

Asociațiile

Construcțiile JOIN și JOIN ALL combină două rezultate într-unul singur. Acestea. rezultatul efectuării a două va fi „contopit” într-unul, comun.

Adică sistemul funcționează exact la fel ca și cele obișnuite, doar pentru un tabel temporar.

Cum se utilizează INDEX BY

Cu toate acestea, un punct trebuie luat în considerare. Construirea unui index pe un tabel temporar necesită, de asemenea, timp. Prin urmare, este recomandabil să utilizați construcția „ ” numai dacă se știe cu siguranță că vor exista mai mult de 1-2 înregistrări în tabelul temporar. În caz contrar, efectul poate fi invers - performanța câmpurilor indexate nu compensează timpul necesar pentru a construi indexul.

ALEGE
Rate valutare Ultima secțiune transversală. Moneda AS Moneda,
Rate valutare Ultima secțiune transversală.
Ratele valutare PUT
DIN
Informații Registrul.Currency Rates.Last Slice(&Period,) AS Currency RatesLast Slice
INDEX PRIN
Valută
;
ALEGE
Nomenclatura prețurilor.Nomenclatura,
PreturiNomenclaturi.Pret,
PrețuriNomenclaturi.Moneda,
Rate valutare.Rate
DIN
Registrul de informații.Nomenclatura prețurilor.Ultima felie(&perioada,
Nomenclatură B (&Nomenclatură) AND PriceType = &PriceType) AS PriceNomenclature
LEFT JOIN Currency Rates AS Currency Rates
Software PricesNomenclatures.Currency = Currency Rates.Currency

Gruparea

Limbajul de interogare 1C vă permite să utilizați funcții de agregare speciale atunci când grupați rezultatele interogării. Gruparea poate fi folosită și fără funcții de agregare pentru a „elimina” duplicatele.

Există următoarele funcții:

Cantitate, Cantitate, Număr de diferite, Maxim, Minim, Medie.

Exemplul #1:

ALEGE
Vânzări de bunuri și bunuri de servicii. Nomenclatură,
SUM(Vânzări de mărfuriServiciiBunuri.Cantitate) AS Cantitate,
SUM(Vânzări de mărfuriServiciiBunuri.Suma) AS Sumă
DIN

A SE GRUPA CU
Vânzări de Bunuri și Servicii Bunuri.Nomenclator

Solicitarea primește toate rândurile cu mărfuri și le rezumă pe cantitate și sume pe articol.

Exemplul nr. 2

ALEGE
Codul băncilor,
CANTITATE(Bănci diferite.Link) CA Număr de duplicate
DIN
Director.Bănci CUM Bănci
A SE GRUPA CU
Bănci.Cod

Acest exemplu va afișa o listă de BIC-uri în directorul „Bănci” și va arăta câte duplicate există pentru fiecare dintre ele.

Rezultate

Rezultatele sunt o modalitate de a obține date dintr-un sistem cu o structură ierarhică. Funcțiile de agregare pot fi utilizate pentru câmpurile de rezumat, la fel ca și pentru grupări.

Una dintre cele mai populare moduri de a utiliza rezultatele în practică este anularea în loturi a mărfurilor.

ALEGE




DIN
Document Vânzări de bunuri și servicii Bunuri CUM se vinde bunuri și servicii Bunuri
FILTREAZĂ DUPĂ

REZULTATE
SUM(Cantitate),
SUM(Suma)
DE
Nomenclatură

Rezultatul interogării va fi următorul ierarhic:

Rezultate generale

Dacă trebuie să obțineți totaluri pentru toate „totalurile”, utilizați operatorul „GENERAL”.

ALEGE
Vânzări de bunuri și bunuri de servicii. Nomenclatura AS Nomenclatura,
Vânzări de bunuri și bunuri de servicii. Link AS Document,
Vânzări de bunuri și bunuri de servicii Cantitate AS Cantitate,
Vânzări de bunuri și servicii Bunuri.Sumă AS Sumă
DIN
Document Vânzări de bunuri și servicii Bunuri CUM se vinde bunuri și servicii Bunuri
FILTREAZĂ DUPĂ
Vânzări de bunuri și servicii Bunuri. Link. Data
REZULTATE
SUM(Cantitate),
SUM(Suma)
DE
SUNT COMUNE,
Nomenclatură

Ca urmare a executării cererii, obținem următorul rezultat:

În care 1 nivel de grupare este agregarea tuturor câmpurilor necesare.

Aranjare

Operatorul ORDER BY este folosit pentru a sorta rezultatul unei interogări.

Sortarea pentru tipurile primitive (șir, număr, boolean) urmează regulile obișnuite. Pentru câmpurile de tip referință, sortarea are loc prin reprezentarea internă a legăturii (identificatorul unic), mai degrabă decât prin cod sau prin reprezentarea referințelor.

ALEGE

DIN
Director.Nomenclatura AS Nomenclatura
FILTREAZĂ DUPĂ
Nume

Solicitarea va afișa o listă de nume în directorul nomenclatorului, sortate alfabetic.

Comanda automată

Rezultatul unei interogări fără sortare este un set de rânduri prezentat haotic. Dezvoltatorii platformei 1C nu garantează că rândurile vor fi afișate în aceeași secvență atunci când execută interogări identice.

Dacă trebuie să afișați înregistrările tabelului într-o ordine constantă, trebuie să utilizați constructul Auto-Order.

ALEGE
Nomenclatură.Nume AS Nume
DIN
Director.Nomenclatura AS Nomenclatura
COMANDĂ AUTOMATĂ

Mesele virtuale

Tabelele virtuale din 1C sunt o caracteristică unică a limbajului de interogare 1C care nu se găsește în alte sintaxe similare. Un tabel virtual este o modalitate rapidă de a obține informații de profil din registre.

Fiecare tip de registru are propriul set de tabele virtuale, care pot diferi în funcție de setările registrului.

  • tăierea primului;
  • tăierea acestuia din urmă.
  • resturi;
  • revoluții;
  • solduri si cifra de afaceri.
  • mișcări din subconto;
  • revoluții;
  • viteza Dt Kt;
  • resturi;
  • solduri si cifra de afaceri
  • subconto.
  • baza;
  • date grafice;
  • perioada efectivă de valabilitate.

Pentru dezvoltatorul de soluții, datele sunt preluate dintr-un singur tabel (virtual), dar de fapt platforma 1C preia din mai multe tabele, transformându-le în forma necesară.

ALEGE
Produse din depozite resturi si cifra de afaceri.
ProductsIn WarehousesRemainingAndTurnover.QuantityInitialRemaining,
ProductsIn WarehousesRemainsAndTurnover.QuantityTurnover,
MărfuriÎnDepoziteRemainsAndTurnover.CantityIncoming,
MărfuriÎnDepoziteRămăși și Cifra de afaceri.CantitateConsum,
ProductsIn WarehousesRemainingsAndTurnover.CantityFinalRemaining
DIN
ÎnregistrareAcumulări.MărfuriÎnDepozite.Rămăși și Cifra de afaceri CA Mărfuri ÎnDepoziteRămăși și Cifra de afaceri

Această interogare vă permite să preluați rapid o cantitate mare de date.

Opțiuni de masă virtuală

Un aspect foarte important al lucrului cu tabele virtuale este utilizarea parametrilor. Parametrii tabelului virtual sunt parametri specializați pentru selecție și configurare.

Pentru astfel de tabele, se consideră incorectă utilizarea selecției în construcția „UNDE”. Pe lângă faptul că interogarea devine suboptimă, este posibil să primiți date incorecte.

Un exemplu de utilizare a acestor parametri:

Registrul de acumulări, mărfuri în depozite, solduri și cifre de afaceri (& Începutul perioadei, & Sfârșitul perioadei, lunii, mișcările și limitele perioadei, Nomenclator = & Nomenclator obligatoriu)

Algoritm pentru tabele virtuale

De exemplu, cel mai folosit tabel virtual de tip „Rămășițe” stochează date din două tabele fizice – solduri și mișcări.

Când se utilizează o masă virtuală, sistemul efectuează următoarele manipulări:

  1. Obținem cea mai apropiată valoare calculată în termeni de dată și măsurători în tabelul cu totaluri.
  2. „Adăugăm” suma din tabelul de mișcări la suma din tabelul cu totaluri.


Astfel de acțiuni simple pot îmbunătăți semnificativ performanța sistemului în ansamblu.

Folosind Generatorul de interogări

Generator de interogări– un instrument încorporat în sistemul 1C Enterprise care facilitează foarte mult dezvoltarea interogărilor bazei de date.

Generatorul de interogări are o interfață destul de simplă, intuitivă. Cu toate acestea, să ne uităm la utilizarea constructorului de interogări mai detaliat.

Constructorul de text de interogare este lansat din meniul contextual (butonul dreapta al mouse-ului) în locul dorit din codul programului.

Descrierea constructorului cererii 1C

Să ne uităm la fiecare filă a designerului mai detaliat. Excepție este fila Builder, care este un subiect pentru o altă discuție.

fila Tabele și câmpuri

Această filă specifică sursa de date și câmpurile care trebuie afișate în raport. În esență, aici sunt descrise construcțiile SELECT.. FROM.

Sursa poate fi un tabel fizic de bază de date, un tabel de registru virtual, tabele temporare, interogări imbricate etc.

În meniul contextual al tabelelor virtuale, puteți seta parametrii tabelului virtual:

fila Conexiuni

Fila este folosită pentru a descrie conexiunile mai multor tabele și creează construcții cu cuvântul CONEXIUNE.

Fila Grupare

În această filă, sistemul vă permite să grupați și să rezumați câmpurile obligatorii ale rezultatului tabelului. Descrie utilizarea construcțiilor GROUP BY, SUM, MINIM, MEDIE, MAXIMUM, CANTITATE, NUMĂR DE DIFERENȚI.

fila Condiții

Raspunde de tot ce intra in textul de solicitare dupa constructia WHERE, adica de toate conditiile impuse datelor primite.

Filă avansată

Tab În plus plin cu tot felul de parametri care sunt foarte importanți. Să ne uităm la fiecare dintre proprietăți.

Gruparea Selectarea înregistrărilor:

  • Primul N– un parametru care returnează doar N înregistrări la interogare (PRIMUL operator)
  • Fără duplicate– asigură unicitatea înregistrărilor primite (operator DIFERIT)
  • Permis– vă permite să selectați doar acele înregistrări pe care sistemul vă permite să le selectați ținând cont (construcție PERMISĂ)

Gruparea Tip de solicitare determină ce tip de cerere va fi: regăsirea datelor, crearea unui tabel temporar sau distrugerea unui tabel temporar.

Mai jos este un steag Blocați datele primite pentru modificare ulterioară. Vă permite să activați capacitatea de a seta blocarea datelor, ceea ce asigură siguranța datelor din momentul în care sunt citite și până când sunt schimbate (relevant doar pentru modul de blocare automată, design PENTRU SCHIMBARE).

Fila Joins/Aliases

În această filă a designerului de interogări, puteți seta capacitatea de a uni diferite tabele și alias-uri (constructia CUM). Tabelele sunt indicate în partea stângă. Dacă setați steagurile vizavi de masă, se va folosi construcția UNITE, în caz contrar - UNITE ALL (diferențe între cele două metode). În partea dreaptă este indicată corespondența câmpurilor din diferite tabele; dacă corespondența nu este specificată, interogarea va returna NULL.

fila Comanda

Aceasta specifică ordinea în care sunt sortate valorile (ORDER BY) - descendent (DESC) sau crescător (ASC).

Există și un steag interesant - Comanda automată(in cerere - COMANDA AUTO). În mod implicit, sistemul 1C afișează datele într-o ordine „haotică”. Dacă setați acest indicator, sistemul va sorta datele după datele interne.

Fila Lot de interogări

În fila Designer de interogări, puteți crea altele noi și, de asemenea, le puteți utiliza ca navigare. În textul cererii, pachetele sunt separate prin simbolul „;” (virgulă).

Butonul „Interogare” din designerul de interogări

În colțul din stânga jos al designerului de solicitări există un buton Solicitare, cu ajutorul căruia puteți vizualiza textul solicitării în orice moment:

În această fereastră, puteți face ajustări la cerere și o puteți executa.


Folosind consola de interogări

Consola de interogări este o modalitate simplă și convenabilă de a depana interogări complexe și de a obține rapid informații. În acest articol, voi încerca să descriu cum să utilizați Query Console și să ofer un link pentru a descărca Query Console.

Să aruncăm o privire mai atentă la acest instrument.

Descărcați consola de interogări 1C

În primul rând, pentru a începe să lucrați cu consola de interogări, trebuie să o descărcați de undeva. Tratamentele sunt de obicei împărțite în două tipuri - forme controlate și cele convenționale (sau, uneori, sunt numite 8.1 și 8.2/8.3).

Am încercat să combin aceste două vederi într-o singură prelucrare - forma dorită se deschide în modul de operare dorit (în modul gestionat, consola funcționează doar în modul gros).

Descrierea consolei de interogări 1C

Să începem să ne uităm la consola de interogări cu o descriere a panoului principal de procesare:

În antetul consolei de interogări, puteți vedea timpul de execuție al ultimei interogări cu precizie în milisecunde, acest lucru vă permite să comparați diferite modele în ceea ce privește performanța.

Primul grup de butoane din bara de comandă este responsabil pentru salvarea interogărilor curente într-un fișier extern. Acest lucru este foarte convenabil; puteți reveni oricând la scrierea unei cereri complexe. Sau, de exemplu, stocați o listă de exemple tipice ale anumitor modele.

În stânga, în câmpul „Solicitare”, puteți crea cereri noi și le puteți salva într-o structură arborescentă. Al doilea grup de butoane este responsabil de gestionarea listei de solicitări. Folosind-o puteți crea, copia, șterge, muta o solicitare.

  • A executacerere– execuție simplă și rezultate
  • Executați pachetul– vă permite să vizualizați toate interogările intermediare într-un lot de interogări
  • Vizualizarea tabelelor temporare– vă permite să vedeți rezultatele pe care interogările temporare le returnează pe un tabel

Parametri de solicitare:

Vă permite să setați parametrii actuali pentru cerere.

În fereastra parametrilor de interogare, următoarele sunt interesante:

  • Buton Ia de la cerere găsește automat toți parametrii din cerere pentru confortul dezvoltatorului.
  • Steag Parametri comuni pentru toate cererile– la instalare, procesarea acestuia nu șterge parametrii la trecerea de la cerere la cerere în lista generală de solicitări.

Setați un parametru cu o listă de valori Este foarte simplu, doar când alegeți o valoare a parametrului, faceți clic pe butonul de ștergere a valorii (cruce), sistemul vă va solicita să selectați tipul de date, unde trebuie să selectați „Lista de valori”:

De asemenea, în panoul de sus există un buton pentru a apela setările consolei de interogare:

Aici puteți specifica parametrii pentru salvarea automată a interogărilor și parametrii de execuție a interogărilor.

Textul solicitării este introdus în câmpul de cerere de consolă. Acest lucru se poate face prin simpla tastare a unui test de interogare sau apelând un instrument special - designerul de interogări.

Designerul de interogări 1C 8 este apelat din meniul contextual (butonul dreapta al mouse-ului) când faceți clic pe câmpul de introducere:

De asemenea, în acest meniu există funcții utile precum ștergerea sau adăugarea de întreruperi de linie (“|”) la cerere sau primirea codului de solicitare în această formă convenabilă:

Solicitare = Solicitare nouă;
Solicitare.Text = ”
|SELECT
| Monede.Link
|DIN
| Director.Monede AS Monede”;
RequestResult = Request.Execute();

Câmpul inferior al consolei de interogări afișează câmpul rezultat al interogării, motiv pentru care a fost creată această procesare:



De asemenea, consola de interogări, pe lângă listă, poate afișa date sub formă de arbore - pentru interogările care conțin totaluri.

Optimizarea interogărilor

Unul dintre cele mai importante puncte în creșterea productivității întreprinderii 1C 8.3 este optimizarecereri. Acest punct este, de asemenea, foarte important când trecerea certificării. Mai jos vom vorbi despre motivele tipice pentru performanța interogării neoptimale și despre metodele de optimizare.

Selecții într-un tabel virtual folosind constructul WHERE

Este necesar să se aplice filtre la detaliile tabelului virtual numai prin parametrii VT. În niciun caz nu trebuie să utilizați constructul WHERE pentru selecție într-un tabel virtual; aceasta este o greșeală gravă din punct de vedere al optimizării. În cazul selecției folosind WHERE, de fapt, sistemul va primi TOATE înregistrările și abia apoi le va selecta pe cele necesare.

DREAPTA:

ALEGE

DIN
Registrul de acumulări, decontări reciproce cu participanții organizațiilor, solduri (
,
Organization = &Organization
AND Individ = &Individual) CUM Decontări reciproce cu participanții organizațiilor Solduri

GRESIT:

ALEGE
Decontari reciproce cu Participantii Organizatiilor Solduri Suma Sold
DIN
Registrul de acumulări Decontări reciproce cu participanții organizațiilor Solduri (,) CUM Decontări reciproce cu participanții organizațiilor Solduri
UNDE
Decontări reciproce cu participanții la solduri organizații Organizație = & Organizație
ȘI Decontări reciproce cu participanții organizațiilor Solduri.Individ = &Individ

Obținerea valorii unui câmp de tip complex folosind un punct

La primirea datelor de tip complex într-o interogare printr-un punct, sistemul se conectează cu o îmbinare la stânga exact atâtea tabele câte tipuri sunt posibile în domeniul tipului complex.

De exemplu, este extrem de nedorit ca optimizarea să acceseze câmpul de înregistrare a registrului – registrator. Registratorul are un tip de date compus, printre care se numără toate tipurile de documente posibile care pot scrie date în registru.

GRESIT:

ALEGE
Record Set.Recorder.Date,
RecordSet.Quantity
DIN
ÎnregistrareAcumulări.ProduseOrganizații AS SetRecords

Adică, de fapt, o astfel de interogare va accesa nu un tabel, ci 22 de tabele de baze de date (acest registru are 21 de tipuri de registrator).

DREAPTA:

ALEGE
ALEGERE
WHEN ProductsOrg.Registrar LINK Document.Vânzări de produse și servicii
THEN EXPRESS(ProductsOrganization.Registrar AS Document.Vânzări de bunuriServicii).Data
WHEN GoodsOrg.Registrar LINK Document.Receipt of GoodsServices
THEN EXPRESS(GoodsOrg.Registrar AS Document.Reception of GoodsServices).Data
TERMINAT CA DATA,
ProduseOrg.Cantitate
DIN
ÎnregistrareAcumulări.ProduseOrganizații AS ProductsOrganization

Sau a doua opțiune este să adăugați astfel de informații la detalii, de exemplu, în cazul nostru, adăugarea unei date.

DREAPTA:

ALEGE
ProductsOrganizations.Date,
ProduseOrganizaţii.Cantitate
DIN
Registrul Acumulărilor Bunuri ale Organizațiilor AS Bunuri ale Organizațiilor

Subinterogări într-o condiție de alăturare

Pentru optimizare, este inacceptabil să se utilizeze subinterogări în condiții de îmbinare; acest lucru încetinește semnificativ interogarea. Este recomandabil să folosiți VT în astfel de cazuri. Pentru a vă conecta, trebuie să utilizați numai metadate și obiecte VT, indexându-le în prealabil după câmpurile de conexiune.

GRESIT:

ALEGE…

LEFT JOIN (
SELECTARE FROM RegisterInformation.Limits
UNDE …
A SE GRUPA CU...
) DE …

DREAPTA:

ALEGE…
PUT Limite
DIN Registrul de informații.Limite
UNDE …
A SE GRUPA CU...
INDEX PRIN...;

ALEGE…
DIN Document.Vânzări de Bunuri și Servicii
Limite LEFT JOIN
DE …;

Unirea înregistrărilor cu mese virtuale

Există situații când, la conectarea unei mese virtuale la altele, sistemul nu funcționează optim. În acest caz, pentru a optimiza performanța interogării, puteți încerca să plasați tabelul virtual într-un tabel temporar, fără a uita să indexați câmpurile unite în interogarea tabelului temporar. Acest lucru se datorează faptului că VT-urile sunt adesea conținute în mai multe tabele fizice DBMS; ca urmare, este compilată o subinterogare pentru a le selecta, iar problema se dovedește a fi similară cu punctul anterior.

Utilizarea selecțiilor bazate pe câmpuri neindexate

Una dintre cele mai frecvente greșeli atunci când scrieți interogări este utilizarea condițiilor pe câmpuri neindexate, acest lucru contrazice regulile de optimizare a interogărilor. SGBD nu poate executa o interogare optim dacă interogarea include selecția pe câmpuri neindexabile. Dacă luați un tabel temporar, trebuie să indexați și câmpurile de conexiune.

Trebuie să existe un index adecvat pentru fiecare condiție. Un indice adecvat este unul care îndeplinește următoarele cerințe:

  1. Indexul conține toate câmpurile enumerate în condiție.
  2. Aceste câmpuri se află chiar la începutul indexului.
  3. Aceste selecții sunt consecutive, adică valorile care nu sunt implicate în condiția de interogare nu sunt „pănate” între ele.

Dacă DBMS nu selectează indecșii corecti, întregul tabel va fi scanat - acest lucru va avea un impact foarte negativ asupra performanței și poate duce la blocarea prelungită a întregului set de înregistrări.

Utilizarea SAU logic în condiții

Asta e tot, acest articol a acoperit aspectele de bază ale optimizării interogărilor pe care fiecare expert 1C ar trebui să le cunoască.

Un curs video gratuit foarte util despre dezvoltarea și optimizarea interogărilor, Vă recomandăm cu tărie pentru incepatori si nu numai!

Atenţie! Aceasta este o versiune introductivă a lecției, ale cărei materiale pot fi incomplete.

Conectați-vă la site ca student

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

Limbajul de interogare 1C 8.3 pentru programatori începători: operatori BETWEEN și IN

Operatorul logic ENTRE

Operator ÎNTRE vă permite să verificați este inclusa valoarea? expresie specificată în stânga acesteia în intervalul specificat în dreapta ( împreună cu limitele intervalului, adică inclusiv).

Deci în loc de

Dacă, dimpotrivă, este necesar să selectați toate alimentele, al căror conținut de calorii nu este inclus în interval, atunci este potrivită următoarea formă de negație (a apărut o particulă NU):

Operator ÎNTRE Poate fi aplicat mai mult decât în ​​domenii numerice. Funcționează bine și cu datele:

Operatorul logic B

Se verifică o potrivire cu una dintre cele enumerate

Operator ÎN vă permite să verificați se potrivește valoarea expresia indicată în stânga acesteia, cu una dintre valori descris în dreapta.

Deci în loc de

Poti sa scrii ceva mai concis?

Și rezultatul va fi același:

Dacă, dimpotrivă, este necesar să selectați toate alimentele, a căror culoare nu coincide cu nicio valoare din listă, atunci este potrivită următoarea formă de negație (a apărut o particulă NU):

Verificarea dacă o valoare se potrivește cu unul dintre rezultatele interogării

Să presupunem că trebuie să selectăm din baza de date doar acele culori care sunt prezente în descrierea alimentului. Astfel, lista selectată nu trebuie să conțină, de exemplu, culoarea neagră, deoarece nu există hrană neagră în baza noastră de date. Citiți o versiune de probă a lecției, sunt disponibile lecții complete.

O modalitate de a face acest lucru este utilizarea operatorului logic ÎN, în dreapta căreia va exista o subinterogare care selectează nume de culori din toate intrările de director Alimente:

SELECTAȚI Numele DIN Director. Culori WHERE Nume IN ( SELECTAȚI culoarea. Nume FROM Director. Alimente )

Deoparte, menționez că dintr-o cerere internă este posibil să accesezi câmpurile unei solicitări externe.

Din nou, pentru această formă a operatorului ÎN, utilizarea particulelor este de asemenea disponibilă NU in fata lui.

Verificarea apartenenței la ierarhie pentru directoare

Pentru directoare, verificarea poate fi efectuată și pentru apartenența la ierarhie.

Mai întâi, să ne uităm la un exemplu de director ierarhic. Deschideți directorul „Orașe” din baza noastră de date:

Vă rugăm să rețineți că elementele sale sunt diferite de alte directoare ( Alimente, Culori, Arome) prezența folderelor galbene. Acest grupuri de directoare.

Grupurile diferă de elementele obișnuite prin faptul că pot include altele grupuri și elemente. La fel cum folderele conțin alte foldere și fișiere.

Pentru a vizualiza conținutul unui grup, faceți dublu clic pe acesta:

Pentru a urca un nivel, faceți dublu clic pe grup din nou:

Astfel, un director ierarhic poate conține atât elemente obișnuite (de exemplu, Rio de Janeiro, Salvador), cât și grupuri (de exemplu, Brazilia, India). Citiți o versiune de probă a lecției, sunt disponibile lecții complete.

Fiecare element (fie un grup sau un element obișnuit) poate avea un părinte. De exemplu, părintele elementului Rio de Janeiro este grupul Brazilia:

Și acest lucru este adevărat, deoarece Rio de Janeiro face parte din grupul Braziliei în ierarhia directoarelor:

Acum să scriem o interogare care va solicita grupul de țări selectat și toate elementele orașului incluse în acesta.

Vă rugăm să rețineți că în textul solicitării există un ampersand (&) înaintea numelui GroupCountry. Numele cu ampersand sunt recunoscute automat de sistem ca parametri a căror valoare trebuie setată înainte de executarea interogării.

După ce lipim această interogare în consolă și facem clic pe butonul Run pentru a actualiza, vom putea seta acest parametru:

Selectați grupul „Rusia” ca valoare (butonul Selectați):

Dacă facem clic acum pe butonul „Run”, rezultatul interogării va fi următorul:

Rezultatul solicitării a fost grupul în sine (Rusia) și toate elementele care fac parte din acesta (Perm, Krasnoyarsk și Voronezh).

Dacă selectați „Brazilia” în loc de Rusia, rezultatul va fi astfel:

Astfel rezultatul operatorului ÎN IERARHIE va fi ADEVĂRAT dacă valoarea expresiei din stânga este o referire la un element de director și este inclusă în setul de valori din dreapta (Brazilia) sau aparține ierarhic unui grup conținut în acest set (Sao Paulo, Rio). de Janeiro, Salvador).

Setul de valori care trebuie verificat pentru potrivire poate include și rezultatul unei interogări. În acest caz, în dreapta operatorului ÎN trebuie să specificați o descriere a cererii:

Pentru operator ÎN IERARHIE utilizarea particulelor este de asemenea disponibilă NU in fata lui.

A lua testul

Începeți testul

1. Operatorul logic BETWEEN verifică valoarea

2. Expresia logica 1 INTRE 1 SI 1

3. Expresia logică 1 NU ÎNTRE 2 ȘI 2

4. Verificările operatorului logic B

5. Operatorul logic B vă permite să verificați

Lista este un atribut integral de afișare a informațiilor în orice configurație creată pe platforma 1C:Enterprise 8.1. Pentru a lucra eficient cu liste care conțin o varietate de date, programele de pe platforma 1C:Enterprise 8.1 implementează mecanisme de selecție și sortare convenabile și puternice. V.V. vorbește despre caracteristicile utilizării lor. Pescuit, firma „1C”.


Orez. 1

Liste

Ce liste se întâlnesc utilizatorii? Acestea ar putea fi liste de documente din reviste relevante. Aproape orice director plin cu date este prezentat sub forma unei liste, care, de regulă, are o ierarhie (grupuri de foldere sau elemente subordonate). Adesea, pentru a selecta un element, programul generează liste automat sau în conformitate cu logica stabilită de dezvoltatori.

În aproape toate listele, puteți utiliza mecanisme de selecție (cu excepția cazului în care sunt interzise în mod explicit de către dezvoltator) și sortare diversă (Fig. 1). În program, aceste mecanisme sunt indisolubil legate între ele. Să vedem cum să le folosim corect și eficient.

Orez. 1

Mecanism de sortare

De ce avem nevoie de un mecanism de sortare? În primul rând, după cum sugerează și numele, vă permite să sortați lista în funcție de criteriul dorit.

În al doilea rând, platforma 1C:Enterprise 8.1 utilizează în mod activ mecanismul de căutare rapidă. Acest mecanism vă permite să găsiți rapid elementul dorit în orice listă tastând primele caractere (Fig. 2). Dar în listele dinamice (de exemplu, o listă de elemente de director sau o listă de documente), căutarea rapidă funcționează numai în funcție de detaliile prin care este disponibilă sortarea.

Orez. 2

Puteți vizualiza toate detaliile listei disponibile pentru sortare deschizând fereastra „Selectare și sortare”. Această fereastră este de obicei disponibilă în bara de acțiuni (Fig. 3) sau în meniul contextual al listei care se deschide cu butonul din dreapta al mouse-ului (Fig. 4). În fereastra „Selectare și sortare”, trebuie să accesați fila „Sortare”, care arată toate detaliile disponibile prin care este posibilă sortarea.

Orez. 3

Orez. 4

Figura 3 arată că pentru lista documentelor „Vânzări de bunuri și servicii”, este disponibilă sortarea după două detalii: „Data” și „Număr”. Cu toate acestea, conținutul informațional al ferestrei de sortare nu se limitează la aceasta. Aici puteți vedea ce sortare este activată în prezent (partea stângă a ferestrei) și o listă cu toate detaliile disponibile pentru sortare (partea dreaptă). De asemenea, puteți configura sortarea dorită și ordinea acesteia. Vă rugăm să rețineți: atributul de sortare curent va fi marcat în listă cu un simbol special - o săgeată care indică direcția de sortare. Trei exemple de sortare diferită (inclusiv combinată) și modalități de afișare a acesteia în listă sunt prezentate în Figura 5.

Orez. 5

Rețineți că exemplul inferior ilustrează posibilitatea utilizării sortării combinate (simultan prin mai multe detalii). În cazul nostru, aceasta este sortarea după dată în ordine descrescătoare (cele mai vechi date în partea de jos) și după număr în ordine crescătoare (cele mai mari numere în partea de jos).

În fiecare listă puteți salva individual sortarea dorită. Doar bifați caseta „Utilizați această setare de sortare la deschidere” și faceți clic pe „OK”. Sistemul își va aminti setarea și data viitoare când deschideți această listă, va seta sortarea salvată.

Puteți sorta rapid lista după atributul necesar făcând clic pe antetul cu numele acestui atribut.

De exemplu, în cazul nostru, puteți face clic pe atributul „Dată” (sortarea datelor în ordine crescătoare va fi activată și puteți utiliza o căutare rapidă după dată) sau pe atributul „Număr” (sortarea după numerele în ordine crescătoare vor fi pornite, după care puteți căuta rapid după număr). De asemenea, inversarea sortării este ușoară - doar faceți clic din nou pe același atribut din antetul listei.

Mecanismul de selecție

Selecția este un mecanism puternic al platformei 1C:Enterprise 8.1, care vă permite să lucrați eficient cu liste, chiar dacă acestea conțin zeci sau sute de mii de elemente. Mai întâi, să vedem cum funcționează mecanismul de selecție în cazul general.

Aproape oriunde există o listă (de obicei sub formă de tabel), puteți utiliza un mecanism de selecție, care este activat fie de butonul corespunzător din bara de acțiuni, fie în meniul contextual al listei (Fig. 3 și 4). Dacă este posibilă selecția pentru lista dorită, se va deschide fereastra „Selectare și sortare”. Acesta va afișa toate tipurile posibile de detalii disponibile pentru selecție. Lista elementelor de selecție disponibile depinde de locul în care va fi utilizată selecția. În general, trebuie să găsiți unul sau mai multe elemente necesare pentru selecție, să specificați valorile și să activați combinația configurată de criterii.

Lista de condiții posibile pentru un anumit tip de selecție depinde de tipul de elemente utilizate în acesta. De exemplu, intervalele vor fi disponibile pentru numere și date, căutarea subșirurilor va fi disponibilă pentru șiruri (condițiile „Conține”/„Nu conține”), iar completarea listelor și analiza ierarhiei vor fi disponibile pentru elementele directorului.

Dacă specificați mai multe criterii de selecție în același timp, numai acele articole care îndeplinesc toate criteriile specificate vor fi afișate în listă.

Mecanisme de selecție și sortare cu exemple

Să încercăm să rezolvăm mai multe probleme în baza de date demo („Enterprise Accounting”, ediția 1.6). De exemplu, să afișăm documentele generate pentru contrapartea „Simon și Schuster LLC” în jurnalul „Documente client”. Să facem imediat o rezervare că vom descrie regulile și standardul logic de selecție pentru platforma 1C:Enterprise 8.1, fără referire la vreo configurație specifică și capabilități suplimentare de serviciu implementate în aceasta.

Deci, deschideți jurnalul de documente „Documente client”. În starea standard, fără selecția activată, toate documentele tuturor cumpărătorilor sunt afișate pe ecran (chiar și în baza de date demo aceasta ocupă mai mult de o pagină).

Trebuie să ne uităm rapid la toate documentele contrapărții Simon and Schuster LLC. Sarcina este implementată după cum urmează: se deschide o fereastră de selecție, în elementul „Contraparte”, selectați contrapartea „Simon și Schuster LLC” din director (Fig. 6) și faceți clic pe „OK”. Problema este rezolvată (Fig. 7).

Orez. 6

Orez. 7

Pentru a utiliza rapid selecția dorită, este suficient să începeți imediat selectarea criteriului dorit. Nu este nevoie să bifați caseta de lângă selecția utilizată. Programul va face acest lucru singur după ce criteriul necesar a fost specificat. Puteți aplica rapid criteriile de selecție configurate apăsând combinația de taste Ctrl+Enter*.

Vă rugăm să rețineți, de asemenea, că atunci când specificați valori în elementele de selecție (în exemplul nostru, contrapartea „Simon și Schuster LLC”), în majoritatea cazurilor, mecanismul de selecție rapidă, utilizat pe scară largă în platforma 1C:Enterprise 8.1, va funcționa. În exemplul nostru, a fost suficient să tastați primele caractere ale numelui contrapărții sau codul acesteia direct în câmpul de valoare de selecție, apăsați Enter sau Tab, iar sistemul va „ghici” automat elementul de director de care avem nevoie.

Rețineți că selecția rapidă accelerează semnificativ selecția valorilor pe care le cunoașteți. Folosește-l ori de câte ori este posibil.

Acum vom afișa o listă de articole ale căror nume conțin cuvântul „ceainic”. Pentru a face acest lucru, deschideți directorul „Nomenclatură”, apelați fereastra de selecție, în elementul „Nume”, selectați condiția de comparare „Conține” și indicați cuvântul necesar (Fig. 8).

Orez. 8

Tipul de comparație „Conține” nu a fost ales întâmplător. Acesta este ceea ce vă permite să găsiți cuvântul dorit (sau o parte a acestuia) oriunde în numele nomenclatorului. Dacă părăsiți tipul de comparație „Egal”, lista va afișa numai acele articole de nomenclatură care sunt denumite exact așa cum este scrisă interogarea. Dar nu există astfel de articole în baza noastră de date demonstrativă (adică nu ar fi afișat niciun element).

Deoarece în baza noastră de date demo articolul are atributul „Nume complet”, acesta este prezent în lista de selecții disponibile ca o poziție separată. Dar, în același timp, doar „Conține”/„Nu conține” sunt disponibile ca condiții de comparație. Motivul este că atributul „Nume complet” din baza noastră de date demo este un șir de lungime nelimitată.

Dacă nu căutați după nume, ci după nume complet, este mai bine să debifați caseta pentru utilizarea selecției după nume. În caz contrar, selecția va fi folosită atât după nume, cât și după nume complet, ceea ce poate să nu fie întotdeauna necesar (Fig. 9).

Orez. 9

Pentru confortul de a lucra cu elemente de director atunci când utilizați selecții, este mai bine să opriți temporar afișarea ierarhiei (Fig. 10).

Orez. 10

Ca a treia sarcină, să ne uităm doar la documentele „Vânzări de bunuri și servicii” din jurnalul de documente „Documente ale clienților”. Soluția la această problemă va demonstra particularitatea unuia dintre tipurile de selecție, disponibilă numai în jurnalele de documente.

Deschideți jurnalul „Documente ale clienților” și indicați în elementul de selecție „Tip document” documentul „Vânzări de bunuri și servicii”. Programul în sine oferă posibilitatea de a selecta un anumit tip de document dintre cele incluse în acest jurnal. Există, de asemenea, un buton personal pe panoul de acțiuni pentru aceasta (Fig. 11).

Orez. unsprezece

Similar cu selecția după tip de document, platforma va oferi automat elementul de selecție „Structură de subordonare” dacă configurația a configurat relații între documente.

Să încercăm să vedem în jurnalul de documente „Documentele Cumpărătorilor” doar documentele „Factură” pentru contrapărțile aflate în grupul „Cumpărători” din director. Această sarcină este similară cu prima, cu singura diferență că nu specificăm o anumită contraparte, ci analizăm facturile unui întreg grup de contrapărți care se află în grupul „Cumpărători”.

Există mai multe moduri de a implementa sarcina. Să ne uităm la cea mai eficientă. Deschideți jurnalul „Documente ale cumpărătorilor” și indicați în elementul de selecție „Tip document” documentul „Factură emisă”. După aceea, în elementul de selecție „Contraparte” indicăm tipul de comparație „În grup”. Selectați tipul de valoare „Contrapărți” și deschideți formularul de selecție a contrapartidei. În el, selectați grupul „Cumpărători” (Fig. 12).

Orez. 12

Acest tip de comparație implică faptul că condiția va fi îndeplinită de toate elementele de director care se află în grupul specificat. Mai mult, chiar dacă există subgrupuri în cadrul grupului specificat, toate elementele imbricate acolo vor îndeplini și acest criteriu.

Acum să complicăm sarcina: să ne uităm doar la documentele „Factură” din jurnalul de documente „Documentele cumpărătorilor”, dar, în același timp, trebuie să ne uităm la documente atât pentru cumpărători, cât și pentru furnizori. O rezolvăm similar cu cea precedentă, cu excepția unui criteriu de selecție impus.

În limbajul uman, sarcina este formulată după cum urmează: „afișează toate documentele necesare pentru toți contractanții aflați în grupurile de director Cumpărători, Furnizori, Furnizori de vânzare”. Acest lucru este ușor de implementat - în condiția de selecție „Contraparte”, selectați „Într-un grup din listă” (Fig. 13). După aceasta, devine disponibil un mecanism de completare a listei, la care puteți adăuga grupurile (sau elementele) necesare ale directorului. Mai mult, lista poate fi completată manual. Prin analogie cu rezolvarea problemei anterioare, găsiți grupul dorit și selectați-l, repetând acest lucru pentru fiecare element nou al listei. Cu toate acestea, este mai recomandabil să utilizați un mecanism de selecție convenabil, care este implementat automat de program. Cu ajutorul selecției, este mult mai ușor și mai rapid să umpleți lista cu componentele necesare. După ce lista este completată, faceți clic pe „OK” și activați criteriile de selecție configurate. Problema este rezolvată.

Orez. 13

Diferența dintre condiția de selecție „Într-un grup din listă” și condiția „În listă” este că, în primul caz, condiția va fi îndeplinită pentru toate elementele directorului care sunt fie specificate în mod explicit în listă, fie situate în grupurile specificate în listă. Al doilea caz pur și simplu spune programului să verifice lista atunci când selectează. Adică, dacă specificați un grup acolo, atunci grupul însuși va fi inclus în selecție (ca element independent al directorului), iar elementele care sunt incluse în acesta nu vor îndeplini criteriul de selecție. A fost posibil să se rezolve problema „direct” - selectați condiția „În listă” și, folosind selecția, adăugați acolo toate elementele conținute în grupurile necesare.

Condițiile de selecție „Nu este în listă” și „Nu este în grupul din listă” vă permit să specificați seturile de date necesare care nu ar trebui incluse în selecție. Adică, problema ar putea fi rezolvată în sens invers - specificați „Nu într-un grup din listă” și adăugați acolo toate grupurile de directoare, cu excepția celor trei necesare (Cumpărători, Furnizori, Furnizori de vânzare).

Și în final, în documentul „Vânzări de bunuri și servicii” cu numărul TDN00002, vom afișa în secțiunea tabelară doar nomenclatorul care conține cuvântul „STINOL” în nume. Această sarcină ne va permite să vedem universalitatea mecanismului de selecție în sine, precum și cât de diversă poate fi utilizarea acestuia. Sarcina se bazează pe situații reale când, de exemplu, există câteva sute (sau chiar mii) de linii în partea tabelară a facturii și trebuie să analizați rapid compoziția acesteia. În baza noastră de date demonstrativă există un document „Vânzări de bunuri și servicii” cu numărul TDN00002, care are mai multe rânduri în partea tabelară. În ciuda faptului că nu există butoane pentru utilizarea selecțiilor în document, apelarea selecției este disponibilă prin meniul contextual (butonul dreapta al mouse-ului).

În continuare, impunem criterii de selecție în contextul Nomenclaturii. O altă întrebare apare imediat - cum să selectați „STINOL” dacă condițiile de selectare a nomenclaturii sunt destul de limitate (disponibil „Egal”, „Nu este egal”, „În listă” și „Nu este în listă”). Problema poate fi rezolvată în astfel de condiții. Selectăm condiția „În listă”, deschidem fereastra deja familiară pentru completarea listei și folosim selecția elementelor (Fig. 14, 1). Este posibil să existe un număr mare de elemente în lista de nomenclatură, așa că nu vom căuta elementele necesare. Să folosim selecția din lista de articole, specificând condiția de selecție „Conține” pentru numele articolului (Fig. 14, 2).

Orez. 14

După aceasta, tot ce rămâne este să adăugați elementele selectate la lista de selecție pentru document și să aplicați criteriile de selecție.

Caracteristici utile ale mecanismului de selecție

Să mai luăm în considerare câteva puncte legate într-un fel sau altul de selecțiile din sistemul 1C:Enterprise 8.1.

În listele de obiecte de configurare care utilizează legarea de date (de exemplu, liste de documente) și în jurnalele de documente, puteți utiliza filtrarea rapidă după interval de date. Pentru a face acest lucru, faceți clic pe butonul corespunzător „Setarea perioadei” din bara de acțiuni (sau selectați-l în meniul contextual) (Fig. 15). În acest fel, puteți ajusta individual criteriul de afișare a elementelor după dată în fiecare listă.

Orez. 15

Puteți seta rapid selecția după valoare în celula curentă a listei făcând clic pe butonul „Selectare după valoare în coloana curentă” (Fig. 16). Când faceți clic pe acest buton, selecția se va face pe baza valorii curente din coloană. Această funcție funcționează numai pentru acele coloane ale căror detalii pot fi folosite pentru a seta selecții. Dacă lista folosește deja orice selecție, cea nouă va fi atașată acesteia. Mai mult, butonul devine activ pentru această coloană. Puteți anula o astfel de selecție în același mod - prin „strângerea” butonului din coloana corespunzătoare.

Orez. 16

O altă proprietate utilă a mecanismului de selecție este menținerea istoricului selecțiilor (Fig. 17). Programul își amintește ce selecții au fost setate, astfel încât să puteți reveni rapid la oricare dintre ele selectând-o din lista derulantă. Apropo, în fereastra „Selectare și sortare”, acordați atenție butonului „Selectări” (Fig. 6). Făcând clic pe acest buton, veți fi dus la o interfață unde puteți salva și restaura setările de selecție, astfel încât să puteți reveni la acestea mai târziu (Fig. 18).

Orez. 17

Orez. 18

Și ultima funcție este anularea tuturor selecțiilor (Fig. 19). Făcând clic pe butonul „Dezactivați selecția” se dezactivează toate selecțiile instalate în listă. O acțiune similară poate fi realizată prin deschiderea ferestrei „Selectare și sortare” și debifarea tuturor elementelor active.

Orez. 19

Programul are, de asemenea, capacitatea de a căuta rapid după numărul documentului în liste de documente sau în jurnale. Această funcție este apelată de butonul „Căutare după număr” (Fig. 20) și vă permite să găsiți documentul dorit prin setarea flexibilă a parametrilor de căutare. Documentele găsite pe baza criteriilor specificate sunt afișate în partea de jos a ferestrei acestui serviciu și puteți merge la documentul dorit.

Cele mai bune articole pe această temă