skd campi funzione calcolati. Linguaggio di espressione del sistema di composizione dei dati (1Cv8)

Schema di composizione dei dati (1C SKD)- un comodo designer per creare report complessi in prodotti software 1C:Enterprise che contribuiscono allo sviluppo e al monitoraggio dell'automazione della produzione, consentendoti di renderli il più flessibili e belli possibile in un minimo di tempo. Un ulteriore vantaggio degli schemi di composizione dei dati (1C SKD) è la generazione automatica di un modulo di report controllato e, con l'ulteriore sviluppo di questa direzione, è un fattore importante nella scelta di un metodo di sviluppo del report. Ma a causa della complessità della struttura del Data Composition Scheme (1C SKD) e dell'enorme numero di impostazioni, spesso porta a uno sviluppo del report più lungo rispetto al "costruttore di moduli di output". Pertanto, un programmatore 1C deve comprendere tutte le complessità del Data Composition Scheme (1C SKD) al fine di accelerare ulteriormente i tempi di sviluppo per la generazione di report.

Analizziamo le prime tre schede del Data Composition Scheme (1C SKD): set di dati, collegamenti a set di dati e campi calcolati.

Dati impostati in 1C SKD

Il set di dati include la possibilità di creare tre oggetti: query, oggetto e unione, soffermiamoci su ciascuno di essi in modo più dettagliato:

Rappresenta una query regolare generata dal pulsante Costruttore di query. Se il flag di completamento automatico è impostato, tutti i dettagli selezionati cadranno automaticamente nei campi del set di dati. È inoltre possibile personalizzare la compilazione dei campi della richiesta nella scheda Composizione dati, dove sono presenti tre schede:

Tabelle, qui selezioni le tabelle che parteciperanno alla generazione del rapporto, di solito viene selezionato il dato predefinito, poiché nella scheda Tabelle e campi abbiamo già selezionato i documenti, le directory, i registri di cui abbiamo bisogno ...

Campi, qui selezioniamo quegli oggetti che dovrebbero essere inclusi nel report, il flag figlio indica se ci saranno o meno elementi figlio disponibili per l'oggetto, è logico che per dati stringa, numerici e simili non sarà possibile impostare la bandiera a Vero.

Condizioni, qui selezioniamo quegli oggetti che possono essere utilizzati nelle condizioni nell'ACS.

Parte del lavoro viene svolto nello schema di composizione dei dati, parte in modo programmatico, diamo un'occhiata a un semplice esempio:

Per prima cosa, creiamo un layout dello schema di layout dei dati per il documento e lo chiamiamo SKD (ad esempio: 1C SKD), creiamo un set di dati oggetto in esso, quindi riempiamo i campi, ad esempio, abbiamo una parte tabellare di il documento merci con i dettagli - nomenclatura, quantità e prezzo.

Aggiungiamo tre campi e riempiamo il campo per ogni colonna con il nome dei dettagli, le restanti colonne verranno compilate automaticamente:

Creiamo un pulsante sul modulo del documento, descriviamo il meccanismo di lavoro nei moduli gestiti:

&AtCliente

Procedura Stampa()

NostroReport = PrintOnServer(); // chiama la funzione sul server

OurReport.Show(); //output del rapporto generato

EndProcedura

&Sul server

Funzione Stampa su server()

OggettoDocumento = AttributoFormatoValore("Oggetto");

//posizioniamo la parte tabellare Merci nella struttura con il nome MerciSKD allo stesso modo in cui abbiamo indicato il nome dell'oggetto contenente i dati nello stesso ACS

DataSet = Nuova struttura;

DataSet.Insert("Merce SKD", OggettoDoc.Merce);

//ottenere il nostro layout e impostare le impostazioni predefinite in modo che tutte le impostazioni di output del rapporto siano prese dal nostro layout

OurLayout = DocumentObject.GetLayout ("SKD");

Impostazioni = OurLayout.Impostazioni predefinite;

//crea il layout del layout dei dati con le nostre impostazioni

Generatore di layout di layout = Nuovo generatore di layout di layout di dati;

LayoutLayout = LayoutComposer.Run(OurLayout, Impostazioni);

//eseguire la composizione dei dati con il nostro set di dati

DataCompositionProcessor = Nuovo DataCompositionProcessor;

DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

//formiamo un foglio di calcolo e vi mostriamo il nostro report

ReportDocument = Nuovo SpreadsheetDocument;

OutputProcessor = Nuovo OutputProcessorofDataCompositionResultIntoSpreadsheetDocument;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

ResoDocumentoReport;

Funzioni finali

Se lo desideri, puoi ottenere aree e qualsiasi altro layout e visualizzarlo anche in questo report, ad esempio, abbiamo un layout tipico per generare un ordine di pagamento e un'intestazione è molto ben creata in esso, quindi, in modo da non Non dobbiamo fare un lavoro extra, prima otteniamo il layout, visualizziamo l'intestazione, quindi genereremo e visualizzeremo il nostro rapporto sull'ACS.

o unificazione

Possiamo inserire le nostre query e oggetti al suo interno, ma a differenza di una connessione, aggiunge semplicemente tabelle l'una all'altra, cioè se colleghiamo due tabelle identiche, ne ritroveremo una e, una volta combinate, raddoppierà, considererà un semplice esempio:

Abbiamo tabelle:

Una volta contattati, riceveremo:

E quando combinato:

Consideriamo ora la compilazione delle colonne nei set di dati (ne salteremo alcuni, poiché sono correlati ad altre schede, torneremo su di essi nei prossimi articoli):

- campo, specificare il nome generale dell'attributo;

­­- sentiero, specificare il nome dell'attributo con cui ci riferiremo ad esso nell'ACS, ad esempio in Campi calcolati;

- intestazione, specificare il nome dell'attributo che verrà visualizzato nel report;

- vincolo di margine, indicare la disponibilità di questo attributo;

- limitazione degli oggetti di scena, indichiamo la disponibilità di elementi figlio, è importante che se viene specificata la disponibilità dei dettagli, il campo stesso sarà disponibile, forse questa meccanica verrà modificata nelle versioni future;

- espressione con cui viene calcolata la rappresentazione del campo, è comodo da usare quando è necessario modificare un po' l'output dei dettagli, ad esempio dopo il nome nomenclatura visualizzato magazzino, dove si trova, quindi compilare quanto segue: Nomenclatura + “è disponibile” + Magazzino. Ripeto che l'indirizzo dei dati viene effettuato tramite il nominativo indicato nella colonna sentiero;

- espressione ordinatrice, un comodo meccanismo per impostare l'ordinamento del report, dove la condizione può essere impostata manualmente, simile al paragrafo precedente, ma come dimostra la pratica, questo meccanismo spesso non funziona come vorremmo, e ti consiglio di utilizzare lo standard ordinamento;

- tipo di valore, è indicato il tipo di valore dell'attributo, è necessario compilare se si utilizza il campo seguente;

- valori disponibili, funziona solo quando è riempito tipo di valore, apri il modulo di compilazione e nella colonna Senso indichiamo l'elemento da modificare, a seconda del tipo, può essere oggetti predefiniti o numerici, ad esempio gli attributi hanno valori semplici, in sottomissione indica cosa dobbiamo cambiare, un esempio di tipo booleano:

- registrazione– l'impostazione standard del formato del campo, simile all'impostazione nei moduli gestiti, consente di personalizzare in modo più accurato e bello l'output di un determinato attributo.

Collegamenti a set di dati in 1C SKD

Solo qui unisciti a sinistra, in modo simile a connessioni nelle richieste, fonte di comunicazione specificare la tabella principale per la connessione, in ricevitore aggiuntivo. V espressione di origine e espressione del ricevitore specificare i dettagli con cui avverrà la connessione. Considereremo le colonne rimanenti in modo più dettagliato quando analizzeremo la scheda Parametri. Se non è presente alcuna connessione aggiuntiva con i parametri, si consiglia di effettuare la connessione nella richiesta, ciò accelererà il rapporto.

Alla luce dell'imminente rilascio della 8.2.14, cercherò di descrivere alcune delle nuove funzionalità del sistema di composizione dei dati.

Apriamo lo schema di composizione dei dati, preferibilmente in un report esterno, in modo che sia più facile da modificare.

Aggiungiamo un set di dati di query e scriviamo, manualmente o utilizzando il generatore di query, la query più semplice:

1. Impostare una richiesta nell'ACS.

2. Impostare i campi calcolati in ACS

3. Configuriamo il layout dei dati nella scheda delle impostazioni

4. Lanciamo 1C Enterprise 8.2.14. Apriamo il rapporto. Formiamo, riceviamo.

Descrizione delle nuove funzionalità stesse:

1. La data corrente()

Restituisce la data di sistema. Quando si traccia il layout del layout, in tutte le espressioni presenti nel layout, la funzione CurrentDate() viene sostituita dal valore della data corrente.

2. CALCOLARE ESPRESSIONE()

Sintassi:

Calcola espressione(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

Descrizione:

La funzione è progettata per valutare un'espressione nel contesto di alcuni raggruppamenti.

La funzione tiene conto della selezione dei raggruppamenti, ma non tiene conto delle selezioni gerarchiche.

La funzione non può essere applicata a un raggruppamento nella selezione del gruppo di quel raggruppamento. Ad esempio, nella selezione del raggruppamento Nomenclatura, non è possibile utilizzare l'espressione Calcola espressione ("Sum(SumTurnover)", "TotalTotal") > 1000. Ma tale espressione può essere utilizzata nella selezione gerarchica.

Se il record di fine precede il record di inizio, si considera che non esistono record per il calcolo dei dati dettagliati e il calcolo delle funzioni aggregate.

Quando si calcolano le espressioni di intervallo per un totale generale (il parametro Raggruppamento è impostato su Totale generale), si considera che non esistono record per il calcolo dei dati dettagliati e il calcolo delle funzioni aggregate.

Il generatore di layout, durante la generazione dell'espressione della funzione Calcola espressione, se l'espressione di ordinamento contiene campi che non possono essere utilizzati nel raggruppamento, sostituisce la funzione Calcola espressione con NULL.

Parametri

<Выражение>

Tipo: stringa. L'espressione da valutare.

<Группировка>

Tipo: 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.

Ad esempio:

Sum(Sales.SumFatturato)/Calcola("Somma(Sales.SumFatturato)", "TotaleTotale")

In questo esempio, il risultato sarà il rapporto tra l'importo per il campo Sales.AmountVolume del record di raggruppamento e l'importo dello stesso campo nell'intero layout;

<ОбластьВычисления>

Tipo: stringa. Il parametro può assumere i seguenti valori:

  • GeneralTotal: l'espressione verrà calcolata per tutti i record di raggruppamento.
  • Gerarchia: l'espressione verrà valutata per la voce gerarchica padre, se presente, e per l'intero raggruppamento, se non esiste una voce gerarchica padre.
  • Raggruppamento: l'espressione verrà valutata per il record di raggruppamento corrente.
  • GroupingNotResource: quando si calcola una funzione per un record di gruppo in base alle risorse, l'espressione verrà calcolata per il primo record di gruppo del raggruppamento originale.

Quando si calcola la funzione Calcola espressione() con il valore GroupingNotResource per record di gruppo che non sono raggruppamenti per risorse, la funzione viene valutata nello stesso modo in cui verrebbe calcolata se il valore del parametro fosse uguale al valore di Raggruppamento.

Il generatore di layout del layout di composizione dati, durante la generazione del layout di composizione dati, durante la visualizzazione del campo risorsa su cui viene eseguito il raggruppamento, inserisce un'espressione nel layout che viene calcolato utilizzando la funzione Calcola espressione(), specificando il parametro GroupingNotResource. Per altre risorse raggruppate per risorsa, vengono inserite espressioni di risorse regolari.

<Начало>

Tipo: stringa. Specifica da quale record iniziare il frammento in cui calcolare le funzioni di aggregazione dell'espressione e da quale record ottenere i valori dei campi al di fuori delle funzioni di aggregazione. Il valore può essere uno dei seguenti:

<Конец>

Tipo: stringa. Indica a quale record continuare il frammento in cui calcolare le funzioni aggregate dell'espressione. Il valore può essere uno dei seguenti:

  • Primo (primo). Devi ottenere il primo record di raggruppamento. Dopo la parola tra parentesi, puoi specificare un'espressione, il cui risultato verrà utilizzato come offset dall'inizio del raggruppamento. Il valore risultante deve essere un numero intero maggiore di zero. Ad esempio, First(3) - ottenendo il terzo record dall'inizio del raggruppamento.

Se la prima voce è al di fuori del raggruppamento, si considera che non ci sono voci. Ad esempio, se ci sono 3 record e si desidera getFirst(4), allora si considera che non ci sono record.

  • Ultimo (Ultimo). Devi ottenere l'ultima voce di raggruppamento. Dopo la parola tra parentesi, puoi specificare un'espressione, il cui risultato verrà utilizzato come offset dalla fine del raggruppamento. Il valore risultante deve essere un numero intero maggiore di zero. Ad esempio, Last(3) - Ottiene il terzo record dalla fine del raggruppamento.

Se l'ultima voce è al di fuori del raggruppamento, si considera che non ci sono voci. Ad esempio, se ci sono 3 record e si desidera getLast(4), allora si considera che non ci sono record.

  • Precedente. È necessario ottenere la voce di raggruppamento precedente. Dopo la parola tra parentesi, è possibile specificare un'espressione, il cui risultato verrà utilizzato come ritorno dal record di raggruppamento corrente. Ad esempio, Precedente(2) - ottiene il precedente dal record precedente.

Se il record precedente è esterno al raggruppamento (ad esempio, il secondo record di raggruppamento richiede Precedente(3), viene ottenuto il primo record di raggruppamento.

Quando si ottiene il record precedente per il totale di raggruppamento, si considera ottenuto il primo record.

  • Avanti (Avanti). Devi ottenere la voce di raggruppamento successiva. Dopo la parola tra parentesi, è possibile specificare un'espressione, il cui risultato verrà utilizzato come spostamento in avanti dal record di raggruppamento corrente. Ad esempio, Next(2) - ottieni il prossimo dal record successivo.

Se il record successivo va oltre il raggruppamento, si considera che non ci sono record. Ad esempio, se ci sono 3 record e il terzo record ottiene Next(), allora si considera che non ci sono record.

Quando viene ricevuto il record successivo per il totale di raggruppamento, si considera che non esiste alcun record.

  • Corrente (corrente). Devi ottenere la voce corrente.

Quando viene recuperato per un totale di raggruppamento, viene recuperato il primo record.

  • Valore limite. La necessità di ottenere il record dal valore specificato. Dopo la parola RestrictingValue tra parentesi, è necessario specificare l'espressione con il valore di cui si vuole far partire il frammento, il primo campo di ordinamento.

Il record sarà il primo record il cui valore del campo di ordinamento è maggiore o uguale al valore specificato. Ad esempio, se il campo Periodo viene utilizzato come campo di ordinazione e ha i valori 01/01/2010, 02/01/2010, 03/01/2010 e si desidera ottenere il LimitValue(DateTime(2010 , 1, 15)), quindi verrà ricevuto un record con la data 02/01. 2010.

<Сортировка>

Tipo: stringa. Vengono elencate le espressioni separate da virgole che descrivono le regole di ordinamento. Se non specificato, l'ordinamento viene eseguito allo stesso modo del raggruppamento per il quale viene valutata l'espressione. Dopo ogni espressione, è possibile specificare le parole chiave Asc (per ordinare in ordine crescente), Descending (per ordinare in ordine decrescente) e AutoOrder (per ordinare i campi referenziati in base ai campi in base ai quali si desidera ordinare l'oggetto referenziato). La parola AutoOrder può essere utilizzata sia con parole ascendenti che discendenti.

<ИерархическаяСортировка>

Tipo: stringa. Simile all'opzione Ordina. Utilizzato per organizzare i record gerarchici. Se non specificato, il generatore di layout genera un ordinamento in base all'ordinamento specificato nel parametro Sort.

<ОбработкаОдинаковыхЗначенийПорядка>

Tipo: stringa. Specifica una regola per determinare il record precedente o successivo se sono presenti più record con lo stesso valore di ordinamento:

  • Separatamente significa che una sequenza di record ordinati viene utilizzata per determinare i record precedenti e successivi. Valore di default.
  • Insieme (insieme) significa che i record precedenti e successivi sono determinati in base ai valori delle espressioni di ordinamento.

Ad esempio, se la sequenza risultante è ordinata per data:

Data Nome e cognome Senso
1 01 gennaio 2001 Ivanov M. 10
2 02 gennaio 2001 Petrov S. 20
3 03 gennaio 2001 Sidorov R. 30
4 04 gennaio 2001 Petrov S. 40

Se il valore del parametro è Separato, allora:

§ la voce precedente alla voce 3 sarà la voce 2.

§ se il frammento di calcolo è definito come Corrente, Corrente (rispettivamente, i parametri Inizio e Fine), per il record 2 questo frammento sarà costituito da un record 2. L'espressione Calcola espressione ("Sum (Valore)", Corrente, Corrente) sarà pari a 20.

Se il valore del parametro è Insieme, allora:

§ la voce precedente alla voce 3 sarà la voce 1.

§ se il frammento di calcolo è definito come Corrente, Corrente (rispettivamente, i parametri Inizio e Fine), allora per il record 2 questo frammento sarà costituito dai record 2 e 3. Expression CalculateExpression(“Sum(Value)”, Current, Current) sarà essere uguale a 50.

Quando si specifica il valore del parametro uguale a Insieme, nei parametri Inizio e Fine, non è possibile specificare un offset per le posizioni Primo, Ultimo, Precedente, Successivo.

CalculateExpression("Amount(AmountTurnover)", "First", "Current")

Se vuoi ottenere il valore di raggruppamento nella riga precedente, puoi usare la seguente espressione:

CalculateExpression("Corso", "Precedente")

Elenco nuovo caratteristiche:

ComputeExpressionGroupedArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

La funzione restituisce un array, ogni elemento del quale contiene il risultato della valutazione dell'espressione per il raggruppamento in base al campo specificato.

ComputeExpressionGroupedValueTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

La funzione restituisce una tabella di valori, ciascuna riga della quale contiene il risultato della valutazione delle espressioni per il raggruppamento in base al campo specificato

Valore riempito(<Выражение>) – Restituisce True se il valore è diverso dal valore predefinito del tipo specificato, diverso da NULL, diverso da un riferimento null, diverso da Undefined. I valori booleani sono testati per NULL. Le stringhe vengono controllate per i caratteri non di spazi vuoti.

Formato(<Выражение>, <Форматная строка>) – Ottieni la stringa formattata del valore passato. La stringa di formato viene impostata in base alla stringa di formato del sistema 1C:Enterprise.

Sottostringa(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - Questa funzione è progettata per selezionare una sottostringa da una stringa.

Lunghezza della corda(<Выражение>) – La funzione è progettata per determinare la lunghezza di una stringa. Parametro: espressione di tipo stringa

Linea(<Выражение>) – Se un array viene passato come parametro, la funzione restituisce una stringa contenente rappresentazioni in stringa di tutti gli elementi dell'array, separati dai caratteri “; “. Se una tabella di valori viene passata come parametro, allora la funzione restituisce una stringa contenente le rappresentazioni di stringa di tutte le righe della tabella di valori, e le rappresentazioni di cella di ogni riga sono separate dai caratteri “; “, e stringhe con un carattere di nuova riga. Se un elemento ha una rappresentazione di stringa vuota, al posto della sua rappresentazione viene visualizzata una stringa<Пустое значение>.

In questa breve nota, voglio mostrare come è possibile riassumere valori a diversi livelli di raggruppamento in un report utilizzando un sistema di composizione dei dati.
Come mostrato nell'immagine, solo a livello di raggruppamento "Gruppi di articoli" viene calcolata la risorsa "Ordine", che mostra quanto ordinare per il gruppo di articoli corrente in base a determinate condizioni:


Questo valore può essere calcolato solo a questo livello di raggruppamento, perché, sopra o sotto, non ci sono valori da calcolare. Ad esempio, a livello di record dettagliati, non ci sono dati sul numero massimo in un gruppo, perché questi dati sono veri solo per il gruppo nel suo insieme e non per i suoi singoli componenti.

Di conseguenza, ora è necessario calcolare i totali per i raggruppamenti superiori ("Magazzini", "Tipi di magazzino") e il totale.
Per questo, viene utilizzata la funzione Calcola espressione con array raggruppato:
VALUTARE L'ESPRESSIONE DEL RAGGRUPPAMENTO DI ARRAY (EVALEXPRESSIONCON GROUPARRAY)
Sintassi:
ComputeExpressionGroupedArray()
Descrizione:
La funzione restituisce un array, ogni elemento del quale contiene il risultato della valutazione dell'espressione per il raggruppamento in base al campo specificato.
Il generatore di layout, durante la generazione di un layout, converte i parametri della funzione in termini di campi di layout del layout dati. Ad esempio, il campo Account verrà convertito in Dataset.Account.
Il generatore di layout, durante la generazione di espressioni per la visualizzazione di un campo personalizzato la cui espressione contiene solo la funzione CalculateArrayWithGroupArray(), genera l'espressione di output in modo tale che le informazioni di output siano ordinate. Ad esempio, per un campo personalizzato con un'espressione:

Calculate ExpressionWith GroupingArray("Amount(AmountTurnover)", "Controparty")
Il generatore di layout genererà la seguente espressione per l'output:

ConcatenateStrings(Array(Order(CalculateExpressionWithGroupingValueTable("View(Amount(DataSet.AmountTurnover)),Amount(DataSet.AmountTurnover)","DataSet.Counterparty"),"2")))

Parametri:

Tipo: stringa. L'espressione da valutare. Una stringa, ad esempio Amount(AmountTurnover).

Tipo: stringa. Raggruppamento di espressioni di campo: raggruppamento di espressioni di campo separate da virgole. Ad esempio, appaltatore, parte.

Tipo: stringa. Un'espressione che descrive il filtro applicato ai record dettagliati. Le funzioni aggregate non sono supportate in un'espressione. Ad esempio,DeletionMark = False.

Tipo: stringa. Un'espressione che descrive il filtro applicato ai record di gruppo. Ad esempio, Importo(Fatturato Importo) > &Parametro1.
Esempio:

Massimo(Calcola EspressioneCon RaggruppamentoArray("Amount(AmountTurnover)", "Controparte"));

Una descrizione dettagliata della sintassi della funzione è disponibile all'indirizzo http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Ora per il calcolo, duplicheremo il campo "Ordine", con diversi valori di "Calcola per ...", usando le seguenti espressioni, si noti che in ogni livello superiore, i valori dei livelli al di sotto della posizione vengono utilizzati i raggruppamenti.

Di conseguenza, otteniamo la seguente costruzione:

Alla luce dell'imminente rilascio della 8.2.14, cercherò di descrivere alcune delle nuove funzionalità del sistema di composizione dei dati.

Apriamo lo schema di composizione dei dati, preferibilmente in un report esterno, in modo che sia più facile da modificare.

Aggiungiamo un set di dati di query e scriviamo, manualmente o utilizzando il generatore di query, la query più semplice:

1. Impostare una richiesta nell'ACS.

2. Impostare i campi calcolati in ACS

3. Configuriamo il layout dei dati nella scheda delle impostazioni

4. Lanciamo 1C Enterprise 8.2.14. Apriamo il rapporto. Formiamo, riceviamo.

Descrizione delle nuove funzionalità stesse:

1. La data corrente()

Restituisce la data di sistema. Quando si traccia il layout del layout, in tutte le espressioni presenti nel layout, la funzione CurrentDate() viene sostituita dal valore della data corrente.

2. CALCOLARE ESPRESSIONE()

Sintassi:

Calcola espressione(,)

Descrizione:

La funzione è progettata per valutare un'espressione nel contesto di alcuni raggruppamenti.

La funzione tiene conto della selezione dei raggruppamenti, ma non tiene conto delle selezioni gerarchiche.

La funzione non può essere applicata a un raggruppamento nella selezione del gruppo di quel raggruppamento. Ad esempio, nella selezione del raggruppamento Nomenclatura, non è possibile utilizzare l'espressione Calcola espressione ("Sum(SumTurnover)", "TotalTotal") > 1000. Ma una tale espressione può essere utilizzata nella selezione gerarchica.

Se il record di fine precede il record di inizio, si considera che non esistono record per il calcolo dei dati dettagliati e il calcolo delle funzioni aggregate.

Quando si calcolano le espressioni di intervallo per un totale generale (il parametro Raggruppamento è impostato su GrandTotal ), si considera che non esistono record per il calcolo dei dati dettagliati e il calcolo delle funzioni aggregate.

Generatore di layout durante la generazione di un'espressione di funzione Calcola l'espressione, se l'espressione di ordinamento contiene campi che non possono essere utilizzati nel raggruppamento, sostituisce la funzione Calcola l'espressione sul NULLO.

Parametri

Un tipo: Linea. L'espressione da valutare.

Un tipo: Linea. 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.

Ad esempio:

Sum(Sales.SumTurnover)/Calculate("Sum(Sales.SumTurnover)", "TotalTotal")

In questo esempio, il risultato sarà il rapporto tra l'importo per campo Fatturato.Importo.Vendite raggruppare le voci per la somma dello stesso campo nell'intero layout;

Un tipo: Linea. Il parametro può assumere i seguenti valori:

· Il risultato complessivo— l'espressione verrà valutata per tutti i record di raggruppamento.

· Gerarchia— l'espressione verrà valutata per la voce gerarchica padre, se presente, e per l'intero raggruppamento, se non esiste una voce gerarchica padre.

· raggruppamento— l'espressione verrà valutata per il record di gruppo corrente del raggruppamento.

· RaggruppamentoNotResource— quando si calcola una funzione per un record di gruppo in base alle risorse, l'espressione verrà calcolata per il primo record di gruppo del raggruppamento iniziale.

Quando si calcola la funzione Calcola espressione() con significato RaggruppamentoNotResource per record di gruppo che non sono raggruppamenti per risorse, la funzione viene calcolata nello stesso modo in cui verrebbe calcolata se il valore del parametro fosse uguale al valore raggruppamento.

Il generatore di layout del layout di composizione dati, durante la generazione del layout di composizione dati, durante la visualizzazione del campo risorsa su cui viene eseguito il raggruppamento, inserisce un'espressione nel layout che viene calcolato utilizzando la funzione Calcola espressione() , specificando il parametro RaggruppamentoNotResource. Per altre risorse raggruppate per risorsa, vengono inserite espressioni di risorse regolari.

Un tipo: Linea. Specifica da quale record iniziare il frammento in cui calcolare le funzioni di aggregazione dell'espressione e da quale record ottenere i valori dei campi al di fuori delle funzioni di aggregazione. Il valore può essere uno dei seguenti:

· Primo (primo)

· Ultimo (Ultimo)

· Precedente (Precedente)

· Avanti (Avanti)

· Corrente (corrente)

· Valore Limitante(Valore limite) Valore Limitante

Un tipo: Linea. Indica a quale record continuare il frammento in cui calcolare le funzioni aggregate dell'espressione. Il valore può essere uno dei seguenti:

· Primo (primo). Devi ottenere il primo record di raggruppamento. Dopo la parola tra parentesi, puoi specificare un'espressione, il cui risultato verrà utilizzato come offset dall'inizio del raggruppamento. Il valore risultante deve essere un numero intero maggiore di zero. Ad esempio, First(3) - ottenendo il terzo record dall'inizio del raggruppamento.

Se la prima voce è al di fuori del raggruppamento, si considera che non ci sono voci. Ad esempio, se sono presenti 3 record e si desidera ottenere First(4) , si considera che non ci sono record.

· Ultimo (Ultimo). Devi ottenere l'ultima voce di raggruppamento. Dopo la parola tra parentesi, puoi specificare un'espressione, il cui risultato verrà utilizzato come offset dalla fine del raggruppamento. Il valore risultante deve essere un numero intero maggiore di zero. Ad esempio, Last(3) - ottiene il terzo record dalla fine del raggruppamento.

Se l'ultima voce è al di fuori del raggruppamento, si considera che non ci sono voci. Ad esempio, se sono presenti 3 record e si desidera ottenere Last(4) , si considera che non ci sono record.

· Precedente (Precedente). È necessario ottenere la voce di raggruppamento precedente. Dopo la parola tra parentesi, è possibile specificare un'espressione, il cui risultato verrà utilizzato come ritorno dal record di raggruppamento corrente. Ad esempio, Precedente(2) - ottiene il precedente dal record precedente.

Se il record precedente è esterno al raggruppamento (ad esempio, il secondo record di raggruppamento richiede Previous(3) , viene ottenuto il primo record di raggruppamento.

Quando si ottiene il record precedente per il totale di raggruppamento, si considera ottenuto il primo record.

· Avanti (Avanti). Devi ottenere la voce di raggruppamento successiva. Dopo la parola tra parentesi, è possibile specificare un'espressione, il cui risultato verrà utilizzato come spostamento in avanti dal record di raggruppamento corrente. Ad esempio, Next(2) - ottieni il prossimo dal record successivo.

Se il record successivo va oltre il raggruppamento, si considera che non ci sono record. Ad esempio, se ci sono 3 record e il terzo record ottiene Next() , allora si considera che non ci sono record.

Quando viene ricevuto il record successivo per il totale di raggruppamento, si considera che non esiste alcun record.

· Corrente (corrente). Devi ottenere la voce corrente.

Quando viene recuperato per un totale di raggruppamento, viene recuperato il primo record.

· Valore Limitante(Valore limite). La necessità di ottenere il record dal valore specificato. Dopo la parola Valore Limitante tra parentesi, è necessario specificare l'espressione con il valore di cui si desidera far iniziare il frammento, il primo campo di ordinamento.

Il record sarà il primo record il cui valore del campo di ordinamento è maggiore o uguale al valore specificato. Ad esempio, se si utilizza il campo Periodo come campo di ordinazione e ha i valori 01/01/2010 , 02/01/2010 , 03/01/2010 e si desidera ottenere LimitValue(DateTime(2010, 1, 15)), verrà ricevuto un record con la data 02/01/2010.

Un tipo: Linea. Vengono elencate le espressioni separate da virgole che descrivono le regole di ordinamento. Se non specificato, l'ordinamento viene eseguito allo stesso modo del raggruppamento per il quale viene valutata l'espressione. Ogni espressione può essere seguita da una parola chiave Asc(per ordine crescente), Discendente(per ordine decrescente) e Sistemazione automatica(per ordinare i campi di riferimento in base ai campi in base ai quali si desidera ordinare l'oggetto a cui si fa riferimento). Parola Sistemazione automatica può essere usato come con la parola Asc, e con la parola Discendente.

Un tipo: Linea. Uguale al parametro Ordinamento. Utilizzato per organizzare i record gerarchici. Se non specificato, il generatore di layout genera un ordinamento in base all'ordinamento specificato nel parametro Ordinamento.

Un tipo: Linea. Specifica una regola per determinare il record precedente o successivo se sono presenti più record con lo stesso valore di ordinamento:

· Separatamente indica che una sequenza di record ordinati viene utilizzata per determinare i record precedenti e successivi. Valore di default.

· Insieme insieme) indica che i record precedenti e successivi sono determinati in base ai valori delle espressioni di ordinamento.

Ad esempio, se la sequenza risultante è ordinata per data:

Data Nome e cognome Senso
1 01 gennaio 2001

Ivanov M.

10
2 02 gennaio 2001 Petrov S. 20
3 03 gennaio 2001 Sidorov R. 30
4 04 gennaio 2001 Petrov S. 40

Separatamente, poi:

§ la voce precedente alla voce 3 sarà la voce 2.

corrente, corrente(rispettivamente, i parametri Inizio e Fine), quindi per il record 2 questo frammento sarà costituito da un record 2. L'espressione sarà uguale a 20.

Se il valore del parametro è Insieme, poi:

§ la voce precedente alla voce 3 sarà la voce 1.

§ se il frammento calcolato è definito come corrente, corrente(rispettivamente, i parametri Inizio e Fine), quindi per il record 2 questo frammento sarà costituito dai record 2 e 3. L'espressione CalculateExpression("Sum(Valore)", Corrente, Corrente) sarà pari a 50.

Quando si specifica un valore di parametro uguale a Insieme, nei parametri Inizio e Fine non è possibile specificare un offset per le posizioni Primo, ultimo, precedente, successivo.

CalculateExpression("Amount(AmountTurnover)", "First", "Current")

Se vuoi ottenere il valore di raggruppamento nella riga precedente, puoi usare la seguente espressione:

CalculateExpression("Corso", "Precedente")

Elenco nuovo caratteristiche:

ComputeExpressionGroupedArray(,) -

La funzione restituisce un array, ogni elemento del quale contiene il risultato della valutazione dell'espressione per il raggruppamento in base al campo specificato.

ComputeExpressionGroupedValueTable(,) -

La funzione restituisce una tabella di valori, ciascuna riga della quale contiene il risultato della valutazione delle espressioni per il raggruppamento in base al campo specificato

Valore riempito() - Restituisce True se il valore è diverso dal valore predefinito di questo tipo, diverso da NULL , diverso da un riferimento null, diverso da Undefined . I valori booleani sono testati rispetto a NULL. Le stringhe vengono controllate per i caratteri non di spazi vuoti.

Formato(, ) - Ottieni la stringa formattata del valore passato. La stringa di formato viene impostata in base alla stringa di formato del sistema 1C:Enterprise.

Sottostringa(, , ) - Questa funzione è progettata per selezionare una sottostringa da una stringa.

Lunghezza della corda() - La funzione è progettata per determinare la lunghezza di una stringa. Il parametro è un'espressione di tipo stringa

Linea() - Se un array viene passato come parametro, la funzione restituisce una stringa contenente rappresentazioni di stringa di tutti gli elementi dell'array, separati dai caratteri "; ". Se una tabella di valori viene passata come parametro, la funzione restituisce una stringa contenente le rappresentazioni di stringa di tutte le righe della tabella di valori e le rappresentazioni di cella di ciascuna riga sono separate dai caratteri "; " e dalle righe sono separati dal carattere di nuova riga. Se un elemento ha una rappresentazione di stringa vuota, viene visualizzata una stringa invece della sua rappresentazione.