Casa / Lavora su Internet / Compila la parte tabellare da un altro documento. Come ottenere e ignorare le righe selezionate della sezione tabulare

Compila la parte tabellare da un altro documento. Come ottenere e ignorare le righe selezionate della sezione tabulare

1. Enunciato del problema

In questo articolo, illustreremo il processo di scrittura di un semplice elaborazione esterna compilando la parte tabellare 1C 8 per le configurazioni utilizzando applicazione regolare. Ad esempio, prendiamo il seguente compito: “Nella configurazione 1C: Contabilità 2.0 creare un'elaborazione esterna di riempimento della sezione tabellare Prodotti documento, i dati da compilare sono presi dalla sezione tabellare Prodotti documento Ricevimento di beni e servizi". Pertanto, dobbiamo compilare la merce in vendita in base alla merce in ricezione, un compito del genere è abbastanza comune nella pratica reale di un programmatore 1C.

2. Creazione di elaborazioni esterne

Andiamo a 1C 8 in modalità Configuratore. Usando il menù File -> Nuovo o pittogrammi nuovo documento creane uno nuovo elaborazione esterna.

In campo Nome specifichiamo: “Il riempimento più semplice nella parte tabulare” e salviamo l'elaborazione esterna disco fisso utilizzando il menu File -> Salva o icona Salva o scorciatoia da tastiera ctrl+s.

Selezione di una filiale Requisiti nell'albero dei metadati di elaborazione e facendo clic sul pulsante Aggiungere(pulsante più verde) crea nuovi oggetti di scena elaborazione esterna - Ricevute di documenti, scegli il tipo per esso DocumentReference.Ricevimento merciServizi, abbiamo bisogno di questo attributo per selezionare un documento Ricevimento di beni e servizi, sulla base del quale sarà completata l'attuazione.

Per selezionare un documento di ricevuta, abbiamo bisogno di un modulo separato. Selezione di una filiale Le forme e usando lo stesso pulsante - Aggiungere Creiamo un modulo di elaborazione esterno. Si aprirà la finestra del designer del modulo, non è necessario apportare modifiche alla prima pagina del designer, quindi fai clic sul pulsante Ulteriore.

Nella seconda pagina del costruttore, dobbiamo selezionare gli oggetti di scena Ricevute di documenti(affinché appaia su forma creata) e premere il pulsante Pronto.

Successivamente, si aprirà il modulo creato, è necessario che l'utente selezioni il documento di ricevuta su di esso e lo chiuda. Quindi quando si preme il pulsante Correre il modulo dovrebbe semplicemente chiudersi. Per implementarlo, seleziona il pulsante Correre, fai clic destro su di esso e seleziona Proprietà. Nelle proprietà del pulsante, nella riga Azione seleziona un'azione chiudere. Questo completa il lavoro con il modulo, chiudilo.

3. Programmazione

Iniziamo a programmare la lavorazione di riempimento della parte tabellare. Andiamo a Modulo oggetto elaborazione esterna (sul pannello di elaborazione inferiore, il pulsante Azioni -> Apri modulo oggetto).

In esso dobbiamo creare una procedura di esportazione Inizializzare.

Procedura Inizializzare Esportare EndProcedura

notare che procedura Inizializzare, così come tutti i suoi parametri, sono obbligatori per le elaborazioni esterne di compilazione della sezione tabellare, se non lo crei o se non fornisci tutti i parametri, la tua elaborazione semplicemente non funzionerà.

Ora iniziamo a scrivere il codice. Per prima cosa creiamo una variabile per la parte tabulare del documento Vendita di beni e servizi che compileremo.

ParteTabella = Oggetto[NomeParteTabella];

Quando si esegue la procedura nel parametro Un oggetto conterrà l'oggetto documento che compileremo e nel parametro NomeParteTabella una stringa con il nome della parte tabulare che stiamo riempiendo. Quindi questa riga di codice ottiene parte tabellare documento compilabile con il suo nome.

Abbiamo bisogno che l'utente selezioni un documento Ricevimento di beni e servizi, quindi scriviamo il codice per aprire il modulo di selezione del documento. Innanzitutto, otteniamo questo modulo in una variabile utilizzando il metodo di elaborazione esterno GetForm(<Форма>, <Владелец>, <КлючУникальности>) . Ci basta compilare solo il primo parametro di questo metodo, passandovi una stringa con il nome del nostro modulo.

IncomingSelectionForm = GetForm("Modulo");

Ora apriamo il modulo risultante usando l'apertura modale (mentre il modulo è aperto, tutte le altre finestre 1C non sono disponibili), perché con questo metodo di apertura, il nostro ulteriore codice nella procedura Inizializzare non verrà eseguito fino a quando l'utente non chiude il modulo.

AdmissionSelectionForm.OpenModally();

Dopo che l'utente ha chiuso il modulo, è necessario verificare se l'attributo è stato compilato Ricevute di documenti(nel caso in cui non sia stato selezionato alcun documento di ricevuta). Se dopo aver controllato Ricevute di documentiè vuoto, l'ulteriore elaborazione non ha senso e dovrebbe essere interrotta.

Se NON ValueFilled(ReceiptDocument) Allora Report(); Ritorno ; Finisci se ;

Per verificare la completezza dell'attributo, qui viene utilizzata la funzione di contesto globale Valore riempito(<Значение>) , controlla se il valore passato nel parametro è diverso dal valore predefinito dello stesso tipo. Procedura Da segnalare visualizza il testo specificato nella finestra di messaggio 1C 8. Parola chiave Ritorno interrompe l'esecuzione della procedura.

Iniziamo a scrivere una query che selezionerà i dati della parte tabulare Prodotti documento Ricevimento di beni e servizi. Creiamo una nuova richiesta:

Richiesta = Nuova Richiesta;

Request.SetParameter( "Documento di ricevuta",Documento di ricevuta);

Scriviamo il testo della richiesta, lo faremo con l'aiuto di Richiesta costruttore. La scrittura manuale del testo della richiesta non è consigliata, non è efficiente e richiede molto tempo. Iniziamo con una riga:

Testo.Richiesta = "" ;

Posizionare il cursore tra le virgolette, premere il tasto destro del mouse e selezionare l'elemento Richiedi costruttore.... Successivamente, ti verrà richiesto di creare una nuova richiesta, fare clic sul pulsante "OK". Si aprirà una finestra del costruttore, nella sua parte sinistra si trovano tutte le tabelle del database disponibili, abbiamo bisogno di un documento Servizi in entrata merci. Trovalo e aprilo con il simbolo "+", seleziona la parte tabulare Prodotti e trascinalo nella seconda parte della schermata di progettazione, che viene chiamata tavoli(Puoi anche spostare la tabella desiderata utilizzando il pulsante “>”).

Ora espanderemo la tabella che abbiamo scelto di "+" ( Merci in entrata Servizi Merci) e trascinare i campi necessari per la nostra compilazione della tab-part nella terza parte della schermata del costruttore, che si chiama - campi. Non selezioneremo tutti i campi disponibili, ci limiteremo al seguente set: Nomenclatura, quantità, prezzo, importo, aliquota IVA, importo IVA.

Poiché abbiamo bisogno dei dati di un solo documento di ricevuta (che abbiamo selezionato prima di iniziare a compilare), quindi nella scheda "Condizioni", imporremo una condizione sul collegamento del documento utilizzando il parametro che abbiamo superato.

La creazione del testo della query nel costruttore è ora completata, fare clic sul pulsante "OK". Di conseguenza, abbiamo il seguente testo di richiesta:

Query.Text = "SELEZIONA |DA |DOVE ;

La richiesta creata deve solo essere eseguita e scaricata in una variabile:

Risultato = Request.Execute().Upload();

In una variabile Risultato viene memorizzata una tabella di valori con le righe della parte tabellare Prodotti documento di nostra scelta Ricevimento di beni e servizi. Ora puoi iniziare a compilare il foglio di calcolo. Prodotti la nostra implementazione. Ma prima di inserire i dati, dovresti cancellarli, nel caso in cui ci siano già alcune righe lì.

TablePart.Clear();

Con un ciclo Per tutti andiamo in giro per la tabella dei valori con i risultati della query.

Per ogni elemento di risultato del ciclo dei risultati Fine del ciclo;

In questo ciclo creeremo e compileremo le righe della parte tabulare del documento Vendita di beni e servizi. Possiamo creare una nuova linea usando una variabile TabularPart, attraverso il quale puoi eseguire qualsiasi azione con esso.

NewStringPT = TabularPart.Add();

Compila la scheda della linea creata. parti dei dati dalla stringa del risultato della query utilizzando la procedura contesto globaleFillPropertyValues(<Приемник>, <Источник>) .

FillPropertyValues(NewStringPT,ResultElement);

Ma i dati che abbiamo inserito non sono sufficienti, affinché il documento possa essere eseguito, è necessario compilarne di più conti di contabilità di magazzino. Per fare ciò, utilizziamo l'esportazione

procedura Compila fattureContabilitàInRowTabParts dal modulo oggetto documento Vendita di beni e servizi. Chiamiamolo con il parametro Un oggetto(dovrebbe essere notato

che possiamo solo chiamare esportare procedure dal modulo oggetto documento).

Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True);

Questo completa la programmazione del riempimento della parte tabellare per 1C 8 completato. è possibile utilizzare l'elaborazione. Testo integrale della procedura Inizializzare, si presenta così:

Procedura Inizializzare (Oggetto, NomeParteTabulare = Non definito, CampoTabella Oggetto = Non definito) Esportare ParteTabella = Oggetto[NomeParteTabella]; IncomingSelectionForm = GetForm("Modulo"); AdmissionSelectionForm.OpenModally(); Se NON ValueFilled(Documento in entrata) Quindi Report ( "Nessun documento di ricevuta selezionato"); Ritorno ; Finisci se ; Richiesta = Nuova Richiesta; Request.SetParameter( "Documento di ricevuta",Documento di ricevuta); Query.Text = "SELEZIONA | Ricevimento di beni, servizi, beni, nomenclatura, | Ricevimento di merci, servizi, merci, quantità, | Ricevimento di merci, servizi, merci, aliquota IVA, | Ricevimento di beni, servizi, beni. | Ricevimento di beni, servizi, beni Importo dell'IVA, | Ricevimento di merci, servizi, merci Prezzo| DA | Documento.Ricevuta della merceServizi.Merci AS Ricezione della merceServiziBene|DOVE | GoodsReceiptServicesGoods.Reference = &ReceiptDocument"; Risultato = Request.Execute().Upload(); TablePart.Clear(); Per ogni elemento risultato dal ciclo dei risultati NewRowPT = TabularPart.Add(); FillPropertyValues(NewStringPT,ResultElement); Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True); ciclo finale; EndProcedura

La parte successiva dell'articolo ti spiegherà come eseguire il debug dell'elaborazione della compilazione della parte tabellare e come collegarla al documento.

4. Debug

Abbastanza spesso, è necessario eseguire il debug del codice che scrivi. Per eseguire il debug dell'elaborazione del riempimento della parte tabellare 1C 8 crea i suoi oggetti di scena Riferimento all'oggetto genere DocumentReference.Realizzazione di BeniServizi

Ne abbiamo bisogno per selezionare un documento di implementazione durante il debug, che compileremo. Successivamente, è necessario creare un modulo per il debug e posizionare lì gli oggetti di scena creati. Riferimento all'oggetto, il processo di creazione di un modulo di debug non differisce dalla creazione di un modulo di selezione del documento di ricevuta, quindi non ci soffermeremo su di esso in dettaglio.

Dopo aver creato il modulo, vai al suo modulo. Lì troveremo una procedura creata automaticamente PulsanteEseguiPushing. Questa procedura viene eseguita quando si preme il pulsante. Correre. Chiamiamo una procedura da esso Inizializzare, che si trova nel modulo di elaborazione, passeremo l'oggetto del documento ai parametri Vendita di beni e servizi(che otterremo dagli oggetti di scena Riferimento all'oggetto) e una riga con il nome della parte tabellare da compilare (nel nostro caso Prodotti).

Procedura PulsanteEseguiClic(pulsante) Inizializza(ReferenceToObject.GetObject(), "Merci"); EndProcedura

Ora è necessario rendere il modulo creato il modulo di elaborazione principale. Per fare ciò, selezionalo nel campo "Modulo di elaborazione".

Ora puoi impostare un punto di interruzione nel punto giusto della procedura Inizializzare o procedure PulsanteEseguiPushing eseguire il debug dei moduli e avviare l'elaborazione del riempimento della sezione tabellare in modalità debug 1C: Impresa.

5. Connessione a un documento

Dopo che l'elaborazione di riempimento è stata scritta e sottoposta a debug, dovrebbe essere collegata al documento da cui verrà eseguita. Per fare questo, vai a 1C 8 in modalità Azienda, vai al menu Servizio -> Rapporti aggiuntivi ed elaborazione -> Elaborazione esterna aggiuntiva di parti tabulari e aggiungi nuovo elemento directory. Con bottone Sostituisci il file di elaborazione esterno Aggiungiamo il file della lavorazione di riempimento alla sezione tabellare da noi creata.

Compilare l'affiliazione al trattamento utilizzando il pulsante Selezione scegli un documento Vendita di beni e servizi

E indichiamo che il ripieno è destinato alla parte tabulare Prodotti.

Premiamo il pulsante OK e il gioco è fatto, l'elaborazione del riempimento sarà disponibile nel menu Riempire parte tabellare Prodotti documento Vendita di beni e servizi. È possibile scaricare l'elaborazione utilizzata per questo esempio da .

In questo articolo considereremo il processo di scrittura dell'elaborazione esterna più semplice per la compilazione di una parte tabellare 1C 8 per le configurazioni utilizzando una normale applicazione. Ad esempio, prendiamo il seguente compito: “Nella configurazione 1C: Contabilità 2.0 creare un'elaborazione esterna di riempimento della sezione tabellare Prodotti documento Vendita di beni e servizi, i dati da compilare sono presi dalla sezione tabellare Prodotti documento Ricevimento di beni e servizi". Pertanto, dobbiamo compilare la merce in vendita in base alla merce in ricezione, un compito del genere è abbastanza comune nella pratica reale di un programmatore 1C.

2. Creazione di elaborazioni esterne

Andiamo a 1C 8 in modalità Configuratore. Usando il menù File -> Nuovo o pittogrammi nuovo documento creane uno nuovo elaborazione esterna.

In campo Nome indichiamo: “Il riempimento più semplice nella parte tabulare” e salviamo l'elaborazione esterna sull'hard disk tramite il menu File -> Salva o icona Salva o scorciatoia da tastiera ctrl+s.

Selezione di una filiale Requisiti nell'albero dei metadati di elaborazione e facendo clic sul pulsante Aggiungere(pulsante con più verde) crea un nuovo attributo di elaborazione esterno - Ricevute di documenti, scegli il tipo per esso DocumentReference.Ricevimento merciServizi, abbiamo bisogno di questo attributo per selezionare un documento Ricevimento di beni e servizi, sulla base del quale sarà completata l'attuazione.

Per selezionare un documento di ricevuta, abbiamo bisogno di un modulo separato. Selezione di una filiale Le forme e usando lo stesso pulsante - Aggiungere Creiamo un modulo di elaborazione esterno. Si aprirà la finestra del designer del modulo, non è necessario apportare modifiche alla prima pagina del designer, quindi fai clic sul pulsante Ulteriore.

Nella seconda pagina del costruttore, dobbiamo selezionare gli oggetti di scena Ricevute di documenti(in modo che appaia nel modulo creato) e premere il pulsante Pronto.

Successivamente, si aprirà il modulo creato, è necessario che l'utente selezioni il documento di ricevuta su di esso e lo chiuda. Quindi quando si preme il pulsante Correre il modulo dovrebbe semplicemente chiudersi. Per implementarlo, seleziona il pulsante Correre, fai clic destro su di esso e seleziona Proprietà. Nelle proprietà del pulsante, nella riga Azione scegli un'azione chiudere. Questo completa il lavoro con il modulo, chiudilo.

3. Programmazione

Iniziamo a programmare la lavorazione di riempimento della parte tabellare. Andiamo a Modulo oggetto elaborazione esterna (sul pannello di elaborazione inferiore, il pulsante Azioni -> Apri modulo oggetto).

In esso dobbiamo creare una procedura di esportazione Inizializzare.

Procedura Inizializzare Esportare EndProcedura

notare che procedura Inizializzare, così come tutti i suoi parametri, sono obbligatori per le elaborazioni esterne di compilazione della sezione tabellare, se non lo crei o se non fornisci tutti i parametri, la tua elaborazione semplicemente non funzionerà.

Ora iniziamo a scrivere il codice. Per prima cosa creiamo una variabile per la parte tabulare del documento Vendita di beni e servizi che compileremo.

ParteTabella = Oggetto[NomeParteTabella];

Quando si esegue la procedura nel parametro Un oggetto conterrà l'oggetto documento che compileremo e nel parametro NomeParteTabella una stringa con il nome della parte tabulare che stiamo riempiendo. Pertanto, questa riga di codice ottiene la parte tabulare del documento compilato con il suo nome.

Abbiamo bisogno che l'utente selezioni un documento Ricevimento di beni e servizi, quindi scriviamo il codice per aprire il modulo di selezione del documento. Innanzitutto, otteniamo questo modulo in una variabile utilizzando il metodo di elaborazione esterno GetForm(<Форма>, <Владелец>, <КлючУникальности>) . Ci basta compilare solo il primo parametro di questo metodo, passandovi una stringa con il nome del nostro modulo.

IncomingSelectionForm = GetForm("Modulo");

Ora apriamo il modulo risultante usando l'apertura modale (mentre il modulo è aperto, tutte le altre finestre 1C non sono disponibili), perché con questo metodo di apertura, il nostro ulteriore codice nella procedura Inizializzare non verrà eseguito fino a quando l'utente non chiude il modulo.

AdmissionSelectionForm.OpenModally();

Dopo che l'utente ha chiuso il modulo, è necessario verificare se l'attributo è stato compilato Ricevute di documenti(nel caso in cui non sia stato selezionato alcun documento di ricevuta). Se dopo aver controllato Ricevute di documentiè vuoto, l'ulteriore elaborazione non ha senso e dovrebbe essere interrotta.

Se NON ValueFilled(ReceiptDocument) Allora Report(); Ritorno ; Finisci se ;

Per verificare la completezza dell'attributo, qui viene utilizzata la funzione di contesto globale Valore riempito(<Значение>) , controlla se il valore passato nel parametro è diverso dal valore predefinito dello stesso tipo. Procedura Da segnalare visualizza il testo specificato nella finestra di messaggio 1C 8. Parola chiave Ritorno interrompe l'esecuzione della procedura.

Iniziamo a scrivere una query che selezionerà i dati della parte tabulare Prodotti documento Ricevimento di beni e servizi. Creiamo una nuova richiesta:

Richiesta = Nuova Richiesta;

Request.SetParameter( "Documento di ricevuta",Documento di ricevuta);

Scriviamo il testo della richiesta, lo faremo con l'aiuto di Richiesta costruttore. La scrittura manuale del testo della richiesta non è consigliata, non è efficiente e richiede molto tempo. Iniziamo con una riga:

Testo.Richiesta = "" ;

Posizionare il cursore tra le virgolette, premere il tasto destro del mouse e selezionare l'elemento Richiedi costruttore.... Successivamente, ti verrà richiesto di creare una nuova richiesta, fare clic sul pulsante "OK". Si aprirà una finestra del costruttore, nella sua parte sinistra si trovano tutte le tabelle del database disponibili, abbiamo bisogno di un documento Servizi in entrata merci. Trovalo e aprilo con il simbolo "+", seleziona la parte tabulare Prodotti e trascinalo nella seconda parte della schermata di progettazione, che viene chiamata tavoli(Puoi anche spostare la tabella desiderata utilizzando il pulsante “>”).

Ora espanderemo la tabella che abbiamo scelto di "+" ( Merci in entrata Servizi Merci) e trascinare i campi necessari per la nostra compilazione della tab-part nella terza parte della schermata del costruttore, che si chiama - campi. Non selezioneremo tutti i campi disponibili, ci limiteremo al seguente set: Nomenclatura, quantità, prezzo, importo, aliquota IVA, importo IVA.

Poiché abbiamo bisogno dei dati di un solo documento di ricevuta (che abbiamo selezionato prima di iniziare a compilare), quindi nella scheda "Condizioni", imporremo una condizione sul collegamento del documento utilizzando il parametro che abbiamo superato.

La creazione del testo della query nel costruttore è ora completata, fare clic sul pulsante "OK". Di conseguenza, abbiamo il seguente testo di richiesta:

Query.Text = "SELEZIONA |DA |DOVE ;

La richiesta creata deve solo essere eseguita e scaricata in una variabile:

Risultato = Request.Execute().Upload();

In una variabile Risultato viene memorizzata una tabella di valori con le righe della parte tabellare Prodotti documento di nostra scelta Ricevimento di beni e servizi. Ora puoi iniziare a compilare il foglio di calcolo. Prodotti la nostra implementazione. Ma prima di inserire i dati, dovresti cancellarli, nel caso in cui ci siano già alcune righe lì.

TablePart.Clear();

Con un ciclo Per tutti andiamo in giro per la tabella dei valori con i risultati della query.

Per ogni elemento di risultato del ciclo dei risultati Fine del ciclo;

In questo ciclo creeremo e compileremo le righe della parte tabulare del documento Vendita di beni e servizi. Possiamo creare una nuova linea usando una variabile TabularPart, attraverso il quale puoi eseguire qualsiasi azione con esso.

NewStringPT = TabularPart.Add();

Compila la scheda della linea creata. parti dei dati dalla stringa del risultato della query utilizzando la procedura contesto globale - FillPropertyValues(<Приемник>, <Источник>) .

FillPropertyValues(NewStringPT,ResultElement);

Ma i dati che abbiamo inserito non sono sufficienti, affinché il documento possa essere eseguito, è necessario compilarne di più conti di contabilità di magazzino. Per fare ciò, utilizziamo l'esportazione

procedura Compila fattureContabilitàInRowTabParts dal modulo oggetto documento Vendita di beni e servizi. Chiamiamolo con il parametro Un oggetto(dovrebbe essere notato

che possiamo solo chiamare esportare procedure dal modulo oggetto documento).

Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True);

Questo completa la programmazione del riempimento della parte tabellare per 1C 8 completato. è possibile utilizzare l'elaborazione. Testo integrale della procedura Inizializzare, si presenta così:

Procedura Inizializzare (Oggetto, NomeParteTabulare = Non definito, CampoTabella Oggetto = Non definito) Esportare ParteTabella = Oggetto[NomeParteTabella]; IncomingSelectionForm = GetForm("Modulo"); AdmissionSelectionForm.OpenModally(); Se NON ValueFilled(Documento in entrata) Quindi Report ( "Nessun documento di ricevuta selezionato"); Ritorno ; Finisci se ; Richiesta = Nuova Richiesta; Request.SetParameter( "Documento di ricevuta",Documento di ricevuta); Query.Text = "SELEZIONA | Ricevimento di beni, servizi, beni, nomenclatura, | Ricevimento di merci, servizi, merci, quantità, | Ricevimento di merci, servizi, merci, aliquota IVA, | Ricevimento di beni, servizi, beni. | Ricevimento di beni, servizi, beni Importo dell'IVA, | Ricevimento di merci, servizi, merci Prezzo| DA | Documento.Ricevuta della merceServizi.Merci AS Ricezione della merceServiziBene|DOVE | GoodsReceiptServicesGoods.Reference = &ReceiptDocument"; Risultato = Request.Execute().Upload(); TablePart.Clear(); Per ogni elemento risultato dal ciclo dei risultati NewRowPT = TabularPart.Add(); FillPropertyValues(NewStringPT,ResultElement); Object.FillAccountsAccountingInTabPartRow(NewPTRow, TabularPartName, True); ciclo finale; EndProcedura

La parte successiva dell'articolo ti spiegherà come eseguire il debug dell'elaborazione della compilazione della parte tabellare e come collegarla al documento.

4. Debug

Abbastanza spesso, è necessario eseguire il debug del codice che scrivi. Per eseguire il debug dell'elaborazione del riempimento della parte tabellare 1C 8 crea i suoi oggetti di scena Riferimento all'oggetto genere DocumentReference.Realizzazione di BeniServizi

Ne abbiamo bisogno per selezionare un documento di implementazione durante il debug, che compileremo. Successivamente, è necessario creare un modulo per il debug e posizionare lì gli oggetti di scena creati. Riferimento all'oggetto, il processo di creazione di un modulo di debug non differisce dalla creazione di un modulo di selezione del documento di ricevuta, quindi non ci soffermeremo su di esso in dettaglio.

Dopo aver creato il modulo, vai al suo modulo. Lì troveremo una procedura creata automaticamente PulsanteEseguiPushing. Questa procedura viene eseguita quando si preme il pulsante. Correre. Chiamiamo una procedura da esso Inizializzare, che si trova nel modulo di elaborazione, passeremo l'oggetto del documento ai parametri Vendita di beni e servizi(che otterremo dagli oggetti di scena Riferimento all'oggetto) e una riga con il nome della parte tabellare da compilare (nel nostro caso Prodotti).

Procedura PulsanteEseguiClic(pulsante) Inizializza(ReferenceToObject.GetObject(), "Merci"); EndProcedura

Ora è necessario rendere il modulo creato il modulo di elaborazione principale. Per fare ciò, selezionalo nel campo "Modulo di elaborazione".

Ora puoi impostare un punto di interruzione nel punto giusto della procedura Inizializzare o procedure PulsanteEseguiPushing eseguire il debug dei moduli e avviare l'elaborazione del riempimento della sezione tabellare in modalità debug 1C: Impresa.

5. Connessione a un documento

Dopo che l'elaborazione di riempimento è stata scritta e sottoposta a debug, dovrebbe essere collegata al documento da cui verrà eseguita. Per fare questo, vai a 1C 8 in modalità Azienda, vai al menu Servizio -> Rapporti ed elaborazioni aggiuntive -> Elaborazioni esterne aggiuntive di parti tabulari e aggiungi un nuovo elemento di directory. Con bottone Sostituisci il file di elaborazione esterno Aggiungiamo il file della lavorazione di riempimento alla sezione tabellare da noi creata.

Compilare l'affiliazione al trattamento utilizzando il pulsante Selezione scegli un documento Vendita di beni e servizi

E indichiamo che il ripieno è destinato alla parte tabulare Prodotti.

Premiamo il pulsante OK e il gioco è fatto, l'elaborazione del riempimento sarà disponibile nel menu Riempire parte tabellare Prodotti documento Vendita di beni e servizi. Puoi scaricare l'elaborazione utilizzata per questo esempio in fondo all'articolo.

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 i 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