La campana.

Ci sono quelli che hanno letto questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere la campana
Senza spam

Saluti Tutti i lettori infatart'a. Questo articolo sarà dedicato al problema della creazione di una tabella arbitraria di valori sulla forma di un'applicazione gestita software.

Caratteristiche del compito.

Chiunque abbia programmato nella solita appendice ha spesso affrontato il compito di ottenere una tabella arbitraria di valori sul modulo. Sotto un tavolo arbitrario di valori è inteso come la tabella, il numero e il tipo di colonne di cui non sono noti. Cioè, le colonne possono essere 3, e forse 6, o forse 8. Nella solita applicazione, tutto è semplice: è stato possibile posizionare l'elemento "Table Appostion" sul modulo di formazione, quindi trasferire la tabella del valore al Valori a questo articolo a questo articolo. Quindi una squadra semplice:

Elementforms. Ticketpassed. Calcoli ();

ricevere tavolo finito Valori sul modulo. Sembrerebbe che potrebbe essere più facile.

Era tutto nella solita domanda. Nell'applicazione gestita tutto è cambiato. Quindi semplicemente un tavolo arbitrario per non creare. Ora è necessario parametra rigidamente la tabella dei valori sul modulo, o crearlo a livello di programmazione (descrivere, bene, in questo, infatti, l'essenza dell'applicazione autorizzata stessa). Questo cercheremo di fare: software Creare una tabella arbitraria di valori su un modulo gestito.

La soluzione del problema.

La prima cosa che dobbiamo fare è determinare come viene visualizzata la tabella sul modulo. La cosa principale è che non è necessario alcun elemento del modulo nell'elaborazione. Lo creeremo programmaticamente, come l'intera tabella. Cioè, la tabella verrà descritta e per creare al momento dell'apertura del modulo o utilizzando il pulsante - questo è il modo in cui è necessario.

La creazione di una tabella sul modulo avviene attraverso la descrizione della tabella dei valori come requisizione:
Massimiferboor \u003d Nuovo array; Cliente massiccio. Aggiunta (tipo ("Apposizione della tabella")); DescriptionCarebar \u003d Nuove descrizioni (massimativity); Massive \u003d Nuovo array; Massive. Soundly (New Requisito ("Tabript", descrizioni ",", "TZN")); Ora dobbiamo creare una tabella software di valori che contengono dati. Se la tabella del valore è ottenuta dalla richiesta, tutto è inferiore all'ordine. Se la tabella viene creata manualmente, il valore degli altoparlanti che conterrà numeri o date può essere creato attraverso la "Descrizione". La linea di fondo è che le colonne nella tabella dei valori devono avere un tipo di tipo. Se, ad esempio, si presume che l'utente compila i dati in queste colonne in modo interattivo, quindi non è possibile aggiungere i valori della colonna Valori semplicemente con il nome, dovrebbe essere il tipo. Tieni presente: questo è molto importante perché Daremo questi tipi al tavolo sulla forma.
Creare una tabella che contiene diverse colonne:
KD \u003d nuove date qualificatorie (particelle Veria); Massigs \u003d nuovo array; Braccia. Aggiunta (tipo ("data")); GRAFICA GRAFICA \u003d Nuove descrizioni (braccia, cd); TK \u003d nuove tabelle;
Tk.Colonki. Aggiunta ("c", descrizioni.
Tk.Colonks. Aggiunta ("a", descrizioni.
Tk.Colonki. Aggiunta ("nome completo");
TK. Solonks. Aggiunta ("Nota"); // Nota completa - Righe Successivamente, riempiteremo la nostra tabella del software TK con i dati necessari. Otteniamo la tabella TK che contiene i valori necessari ed è pronto per la trasmissione agli oggetti di formazione creati. Per ogni colonna di TK. Ciclo della colonna

Massiverviziti. Aggiunta (nuovo requisito (colonna. Voglio dire, colonna. Tipo, "tactor"));
Eventcycle;
Changerevize (massicciti);
TablePoles Captivity \u003d Elements. Aggiunta ("TZN", tipo ("tableform"));
TablePoles Cattura. Powdded \u003d "tactors";
Tablepoleseboat. Esempio \u003d visualizzato. Opportunities;

Ecco una combinazione così semplice e il nostro tavolo è pronto.

Per ogni colonna di TK. Ciclo di colonna

Newelent \u003d elementi. Aggiunta (colonna. Voglio dire, digitare ("Foreform"), tavola);
Nuovo elemento. Vid \u003d Forma Vidpolare. Potenza;
Nuovo elemento. Powdly \u003d "tactors." + Colonna.
Nuovo elemento.Shirina \u003d 10;
Eventcycle;

Design condizionale, se abbiamo bisogno di scrivere anche manualmente, menu di comando - manualmente. I gestori da tavolo sono anche scritti con le mani. Ad esempio, per aggiungere un evento dell'evento "Selection" Event:

TablePoles Cattura. Impostazione ("scelta", "tznvybor");

Per elaborare questo evento, una procedura separata è prescritta sotto forma della procedura:

& Svalette.
Procedura TZNVSB (TK, selezionato, campo, lavorazione standard)
// Processor Commands End Controlments

Si prega di notare che i gestori della tabella vengono attivati \u200b\u200bsul client e quindi devono avere un comando puntatore compilatore

& Svalette.

Bene, e l'ultima cosa che volevo aggiungere che dopo tutte queste azioni, sicuramente non dimentichiamo di trasferire il tavolo finito nella richiesta del modulo:

Di recenterevisitforms (TK, "tactor");

Ecco cosa abbiamo come risultato:


Ma il trattamento dell'evento "Scelta":



Epilogo.

Spero che l'articolo aiuterà i programmatori 1c, che iniziano a creare tabelle sulla forma del metodo programmatico.

È possibile scaricare l'elaborazione che il software crea una tabella dei valori e visualizza un modulo gestito con commenti che ti aiuteranno a creare le tue tabelle.

Pubblicato il 21 settembre 2011

Tabella 1C valori - 3 parte. Metadati. Valori da tavolo colonne di livido

In questo articolo, ti dirò come lavorare con la tabella dei valori "sconosciuti" della struttura, come risolvere gli altoparlanti dei valori dei valori, come estrarre i dati da colonne e righe senza usando i nomi delle colonne. (Questo articolo si riferisce agli articoli 1C da zero; programmazione 1C da zero; tabella 1c valori)

Per spiegare il materiale e in modo da poter eseguire i nostri esempi del codice del programma "Live", abbiamo bisogno di qualche tipo valori da tavola di prova 1C. Alcuni dei nostri esempi estraggeranno i dati dalla tabella dei valori, quindi faremo un tavolo con tre colonne "cognome", "nome", "patronimico" e fare una piccola quantità di dati in esso - già 3 linee :)

Quindi, creiamo una tabella di prova dei valori 1C e riempirlo:

Washt \u003d nuove tabelle; // Creare nuova tavola I valori memorizzati nel lavaggio variabile "Washtz". Tagli. Aggiunta ("cognome"); // Crea una colonna "Mytz.Colonks" cognome ". Aggiunta (" nome "); // Crea una colonna "Nome" di lavaggio. Taglio. Aggiungi ("patronimico"); // Creare una colonna "patronimica" // Aggiungi la prima riga alla nostra tabella dei valori del newstream \u003d Lavaggio. Aggiungi (); NewStock.Familia \u003d "Chapaev"; Newstock. Voglio dire \u003d "Vasily"; Newstock. Delicata \u003d "Ivanovich"; // Aggiungi la seconda riga del newstream \u003d Washt. Aggiungi (); Newstock.Familia \u003d "Dzerzhinsky"; NEWSTOCK. Voglio dire \u003d "Felix"; Newstock. Delicatezza \u003d "Edmundovich"; // Aggiungi la terza riga della nuova strada \u003d Washt. Aggiungi (); NewStock.Familia \u003d "Kotovsky"; NEWSTOCK. Voglio dire \u003d "Grigory"; Newstock. Delicata \u003d "Ivanovich";

Il nostro tavolo di prova è composto da tre colonne: nome, cognome, patronimico; E ha tre linee piene con i nomi degli eroi della guerra civile.

Il primo codice di esempio è quello di busto le colonne della tabella dei valori 1C come raccolta.

// Visualizziamo i nomi di tutte le colonne del TK per ogni colonna di Wooat. Rapporto Colloniks ("Nome colonna:" + colonna. Eventcycle;

Il nostro ciclo visualizzerà i messaggi 1C nella finestra dei messaggi tutti i nomi delle colonne:

Nome colonna: cognome Nome colonna: nome Colonna Nome: patronimico

Vediamo che un ciclo speciale di una raccolta di una collezione simile al ciclo di calibro di stringhe (ultimo articolo) è usato per enumerare le colonne. Washtz. Solonki. - Questa è una raccolta di colonne della tabella dei valori 1C "Washtz". La collezione contiene oggetti come "ColonChotable" Ogni oggetto di questo tipo è una colonna di una tabella di valori e contiene proprietà e metodi. Passando a queste proprietà e metodi, otteniamo le informazioni necessarie su una colonna o produciamo alcune altre azioni con esso.

Ad esempio, riferendosi alla proprietà "Nome" (Colonna) Otteniamo il nome della colonna attuale.

Voglio attirare l'attenzione sull'intestazione del ciclo: "Per ciascuno Colonna Dal lavaggio. Ciclo di ritaglio "Variabile denominato "Colonna" Inventato da noi. Opzionalmente utilizzare lo stesso nome. Puoi chiamare questa variabile come preferisci, per esempio "Mathescling" Quindi l'esempio sopra sembrerà questo:

// Deriviamo i nomi di tutte le colonne del TK per ogni wash whirlpool dal lavaggio. Rapporto ciclo SOLONKI ("Nome colonna:" + Lavaggio Colaconka. Eventcycle;

Quando il sottosistema di esecuzione 1C soddisfa il ciclo di questo tipo, assegna una variabile con ciascun passaggio del ciclo nome specificato Un elemento dalla nostra collezione, in questo caso - una raccolta di elementi Colonne Valori da tavola Washtz. Solonki. E poi ci rivolgiamo alla variabile che contiene la colonna corrente e utilizzare la proprietà. "Nome".

Propongo accanto al nome della colonna per ritirare anche il numero di ciascuna colonna nella collezione di colonne:

// Indica il numero e i nomi di tutte le colonne della tabella dei valori per ogni colonna di lavaggio. Bambole del ciclo fresco \u003d washtz. Solonki.index (colonna); // Ottieni la colonna Number Numbercionics \u003d colonna. // Ottieni il nome della colonna per informare ("Numero altoparlante:" + Polls + "Nome colonna:" + NameColonnames); Eventcycle;

Il seguente testo verrà visualizzato nella finestra del messaggio 1C:

Numero di colonna: 0 Nome altoparlante: Altoparlanti cognome: 1 Colonna Nome: nome Colonna Numero: 2 Nome colonna: patronimico

Silentiamo che le colonne nella tabella dei valori 1C sono numerate da zero, così come le linee di tabella dei valori.

Il numero di colonne nella tabella dei valori 1C

Per scoprire il numero di colonne nella tabella dei valori, utilizziamo il metodo "Quantità ()" nella collezione di colonne.

Auterolone \u003d Lavaggio. Cool orologi. Numero (); Rapporto (somigliere);

La cifra "3" verrà visualizzata sullo schermo. Infatti, nel nostro tavolo tre colonne: "cognome", "nome", "patronimico"

Ottenere un oggetto - colonna al suo numero (indice) e colonne della forza bruta utilizzando l'indice della colonna

Faremo un ciclo di tutte le colonne della tabella dei valori utilizzando gli indici delle colonne (numeri). Ricorda che la numerazione delle colonne inizia con zero. Pertanto, il contatore del ciclo SC dobbiamo aumentare da zero a un numero pari al numero di colonne meno.

Per SCH \u003d 0 per Wasytz. Solonki. Numero () - 1 ciclo della colonna fluente \u003d washtz. Solonks [SC]; Rapporto (colonna fluente. Eventcycle;

Sullo schermo otterremo quanto segue

Nome e cognome

Penso che questo esempio fosse comprensibile. Ci siamo rivolti al metodo Numero() Collezioni di colonne " WASHTZ. SOLONKI. Numero ()", ha ricevuto il numero di colonne e ha lanciato un ciclo con un contatore da zero prima numero di colonne meno. All'interno del ciclo, otteniamo ciascuna colonna dalla collezione di colonne e assegniamo l'oggetto della colonna corrente alla variabile Colons colonka. Avanti, variabile Colons colonka. Affasciniamo la proprietà Nome e visualizza il valore di questa proprietà sullo schermo: Rapporto (colonna fluente.

È importante non confondere mai la proprietà dell'oggetto e il metodo dell'oggetto.

La proprietà è un certo valore statico e appello ad esso è scritto senza parentesi, per esempio Colonk colon.ims.imp.. E il metodo è essenzialmente la procedura o la funzione dell'oggetto e le sfide delle procedure e delle funzioni sono sempre scritte con parentesi (anche se non ci sono parametri di input). Per esempio: WASHTZ. SOLONKI. Numero ()

Se rivolgiamo al metodo, dimenticando di scrivere staffe - Interprete 1C ci fornirà un messaggio di errore e non avvia il codice per l'esecuzione. Dal momento che l'interprete assumerà che non facciamo appello al metodo, ma alla proprietà - perché non ci sono parentesi. E le proprietà con questo nome non saranno state trovate (perché c'è solo un metodo con quel nome) - come sarà indicato in un messaggio di errore.

Questo è ciò che l'interprete scrive se dimentico le parentesi nel chiamare il metodo in modo così errato WASHTZ. SOLONKI.Golism. (senza parentesi dopo "Quantità ()"):

Il campo dell'oggetto non è rilevato (numero)

In questo caso, il "campo" e "proprietà" dovrebbero essere intesi come sinonimi o l'inesattezza della terminologia degli sviluppatori 1C. Usano entrambe queste parole di designare lo stesso concetto. Sebbene in altri linguaggi di programmazione, questi termini possono significare concetti diversi.

Ottenere dati dalla tabella dei valori 1C utilizzando i numeri degli altoparlanti

Ti suggerisco, per un inizio, un semplice esempio di ottenere dati dalla prima riga del nostro tavolo. Si prega di notare che usiamo una tabella pre-completata dall'inizio dell'articolo. Sappiamo per certo che il tavolo è la prima riga, e ci sono almeno una colonna. Se applichiamo questo esempio a una tabella vuota, si verificherà un errore. Così:

Il firstista \u003d lavare; // otteniamo la prima riga (numerazione da zero) del valore della viccounzione \u003d il primo uomo; // Otteniamo il valore della prima colonna (la numerazione delle colonne è anche da zero) alla relazione (Value-County); // visualizza il valore della prima colonna nella prima riga della tabella

Verrà visualizzato lo schermo:

Chapaev.

All'inizio abbiamo ricevuto l'oggetto della riga dell'oggetto dei valori, contattando la tabella dei valori usando l'operatore [...]. (Se hai dimenticato come è fatto, puoi vedere articoli precedenti) all'interno dell'operatore, abbiamo superato l'argomento "0". Questo è l'indice della prima riga della tabella dei valori. Il firstista \u003d lavare;

Inoltre, abbiamo anche il diritto di applicare all'oggetto di linea con l'aiuto dell'operatore [...]. All'interno di questi operatori, abbiamo superato il numero della colonna Valori, anche in questo caso, "0". E quindi, abbiamo ottenuto il valore della colonna con il numero "0" per la linea corrente della tabella al numero "0". Questo valore visualizzato sullo schermo ed è la stringa "Chapaev".

Un po 'complica il nostro esempio:

Il firstista \u003d lavare; // Otteniamo la prima riga (numerazione da zero) per informare (primo AEST); // visualizza il valore della prima colonna nella prima riga della tabella da segnalare (il primo aestro); // visualizza il valore della seconda colonna nella prima riga della tabella per informare (il primo aestro); // visualizza il valore della terza colonna nella prima riga della tabella

Ora abbiamo visualizzato valori da tutte e tre le colonne della prima riga della nostra tabella dei valori:

Chapaev Vasily Ivanovich.

Ora modifico ancora questo esempio da fare senza una variabile "Prima linea"

Rapporto (lavare); // visualizza il valore della prima colonna nella prima riga della tabella da segnalare (lavaggio); // visualizza il valore della seconda colonna nella prima riga della tabella della tabella (washtz); // visualizza il valore della terza colonna nella prima riga della tabella

Anche sullo schermo

Chapaev Vasily Ivanovich.

Abbiamo visto nell'esempio sopra quello di fare appello al valore in una linea specifica e una colonna di valori specifici, possiamo utilizzare la chiamata sequenziale di due operatori [...] in questo modulo: Valutazioni [Assessora] [Indicizzazione]

Quindi, siamo pronti a creare un ciclo di estinzione e ottenere dati per tutte le righe e tutte le colonne utilizzando indici di riga e colonne:

Per un contatore \u003d 0 per il lavaggio. NALITY () - 1 ciclo // Ciclo di Busting of Strings per controsoffilon \u003d 0 per rifiuti. Sumps. NALITY () - 1 ciclo // Investito Busting Cycle of Colums // Ottieni il valore della cella ( dalla riga corrente e dalle colonne correnti) Valore Magnitudo \u003d washtz [contatore] [controverscocks]; // Visualizzare il numero di riga, il numero dell'altoparlante e il valore della cella della cella ("Numero di riga" + Contatore + "Colonna" No. "+ colonna +" \u003d "+ valore); Eventcycle; Eventcycle;

Lo schermo verrà visualizzato come segue:

Row # 10 Colonna n. 0 \u003d Chapaev Row # 10 Column colonna n. 1 \u003d Fila vasily # 0 colonna n. 2 \u003d Ivanovich String No. 1 Colonna n. 0 \u003d Dzerzhinsky Row n. 1 Colonna n. 1 \u003d Felix String No. numero 1 1 colonna n. 2 \u003d Edmundovich String No. 2 2 Column No. 0 \u003d Kotovsky Row No. 2 Colonna n. 1 \u003d Gregory Row # 2 Colonna n. 2 \u003d Ivanovich

Usando due cicli, uno dei quali è investito in un altro, abbiamo portato i valori di tutte le colonne da tutte le linee della tabella dei valori 1C. Allo stesso tempo, non abbiamo usato i nomi delle colonne e indicarono le colonne e le righe sui loro indici. Per una maggiore comprensione, prestare attenzione ai commenti all'interno dell'esempio.

Suggerisco, in conclusione, un piccolo cambia il nostro esempio in modo da poter prendere il nome del loro nome invece dei numeri degli altoparlanti. E inoltre farà un design più presentabile del contenuto del contenuto sullo schermo.

Per un contatore \u003d 0 per il lavaggio. Numero di () - 1 ciclo // Il ciclo di Busting of Strings Report ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d Numero di riga" + contatore + "\u003d\u003d\u003d\u003d\u003d\u003d\u003d"); Per segnalare (""); // Traduzione della stringa (inserimento di una stringa vuota) per i controsoffilossi \u003d 0 per Washingtz. Tagli. NALITY () - 1 ciclo // ciclo investito di colonne di smistamento // otteniamo il valore della cella (dalla linea corrente e la colonna attuale) del valore del valore \u003d washtz [contatore] [controsoffitto); // Otteniamo il nome delle colonne del nome \u003d washtz. Solonks [controsoffilonchikov]. // Visualizza il nome della colonna e il valore della cella da informare (raccolta del nome + ":" + valore); Eventcycle; Per segnalare (""); // Traduzione della stringa (inserimento di una stringa vuota) dell'endackel;

Ora, sul nostro schermo le informazioni hanno iniziato a guardare più rappresentativo:

Numero di riga 0 \u003d\u003d\u003d\u003d\u003d\u003d\u003d Cognome: Chapaev Nome: Vasily Patronyma: Ivanovich \u003d\u003d\u003d\u003d\u003d\u003d\u003d Linea n. 1 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Cognome: Dzerzhinsky Nome: Felix Patronimico: Edmundovich \u003d\u003d\u003d\u003d \u003d \u003d\u003d Numero di riga 2 \u003d\u003d\u003d\u003d\u003d\u003d\u003d Cognome: Cottovsky Nome: Grigory Patronimico: Ivanovich

Sì, ho quasi dimenticato. Quando si utilizza in una riga due operatori [...] [...], possiamo invece dell'indice della colonna per trasmettere il nome di questa colonna: Valutazioni [Valutazione] [NameColonName]

Per un contatore \u003d 0 per il lavaggio. Numero di () - 1 ciclo // Il ciclo di Busting of Strings Report ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d Numero di riga" + contatore + "\u003d\u003d\u003d\u003d\u003d\u003d\u003d"); Per segnalare (""); // Traduzione della stringa (inserimento di una stringa vuota) per i contropunzione \u003d 0 per Washingtz. Solonki. NALITY () - 1 ciclo // Ciclo investito del Busting del nome-raccolta colonne \u003d washtz. Coolclocks [controsimutazione]. // Otteniamo il nome del modello del valore della magnitudine \u003d washtz [contatore] [Nome di NameColon]; //

Nota sulla stringa contrassegnata dalla freccia. "In questa linea, trasmettiamo il nome della colonna corrente nell'argomento in questa linea. parentesi quadre [...] Il risultato sarà lo stesso.

E ora, l'ultimo in questo articolo.

Ricevuta corretta di tutte le tabelle dati 1C Valori, utilizzando i cicli del busting della raccolta della raccolta e della raccolta delle colonne della riga

Per ogni corrente fuori dal ciclo di lavaggio // il ciclo di busto della raccolta di stringhe da segnalare ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d Numero di blocco" + "Cindex (circuito) +" \u003d\u003d\u003d\u003d\u003d\u003d\u003d "); Per segnalare (""); Per ogni colonna fluente di Wooat. Cool ciclo // ciclo investito della raccolta di Busting della colonna NamesCionics \u003d colonna fluente. // Otteniamo il nome della colonna Valore \u003d corrente [NameColonName]; // ottieni il valore della cella con il nome della colonna per informare (Namecolationics + ":" + Validazione); // visualizza il nome della colonna e il valore della cella del deck; Per segnalare (""); Eventcycle;

Nell'esempio, sono stati usati due cicli. Il ciclo di frenetico della collezione di colonne è inserito all'interno del ciclo vivace delle righe. Se hai smontato con esempi sopra, e leggi gli articoli precedenti, non avrai difficoltà a capire il lavoro di questo esempio.

Infine, minimizzerò il numero di righe del codice del nostro ultimo esempio, eliminando l'uso di variabili intermedie. Otterremo un campione di "codice industriale", che viene utilizzato in compiti reali.

Dovrebbe essere fatto solo quando capisci cosa stai facendo. Se il codice è molto complicato, è consentito lasciare le variabili intermedie per facilitare successivamente la comprensione del proprio codice. Inoltre, qualsiasi codice dovrebbe essere almeno commentato al minimo in modo che dopo un po 'di tempo fosse più facile affrontare i testi del programma.

Per ogni corrente fuori dal lavaggio ciclo // report di commutazione ("\u003d\u003d\u003d\u003d\u003d\u003d\u003d Numero di blocco" + "hytz.index (corrente) +" \u003d\u003d\u003d\u003d\u003d\u003d\u003d "+ simboli. PS); Per ogni colonna fluente di Wasytz. Cool ciclo // Busto Le colonne da informare (colonna fluente. Ince + ":" + circuito [colonna corrente. Eventcycle; Per segnalare (""); Eventcycle;

L'output sullo schermo non è cambiato, è rimasto lo stesso come nell'ultimo esempio:

Corso di 2 settimane

"Programmazione in 1C per i neofiti"

Il corso arriverà e-mail. Diventa un programmatore, eseguendo compiti passo-passo.

Per partecipare solo al computer e ad internet

Accesso del corso gratuito:

SP-Force-Hide (display: blocco; sfondo: # EFF2F4; imbottitura: 5 px; larghezza: 270px; larghezza massima: 100%; Border-Radius: 0px; -moz-Border -Radius: 0px; -Webkit-Border Raggio: 0px; Font-Face: Arial, "Helvetica Neue", SANS-SERIF; Sfondo-ripetizione: No-ripetizione; Sfondo-Posizione: Centro; Dimensioni di sfondo: Auto;) .SP-Form Input (display: inline Blocco; Opacità: 1; Visibilità: visibile;). Sp-form .sp-form-fields-wrapper (margine: 0 Auto; larghezza: 260px;). Sp-form .sp -FFFFFFFF; Border-Color: #CCCCCC; Stile di confine: solido; larghezza del bordo: 1 px; dimensione del carattere: 15 px; imbottitura-sinistra: 8.75px; imbottitura-destra: 8.75px; bordo -Radius: 4 px; -moz-Border-Radius: 4px; -Webkit- Border-Radius: 4px; Altezza: 35px; larghezza: 100%;). Etichetta .sp-field di DP (Colore: # 444444; Font - Dimensione: 13px; Font-Style-Style: Normal; Font-Peso: Bold;) . Pulsante .SP SP-BORSS (radiobordo: 4 px; -Moz-Border-Radius: 4 px; -Webkit-Border-Radius: 4px; Sfondo-Colore: # F4394C; Colore: #FFFFFFF; Larghezza: 100%; Carattere -wige. Ht: 700; Stile font: normale; Fammon-family: Arial, "Helvetica Neue", sans-serif; Scatola-ombra: nessuno; -Moz-Box-Shadow: None; -Webkit-box-shadow: nessuno; Sfondo: sfumatura lineare (in alto, # E30D22, # F77380);). SP-Modulo .SP-Pulsante-contenitore (testo-allinea: Centro; larghezza: Auto;)

Per tenere conto di denaro e merci, varie tabelle utilizzano ampiamente in attività. Quasi ogni documento è un tavolo.

La tabella elenca la merce alla spedizione dal magazzino. In un'altra tabella - obblighi a pagare per questi beni.

Pertanto, 1C prominente occupa il lavoro con le tabelle.

Le tabelle in 1C sono anche chiamate "parti tabulari". Hanno libri di riferimento, documenti e altri.

La richiesta a seguito della sua esecuzione restituisce una tabella, l'accesso a cui è possibile ottenere in due modi diversi.

Il primo è più veloce - campionamento, ottenendo le righe da esso solo in ordine. Il secondo sta scaricando il risultato della query nella tabella dei valori e ulteriore accesso arbitrario ad esso.

// opzione 1 - Accesso sequenziale ai risultati della query

// Tabella di ricezione
Campionamento \u003d query. Riempi (). Selezionare ();
// In ordine andiamo in giro per tutte le righe del risultato della query
Durante il campione. Avanti () ciclo
Rapporto (campione. Nome);
Eventcycle;

// opzione 2 - scarico nella tabella dei valori
Richiesta \u003d nuova query ("Seleziona il nome dalla directory. Namenclatura");
// Tabella di ricezione
Tabella \u003d Query. Riempi (). Scarico ().
// Quindi possiamo anche aggirare tutte le linee
Per ogni riga dal ciclo della tabella
Rapporto (stringa. Nome);
Eventcycle;
// o arbitrariamente accesso alle linee
Linea \u003d tabella. Init ("pala", "nome");

Una caratteristica importante è nella tabella che viene ottenuta dal risultato della query, tutte le colonne saranno rigorosamente digitate. Ciò significa che richiedendo il campo Nome dalla nomenclatura della directory, riceverai una colonna di un tipo di stringa con una lunghezza ammissibile di non più di n caratteri.

Tabella sulla forma (cliente spesso)

L'utente funziona con una tabella quando viene inserito sul modulo.

I principi di base del lavoro con le forme, abbiamo discusso nella lezione nella lezione in

Quindi, posiziona un tavolo sulla forma. Per fare ciò, è possibile trascinare la tabella dal pannello di controllo. Allo stesso modo, è possibile selezionare il modulo modulo / inserimento nel menu.

I dati possono essere memorizzati nella configurazione - quindi è necessario selezionare una parte della tabella esistente (precedentemente aggiunta) dell'oggetto di configurazione la cui forma modifica.

Premere il pulsante "..." nella proprietà dei dati. Per vedere un elenco di parti tabulari, è necessario rivelare l'oggetto del ramo.

Quando si sceglie una parte tabulare 1C aggiunge colonne alla tabella sul modulo. Le righe inserite dall'utente in tale tabella verranno salvate automaticamente insieme al riferimento / documento.

Nella stessa proprietà, è possibile inserire un nome arbitrario e selezionare il tipo di tabella.

Ciò significa che è selezionata una tabella arbitraria di valori. Non aggiungerà automaticamente le colonne, non verrà salvata automaticamente, ma è possibile farlo con esso qualsiasi cosa.

stampa fare clic con il tasto destro Sulla tabella è possibile aggiungere una colonna. Nelle proprietà della colonna, è possibile specificare il suo nome (per riferirsi al codice 1C), l'intestazione della colonna sul modulo, la connessione con i dettagli della parte tabulare (ultima - se non è selezionata una tabella arbitraria e la parte della tabella) .

Nelle proprietà della tabella sul modulo, è possibile specificare se aggiungere / eliminare linee all'utente. Una forma più avanzata - solo un segno di spunta. Queste proprietà sono convenienti da utilizzare per organizzare tabelle destinate a visualizzare le informazioni, ma non la modifica.

Per gestire la tabella, è necessario visualizzare il pannello Comando. Seleziona il modulo Elemento di menu / Inserisci il pannello di controllo / Comando.

Nelle proprietà del pannello di comando, selezionare un selezione Autofill che i pulsanti sul pannello appaiono automaticamente.

Tabella sulla forma (client sottile / gestito)

Su forma gestita, le azioni specificate sembrano un po 'diversamente. Se è necessario posizionare sulla forma della parte tabellare - aprire il ramo dell'oggetto e trascinare una delle parti della tabella rimasta. E tutto!

Se è necessario posizionare la tabella dei valori, aggiungere un nuovo modulo puntelli e nelle sue proprietà. Specificare il tipo - la tabella dei valori.

Per aggiungere altoparlanti, utilizzare il menu sul pulsante destro del mouse su questi dettagli del modulo, l'opzione aggiunge una colonna di propures.

Dopodiché, trascina anche il tavolo a sinistra.

Affinché la tabella venga visualizzata il pannello di comando, nelle proprietà della tabella, selezionare i valori nella sezione Utilizzo: la posizione del pannello di comando.

Tabella di scarico in Excel

Qualsiasi tabella 1c, situata sul modulo, può essere stampata o scaricata in Excel.

Per fare ciò, fare clic con il tasto destro del mouse sulla tabella e selezionare Visualizza elenco.

Nel client controllato (fine), azioni simili possono essere eseguite utilizzando la voce di menu Tutte le azioni / elenco.

Per cercare nella tabella dei valori ci sono due metodi speciali:

1. Trova.

TVGorizont \u003d libri di riferimento. Nomelaclatura. Intepplicazione ("Horizon TV");
Risultati \u003d TZNENENCLATURE. INITE (TV, TV);
// Inoltre possiamo specificare in quali altoparlanti per cercare per accelerare la ricerca
Fondazione \u003d Tznomenclatura. Inite (TV, "nomenclatura");

Questo metodo restituisce la prima linea trovata con il valore desiderato o indefinito se non trova. Quindi è conveniente usare per cercare valori uniciperché Altrimenti, dovrai eliminarlo dalla tabella quando troverai quanto segue.

Per non soffrire, c'è il seguente metodo che consente di trovare una serie di linee adeguate:

2. Volo


Strutturaturaborazione. Tenere ("nomenclatura", tvgorizont); // In primo luogo, specificare la colonna dove cercare, e quindi cosa cercare.

Questo metodo restituisce sempre un array, ma può essere vuoto se non viene trovato nulla. E anche questo metodo, nonché il precedente restituisce le righe dei valori dei valori e non i valori stessi in un array separato. Pertanto, modifica dei valori nella riga di array o nel metodo precedente sulla linea trovata, si modificherà il valore nella tabella dei valori elaborati.

Più bene questo metodo è che può cercare contemporaneamente in diverse colonne della tabella dei valori contemporaneamente:


Strutture \u003d nuova struttura;
Strutturaturaborazione. Tenere ("nomenclatura", tvgorizont);
Struttura strutturale. Tenere ("quantità", 10);
Foundationmassivests \u003d Tznenenclatura. Voci (strutture);

L'unico minus, come si può vedere, non può essere usato altri confronti tranne "uguali"

Ecco una piccola fabbrica per un inizio - semplici esempi di lavoro con una tabella di valori:

1. Creare una tabella di valori

Tabelle \u003d nuove tabelle;


2. Creare i valori della tabella delle colonne:

Tabelle. Colonnes. Aggiunta ("nome");
Segnali da tavolo. Coolclocks. Aggiunta ("cognome");


3. Aggiungi nuove righe usando i nomi delle colonne:


Newstock. Voglio dire \u003d "Vasily";
NewStock.Familia \u003d "Pupkin";


4. Come cercare un valore nella tabella dei valori:
È necessario trovare una stringa da tavolo contenente il valore desiderato.

Fondazione \u003d tablet ..night. Intertente (sofisticazione);


5. Trova la prima voce in alcune colonne della tabella dei valori

Fondazione \u003d Tablenings. Intertimenti (Sophons, "Fornitore, Compratore");


6. Se è necessario trovare tutta la voce nella tabella dei valori:
Utilizzare la struttura di ricerca.

Strutturality \u003d struttura ("dipendente", in entrata);
MasswordsNews \u003d Segnali table. Voci (strutture);


Creare una struttura di ricerca, ogni elemento di cui conterrà il nome della colonna come tasto e il valore desiderato in questa colonna - come valore. Trasmettiamo la struttura strutturale utilizzando il metodo FAR STYCH () come parametro. Di conseguenza, otteniamo le righe del tavolo.
Se aggiungi alla ricerca del valore desiderato nella struttura di ricerca, ad esempio nella colonna della partizione, quindi come risultato dell'uso del metodo di volo (), otteniamo tutte le righe, dove il dipendente e responsabile sono uguali al valore desiderato.

7. Come risolvere la tabella dei valori in ordine casuale

Per ogni corrente fuori dalla tabella del ciclo
Rapporto (corrente);
Eventcycle;

Lo stesso usa gli indici:

VETROREX \u003d Apple table. Numero () - 1;
Per sch \u003d 0 sul ciclo di vecchia
Rapporto (Tablenings [SC].
Eventcycle;


8. Eliminazione della riga esistente della tabella dei valori

Tabelle. Elimina (rimossa);

per indice.

Tabelle. Elimina (0);


9. Rimozione della colonna esistente della tabella dei valori

Tabelle. Solonks. Elimina (rimozione-colonna da solo);


per indice.

Tabelle. Solonks. Elimina (0);

Deve essere tenuto presente che la rimozione di una stringa (o colonna) "dal centro" della tabella dei valori porterà a una diminuzione degli indici dell'unità delle linee che sono rimaste "dopo" remoto

10. Come riempire la tabella dei valori se i nomi delle colonne sono contenuti in variabili?

Nuova corsa \u003d tavoli da tavolo. Aggiunta ();
Newsstroke [NameColonName] \u003d valore;


11. Come riempire l'intera colonna dei valori della tabella nel valore desiderato?
La colonna di flagflage nella tabella dei valori della tabella deve essere riempita con un valore falso

Segnali da tavolo Compilare (bugie, "flag defloccato");


Richiedi i valori del metodo di compilazione (). Il primo parametro che trasmettiamo un valore di riempimento. Il secondo parametro è il nome della colonna riempita.

12. In che modo la tabella dei valori del "TablePrigner" compila la tabella dei dati del "codice sorgente" dei valori?

Se il perpetratore della tabella al momento dell'operazione non esiste ancora o i suoi altoparlanti precedenti non devono essere mantenuti, è possibile crearlo come copia completa della sorgente

Tablethe Collector \u003d Table prezioso .Copy ();


Opzione Secondo: la tabella Tablethe Collector esiste e mi dispiace perdere le sue colonne e restrizioni sui tipi di colonne. Ma è necessario compilare i dati sulle colonne i cui nomi coincidono con i nomi della tabella di origine.

Trasferimento dati parziale per colonne con nomi corrispondenti:

Per ogni stringa di valore preziosa dal codice sorgente del ciclo
Compilazione (newstroke, stringa valualslast);
Endcycle.


Per ogni riga della tabella di origine, una nuova linea viene aggiunta alla tabella dei destinatari e i valori si riempiono in quelle colonne della nuova tabella, i cui nomi coincidono con i nomi delle colonne nella tabella di origine

Se le tabelle non hanno colonne con gli stessi nomi, la tabella del destinatario risulterà da contenere come molte righe con valori vuoti, quante righe fossero nella fonte della tabella.
Se alcuni altoparlanti del nome hanno il tipo di valore dati dalla tabella di origine, non cadrà nella matrice del tipo consentito della colonna della tabella del destinatario, in tali campi otteniamo valori vuoti.
Considera il terzo caso. Nel caso della stessa colonna delle colonne, la colonna della tabella del destinatario deve essere eseguita in piena corrispondenza della colonna della tabella di origine.

Dati di copia completa per colonne con nomi corrispondenti

Single-ring \u003d nuovo array ();

Per ogni colonna dal codice sorgente. Ciclo di taglio
Sobatovativonka \u003d tablesprigner. Coolclocks. Init (colonna.

Se il coincidente'ovykolonka.<> Non definito allora.

// Ottieni le proprietà della colonna.
Nome \u003d colonna.
Tipo tipo \u003d colonna. Tipi;
Titolo \u003d colonna. Mani;
Larghezza \u003d colonna. Willina;

// Sostituisci le colonne nel tavolo del ricevitore.
Indice \u003d Tablethe Collector. SOLONKI.Index (coincidenza);

Tablethe Collector. CoolClocks. Rilascio (indice);
Tablethe Collector. Solonks. Tenere (indice, nome, titolo, titolo, larghezza);

// Aggiungi il prossimo nome delle colonne coincidenti in un array.
Single-ring. Aggiunta (colonna.

Conclusa;

Eventcycle;

// Ciclo di trascurare le righe del tavolo di origine.
Per ogni stringa di valore preziosa dal codice sorgente del ciclo

// Inserisci nuova stringa nel tavolo del destinatario.
Nuova corsa \u003d tableprigner. Aggiunta ();

// Riempi i valori nelle cellule coincidenti.
Per ogni nome del nome dallo stesso ciclo
Nuova corsa [NameColonka] \u003d TABELLI STRACTI [NAMECOLONNAME];

Eventcycle;

Eventcycle;


Dovremo sostituire la colonna nella tabella dei destinatari per una nuova le cui proprietà corrispondono completamente alla colonna della tabella di origine.
Pertanto, nel caso del rilevamento nel destinatario del tavolo con lo stesso nome, raccogliamo tutte le proprietà in variabili per una nuova colonna. Quindi, cancelliamo il vecchio e creiamo una nuova colonna. Quindi eseguire un ciclo del busting della fila del tavolo di origine.
Nel ciclo, aggiungere una nuova linea alla tabella dei destinatari e aprire il ciclo degli studiosi nell'array delle colonne coincidenti.
All'interno di questo ciclo investito, facciamo compilare le cellule dei dati della tabella dei destinatari delle celle della tabella di origine.

13. Come aggiungere colonne alla tabella di "Tabella" con i limiti del tipo?

Quando aggiungi un altoparlante, è possibile semplicemente specificare il suo nome e il secondo parametro del metodo ADD () () non può essere toccato. In questo caso, il tipo di colonna dati è arbitrario.

Aggiunta di una colonna senza specificare il tipo di dati

// Aggiungi una colonna senza limitazioni per tipo.
Tabelle apposizionali. Addind.com ("Object");


È possibile compilare il valore del secondo parametro. Ci deve essere trasferito alla descrizione del tipo consentito per la colonna Tipo. La descrizione stessa può essere ottenuta utilizzando un designer passando quest'ultimo tipo come parametro (se molti tipi, quindi attraverso la virgola) o una serie di tipi validi.

Aggiunta di una colonna con indicazione del tipo di dati

// restrizioni sulla colonna Tipo di dati:
// solo elementi del libro di riferimento "controparti".
Segnali table. Coolclocks. Aggiunta ("controparte", nuove descrizioni ("DirectoryAds. Pratlements"));


Se tra i tipi consentiti di riempire i dati della colonna, c'è una stringa, è possibile limitare il suo bit (lunghezza), specificare l'uso della lunghezza variabile o fissa. Tutto ciò è garantito creando un oggetto con l'aiuto di un qualificatore di designer. Successivamente, questo oggetto verrà utilizzato come uno dei parametri della descrizione del progettista.

Usando qualificatori per chiarire il tipo di colonne di dati

// Preparazione e installazione di limitazioni per i dati del tipo di dati.
Testi qualifiche \u003d nuove qualifiche (20, ammissibile, permesso);
Amissibles \u003d nuove descrizioni ("stringa", qualifiche);
Tavoli. Solonki. Soundly ("Notity-Proof", ammissibile);


Azioni simili possono essere eseguite per quanto riguarda qualificazioni del numero e della data.
Nota: la descrizione dei tipi può essere costruita dal designer come "da zero" e utilizzare come base già esistente Descrizione dei tipi

Utilizzo dei tipi di tipi esistenti per indicare i valori della colonna dati del tipo di dati

// espansione delle descrizioni dei tipi precedentemente utilizzate.
Qualifiche \u003d nuove qualifiche (10, 2, token ammissibile. Non negativo);
Date qualificatorie \u003d nuovo qualificatorio) (parti. Dati);
Estenda fieies \u003d Nuove descrizioni (autorizzazioni, "Numero, data", qualifiche, qualificatorie);

Segnali table. Coolclocks. Aggiunta ("nota", additivi espansi);

La campana.

Ci sono quelli che hanno letto questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere la campana
Senza spam