Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Erori
  • Tastați valoarea în 1 s cerere 8.2. Cum să obțineți tipul (tipul) unui document într-o solicitare? TYPE la cerere

Tastați valoarea în 1 s cerere 8.2. Cum să obțineți tipul (tipul) unui document într-o solicitare? TYPE la cerere

1C vă permite să simplificați semnificativ contabilitatea sau pur și simplu să gestionați orice organizație, fie că este vorba de un magazin mic sau de o întreprindere mare. Programul este un sistem mare de gestionare a bazelor de date. Pentru a nu fi confuz în toate acestea, trebuie să fiți capabil să efectuați diverse acțiuni simple și să înțelegeți esența. În continuare, veți înțelege cum să verificați tipul de valoare dintr-o solicitare în 1C, precum și care sunt acestea în general, precum și cum să faceți distincția între ele.

Tipuri de valori

1C: Întreprinderea a inclus o funcție specială în versiunile noi (platforma 8.2). Folosind-o, puteți adăuga orice parametri speciali la orice nume sau elemente ale sistemului de date. Acest lucru a fost făcut pentru a face sistemul mai ușor de editat și pentru a adăuga elemente noi. Această funcție se numește „Tip de valoare”.

De fapt, acesta este unul dintre conceptele de bază pe care le conțin majoritatea limbajelor de programare. Folosind-o, puteți clasifica diverse date. De exemplu: date, numere, șiruri, link-uri. Acestea sunt doar clasificări de bază. S-ar putea să fie mai mulți dintre ei. Să presupunem că, dacă introduceți informații despre orașe în sistemul dvs., puteți utiliza: continent, țară, regiune etc.

Examinare

Puteți verifica un anumit câmp folosind un limbaj de interogare. Sau mai degrabă funcțiile sale: TYPE VALUE. Adică, dacă vrem să aflăm ce tip de informații conține celula de interes, trebuie să folosim comanda.

VALOARE TYPE(Valoare) = TYPE(Șir)

În exemplul de mai sus, am definit cel mai simplu tip folosind comanda. Un alt exemplu de validare a cererii:

Documentație

Există destul de multe tipuri, utilizatorii se pot mulțumi cu cele inițiale sau pot introduce propriile lor pentru a îmbunătăți baza de informații. Aici sunt câțiva dintre ei.

  • DocumentLink. Este folosit pentru stocarea convenabilă a referințelor la diferite obiecte din alte părți ale sistemului.
  • DocumentObject - editarea documentelor.
  • DocumentSelection - sortarea obiectelor din baza de date.

În plus, există termeni speciali care caracterizează orice date:

  • formă;
  • linia;
  • boolean;
  • număr;
  • data de;
  • matrice;
  • Caseta de bifat;
  • imagine.

Acestea sunt doar câteva dintre ele. Orice obiect poate fi doar ceva din această listă. Booleanul este un parametru special care ia două valori: adevărat sau fals. Există, de asemenea, etichete speciale care vă permit să ajustați cererea: când, unde, cum, altfel, etc. Ele setează algoritmul de comportament al programului. 1C se distinge prin faptul că aceste cuvinte aici, ca orice altceva, pot fi introduse în rusă.

Este important să înțelegem că toate acestea vor fi percepute de începători și non-profesioniști ca alfabetizare chineză. Pentru a înțelege despre ce vorbim și pentru a utiliza eficient 1C, trebuie să cunoașteți elementele de bază ale programării. În general, verificarea tipului unei cereri în programul 1C va fi destul de ușoară în comparație cu alte acțiuni.

Să ne uităm la restul acum.

Funcții pentru lucrul cu șiruri în interogări 1C

Există puține funcții și operatori pentru a lucra cu date șiruri în interogări 1C.

În primul rând, pot fi adăugate șiruri în interogări. Pentru a face acest lucru, utilizați operatorul „+”:

Cerere. Text = „SELECT
" "Linie: " " + Sursă.Nume
;

În al doilea rând, puteți selecta o parte a liniei. Pentru a face acest lucru, utilizați funcția SUBSTRUCȚIE. Funcția este similară cu limbajul 1C încorporat. Are trei parametri:

  1. Șir sursă.
  2. Numărul caracterului cu care trebuie să înceapă linia selectată.
  3. Personaje.

Cerere. Text= "ALEGE
SUBSTRING("
"Linie:" ", 4, 3) ca rezultat"; // Rezultat: ok

Funcţie ISNULL

NULL este un tip de date special pe platforma 1C:Enterprise. Este, de asemenea, singura valoare posibilă de acest tip. NULL poate apărea în interogări în mai multe cazuri: la conectarea surselor de interogare, dacă nu a fost găsită o valoare corespunzătoare într-unul dintre tabele; la accesarea detaliilor unui obiect inexistent; dacă a fost specificat NULL în lista câmpurilor de interogare (de exemplu, la combinarea rezultatelor selecției din mai multe tabele), etc.

Pentru că NULL nu este nici nul, nici șirul gol, nici măcar o valoare Nedefinit, este adesea util să îl înlocuiți cu un tip de date mai util. Pentru asta este concepută funcția. ISNULL.

Are doi parametri:

  1. Valoarea care se verifică.
  2. Valoarea cu care se înlocuiește primul parametru dacă se dovedește a fi NULL.

Cerere. Text= "ALEGE
ISNULL(Source.Remainder, 0) AS Remainder"
; // Dacă rezultatul solicitării este restul câmpului = NULL,
// apoi va fi înlocuit cu 0 și puteți efectua operații matematice cu acesta

Funcții PERFORMANŢĂȘi INTRODUCERE LEGĂTURĂ

Aceste funcții sunt concepute pentru a obține reprezentări în șir de diferite valori. Adică convertesc referințe, numere, booleeni etc. în text simplu. Diferența dintre ele este că funcția PERFORMANŢĂ convertește orice tip de date în text (șir) și funcția INTRODUCERE LEGĂTURĂ- numai linkuri și returnează valorile rămase așa cum sunt, neconvertite.

Cerere. Text= "ALEGE
REPREZENTARE(ADEVĂRAT) CA Boolean,
REPREZENTARE (4) ca număr,
REPREZENTARE (Source.Link) AS Link,
REPREZENTARE(DATETIME(2016,10,07)) AS Data"
;
// Boolean = „Da”, Număr = „4”, Link = „Document Încasare numerar Nr. comandă... de la...”
// Data="07.10.2016 0:00:00"

Cerere. Text= "ALEGE
REPRESENTATIONREFERENCE(TRUE) CA Boolean,
REPREZENTARE REFERINȚĂ(4) CA NUMĂR
PRESENTINGLINK(Source.Link) AS Link,
REPRESENTATIONREFERENCE(DATETIME(2016,10,07)) AS Data"
;
// Boolean = TRUE, Number = 4, Link = "Documentul Ordin de primire numerar nr.... de la..."
// Data=07.10.2016 0:00:00

Funcții TIPȘi VALORI DE TIP

Funcţie TIP returnează tipul de date al platformei 1C:Enterprise.

Cerere. Text= "ALEGE
TIP (număr)
TYPE (șir),
TIP (Document. Ordin de numerar pentru cheltuieli)"
;

Funcţie VALORI DE TIP returnează tipul valorii transmise acestuia.

Cerere. Text= "ALEGE
VALORI TIP (5) AS Număr,
TIP ("
"Linia" ") AS String,
TYPE (Source.Link) AS Referință
Din Directory.Source AS Source"
;
//Număr=Număr, String=Șir, Director = DirectoryLink.Source

Aceste funcții sunt convenabile de utilizat, de exemplu, atunci când trebuie să aflați dacă un câmp primit într-o solicitare este o valoare de un anumit tip. De exemplu, să obținem informațiile de contact ale contrapărților din registrul de informații ContactInformation (acolo sunt stocate contactele nu numai ale contrapărților, ci și ale organizațiilor, persoanelor fizice etc.):

Cerere. Text= "ALEGE

DIN

UNDE
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)"
;

Funcţie SENS

Funcţie Sens vă permite să utilizați obiecte de configurare 1C direct într-o solicitare, fără a utiliza .

Să mai adăugăm o condiție la exemplul anterior. Trebuie doar să obțineți numerele de telefon ale contrapărților dvs.

Cerere. Text= "ALEGE
Informații de contact.Introducere
DIN
Registrul de informații Informații de contact CUM Informații de contact
UNDE
VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
AND ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Trebuie remarcat faptul că această funcție poate fi utilizată numai cu valori predefinite, adică. cu valori care pot fi accesate direct din configurator. Adică funcția SENS nu poate fi folosit cu elemente de director create de utilizatori, dar poate lucra cu enumerari, cu elemente de director predefinite, cu valori EmptyLink.

Operator LEGĂTURĂ

Operator LEGĂTURĂ este conceput pentru a verifica valorile returnate de o solicitare pentru a vedea dacă aparțin unui anumit tip de referință. Aceeași sarcină poate fi îndeplinită folosind funcții TIPȘi VALORI DE TIP(care au un domeniu mai larg și au fost discutate mai sus).

De exemplu, sarcina de selectare a informațiilor de contact pentru contrapărți ar putea fi rezolvată astfel:

Cerere. Text= "ALEGE
Informații de contact.Introducere
DIN
Registrul de informații Informații de contact CUM Informații de contact
UNDE
ContactInformation.Object LINK Directory.Contrapartide"
;

Operator EXPRES

Operator EXPRES utilizat în interogări 1C în două cazuri:

  • când trebuie să modificați caracteristicile unui tip primitiv;
  • atunci când trebuie să transformați un câmp cu un tip de date compus într-un câmp cu un singur tip.

Tipurile de date primitive includ: număr, șir, dată, boolean. Unele dintre aceste tipuri de date au caracteristici suplimentare. Tip Număr are lungime si precizie, tip linie - lungime sau nelimitat.

Operator EXPRES vă permite să schimbați nu tipul de date, ci caracteristicile suplimentare. De exemplu, el poate transforma un șir cu lungime nelimitată într-un șir cu lungime limitată. Acest lucru poate fi util dacă trebuie să grupați rezultatele interogării după un astfel de câmp. Este imposibil să grupați după câmpuri cu lungime nelimitată, așa că îl convertim într-un șir cu o lungime de 200 de caractere.

Cerere. Text= "ALEGE
CANTITATE (Sosire diferită de bunuri și servicii. Link) AS Link
DIN
Documentul Primirea Bunurilor și Serviciilor CUM Primirea Bunurilor și Serviciilor
A SE GRUPA CU
EXPRESS(Primirea bunurilor și serviciilor. Comentariu AS ROW (200))"
;

În unele cazuri, interogările către câmpuri cu un tip de date compus pot să nu fie procesate optim de platforma 1C. Acest lucru duce la timpi mai mari de execuție a interogării, așa că poate fi util să convertiți tipul compus într-un singur tip în avans.

Cerere. Text= "ALEGE
EXPRESS(Mișcarea mărfurilor. Cifra de afaceri. Comanda ca document. Comanda clientului).Data AS Data comenzii,
Mişcarea Mărfurilor Cifra de afaceri.Nomenclatură
DIN
ÎnregistrareAcumulări.Mișcarea mărfurilor.Cifra de afaceri AS Mișcarea mărfurilor Cifra de afaceri
UNDE
Mișcarea mărfurilor Cifra de afaceri.Comandă LINK Document.Comandă client"
;

Operatori ALEGEREȘi ESTE NUL

Operator ALEGERE similar cu operatorul DACĂîn limbajul 1C încorporat, dar are o funcționalitate oarecum redusă.

Să presupunem că vrem să primim informații de contact din registrul de informații ContactInformation și, în același timp, să indicăm într-un câmp separat de cerere dacă aparține unei contrapărți sau unei persoane fizice.

Cerere. Text= "ALEGE
Informații de contact.Introducere,
ALEGERE
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
APOI "
Contrapartidă "
ALTA ALEGERE
WHEN VALUES TYPE(ContactInformation.Object) = TYPE(Directory.Individuals)
APOI "
Individual"
ELSE "Altul" "
Sfârşit
TERMINĂ CA PROPRIETAR
DIN
Registrul informațiilor Informații de contact AS Informații de contact".
;

După cum se vede din exemplu, în design ALEGERE există întotdeauna o condiție după cuvânt CÂND; valoare aplicată dacă condiția este adevărată după cuvânt APOIși valoarea aplicată dacă condiția nu este îndeplinită, după cuvânt IN CAZ CONTRAR. Toate cele trei elemente de design ALEGERE sunt obligatorii. Omite element IN CAZ CONTRAR, la fel ca atunci când utilizați operatorul DACĂîn limbajul 1C încorporat, este imposibil. Tot de la operator ALEGERE nu există un analog al designului ELSEIF, dar poți investi unul ALEGEREîn altul, așa cum sa făcut în exemplul nostru.

Operator ESTE NUL folosit în proiectare ALEGERE pentru a compara un câmp de interogare cu tipul NULL.

Cerere. Text= "ALEGE
ALEGERE
CÂND VALOAREA ESTE NULĂ, atunci 0
ELSE Sens
SFÂRŞIT"
;

În plus, operatorul ESTE NUL poate fi folosit în condiții de interogare, cum ar fi într-o propoziție UNDE.

Î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 solicitare, iar unele se aplică și condițiilor.

1C Funcții limbaj de interogare

Pentru că o descriere clară 1c funcții de limbaj de interogare este mult mai puțin obișnuită 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 „Dată”.

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ă) AS Persoană fizică, //cont predefinit VALUE(Planul de conturi. Auto-contabil.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 |

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

Sintaxă: EXPRESS(Nume Câmp AS Nume Tip)

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 AS Număr |.

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, trebuie 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 Remaining |. Nomenclatură AS Nr. |.

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 |Acumulare 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 ""Consum"" |. END AS |

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. 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 Contrapartide";

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:

Solicitare.Text = //selectează înregistrările la care cititorul are drepturi "SELECTARE DIVERSE | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

De asemenea, construcția VARIOUS poate fi utilizată 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:

Request.Text = //selectați primele 4 numere CCD din directorul „SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers”;

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. Nomenclatură, | Resturi libere. Depozit, | Resturi libere. În stoc rămase | DIN | Registrul de acumulări. Resturi libere. Rămășii ca resturi libere | PENTRU SCHIMBARE | Registrul de acumulări . Resturi libere”;

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 legăturii dacă indicatorul este dezactivat, atunci legăturile sunt sortate după vechimea adresei legăturii în 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ămase | DIN | Înregistrați acumulări. Resturi libere. Rămase AS Resturi libere rămase BY | |. Nomenclatura |.

10. Design GROUP BY- folosit pentru gruparea șirurilor de interogări după câmpuri specifice. 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) AS INSTOCK |FROM | 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.Nomenclatură, |.

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.RPA | UNDE |CompensationRPORemaining.CompensationRemaining<>0 | Și CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. Design REZULTATE... GENERAL- utilizat 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ă. Veți vedea un exemplu de rezultat al cererii mai jos.

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

Exemplu de utilizare:

Solicitare.Text = "SELECT | 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 Contrapartide Calcule AS |. TOTAL |. | GENERAL |

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.

Cerere . Text = "ALEGE | StorageUnits.Link |DIN | Directory.usStorageUnits CUM se folosescStorageUnits // Exemplul 1: comparație cu o valoare booleană goală: |UNDE | StorageUnits.AllowSelectionFromReserveZone = Fals // Exemplul 2. dar dacă acest boolean este definit, atunci este mai bine așa: // condiție pentru un boolean negativ: |UNDE | NU Unități de depozitare Permite selecția din zona de rezervă // Exemplu 3. selecție bazată pe condiția unui câmp gol care are tipul „director de un anumit tip” |UNDE | StorageUnits.ActiveSelectionArea = VALUE(Directory.SelectionArea.EmptyLink) // Exemplul 3a. selecție bazată pe condiția unui câmp gol având tipul „document de un anumit tip” |UNDE | OurInformationRegister.Document = VALUE(Document.OurDocument.EmptyLink) // Exemplul 3b. selecție bazată pe condiția unui câmp gol având tipul „documente de diferite tipuri” ( câmp compozit) |UNDE | (OurInformationRegister.Document = VALUE(Document.OurDocument1.EmptyLink) | SAU OurInformationRegister.Document = VALUE(Document.OurDocument2.EmptyLink) | SAU... (etc. - listăm secvenţial condiţiile pentru toate tipurile posibile ale acestui câmp compus) ) // Exemplul 4. sau invers, dacă trebuie să selectați o valoare completată de tipul „șir”, atunci condiția va ajuta: |UNDE | Unitate de stocare.Nume > """" // Exemplul 5. dacă trebuie să selectați documente de un anumit tip, cu un tip de date compus, de exemplu, în registrul „RunningTasks”, resursa „Task” are un tip compozit, printre valorile cărora documentul „Selectare” este posibil |UNDE | EXPRESS(Informații RegisterExecutedTasks.Task AS Document.Selection) LINK Document.Selection // Exemplul 5a. Un alt exemplu similar când trebuie să selectați documente de un anumit tip | ALEGEREA | CÂND SE EXPRIMĂ (ag Corespondența Documentelor. DocumentBU AS Document. Recepția Bunurilor și Serviciilor) LINK Document Recepția Bunurilor și Serviciilor | ATUNCI ""Recepția de bunuri și servicii"" | CÂND SE EXPRIMĂ (ag Corespondența documentelor. DocumentBU AS Document. Vânzări de bunuri și servicii) LINK Document de vânzări de bunuri și servicii | APOI ""Vânzări de bunuri și servicii"" | ELSE """" | END AS Document View // Exemplul 6. selectarea după condiție a unei valori nedefinite: |UNDE | SavedSettings.User = NEDEFINIT // Exemplul 7. selectarea după tipul de mișcare „Intrare” a registrului de acumulare, „Cheltuieli” - similar): |UNDE | RegProductsInRetail.MovementType = VALUE(MovementTypeAccumulation.Incoming) // Exemplul 8. Cum se indică într-o cerere că nu este necesar să se execute cererea (de exemplu, trebuie să întoarceți programatic, în funcție de o anumită condiție, un rezultat al cererii necompletate - Request.Text = StrReplace(Request.Text, „UNDE Doc.Link = &DocumentLink” , „UNDE E MINCIUNEA”);). Pentru a face acest lucru, trebuie doar să adăugați condiția „Unde este fals”. Apropo, indiferent de volumul de date solicitat în eșantion, o astfel de solicitare va fi executată instantaneu. |UNDE E MINCIUNA // Exemplul 9. Verificarea dacă rezultatul interogării conține date: Dacă nuCerere.A executa().Gol() Apoi // Exemplul 10. selecție bazată pe o dată goală: |UNDE | tbStrings.CancellationDate = DATETIME(1, 1, 1)

În acest articol vom analiza posibilitățile de conversie de tip în limbajul de interogare 1C, care sunt oferite de funcția „Express”.
Să ne uităm la mai multe opțiuni pentru utilizarea acestei funcții.
Și prima opțiune este rotunjirea numerelor.

Pentru a face acest lucru, trebuie să utilizați funcția Express în următorul format:

Expres(<Число>ca număr(<ДлинаЧисла>,<Точность>))

Unde:
Număr— câmpul care trebuie rotunjit
LungimeNumere— lungimea maximă a numărului
Precizie— acuratețea rotunjirii numerelor

Parametrii atât lungimea cât și precizia trebuie să fie numere întregi pozitive.
Vedeți cum funcționează această funcție în imaginea de mai jos.

Al doilea caz de utilizare este turnarea cu coarde. Foarte des, configurațiile folosesc șiruri de lungime nelimitată, ceea ce impune anumite restricții. De exemplu, nu putem compara șiruri de lungime nelimitată.
În interogarea de mai jos, câmpul FullName este de tip șir de lungime nelimitată, iar această interogare nu va funcționa.

Pentru ca acesta să funcționeze, este necesar să convertiți un câmp de lungime nelimitată într-un șir cu o anumită lungime, aceasta se face folosind funcția Express în următorul format:

Expres(<Строка>ca șir (<ДлинаСтроки>)

Unde
Lungimea liniei– lungimea maximă la care va fi redusă sfoara.
Să reluăm interogarea: în condiția vom converti un șir nelimitat într-un șir cu o anumită lungime. Atunci nu vor fi erori.

Să luăm în considerare ultima și, aș spune, cea mai importantă opțiune pentru aplicarea acesteia: atunci când lucrați cu câmpuri de tip compozit.
Mai jos sunt două interogări care folosesc câmpuri compuse. Prima este greșită, iar a doua este corectă.

Acestea. Când trebuie să obțineți un câmp de un tip complex, obțineți întotdeauna valoarea acestui câmp numai după turnarea tipului folosind funcția Express. În acest caz, documentele și cărțile de referință vor avea următorul format:

Expres(<Документ>ca document.<ИмяТаблицы>)
Expres(<Справочник>ca Director.< ИмяТаблицы >)
.

Unde
TableName— numele obiectului în .

Utilizați întotdeauna funcția expres atunci când lucrați cu tipuri compozite, aceasta optimizează foarte mult interogarea.

Dacă încă „înoți” în construcțiile limbajului de interogări și chiar și cele mai simple interogări îți provoacă dificultăți, atunci îți recomand cursul meu „Interogări în 1C de la începător la profesionist”. Unde acestea și multe alte întrebări sunt discutate mai detaliat.

Ce este special la acest curs:
Cursul este conceput pentru cei care nu sunt familiarizați cu limbajul de interogare în 1C;
Materialul educațional este bine aranjat și ușor de învățat;
Câteva zeci de lecții;
Exemple practice utile;
Toate lecțiile sunt prezentate într-un limbaj clar și simplu

Pentru cititorii mei, cupon de reducere de 25%: hrW0rl9Nnx

Încerc să lansez diverse articole gratuite interesante și tutoriale video cât mai des posibil. Prin urmare, voi fi foarte bucuros dacă îmi susțineți proiectul transferând orice sumă:

Puteți transfera orice sumă direct:
Yandex.Bani - 410012882996301
Web Money - R955262494655

Alăturați-vă grupurilor mele.

Cele mai bune articole pe această temă