Casa / Skype / 1c 8.3 parte tabellare del documento negli esempi. Compilazione della parte tabellare del documento

1c 8.3 parte tabellare del documento negli esempi. Compilazione della parte tabellare del documento

Per tenere conto di denaro e merci, negli affari sono ampiamente utilizzate tabelle diverse. Quasi ogni documento è una tabella.

Una tabella elenca le merci da spedire dal magazzino. In un'altra tabella - l'obbligo di pagare per questi beni.

Pertanto, nel 1C, il lavoro con le tabelle occupa un posto di rilievo.

Le tabelle in 1C sono anche chiamate "parti di tabelle". Libri di riferimento, documenti e altri li hanno.

La query restituisce una tabella come risultato della sua esecuzione, a cui è possibile accedere in due modi diversi.

La prima selezione, più veloce, da cui ottenere le righe è possibile solo in ordine. Il secondo è scaricare il risultato della query in una tabella di valori e quindi accedervi casualmente.

//Opzione 1: accesso sequenziale ai risultati della query

// prendi il tavolo
Selezione = Query.Execute().Select();
// ignora tutte le righe del risultato della query in ordine
Mentre Selection.Next() Loop
Report(Selezione.Nome);
ciclo finale;

//Opzione 2: caricamento nella tabella dei valori
Query = Nuova Query("SELECT Name FROM Directory.Nomenclature");
// prendi il tavolo
Tabella = Query.Execute().Upload().
// quindi possiamo anche bypassare tutte le righe
Per ogni riga da Table Loop
Report(Stringa.Nome);
ciclo finale;
//o accedere arbitrariamente alle stringhe
Stringa = Table.Find("Pala", "Nome");

Una caratteristica importante è che nella tabella, che si ottiene dal risultato della query, tutte le colonne saranno fortemente tipizzate. Ciò significa che richiedendo il campo Nome dalla ricerca Nomenclatura, riceverai una colonna di tipo String con una lunghezza consentita non superiore a N caratteri.

Tabella sul modulo (cliente spesso)

L'utente lavora con la tabella quando viene inserita nel modulo.

Abbiamo discusso i principi di base del lavoro con i moduli nella lezione su e nella lezione su

Quindi, posizioniamo la tabella sul modulo. Per fare ciò, puoi trascinare la tabella dal pannello di controllo. Allo stesso modo, puoi selezionare il controllo Modulo/Inserisci dal menu.

I dati possono essere archiviati in una configurazione, quindi è necessario selezionare una parte tabulare esistente (aggiunta in precedenza) dell'oggetto di configurazione di cui si sta modificando il modulo.

Fare clic sul pulsante "..." nella proprietà Dati. Per visualizzare l'elenco delle parti tabulari, è necessario espandere il ramo Oggetto.

Quando si sceglie una parte tabellare, 1C stesso aggiungerà colonne alla tabella sul modulo. Le stringhe inserite dall'utente in tale tabella verranno salvate automaticamente insieme alla directory/documento.

Nella stessa proprietà Data, puoi inserire un nome arbitrario e selezionare il tipo ValueTable.

Ciò significa che è stata selezionata una tabella di valori arbitraria. Non aggiungerà automaticamente colonne, non verrà salvata automaticamente, ma puoi farci quello che vuoi.

Facendo clic con il tasto destro sulla tabella è possibile aggiungere una colonna. Nelle proprietà della colonna, puoi specificarne il nome (per riferimento nel codice 1C), l'intestazione della colonna sul modulo, la connessione con l'attributo della parte tabulare (quest'ultima - in caso contrario viene selezionata una tabella arbitraria, ma parte tabellare).

Nelle proprietà della tabella nel modulo, è possibile specificare se l'utente può aggiungere/eliminare righe. Un modulo più avanzato è la casella di controllo ViewOnly. Queste proprietà sono utili per organizzare le tabelle destinate alla visualizzazione delle informazioni, ma non alla modifica.

Per gestire la tabella, è necessario visualizzare il pannello dei comandi sul modulo. Selezionare la voce di menu Modulo/Inserisci controllo/Pannello comandi.

Nelle proprietà della barra dei comandi, seleziona la casella di controllo Completamento automatico in modo che i pulsanti sulla barra degli strumenti appaiano automaticamente.

Tabella su modulo (thin/managed client)

In un modulo gestito, queste azioni hanno un aspetto leggermente diverso. Se devi inserire una sezione tabulare nel form, espandi il ramo Oggetto e trascina una delle sezioni tabulari a sinistra. E questo è tutto!

Se devi inserire una tabella di valori, aggiungi nuovi oggetti di scena form e nelle sue proprietà specifica il tipo: una tabella di valori.

Per aggiungere colonne, utilizzare il menu del pulsante destro del mouse su questo attributo del modulo, voce Aggiungi colonna attributo.

Quindi trascina anche la tabella a sinistra.

Affinché la tabella abbia una barra dei comandi, nelle proprietà della tabella, seleziona i valori nella sezione Utilizzo - Posizione della barra dei comandi.

Esportazione di una tabella in Excel

Qualsiasi tabella 1C situata sul modulo può essere stampata o caricata in Excel.

Per fare ciò, fare clic con il tasto destro del mouse su spazio libero nella tabella e seleziona Mostra elenco.

In un client gestito (thin), è possibile eseguire azioni simili utilizzando la voce di menu Tutte le azioni/Elenco di visualizzazione.

Esistono parti tabulari per molti oggetti in 1C:

  • Libri di riferimento
  • I documenti
  • Rapporti ed elaborazione
  • Piani dei conti
  • Piani di tipi di caratteristiche
  • Piani di tipo di calcolo
  • Processi e compiti aziendali

Le parti tabulari consentono di memorizzare una quantità illimitata di informazioni strutturate appartenenti a un oggetto.

Diamo un'occhiata ad alcuni metodi per lavorare con le parti tabulari.

Come bypassare la parte tabellare

È possibile utilizzare un ciclo per attraversare la parte tabulare Per tutti

Per ogni riga da TabularPart Loop

Report(String.TablePartAttribute) ;

ciclo finale;

Ad ogni iterazione in una variabile Linea viene trasferita la riga successiva della parte tabellare. I valori degli attributi di stringa possono essere ottenuti dall'espressione String.AttributeName.

Come ottenere e ignorare le righe selezionate della sezione tabulare

L'elemento del modulo viene utilizzato per visualizzare le informazioni dalla parte tabellare dell'oggetto. campo tabella. Per abilitare la possibilità di selezionare più righe in un campo tabella, è necessario impostare il valore Multiplo di sua proprietà Modalità di selezione.

Per ottenere un elenco delle righe selezionate, utilizzare il codice seguente:

Il ciclo viene utilizzato per scorrere le righe selezionate Per tutti:

SelectedLines = FormElements. NomeCampoTabella. Linee selezionate;

Per ogni riga dal ciclo di righe selezionate

//esegui il ciclo del contenuto

ciclo finale;

Come selezionare a livello di codice le righe della parte tabellare (campo tabella) e rimuovere la selezione

Per deselezionare a livello di codice le righe in un campo tabella:

ElementsForm. NomeCampoTabella. Stringhe selezionate. Chiaro() ;

Per selezionare a livello di codice tutte le righe in un campo tabella:

Per ogni CurrentRow From TablePart Loop
ElementsForm. NomeCampoTabella. Linee selezionate. Aggiungi(RigaCorrente) ;
ciclo finale;

Come cancellare il foglio di calcolo

TabularPart. Chiaro() ;

Come ottenere la riga corrente di una sezione tabellare

La riga corrente è il periodo in cui l'utente ha questo momento il cursore si trova. Per ottenerlo è necessario fare riferimento al controllo presente sul form, che è associato alla parte tabulare.

Per i moduli regolari, il codice sarebbe simile a questo:

ElementsForm. NomeCampoTabella. Dati correnti;

Per moduli gestiti:

Elementi. NomeCampoTabella. Dati correnti;

Come aggiungere una nuova riga a un foglio di calcolo

Aggiunta di una nuova riga alla fine della sezione tabellare:

Nuova riga = parte tabella. Aggiungere() ;

Aggiunta di una nuova riga in qualsiasi punto della sezione tabulare (le righe successive verranno spostate):

Nuova riga = parte tabella. Incolla(Indice)
//Indice - il numero della riga aggiunta. La numerazione delle righe parte da zero.

Nuova linea. Attributo1 = "Valore" ;

Come compilare a livello di codice i dettagli di una riga di tabella

Se devi compilare a livello di codice i dettagli della riga della sezione tabulare che l'utente aggiunge, devi utilizzare il gestore eventi della sezione tabulare AtStartEditing.

La procedura creata dal gestore ha tre parametri:

  • Elemento- contiene un controllo Campo da tavola.
  • Nuova linea- booleano. Contiene valore Vero se aggiunto nuova linea sezione tabellare, e Menzogna, se l'utente ha iniziato a modificare una riga già esistente.
  • copiando- booleano. Contiene valore Vero se l'utente sta copiando la stringa, e Menzogna in altri casi.

Considera un esempio. Diciamo che dobbiamo compilare i dettagli della sezione tabulare Conto Conto, nel caso in cui venga aggiunta una nuova riga. Quando si modifica una riga esistente, non è necessario modificare il conto contabile.

Procedura TabularPartAt EditingStart(Element, NewRow, Copy)

//Se l'utente sta modificando una riga esistente, non fare nulla
Se NON NewString allora
Ritorno;
Finisci se ;

//Se la stringa è nuova, imposta l'account
Stringa di testo = elemento. Dati correnti; //Ricevuta la riga corrente della sezione tabulare
TekString. AccountAccount = Piani dei conti. Autoportante. Conto desiderato;
EndProcedura

Nell'ambito di questo articolo, scriveremo l'elaborazione della compilazione della parte tabellare in 1C 8.3 per una tipica configurazione 1C: ERP 2.1. Si supponga che l'obiettivo dell'attività sia impostare uno sconto manuale del 5% per tutti gli articoli del prodotto questo documento. Un esempio dell'articolo può essere scaricato da o altra elaborazione simile da .

Questa istruzione progettato per moduli gestiti (8.2 e 8.3). Per i moduli regolari (8.1, 8.2) puoi usare .

Crea e salva un nuovo trattamento sul tuo computer. Per prima cosa devi eseguire alcuni passaggi di registrazione.

Aprire il modulo oggetto e scrivere il codice sottostante (può anche essere ricavato dall'elaborazione sopra riportata). In generale, la struttura non cambierà a seconda della situazione. Vengono modificati solo alcuni parametri di impostazione e, se necessario, i nomi delle variabili.

Nell'ambito di questo articolo, non ci soffermeremo in dettaglio sulla registrazione. elaborazione esterna e moduli stampati in 1C. Tutte queste informazioni sono negli altri nostri articoli.

Compilazione della parte tabellare del documento

Creiamo nuova forma in lavorazione.

Ora dobbiamo aggiungere un nuovo comando sul modulo creato. Si presume che modificherà automaticamente i dati nella parte tabulare di uno e più documenti (i loro moduli di elenco) contemporaneamente, trascrivendoli in seguito.

Come parte del nostro esempio, verrà elaborata la parte tabellare già esistente "Prodotti". Per ogni linea verrà impostato uno sconto manuale del 5%. Inoltre, calcoleremo l'importo di questo sconto, pari alla somma delle merci nella riga, moltiplicato per 0,05.

&At Server Procedura Esegui comando (comando, oggetti di destinazione) Per ogni ordine cliente da oggetti di destinazione Ciclo Oggetto ordine cliente = Ordine cliente. OttieniOggetto(); Per ogni riga TK da CustomerOrderObject. Stringa ciclo merci TZ. PercentualeScontoManuale = 5 ; Stringa TZ. Importo diManualDiscount = Stringa TK. Importo * 0 . 05; ciclo finale; OrderCustomerObject. Scrivere() ; ciclo finale; EndProcedura

Registrazione del trattamento esterno

Esegui 1C in modalità "Enterprise" e apri la directory " Rapporti aggiuntivi ed elaborazione". Trovalo attraverso il menu "Tutte le funzioni".

Creare nuovo elemento nella directory che si apre e, cliccando sul pulsante omonimo, carica la tua elaborazione dal file. Inseriamolo contemporaneamente sia sul modulo elenco che sul modulo della scheda documento stessa.

Ora nella forma dell'elenco dei documenti "Ordine cliente" apparirà il pulsante "Riempimento ...", che ti consentirà di modificare gli sconti manuali delle merci per più documenti contemporaneamente.

Inoltre, questo pulsante sarà disponibile nella scheda del documento stesso.