Casa / Browser / 1c 8.3 riporta il calcolo nei campi personalizzati. Linguaggio di espressione del sistema di composizione dei dati (1Cv8). Operazione per verificare se esiste un valore in un set di dati

1c 8.3 riporta il calcolo nei campi personalizzati. Linguaggio di espressione del sistema di composizione dei dati (1Cv8). Operazione per verificare se esiste un valore in un set di dati

Linguaggio di espressione del sistema di composizione dei dati

Il linguaggio delle espressioni del sistema di composizione dei dati è progettato per registrare le espressioni utilizzate in varie parti del sistema.

Le espressioni vengono utilizzate nei seguenti sottosistemi:

  • schema di composizione dei dati - per descrivere i campi calcolati, i campi totali, le espressioni di collegamento, ecc.;
  • impostazioni di composizione dei dati - per descrivere espressioni di campo personalizzate;
  • layout della composizione dei dati - per descrivere le espressioni di relazione del set di dati, descrivere i parametri di layout, ecc.

letterali

L'espressione può contenere letterali. Possibili letterali dei seguenti tipi:

  • Linea;
  • Numero;
  • L'appuntamento;
  • booleano.

Linea

Una stringa letterale è scritta nei caratteri """, ad esempio:

"Stringa letterale"

Se è necessario utilizzare il carattere """ all'interno della stringa letterale, è necessario utilizzare due di questi caratteri.

Per esempio:

“letterale ““tra virgolette“““

Numero

Il numero viene scritto senza spazi, in formato decimale. Parte frazionaria separati dal carattere "." Per esempio:

10.5 200

l'appuntamento

Un valore letterale di tipo data viene scritto utilizzando il valore letterale chiave DATETIME. Dopodichè parola chiave, tra parentesi, separati da virgole, sono riportati l'anno, il mese, il giorno, le ore, i minuti, i secondi. Non è richiesta l'indicazione dell'ora.

Per esempio:

DATETIME(1975, 1, 06) - 6 gennaio 1975 DATETIME(2006, 12, 2, 23, 56, 57) - 2 dicembre 2006, 23:56:57 secondi, 23:56:57 secondi

booleano

I valori booleani possono essere scritti usando i letterali True (True), False (False).

Significato

Per specificare valori letterali di altri tipi (enumerazioni di sistema, dati predefiniti), viene utilizzata la parola chiave Value, seguita dal nome letterale tra parentesi.

Valore(Tipo conto. Attivo)

Operazioni sui numeri

unario -

Questa operazione è progettata per invertire il segno di un numero. Per esempio:

Vendite.Quantità

Unario +

Questa operazione non esegue alcuna operazione sul numero. Per esempio:

Vendite.Quantità

binario -

Questa operazione serve per calcolare la differenza di due numeri. Per esempio:

SaldiEFatturati.Saldo Iniziale - SaldiEFatturato.EndBalance SaldiEFatturato.Saldo Iniziale - 100 400 - 357

binario +

Questa operazione serve per calcolare la somma di due numeri. Per esempio:

SaldiEFatturato.Saldo Iniziale + SaldiEFatturato.Fatturato SaldiEFatturato.Saldo Iniziale + 100 400 + 357

Opera

Questa operazione serve per calcolare il prodotto di due numeri. Per esempio:

Nomenclatura Prezzo * 1.2 2 * 3.14

Divisione

Questa operazione ha lo scopo di ottenere il risultato della divisione di un operando per un altro. Per esempio:

Nomenclatura Prezzo / 1.2 2 / 3.14

Resto della divisione

Questa operazione ha lo scopo di ottenere il resto della divisione di un operando da parte di un altro. Per esempio:

Nomenclatura Prezzo % 1.2 2 % 3.14

Operazioni sulle stringhe

Concatenazione (binario +)

Questa operazione è progettata per concatenare due stringhe. Per esempio:

Nomenclatura.Articolo + “: ”+ Nomenclatura.Descrizione

Piace

Questa operazione controlla se una stringa corrisponde al modello dato.

Il valore dell'operatore LIKE è TRUE se il valore<Выражения>corrisponde al modello, altrimenti FALSE.

I seguenti personaggi in<Строке_шаблона>hanno un significato diverso da un semplice altro carattere nella stringa:

  • % - percentuale: una sequenza contenente zero o più caratteri arbitrari;
  • _ - sottolineatura: uno carattere arbitrario;
  • […] - uno o più caratteri tra parentesi quadre: un carattere, uno qualsiasi di quelli indicati tra parentesi quadre. Un'enumerazione può contenere intervalli, come a-z, che significa qualsiasi carattere all'interno dell'intervallo, comprese le estremità dell'intervallo;
  • [^…] - tra parentesi quadre un'icona di negazione seguita da uno o più caratteri: qualsiasi carattere diverso da quelli elencati dopo l'icona di negazione;

Qualsiasi altro simbolo significa di per sé e non comporta alcun carico aggiuntivo. Se è necessario scrivere uno dei caratteri elencati come se stesso, deve essere preceduto da<Спецсимвол>Il specificato dopo la parola chiave ESCAPE.

Ad esempio, modello

“%ABC[abc]\_abc%” CARATTERE SPECIALE “\”

indica una sottostringa costituita da una sequenza di caratteri: lettere A; lettere B; lettere B; una cifra; una delle lettere a, b, c o d; carattere di sottolineatura; lettere a; lettere b; lettere dentro. Inoltre, questa sequenza può essere individuata a partire da una posizione arbitraria nella stringa.

Operazioni di confronto

È uguale a

Questa operazione è progettata per confrontare due operandi per l'uguaglianza. Per esempio:

Sales.Counterparty = Sales.NomenclatureMainSupplier

Non uguale

Questa operazione è progettata per confrontare due operandi per la disuguaglianza. Per esempio:

Vendite.Appaltatore<>Nomenclatura.VenditeMainSupplier

Meno

Questa operazione ha lo scopo di verificare che il primo operando sia minore del secondo. Per esempio:

SalesCurrent.Amount< ПродажиПрошлые.Сумма

Di più

Questa operazione ha lo scopo di verificare che il primo operando sia maggiore del secondo. Per esempio:

SalesCurrent.Amount > SalesPast.Amount

Meno o uguale

Questa operazione ha lo scopo di verificare che il primo operando sia minore o uguale al secondo. Per esempio:

SalesCurrent.Amount<= ПродажиПрошлые.Сумма

Più o uguale

Questa operazione ha lo scopo di verificare che il primo operando sia maggiore o uguale al secondo. Per esempio:

SalesCurrent.Amount >= SalesPast.Amount

Operazione B

Questa operazione verifica la presenza di un valore nell'elenco di valori passato. Il risultato dell'operazione è True se viene trovato il valore, altrimenti False. Per esempio:

Articolo B (&Articolo1, &Articolo2)

Operazione per verificare se esiste un valore in un set di dati

L'operazione verifica se esiste un valore nel set di dati specificato. Il dataset di convalida deve contenere un campo. Per esempio:

Vendite Appaltatore agli appaltatori

NULL controlla l'operazione

Questa operazione restituisce True se il valore è NULL. Per esempio:

L'appaltatore di vendita è NULLO

L'operazione di controllo di un valore per non NULL

Questa operazione restituisce True se il valore non è NULL. Per esempio:

Sales.Appaltatore NON È NULLO

Operazioni booleane

Le operazioni booleane accettano come operandi espressioni di tipo booleano.

Operazione NON

L'operatore NOT restituisce True se il suo operando è False e restituisce False se il suo operando è True. Per esempio:

NON Documento.Destinatario = Documento.Mittente

Operazione E

L'operazione AND restituisce True se entrambi gli operandi sono True e restituisce False se uno degli operandi è False. Per esempio:

Document.Destinatario = Documento.Mittente AND Document.Destinatario = &Appaltatore

O operazione

L'operazione OR restituisce True se uno degli operandi è True e False se entrambi gli operandi sono False. Per esempio:

Document.Destinatario = Documento.Mittente OPPURE Document.Destinatario = &Appaltatore

Funzioni aggregate

Le funzioni aggregate eseguono alcune azioni su un insieme di dati.

Somma

La funzione Sum aggregate calcola la somma dei valori delle espressioni passate come argomento per tutti i record dettagliati. Per esempio:

Importo(Vendite.ImportoFatturato)

Quantità

La funzione Conteggio conta il numero di valori non nulli. Per esempio:

Quantità (vendite. Appaltatore)

Numero di diversi

Questa funzione conta il numero di valori distinti. Per esempio:

Quantità (Varie Vendite. Appaltatore)

Massimo

La funzione ottiene il valore massimo. Per esempio:

Massimo(Resti. Quantità)

Minimo

La funzione riceve valore minimo. Per esempio:

Minimo (Saldo. Quantità)

Media

La funzione ottiene la media per valori non nulli. Per esempio:

Media(Resti. Quantità)

Altre operazioni

Operazione SELEZIONA

L'operazione Seleziona è progettata per selezionare uno tra diversi valori in determinate condizioni. Per esempio:

Seleziona Quando Somma > 1000 Quindi Somma Altro 0 Fine

Regole per confrontare due valori

Se i tipi dei valori confrontati differiscono l'uno dall'altro, la relazione tra i valori viene determinata in base alla precedenza dei tipi:

  • NULL (il più basso);
  • booleano;
  • Numero;
  • L'appuntamento;
  • Linea;
  • Tipi di riferimento

Le relazioni tra diversi tipi di riferimento sono definite in base ai numeri di riferimento delle tabelle corrispondenti a un particolare tipo.

Se i tipi di dati corrispondono, i valori vengono confrontati secondo le seguenti regole:

  • tipo Boolean TRUE è maggiore di FALSE;
  • tipo Numero ha le consuete regole di confronto per i numeri;
  • per il tipo Data, le date precedenti sono inferiori a quelle successive;
  • per il tipo String - confronti di stringhe secondo le caratteristiche nazionali stabilite della banca dati;
  • i tipi di riferimento vengono confrontati in base ai loro valori (numero di record, ecc.).

Lavorare con NULL

Qualsiasi operazione in cui il valore di uno degli operandi è NULL produrrà un risultato NULL.

Ci sono eccezioni:

  • l'operazione AND restituirà NULL solo se nessuno degli operandi è False;
  • l'operazione OR restituirà NULL solo se nessuno degli operandi è True.

Priorità operative

Le operazioni hanno le seguenti priorità (la prima riga ha la priorità più bassa):

  • B, È NULLA, NON È NULLA;
  • =, <>, <=, <, >=, >;
  • Binario +, Binario – ;
  • *, /, %;
  • Unario +, Unario -.

Funzioni del linguaggio delle espressioni del sistema di composizione dei dati

Calcolare

La funzione Calcola è progettata per calcolare un'espressione nel contesto di un raggruppamento. La funzione ha i seguenti parametri:

  • Espressione. Digitare Stringa. Contiene un'espressione calcolata;
  • Raggruppamento. Digitare Stringa. Contiene il nome del raggruppamento nel cui contesto deve essere valutata l'espressione. Se viene utilizzata una stringa vuota come nome di raggruppamento, il calcolo verrà eseguito nel contesto del raggruppamento corrente. Se la stringa GrandTotal viene utilizzata come nome del raggruppamento, il calcolo verrà eseguito nel contesto del totale generale. In caso contrario, il calcolo verrà eseguito nel contesto del raggruppamento padre con quel nome. Per esempio:
Amount(Sales.AmountFatturato) / Calcola("Amount(Sales.AmountFatturato)", "TotaleTotale")

A questo esempio di conseguenza, otterrai il rapporto tra l'importo nel campo "Sales.AmountTurnover" del record di raggruppamento e l'importo dello stesso campo nell'intero layout.

Livello

La funzione è progettata per ottenere il livello di registrazione corrente.

Livello()

Numero in ordine

Ottieni il numero di sequenza successivo.

Numero d'ordine()

NumberIn OrderInGrouping

Restituisce il numero di sequenza successivo nel raggruppamento corrente.

NumberInOrderInGroup()

Formato

Ottieni la stringa formattata del valore passato.

La stringa di formato è impostata in base a stringa di formato 1C: Impresa.

Opzioni:

  • Significato;
  • Stringa di formato.

Formato(Fatture di spesa.AmountDoc, "VAN=2")

Inizio periodo

Opzioni:

    • Minuto;
    • Giorno;
    • Una settimana;
    • Mese;
    • Trimestre;
    • Decennio;
    • Metà anno.

PeriodoInizio(DataOra(2002, 10, 12, 10, 15, 34), "Mese")

Risultato:

01.10.2002 0:00:00

FinePeriodo

La funzione è progettata per estrarre una data specifica da una data determinata.

Opzioni:

  • L'appuntamento. Digitare Data. data data;
  • Tipo di periodo. Digitare Stringa. Contiene uno dei seguenti valori:
    • Minuto;
    • Giorno;
    • Una settimana;
    • Mese;
    • Trimestre;
    • Decennio;
    • Metà anno.

EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Settimana")

Risultato:

13.10.2002 23:59:59

Aggiungi data

La funzione è progettata per aggiungere un valore alla data.

Opzioni:

  • Tipo di ingrandimento. Digitare Stringa. Contiene uno dei seguenti valori:
    • Minuto;
    • Giorno;
    • Una settimana;
    • Mese;
    • Trimestre;
    • Decennio;
    • Metà anno.
  • Valore - di quanto vuoi aumentare la data. Digitare il numero. La parte frazionaria viene ignorata.

AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mese", 1)

Risultato:

12.11.2002 10:15:34

Differenza Data

La funzione è progettata per ottenere la differenza tra due date.

Opzioni:

  • Espressione. Digitare Data. data originale;
  • Espressione. Digitare Data. Data sottratta;
  • Tipo di differenza. Digitare Stringa. Contiene uno dei seguenti valori:
    • Secondo;
    • Minuto;
    • Giorno;
    • Mese;
    • Trimestre;

DATEDIFF(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "DAY")

Risultato:

Sottostringa

Questa funzione progettato per estrarre una sottostringa da una stringa.

Opzioni:

  • Linea. Digitare Stringa. La stringa da cui viene estratta la sottostringa;
  • Posizione. Digitare il numero. La posizione del carattere da cui inizia la sottostringa da estrarre dalla stringa;
  • Lunghezza. Digitare il numero. La lunghezza della sottostringa selezionata.

SUBSTRING(Account.Indirizzo, 1, 4)

Lunghezza della corda

La funzione è progettata per determinare la lunghezza di una stringa.

Parametro:

  • Linea. Digitare Stringa. La stringa di cui viene determinata la lunghezza.

Stringa(Account.Indirizzo)

Anno

Questa funzione è progettata per estrarre l'anno da un valore di tipo Data.

Parametro:

  • L'appuntamento. Digitare Data. La data entro la quale viene determinato l'anno.

ANNO (Data Inc. Scad.)

Trimestre

Questa funzione è progettata per estrarre il numero del trimestre dal valore del tipo Data. Il numero di blocco normalmente varia da 1 a 4.

Parametro

  • L'appuntamento. Digitare Data. La data entro la quale viene determinato il trimestre
TRIMESTRE(Data.Fattura)

Mese

Questa funzione è progettata per estrarre il numero del mese da un valore di tipo Data. Il numero del mese è normalmente compreso tra 1 e 12.

  • L'appuntamento. Digitare Data. La data entro la quale viene determinato il mese.
MESE(Data.Fattura)

Giorno dell'anno

Questa funzione è progettata per ottenere il giorno dell'anno da un valore di tipo Data. Il giorno dell'anno varia normalmente da 1 a 365(366).

  • L'appuntamento. Digitare Data. La data entro la quale viene determinato il giorno dell'anno.
GIORNO DELL'ANNO(Exp.Inc.Date)

Giorno

Questa funzione è progettata per ottenere il giorno del mese da un valore di tipo Date. Il giorno del mese normalmente va da 1 a 31.

  • L'appuntamento. Digitare Data. La data entro la quale vengono determinati i giorni del mese.
GIORNO (Data Inc. Scad)

Una settimana

Questa funzione è progettata per ottenere il numero della settimana dell'anno da un valore di tipo Data. Le settimane dell'anno sono numerate a partire da 1.

  • L'appuntamento. Digitare Data. La data entro la quale vengono determinati i numeri delle settimane.
SETTIMANA (Data Inc. Scad)

Giorno della settimana

Questa funzione è progettata per ottenere il giorno della settimana da un valore di tipo Data. Il giorno della settimana varia normalmente da 1 (lunedì) a 7 (domenica).

  • L'appuntamento. Digitare Data. La data entro la quale viene determinato il giorno della settimana.
GIORNO DELLA SETTIMANA(Exp.Inc.Date)

Ora

Questa funzione è progettata per ottenere l'ora del giorno da un valore di tipo Data. L'ora del giorno varia da 0 a 23.

  • L'appuntamento. Digitare Data. La data entro la quale viene determinata l'ora del giorno.
ORA(Data.Fattura)

Minuto

Questa funzione è progettata per ottenere i minuti dell'ora da un valore di tipo Data. I minuti dell'ora vanno da 0 a 59.

  • L'appuntamento. Digitare Data. La data entro la quale viene determinato il minuto dell'ora.
MINUTO (Data Inc. Scad)

Secondo

Questa funzione è progettata per ottenere i secondi di un minuto da un valore di tipo Data. Il secondo di un minuto va da 0 a 59.

  • L'appuntamento. Digitare Data. La data entro la quale vengono determinati i secondi del minuto.
SEC(Data Inc. Scad.)

esprimere

Questa funzione è progettata per estrarre un tipo da un'espressione che può contenere un tipo composto. Se l'espressione contiene un tipo diverso dal tipo richiesto, verrà restituito NULL.

Opzioni:

  • L'espressione da convertire;
  • Indicazione del tipo. Digitare Stringa. Contiene una stringa di tipo. Ad esempio, "Numero", "Stringa", ecc. Oltre ai tipi primitivi, questa stringa può contenere il nome di una tabella. In questo caso, si tenterà di esprimere un riferimento alla tabella specificata.

Express(Data.Attribute1, "Numero(10,3)")

È zero

Questa funzione restituisce il valore del secondo parametro se il valore del primo parametro è NULL.

In caso contrario, verrà restituito il valore del primo parametro.

IsNULL(Amount(Sales.AmountFatturato), 0)

Funzioni comuni del modulo

Un'espressione del motore di composizione dati può contenere chiamate a funzioni globali. moduli comuni configurazione. Non è richiesta alcuna sintassi aggiuntiva per chiamare tali funzioni.

In questo esempio, la funzione "ShortName" verrà richiamata dal modulo di configurazione generale.

Si noti che l'uso delle funzioni del modulo condiviso è consentito solo se è specificata l'opzione del processore di composizione dei dati corrispondente.

Inoltre, le funzioni del modulo comuni non possono essere utilizzate nelle espressioni di campo personalizzate.

Abbiamo considerato in dettaglio le impostazioni dei rapporti implementati sulla base di ACS. Ora diamo un'occhiata al più sottile impostazioni dettagliate opzioni di rapporto. La finestra delle impostazioni delle varianti del rapporto "avanzate" viene richiamata dal comando "Altro" - "Altro" - "Cambia variante del rapporto".

La finestra per la modifica di una variante del report è suddivisa in due parti:

1. La struttura del rapporto.

2. Impostazioni del rapporto.


La sezione della struttura di una variante del rapporto è simile alla scheda "Struttura" delle impostazioni del rapporto standard. Lo scopo e la configurazione dei raggruppamenti sono discussi in dettaglio nella parte 1 dell'articolo.

La tabella di struttura della variante del report, oltre alla colonna con i raggruppamenti, contiene diverse colonne aggiuntive:

La sezione delle impostazioni delle varianti del rapporto offre all'utente ampie possibilità di configurare il rapporto in base alle proprie esigenze. Coincide quasi completamente con le impostazioni dei report standard discusse nella Parte 1. Esaminiamo tutte le schede della sezione e notiamo le differenze.

La sezione delle impostazioni è composta dalle seguenti schede:

1. Opzioni. Contiene i parametri ACS disponibili per l'utente.

Parametro ACS: alcuni valori utilizzati per ottenere i dati del report. Può essere un valore di condizione per la selezione o la convalida dei dati, nonché un valore ausiliario.


La tabella dei parametri è presentata nel formato "Parametro" - "Valore". Se necessario, è possibile modificare i valori dei parametri. Facendo clic sul pulsante "Impostazioni utente Proprietà elemento" si aprono le impostazioni utente dell'elemento.


In questa finestra è possibile scegliere se includere l'elemento nelle impostazioni dell'utente (ovvero visibile all'utente durante la configurazione del report), impostare la modalità di presentazione e modifica dell'elemento (accesso rapido nell'intestazione del report, normale nel report impostazioni e inaccessibile).

Le proprietà degli elementi delle impostazioni personalizzate hanno anche campi di raggruppamento, margini, selezioni ed elementi di stile condizionale.

2. Campi personalizzati. Contiene i campi che l'utente stesso forma in base ai dati selezionati dal report.


L'utente può aggiungere due tipi di campi:

  • Nuovo campo di selezione...
  • Nuovo campo di espressione...

I campi di selezione consentono di calcolare un valore in base a una condizione specificata. La finestra di modifica del campo di selezione contiene il titolo del campo e una tabella in cui sono specificati la selezione, il valore e la presentazione del campo. La selezione è una condizione, a seconda della quale verrà sostituito il valore desiderato.


Ad esempio, calcoliamo una stima del numero di vendite. Assumiamo che se si vendono meno di 10 unità di merce, si vende poco e se si vendono più di 10 unità, si vende molto. Per fare ciò, imposteremo 2 valori del campo calcolato: il primo sarà con la selezione "Numero di prodotti minore o uguale a "10"", il secondo con la selezione "Numero di prodotti maggiore di "10" "".

I campi di espressione consentono di calcolare un valore utilizzando algoritmi arbitrari. Possono utilizzare le funzioni del linguaggio di interrogazione e del linguaggio di programmazione 1C integrato. La finestra di modifica del campo delle espressioni contiene due campi per le espressioni dei record dettagliati e di riepilogo. I record di riepilogo sono raggruppamenti configurati nell'area "Struttura report", devono utilizzare funzioni di aggregazione ("Somma", "Minimo", "Massimo", "Quantità").

Ad esempio, calcoliamo la percentuale media di sconto. La percentuale media di sconto viene calcolata utilizzando la formula: [Importo delle vendite senza sconto] - [Importo delle vendite con uno sconto] / [Importo delle vendite senza sconto]. Va ricordato che l'importo delle vendite senza sconto può essere zero, quindi utilizziamo l'operatore SELECT per verificare. Otteniamo le seguenti espressioni:

· Per voci dettagliate:

Scelta

Quando [Somma delle vendite senza sconto] = 0

Quindi 0

Altrimenti [Vendite senza sconto] - [Vendite con sconto] / [Vendite senza sconto]

Fine

· Per le voci di riepilogo:

Scelta

Quando Importo([Importo delle vendite senza sconto]) = 0

Quindi 0

Altrimenti importo([importo delle vendite senza sconto]) - importo([importo delle vendite con sconto]) / importo([importo delle vendite senza sconto])

Fine

Come accennato in precedenza, nell'espressione dei record totali, utilizziamo funzione aggregata"Somma".

3. Campi raggruppati. Contiene i campi in base ai quali verrà raggruppato il risultato della variante del report. I campi di raggruppamento sono configurati separatamente per ciascuno dei raggruppamenti, ma è possibile impostare campi di raggruppamento comuni per una variante del report se si seleziona la radice "Report" nell'albero della struttura. È possibile aggiungere un campo dal risultato del report, un campo personalizzato o selezionare un campo automatico, quindi il sistema selezionerà automaticamente i campi. Questa scheda consente anche di modificare l'ordine dei campi raggruppati.


4. Campi. Contiene i campi che verranno visualizzati nel risultato della variante del rapporto. I campi sono configurati separatamente per ciascuno dei raggruppamenti, ma è possibile impostare campi comuni per una variante del report se si seleziona la radice "Report" nell'albero della struttura. È possibile aggiungere un campo dal risultato del report, un campo personalizzato o selezionare un campo automatico, quindi il sistema selezionerà automaticamente i campi. Questa scheda consente anche di modificare l'ordine dei campi.

I campi possono essere raggruppati per evidenziare logicamente qualsiasi parte del report o impostare una specifica disposizione delle colonne. Quando si aggiunge un gruppo, la colonna "Posizione" diventa attiva e consente di selezionare una delle opzioni di posizione:

  • Auto - il sistema dispone i campi automaticamente;
  • Orizzontalmente: i campi sono disposti orizzontalmente;
  • Verticalmente: i campi sono disposti verticalmente;
  • In una colonna separata: i campi si trovano in colonne diverse;
  • Insieme: i campi sono disposti in una colonna.


5. Selezione. Contiene i filtri utilizzati nella variante del rapporto. L'impostazione dei filtri è stata discussa in dettaglio nella parte 1 di questo articolo. I filtri sono configurati separatamente per ciascuno dei raggruppamenti, ma è possibile impostare filtri generali per una variante del report se si seleziona la radice "Report" nell'albero della struttura.


6. Ordinamento. Contiene i campi di ordinamento utilizzati in una variante del report. L'impostazione dei campi di ordinamento è stata discussa in dettaglio nella parte 1 di questo articolo. L'ordinamento è configurato separatamente per ciascuno dei raggruppamenti, ma è possibile impostare campi di ordinamento comuni per una variante del report se si seleziona la radice "Report" nell'albero della struttura.


7. Progettazione condizionale. Contiene elementi di progettazione condizionali utilizzati in una variante del report. L'impostazione della formattazione condizionale è stata discussa in dettaglio nella parte 1 di questo articolo. La progettazione condizionale è configurata separatamente per ciascuno dei raggruppamenti, ma è possibile impostarla elementi comuni aspetto condizionale per una variante del report, se si seleziona la radice "Report" nell'albero della struttura.


8. Impostazioni aggiuntive. Contiene ulteriori impostazioni di progettazione del report. Consente di selezionare un generale aspetto esteriore report, l'ubicazione di campi, raggruppamenti, attributi, risorse, totali, impostare le impostazioni del grafico, controllare la visualizzazione del titolo, dei parametri e della selezione, determinare la posizione delle risorse e correggere l'intestazione e le colonne dei raggruppamenti della variante del report.


In conclusione, vorrei sottolineare che le impostazioni del rapporto non solo possono essere salvate come variante del rapporto, ma possono anche essere caricate su un file (menu "Altro" - "Salva impostazioni"). Per scaricare, seleziona "Carica impostazioni" e seleziona il file salvato. Pertanto, possiamo trasferire le impostazioni delle varianti del rapporto tra database diversi che hanno la stessa configurazione.


Sulla base di ciò, possiamo riassumere che l'utente può non solo personalizzare il rapporto in base alle sue esigenze, ma anche salvare le sue impostazioni e utilizzarle in futuro, se necessario.

Rapporti su sistema di composizione dei dati(SKD) nelle moderne configurazioni 1C sono diventati lo standard. Sono convenienti in quanto gli utenti possono modificare le impostazioni da soli senza l'aiuto dei programmatori. Questo sarà discusso ulteriormente.

La versione modificata del report è facilmente memorizzabile nel database e utilizzata parallelamente a quella originale. Allo stesso tempo, se qualcosa è andato storto, puoi tornare a impostazioni predefinite. In modalità utente, è possibile aggiungere un campo aggiuntivo a qualsiasi report sull'ACS, impostare la selezione, il raggruppamento, l'ordinamento o la formattazione condizionale su di esso.

Prendi in considerazione l'aggiunta di un campo personalizzato con un esempio rapporto standard Tasso di rotazione del personale in configurazione 1C: Retribuzione e gestione del personale 3.1.

Il tasso di rotazione nel report può essere calcolato per l'organizzazione nel suo insieme o per posizione. Supponiamo di dover scoprire il tasso di rotazione per la categoria del personale, che è un elenco di posizioni.

Attenzione! Nelle configurazioni precedenti, ciò richiederebbe l'aggiunta puntelli aggiuntivi Categoria alla directory Posizioni e quindi sviluppare la propria versione del rapporto, che tenga conto di questi dati.

Ma con SKD tutto è diventato molto più semplice.

1. Innanzitutto, salva una nuova versione del rapporto facendo clic sul pulsante Seleziona una variante del rapporto o salvane una nuova: salva la variante del rapporto:

Nella finestra che si apre, inserisci il nome della nuova versione del rapporto, quindi fai clic sul pulsante Salva. Utente con diritti Amministratore può salvare l'impostazione per tutti gli utenti.

2. Ora aggiungiamo il nostro campo. Vai al menu Tutte le azioni(o Ancora nell'interfaccia 1C 8.3) — Altro — Variante del rapporto di modifica.

Quindi vai alla scheda Campi personalizzati nella parte inferiore del modulo di modifica della variante, fare clic sul pulsante Aggiungi - Nuovo campo di selezione:

Compiliamo il nome del nostro campo e andiamo in fondo al modulo, dove divideremo i post nelle categorie di cui abbiamo bisogno. Clic Aggiungere, compila il valore del campo e la sua presentazione, quindi procedi alla modifica della selezione cliccando su "..." nella colonna Selezione:

Nella parte sinistra della finestra, seleziona il campo Titolo di lavoro, fai doppio clic o trascina e rilascia per spostarlo nella tabella di destra. Scegli il tipo di confronto Elencato, quindi procedere alla modifica dell'elenco facendo clic sul pulsante "..." nella colonna Significato:

Compila la lista con le posizioni necessarie manualmente o tramite il pulsante Selezione. Ad esempio, nella categoria Amministrativo assegnare la posizione Direttore e Amministratore, nella categoria lineare -Venditore e Ragioniere, e nella categoria Sicurezza -Capo della sicurezzae guardia di sicurezza.

Attenzione! T tipo di valore elenco - Numero e inseriamo il nome della categoria nel campo Prestazione. Se ai valori della lista viene assegnato immediatamente il tipo Linea, non saremo in grado di configurare il filtraggio corretto per questo campo in futuro. Il filtraggio per campi stringa è configurato solo secondo il principio Riempito/Non compilato.

3. Ora impostiamo la selezione. Vai alla scheda Selezione. Stiamo cercando una cartella alla fine dell'elenco a sinistra Campi personalizzati, e in esso c'è il campo Categoria del personale, lo spostiamo sul lato destro.

Quindi fare clic con il pulsante destro del mouse sulla riga di selezione e selezionare l'elemento Impostazioni utente Proprietà elemento.

Alzando la bandiera Includi nelle impostazioni utente e selezionare la modalità di modifica Accesso rapido . Ciò ti consentirà di gestire le impostazioni di selezione per categoria di personale direttamente nell'intestazione del rapporto.

4. Ora aggiungiamo il raggruppamento per campo personalizzato. Per fare ciò, dopo aver raggruppato per campi Organizzazione e Periodo di formazione aggiungere un raggruppamento per categoria di personale e trasferirvi il raggruppamento per posizione. Quindi seleziona il raggruppamento Categoria personale e vai alla scheda Altre impostazioni . Alzando la bandiera L'elemento corrente ha le proprie impostazioni aggiuntive, stiamo cercando il parametro nell'elenco inferiore Posizionamento dei totali generali in verticale e impostarne il valore su Fine.

5. Proviamo a generare un report:

Il rapporto nel suo insieme è pronto, ma se necessario può essere leggermente migliorato.

6. Il raggruppamento per categoria di personale sarà ordinato allo stesso modo dell'elenco che abbiamo compilato in precedenza. Se vuoi ordinare in modo diverso, ma, ad esempio, in ordine decrescente, possiamo andare alla scheda Ordinamento, aggiungi la categoria personale all'elenco dei campi e configurala come segue:

Tieni presente che i campi personalizzati sono ordinati per valore, non per visualizzazione.

7. È possibile configurare la formattazione condizionale per i campi del report. Per fare ciò, vai alla scheda Aspetto condizionale e aggiungi alla lista nuovo elemento. Scegli una scheda Condizione, aggiungi il campo richiesto sul lato destro e configuralo:

Sulla scheda Decoro impostiamo il design richiesto per i campi che soddisfano la condizione. Ad esempio, il colore del carattere è rosso. Salva la nostra impostazione:

Ora il rapporto si presenta così:

Aggiunta di report già pronti con le tue colonne.
Puoi aggiungere i tuoi Campi ai rapporti realizzati utilizzando lo "Schema di composizione dei dati" dalla modalità utente, che verrà visualizzato durante la generazione.
In questi campi è consentito applicare operazioni aritmetiche.

Molto tempo fa ho scritto il rapporto "Vendite di merci tramite spedizione" http://infostart.ru/public/16477/. In questa pubblicazione non ne discuteremo la rilevanza e i meriti. Questo rapporto sarà preso come modello per esperimenti, modifiche. Inoltre, nei commenti hanno chiesto come aggiungere i campi.

Apri "Impostazioni..." e vai alla scheda "Impostazioni utente".

2. Aggiungi "Nuova espressione campo"

L'aggiunta di campi è una prescrizione di operazioni aritmetiche tra i campi disponibili (questo è consentito contrassegnato da un quadrato verde). Anche una caratteristica, se il nome di un tale campo è composto da due o più parole, deve essere racchiuso tra parentesi quadre. Ottieni in questo modo - [Importo di vendita].

Dopo il salvataggio, questo campo sarà disponibile per la selezione:

Qui, con l'aiuto di semplici manipolazioni, ottieni il valore di cui hai bisogno. Questa opportunità lascia aggiungere campi richiesti. In tali opzioni di calcolo di cui hai bisogno. Redditività, efficienza e altri valori saranno considerati nella tua logica di calcolo aritmetico.

In questo caso, il tuo lavoro non andrà perso e la prossima volta che aprirai il report potrai usarlo.

Funzioni utilizzate durante la scrittura dei campi.

  • L'aritmetica " + , - , * , / " è chiaro con questo, penso che non sia necessario spiegare il principio della loro azione.
  • Le espressioni booleane vengono utilizzate per definire le selezioni. " > ,< , = , >= , <= , <>, E, O, NON". Queste espressioni vengono utilizzate con l'operazione di selezione.
  • Operazioni di selezione. Applicare per ottenere uno dei possibili valori in conformità con le condizioni specificate

SCELTA
QUANDO< Операция выбора >POI<Выражение>
ALTRIMENTI<Выражение>
LA FINE
Esempio:
SCELTA
QUANDO Quantità > 0 e Importo > 0 ALLORA "Corretto"
ALTRO "Errore"
LA FINE

Questo viene decifrato come segue: purché la quantità sia maggiore di zero e gli importi siano maggiori di zero, verrà visualizzata la scritta “Corretto” e se almeno una delle condizioni non è soddisfatta, verrà visualizzato “Errore”.

  • Funzione integrata, consente di eseguire determinate trasformazioni con i campi.

SUBSTRING ("Espressione", "Posizione iniziale", "Posizione finale") - seleziona la parte dell'"Espressione", delimitata dai frame "Inizio ..." e "Fine ...".
In che modo ciò accade con il valore Nomenclatura - La formula "Incolla di cioccolato" Sottostringa(Nomenclature,1,5) visualizzerà il valore "Incolla"

Le funzioni vengono utilizzate per lavorare con le date.

ANNO(<Дата>), TRIMESTRE(<Дата>), MESE(<Дата>), GIORNO(<Дата>), GIORNO(<Дата>), UNA SETTIMANA(<Дата>),GIORNO DELLA SETTIMANA(<Дата>),ORA(<Дата>), MINUTO(<Дата>), SEC(<Дата>)

Verrà visualizzato il valore corrispondente al nome della funzione.

BEGINNING("Data", "Periodo turno"), ENDPERIOD("Data", "Periodo turno"). Per i dati di funzione, il valore di Date Expression è all'inizio o alla fine della data specificata.

ADDDATE ("Data", "Periodo di spostamento", "Importo di cui si desidera aumentare la data"): la funzione consente di aumentare o diminuire la data di un determinato valore.

DIFFERENCEDATE ("Date1", "Date2", "Shift period") - La funzione è progettata per ottenere la differenza tra due date.

"Periodo di turno" è uno dei "Minuti, Ora, Giorno, Settimana, Mese, Trimestre, Anno, Decennio, Semestre".

5.Le funzioni aggregate del linguaggio di interrogazione vengono utilizzate quando si raggruppano i risultati del calcolo dei totali

SOMMA (<>) la somma aritmetica di tutti i valori nel campione.
MEDIA (<>) calcola il valore medio di tutti quelli del campione
MINIMO (<>) calcola il valore minimo di tutti i valori nel campione
MASSIMO (<>) calcola il valore massimo di tutti i valori nel campione
QUANTITÀ (<>) conta il numero di valori dei parametri inclusi nella selezione. Questa funzione ti consente di avere casi d'uso. NUMBER(*) - consente di contare il numero di righe nel risultato. NUMBER(DIFFERENT "Expression") - consente di contare il numero di valori diversi del campo specificato.

Importo(Scelta
Quando Sottostringa(Nomenclature, 1, 5) = "Incolla"
Quindi Quantità *0,2
Altra quantità *0,35
Fine)

La somma dei valori si otterrà in questo caso, quando all'inizio del nome della nomenclatura è presente “Incolla”, in questo caso la quantità aumenta di 0,2; se non presente aumenta di 0,35.

Anno([Data.Documento])

Verrà visualizzato l'anno in cui il documento è stato registrato/pubblicato.

Un esempio più complesso, senza decodifica.

Scelta
Quando Quarter([Document.Date]) = 1 AND Substring(Nomenclature, 1, 5) = "Incolla"
Quindi Quantità * 0,2
Altra scelta
Quando Quarter([Document.Date]) = 2
Quindi Quantità * 0,3
Altra scelta
Quando Quarter([Document.Date]) = 3
Quindi Quantità * 0,4
Altra scelta
Quando Quarter([Document.Date]) = 4
Quindi Quantità * 0,5
Fine
Fine
Fine
Fine

Il report riceve il saldo delle merci nei magazzini nelle varie sezioni (caratteristiche, serie, unità di misura, ecc.). Per non complicare l'esempio, lasceremo solo il raggruppamento per voce e l'output del solo saldo finale alla data del report. La tabella finale mostrerà i saldi delle scorte per articolo nei magazzini.

Ma poi l'utente ha detto che ha bisogno di aggiungere due campi aggiuntivi:

  1. Notifica di quantità. Se la quantità è inferiore o uguale a 5, l'avviso è "Insufficiente". Se il numero è maggiore di 5, quindi minore o uguale a 10, l'avviso è "Normale". Se la quantità è maggiore di 10, allora "Sovrabbondanza".
  2. La formula per calcolare il saldo finale. In una colonna aggiuntiva, l'utente vuole vedere quali azioni ha eseguito il programma per ottenere il valore del saldo finale. Ovvero la formula "Saldo iniziale + Fatturato = Saldo finale", in cui verranno sostituiti i valori corrispondenti.

Naturalmente qui il programmatore potrebbe intervenire e modificare la richiesta dello schema di composizione dei dati e le impostazioni del report, ma completeremo l'operazione in modalità utente senza modificare il report in modalità configuratore.

Campi aggiuntivi

E quindi, iniziamo. Andiamo alle impostazioni dell'opzione di rapporto:

Il costruttore delle impostazioni delle opzioni si aprirà di fronte a noi. rapporto SKD. Iniziamo a crearli andando nella scheda "Campi personalizzati".

Lo screenshot mostra già due campi personalizzati creati, la cui funzionalità è stata descritta sopra. Considera le impostazioni per ciascuno. Iniziamo con il campo Avviso.

Nel setup è necessario impostare il titolo del campo che verrà visualizzato nel report, nonché impostare le espressioni per generare il valore nel campo dei record dettagliati e nei totali di questo campo. Poiché non è necessario mostrare l'avviso nei totali, scriveremo un'espressione solo per i record dettagliati.

La sintassi dell'espressione è simile al linguaggio di query 1C:Enterprise. Ci sono alcune differenze, ma non le toccheremo in dettaglio in questo articolo. L'espressione utilizza un operatore select:

"Scelta quando poi altrimenti finisce",

simile a un operatore in un linguaggio di query. I campi nelle espressioni di campo personalizzate sono specificati dalla loro rappresentazione. Affinché la piattaforma comprenda che la vista inserita denota un determinato campo, il nome della vista è racchiuso tra parentesi quadre "". Se la rappresentazione del campo ha una sola parola, le parentesi quadre sono facoltative. Nell'esempio sopra, ci riferiamo al campo "Saldo finale".

Le impostazioni per il campo "Formula per il calcolo del saldo finale" sono impostate in modo simile:


Qui è necessario menzionare alcune sfumature:

  1. Possiamo mostrare la formula in una cella solo come una stringa. Pertanto, convertiamo tutti i valori numerici in una stringa utilizzando il metodo "String()" del linguaggio delle espressioni ACS, che converte qualsiasi valore in una stringa. Quindi eseguiamo la concatenazione di stringhe.
  2. Affinché il campo venga visualizzato nei totali del report, aggiungiamo una formula simile all'espressione dei record totali. Devi solo aggiungere le funzioni di aggregazione "SUM()" per ogni valore in base ai totali.

Tutto è pronto per utilizzare i campi del report!

Impostazione e generazione di un report

Ai campi di output del report verrà aggiunto il campo "Formula per il calcolo del consuntivo":

L'espressione "Avviso" verrà aggiunta ai record dettagliati dell'articolo. Per fare ciò, aggiungi il campo dell'espressione "Avviso" al raggruppamento "Nomenclatura". Successivamente, la struttura del rapporto assumerà la seguente forma:

Il rapporto è impostato su questo. Se necessario, le impostazioni aggiunte possono essere salvate per il riutilizzo. Generiamo un rapporto:

Come possiamo vedere, i campi sono stati aggiunti al report in base alle condizioni dell'attività. Allo stesso tempo non è stato necessario modificare il report in modalità configuratore. Questo è il principale vantaggio dei campi personalizzati! Un utente che è stato formato per usarli può usarli per creare un report delle proprie esigenze da solo, senza la partecipazione di un programmatore.

Credimi, puoi insegnargli come utilizzare queste funzionalità, perché è molto più semplice che scrivere formule nei fogli di calcolo di Excel.