Collegamento di set di dati nel sistema di archiviazione. Costruttore del diagramma del layout dei dati - scheda che collega i set di dati 1s Condizione del collegamento dei set di dati SKD


41
Recentemente ho realizzato un report con un numero indefinito di colonne. Non volevo armeggiare con il codice, quindi ho deciso di farlo sul sistema di controllo degli accessi. Non c'era nessun problema con questo, era necessario allungare il risultato su un layout arbitrario (la tua intestazione +... 27
Anche se gli studenti CDS lo riscontrano il primo o il secondo giorno, dovrebbe essere nella sezione FAQ. Un semplice esempio di output programmatico di un report su un layout, utilizzando le impostazioni predefinite. //Prendi il diagramma da... 18
Quando si generano report sul sistema di controllo accessi, per impostazione predefinita tutti i raggruppamenti vengono espansi, ma a volte è necessario mostrare un report con i raggruppamenti compressi subito dopo la generazione! Questo codice nel modulo di report ti consente di comprimere... 9
Ciò che è necessario quando si sviluppano i report è che per un utente con diritti limitati, il report venga generato completamente senza verificare i diritti! Soprattutto se RLS è configurato. Esistono diversi modi per farlo: 1. Installa...

In questo caso il checkbox Obbligatorio determina se i campi utilizzati nell'origine (impostato a FALSE) o nella destinazione (impostato a TRUE) sono abilitati e, in base a ciò, aggiunge la relazione al layout.

Per ciascuno dei set di dati è possibile impostare un controllo della gerarchia:

Questa opzione viene utilizzata se la condizione di selezione per un campo deve essere elaborata in modo non standard. È possibile specificare un campo con un set di dati da cui si ottengono dati per verificare se un collegamento appartiene a una gerarchia di un determinato valore.

Domanda 11.33 dell'esame 1C: Platform Professional. È accettabile utilizzare più set di dati?

  1. Solo quando si utilizzano set di dati - oggetto
  2. Solo quando si utilizzano set di dati: query

La risposta corretta è la prima, è accettabile in ogni caso.


Domanda 11.10 dell'esame 1C: Platform Professional. Quando si definisce una relazione tra due set di dati in un diagramma di composizione dei dati

  1. L'opzione di connessione (sinistra, completa) è selezionata dallo sviluppatore
  2. Viene sempre utilizzata l'unione sinistra del primo set al secondo
  3. Viene sempre utilizzata l'unione sinistra del secondo set con il primo
  4. Viene utilizzato un left join del primo set al secondo, in alcuni casi viene stabilito un inner join

La risposta corretta è la quarta. I set di dati sono collegati solo tramite left o inner join.

Domanda 11.13 dell'esame 1C: Platform Professional. In quali casi è necessario configurare il controllo della gerarchia nella scheda "Set di dati" nella finestra di progettazione del diagramma di layout?

  1. Se è necessario impedire la ricezione dei totali in base alla propria gerarchia diversa da quella standard
  2. Se è necessario consentire l'ottenimento dei totali secondo la propria gerarchia, diversa da quella standard
  3. Se è necessario vietare l'installazione della selezione per l'ingresso in un gruppo della propria gerarchia, diverso da quello standard
  4. Se è necessario consentire alla selezione di essere inclusi in un gruppo della propria gerarchia, diverso da quello standard

La risposta corretta è la numero quattro, descrizione nel post.

Domanda 11.16 dell'esame 1C: Platform Professional. Quali tipi di connessioni tra due insiemi di dati possono essere implementate in un sistema di composizione?

  1. Tutto come nel linguaggio di interrogazione: "Tutto a tutti", "Sinistra", "Destra", "Interno" e "Completo"
  2. Solo "Tutto a tutti", "Sinistra", "Destra" e "Interno"
  3. Solo "Sinistra" e "Interno"
  4. Solo "Tutto a tutti", "Sinistra" e "Interno"
  5. Solo "Sinistra", "Destra", "Interno" e "Completo"

La risposta corretta è la quarta, secondo il risultato del test. In effetti la terza è corretta.

Domanda 11.17 dell'esame 1C: Platform Professional. Quando si imposta una relazione tra due set di dati, viene selezionato il flag "Relazione richiesta". In quale caso le azioni dell'utente causeranno l'interruzione della connessione?

  1. La connessione dei dati di entrambi i set verrà implementata indipendentemente dalle impostazioni effettuate dall'utente
  2. L'elenco dei campi selezionati mostra solo i campi nel set di sinistra
  3. Nell'elenco dei campi selezionati vengono specificati solo i campi nell'insieme corretto
  4. Nell'elenco dei campi selezionati sono indicati solo i campi dell'insieme di sinistra, è selezionato il campo dell'insieme di destra
  5. Nell'elenco dei campi selezionati sono indicati solo i campi dell'insieme di destra, è selezionato il campo dell'insieme di sinistra

La risposta corretta è la seconda: se è presente un solo set (e la sorgente), allora non c'è nulla da connettere.

Domanda 11.39 dell'esame 1C: Platform Professional. Come vengono trasferiti i dati esterni a un set: un oggetto in un sistema di composizione dei dati?

  1. Per mezzo del linguaggio integrato attraverso il processore di composizione dei dati
  2. Utilizzando il linguaggio integrato tramite il generatore di layout
  3. Tramite il linguaggio integrato attraverso il processore di output del sistema di composizione dei dati

La risposta corretta è la prima, tramite il processore.

Un sistema di composizione dei dati può utilizzare più set di dati. Ed è abbastanza logico che questi set di dati siano in qualche modo collegati tra loro. Per analogia con il linguaggio di query 1C, i set di dati possono essere o. In questo articolo parleremo di connessione di set di dati nel sistema di controllo degli accessi.

A prima vista, potrebbe non essere chiaro il motivo per cui è necessario creare diversi set di dati e poi unirli, se puoi semplicemente unire le tabelle all'interno di un set di dati. C'è almeno una ragione per questo: nel caso di utilizzo di un set di dati esterno. Come sai, quando scriviamo una query per un set di dati ACS, non possiamo passarvi, ad esempio, . Sebbene per una richiesta normale ciò venga fatto in modo abbastanza semplice. Nel caso di utilizzo di un sistema di controllo degli accessi, siamo costretti a trasferirvi una tabella di valori come file . Da qui la necessità di connettere i set di dati. Vorrei subito notare che i set di dati possono essere collegati solo utilizzando CONNESSIONE SINISTRA. Pertanto, a differenza di qui, non vedrai le caselle di controllo responsabili del tipo di connessione della tabella.

Ora creiamo una situazione, utilizzando un esempio della quale possiamo considerare la connessione di set di dati in un sistema di controllo degli accessi. Supponiamo di avere una directory Merce, che possiamo ricevere da diversi fornitori, e vogliamo generare un report con i prezzi delle merci per fornitore in modo da selezionare il fornitore con il prezzo più favorevole. E prenderemo i prezzi attuali al momento, ad esempio, attraverso i servizi web dei siti web dei fornitori.

Di conseguenza, per le merci avremo un set di dati ottenuto utilizzando una richiesta e per i prezzi avremo un set di dati ottenuto da una fonte esterna.


Ora andiamo al segnalibro Relazioni tra set di dati ed effettuare le impostazioni come mostrato in figura.

Sul segnalibro Impostazioni Innanzitutto, creiamo un output di base di record dettagliati


Lascia che sia nella nostra directory Merce contiene le seguenti voci

Eseguiamo il report e vediamo la seguente immagine

Cioè, vediamo che i set di dati erano interconnessi secondo tutte le regole CONNESSIONE SINISTRA

Sul segnalibro Relazioni tra set di dati E' possibile specificare alcuni parametri aggiuntivi negli appositi campi. Ma sono usati abbastanza raramente. Maggiori dettagli si trovano nella documentazione tecnica e sui dischetti ITS.

A volte, per ottenere un determinato risultato di layout, è necessario creare collegamenti tra i set di dati nel sistema di controllo degli accessi. Cercheremo di parlare di quando è necessario e come farlo nel nostro articolo.

Lo schema di layout dei dati implementato in 1C supporta tre tipi di origini dati (Fig. 1)

Origine dei dati

L'origine dati più ovvia e utilizzata dagli sviluppatori è la Query.

Il query designer implementato nella versione 8 di 1C è molto comodo e, nella maggior parte dei casi, è possibile collegare insieme più tabelle ed effettuare direttamente al suo interno i raggruppamenti e le selezioni necessarie.

In casi complessi, quando è richiesto o più opportuno ricorrere all'esecuzione di qualche codice (ad esempio, caricamento di dati da un file di terze parti) o quando non è possibile utilizzare una query, viene utilizzata la sorgente dati “Oggetto”. il salvataggio. Il codice arbitrario eseguito nel modulo deve avere una determinata struttura in uscita a cui il sistema di controllo accessi può accedere.

La terza fonte dati è “Unione”. In effetti, questa fonte può essere considerata come uno dei tipi di comunicazione. Combina (riduce più tabelle in una), senza corrispondenza, ma con la coincidenza di determinati campi. Cioè, se due tabelle unite hanno rispettivamente 3 e 4 righe, l'origine dati risultante avrà 7 righe.

Formulazione del problema

Come banco di prova sceglieremo la base UPP, versione 1.3.92.3, funzionante in modalità di applicazione normale.

Ci è stato affidato il seguente compito: utilizzando solo il sistema di controllo degli accessi, creare un report che visualizzi una tabella degli articoli acquistati dal documento, con i prezzi presi dal file inviato dalla controparte.

Quindi dobbiamo:

  1. Prendere la parte tabellare del documento di ricevuta;
  2. Carica il file nell'origine dati "Oggetto";
  3. Collega queste due fonti tramite un determinato parametro (nel nostro caso sarà codice);
  4. Visualizza la tabella risultante.

Processo di esecuzione

Esaminiamo tutti i passaggi elencati:

  • Creiamo una query per la parte tabellare del documento di ricevuta (Fig. 2)

Fig.2

  • Creare un oggetto set di dati (Fig. 3);

Fig.3

Qui è importante prestare attenzione al “Nome dell'oggetto contenente i dati” dovremo specificare questo nome nel codice del modulo di report.

  • Andiamo al modulo report e lì creiamo la procedura “Quando si compone il risultato” (Fig. 4);


Fig.4

Non descriveremo la procedura per ottenere i dati da un file esterno; presteremo attenzione a quella parte di codice che deve essere presente nel layout affinché si possano ottenere i dati per il “Data Set 2” (Fig. 5).

Fig.5

Importante! Quando si crea un "Oggetto" nel codice della procedura durante il collegamento, il valore del parametro StandardProcessing deve essere False.

Vai alla scheda "Collegamenti set di dati".

Collegamento di insiemi

Vai alla scheda corrispondente del diagramma (Fig. 6).

Vediamo una parte di tabella che è molto simile alla parte di tabella presente in Progettazione query, con alcune eccezioni. Per l'insieme di origine della comunicazione e l'insieme di destinazione della comunicazione, non è possibile selezionare la casella di controllo "Tutto", ma sono state aggiunte diverse colonne aggiuntive.

Nelle relazioni tra set di dati è possibile stabilire solo una relazione simile al left external join del costruttore della query.

Prima di creare una connessione, decidiamo lo scopo delle colonne:

  1. La sorgente del collegamento è il primo set di dati da cui verranno presi tutti i valori disponibili;
  2. Ricevitore della comunicazione – un insieme di dati da cui verranno selezionati i valori corrispondenti alla nostra condizione;
  3. Espressione di origine: un campo o un'espressione del primo set di dati rispetto al quale verrà effettuato il confronto;
  4. L'espressione di destinazione è un campo o un'espressione dell'insieme dipendente;
  5. Parametro – se si specifica il nome del parametro in questo campo, la comunicazione con il ricevitore verrà effettuata solo in base al valore specificato nel parametro;
  6. Lista di parametri – determina la possibilità di utilizzare una lista di valori come parametro;
  7. Condizione di connessione – specificando qui un'espressione utilizzando i campi sorgente, è possibile creare una condizione, il cui adempimento servirà come segnale per stabilire una connessione;
  8. Valore iniziale – mostra il valore iniziale della connessione;
  9. Relazione obbligatoria: determina se i campi utilizzati nell'origine (impostato su FALSE) o nella destinazione (impostato su TRUE) sono abilitati e in base a ciò aggiunge la relazione al layout.

Così:

  • La fonte della comunicazione sarà il risultato della nostra richiesta;
  • L'oggetto fungerà da ricevitore;
  • L'espressione sorgente sarà “NomenclatureCode”;
  • Espressione del destinatario “Nomenclatura”;
  • La comunicazione sarà obbligatoria (Fig. 7).

Se avessimo indicato il nome di una qualsiasi nomenclatura, o il suo tipo di riproduzione, o qualcos'altro come condizione di connessione, avremmo potuto ottenere un campione più accurato per il nostro compito. Il risultato delle nostre azioni può essere visto in Fig. 8

Fig.8

Non è stata trovata alcuna corrispondenza per le ultime due righe del report nel file dei prezzi.

Diagramma del layout dei dati (1C SKD)- un comodo designer per la creazione di report complessi nei prodotti software 1C:Enterprise che contribuiscono allo sviluppo e al monitoraggio dell'automazione della produzione, consentendo loro di essere resi il più flessibili e belli possibile in un minimo di tempo. Un ulteriore vantaggio del Data Composition Scheme (1C SKD) è la generazione automatica di un modulo di report controllato e, con l'ulteriore sviluppo di quest'area, diventa 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 "designer del modulo di output". Pertanto, un programmatore 1C deve comprendere tutte le complessità del Data Composition Scheme (1C DCS) al fine di accelerare ulteriormente i tempi di sviluppo per la generazione di report.

Diamo un'occhiata alle prime tre schede dello schema di composizione dei dati (1C SKD): set di dati, connessioni del set di dati e campi calcolati.

Set di dati in 1C SKD

Il set di dati include la possibilità di creare tre oggetti: una query, un oggetto e un'unione, diamo un'occhiata più da vicino a ciascuno di essi:

Si tratta di una query normale generata utilizzando il pulsante Generatore di query. Se è impostato il flag Compilazione automatica, tutti i dettagli selezionati verranno automaticamente inclusi 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 si selezionano le tabelle che parteciperanno alla generazione del report, solitamente vengono selezionati i dati predefiniti, 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 figli indica se ci saranno elementi figli accessibili o meno per l'oggetto, è logico che per dati stringa, numerici e simili non sarà possibile impostare il flag su True.

Condizioni, qui selezioniamo quegli oggetti che possono essere utilizzati in condizioni nel sistema di controllo degli accessi.

Parte del lavoro viene svolto nello schema di composizione dei dati e parte viene svolto a livello di codice, diamo un'occhiata a un semplice esempio:

Per prima cosa creeremo un diagramma di layout per il layout dei dati del documento e lo chiameremo SKD (ad esempio: 1C SKD), in esso creiamo un oggetto set di dati, quindi compiliamo i campi, ad esempio, abbiamo un documento con una parte tabellare delle merci con dettagli: nomenclatura, quantità e prezzo.

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

Creiamo un pulsante sul modulo del documento e descriviamo il meccanismo di funzionamento nei moduli controllati:

&SuClient

Procedura Stampa()

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

NostroReport.Show(); //visualizza il report generato

Fine della procedura

&Sul server

Funzione StampaSuServer()

DocumentObject = FormAttributeValue("Oggetto");

//posizioniamo la parte tabellare Prodotti in una struttura con il nome ProdottiSKD nello stesso modo in cui abbiamo indicato nell'SKD stesso il nome dell'oggetto contenente i dati

DataSet = nuova struttura;

DataSet.Insert("ProdottiSKD", DocumentObject.Prodotti);

//otteniamo il nostro layout e impostiamo le impostazioni predefinite in modo che tutte le impostazioni di output del report vengano prese dal nostro layout

OurLayout = DocumentObject.GetLayout("SKD");

Impostazioni = OurLayout.DefaultSettings;

//creare un layout di layout dati con le nostre impostazioni

LayoutLinker = newDataLayoutLayoutLinker;

LayoutLayout = LayoutComposer.Execute(OurLayout, Impostazioni);

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

DataCompositionProcessor = nuovoDataCompositionProcessor;

DataCompositionProcessor.Initialize(LayoutLayout, DataSet);

//Creiamo un documento di foglio di calcolo e visualizziamo il nostro report al suo interno

ReportDocument = Nuovo TabularDocument;

OutputProcessor = Nuovo OutputProcessorDataCompositionResultInTabularDocument;

OutputProcessor.SetDocument(ReportDocument);

OutputProcessor.Output(DataCompositionProcessor);

Resoconto documenti;

EndFunction

Se lo desideri, puoi ottenere aree di qualsiasi altro layout e visualizzarle anche in questo report, ad esempio, abbiamo un layout standard per generare un ordine di pagamento e l'intestazione è creata molto bene in esso, quindi, per non fare lavoro non necessario, prima otterremo il layout, visualizzeremo l'intestazione, quindi genereremo e visualizzeremo il nostro report sul sistema di controllo degli accessi.

DI 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 otterremo una e, una volta combinata, raddoppierà, guardiamo ad un semplice esempio:

Abbiamo tabelle:

Previa comunicazione riceveremo:

E quando combinato:

Consideriamo ora la compilazione delle colonne nei set di dati (ne salteremo alcune, poiché sono collegate ad altre schede; le ritorneremo nei prossimi articoli):

- campo, indicare il nome generale dell'attributo;

­­- sentiero, indicare il nome dei dettagli con cui lo contatteremo nel sistema di controllo degli accessi, ad esempio, in Campi calcolati;

- titolo, indicare il nome dell'attributo che verrà visualizzato nel report;

- limitazione del campo, indicare la disponibilità di tale requisito;

- restrizione dei dettagli, indichiamo la disponibilità degli elementi figlio, è importante che se viene indicata la disponibilità dei dettagli, allora 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 dobbiamo modificare leggermente l'output dei dettagli, ad esempio, abbiamo bisogno dopo il nome nomenclaturaè stato visualizzato azione, dove si trova, quindi compilare quanto segue: Articolo + “è in magazzino” + Magazzino. Ribadisco che l'accesso ai dettagli avviene tramite il nominativo indicato in colonna sentiero;

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

- tipo di valore, indica il tipo di valore dell'attributo; questo deve essere valorizzato se si utilizza il campo successivo;

- valori disponibili, funziona solo quando è pieno tipo di valore, aprire il modulo di compilazione e nella colonna Senso indichiamo l'elemento da modificare, a seconda della tipologia, possono essere oggetti predefiniti o numerici, ad esempio i dettagli hanno valori semplici, in presentazione Indichiamo in cosa dobbiamo modificare, un esempio di tipo booleano:

- arredamento– le impostazioni del formato dei campi standard, simili alle impostazioni dei moduli gestiti, consentono di personalizzare in modo più accurato e bello l'output di determinati dettagli.

Connessioni del set di dati in 1C SKD

Qui è installato solo sinistra unisciti, su un principio simile a connessioni nelle richieste, in fonte di comunicazione specificare la tabella principale per la connessione, in ricevitore aggiuntivo. IN fonte di espressione E ricevitore di espressione Indichiamo gli estremi attraverso i quali avverrà la comunicazione. Esamineremo le restanti colonne in modo più dettagliato quando esamineremo la scheda. Opzioni. Se non è presente alcuna connessione aggiuntiva con i parametri, si consiglia di eseguire la connessione nella richiesta, ciò velocizzerà il rapporto.