Come configurare smartphone e PC. Portale informativo
  • casa
  • Errori
  • Digitare il valore nella richiesta 1s 8.2. Come ottenere il Tipo (tipo) di un Documento in una richiesta? TIPO a richiesta

Digitare il valore nella richiesta 1s 8.2. Come ottenere il Tipo (tipo) di un Documento in una richiesta? TIPO a richiesta

1C ti consente di semplificare notevolmente la contabilità o semplicemente di gestire qualsiasi organizzazione, sia essa un piccolo negozio o una grande impresa. Il programma è un grande sistema di gestione di database. Per non confonderti in tutto questo, devi essere in grado di eseguire varie semplici azioni e comprenderne l'essenza. Successivamente capirai come verificare il tipo di valore in una richiesta in 1C, nonché cosa sono generalmente e come distinguerli.

Tipi di valore

1C: L'impresa ha incluso una funzione speciale nelle nuove versioni (piattaforma 8.2). Usandolo, puoi aggiungere parametri speciali a qualsiasi nome o elemento del sistema dati. Ciò è stato fatto per rendere il sistema più facile da modificare e aggiungere nuovi elementi. Questa funzione è chiamata “Tipo valore”.

In effetti, questo è uno dei concetti di base contenuti nella maggior parte dei linguaggi di programmazione. Usandolo, puoi classificare vari dati. Ad esempio: date, numeri, stringhe, collegamenti. Queste sono solo classificazioni di base. Potrebbero essercene molti altri. Diciamo che se inserisci informazioni sulle città nel tuo sistema, puoi utilizzare: continente, paese, regione, ecc.

Visita medica

Puoi controllare un campo particolare utilizzando il linguaggio di query. Più precisamente le sue funzioni: TIPO VALORE. Cioè, se vogliamo scoprire che tipo di informazioni contiene la cella di interesse, dobbiamo utilizzare il comando.

VALUETYPE(Valore) = TIPO(Stringa)

Nell'esempio sopra abbiamo definito, utilizzando il comando, la vista più semplice. Un altro esempio di convalida della richiesta:

Documentazione

Ne esistono diversi tipi, l'utente può accontentarsi di quelli iniziali oppure inserirne di propri per migliorare la base informativa. Ecco qui alcuni di loro.

  • DocumentLink. Viene utilizzato per memorizzare comodamente riferimenti a vari oggetti all'interno di altre parti del sistema.
  • DocumentObject: modifica di documenti.
  • DocumentSelection: ordinamento degli oggetti dal database.

Inoltre, ci sono termini speciali che caratterizzano qualsiasi dato:

  • modulo;
  • linea;
  • booleano
  • numero;
  • data di;
  • vettore;
  • casella di controllo;
  • immagine.

Questi sono solo alcuni di essi. Qualsiasi oggetto può essere solo qualcosa da questo elenco. Booleano è un parametro speciale che accetta due valori: vero o falso. Esistono anche tag speciali che consentono di modificare la richiesta: quando, dove, come, altrimenti, ecc. Impostano l'algoritmo di comportamento del programma. 1C si distingue per il fatto che queste parole qui, come tutto il resto, possono essere inserite in russo.

È importante capire che tutto ciò verrà percepito dai principianti e dai non professionisti come alfabetizzazione cinese. Per capire di cosa stiamo parlando e utilizzare efficacemente 1C, è necessario conoscere le basi della programmazione. In generale, sarà abbastanza semplice verificare il tipo di richiesta nel programma 1C rispetto ad altre azioni.

Diamo un'occhiata al resto ora.

Funzioni per lavorare con le stringhe nelle query 1C

Esistono poche funzioni e operatori per lavorare con i dati stringa nelle query 1C.

Innanzitutto è possibile aggiungere stringhe nelle query. Per fare ciò, utilizzare l'operatore "+":

Richiesta. Testo="SELEZIONA
" "Linea: " " + Nome.origine
;

In secondo luogo, puoi selezionare parte della linea. Per fare ciò, utilizzare la funzione SOSTRUZIONE. La funzione è simile al linguaggio 1C integrato. Ha tre opzioni:

  1. Stringa di origine.
  2. Il numero del carattere con cui dovrebbe iniziare la riga selezionata.
  3. Caratteri.

Richiesta. Testo= "SCEGLIERE
SOTTOSTRINGA("
"Linea: " ", 4, 3) Risultato AS"; // Risultato: occhio

Funzione È ZERO

NULL è un tipo di dati speciale sulla piattaforma 1C:Enterprise. È anche l'unico valore possibile di questo tipo. NULL può apparire nelle query in diversi casi: quando si collegano le origini della query, se non è stato trovato un valore corrispondente in una delle tabelle; quando si accede ai dettagli di un oggetto inesistente; se NULL è stato specificato nell'elenco dei campi della query (ad esempio, quando si combinano i risultati della selezione da più tabelle), ecc.

Perché NULL non è né null, né la stringa vuota, e nemmeno un valore Non definito, spesso è utile sostituirlo con un tipo di dati più utile. Questo è lo scopo per cui è stata progettata la funzione. È ZERO.

Ha due opzioni:

  1. Il valore da controllare.
  2. Il valore con cui sostituire il primo parametro se risulta essere NULL.

Richiesta. Testo= "SCEGLIERE
ISNULL(Sorgente.Resto, 0) AS Resto"
; // Se il risultato della richiesta è il campo resto = NULL,
// verrà sostituito da 0 e con esso potrai eseguire operazioni matematiche

Funzioni PRESTAZIONE E INTRODUZIONELINK

Queste funzioni sono progettate per ottenere rappresentazioni di stringhe di vari valori. Cioè, convertono riferimenti, numeri, booleani, ecc. in testo semplice. La differenza tra loro è che la funzione PRESTAZIONE converte qualsiasi tipo di dati in testo (stringa) e la funzione INTRODUZIONELINK- collega solo e restituisce i valori rimanenti così come sono, non convertiti.

Richiesta. Testo= "SCEGLIERE
RAPPRESENTAZIONE(VERO) COME Booleano,
RAPPRESENTAZIONE (4) COME Numero,
RAPPRESENTAZIONE (Source.Link) AS Link,
RAPPRESENTAZIONE(DATETIME(2016,10,07)) COME Data"
;
// Booleano = "Sì", Numero = "4", Link = "Documento ordine di ricevuta di cassa n.... da..."
// Data="10/07/2016 0:00:00"

Richiesta. Testo= "SCEGLIERE
RAPPRESENTAZIONERIFERIMENTO(VERO) AS Booleano,
RAPPRESENTAZIONERIFERIMENTO(4) COME NUMERO
PRESENTINGLINK(Source.Link) AS Link,
RAPPRESENTAZIONERIFERIMENTO(DATETIME(2016,10,07)) AS Data"
;
// Booleano = TRUE, Numero = 4, Link = "Ordine di ricevuta di cassa documento n.... da..."
// Data=07.10.2016 0:00:00

Funzioni TIPO E TIPO VALORI

Funzione TIPO restituisce il tipo di dati della piattaforma 1C:Enterprise.

Richiesta. Testo= "SCEGLIERE
TIPO (Numero)
TIPO (stringa),
TIPO (Documento. Spese Cash Order)"
;

Funzione TIPO VALORI restituisce il tipo del valore passatogli.

Richiesta. Testo= "SCEGLIERE
VALUETYPE(5) AS Numero,
TIPO ("
"Linea" ") AS Stringa,
TIPO (Source.Link) AS Riferimento
Dalla Directory.Source AS Source"
;
//Numero=Numero, Stringa=Stringa, Directory = DirectoryLink.Source

Queste funzioni sono comode da utilizzare, ad esempio, quando è necessario scoprire se un campo ricevuto in una richiesta è un valore di qualche tipo. Ad esempio, otteniamo le informazioni di contatto delle controparti dal registro delle informazioni ContactInformation (qui vengono archiviati i contatti non solo delle controparti, ma anche di organizzazioni, individui, ecc.):

Richiesta. Testo= "SCEGLIERE

DA

DOVE
VALORI TIPO(ContactInformation.Object) = TIPO(Directory.Controparti)"
;

Funzione SENSO

Funzione Senso consente di utilizzare oggetti di configurazione 1C direttamente in una richiesta, senza utilizzare .

Aggiungiamo un'altra condizione all'esempio precedente. Hai solo bisogno di ottenere i numeri di telefono delle tue controparti.

Richiesta. Testo= "SCEGLIERE
Informazioni di contatto.Introduzione
DA
Registro delle informazioni Informazioni di contatto COME Informazioni di contatto
DOVE
VALORI TIPO(ContactInformation.Object) = TIPO(Directory.Controparti)
AND ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Va notato che questa funzione può essere utilizzata solo con valori predefiniti, ad es. con valori accessibili direttamente dal configuratore. Questa è la funzione SENSO non può essere utilizzato con elementi di directory creati dagli utenti, ma può funzionare con enumerazioni, con elementi di directory predefiniti, con valori Collegamento vuoto.

Operatore COLLEGAMENTO

Operatore COLLEGAMENTOè progettato per controllare i valori restituiti da una richiesta per vedere se appartengono a un tipo di riferimento specifico. Lo stesso compito può essere eseguito utilizzando le funzioni TIPO E TIPO VALORI(che hanno una portata più ampia e sono stati discussi sopra).

Ad esempio, il compito di selezionare le informazioni di contatto per le controparti potrebbe essere risolto in questo modo:

Richiesta. Testo= "SCEGLIERE
Informazioni di contatto.Introduzione
DA
Registro delle informazioni Informazioni di contatto COME Informazioni di contatto
DOVE
ContactInformation.Object LINK Directory.Counterparties"
;

Operatore ESPRIMERE

Operatore ESPRIMERE utilizzato nelle query 1C in due casi:

  • quando è necessario modificare le caratteristiche di un tipo primitivo;
  • quando è necessario trasformare un campo con un tipo di dati composto in un campo con un singolo tipo.

I tipi di dati primitivi includono: numero, stringa, data, booleano. Alcuni di questi tipi di dati hanno caratteristiche aggiuntive. Tipo Numero ha lunghezza e precisione, tipo Linea - lunghezza o illimitato.

Operatore ESPRIMERE consente di modificare non il tipo di dati, ma caratteristiche aggiuntive. Ad esempio, può trasformare una stringa di lunghezza illimitata in una stringa di lunghezza limitata. Ciò può essere utile se è necessario raggruppare i risultati della query in base a tale campo. Non puoi raggruppare per campi con una lunghezza illimitata, quindi lo convertiamo in una stringa con una lunghezza di 200 caratteri.

Richiesta. Testo= "SCEGLIERE
QUANTITÀ (ARRIVO DIVERSO DI BENI E SERVIZI. Link) AS Link
DA
Documento Ricezione di beni e servizi COME Ricezione di beni e servizi
RAGGRUPPA PER
EXPRESS(Ricevuta di beni e servizi. Commento AS ROW (200))"
;

In alcuni casi, le query sui campi con un tipo di dati composito potrebbero non essere elaborate in modo ottimale dalla piattaforma 1C. Ciò comporta tempi di query più lunghi, quindi può essere utile convertire in anticipo un tipo composto in un tipo singolo.

Richiesta. Testo= "SCEGLIERE
EXPRESS(Movimento del fatturato delle merci.Documento AS ordine.Ordine cliente).Data AS Data ordine,
Movimento delle merci. Fatturato. Nomenclatura
DA
RegisterAccumulations.Movimento di merci.Fatturato AS Movimento di merciFatturato
DOVE
Movimento Merci Fatturato.Ordine LINK Documento.Ordine Cliente"
;

Operatori SCELTA E È ZERO

Operatore SCELTA simile all'operatore SE nel linguaggio 1C integrato, ma ha funzionalità leggermente ridotte.

Supponiamo di voler ricevere le informazioni di contatto dal registro informativo ContactInformation e, allo stesso tempo, indicare in un campo di richiesta separato se appartiene ad una controparte o ad un individuo.

Richiesta. Testo= "SCEGLIERE
ContactInformation.Introduzione,
SCELTA
QUANDO VALORI TYPE(ContactInformation.Object) = TYPE(Directory.Counterparties)
POI "
Controparte "
ALTRA SCELTA
QUANDO VALORI TYPE(ContactInformation.Object) = TYPE(Directory.Individuals)
POI "
Individuale"
ALTRO "Qualcun altro" "
FINE
FINE COME PROPRIETARIO
DA
Registro delle informazioni. Informazioni di contatto AS Informazioni di contatto"
;

Come si può vedere dall'esempio, nel design SCELTA c'è sempre una condizione dopo la parola QUANDO; il valore da applicare se la condizione è vera, dopo la parola POI e il valore applicato se la condizione non è soddisfatta dopo la parola ALTRIMENTI. Tutti e tre gli elementi strutturali SCELTA sono obbligatori. Ometti l'elemento ALTRIMENTI, proprio come avviene quando si utilizza l'operatore SE nel linguaggio integrato 1C, è impossibile. Anche dall'operatore SCELTA non esiste alcun analogo del design ALTRIMENTI, ma puoi investirne uno SCELTA nell'altro, come è stato fatto nel nostro esempio.

Operatore È ZERO utilizzato nella progettazione SCELTA per confrontare il campo di richiesta con il tipo NULL.

Richiesta. Testo= "SCEGLIERE
SCELTA
QUANDO IL VALORE È NULLO ALLORA 0
ALTRO Significato
FINE"
;

Inoltre, l'operatore È ZERO può essere utilizzato in condizioni di query, ad esempio in una frase DOVE.

In questo articolo vogliamo discutere di tutto con te Funzioni del linguaggio di query 1C, E costrutti del linguaggio di interrogazione. Qual è la differenza tra funzionalità e design? La funzione viene chiamata con parentesi e i possibili parametri al loro interno e il costrutto viene scritto senza parentesi. Indubbiamente tutte le strutture e le funzioni del linguaggio di query 1C rendere il processo di acquisizione dati flessibile e multifunzionale. Queste funzioni e costrutti si applicano ai campi richiesta e alcuni si applicano anche alle condizioni.

Funzioni del linguaggio di query 1C

Perché una descrizione chiara Funzioni del linguaggio di query 1Cè molto meno comune delle descrizioni delle strutture, abbiamo deciso di iniziare a guardare alle funzioni. Ora vediamoli singolarmente, descrivendone scopo, sintassi ed esempio di utilizzo, quindi:

1. Funzione APPUNTAMENTO- questa funzione crea un campo costante di tipo "Data".

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

Esempio di utilizzo:

2. Funzione DIFFERENZA DATA- restituisce la differenza tra due date in una delle dimensioni (anno, mese, giorno, ora, minuto, secondo). La misura viene passata come parametro.

Sintassi: DATA DIFFERENZIATA(<Дата1>, <Дата2>, <Тип>)

Esempio di utilizzo:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), GIORNO) | AS Qtà.Giorni";

3. Funzione VALORE- imposta un campo costante con un record predefinito dal database; puoi anche ottenere un collegamento vuoto di qualsiasi tipo.

Sintassi: VALORE(<Имя>)

Esempio di utilizzo:

Request.Text = "SELECT //elemento predefinito | VALUE(Directory.Currencies.Dollar) AS Dollaro, //link vuoto | VALUE(Document.Receipt of Goods and Services.EmptyLink) AS Receipt, //transfer value | VALUE(Transfer . Persona giuridica. Persona fisica) Persona fisica AS, //conto predefinito | VALORE(Piano dei conti. Autoportante. Materiali) Conto AS_10" ;

4. Funzione SELEZIONA- abbiamo davanti a noi un analogo della costruzione IF, che viene utilizzata nel codice, solo che questa viene utilizzata nelle query 1C.

Sintassi: SCEGLI QUANDO<Выражение>POI<Выражение>ALTRIMENTI<Выражение>FINE

Esempio di utilizzo:

Request.Text = //se l'importo è superiore a 7500, allora dovrebbe esserci uno sconto di 300 rubli, //quindi se la condizione viene attivata, la funzione //restituisce Sum - 300 //altrimenti la richiesta restituirà semplicemente Sum "SELECT | SELECT | WHEN TCReceipts.Amount > 7500 | THEN TCReceipts.Amount - 300 | ELSE TCReceipts.Amount | END AS AmountWithDiscount |FROM | Document.Receipt of GoodsServices.Goods AS TCReceipts";

5. Funzione ESPRESSA- permette di esprimere un campo costante con un tipo specifico.

Sintassi: EXPRESS(NomeCampo AS NomeTipo)

Esempio di utilizzo:

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 Numero | FROM | RegisterAccumulations.Purchases AS Purchases";

Esiste un'altra opzione per utilizzare la funzione EXPRESS nei campi di tipo misto, dove si trovano? L'esempio più semplice è il “Registrar” per qualsiasi registro. Allora perché potremmo aver bisogno di qualificare il tipo nel registrar? Consideriamo la situazione quando selezioniamo il campo "Numero" dal registrar, da quale tabella verrà selezionato il numero? La risposta corretta a tutti! Pertanto, affinché la nostra query funzioni rapidamente, dovremmo specificare un tipo esplicito utilizzando la funzione EXPRESS

Esempio di utilizzo:

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. Funzione VAL.NULL(ortografia alternativa ISNULL) - se il campo è di tipo NULL, viene sostituito con il secondo parametro della funzione.

Sintassi: È ZERO(<Поле>, <ПодставляемоеЗначение>)

Esempio di utilizzo:

Tieni inoltre presente che è consigliabile sostituire SEMPRE il tipo NULL con qualche valore, perché il confronto con il tipo NULL restituisce sempre FALSE anche se si confronta NULL con NULL. Molto spesso, i valori NULL si formano come risultato dell'unione di tabelle (tutti i tipi di join tranne quelli interni).

Query.Text = //Seleziona l'intero articolo e i suoi saldi //se non c'è saldo in alcuni articoli, allora ci sarà un campo //NULL che verrà sostituito con il valore 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Resto | DA | Directory.Nomenclatura AS N. | COLLEGAMENTO SINISTRA Registro accumuli. BeniInMagazzini. Rimanenze AS BeniInMagazziniRemains | ON (BeniInMagazziniRemains. Nomenclatura = N. Link)";

7. Funzione di RAPPRESENTAZIONE- permette di ottenere una rappresentazione del campo richiesta.

Sintassi: PRESTAZIONE(<НаименованиеПоля>)

Esempio di utilizzo:

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

Costruisce nel linguaggio di query 1C

Ne abbiamo discusso con te sopra Funzioni del linguaggio di query 1C, ora è il momento di considerare costrutti nel linguaggio di query 1C, non sono meno importanti e utili, cominciamo.

1. LINK di costruzione- è un operatore di controllo del tipo di riferimento logico. Si verifica più spesso quando si confronta un campo di tipo complesso con un tipo specifico. Sintassi: COLLEGAMENTO<Имя таблицы>

Esempio di utilizzo:

Request.Text = //se il tipo di valore del registratore è ricevuta del documento, //allora la query restituirà "Ricevuta di merci", altrimenti "Vendite di merci" "SELECT | SELECT | WHEN Remainings.Registrar LINK Document.Receipt of Goods e Servizi | THEN ""Ricevuta"" | ELSE ""Consumi"" | END AS Tipologia Movimento | FROM | Registro di Accumulo. Rimanenze Prodotti nei Magazzini AS Rimanenze" ;

2. Progettare TRA- questo operatore controlla se il valore rientra nell'intervallo specificato.

Sintassi: FRA<Выражение>E<Выражение>

Esempio di utilizzo:

Request.Text = //recupera l'intera nomenclatura il cui codice è compreso tra 1 e 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code BETWEEN 1 AND 100" ;

3. GERARCHIA di costruzione B e B- verificare se il valore è presente nell'elenco trasferito (array, tabelle di valori, ecc. possono essere trasferiti come elenco). L'operatore IN HIERARCHY permette di visualizzare la gerarchia (un esempio di utilizzo del piano dei conti).

Sintassi: IN(<СписокЗначений>), NELLA GERARCHIA(<СписокЗначений>)

Esempio di utilizzo:

Request.Text = //seleziona tutti i sottoconti del conto "SELECT | Autoportante. Collega conto AS | DA | Piano dei conti. Autoportante AS Autoportante | DOVE | Autoportante. Link IN GERARCHIA VALORE (Grafico di Conti. Autosufficienza. Beni)";

4. Design SIMILE- questa funzione ci permette di confrontare una stringa con uno schema di stringhe.

Sintassi: COME "<ТекстШаблона>"

Opzioni del modello di riga:

% - una sequenza contenente un numero qualsiasi di caratteri arbitrari.

Un carattere arbitrario.

[...] - qualsiasi singolo carattere o sequenza di caratteri elencati tra parentesi quadre. L'enumerazione può specificare intervalli, ad esempio a-z, ovvero un carattere arbitrario incluso nell'intervallo, comprese le estremità dell'intervallo.

[^...] - qualsiasi singolo carattere o sequenza di caratteri elencati tra parentesi quadre eccetto quelli elencati dopo il segno di negazione.

Esempio di utilizzo:

Query.Text = //trova l'intera nomenclatura che contiene la radice TABUR e inizia //con una lettera minuscola o maiuscola t "SELECT | Nomenclatura. Link | FROM | Directory. Nomenclature AS Nomenclature | WHERE | Prodotti. Nome LIKE "" [Tt ]abur%""" ;

5. Progettazione AMMESSA- questo operatore consente di selezionare dal database solo i record per i quali il chiamante ha il permesso di lettura. Questi diritti sono configurati a livello di record (RLS).

Sintassi: ALLOWED viene scritto dopo la parola chiave SELECT

Esempio di utilizzo:

Request.Text = "SELECT CONSENTITO | Controparti. Link | FROM | Directory. Controparti AS Controparti";

6. Progettazione VARIE- consente di selezionare i record in cui non sono presenti record duplicati.

Sintassi: VARIOUS è scritto dopo la parola chiave SELECT

Esempio di utilizzo:

Request.Text = //seleziona i record sui quali il lettore ha diritti "SELECT VARIOUS | Controparti.Nome |FROM | Directory. Controparti AS Controparti" ;

Inoltre, la costruzione VARIE può essere utilizzata con l'operatore CONSENTITO e altri operatori.

Esempio di utilizzo:

Request.Text = //seleziona vari record su cui il lettore ha diritti "SELECT ALLOWED VARIOUS | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties";

7. Progetta PRIMA- seleziona il numero di record specificati nel parametro dal risultato della query.

Sintassi: PRIMO<число>

Esempio di utilizzo:

Request.Text = //seleziona i primi 4 numeri CCD dalla directory "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers";

8. Progettare PER IL CAMBIAMENTO- permette di bloccare una tabella, funziona solo nelle transazioni (rilevante solo per i blocchi automatici).

Sintassi: PER CAMBIARE<НаименованиеТаблицы>

Esempio di utilizzo:

Query.Text = "SELECT | Residui liberi Residui. Nomenclatura, | Residui liberi Residui. Magazzino, | Residui liberi Residui. In magazzino Residui | DA | Registro degli accumuli. Residui liberi. Residui AS Residui liberi Residui | FOR CHANGE | Registro degli accumuli .Residui liberi.Residui";

9. ORDINA PER- organizza i dati in un campo specifico. Se il campo è un collegamento, quando si imposta il flag ORDINE AUTOMATICO L'ordinamento avverrà in base alla rappresentazione del collegamento; se il flag è disattivato, i collegamenti verranno ordinati in base all'anzianità dell'indirizzo del collegamento in memoria.

Sintassi: ORDINA PER<НаименованиеПоля>ORDINE AUTOMATICO

Esempio di utilizzo:

Query.Text = "SELECT | Rimanenze libere Rimanenze. Nomenclatura AS Nomenclatura, | Rimanenze libere Rimanenze. Magazzino AS Magazzino, | Rimanenze libere Rimanenze. Rimanente in magazzino | DA | Registra accumuli. Rimanenze libere. Rimanente AS Rimanenze libere rimanenti | | ORDER BY | Nomenclatura | PULIZIA ORDINE AUTOMATICA";

10. Progettazione GRUPPO PER- utilizzato per raggruppare le stringhe di query in base a campi specifici. I campi numerici devono essere utilizzati con qualsiasi funzione aggregata.

Sintassi: RAGGRUPPA PER<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Esempio di utilizzo:

Query.Text = "SELEZIONA | ProductsInWarehouses.Nomenclature AS Nomenclature, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.InStock) AS INSTOCK |FROM | RegisterAccumulations.ProductsInWarehouses AS ProductsInWarehouses | |GRUPPO PER | ProductsInWarehouses.Nomenclature, | ProductsIn Warehouses.Warehouse" ;

11. Progettare AVERE- consente di applicare una funzione aggregata a una condizione di selezione dei dati, simile alla costruzione WHERE.

Sintassi: AVENDO<агрегатная функция с условием>

Esempio di utilizzo:

Query.Text = //seleziona i record raggruppati in cui il campo InStock è maggiore di 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInStocks AS ItemsInStocks | | GRUPPO PER | ProductsInWarehouses.Nomenclature, | ProductsInWarehouses.Warehouse | |DISPONIBILE | IMPORTO(ProductsInWarehouses.InStock) > 3" ;

12. INDICE PER costrutto- utilizzato per indicizzare il campo della query. Il completamento di una query con indicizzazione richiede più tempo, ma accelera la ricerca nei campi indicizzati. Può essere utilizzato solo nelle tabelle virtuali.

Sintassi: INDICE PER<Поле1, ... , ПолеN>

Esempio di utilizzo:

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. Progetta DOVE- consente di imporre una condizione su qualsiasi campo della selezione. Nel risultato verranno inclusi solo i record che soddisfano la condizione.

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

Esempio di utilizzo:

Query.Text = //seleziona tutti i record con CompensationRemainder<>0 e //AmountForCalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemaining, | CompensationRPORemains.AmountForCalcCompRemains |Place DataTz |FROM | Accumulation Register.CompensationRP.Remains AS CompensationRPOstat ki |WHERE |CompensationRPORemain ing.CompensazioneRemaining<>0| E CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. RISULTATI della progettazione... GENERALE- utilizzato per calcolare i totali; la progettazione specifica i campi in base ai quali verranno calcolati i totali e le funzioni di aggregazione applicate ai campi totali. Quando si utilizzano i totali per ciascun campo dopo la costruzione TOTAL, i dati vengono raggruppati. Esiste un costrutto GENERAL facoltativo; il suo utilizzo fornisce anche un raggruppamento aggiuntivo. Di seguito vedrai un esempio del risultato della richiesta.

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

Esempio di utilizzo:

Request.Text = "SELECT | Calcoli. Accordo di controparte. Tipo di accordo Tipo di contratto AS, | Calcoli. Accordo di controparte Contratto AS, | Calcoli. Controparte, | Calcoli. Importo del saldo di regolamento reciproco Saldo AS | DA | Registro degli accumuli. Mutuo Regolamento CON Controparti. Saldi AS Calcoli | TOTALE | IMPORTO (Saldo) | Software | GENERALE, | Tipo di contratto";

Nella figura sono schematizzati i raggruppamenti che si sono formati durante l'esecuzione della richiesta, quello superiore si riferisce alla sezione GENERALE, il secondo al campo Controparte AccordoTipo Accordo.

Richiesta . Testo = "SCEGLIERE | StorageUnits.Link |DA | Directory.usStorageUnits COME utilizzareStorageUnits // Esempio 1: confronto con un valore booleano vuoto: |DOVE | StorageUnits.AllowSelectionFromReserveZone = False // Esempio 2. ma se questo booleano è definito, allora è meglio così: // condizione per un booleano negativo: |DOVE | NON unità di stoccaggio Consenti la selezione dalla zona di riserva // Esempio 3. selezione in base alla condizione di un campo vuoto che ha il tipo “directory di un tipo specifico” |DOVE | StorageUnits.ActiveSelectionArea = VALUE(Directory.usSelectionArea.EmptyRef) // Esempio 3a. selezione in base alla condizione di un campo vuoto avente la tipologia “documento di tipo specifico” |DOVE | OurInformationRegister.Document = VALUE(Document.OurDocument.EmptyLink) // Esempio 3b. selezione basata sulla condizione di un campo vuoto avente la tipologia “documenti di diversa tipologia” ( campo composito) |DOVE | (OurInformationRegister.Document = VALUE(Document.OurDocument1.EmptyLink) | OR OurInformationRegister.Document = VALUE(Document.OurDocument2.EmptyLink) | OR... (ecc. - elenchiamo in sequenza le condizioni per tutti i possibili tipi di questo campo composito) ) // Esempio 4. o viceversa, se è necessario selezionare un valore riempito del tipo "stringa", la condizione aiuterà: |DOVE | Nome unità di archiviazione > """" // Esempio 5. se è necessario selezionare documenti di un tipo specifico, con un tipo di dati composito, ad esempio, nel registro "RunningTasks", la risorsa "Task" ha un tipo composito, tra i valori di cui il documento "Selezione" è possibile |DOVE | EXPRESS(Informazioni RegisterExecutedTasks.Task AS Document.Selection) LINK Document.Selection // Esempio 5a. Un altro esempio simile quando è necessario selezionare documenti di un tipo specifico | SCELTA | QUANDO ESPRESSARE (ag Corrispondenza di documenti. Documento BU AS Documento. Ricevuta di beni e servizi) LINK Documento. Ricevuta di beni e servizi | POI ""Ricezione di beni e servizi"" | QUANDO ESPRIMERE (ag Corrispondenza di documenti. Documento BU AS Documento. Vendite di beni e servizi) LINK Documento. Vendite di beni e servizi | POI ""Vendite di beni e servizi"" | ALTRO """" | FINE COME Vista documento // Esempio 6. selezione per condizione di un valore indefinito: |DOVE | SavedSettings.User = NON DEFINITO // Esempio 7. selezione per tipo di movimento "In entrata" del registro di accumulo, "Spese" - allo stesso modo): |DOVE | RegProductsInRetail.MovementType = VALUE(MovementTypeAccumulation.Incoming) // Esempio 8. Come indicare in una richiesta che non è necessario eseguire la richiesta (ad esempio, è necessario a livello di codice, a seconda di alcune condizioni, restituire un risultato della richiesta vuoto - Request.Text = StrReplace(Request.Text, "DOVE Doc.Link = &DocumentLink" , "DOVE È LA BUGIA");). Per fare ciò basta aggiungere la condizione “Dov’è Falso”. A proposito, indipendentemente dal volume di dati richiesti nel campione, tale richiesta verrà eseguita immediatamente. |DOV'È LA BUGIA // Esempio 9. Verifica che il risultato della query contenga dati: AltrimentiRichiesta.Eseguire().Vuoto() Poi // Esempio 10. selezione basata su una data vuota: |DOVE | tbStrings.CancellationDate = DATETIME(1, 1, 1)

In questo articolo analizzeremo le possibilità di conversione del tipo nel linguaggio di query 1C, fornite dalla funzione “Express”.
Diamo un'occhiata a diverse opzioni per l'utilizzo di questa funzione.
E la prima opzione è arrotondare i numeri.

Per fare ciò, è necessario utilizzare la funzione Express nel seguente formato:

Esprimere(<Число>come Numero(<ДлинаЧисла>,<Точность>))

Dove:
Numero- il campo che deve essere arrotondato
LunghezzaNumeri— lunghezza massima del numero
Precisione— precisione dell'arrotondamento dei numeri

I parametri sia lunghezza che precisione devono essere numeri interi positivi.
Guarda come funziona questa funzione nell'immagine qui sotto.

Il secondo caso d'uso è lo string casting. Molto spesso le configurazioni utilizzano stringhe di lunghezza illimitata, il che impone alcune restrizioni. Ad esempio, non possiamo confrontare stringhe di lunghezza illimitata.
Nella query seguente, il campo FullName è di tipo stringa di lunghezza illimitata e questa query non funzionerà.

Affinché funzioni, è necessario convertire un campo di lunghezza illimitata in una stringa con una certa lunghezza, questo viene fatto utilizzando Express nella seguente funzione di formato:

Esprimere(<Строка>come String(<ДлинаСтроки>)

Dove
Lunghezza della linea– la lunghezza massima alla quale verrà ridotta la corda.
Rifacciamo la query: nella condizione porteremo una stringa illimitata a una stringa di una certa lunghezza. Quindi non ci saranno errori.

Consideriamo l'ultima e, direi, la variante più importante della sua applicazione: quando si lavora con campi di tipo composito.
Di seguito sono riportate due query che utilizzano campi compositi. Il primo è sbagliato e il secondo è corretto.

Quelli. quando è necessario ottenere un campo di tipo composito, ottenere sempre il valore di questo campo solo dopo aver eseguito il casting del tipo utilizzando la funzione Express. In questo caso, i documenti e i libri di consultazione avranno il seguente formato:

Esprimere(<Документ>come documento.<ИмяТаблицы>)
Esprimere(<Справочник>come Direttorio.< ИмяТаблицы >)
.

Dove
NomeTabella— nome dell'oggetto in formato .

Utilizza sempre la funzione express quando lavori con tipi compositi, questo ottimizza notevolmente la query.

Se stai ancora “fluttuando” nelle costruzioni del linguaggio di query, e anche le query più semplici ti causano difficoltà, allora ti consiglio il mio corso “Richieste in 1C dal principiante al professionista”. Dove queste e molte altre questioni vengono discusse in modo più dettagliato.

Cosa ha di speciale questo corso:
Il corso è pensato per chi non ha familiarità con il linguaggio di interrogazione in 1C;
Il materiale didattico è ben strutturato e facile da apprendere;
Diverse dozzine di lezioni;
Esempi pratici utili;
Tutte le lezioni sono presentate in un linguaggio chiaro e semplice

Per i miei lettori, buono sconto del 25%: hrW0rl9Nnx

Cerco di pubblicare vari articoli gratuiti interessanti e tutorial video il più spesso possibile. Pertanto, sarò molto felice se sosterrai il mio progetto trasferendo qualsiasi importo:

Puoi trasferire direttamente qualsiasi importo:
Yandex.Money - 410012882996301
Web Money - R955262494655

Unisciti ai miei gruppi.

I migliori articoli sull'argomento