Computer finestre Internet

Chrome è vietato l'uso di finestre modali in questa modalità. Cosa fare se "l'uso di finestre modali in questa modalità è vietato". Corretta soluzione del problema

L'helper sintassi per questi comandi indica che se la proprietà di configurazione Modalità d'uso installato in Non usare, allora dovresti usare altri comandi nel codice del programma, come MostraDomanda (), MostraAvviso (), ShowEnterNumbers ():

Per lavorare con queste situazioni, il programma 1C 8.3 fornisce un nuovo oggetto di sistema "Descrizione avviso", che viene utilizzato per descrivere una chiamata a una procedura del modulo di programma quando si verifica un evento previsto, come la chiusura di un modulo o una finestra di dialogo non modale:

Questo è uno sguardo al problema "dall'interno" per coloro che vogliono affrontare la causa principale. Principalmente per i programmatori 1C. Come, in questa situazione, gli utenti ordinari possono correggere l'errore senza elaborazione codice programma? C'è un metodo molto semplice.

Istruzioni per la correzione degli errori per gli utenti ordinari

Passaggio 1. Completa il lavoro:

Passaggio 2. Torna al menu di avvio per avviare la configurazione. Selezioniamo la voce di menu "Configurazione":

Passaggio 3. Apri il "Configuratore": sul pannello superiore troviamo il pulsante "Configurazione" e, nell'elenco proposto, seleziona il menu "Apri configurazione":

Passaggio 4. Posizionare il cursore sulla configurazione e fare clic con il pulsante destro del mouse per chiamare menù contestuale, in cui selezioniamo la voce "Proprietà":

Passaggio 5. Aprire il modulo "Proprietà":

Passaggio 6. Trova la riga "Modalità di utilizzo" (in fondo all'elenco):

Per impostazione predefinita, il programma 1C 8.3 è impostato su "Non utilizzare". Traduciamo il valore "Non usare" nel valore "Usa":

Risultato:

Se l'errore "L'utilizzo di finestre modali in questa modalità è vietato" in 1C 8.3 è scomparso, puoi lavorare ulteriormente. Questo è di solito ciò che accade.

Ma se l'errore di modalità in 1C rimane dopo che tutte queste azioni sono state eseguite, allora dovresti contattare i programmatori che assistono e supportano il tuo programma 1C.

Come lavorare nell'interfaccia "Taxi", come personalizzare il posto di lavoro "per te", personalizzare la barra di navigazione dei Preferiti, come eseguire la ricerca full-text, le tecniche per lavorare con le riviste, il pulsante "seleziona" nei documenti, il trasferimento di collegamenti a documenti, verifica e altre funzionalità nella nuova interfaccia: puoi imparare tutto questo dal nostro video:

Più in dettaglio su come organizzare correttamente e rapidamente la navigazione attraverso il programma 1C 8.3 utilizzando la nuova interfaccia TAXI, sulle nuove possibilità nell'utilizzo di strumenti familiari come calcolatrice integrata, calendario, confronto file, trasferimento di collegamenti a documenti ai colleghi, guarda il nostro corso ““


Valuta questo articolo:

Se nel processo di completamento delle lezioni si verifica un errore del genere, è molto facile risolverlo.

Tornare al configuratore e selezionare la voce di menu "Configurazione" -> "Apri configurazione":

Nella finestra che si apre, fare clic su clic destro sulla voce "Configurazione" e selezionare la voce "Proprietà" dal menu a tendina:

Si aprirà una finestra con le proprietà di configurazione (a destra):

Scorri fino in fondo e trova lì la voce "Modalità di utilizzo":

Imposta il suo valore su "Utilizzo":

Attenzione! Tieni presente che se stai utilizzando una piattaforma 1C diversa da quella che abbiamo scaricato nella prima lezione (versione successiva), allora avrai anche il campo "Modalità di utilizzo delle chiamate sincrone...". Deve anche essere impostato su "Usa".

Infine, seleziona la voce di menu "Configurazione" -> "Salva configurazione":

Pronto! Ora l'errore non si verificherà più.

Le spiegazioni di seguito sono per coloro che sono interessati a ciò che abbiamo fatto.

Abbiamo abilitato la modalità di utilizzo della modalità nella nostra configurazione. Per impostazione predefinita, questa modalità è disabilitata e non ci consente di utilizzare comandi come EnterNumber, EnterString, EnterDate, OpenValue.

Il punto è che questi comandi sono modali. Chiamarli porta al fatto che una finestra appare davanti all'utente (ad esempio, per inserire informazioni), che blocca la possibilità di lavorare con il programma fino alla chiusura della finestra.

E poiché la presenza di tali finestre è estremamente indesiderabile quando si lavora con 1C tramite un browser Web, quando si sviluppano nuove configurazioni, la modalità modalità è disabilitata per impostazione predefinita.

Possiamo includerlo tranquillamente, poiché scriviamo esempi educativi che non sono progettati per funzionare su Internet.

L'articolo prenderà in considerazione le principali ragioni per l'abbandono della modalità nella piattaforma 1C: Enterprise e i principali metodi per convertire le sezioni di codice in un nuovo modello asincrono.

Applicabilità

L'articolo discute il modello asincrono di costruzione della logica di business, la piattaforma aggiunta "1C: Enterprise" versione 8.3. Le informazioni fornite sono rilevanti per le versioni correnti della piattaforma.

Rifiuto di utilizzare finestre modali nella piattaforma 1C: Enterprise 8.3

Quando si sviluppa una configurazione sulla piattaforma 1C: Enterprise 8, è necessario sospendere di tanto in tanto il funzionamento del programma fino a quando l'utente non prende una decisione o esegue qualsiasi azione.

Ad esempio, quando si clicca sul pulsante per compilare la sezione tabellare, all'utente dovrebbe essere chiesto se è necessario cancellare la sezione tabellare in modo che i dati inseriti in precedenza non vadano persi.

Questo comportamento può essere fornito, ad esempio, dal codice seguente:

& su client
Procedura FillProdotti(comando)
Risposta = Domanda ("La sezione della tabella verrà cancellata. Continuare?", Domanda sulla modalità di dialogo Sì No);
Se risposta = Codice di ritorno della finestra di dialogo.Sì Quindi
// algoritmo di riempimento
Finisci se;
Fine della procedura

Come risultato del lavoro di questo pezzo di codice, l'esecuzione del codice del programma verrà sospesa, sullo schermo viene visualizzata una domanda, l'interfaccia dell'applicazione, oltre alla finestra di dialogo con la domanda, diventa inaccessibile, il sistema è in attesa per una decisione da parte dell'utente, l'esecuzione del codice continuerà solo dopo la risposta alla domanda.

Inoltre, l'apertura di finestre modali chiamando il metodo OpenModal() porta alla sospensione dell'esecuzione del codice e al blocco dell'interfaccia.

Quando si lavora con la configurazione in modalità client Web tramite un browser, in questo caso si aprirà una nuova finestra, una finestra pop-up che bloccherà non solo la scheda corrente, ma anche l'intera interfaccia del browser, incluso il resto finestre aperte e schede.

I popup su Internet vengono spesso utilizzati per distribuire in modo dannoso annunci pubblicitari indesiderati, motivo per cui i browser includono funzionalità di blocco dei popup.

In questo caso, per lavorare con le configurazioni 1C: Enterprise 8 tramite browser, è necessario disabilitare il blocco delle finestre pop-up.

I problemi sorgono anche quando si lavora su dispositivi mobili... Ad esempio, i modali non sono supportati su iPad.

Per risolvere questi problemi, dovresti usare le finestre di blocco invece di quelle modali. Per l'utente, visivamente, tutto sembra uguale: la finestra blocca l'interfaccia del client web.

Tuttavia, la finestra di blocco viene "disegnata" sopra la finestra principale e viene bloccata solo la scheda del browser corrente, in cui è aperta la configurazione, consentendo di passare ad altre schede, poiché in questo caso non vengono utilizzate le finestre modali del browser .

Pertanto, le finestre pop-up nel browser non si aprono e il lavoro tramite il client Web sui dispositivi mobili è garantito.

L'elemento di configurazione root ha una proprietà "Modality use mode", che determina se le finestre modali possono essere aperte nella configurazione.

Se è selezionata l'opzione "Usa", è possibile aprire le finestre modali. Se selezioni l'opzione "Non usare", i modali non sono validi. Quando si tenta di chiamare un metodo che apre una finestra modale, il sistema visualizza un messaggio di errore:

Con questo valore della proprietà "Modalità d'uso" sono consentite solo finestre di blocco.

Se l'opzione "Utilizza con avvisi" è selezionata, all'apertura delle finestre modali, nella finestra dei messaggi viene visualizzato il seguente testo:

Questa variante di lavoro può essere utilizzata come intermedia quando si rielabora la configurazione per rifiutare l'uso di finestre modali.

La differenza principale tra le finestre di blocco e modali è che l'apertura di una finestra di blocco non interrompe l'esecuzione del codice.

Pertanto, gli sviluppatori dovranno riscrivere il codice che utilizza i modali tenendo presente questa funzionalità.

Il codice deve essere diviso in due parti:

  • apertura di una finestra di blocco;
  • gestione della selezione dell'utente.

Il frammento di codice all'inizio dell'articolo deve essere riscritto come segue:

& su client
Procedura FillProdotti(comando)
Avviso = Nuovo Descrizione Avvisi(, QuestoOggetto);

Domanda sulla modalità di dialogo Sì No);
Fine della procedura
& su client
Procedura (Risultato, Opzioni extra) Esportare
Se Risultato = Codice di ritorno della finestra di dialogo.Sì Quindi
// algoritmo di riempimento
Finisci se;
Fine della procedura

Dopo aver eseguito la procedura ShowQuestion(), il sistema non si ferma, in attesa che l'utente risponda, il codice continua ad essere eseguito.

L'utente potrà effettuare una scelta solo dopo aver completato l'intera procedura. Questo chiamerà la procedura di esportazione FillProductsQuestionCompletion(). Abbiamo passato il suo nome al costruttore dell'oggetto Alert Description.

La procedura che verrà chiamata dopo aver effettuato una selezione può essere collocata in un modulo modulo, un modulo comandi, un modulo comune non globale.

Nell'esempio sopra, la procedura chiamata si trova in un modulo di form gestito, quindi abbiamo passato thisObject nel parametro.

Si consideri una chiamata a una procedura situata in un modulo comune. Per fare ciò, aggiungi un nuovo modulo comune ProcessingNotifications, impostare il flag "Client (applicazione gestita)" per esso e non impostare il flag "Globale". Inserire la procedura FillProductsQuestionCompletion() in questo modulo.

Quindi il gestore del comando di riempimento sarà simile a questo:

& su client
Procedura FillProdotti(comando)
Avviso = Nuovo Descrizione Avvisi("RiempiProdottiDomandaFinitura",
Notifiche di elaborazione);
QuestionText = "La sezione della tabella verrà cancellata. Procedere?" ;
Mostra domanda (avviso, testo domanda, Domanda sulla modalità di dialogo Sì No);
Fine della procedura

Dopo aver chiamato qualsiasi metodo che apre la finestra di blocco, la procedura deve essere completata e il codice eseguito ulteriormente dovrebbe trovarsi nella procedura che verrà chiamata dopo la chiusura della finestra.

Per trasferire il contesto (dati ausiliari, alcuni parametri, valori variabili) dalla procedura che apre la finestra modale alla procedura che viene chiamata alla sua chiusura è previsto il terzo parametro opzionale del costruttore dell'oggetto DescriptionNotifications - AdditionalParameters.

Questo oggetto (di qualsiasi tipo) verrà passato alla procedura descritta in AlertDescription come ultimo parametro.

Usando l'esempio della sezione di codice sopra, questo può essere fatto in questo modo:

& su client
Procedura FillProdotti(comando)
Parametro1 = 0;
Parametro2 = 0;
Elenco dei parametri= Nuova struttura (“Parametro1, Parametro2 ″, Parametro1, Parametro2);
Avviso = Nuovo Descrizione Avvisi("RiempiProdottiDomandaFinitura", QuestoOggetto,
Elenco dei parametri);
ShowQuestion (Avviso, "La sezione della tabella verrà cancellata. Continuare?",
Domanda sulla modalità di dialogo Sì No);
Fine della procedura
& su client
Procedura FillProdottiDomandaFinitura(Risultato, Opzioni extra) Esportare
Se Risultato = Codice di ritorno della finestra di dialogo.Sì Quindi
// analizza AdditionalParameters.Parameter1
// analizza AdditionalParameters.Parameter2
Finisci se;
Fine della procedura

Se è necessario passare un solo valore, la struttura non può essere utilizzata, ma assegnare questo valore al parametro AdditionalParameters del costruttore di oggetti DescriptionAlerts.

Diamo un'occhiata ad alcuni esempi di utilizzo delle finestre di blocco.

Attività 1. Apertura di un altro modulo

Dalla maschera del documento, cliccando sul pulsante "Apri parametri", è necessario aprire la maschera, sulla quale sono presenti due caselle di controllo Parametro1 e Parametro2, che devono essere impostate dall'utente. Dopo che il modulo è stato chiuso, emettere i valori dei parametri nella riga del messaggio.

Creiamo un form generale “Parameters Form”, sul quale posizioniamo i parametri Parameter1 e Parameter2, oltre al comando CloseForm:

Il gestore dei comandi ha questo aspetto:

Il gestore dei comandi ha questo aspetto: & OnClient
Procedura ChiudiModulo (comando)
Elenco dei parametri= Nuova struttura ( "Parametro1, Parametro2", Parametro1, Parametro2);
Chiudere ( Elenco dei parametri); Fine della procedura

Per il modulo, imposta la proprietà WindowOpening Mode su "Blocca l'intera interfaccia":

Sul modulo del documento, inserisci il comando OpenParameters, il cui gestore è descritto come segue:

& su client
Procedura OpenParameters(comando)
Avviso = Nuovo Descrizione Avvisi("Completamento OpenParameters", QuestoOggetto);
OpenForm ( "GeneralForm.ParameterForm",,,,,, Notifica);
Fine della procedura
& su client
Procedura OpenParametersCompletion(Risultato, Opzioni extra) Esportare
Se TypeZnch (Risultato) = Digita ("Struttura") Allora
Per ogni valore chiave dal ciclo dei risultati
Messaggio = Nuovo Messaggio all'utente;
Messaggio.Testo = “Chiave:“ ” "+ KeyValue.Key +" "", valore = "
+ Valore chiave. Valore;
Messaggio.Informare();
Fine del ciclo;
Finisci se;
Fine della procedura

In modalità utente, eseguendo la configurazione sotto il client web, otteniamo i seguenti risultati di lavoro:

Clicca sull'immagine per ingrandirla.

La modalità di apertura della finestra può essere specificata anche nell'ultimo parametro della procedura OpenForm.

& su client
Procedura OpenParameters(comando)
Avviso = Nuovo Descrizione Avvisi("Completamento OpenParameters", QuestoOggetto);
OpenForm ( "GeneralForm.ParameterForm",,,,,, Mettere in guardia,
ModeOpenWindowForms.LockAllInterface
);
Fine della procedura

Attività 2. Domanda alla chiusura del modulo

Quando si chiude la finestra di elaborazione, chiedere all'utente se vuole veramente chiudere la finestra.

Questa attività può essere risolta utilizzando il seguente codice situato nel modulo del modulo di elaborazione:

& su client
Modificare BisognoChiudiModulo;
& su client
Procedura PrimaChiudi (Disclaimer, Elaborazione standard)
Altrimenti BisognoChiudiModulo= Vero Allora
Rifiuto = Vero;
Avviso = Nuovo Descrizione Avvisi("Prima della chiusura del completamento", QuestoOggetto);
ShowQuestion (avviso, "Sei sicuro di voler chiudere la finestra?",
Domanda sulla modalità di dialogo Sì No
);
Finisci se;
Fine della procedura
& su client
Procedura PrimaChiudiCompletamento(Risultato, Opzioni extra) Esportare
Se Risultato = Codice di ritorno della finestra di dialogo.Sì Quindi
BisognoChiudiModulo= Vero;
Chiudere ();
Altrimenti
BisognoChiudiModulo= Non definito;
Finisci se;
Fine della procedura

Nella procedura Prima di chiudere il form, all'utente viene posta una domanda, il flag Refuse è impostato su True e il form viene chiuso.

Dopo una risposta affermativa alla domanda, la variabile MustCloseForm viene impostata su True, il form viene nuovamente chiuso.

Attività 3. Inserimento di un valore numerico

Quando fai clic sul pulsante nel modulo di elaborazione, apri la finestra di dialogo standard per l'immissione di un numero.

Per fare ciò, usa il metodo ShowNumberEnter() invece diNumberEnter(), che apre una finestra di blocco invece di una modale.

& su client
Procedura di immissione del numero (comando)
Avviso = Nuovo Descrizione Avvisi("InserisciNumeroCompletamento", QuestoOggetto);
MostraInserisciNumeri(Annuncio, 0, “Inserisci l'importo”, 15, 3);
Fine della procedura
& su client
Procedura InserisciNumeriCompletamento(Risultato, Opzioni extra) Esportare

Messaggio = Nuovo Messaggio all'utente;
Message.Text = “Hai inserito la quantità” + Risultato;
Messaggio.Informare();
Finisci se;
Fine della procedura

Dopo aver chiuso la finestra per l'inserimento di un numero, verrà chiamata una procedura il cui primo parametro verrà passato il numero inserito o il valore Indefinito se l'utente si è rifiutato di entrare.

Attività 4. Scegliere un colore

Quando si fa clic sul pulsante nel modulo di elaborazione utilizzando la finestra di dialogo di selezione del colore standard, l'utente specifica il colore richiesto. Imposta questo colore sullo sfondo del pulsante che premi.

Aggiungi il comando SelectColor al form con il seguente gestore:

& su client
Procedura di selezione del colore (comando)
DialogueSelectColors= Nuovo DialogueSelectColors;
Avviso = Nuovo Descrizione Avvisi("Seleziona completamento colore", QuestoOggetto);
DialogoSeleziona colori. Mostra (Notifica);
Fine della procedura
& su client
Procedura SceltaColoriCompletamento(Risultato, Opzioni extra) Esportare
Se NON Risultato = Indefinito Allora
Elements.Color.ColorBackground= Risultato;
Finisci se;
Fine della procedura

Per gli oggetti ColorSelectDialogue (oltre a StandardPeriodEdit Dialogue, FormatString Constructor, RegularJobScheduleDialogue, FontSelection Dialogue), il metodo Show() apre una finestra di blocco.

Dopo la chiusura della finestra verrà chiamata una procedura, al cui primo parametro sarà passato il valore selezionato (colore, carattere, ecc.) o il valore Non definito se l'utente ha annullato la selezione.

Si noti che l'oggetto FileSelectDialog non dispone di un metodo Show(), a differenza delle finestre di dialogo per la selezione del colore o del carattere, poiché l'implementazione di queste finestre di dialogo è significativamente diversa.

Per utilizzare la finestra di selezione dei file sul client Web, è necessario prima collegare l'estensione del file.

Le finestre di dialogo implementate tramite l'estensione del file non creano problemi di funzionamento come le finestre modali dei browser, pertanto non è stata implementata l'apertura di finestre di blocco per l'oggetto FileChoiceDialog.

In conclusione, notiamo che dalla versione 8.3.10, il supporto per le finestre modali è stato interrotto nel client Web. In questo caso, se viene chiamato un metodo modale nella configurazione, viene generata un'eccezione. Inoltre, nel client Web, il supporto per la modalità interfaccia è interrotto. In finestre separate... Inoltre, non è più possibile aprire un form in una finestra separata sia nel thin che nel client web (quando si lavora in modalità interfaccia Segnalibri). Passi così drastici hanno permesso di abbandonare la modalità interfaccia, che non è più supportata da tutti i browser moderni.

Quale conclusione pratica si può trarre da queste informazioni? E la conclusione è abbastanza semplice: se, per qualche motivo, esistono ancora chiamate modali nella configurazione, verrà visualizzata una finestra con un messaggio di errore in questi punti nel client web. Vorrei mettere in guardia contro i tentativi di "google" qualsiasi soluzione rapida a questo problema, perché il grosso dei consigli si riduce alla seguente ricetta: nel configuratore a livello di configurazione impostare la proprietà "Modalità modalità d'uso" al valore "Utilizzo". Naturalmente, in questo momento, non funzionerà solo perché browser moderni non supportano più le chiamate modali.

E hai solo due modi per risolvere il problema sopra descritto:

  1. Aggiorna la piattaforma alla versione 8.3.10+ (8.3.11), imposta la proprietà di configurazione "Modalità compatibilità" su "Non utilizzare" e riscrivi i frammenti di codice che utilizzano metodi modali in un modello asincrono per la creazione di logica aziendale
  2. Consiglia ai tuoi clienti di utilizzare browser obsoleti in cui le chiamate modali erano ancora supportate ( Mozilla Firefox versione 37 e precedenti, Chrome sotto la versione 37, ecc.).

A proposito, a partire dalla versione 8.3.11, i browser Web Microsoft non sono più supportati Internet Explorer versioni 8 e 9.

Con i browser web alla luce della modalità, abbiamo capito, ora è il momento di chiarire la situazione con il resto dei client.

A partire dalla versione 8.3.5, la proprietà "Modality use mode" nei thin e thick client viene presa in considerazione solo se viene specificato il parametro della riga di comando /EnableCheckModal. Questo parametro viene automaticamente sostituito in riga di comando solo all'avvio dell'applicazione dal configuratore. Se questo parametro non viene specificato, non vengono generate eccezioni e gli avvisi corrispondenti non vengono visualizzati. Quelli. in pratica, nel caso di utilizzo di un thick e thin client, non si osserva alcun cambiamento radicale nel lavoro quando si utilizza la modalità modalità - le chiamate modali funzioneranno allo stesso modo di prima, senza dare alcun avviso, come nel client web.

Per punteggiare le "i" , si noti che a partire dalla versione 8.3.9, il thick client ignora la proprietà di configurazione "Modalità di utilizzo delle chiamate sincrone a estensioni della piattaforma e componenti esterni", mentre i metodi sincroni corrispondenti funzionano senza generare eccezioni e visualizzare avvisi . La proprietà ignorata specificata è stata aggiunta nella revisione 8.3.5 per supportare il lavoro asincrono con componenti esterni, crittografia ed estensioni per lavorare con i file in un browser web Google Chrome... È chiaro che questo non ha nulla a che fare con il fat client, e quindi l'ignoranza "silenziosa" di questa proprietà ha semplicemente eliminato i controlli non necessari sull'uso dei metodi sincroni durante l'utilizzo della configurazione.

A proposito! A causa del fatto che la piattaforma si sta muovendo con sicurezza verso il Web, dalla versione 8.3.8, gli sviluppatori hanno introdotto alcune restrizioni sul codice del programma associato alla logica di chiusura di un modulo o di un'applicazione, eseguita in thick e thin client. Assicurati di leggere il nostro articolo che tratta in dettaglio questa sfumatura. Inoltre, nel corso "Sviluppo professionale di interfacce e moduli in 1C: Enterprise 8.3", c'è un capitolo dedicato al rifiuto della modalità e puoi ottenere molte informazioni utili e rilevanti su questo argomento.

Colleghi, ci sono due cose che possono essere lette all'infinito: il feed VKontakte e l'elenco delle modifiche nella prossima versione della piattaforma, quindi riassumiamo;)

Nel processo di osservazione degli esempi che ti consentono di passare dagli elementi di un modello sincrono a un modello asincrono, probabilmente hai già notato che nel caso generale c'è più codice. Maggiore è la quantità di codice, maggiore è la complessità della sua ulteriore manutenzione e debug.

Inoltre, la quantità di codice aumenterà ancora di più se utilizzeremo più dialoghi durante il processo di sviluppo. Pertanto, nel processo di sviluppo di soluzioni applicative incentrate sul lavoro in un client Web, è necessario ricordare il paradigma del lavoro attualmente utilizzato nelle moderne applicazioni Web. Pertanto, se la configurazione ha molti dialoghi interattivi con l'utente, ha emesso avvisi, allora ha senso rivedere questa funzionalità a favore di altri approcci nell'organizzazione dell'interazione dell'utente.

Invece di una conclusione

Quindi il nostro ciclo "Primi passi nello sviluppo su 1C" è giunto al termine. Se lo hai letto nella sua interezza, molto probabilmente hai già notato con quali passi da gigante la piattaforma si è sviluppata di recente. Il materiale di questo ciclo è stato scritto relativamente di recente, ma abbiamo dovuto aggiornarlo seriamente, perché anche in così poco tempo, tante novità importanti funzionalità e cambiamenti. Tali grandi cambiamenti possono in qualche modo lasciare perplessi il programmatore 1C se non è cresciuto e si è sviluppato professionalmente con la piattaforma per tutto questo tempo.

Su risorse Internet specializzate, puoi spesso leggere le richieste dei programmatori alle prime armi e dei loro colleghi più maturi per consigliarli su materiali che li aiutino a comprendere le vaste e talvolta apparentemente infinite possibilità della piattaforma 1C. Noi, per tradizione, ti consigliamo di prestare attenzione ai nostri corsi di programmazione

14
Per forzare l'avvio dell'azienda in un'applicazione Normal o Managed, vengono utilizzati i seguenti tasti: / RunModeOrdinaryApplication avvia il thick client in modalità normale, nonostante le impostazioni di configurazione e ... 3
È necessario che gli utenti non possano modificare l'interfaccia configurata per loro! Soluzione: per disabilitarlo, è necessario rimuovere il diritto "Salva dati utente" nei diritti di accesso dell'elemento di configurazione principale. ... 2
Nel lavoro corrente, l'utente di solito apre diversi oggetti. Può essere un documento, un libro di riferimento, un rapporto, ecc. Nell'interfaccia precedente, non c'era alcun problema a trovare rapidamente un oggetto aperto e aggiornarlo per ... 2
Nell'ultimo articolo: Installazione di un classificatore di indirizzi (KLADR) in 1C, ti ho detto cos'è Kladr e come caricarlo nei moduli regolari 1C (8.0-8.2). In questo articolo ti mostrerò come caricare l'Address Classifier (KLADR) in ... 2
Spesso, durante lo sviluppo di una determinata configurazione, gli utenti desiderano allegare foto a un elemento della directory e archiviarle nel database. In questo articolo ti dirò come collegare gli oggetti di costruzione al libro di riferimento ...

Nella piattaforma 1C è apparsa la versione 8.3 nuovo regime lavoro del programma - senza l'uso di modalità. Più precisamente, sono apparse 2 nuove modalità: senza utilizzare modalità e utilizzando modalità, ma con un avviso. E il vecchio modo di operare è denotato come usare la modalità.

Cosa significa tutto questo? Nelle prime versioni della piattaforma, usavamo varie finestre modali e non ci pensavamo davvero. Ad esempio, è necessario visualizzare un avviso per l'utente, oppure è necessario porre una domanda o immettere un valore o selezionare un file. Queste sono tutte finestre modali.

Cosa significa modale? Ciò significa che quando viene chiamata questa finestra, si sovrappone a tutte le altre finestre, cioè viene portata in cima e blocca il lavoro con altre finestre fino alla fine del lavoro con questa finestra. Oltre a bloccare le finestre, l'esecuzione del codice si ferma esattamente nel punto in cui viene chiamata questa finestra e la continuazione dell'esecuzione del codice viene eseguita solo dopo aver chiuso tale finestra. Da dove l'esecuzione si è fermata. Illustrerò la chiamata della finestra modale con l'esempio di chiamata del modulo per la selezione del periodo:

& su client

StandardProcessing = False;




If Dialog.Edit () Then // Chiama il modulo modale. La continuazione dell'esecuzione del codice avverrà solo dopo la chiusura del form.
Elements.Services.CurrentData.StartDate = Dialog.Period.StartDate;
Elements.Services.CurrentData.EndDate = Dialogue.Period.EndDate;
Finisci se;

Fine della procedura


Come si vede basta una procedura per processare il richiamo della finestra modale per la selezione del periodo.

Perché i modali sono cattivi? Ora cerchiamo di capire perché 1C ha deciso di abbandonare l'uso delle finestre modali. Bene, prima di tutto, questa è una conseguenza del fatto che la piattaforma 1C può essere utilizzata non solo nella sua forma abituale, sotto forma di applicazione desktop, ma può anche essere avviata in un browser e può essere avviata nella forma di un'applicazione mobile.

Il problema con i browser è il seguente. La modalità delle finestre in esse è implementata utilizzando finestre del browser separate pop-up. Sono supportati da quasi tutti i browser, ma a causa dell'uso frequente di tali finestre per la pubblicità, quasi tutti gli sviluppatori di browser lottano con loro e disabilitano l'uso di tali finestre per impostazione predefinita. Di conseguenza, per garantire la capacità dell'utente 1c di lavorare nel browser, è necessario costringerlo a consentire queste finestre, dedicarsi a tutte le sottigliezze di 1c e dei browser e generalmente sovraccaricare di informazioni non necessarie.

Una sfumatura separata con i browser per computer tablet e browser per telefoni. Nella maggior parte dei casi, questi browser non supportano i popup. Le interfacce (monitor e dispositivi di input) di tali dispositivi con finestre pop-up non sono compatibili.

E infine app mobile Anche 1C non è in buoni rapporti con le finestre modali.

Da qui la conclusione: non usare modali. E cosa usare al loro posto? Invece, è necessario utilizzare le stesse finestre, ma senza la modalità modalità. Nella nuova piattaforma, 1C ha anche sviluppato tale modalità per ogni finestra. È implementato come metodo separato per ogni finestra di dialogo. Questa modalità consente di richiamare la finestra, ma non di interrompere l'esecuzione del codice del programma. Tecnicamente nei browser, questo è implementato come una pseudo finestra che appare all'interno della finestra padre, ma si sovrappone ad essa. Il fatto che il codice continui a essere eseguito dopo l'apertura della finestra significa che non è possibile ottenere i valori selezionati in essa immediatamente dopo il codice di chiamata della finestra. Non sono ancora stati selezionati. Pertanto, la ricezione e l'elaborazione di questi valori vengono eseguite in una procedura separata che viene chiamata quando tale finestra viene chiusa e questa procedura viene specificata quando viene chiamato il metodo per aprire la finestra. Diamo un'occhiata all'esempio della stessa finestra per la selezione di un periodo.

& su client
Procedura di servizioStartDateSelectionStart (Item, SelectionData, StandardProcessing)

StandardProcessing = False;

Dialog = New EditStandardPeriod Dialogue ();
StandardPeriod = New StandardPeriod ();

StartDate = Items.Services.CurrentData.StartDate;
EndDate = Items.Services.CurrentData.EndDate;

StandardPeriod.StartDate = StartDate;
StandardPeriod.EndDate = EndDate;
Dialogue.Period = StandardPeriod;

AlertDescription = Nuova AlertDescription ("PeriodSelectionProcessing", ThisForm);

Dialogue.Show (Descrizione avviso)

Fine della procedura

& su client
Procedura per l'elaborazioneSelezione di un periodo (periodo, parametri) Esporta

Se periodo<>Indefinito Allora

Items.Services.CurrentData.StartDate = Period.StartDate;
Items.Services.CurrentData.EndDate = Period.EndDate;

Finisci se;

Fine della procedura


Come possiamo vedere, invece di Edit(), viene chiamato Show(). E l'elaborazione dell'evento di selezione è già in un'altra procedura.

Quindi, abbiamo capito come fare a meno della modalità. Vediamo ora a cosa serve la modalità di utilizzo della modalità con warning. In realtà, questo è un regime transitorio. Quando non hai ancora avuto il tempo di rifare l'intera configurazione per una modalità senza utilizzare la modalità, ma stai già cercando di farlo. E ogni volta che viene chiamata una finestra modale, il programma ti avviserà che non è desiderabile chiamare finestre modali in questa modalità.

Bene, abbandoniamo la modalità e padroneggiamo le nuove tecnologie per il lavoro 1C nei browser e nei computer mobili.