Casa / Lezioni di Windows / 1c lavorare con la parte tabellare del documento. Come inserire a livello di codice i dettagli di una riga di tabella

1c lavorare con la parte tabellare del documento. Come inserire a livello di codice i dettagli di una riga di tabella

In questo articolo scriveremo un'elaborazione per compilare la sezione tabellare in 1C 8.3 per una tipica configurazione 1C:ERP 2.1. Supponiamo che l'obiettivo dell'attività sia impostare uno sconto manuale del 5% per tutti gli articoli in un determinato documento. È possibile scaricare un esempio dall'articolo o un'altra elaborazione simile da.

Questa istruzione è destinata ai moduli gestiti (8.2 e 8.3). Per i moduli ordinari (8.1, 8.2) è possibile utilizzare .

Crea e salva una nuova elaborazione sul tuo computer. Per prima cosa devi eseguire alcuni passaggi di registrazione.

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

In questo articolo non ci soffermeremo in dettaglio sulla registrazione delle elaborazioni esterne e dei moduli stampati in 1C. Tutte queste informazioni sono nei nostri altri articoli.

Compilazione della parte tabellare del documento

Creiamo un nuovo modulo di elaborazione.

Ora dobbiamo aggiungere un nuovo comando al modulo creato. Si presuppone che modificherà automaticamente i dati nella parte tabellare di uno o più documenti (i loro moduli elenco) contemporaneamente, registrandoli successivamente.

Nel 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 stesso, pari alla quantità di merce nella riga moltiplicata per 0,05.

&Sulla procedura server Esegui comando(Comando, Oggetti assegnazione) Per ciascun ordine cliente dagli oggetti assegnazione Ciclo Customer OrderObject = Ordine cliente. OttieniOggetto(); Per ogni riga TK dal Customer OrderObject. Prodotti Linea CicloTZ. PercentualeScontoManuale = 5; LineaTZ. Importo sconto manuale = riga TK. Importo * 0 . 05; FineCiclo; OggettoOrdineCliente. Scrivere() ; FineCiclo; Fine della procedura

Registrazione dei trattamenti esterni

Avvia 1C in modalità "Enterprise" e apri la directory "Report ed elaborazioni aggiuntive". Troviamolo attraverso il menu "Tutte le funzioni".

Crea un nuovo elemento nella directory che si apre e clicca sul pulsante con lo stesso nome per caricare la tua elaborazione dal file. Posizioniamolo contemporaneamente sia sul modulo elenco che sul modulo scheda documento stesso.

Ora, nel modulo elenco documenti "Ordine cliente", verrà visualizzato il pulsante "Compilazione...", che ti consentirà di modificare manualmente gli sconti sui prodotti per più documenti contemporaneamente.

Questo pulsante sarà disponibile anche nella scheda documenti stessa.

Per tenere conto di denaro e beni, negli affari vengono ampiamente utilizzate varie tabelle. Quasi ogni documento è una tabella.

Una tabella elenca le merci da spedire dal magazzino. Un'altra tabella mostra gli obblighi di pagamento per questi beni.

Pertanto, in 1C, lavorare con le tabelle occupa un posto di rilievo.

Le tabelle in 1C sono anche chiamate “parti tabulari”. Directory, documenti e altro li hanno.

La query, una volta eseguita, restituisce una tabella a cui è possibile accedere in due modi diversi.

La prima selezione, più rapida, da cui si ottengono righe è possibile solo in ordine. Il secondo è caricare il risultato della query in una tabella di valori e quindi accedervi in ​​modo casuale.

//Opzione 1 – accesso sequenziale ai risultati della query

//prendi il tavolo
Seleziona = Query.Esegui().Select();
// esaminiamo in ordine tutte le righe del risultato della query
Mentre Select.Next() Ciclo
Rapporto(Selezione.Nome);
FineCiclo;

//Opzione 2 – caricamento in una tabella di valori
Richiesta = Nuova Richiesta("SELEZIONA Nome DA Directory.Nomenclatura");
//prendi il tavolo
Tabella = Query.Esegui().Scarica().
//inoltre possiamo anche scorrere tutte le righe
Per ogni riga del ciclo della tabella
Rapporto(String.Nome);
FineCiclo;
//o accedere arbitrariamente alle stringhe
Riga = Table.Find("Pala", "Nome");

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

Tabella nel modulo (thick client)

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

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

Quindi, posizioniamo la tabella sul modulo. Per fare ciò, puoi trascinare la tabella dal pannello Controlli. Allo stesso modo, puoi selezionare Controllo modulo/inserisci dal menu.

I dati possono essere memorizzati nella configurazione, quindi è necessario selezionare la parte tabellare esistente (precedentemente aggiunta) dell'oggetto di configurazione di cui si sta modificando il modulo.

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

Quando selezioni la parte tabellare, 1C stesso aggiungerà colonne alla tabella nel modulo. Le righe immesse dall'utente in tale tabella verranno salvate automaticamente insieme al libro/documento di consultazione.

Nella stessa proprietà Data è possibile inserire un nome arbitrario e selezionare il tipo Tabella valori.

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

Facendo clic con il tasto destro sulla tabella è possibile aggiungere una colonna. Nelle proprietà di una colonna è possibile specificare il suo nome (per riferimento nel codice 1C), l'intestazione della colonna nel modulo, la connessione con l'attributo della parte tabellare (quest'ultimo - se non viene selezionata una tabella arbitraria, ma una parte tabellare).

Nelle proprietà della tabella nel modulo è possibile specificare se l'utente può aggiungere/eliminare righe. Una forma più avanzata è la casella di controllo Solo visualizzazione. Queste proprietà sono utili da utilizzare per organizzare tabelle destinate alla visualizzazione di informazioni, ma non alla modifica.

Per gestire la tabella è necessario visualizzare sulla videata un pannello di comando. Seleziona la voce di menu Modulo/Inserisci controllo/Barra di comando.

Nelle proprietà della barra dei comandi, seleziona la casella di controllo Compilazione automatica in modo che i pulsanti sul pannello vengano visualizzati automaticamente.

Tabella sul modulo (thin client/gestito)

In un modulo gestito, queste azioni hanno un aspetto leggermente diverso. Se devi inserire una parte tabellare nel modulo, espandi il ramo Oggetto e trascina una delle parti tabellari verso sinistra. È tutto!

Se è necessario inserire una tabella di valori, aggiungere un nuovo attributo del modulo e nelle sue proprietà specificare il tipo – tabella di valori.

Per aggiungere colonne, utilizza il menu di scelta rapida su questo attributo del modulo, seleziona Aggiungi colonna attributo.

Quindi trascina anche la tabella a sinistra.

Affinché una tabella abbia una barra dei comandi, nelle proprietà della tabella, selezionare i valori presenti nella sezione Utilizzo – Posizione barra dei comandi.

Caricamento di una tabella in Excel

Qualsiasi tabella 1C presente nel modulo può essere stampata o caricata in Excel.

Per fare ciò, fare clic con il tasto destro su uno spazio vuoto nella tabella e selezionare Elenco.

In un client (thin) gestito, azioni simili possono essere eseguite utilizzando la voce di menu Tutte le azioni/Visualizza elenco.

Esistono parti tabulari per molti oggetti in 1C:

  • Directory
  • Documentazione
  • Report ed elaborazioni
  • Piani dei conti
  • Piani di tipo caratteristico
  • Piani di tipo calcolo
  • Processi e attività aziendali

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

Diamo un'occhiata ad alcune tecniche per lavorare con parti tabulari.

Come bypassare la parte tabellare

Per attraversare la parte della tabella, puoi utilizzare un ciclo Per ciascuno

Per ogni riga della parte tabulare del ciclo

Report(attributo String. TabularPart) ;

FineCiclo;

Ad ogni iterazione nella variabile Linea viene trasmessa la riga successiva della sezione tabellare. I valori dei dettagli della riga possono essere ottenuti dall'espressione Line.AttributeName.

Come ottenere e ignorare le righe selezionate della parte tabellare

Per visualizzare le informazioni dalla parte tabulare dell'oggetto, utilizzare un elemento del modulo Campo della tabella. Per abilitare la possibilità di selezionare più righe in un campo di tabella, è necessario impostare il valore Molteplici presso la sua proprietà Modalità di selezione.

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

Un ciclo viene utilizzato per scorrere le righe selezionate. Per ciascuno:

Righe selezionate = Elementi del modulo. NomeCampoTabella. Righe selezionate;

Per ogni riga dal ciclo delle righe selezionate

//contenuti in loop

FineCiclo;

Come selezionare a livello di codice le righe di una parte tabellare (campo tabella) e deselezionarle

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

Elementi del modulo. NomeCampoTabella. Righe selezionate. Chiaro() ;

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

Per ogni CurrentRow From TabularPart Loop
Elementi del modulo. NomeCampoTabella. Linee selezionate. Aggiungi(RigaCorrente) ;
FineCiclo;

Come cancellare la parte della tabella

TabularPart. Chiaro() ;

Come ottenere la riga corrente di una sezione di tabella

La riga corrente è la sequenza temporale in cui l'utente ha attualmente il cursore. Per ottenerlo è necessario accedere all'elemento di controllo del modulo associato alla parte tabellare.

Per i moduli regolari il codice sarà simile al seguente:

Elementi del modulo. NomeCampoTabella. Dati correnti;

Per i moduli gestiti:

Elementi. NomeCampoTabella. Dati correnti;

Come aggiungere una nuova riga a una sezione della tabella

Aggiunta di una nuova riga alla fine della sezione della tabella:

NuovaRiga = ParteTabella. Aggiungere() ;

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

NuovaRiga = ParteTabella. Inserisci (Indice)
//Indice - numero della riga aggiunta. La numerazione delle righe inizia da zero.

Nuova linea. Props1 = "Valore";

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

Se è necessario inserire a livello di codice i dettagli di una riga di sezione di tabella aggiunta dall'utente, è necessario utilizzare il gestore eventi della sezione di tabella All'avvio della modifica.

La procedura creata dal gestore ha tre parametri:

  • Elemento- contiene un elemento di controllo Campo tabellare.
  • Nuova linea- booleano. Contiene valore VERO, se viene aggiunta una nuova riga nella tabella e Menzogna, se l'utente ha iniziato a modificare una riga già esistente.
  • copia- booleano. Contiene valore VERO, se l'utente copia la riga e Menzogna in altri casi.

Diamo un'occhiata a un esempio. Diciamo che dobbiamo compilare i dettagli della sezione tabellare ContoConto, nel caso in cui venga aggiunta una nuova riga. Quando si modifica una riga esistente, non è necessario modificare il conto contabile.

Procedura TabularPartAtStartEditing(Elemento, NuovaRiga, Copia)

//Se l'utente modifica una riga esistente, non facciamo nulla
Se NON NewRow Allora
Ritorno;
Finisci se ;

//Se la riga è nuova, imposta il conto contabile
TechString = Articolo. Dati correnti; //Ottiene la riga corrente della parte tabellare
TechString. Contabilità = Piani dei conti. Autoportante. Account richiesto;
Fine della procedura