Computer finestre Internet

1s ckd output di documenti nel periodo. Creiamo un report con una frequenza specificata sulla SCD

Buona giornata, cari lettori del sito blog! Nell'ultimo articolo, abbiamo appreso a cosa servono questi ruoli. E oggi nel secondo di questa serie, vedremo impostare un ruolo con la proprietà "Periodo", e considera anche esempi di riempimento di questi ruoli. Il saldo viene calcolato per il campo con il ruolo "Periodo". Così come in campo con il ruolo di "Dimension", di cui parleremo un'altra volta. Quindi, cominciamo!

Creiamo un nuovo rapporto:

  1. Nel Configuratore selezionare la voce di menu "File" - "Nuovo" - "Rapporto esterno".
  2. Fare clic sul pulsante "Apri schema di composizione dei dati". Nella finestra di dialogo che si apre, premi il pulsante "Fine".
  3. Ora creiamone uno che faccia riferimento alla tabella virtuale "Registri di accumulo".
  4. premere clic destro mouse sul nodo "Datasets" e selezionare la riga "Add dataset - Query".
  5. Ora facciamo clic sul pulsante "Costruttore di query". Selezionare il registro di accumulo "Merci in Magazzini, Saldi e Fatturati" (configurazione USP).
  6. Apriamo la finestra di dialogo "Parametri della tabella virtuale" e indichiamo che verrà utilizzata la frequenza "Auto", ovvero sarà possibile specificare più periodi.

Ora impostiamo i campi di output. Siano i seguenti campi: "Registrar", "PeriodoMese", "Nomenclatura", "Qualità" e informazioni sui saldi. L'aggiunta di un campo viene effettuata facendo doppio clic con il tasto sinistro del mouse sul campo richiesto o utilizzando il pulsante ">". Dopo aver aggiunto i campi, premere il pulsante "OK".

Si noti che per alcuni campi viene configurato automaticamente un ruolo con la proprietà "Periodo".

Considera ciò che esiste impostazioni del ruolo per la proprietà "Periodo"... Innanzitutto, viene indicato il numero di serie del periodo. La numerazione deve essere continua, partendo da uno, dai periodi più bassi a quelli più vecchi, cioè prima ci sarà ad esempio il numero di riga, poi "Registrar", poi il secondo, giorno, settimana, mese, trimestre , anno.

Pertanto, i campi che si verificano nella nostra richiesta dovrebbero essere numerati. Nota che abbiamo due campi periodo: "Registrar" e "PeriodMonth". Il campo più basso è "Registrar" viene assegnato uno e il campo più alto è "PeriodMonth" viene assegnato un due. Considereremo più in dettaglio nel prossimo articolo.

Personalizziamo il nostro report:

  1. Andiamo alla scheda "Risorse" e definiamo le risorse per il nostro rapporto.
  2. Fare clic sul pulsante ">>" per selezionare tutti i campi per le risorse.
  3. Ora andiamo alla scheda "Impostazioni" e creiamo un'impostazione sotto forma di elenco.
  4. Fare clic sul pulsante Designer impostazioni composizione dati (il pulsante della bacchetta magica).
  5. Tipo di rapporto: "Elenco". Premiamo il pulsante "Avanti".
  6. Configuriamo i campi di output facendo clic sul pulsante ">>". Organizziamoli come segue: "PeriodMese", "Nomenclatura", "Qualità", "Registrar".
  7. Premiamo il pulsante "Avanti" e impostiamo il raggruppamento. Imposta il raggruppamento nel seguente ordine: "PeriodoMese", "Nomenclatura", "Qualità". Il raggruppamento "Registra" verrà visualizzato come record dettagliati.
  8. Premiamo il pulsante "OK".

Apriamo il nostro rapporto. Se eseguiamo questo rapporto, vedremo alcune particolarità durante la ricezione dei saldi. Se osservi attentamente il risultato del rapporto, noterai diversi errori contemporaneamente. In particolare, per qualche motivo, all'inizio del periodo di attività dell'azienda, c'è un equilibrio iniziale.

E questo errore è associato alla particolarità di ricevere saldi dal registrar. Affinché questi saldi vengano visualizzati correttamente, è necessario aggiungere un campo in più ai campi di output della richiesta, questo campo "PeriodSecond". Per aggiungere il campo "PeriodSecond", aprire il report nel Configuratore, cliccare sul pulsante "Apri schema composizione dati". Ora fai clic sul pulsante "Query Builder" e aggiungi "PeriodSecond". In questo caso, il campo "Registrar" rimarrà il primo campo del periodo, "PeriodSecond" sarà il secondo e "PeriodMonth" sarà il terzo.

A cosa serve un secondo? Il sistema di composizione dei dati calcola i residui mediante calcolo, e per determinare univocamente la posizione del registratore sull'asse temporale del collegamento al registratore stesso non basta, occorre anche un secondo, cioè la data di questo registratore, e quindi il sistema di composizione sarà in grado di calcolare il saldo corretto mediante calcolo. Se indichiamo l'ordine corretto dei campi e generiamo nuovamente il report, otteniamo:

Ora non c'è alcun residuo all'inizio della nomenclatura "Plinth". Inoltre, per il prossimo periodo, coincide con il saldo finale, cioè vediamo un risultato davvero corretto. È possibile scaricare un rapporto di esempio dal collegamento sottostante. Ti è piaciuto l'articolo? Cosa si può cambiare, cosa si può aggiungere? Sentiti libero di condividerlo nei commenti!

Alla fine dell'articolo vorrei consigliarti uno gratuito di Anatoly Sotnikov. Questo è un corso di un programmatore esperto. Ti mostrerà separatamente come creare report nell'ACS. Devi solo ascoltare attentamente e ricordare! Riceverai risposte a tali domande:
  • Come faccio a creare un semplice report di elenco?
  • A cosa servono le colonne Campo, Percorso e Titolo nella scheda Campi?
  • Quali sono le limitazioni per i campi di layout?
  • Come si configurano i ruoli correttamente?
  • Quali sono i ruoli per i campi di layout?
  • Dove posso trovare la scheda di composizione dei dati in una query?
  • Come configurare i parametri in ACS?
  • Ancora più interessante...
Probabilmente non dovresti provare a navigare in Internet da solo alla ricerca delle informazioni necessarie? Inoltre, tutto è pronto per l'uso. Basta iniziare! Tutti i dettagli su cosa c'è nei video tutorial gratuiti

Ecco una delle lezioni sulla scheda di composizione dei dati in una query:



Quando si creano report sull'ACS, è spesso necessario visualizzare la selezione del periodo sul modulo del report, in modo che non sia necessario compilare manualmente le date, ma selezionare da un elenco di periodi standard, come ad esempio: "Anni ", "Mese", "Settimana", ecc... Per i parametri di tipo Data, è possibile specificare solo "Inizio di quest'anno, mese e così via", ma non viene fornito "Fine".

Il fatto è che, tra i tipi di dati, è disponibile solo il tipo "Data di inizio standard", ma voglio anche la "Data di fine standard".

C'è un metodo per aggirare questo.

  1. Crea un nuovo parametro, chiamalo "Periodo"
  2. Impostiamo il tipo "Periodo standard" per questo parametro.
  3. Nel campo "Expression" dei parametri "StartPeriod" e "EndPeriod" utilizzati nella richiesta, impostare le espressioni " & Periodo.Data di inizio "e" & Period.EndDate "rispettivamente.

Ma c'è un po' di sottigliezza. Se utilizziamo tabelle virtuali nella query, molto probabilmente il report smetterà di funzionare e verrà visualizzato un messaggio di errore del tipo "Visualizza errore di elaborazione, tipo mancata corrispondenza, numero parametro ...".

Per evitare ciò, è necessario rimuovere tutti i parametri delle tabelle virtuali.

E aggiungili alle tabelle nella scheda "Composizione dati".

Affinché i parametri vengano visualizzati nelle impostazioni rapide del report, abilitare il flag corrispondente per i parametri del report.

Ora la scelta del periodo nel modulo del report è simile a questa.

Alcune caratteristiche dell'impostazione del periodo nell'ACS.

La maggior parte dei report sviluppati utilizzando il sistema di composizione dei dati (ACS) richiede all'utente di inserire il periodo per il quale verrà creato il report.

Di norma, nell'ACS, l'inserimento del periodo è organizzato tramite parametri, utilizzando la seguente costruzione vedi Questo metodo di inserimento del periodo è considerato "classico", è descritto in un articolo su ITS e altra letteratura sullo sviluppo in 1C, quindi lo prenderemo come base. Consideriamo come esempio una semplice query che riceve tutti i Documenti di Vendita di Beni e Servizi per un determinato periodo, cfr.

Quando si utilizza questo rapporto, l'utente imposta il periodo tramite i parametri vedi Tutto sembra essere corretto ... MA c'è un piccolo problema:

Il fatto è che la stragrande maggioranza degli utenti "capisce" il periodo in modo diverso da come 1C lo "capisce", esempi:

Dal punto di vista dell'utente, il periodo non è impostato, cioè NON È LIMITATO, cioè TUTTI i documenti devono essere inclusi nel report senza limiti di data.

"Dal punto di vista" del sistema 1C, il parametro-periodo è impostato e ... entrambi i suoi confini sono uguali a 01.01.0001 e solo i documenti con una data vuota saranno inclusi nel rapporto, il che in pratica significa che non verrà incluso nemmeno un documento.

Dal punto di vista dell'utente, tutti i documenti a partire dalla data del 28/01/2010 dovrebbero essere inclusi nella relazione.

"Dal punto di vista" 1C, il periodo 28.01.2010 - 01.01.001 solleverà un'eccezione.

Puoi, ovviamente, provare a spiegare all'utente perché il rapporto non mostra i documenti che si aspetta di vedere e come il periodo è presentato dal "punto di vista" di 1C, ma questo è un affare ingrato, e anche sbagliato. Buon programma dovrebbe essere, prima di tutto, conveniente per l'utente, perché il programma esiste per l'utente, e non viceversa, quindi, 1C dovrà essere "insegnato" a capire il periodo come lo capisce l'utente, ovvero:

1). Inizio periodo e Fine periodo non sono specificati -> tutti i documenti.

2). Viene specificato solo l'inizio del periodo -> tutti i documenti a partire dall'inizio del periodo

3). Inoltre, controlleremo che Fine del periodo> = Inizio del periodo e, se questo non è soddisfatto, supporremo che la Fine del periodo non sia specificata, ad es. 2).

In base a quanto sopra, l'espressione per il parametro EndDate è:

QUANDO & Period.EndDate = DATETIME (1,1,1)

POI DATA ORA (3999,12,31)

QUANDO & Periodo.Data di fine<&Период.ДатаНачала

POI DATA ORA (3999,12,31) DATA ORA (3999,12,31,23,59,59)

& Periodo.Data di fine

La visione finale della nostra costruzione della selezione del periodo è presentata in

Nota: questo meccanismo per l'impostazione dei parametri è destinato alle vecchie piattaforme 1C 8.1 e 8.2 (e alle configurazioni in esecuzione sotto il loro controllo), nelle versioni precedenti della piattaforma 1C sono integrati meccanismi per il controllo dei parametri non compilati e non è necessario ricorrere a il meccanismo descritto in questo articolo, inoltre su alcune versioni della piattaforma 1C, sono possibili errori e operazioni errate.

Quindi, cominciamo.

Per semplicità, comprendendo l'esempio, costruiremo su un semplice registro di accumulo circolante.

Nel mio caso si tratta del registro di cumulo "Contabilità lavori in corso".

Ad esempio, indicheremo i suoi parametri in modo rigido (non attraverso l'imposizione morbida dei parametri sull'ACS):

Attenzione, la periodicità della tavola virtuale è "Record".

Ma, come notato sopra, abbiamo bisogno del periodo in termini di periodicità, quindi propongo di calcolare il campo "Periodo" nel modo seguente (non del tutto bello, ma non ho visto opzioni migliori):

Come si può vedere dallo screenshot, alla richiesta viene passato un parametro, che l'utente indica nel form: Valore enumerazione "Frequenza" - questa enumerazione è presente in quasi tutte le soluzioni standard.

Indichiamo i suoi tipi disponibili nella scheda "Parametri":

Con questa impostazione, formattiamo il nostro periodo in modo che tutto sia bello e piacevole alla vista)

Ecco i formati stessi:

Mese: DF = "MMMM aaaa" g. ""

Giorno: DF = gg.MM.aaaa

Settimana: DF = "" Settimana da "gg.MM.aaaa"

Quarto: DF = "k" quarto "aaaa" g. ""

Anno: DF = "aaaa" g.""

Decennio: DF = "" Decennio con "gg.MM.aaaa"

Semestre: DF = "" Semestre con "gg.MM.aaaa"

È tutto. All'uscita, abbiamo un'immagine meravigliosa:

Questo articolo discute alcune delle specificità dell'impostazione del periodo quando si utilizza il sistema di composizione dei dati (ACS), i problemi che sorgono a causa della differenza nel concetto di periodo tra un utente normale e il sistema 1C, nonché i modi suggeriti per risolverli.
La maggior parte dei report sviluppati utilizzando il sistema di composizione dei dati (ACS) richiede all'utente di inserire il periodo per il quale verrà creato il report. Di norma, nell'ACS, l'iscrizione del periodo è organizzata per parametri, con l'ausilio della seguente costruzione cfr. Fig. 1 Questo metodo per inserire un periodo è considerato "classico", è descritto in un articolo su ITS e altra letteratura sullo sviluppo in 1C, quindi lo prenderemo come base. Consideriamo come esempio una semplice query che riceve tutti i Documenti di Vendita di Beni e Servizi per un determinato periodo, cfr. Fig. 2 Quando si utilizza questo report, l'utente imposta il periodo tramite i parametri vedere. Fig. 3 Tutto sembra essere corretto... MA c'è un piccolo problema:

Il fatto è che la stragrande maggioranza degli utenti "capisce" il periodo in modo diverso da come 1C lo "capisce", esempi:
1). Tener conto di Fig. 3
Dal punto di vista dell'utente, il periodo non è impostato, cioè NON È LIMITATO, cioè TUTTI i documenti devono essere inclusi nel report senza limiti di data.
"Dal punto di vista" del sistema 1C, il parametro-periodo è impostato e ... entrambi i suoi confini sono uguali a 01.01.0001 e solo i documenti con una data vuota saranno inclusi nel rapporto, il che in pratica significa che non verrà incluso nemmeno un documento.
2). Tener conto di Fig. 4
Dal punto di vista dell'utente, tutti i documenti a partire dalla data del 28/01/2010 dovrebbero essere inclusi nella relazione.
"Dal punto di vista" 1C, il periodo 28.01.2010 - 01.01.001 solleverà un'eccezione.

Puoi, ovviamente, provare a spiegare all'utente perché il rapporto non mostra i documenti che si aspetta di vedere e come il periodo è presentato dal "punto di vista" di 1C, ma questo è un affare ingrato, e anche sbagliato. Un buon programma dovrebbe, prima di tutto, essere conveniente per l'utente, perché il programma esiste per l'utente, e non viceversa, quindi, dovrai "insegnare" 1C a capire il periodo come lo capisce l'utente, ovvero:
1). Inizio periodo e Fine periodo non sono specificati -> tutti i documenti.
2). Viene specificato solo l'inizio del periodo -> tutti i documenti a partire dall'inizio del periodo
3). Inoltre, controlleremo che Fine del periodo> = Inizio del periodo e, se questo non è soddisfatto, supporremo che la Fine del periodo non sia specificata, ad es. 2).
In base a quanto sopra, l'espressione per il parametro EndDate sarà simile a questa:

SELEZIONA QUANDO & Data Fine Periodo = DATA ORA (1,1,1) POI DATA ORA (3999,12,31,23,59,59) ALTRIMENTI SELEZIONA QUANDO & Data Fine Periodo<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

La visione finale della nostra costruzione della selezione del periodo è presentata in Fig. 5