1c nei parametri di selezione, impostare il nome del gruppo. Impostare i parametri di selezione e le associazioni dei parametri di selezione per gli oggetti di metadati. Descrizione dei tipi di inventario = Nuova descrizione dei tipi (array)

In modo da aprire il modulo di selezione con la selezione in 1s 8.2(forme regolari), dobbiamo eseguire alcune azioni. Lo prenderemo prima. Successivamente, imposteremo la selezione e la apriremo a livello di codice, ecco un esempio di codice:

Selezione sul modulo nel campo di input 1C 8.2 con più valori

Nell'esempio sopra abbiamo guardato come impostare la selezione nel modulo di selezione per valore specifico. Consideriamo ora una situazione in cui è necessario sostituire diversi valori, ad esempio un array o un risultato scaricato da una query. Questa è una selezione nel campo di input 1c con molteplici significati.

Innanzitutto, otteniamo il modulo di selezione, passiamo "Elemento" (proprietario) nei parametri, impostiamo il flag della modalità di selezione. Creiamo quindi una lista di valori ed un array, notiamo che come selezione quando si imposta il tipo di confronto nella lista può essere presente solo un oggetto con il tipo ElencoValori. Aggiungiamo elementi all'array, quindi carichiamo questo array nell'Elenco dei valori, che successivamente impostiamo nella selezione. Inoltre, non dimenticare di abilitare il flag per utilizzare questa selezione e impostare il tipo di confronto.

Impostazione della selezione nel campo di input del modulo in 1C 8.3, Evento Inizio Selezione

Ora consideriamo selezione nel campo di input su in una forma gestibile in 1C 8.3. Troviamo nel form l'elemento che ci interessa, nel quale imposteremo la selezione, nel nostro caso si tratta del campo “Organizzazione”. Troviamo l'evento “Inizio Selezione”, clicchiamo sulla lente di ingrandimento e ci ritroviamo nella procedura. Vediamo il parametro Selection Data; questo parametro è del tipo ValueList. Per limitare la selezione agli elementi necessari è necessario compilare la Lista Valori. Possiamo selezionare elementi solo sul server, quindi creiamo una procedura con la direttiva di compilazione &OnServer. In questa procedura, compilare i dati di selezione.

/
Sviluppatori/
Convenzioni di codifica

Impostazione delle opzioni di selezione e delle associazioni delle opzioni di selezione per gli oggetti metadati

1. Di norma, le restrizioni della logica aziendale, come le restrizioni sulla selezione, devono essere le stesse per tutti i moduli in cui viene modificato un particolare oggetto. Pertanto, si consiglia di impostare i parametri di selezione e le connessioni tra i parametri di selezione nelle proprietà degli oggetti di metadati - nei dettagli di directory, documenti, ecc.

2. Tuttavia, potrebbero esserci casi in cui le restrizioni alla selezione possono dipendere dallo specifico scenario operativo. In questi casi i parametri di selezione possono essere specificati localmente, in un apposito form.

Ad esempio, la configurazione contiene

  • directory Dipendenti, che contiene dettagli Organizzazione E Tipo di dipendente(enumerazione con valori Di base/Lavoratore part time);
  • documento Ordine di accoglienza, che contiene oggetti di scena Organizzazione E Dipendente; mentre per gli oggetti di scena Dipendente documento Ordine di accoglienza la connessione del parametro di selezione è specificata Selezione.Organizzazione con oggetti di scena Organizzazione.

È necessario implementare la possibilità di selezionare solo i dipendenti chiave in base al valore dell'opzione funzionale SelezionaSolodaI dipendentiNozioni di base. Per questo è necessario

  • sotto forma di documento Ordine di accoglienza implementare attributi aggiuntivi del modulo Tipi di dipendenti,
  • quindi per il campo modulo Dipendenteè possibile stabilire un collegamento con i parametri di selezione Selezione.Tipo di dipendente con i dettagli del modulo Tipi di dipendenti,
  • in questo caso i dettagli del modulo Tipi di dipendenti compilato in base all'analisi dell'opzione funzionale.

(Allo stesso tempo, preparatevi per gli oggetti di scena Dipendente documento Ordine di accoglienza collegamento per il parametro di selezione Selezione.Tipo di dipendente non c'è alcuna possibilità, perché oggetti di scena Tipo di dipendente nel documento Ordine di accoglienza non esiste.)

Quindi impostando la connessione per il parametro Selezione.Organizzazione nelle proprietà dell'elica Dipendente documento Ordine di accoglienza e connessioni per il parametro Selezione.Tipo di dipendente nel campo del modulo del documento Ordine di accoglienza porterà al fatto che nella modalità 1C:Imprese Entrambi i collegamenti ai parametri di selezione funzioneranno. Pertanto, quando si seleziona un dipendente nel modulo d'ordine di assunzione, la selezione nell'elenco dei dipendenti sarà determinata sia dall'organizzazione compilata nel documento sia dalla tipologia del dipendente, che sarà determinata in base all'opzione funzionale.

Buon pomeriggio.

Oggi parleremo di come aprire a livello di codice i moduli di selezione nella nuova interfaccia gestita.

In precedenza in " applicazione regolare"Abbiamo scritto così:

modulo = Directory.nomenclature.GetSelectionForm();

resultSelection = form.openModalNO();

Tra questi operatori potremmo modificare le proprietà del modulo, ad esempio, impostare la selezione. Potremmo specificare un modulo specifico per nome. Potrebbe cambiarlo aspetto, accedendo alle proprietà degli elementi del modulo tramite il loro nome tramite un punto (form.Button1.Visibility = False;)

Ora abbiamo un'interfaccia gestita e qui tutto è diverso. Il problema sta nel dividere il codice in parti server e client. Possiamo accedere agli oggetti e ai loro metadati solo sul server e dobbiamo aprire i moduli sul client.

Quindi iniziamo.

1. Il caso più semplice è quando non abbiamo bisogno di gestire la selezione (impostare le selezioni, passare i parametri al modulo di selezione aperto).

Poiché i moduli possono essere aperti solo sul client, questo sarà un pezzo di codice lato client. Utilizzeremo la funzione InserisciValore(<Значение>, <Подсказка>, <Тип>) . In realtà, tutto è chiaro dalla sua descrizione. Restituisce il flag se l'utente ha effettuato una selezione; nel primo parametro passiamo il contenitore in cui verrà restituito il valore della selezione, nel secondo il testo che verrà visualizzato nel titolo della finestra di selezione, nel terzo array di tipi.

Ecco un esempio di utilizzo:

Selezione variabileTMC;

ArrayTypes = Nuovo array;

DescrizionedeiTipiTMC = NuovaDescrizionedeiTipi(Array);

Se EnterValue(Seleziona inventario, "Seleziona articolo", Descrizione dei tipi di inventario) Then

//Elaborazione del valore selezionato

finisci se;

Aggiungerò che se assegniamo un valore qualsiasi alla nostra variabile contenitore prima di selezionarla, sarà il valore predefinito. In questo caso, non è necessario formare un array di tipi; il tipo verrà preso dal valore nel contenitore.

2. A volte, prima di selezionare un valore, è necessario impostare alcune selezioni e parametri di selezione. Ad esempio, dobbiamo selezionare un accordo con la controparte. Il primo metodo aprirà tutti i documenti per noi, ma dobbiamo selezionarli in base al proprietario.

Esistono due metodi per aprire i moduli: OpenForm E OpenFormModal. Nel primo metodo apriremo il modulo e il pezzo di codice da cui abbiamo aperto il modulo continuerà ad essere eseguito senza ricevere il risultato della selezione. Il risultato della selezione, a seconda del metodo di chiamata, verrà inserito nel campo di input o ricevuto nella procedura predefinita "Elaborazione della selezione".

Nel nostro caso, dobbiamo inserire il valore selezionato in una determinata variabile e continuare l'elaborazione tenendo conto del valore selezionato, senza trasferire il controllo ad altre procedure. Quindi ci andrà bene OpenFormModal.

Faccio subito una prenotazione sul fatto che questo è un brutto modo per un'interfaccia web, perché... Le finestre modali si aprono in una nuova finestra del browser che solitamente è bloccata. Ma se spieghi in anticipo all'utente cosa è cosa, allora penso che affronterà questo problema))

Quindi, diamo un'occhiata alla descrizione della procedura, ha 4 parametri. Nella prima indichiamo una riga con il percorso completo al modulo "Elenco. Contratti degli appaltatori. Modulo di selezione". Nella seconda indichiamo i parametri di selezione, di cui parleremo più avanti. Nel terzo - il proprietario, questo è un modulo o un campo di selezione che riceverà il risultato della selezione, non lo compiliamo. Anche nel nostro caso il quarto parametro non viene utilizzato.

Quindi, per una semplice selezione, andrà bene la seguente riga:

&SuClient

Procedura Comando1(Comando)

res = OpenFormModal("Directory. Contratti degli appaltatori. SelectionForm");

Fine della procedura

Ma questo è un analogo completo del metodo n. 1 e vedremo un modulo per selezionare tutti i contratti, senza selezionare per proprietario. Quelli. Questo può essere fatto solo se vogliamo specificare il nome del modulo di selezione.

Per impostare la selezione ci aiuterà il secondo parametro.

Il secondo parametro è di tipo "Struttura". Come elementi della struttura, è possibile specificare i parametri del modulo aggiunti nella scheda "Parametri" del modulo di selezione. Il loro trattamento dovrebbe essere descritto nella procedura Quando creato sul server nel modulo del modulo di selezione. Questo non va bene per noi, perché... Devo modificare la configurazione. È inoltre possibile passare una struttura di selezione con il tasto “selezione” nella struttura dei parametri. Quindi tutti i campi della struttura di selezione verranno utilizzati nella selezione dell'elenco di elementi e non saranno disponibili all'utente né per la visualizzazione né per la modifica.

Nel mio esempio, ho disegnato un campo di selezione nell'elaborazione che fa riferimento all'attributo del modulo di elaborazione "controparte" con tipo di dati " DirectoryLink.Counterparties". e ho scritto il seguente pezzo di codice:

&SuClient

Procedura Comando1(Comando)

Selezioni = Nuova struttura("Proprietario", Controparte);

ParametriSelezione = Nuova Struttura("Selezione", Selezione);

res = OpenFormModal("Directory. Contratti degli appaltatori. Modulo di selezione", Parametri di selezione);

Fine della procedura

Questo di solito è sufficiente per risolvere la maggior parte dei problemi e non richiede alcun intervento di configurazione. Tuttavia, nel modulo di selezione della procedura “When CreatedOnServer”, la selezione potrebbe andare persa. Pertanto, prima di utilizzare questo metodo, rivedi questa procedura nel modulo di selezione che apri. Gli sviluppatori disonesti possono facilmente impostare la loro selezione “per impostazione predefinita”, dimenticandosi di controllare che la selezione venga passata nei parametri di apertura.

Per oggi è tutto, grazie per l'attenzione.




Superiore