Come configurare smartphone e PC. Portale informativo
  • casa
  • Notizia
  • Elementi predefiniti. Aggiunta a una configurazione standard

Elementi predefiniti. Aggiunta a una configurazione standard

Tutti conoscono la differenza tra elementi predefiniti e elementi normali: "Gli elementi predefiniti vengono creati nella modalità Configuratore e non possono essere eliminati in modalità 1C:Enterprise." In modalità utente è possibile distinguere un elemento predefinito da quelli aggiunti dagli utenti tramite un'apposita icona (vedi screenshot seguente).

Fondamentalmente gli sviluppatori creano elementi predefiniti per associare ad essi algoritmi in vari oggetti di configurazione. Ad esempio, nella configurazione "Manufacturing Enterprise Management" nella directory "Qualità", gli sviluppatori hanno aggiunto un elemento predefinito "Nuovo".

Questo elemento è utilizzato in molti moduli di configurazione. Pertanto nel documento “Ricezione di beni e servizi”, in sede di iscrizione in tutti i registri dove è presente la dimensione “Qualità”, viene sostituito il valore di un elemento predefinito. Di seguito è riportato l'elenco delle modalità di compilazione della tabella di registrazione per il registro "Beni delle organizzazioni":

// PRODOTTI PER REGISTRAZIONE ProdottiOrganizzazioni. MoveSet = Si sposta. ProdottiOrganizzazioni; Se Tipo di ricevuta = Trasferimenti. Tipi di entrate delle merci. Al magazzino, allora // Ottieni una tabella di valori che corrisponda alla struttura del recordset del registro. TabellaMovimenti = SetMovimenti. Scarica(); // Compila la tabella dei movimenti. Scopo generale. TabellaValoreCarico(TabellaProdotto, TabellaMovimento) ; // Campi mancanti. Tabella del movimento. FillValues(Organizzazione, "Organizzazione"); Tabella del movimento. FillValues(Non definito, "Commissario"); Tabella del movimento. FillValues(Directory. Qualità. Nuovo, "Qualità" ) ; // Riempie la qualità da un elemento predefinito

Pertanto, le caratteristiche degli elementi predefiniti e il loro scopo sono abbastanza semplici. Diamo un'occhiata al modo in cui sono archiviati nelle tabelle del database e in che modo differiscono dagli elementi ordinari.

Differenze

Nella configurazione di prova è stata creata la directory "Prodotti". In esso è stato creato il gruppo "Elementi di prova". Potresti vedere il contenuto del gruppo nello screenshot all'inizio dell'articolo. Per la directory "Prodotti" il database SQL dispone di una tabella corrispondente "_Reference37" con la seguente struttura:

Ma come possiamo determinare se i dettagli corrispondono all'albero di configurazione e ai campi della tabella SQL?

Utilizzeremo il metodo di contesto globale standard “GetDatabaseStorageStructure()”, che ci restituirà una tabella di valori con una descrizione della struttura della tabella.

Nella tabella dei valori "Campi" vediamo la corrispondenza tra i campi della tabella SQL e i dettagli dell'oggetto nell'albero dei metadati. Nel nostro esempio consideriamo la struttura della directory “Prodotti”. Tutte le directory hanno un attributo standard "Predefinito" di tipo booleano, che per gli elementi predefiniti è impostato su TRUE:

In base alla tabella con la struttura di archiviazione delle directory nel database, possiamo dire con certezza che il campo “Predefinito” corrisponde al campo “IsMetadata”. Se osserviamo il contenuto della tabella "_Reference37" nel database SQL, vedremo quanto segue:

Nella voce dell'elemento predefinito il valore del campo "IsMetadata" viene impostato su "0x01", che corrisponde al flag TRUE. Per gli elementi normali il valore è impostato su "0x00". Questa è la differenza principale tra gli elementi predefiniti e quelli ordinari. Tutti gli altri campi vengono archiviati nel database allo stesso modo dei campi negli elementi regolari aggiunti dagli utenti.

Gli elementi predefiniti possono avere usi molto interessanti. Con il loro aiuto, puoi impedire che gruppi di elementi vengano cancellati/contrassegnati per la cancellazione nella directory e in altri oggetti in cui possono essere aggiunti. Se proviamo a eliminare o contrassegnare per l'eliminazione il gruppo "Elementi di prova". quindi otteniamo i seguenti errori:

Pertanto, gli elementi predefiniti rendono "predefinito" anche il gruppo in cui sono inseriti.

Completamento

Gli elementi predefiniti sono parte integrante della maggior parte delle configurazioni. Il loro utilizzo semplifica lo sviluppo e rende logicamente più “armonica” e integrale la costruzione delle funzionalità.

Attenzione! Questa è una versione introduttiva della lezione, i cui materiali potrebbero essere incompleti.

Accedi al sito come studente

Accedi come studente per accedere ai materiali scolastici

Linguaggio di query 1C 8.3 per programmatori principianti: funzione VALUE

Funzione SENSO destinati alla circolazione nel corpo della richiesta ai valori di enumerazione del sistema E dati predefiniti.

Cos'altro sono queste enumerazioni e dati predefiniti, chiedi. Parliamo di tutto in ordine.

Trasferimenti

Trasferimenti- questo è un oggetto applicazione (ricordate che esistono anche Directory E Documentazione). Perché era necessario?

Il punto è che un'enumerazione è un oggetto speciale. A differenza di libri e documenti di consultazione tutti i possibili valori di enumerazione sono specificati in fase di configurazione e non può essere ulteriormente modificato in modalità utente.

L'immutabilità è la loro principale carta vincente. Queste sono una specie di costanti del database.

E se il programmatore in modalità configurazione ha creato un'enumerazione con il nome Pavimento e significati Maschio E Femmina, quindi quando scrive un programma può essere sicuro che i valori di questa enumerazione non cambieranno in futuro. Pertanto, può accedere in sicurezza a questi valori dal codice.

Immagina cosa succederebbe se tentasse di utilizzare la directory per questi scopi?

In primo luogo, alcuni utenti lo prenderanno e aggiungeranno una sorta di "pavimento marziano".

In secondo luogo, un altro utente procederà ed eliminerà uno dei sessi esistenti o cambierà il suo nome.

E il programma si romperà per questo, perché perché funzioni è necessario che ci siano esattamente due generi e precisamente con i nomi “Maschio” e “Femmina”.

È per questi casi che esistono le enumerazioni: definire rigidamente tutte le possibili varianti di valori una volta (in fase di configurazione) e quindi utilizzarle nel codice del programma.

Vediamo un esempio di tale enumerazione nel nostro database "Gastronom". Stai leggendo una versione di prova della lezione, sono disponibili lezioni complete.

Ecco la nostra enumerazione con il nome Pavimento. Che valori può assumere?

Ci sono solo due significati. Con i nomi "Maschio" e "Femmina". Proprio quello di cui abbiamo bisogno.

Dove possiamo utilizzare questa enumerazione in futuro? Bene, ovviamente, nella directory Clienti. Tieni presente che nella sua lista è apparso un nuovo oggetto con questo nome Pavimento e tipo Enumerazione.Gender:

Pertanto, quando compiliamo una scheda cliente già in modalità utente, potremo selezionare solo due valori come sesso del cliente: Maschio e Femmina:

Ora creiamo una query che seleziona i clienti e il loro sesso dal database:

Ora modifichiamo la query in modo che rimangano solo gli uomini. Se proviamo a scrivere qualcosa del tipo:

quindi non otteniamo nulla:

Perché non è possibile accedere ai valori di enumerazione in questo modo. È necessario accedervi utilizzando la funzione SENSO:

Quindi, uno dei compiti della funzione SENSO- utilizzo dei valori di enumerazione nelle query.

Dati predefiniti

Sarà meglio mostrare con un esempio quali sono i dati predefiniti per le directory. Stai leggendo una versione di prova della lezione, sono disponibili lezioni complete.

Nel nostro database "Gastronomo" (in modalità utente), apri la directory "Unità di misura":

Dai un'occhiata più da vicino ai suoi elementi. Vedi i cerchi gialli accanto ad alcuni elementi? Questi elementi (che hanno cerchi) lo sono dati predefiniti.

In generale, se un elemento qualsiasi della directory è predefinito (ovvero, su di esso è presente un cerchio giallo), allora si tratta di un elemento speciale.

Innanzitutto ciò significa che l'elemento è stato creato in fase di configurazione dal programmatore (nel nostro caso si tratta di elementi con codici 1, 2 e 3).

E, in secondo luogo, ciò significa che questo elemento è molto importante per il funzionamento del programma. Che ad esso (o meglio al suo nome predefinito) è legato del codice nel database.

Ecco perché la semplice eliminazione di tale elemento non funzionerà. Prova a contrassegnarlo per l'eliminazione:

Passiamo ora alla modalità di configurazione e vediamo dove vengono creati questi elementi predefiniti (in questo caso per la directory Unità di misura):

Ecco tutti i nostri elementi predefiniti per il libro di consultazione delle Unità di Misura. Tieni presente che tutti gli elementi predefiniti hanno un nome speciale che non viene visualizzato in modalità utente.

Per un elemento con codice 1 questo nome è Ton, con codice 2 - Gram e così via. Questo nome è chiamato nome dell'elemento predefinito ed è con questo nome che potrai accedervi dal codice (o dalla richiesta nel nostro caso).

Vi chiederete perché non è stato possibile fare delle unità di misura semplicemente un elenco con gli elementi Ton, Grammo e Pack? E tutto perché in questo caso per noi è importante che il manuale delle unità di misura contenga sempre alcuni elementi specifici (tonnellata, grammo e pack), ma allo stesso tempo non vogliamo vietare all'utente di aggiungerne alcuni propri elementi (chilogrammo, pezzo e così via). Stai leggendo una versione di prova della lezione, sono disponibili lezioni complete.

Pertanto in questo caso gli elementi predefiniti sono sicuramente più adatti delle enumerazioni.

E possiamo accedere ai nostri elementi predefiniti dalla richiesta utilizzando una funzione a noi già familiare SENSO:

Fai il test

Inizia la prova

1. I valori di enumerazione vengono impostati

2. Per memorizzare un elenco di magazzini in un'azienda, il tipo

3. Per memorizzare un elenco di unità di misura in un magazzino, il tipo

4. Per memorizzare le aliquote fiscali, il cui elenco non deve essere modificato dall'utente, il tipo

5. Per accedere al valore di enumerazione in una richiesta, utilizzare la funzione

6. Per memorizzare le aliquote fiscali, il cui elenco verrà modificato dall'utente, il tipo

7. Vengono forniti dati predefiniti

Buona giornata.

Oggi parleremo dell’innovazione della piattaforma 8.3 per quanto riguarda gli elementi predefiniti.

introduzione

Lascia che ti ricordi che prima, in pratica, molto spesso volevo guardare un elemento della directory per scoprire il suo nome predefinito. Ad esempio, hai creato due controparti predefinite e le hai denominate IPSidorov e OOOMeteor. E hanno cucito loro una logica.

Quando tutto è stato debuggato e risolto, si è scoperto che il compito era posto al contrario e per la LLC era necessaria la logica del singolo imprenditore e per il singolo imprenditore la logica della LLC. "Nessun problema", diciamo, e in modalità aziendale rinominiamo gli elementi. Dopotutto, entrare nel codice è molto più difficile. Passa un anno e ti viene assegnato un nuovo compito: impostare un po' più di logica per IP Sidorov. Entri nel configuratore, scrivi la logica, inizi a controllare e non funziona niente, perché... nel configuratore IPSidorov e nell'impresa - OOOMeteor. Il cervello è rotto e voglio distruggere questo rastrello. La cosa più semplice e ovvia è visualizzare il nome di un elemento predefinito sotto forma di elenco. Ecco il problema: puoi ottenere solo il nome di uno predefinito in 8.2 usando il metodo. Ma il metodo presenta i suoi inconvenienti: non può essere ottenuto in una richiesta. Quelli. Il primo inconveniente è ricavare il nome di quello predefinito da un riferimento alla directory.

Il secondo inconveniente è quando abbiamo già un elemento di directory e dobbiamo renderlo predefinito. Creiamo un elemento predefinito e otteniamo due elementi nella directory. Uno è predefinito, l'altro è operativo, a cui si fa riferimento in tutti i nostri documenti. La sostituzione dei collegamenti aiuta sicuramente, ma se il database è grande è difficile.

Ora arriviamo al punto

Il primo è che la directory ora ha la proprietà "Aggiornamento dati predefiniti".

Cosa ci offre questo campo? Se è impostato su "Non aggiornare automaticamente", aggiungendo un elemento predefinito non lo vedremo subito nella directory. Quelli. i metadati non hanno nulla a che fare con i dati. E se non lo crei nella directory, accedervi con il suo nome tramite il gestore di directory causerà un errore di sintassi.

Molto interessante, ma perché? Come possiamo creare un elemento nella directory? Puoi crearlo come preferisci oppure collegarlo a uno esistente. Ora la directory ha l'attributo "Nome dei dati predefiniti". Creiamo un elemento di directory a livello di programmazione come al solito tramite "Directories.Contractors.CreateElement()" e riempiamo il suo attributo "PrefinedDataName" uguale al nome dell'elemento predefinito. Oppure se l'elemento esiste già, otteniamo il suo oggetto e inseriamo nuovamente il “Nome dei dati predefiniti”. Tutto.

E infine un po' di sciroppo

Questo nuovo attributo non solo è leggibile e scrivibile, ma è anche disponibile nelle richieste. In questo modo puoi imporre condizioni su di esso nelle query, determinare se è predefinito o meno.

Grazie per l'attenzione.

Quando si lavora sulla piattaforma 1C:Enterprise 8.x, spesso è necessario associare il codice del programma a elementi di directory ordinari (non predefiniti). Ad esempio, un'organizzazione può avere cinque tipi di prezzi utilizzati in quasi tutti i meccanismi. In questo caso, l'accesso programmatico a un prezzo specifico viene, nella migliore delle ipotesi, effettuato cigolando per codice nella directory o, nel peggiore, per nome dell'elemento.

Ho visto come nei report, per ottenere il prezzo richiesto, si utilizzava la selezione per tipologia di prezzo in una richiesta per nome (vedi screenshot seguente).

Di conseguenza, otteniamo un report instabile che smetterà di funzionare se il nome del tipo di prezzo viene modificato. Se sei legato al codice dell'elemento, c'è sempre la possibilità di modificarlo. Ad esempio, a causa di una violazione dell'unicità dei codici di directory, l'amministratore può iniziare a rinumerare gli oggetti, il che porterà a modifiche nei codici degli elementi e il report smetterà di funzionare correttamente.

Inoltre, se si collega al nome o al codice degli elementi della directory, quando si riceve un collegamento a un elemento verrà sempre effettuata una ricerca nella tabella della directory. Nonostante i dettagli standard del sistema siano indicizzati dal DBMS, la loro ricerca in alcuni casi può richiedere notevoli risorse. Inoltre, sarebbe più razionale non effettuare una query di ricerca utilizzando la tabella di riferimento se, diciamo, il collegamento all’elemento è già “noto in anticipo”.

Come via d'uscita, è possibile memorizzare un collegamento a ciascun elemento utilizzato di frequente della directory "Tipi di prezzo articolo" in costanti separate e ottenere valori da essi nella richiesta. Tuttavia, in questo caso lo sviluppatore dovrà aggiungere una costante separata per ciascuno di questi elementi. La situazione diventerà notevolmente più complicata se tali elementi non si trovano solo nella directory "Tipi di prezzo articolo", ma anche in altre directory ("Categorie di oggetti", "Qualità", "Nomenclatura" e altre). Quindi il numero di costanti nel sistema può aumentare più volte!

Naturalmente sarebbe possibile aggiungere elementi predefiniti a ciascuna directory e accedervi diventerebbe molto più semplice. Tuttavia, la modifica degli oggetti predefiniti renderebbe più difficile l'aggiornamento della configurazione dai pacchetti del fornitore.

Esiste un approccio più ottimale sia in termini di sviluppo della struttura dei metadati di configurazione che in termini di prestazioni del sistema. Questo è ciò di cui parleremo oggi.

Soluzione universale

L'essenza della soluzione universale sarà la seguente: verrà creata una directory in cui lo sviluppatore aggiungerà elementi predefiniti. Alla ricerca è stato aggiunto l'attributo “Valore”, la cui tipologia dipende dai valori per i quali verrà creata la corrispondenza “Elemento di ricerca predefinito -> Valore associato”. La struttura dei metadati della directory è simile alla seguente (vedere lo screenshot seguente).

Per ottenere un elemento predefinito, l'opzione migliore è utilizzare il metodo globale "Valore predefinito(<Имя>)" . Il percorso completo dell'elemento predefinito viene passato come parametro al metodo. La sintassi è simile alla funzione del linguaggio di query VALUE().

Per facilità di sviluppo consiglio di posizionare la funzione per ottenere il valore associato ad un elemento predefinito in un modulo comune. Nella configurazione di prova, scaricabile tramite il link a fine articolo, è stato creato un modulo comune “Valori degli elementi predefiniti” con funzione di esportazione "GetValue dell'ElementoPredefinito(<ИмяПредопределенногоЭлемента>)" . Il codice di programma della funzione riceve un riferimento a un elemento predefinito, quindi riceve i valori dell'attributo "Valore" tramite una richiesta. Lo screenshot seguente mostra l'elenco completo delle funzioni.

Come possiamo vedere, la funzione genera una richiesta per l'attributo “Valore” dell'elemento predefinito passato come parametro. Il parametro della funzione è una stringa con il nome di un elemento predefinito.
Affinché il meccanismo creato funzioni correttamente, è necessario collegare un elemento predefinito in modalità utente con un normale elemento della directory selezionando l'elemento corrispondente nell'attributo "Valore". Passiamo alla questione dell'impatto sulle prestazioni.

Impatto sulle prestazioni

Ho condotto uno speed test per entrambe le opzioni di ricerca: per nome e per collegamento da un elemento predefinito. La ricerca è avvenuta nella directory "Prodotti" con 20.000 voci. Durante l'esecuzione dei test su un database di file, sono stati ottenuti i seguenti risultati:

I risultati hanno mostrato che per la versione file del lavoro, l'utilizzo di elementi predefiniti per ottenere elementi utilizzati di frequente di altre directory è quasi 4 volte più lento!

Nella versione del lavoro client-server, i risultati del test mostrano un quadro completamente diverso. La velocità con cui si ottiene un collegamento all'elemento desiderato non è diminuita in modo significativo (uno dei test ha mostrato 0,002 secondi durante la ricerca per nome e 0,0008 secondi quando si lavora su un elemento predefinito), ma l'affidabilità del programma è aumentata notevolmente!

conclusioni

Nei casi in cui è spesso necessario collegarsi a normali elementi di directory, consiglio di non utilizzare l'associazione per codice o nome. Questo approccio riduce l'affidabilità e le prestazioni del sistema.

Durante il periodo in cui lavoro con la piattaforma, mi sono imbattuto più di una volta in situazioni in cui, dopo aver modificato il nome, ad esempio, dell'elemento della directory "Tipi di nomenclatura prezzo", il lavoro della maggior parte dei report non standard è fallito.

Quanto più algoritmi sono collegati agli elementi ordinari della directory tramite un codice o un nome, tanto meno stabile è il sistema.

Inoltre, questo approccio ti consentirà di non modificare gli oggetti di configurazione standard se è necessario aggiungere ad essi un elemento predefinito. Ciò renderà il processo di aggiornamento della configurazione un po' più semplice in futuro.

File da scaricare:

  1. Caricamento di un database di test con esempi tratti dall'articolo.

L'idea stessa di lavoro programmatico con elementi predefiniti, secondo me, è molto corretta. Ci sono semplicemente delle sfumature che devono essere prese in considerazione quando si lavora.

Innanzitutto, è necessario comprendere chiaramente da soli che ci sono elementi predefiniti nella configurazione e che ci sono elementi predefiniti nella base delle informazioni (IS). Tecnicamente gli elementi predefiniti di sicurezza informatica sono gli elementi più comuni delle directory, in cui l'attributo “Nome dei dati predefiniti” indica a quale elemento di configurazione predefinito corrispondono. Non sono diversi dagli elementi ordinari. Di conseguenza, qualsiasi elemento ordinario della sicurezza informatica può essere reso predefinito, qualsiasi elemento predefinito può essere reso ordinario. Per fare ciò, basta inserire il valore desiderato nell'attributo "NomeDatiPredefiniti".

Di tanto in tanto, questa proprietà contiene un valore che non è quello previsto dallo sviluppatore. Di conseguenza, si verificano errori nel funzionamento di 1C. Da critico, in cui il lavoro è sostanzialmente impossibile, a non critico, in cui la logica degli algoritmi viene sconvolta.

Condizionalmente possiamo distinguere tre tipi di errori:
1. "L'elemento predefinito non è presente nei dati";

3. Specificazione errata di un elemento predefinito;

1. "L'elemento predefinito non è nei dati" - o assenza di un elemento predefinito descritto nella configurazione dei dati di sicurezza informatica.

Questo è il tipo di errore più semplice da eseguire il debug e correggere. La sua semplicità è che la piattaforma segnala abbastanza correttamente questa situazione “Nei dati manca l'elemento predefinito” ed è abbastanza chiaro come risolverlo.

Quando si accede ad un elemento mancante nel codice "Elenchi.Tipi di informazioni di contatto.Email del referente" viene visualizzato un messaggio

Quando si accede ad un elemento della richiesta "VALUE(Directory.Tipi di informazioni di contatto.Email del contatto)" viene visualizzato il seguente messaggio:

Questo errore si verifica se un elemento è descritto nella configurazione, ma l'elemento non è associato ad esso nel database.

Per cominciare, chiariamo che questa situazione non è sempre sbagliata. È del tutto possibile utilizzare dati predefiniti in qualche tipo di logica di programma, che per la maggior parte degli utenti potrebbe non essere utilizzata. In questo caso, per non ingombrare la directory per tutti gli utenti della configurazione, è logico definire elementi predefiniti nella configurazione, ma non crearli in tutti i sistemi di sicurezza informatica, ma solo per quei sistemi di sicurezza informatica in cui viene utilizzata la logica di configurazione richiesta. In questo caso, il programmatore può specificare la proprietà "Non aggiornare i dati predefiniti" per la directory e creare elementi a livello di codice quando accede alle funzionalità del modulo. Oppure consentire all'utente di associare in modo indipendente gli elementi del modulo predefiniti agli elementi regolari esistenti.

Inoltre, la creazione automatica di elementi predefiniti non viene utilizzata quando si lavora in modalità RIB. Poiché i nuovi elementi devono essere trasferiti dal database centrale e non creati in nodi con UID diversi.

Quelli. A volte l'errore è il riferimento ad un elemento non corrispondente, non la presenza di tale elemento stesso.

È necessario analizzare il motivo per cui l'elemento non è stato creato. Forse dovrebbe essere creato quando viene eseguita una modalità di programma. Ad esempio, dopo aver completato uno scambio in RIB. O forse è stato semplicemente cancellato per sbaglio.

Se la logica prevede il riempimento degli elementi predefiniti non automaticamente, ma in una modalità separata, prima di utilizzare l'accesso per nome " Elenchi.Tipi di informazioni di contatto.E-mail della persona da contattare"Per evitare una situazione eccezionale, è consigliabile verificare che l'elemento sia già nel database. Se l'elemento manca, informare l'utente di ciò e spiegare quale modalità deve eseguire per riempire l'elemento. Per tale controllo , puoi eseguire una query di dati.

Richiesta = Nuova richiesta; Request.Text = "SELECT | Tipi di informazioni di contatto. Link | DA | Directory. Tipi di informazioni di contatto COME Tipi di informazioni di contatto | DOVE | Tipi di informazioni di contatto. Nome dei dati predefiniti = "" EmailContactPersona"""; L'elemento è MissingInData = Query.Execute().Empty();

Se si tratta ancora di un errore nei dati del database, è necessario associarlo a un elemento predefinito dell'elemento di sicurezza delle informazioni. Quelli. è necessario spiegare al sistema a quale elemento di sicurezza delle informazioni il codice del programma dovrebbe accedere con questo nome. Tecnicamente, un'associazione sta semplicemente specificando il nome di un elemento predefinito nella proprietà "NomeDatiPredefinito" dell'elemento IS. Per installarlo basta eseguire il codice:

2. "L'elemento predefinito non è unico" - h doppi elementi predefiniti:

Questa situazione è che diversi elementi di sicurezza delle informazioni sono collegati a un elemento predefinito. In questo caso, quando si accede ad un nome predefinito, l'elemento verrà selezionato in modo casuale. Questa situazione è sempre sbagliata. La sua difficoltà è che la piattaforma non lo segnala in alcun modo. Gli algoritmi iniziano a funzionare in modo errato.

La piattaforma segnalerà l'errore "L'elemento predefinito non è univoco" solo quando si tenta di modificare un elemento duplicato.

Finché nessuno avrà bisogno di modificare l'elemento, nessuno saprà dell'errore.

Tali duplicati possono essere creati, ad esempio, se per la directory viene utilizzato RIB e nelle proprietà per i dati predefiniti è specificata la modalità "Aggiorna automaticamente". In questo caso, quando si esegue uno scambio, verrà creata un'istanza dei dati predefiniti quando si aggiorna la configurazione. Una seconda istanza di elementi predefiniti con lo stesso nome verrà trasferita dal database centrale durante lo scambio.

Inoltre, questi duplicati si verificheranno quando si utilizza l'elaborazione dello scambio tra configurazioni se diversi elementi di sicurezza delle informazioni corrispondono a elementi predefiniti in diversi database. In questo caso, una copia dei dati predefiniti esiste già nel database, la seconda arriverà quando si caricano dati con un UID diverso. Se stai eseguendo trasferimenti di dati, devi decidere quali elementi del database sono considerati primari e utilizzarli nel database subordinato. Nel database subordinato è necessario sostituire l'utilizzo dei vecchi elementi con elementi del database principale.

Tali errori nel database possono essere identificati con una query come:

SELECT Tipi di informazioni di contatto.Nome di dati predefiniti, QUANTITÀ (DIVERSI tipi di informazioni di contatto.Link) AS Numero di directory FROM predefinite.Tipi di informazioni di contatto AS Tipi di informazioni di contatto GROUP BY Tipi di informazioni di contatto.Nome di dati predefiniti HAVING QUANTITY (DIVERSE Tipologie di Contatto noInformation.Link) > 1

Questa query restituirà un elenco di elementi predefiniti a cui è associato più di un elemento di sicurezza delle informazioni.

Se tali elementi sono presenti è necessario rimuovere il collegamento con quello predefinito per uno di essi. Quelli. È necessario determinare in modo inequivocabile per il sistema a quale elemento di sicurezza delle informazioni dovrebbe fare riferimento il codice del programma quando si utilizza questo nome. Per fare ciò, basta eseguire il codice.

3. Specificazione errata di un elemento predefinito.

L'errore è che l'elemento predefinito corrisponde ad un elemento non previsto dalla logica del programma. Tali errori sono i più difficili da diagnosticare. A differenza dei primi due tipi, la configurazione non può essere controllata automaticamente per questi errori. Possono essere individuati solo analizzando la logica del lavoro. In caso di dubbi, puoi verificare se viene utilizzato l'elemento corretto.

Per fare ciò, basta eseguire uno dei comandi.

//Definizione di un elemento di sicurezza informatica che sia collegato alla Notifica predefinita desiderata (Directory.Tipi di informazioni di contatto.Email della persona da contattare) //Definizione di un elemento predefinito a cui è allegata la Notifica selezionata (Link a Element.Nome di dati predefiniti )

Se vengono individuati tali errori è necessario rimuovere la connessione errata con il vecchio elemento e aggiungere una connessione con il nuovo elemento. Il codice operativo è simile al codice per correggere i primi due tipi di errori.

Bene, brevemente sugli errori durante il lavoro del programma o in modalità configuratore:

"L'elemento predefinito non appartiene a<Имя справочника>" - si verifica un errore quando si tenta di scrivere un elemento predefinito con un nome che non corrisponde al nome nel configuratore.

"Gli oggetti non predefiniti non possono avere record di visualizzazione dei sottoconti predefiniti" - Si verifica un errore quando si tenta di rendere non predefinito un elemento di un piano dei conti predefinito. Per eliminare gli errori è necessario rimuovere il flag “Predefinito” da ogni linea di sottocontatto dell'elemento.

"Gli oggetti non predefiniti non possono avere record predefiniti dei principali tipi di calcolo"- Si verifica un errore quando si tenta di rendere non predefinito un elemento predefinito del piano dei tipi di calcolo. Per eliminare gli errori è necessario rimuovere la casella di controllo “Predefinito” per ogni riga del tipo di calcolo principale dell’elemento.

"Gli elementi predefiniti non sono univoci"- viene generato un errore nel configuratore durante l'aggiornamento della base informativa per una versione di configurazione senza modalità di compatibilità con 8.3.4. È necessario verificare la presenza di duplicati ed eliminarli prima dell'aggiornamento.

"Il nome dell'elemento predefinito non è univoco" - l'errore si verifica quando nella configurazione durante l'aggiornamento alla piattaforma sono presenti più elementi predefiniti con lo stesso nome8.3.6.2332 e versioni successive. È necessario eliminare i duplicati nella configurazione.

Per lavorare con dati predefiniti, consiglio l'elaborazione. Può eseguire qualsiasi azione con dati predefiniti e può anche verificare la configurazione nel suo insieme per la presenza di errori dei primi due tipi (elementi duplicati e mancanti) in tutti gli oggetti di sicurezza delle informazioni (rubriche, piani dei conti, PVC, PVR) .

I migliori articoli sull'argomento