Un esempio di regola di conversione di oggetti. Come trovare un errore durante il trasferimento dei dati Problemi dal mondo reale

Buona giornata, cari lettori del blog. Un articolo sulla conversione è stato precedentemente pubblicato su questo sito
, questo articolo ha mostrato
come puoi impostare uno scambio utilizzando costruttori che creano regole di scambio.
Questo metodo può essere utilizzato durante la conversione dei database dalla versione 1C 7.7 alla 8.2.
Ora parleremo di come trasferire i dati tra le configurazioni 1C 8.2, che sono leggermente diverse l'una dall'altra.

L'obiettivo principale di questo articolo sarà la conversione della parte tabulare del documento, il che significa che
con cui lavoreremo regole di conversione del gruppo di proprietà - PKGS.

Preparazione alla configurazione PKGS: regole per la conversione di un gruppo di proprietà

Trasferiremo il documento "Ricevuta di beni e servizi", che presenta differenze nei dettagli dell'aliquota IVA della sezione tabellare "Merci".
nel database di origine e di destinatario. Nel database di origine, questo attributo ha il tipo “DirectoryLink.VAT Rates”,
e nel database del destinatario - il tipo "TransferLink.VAT Rates".

A proposito, per comodità, puoi definire

Inoltre, nel database del destinatario dobbiamo inserire i dettagli “Conto BU”, che si trova anch'esso
nella sezione tabellare “Merci” del documento “Ricezione di Beni e Servizi”. Prenderemo i dati da compilare dai dettagli “Contabilità Conto”.
libro di consultazione “Nomenclatura” del database del ricevitore.

La situazione è complicata dal fatto che lavoreremo con la parte tabellare, quindi dobbiamo configurarla
regole di conversione del gruppo di proprietà - PKGS. Dovremo accedere alla riga corrente della sezione tabellare.

Creazione di regole di conversione per un gruppo di proprietà 1C

Abbiamo già sviluppato regole di conversione per il documento “Ricevuta di beni e servizi”.

Ma per la parte tabellare “Prodotti” non esiste regole di conversione immobiliare"Aliquote IVA".
È necessario aggiungere una nuova regola di conversione delle proprietà facendo clic sul pulsante "Sincronizza proprietà...".

Apparirà la finestra di dialogo "Impostazione delle regole di conversione delle proprietà (ricezione di merci e servizi)".

È necessario ripetere ciò che è stato fatto nell'immagine e fare clic sul pulsante "OK".

Anche se abbiamo creato regola di conversione per un gruppo di proprietà, ma non è ancora pronto.
Si ricorda che il dettaglio della sezione tabellare “Aliquote IVA” differisce per tipologia di valori.
Nel database di origine, questo attributo ha il tipo “DirectoryLink.VAT Rates”,
e nel database del destinatario - il tipo "TransferLink.VAT Rates". Ci manca una regola qui
Conversione da una directory a un'enumerazione.

Gestori eventi per le regole di conversione dei gruppi di proprietà

Per configurare correttamente la conversione delle proprietà, è necessario creare una nuova regola di conversione degli oggetti.

Nella finestra di dialogo che appare, indichiamo che la directory “Aliquote IVA” viene convertita in un trasferimento con lo stesso nome.

Non ci saranno regole di conversione della proprietà per questa regola.
Pertanto, quando salvi questa regola, seleziona "No" nella finestra di dialogo che appare.

Nel dialogo con la domanda “Creare regole di caricamento dati?” Selezioniamo anche “No”.

Facendo doppio clic si aprirà una finestra di dialogo con l'impostazione della regola di conversione dell'oggetto (PKO) “Aliquote IVA”.
Qui, nella scheda “Gestori eventi”, seleziona l’evento “In fase di scarico” e definisci la “Sorgente” e
“Link Node”, ovvero ciò che verrà trasferito.

Se la fonte. Tasso = 0 Allora
LinkNodo = "Offerta0";
Fonte ElseIf. Scommessa = 12 Allora
NodoLink = "Scommessa12";
Fonte ElseIf. Nome = “IVA esclusa” Quindi
NodeLinks = "Senza IVA" ;
FineSe ;

Dopo aver scritto il gestore, fare clic sul pulsante "OK".

Nelle informazioni sui gestori:

Sorgente - Personalizzato: oggetto sorgente caricato (collegamento o dati personalizzati).
Nodo di collegamento: nodo di collegamento xml inizializzato. Può essere utilizzato
ad esempio, per inizializzare le proprietà di altri oggetti.

Ora indicheremo esplicitamente l'utilizzo di questa regola di conversione dell'oggetto durante lo scarico dell'attributo “Aliquota IVA”.
Vai alla scheda “Conversione Immobili (*)” del documento “Ricevuta di Beni e Servizi” e apri la conversione
gruppo di proprietà “Prodotti”, fare doppio clic sulla proprietà “Aliquote IVA” e, nella finestra di dialogo che si apre, nel campo “Regola”
selezionare la regola di conversione per l'oggetto “Aliquota IVA”.

Fare clic sul pulsante "OK".

Ora dobbiamo solo impostare i conti contabili in base ai valori definiti per l'articolo.
Andiamo nella scheda “Regole di conversione oggetto”, troviamo l'oggetto “Ricevuta di beni e servizi” e
Facendo doppio clic su di esso si aprirà la finestra di dialogo delle regole di conversione degli oggetti (OCR).
Andiamo alla scheda "Gestori eventi" per l'evento "Dopo il caricamento" e scriviamo quanto segue:

Per ogni LineTCH Da Oggetto. Ciclo dei prodotti
LineaTC. ContoContoBU = LineTC. Nomenclatura. ContoContoBU;
FineCiclo;

Ora carichiamo queste regole alla fonte utilizzando l'elaborazione esterna del formato Universal Data Interchange in XML - "V8Exchan82.epf".
Carichiamo i dati in un file xml. Quindi, aprire la stessa elaborazione nel database del ricevitore e selezionare il file xml di caricamento e caricare i dati.

A proposito, l'elaborazione "Scambio universale di dati in formato XML" può essere aperta tramite la voce di menu
"Servizio" | "Altri scambi di dati" | "Scambio universale di dati in formato XML". Un po 'è stato scritto su questo in una nota su.

Stampa (Ctrl+P)

Gestore Prima di registrare i dati ricevuti

Procedura PKO_<ИмяПКО>_Prima di registrare i dati ricevuti nel modulo generale Gestore di Exchange tramite formato universale contiene il testo del gestore Prima di registrare i dati ricevuti per uno specifico PKO. Il testo del gestore potrebbe essere vuoto. Tuttavia, in pratica viene sempre utilizzato durante il caricamento dei dati per implementare la logica aggiuntiva che deve essere eseguita prima di scrivere un oggetto nell'infobase. Ad esempio, le modifiche dovrebbero essere caricate nei dati di sicurezza delle informazioni esistenti o dovrebbero essere caricate come nuovi dati.

Il gestore contiene i seguenti parametri;

  1. Dati InformazioniB– Tipo – DirectoryObject, DocumentObject. Un elemento di dati dell'infobase corrispondente ai dati ricevuti. Se non vengono trovati dati corrispondenti, questo parametro ha il valore Indefinito .
  2. Dati ricevuti– Tipo – DirectoryObject o DocumentObject. Un elemento dati generato dalla conversione dei dati XDTO. Registrato se questi dati sono nuovi per l'infobase (il parametro IB Data contiene il valore Indefinito ). Altrimenti Dati ricevuti sostituire Dati InformazioniB(tutte le proprietà da Dati ricevuti trasferito a Dati InformazioniB). Se non è richiesta la sostituzione standard dei dati di sicurezza delle informazioni con i dati ricevuti, è necessario scrivere la propria logica di trasferimento e quindi installarla Dati ricevuti Senso Indefinito
  3. Conversione delle proprietà. Tipo - Tabella dei valori. Contiene le regole per la conversione delle proprietà dell'oggetto corrente, inizializzate come parte della sessione di scambio.
  4. Scambio di componenti. Una struttura che contiene componenti di scambio: regole di scambio e parametri di scambio. La procedura per inizializzare i componenti di scambio si trova nel modulo Scambio datiXDTOServer

Vediamo alcuni esempi pratici che ho risolto in configurazione avanzata, per non modificare la configurazione base delle tipiche soluzioni applicative 1C.

Non sostituire gli oggetti trovati durante il caricamento

Nelle regole per la conversione degli oggetti dell'edizione 3.0, a differenza dell'edizione 2.0, non esiste la proprietà "Non sostituire gli oggetti trovati durante il caricamento", grazie alla quale gli oggetti trovati nell'infobase del ricevitore non verranno modificati dal valore dei campi di sincronizzazione.

Nelle regole di conversione degli oggetti dell'edizione 3.0, il parametro Dati InformazioniB ha il valore undefinito se l'oggetto non viene trovato. Inoltre, se il parametro Dati ricevuti ha significato indefinito quindi quando si esce dal gestore, m non verrà sostituito.

Il datore di lavoro mi ha chiesto di modificare le regole di conversione tra le configurazioni standard di UT 11 e BP 3.0 in modo che i dati della directory delle organizzazioni e dei magazzini nel reparto contabilità non vengano venduti durante lo scambio con UT. In particolare, vendevano i dettagli aggiuntivi di questi elenchi al reparto contabilità ogni volta che gli elementi di questi elenchi venivano registrati in UT per l'invio al reparto contabilità.

Ho eseguito questa attività nell'estensione di configurazione della contabilità per non modificare la configurazione principale. La soluzione è mostrata in Fig. 1. Se l'elemento directory esiste (trovato nell'origine), allora il parametro Dati InformazioniBè definito e che tutte le proprietà da Dati ricevuti NON trasferito a Dati InformazioniB dovrebbe essere installato Dati ricevuti Senso Indefinito

Fig 3 Frammento di codice del programma nell'estensione di configurazione

Se l'oggetto directory non viene trovato, il parametro Dati InformazioniB importa Incerto e poi Chiamo la procedura ContinuaChiama per continuare a chiamare il gestore eventi dalla configurazione estensibile

Non riflettere i documenti nella contabilità regolamentata

Mi è stato chiesto di rendere possibile non riflettere nella contabilità 3.0 alcuni documenti di spedizione che vengono creati nella gestione commerciale 11. A questo scopo ho introdotto un ulteriore dettaglio del documento attuativo “Non riflettere i documenti nella contabilità regolamentata”. Se il flag è impostato, questo documento deve essere contrassegnato per la cancellazione nel database del destinatario (BP 3.0). La complessità di questo compito sta nel fatto che nel reparto contabilità dell'impresa i documenti non presentano ulteriori dettagli. Ho deciso di utilizzare il campo commenti. Quando invio sul lato sorgente (UT 11), compilo l'attributo commenti con l'apposita iscrizione, e sul destinatario (BP), nel gestore, prima di registrare i dati ricevuti, imposto un segno per la cancellazione come mostrato in Fig 2

È noto che i programmi 1C sono uno strumento conveniente e multifunzionale per l'automazione contabile, adatto alle imprese di un'ampia varietà di settori e aree di attività. Tuttavia, questo strumento è complesso e, sfortunatamente, quando si lavora con esso si verificano spesso diversi tipi di errori. In questo articolo ti mostreremo come trovare e risolvere un errore che si è verificato durante la migrazione dei dati utilizzando le regole create da Tecnologie di conversione dei dati 2.0. Cosa devo fare se il caricamento fallisce o è impossibile caricare i dati nel database ricevente? Il nostro articolo si propone di rispondere a queste domande.

Pertanto, se hai acquistato le regole di conversione dei dati, hai aperto l'elaborazione per il trasferimento, hai configurato tutte le impostazioni, ma il caricamento viene interrotto e viene visualizzato un messaggio di errore nei messaggi di servizio, ecco alcune tecniche che possono aiutarti a trovare ed eliminare l'errore.

Prima di tutto, controlla le versioni di rilascio del tuo programma con quelle specificate nelle regole. Con una leggera discrepanza tra le versioni fonte non sorgono problemi, ma se la tua release è notevolmente indietro rispetto alle ultime versioni, le regole non funzioneranno. Versione di configurazione ricevitore deve essere identico a quello specificato nelle regole.

Come posso vedere a quali versioni sono applicabili le regole? Basta aprire il file delle regole con qualsiasi editor (per impostazione predefinita può essere Internet Explorer o Blocco note) e guardare le prime righe: contengono le versioni dell'origine e della destinazione.

Fig.1. Visualizza le regole

Cosa fare? Se hai tale opportunità, aggiorna il programma sorgente alla versione specificata nelle regole di conversione. Se non puoi aggiornare il programma, non sarai in grado di lavorare con queste regole.

Ma forse hai già fatto tutto questo e il caricamento avviene ancora con errori? Quindi prova a trovare l'elemento problematico che impedisce il corretto caricamento del programma.

Dimostreremo l'algoritmo delle azioni durante la ricerca di errori utilizzando l'esempio del trasferimento di dati da KA 1.1 a BP 3.0.

Procedere come segue: disabilitare tutte le regole di trasferimento e scaricare uno per uno i singoli gruppi di regole. Quelli. prima prova solo a scaricare Politica contabile, solo allora Saldi in entrata, soltanto Directory ecc. (Fig. 2). Molto spesso, sorgono problemi durante lo scarico dei documenti, mentre altri tipi di oggetti vengono scaricati normalmente, quindi usiamo il loro esempio per considerare ulteriori azioni. Ora devi ripetere il processo con il caricamento alternativo con ciascuna regola di conversione del documento. Quelli. a sua volta caricare solo i rapporti anticipati, solo la lettera di credito ceduta, ecc. secondo l'elenco, come mostrato in Fig. 3.

Fig.2. Scarico sequenziale di gruppi di oggetti

Fig.3. Scaricamento dei tipi di oggetto uno per uno

Supponiamo quindi che il caricamento venga interrotto quando vengono selezionate tutte le regole di caricamento Documenti. Hai caricato tutti i tipi di documenti uno per uno, hai esaminato tutte le posizioni una per una e hai calcolato che l'errore si verifica solo durante il caricamento, ad esempio, dei documenti Operatività (contabilità e contabilità fiscale). Successivamente, dovresti ridurre gradualmente il periodo di caricamento per trovare il documento problematico. Innanzitutto, carica per trimestre, mese, settimana fino a trovare il giorno in cui il caricamento non riesce.

Cosa fare? Se riesci a trovare il documento specifico che causa l'errore e riesci a vedere qual è il problema più probabile, ottimo. Se possibile, correggi il documento o semplicemente non eseguirne la migrazione: è molto più semplice riparare un documento che eseguire l'intera migrazione manualmente. Per effettuare un trasferimento escludendo un solo documento utilizzare la selezione presente nella finestra adiacente. Nella colonna "Tipo di confronto", imposta "Non uguale", in "Valore" seleziona il documento problematico e continua il caricamento come al solito.

Fig.4. Selezione di un documento durante il caricamento

Ok, ma cosa succede se il caricamento viene completato correttamente, ma i dati non possono essere caricati in un altro database? Innanzitutto, prenditi il ​​tuo tempo e controlla di nuovo se hai fatto tutto correttamente e se le versioni del programma corrispondono. A differenza della fonte, la versione rilasciata del ricevitore deve corrispondere rigorosamente a quella specificata nelle regole, altrimenti riceverai sempre un errore.

Cosa fare? Gli errori nella fase di carico possono essere corretti molto spesso solo nella fase di scarico, quindi la procedura per individuare il problema sarà la stessa descritta sopra, con una sola eccezione: dopo ogni scarico sarà necessario ripetere il carico per trova che l'elemento che si trova nel database ricevente non verrà caricato. Segui la stessa sequenza: prima migra un gruppo di visualizzazioni di oggetti, quindi visualizzazioni specifiche in base a date specifiche e infine elimina l'elemento problematico che impedisce il corretto caricamento.

Quando l'elaborazione tipica non riesce a eseguire correttamente il caricamento e il processo si interrompe, nei messaggi di servizio viene sempre visualizzato un messaggio di errore. In alcuni casi, trovare la posizione e la causa di questo errore è davvero possibile solo scaricando diversi tipi di oggetti uno per uno. Tuttavia, questo non è l’unico modo. Spesso la causa dell'errore è già comunicata nel messaggio di servizio; basta leggerlo correttamente;

Diamo un'occhiata all'esempio di scarico da CA 1.1. L'utente scarica dal database di origine Saldi in entrata all'inizio del 2018. Il processo di scarico viene interrotto e il programma visualizza diversi messaggi di servizio, tra cui i seguenti:

Errore nel gestore eventi BeforeProcessingUploadRules
PVD = Materiali_Restanti
Gestore = BeforeProcessingDataUpload
DescriptionErrors = Errore durante il recupero del valore della proprietà dell'oggetto (per nome della proprietà di origine)
PKO = Nomenclatura (Directory: Nomenclatura)
PKS = 15 (Articolo --> Articolo)
Oggetto = Saldatrice inverter VDI 160R (Immobilizzazioni)
Proprietà ricevente = Articolo(Stringa)
DescriptionErrors = Campo oggetto non trovato (Articolo)
ModulePosition = Processing.UniversalXMLDataExchange.ObjectModule(8283)
Codice messaggio = 13
ModulePosition = Processing.UniversalXMLDataExchange.ObjectModule(1694)
Codice messaggio = 31

Si potrebbe procedere nel modo più duro e scaricare uno per uno diversi tipi di saldi (resti di immobilizzazioni, saldi di attività immateriali, ecc.) e scoprire che l'errore si verifica quando si scarica secondo la regola Materiali_rimanenti. Oppure puoi vedere immediatamente il nome della regola nel messaggio di errore. Guarda, la primissima riga nella trascrizione dell'errore nel messaggio dice esattamente questo. DVP: regola di caricamento dei dati. La regola di caricamento dei dati è uguale a Materiali_Rimanenti. Non abbiamo bisogno di cercare nulla, è il programma stesso a dirti dove si è verificato l'errore.

Riso. 5.1. Messaggio di errore del servizio

Possiamo altrettanto facilmente trovarne il motivo. In linea DescrizioneErrori scritto Non è un messaggio molto chiaro per l'utente. Possiamo però capire che l'errore risiede in qualche proprietà dell'oggetto. Quale oggetto? Quello indicato nella riga Oggetto in questo messaggio. In questo caso, questo oggetto è Saldatrice inverter VDI 160R (Immobilizzazioni). Già in questo momento puoi notare una discrepanza. Regola di caricamento dei dati chiamato Materiali rimanenti, in linea Regola di conversione degli oggetti (OCR) scritto Nomenclatura, perché il tipo di oggetto è scritto come Immobilizzazioni? Esaminiamo il database di origine e controlliamo se abbiamo davvero trovato l'oggetto corretto.

Nei saldi del conto 10.09 “Inventario e forniture domestiche” troviamo il nostro oggetto problematico - subconto Saldatrice inverter VDI 160R(vedi Fig. 5.2)

Riso. 5.2. Bilancio per il conto 10.09 per il 2018

Se apri questo sottoconto, puoi vederlo immediatamente Saldatrice inverter VDI 160Rè infatti uno strumento di base, non una nomenclatura (vedi Fig. 5.3). Ciò che resta Saldatrice inverter VDI 160R si è rivelato un errore del tutto evidente sull'account 10.09 che deve essere corretto.

Riso. 5.3. Scheda cespite Saldatrice inverter VDI 160R

L'errore di scarico in questo caso si verifica a causa di un tipo di oggetto errato. Secondo la regola per lo scarico dei materiali rimanenti, questi dovrebbero essere scaricati Nomenclatura- materiali, carburante, inventario, ecc. Tali oggetti hanno un certo insieme di proprietà, che vengono trasferite in un altro database secondo la regola di conversione. Per oggetti con tipo Mezzi primari l'insieme delle proprietà sarà completamente diverso. Non è possibile scaricare un oggetto del genere secondo la regola per lo scarico dei materiali. Il programma identifica l'oggetto come Nomenclatura ma non trova su di esso le proprietà necessarie e, di conseguenza, non può convertirlo per scrivere su un file. Questo è ciò che diceva il messaggio Errore durante il recupero del valore della proprietà dell'oggetto (per nome della proprietà sorgente).

In questo esempio, il problema può essere risolto abbastanza facilmente: nelle nostre regole c'è un parametro Non scaricare il saldo se la quantità è zero. Una volta installata, le bilance con quantità pari a zero semplicemente non verranno scaricate. Come si può vedere nello stato patrimoniale presentato nella Figura 5.2, i saldi di questo sottoconto non hanno quantità, cioè questo residuo problematico può essere facilmente eliminato utilizzando il parametro specificato.

In altri casi, quando non è possibile escludere un oggetto utilizzando un filtro o un parametro, l'utente dovrebbe correggere l'errore nel database di origine prima di migrare i dati.

Un esempio di errore.

Diamo un'occhiata ad un esempio di un altro errore scoperto durante il trasferimento dei dati.

Quando l'utente ha provato per la prima volta a caricare documenti, ha visto il seguente testo nei messaggi di sistema. Un messaggio di errore ci consente di saltare il meccanismo di rilevamento del momento in cui si è verificato un errore e passare alla sua risoluzione. Tali messaggi non vengono sempre visualizzati e talvolta è comunque necessario cercare un errore utilizzando il metodo di scarico uno per uno. Abbiamo già discusso come leggere un messaggio del genere sopra.

Fig.6.1. Messaggio di errore

Quindi, il programma stesso ci comunica il documento problematico: si tratta della Fattura per l'acquirente IPBP-000008, il che significa che andiamo immediatamente al documento e proviamo a scoprire qual è l'errore.

Come puoi vedere nella Figura 6.2, in questo documento nella sezione tabellare "Beni e servizi" in una delle righe è impostato il gruppo di articoli e non l'articolo stesso, il che di per sé è un errore. Naturalmente, le regole di conversione per questo documento non specificano come convertire un oggetto da questa parte tabulare gruppo di nomenclatura, questo è un elemento di tipo completamente diverso da se stesso nomenclatura e il programma non ha informazioni su come spostare un elemento oltre a quanto specificato nelle regole. Pertanto, il processo di conversione non lo riconosce, non può convertirlo e genera un errore.

Fig.6.2. Documento con un errore

Come e perché ciò sia stato stabilito non ci interessa al momento. Decidiamo di non migrare il documento, il che significa che lo escludiamo dall'elenco degli oggetti migrati. Trovare la regola di caricamento del documento Fattura per il pagamento all'acquirente, selezionalo, vai alla selezione, imposta Campo - Collegamento, Tipo di confronto - Non uguale, Valore - il nostro documento problematico. Pertanto escluderemo questo documento dall'elenco degli oggetti trasferiti e il caricamento dovrebbe procedere normalmente.

Fig.6.3. Impostazione delle preferenze per l'esclusione dei documenti

Successivamente, puoi continuare a caricare nel modo per te conveniente: trasferire tutti i documenti contemporaneamente o trasferire solo le fatture per il pagamento, ad eccezione del documento trovato, e quindi trasferire il resto: l'ordine di trasferimento dei dati può essere qualsiasi.

Va notato qui che durante l'elaborazione esiste la possibilità di selezionare oggetti Scambio di dati XML generico non in tutte le configurazioni tipiche. Più precisamente, tale funzionalità è assente nella modalità di applicazione gestita. In particolare, in una configurazione standard Automazione integrata rev.1.1 puoi lavorare sia in modalità applicazione normale che in modalità applicazione gestita o, come si dice anche, in modalità moduli gestiti. Nel primo caso sono possibili selezioni nell'elaborazione standard (vedi Fig. 4), nel secondo no. Quindi è necessario utilizzare le versioni modificate dell'elaborazione (vedere Fig. 6.3). Se la configurazione viene utilizzata in modalità compatibilità piattaforma 8.2 (questo è in particolare CA 1.1 E UPP1.3), allora è necessaria l'elaborazione Scambio di dati XML generico versioni 2.1.7 . Se la modalità compatibilità non viene utilizzata, come nella configurazione Contabilità aziendale edizione 3.0, allora devi lavorare con l'elaborazione della versione 2.1.8 . Questi trattamenti hanno anche funzionalità aggiuntive per la compilazione delle selezioni dal diario di bordo (maggiori dettagli), quindi non sono inclusi in tutte le opzioni di consegna, ma possono sempre essere acquistati sia come parte di pacchetti contrassegnati come con selezione in base alla storia della vita, o separatamente.

Ecco come si presenta, in generale, il processo di ricerca ed eliminazione di un errore che si è verificato durante il trasferimento dei dati 1C.

Puoi trovare altri materiali utili nella sezione Articoli o nel nostro sito principale.

© Anna Balyasnikova, ultime modifiche aprile 2018

Libro di testo sulla conversione dei dati 1C (edizione 2) Regole per la conversione di oggetti

Come già sappiamo, le regole di conversione degli oggetti vengono utilizzate per abbinare gli oggetti nelle configurazioni di origine e destinazione. Naturalmente, la regola specifica l'oggetto origine dati (ovvero, da dove ottenere i dati) e l'oggetto destinatario dati (ovvero, dove trasferire o scrivere i dati).

Oltre a loro, ci sono una serie di proprietà il cui significato cercheremo di rivelare.

Cerca l'oggetto di destinazione tramite l'identificatore interno dell'oggetto di origine- flag che definisce la ricerca degli oggetti nel ricevitore per la versione piattaforma V8. Se questo flag è selezionato, la ricerca di un oggetto da modificare nel database del destinatario viene eseguita utilizzando l'identificatore interno (univoco) dell'oggetto. Questo identificatore non è visibile all'utente e il programma mantiene l'unicità degli identificatori nell'infobase, in modo che non esistano due oggetti dell'infobase con gli stessi identificatori.

Continua a cercare nei campi di ricerca se l'oggetto destinatario non viene trovato in base all'identificatore- il flag determina di proseguire la ricerca di un oggetto nell'archivio informativo del ricevente se la ricerca per identificatore univoco non dà esito positivo.

Non sostituire gli oggetti esistenti nel ricevitore durante il caricamento, ma crearne solo di nuovi e riempirli *- il flag determina se è necessario modificare i dettagli dell'oggetto nell'infobase del ricevitore se l'oggetto è stato trovato con successo tramite un identificatore univoco o tramite campi di ricerca.

Non creare un nuovo oggetto nel ricevitore se NON viene trovato *- il flag determina se è necessario creare un nuovo oggetto nell'infobase del ricevitore se non è stato trovato da un identificatore univoco o dai campi di ricerca.

Quando si trasferisce un oggetto per riferimento, NON creare un nuovo oggetto, ma trasferire solo il riferimento- il flag determina se è necessario creare un nuovo oggetto nell'infobase del ricevitore se non è stato trovato tramite un identificatore univoco o tramite campi di ricerca se l'oggetto viene trasferito per riferimento. Se l'oggetto non viene trovato e viene cercato tramite identificatore univoco, verrà trasferito solo il collegamento all'oggetto (senza campi di ricerca - un collegamento). Se l'oggetto viene scaricato direttamente (ovvero non viene scaricato solo il collegamento all'oggetto, ma anche tutti i suoi dettagli), il flag non influisce su nulla.

Non scaricare oggetti della proprietà sorgente tramite collegamenti- il flag determina se è necessario scaricare tutti gli oggetti a cui l'oggetto sorgente ha collegamenti o se è sufficiente scaricare solo le informazioni sui collegamenti a questi oggetti. Supponiamo che tu stia caricando un libro di consultazione del prodotto. Se questa casella di controllo non è selezionata per il PKO corrispondente, oltre all'oggetto verranno scaricati tutti gli oggetti a cui si riferisce. Se la bandiera è armata, gli oggetti a cui fa riferimento la nomenclatura non verranno scaricati. Prova a selezionare questa casella e a visualizzare il file di caricamento dei dati risultante, quindi a rimuoverlo e a confrontare i risultati. Ne capirai rapidamente il significato.

Non ricordare gli oggetti scaricati- il flag determina se il sistema necessita di memorizzare nella CACHE gli ultimi oggetti scaricati durante lo scarico. La memorizzazione nella cache consente di accelerare il processo di caricamento e caricamento dei dati.

Utilizza la ricerca rapida degli oggetti durante il caricamento e il caricamento- il flag determina se utilizzare una ricerca rapida degli oggetti da caricare. Ha senso usarlo per un numero limitato di voci di directory (il numero di voci non supera i 1000 elementi). L'effetto si ottiene se molti oggetti hanno il flag impostato Non scaricare gli oggetti proprietà per riferimento. Con questo schema di caricamento e caricamento dei dati, la velocità aumenta più volte.

Genera automaticamente un numero o un codice se non è specificato- il flag determina se il sistema deve generare automaticamente un nuovo codice o numero oggetto se non viene compilato prima della registrazione.

Scambio online

Scarica un oggetto (interamente), solo se è presente un collegamento ad esso- l'impostazione determina in quali circostanze l'oggetto deve essere scaricato. Se la casella è selezionata, l'oggetto verrà scaricato secondo le seguenti regole:

  1. Secondo le regole di scarico, se un oggetto è già stato scaricato, scaricalo così com'è
  2. Secondo le regole di scarico, se l'oggetto non è stato scaricato, non scarichiamo
  3. Quando carichiamo utilizzando un collegamento a un oggetto, carichiamo l'intero oggetto

Ad esempio, se non è necessario trasferire l'intero elemento da un IS all'altro, ma solo quello a cui sono presenti collegamenti, la casella di controllo andrà bene.

Non sostituire un oggetto creato nell'infobase del ricevitore durante il caricamento- l'impostazione determina se è necessario trasferire (indietro) un oggetto che è stato creato nell'infobase con cui è organizzato lo scambio. Cioè, se un documento è stato creato nell'infobase 1 e inserito nell'infobase 2 tramite uno scambio, allora dovrebbe essere trasferito nell'infobase 1 quando viene modificato nel database 2. L'impostazione consente di specificare la priorità di un oggetto durante lo scambio al posto di la sua creazione. Cioè, le modifiche nell'infobase in cui è stato creato l'oggetto vengono distribuite ovunque e le modifiche in altri database non influiscono su questo oggetto nel database 1.

Carica la priorità dell'oggetto- l'impostazione determina la priorità dell'oggetto durante il caricamento in caso di collisione di modifiche. Il valore predefinito e, nel caso di un valore vuoto, è Sopra. Se si verifica una collisione, il programma analizza la priorità dell'oggetto scaricato. Solo se la priorità dell'oggetto scaricato è uguale a Sopra verrà registrata nell'infobase del destinatario. Se la priorità è Uguale o Sotto, il programma registrerà le informazioni corrispondenti sulla collisione nella base informazioni, ma l'oggetto non cambierà.

Opzioni di impostazione del campo di ricerca- una tabella con le possibili opzioni per impostare i campi di ricerca per l'utente. Il progettista delle regole definisce le possibili combinazioni di campi di ricerca che un utente può selezionare quando configura uno scambio. Tutte le impostazioni specificate dallo sviluppatore della regola devono essere elaborate nel codice del gestore "Campi di ricerca". La variabile SearchSettings nel gestore determina l'opzione di corrispondenza selezionata dall'utente (SettingNameForAlgorithm dalla riga della tabella corrispondente). Se l'utente non ha selezionato alcuna opzione di corrispondenza o non gli è stata offerta alcuna opzione, Impostazioni di ricerca è una stringa vuota.

Nella scheda "Avanzate" puoi modificare il nome della regola, la sua inclusione in un gruppo specifico, nonché la descrizione della regola.

Lo scopo di questa regola di cambio è trasferire i saldi sui regolamenti reciproci da BP 2 a UT11.

Creazione passo passo di una regola di scambio utilizzando la configurazione "Conversione dati" (i metadati devono essere caricati):

1) Crea una regola per il caricamento di un oggetto; per questo, vai alla scheda "Regole per il caricamento dei dati", fai clic su aggiungi. Nella finestra che appare selezionare l'oggetto campione; questo sarà un registro di autocontabilità. Cambiamo il metodo di campionamento in un algoritmo arbitrario.

2) Passiamo alla scrittura del codice stesso perché Non esiste un registro di autocontabilità nell'UT, quindi dobbiamo convertirlo. Innanzitutto, abbiamo bisogno di una query che, in base ai nostri parametri, restituirà i saldi per gli accordi reciproci. Nel gestore eventi "Prima dell'elaborazione" scriviamo la seguente richiesta:

Testointerrogazione = "SELEZIONA
| Saldi autoportanti.Conto,
| AutoportanteRemains.Subconto1 AS Subconto1,
| ISNULL(SUM(Self-Accounting.Remaining.AmountRemainingDt),0) AS ImportoRemainingDt,
| ISNULL(SUM(Rimanenze autocontabili.ImportoCtRestante),0) AS ImportoCtRestante,
| MAXIMUM(Saldi autocontabili.Sottoconto2.Data) COME Data del documento di liquidazione,
| MASSIMO(Saldi autocontabili.Sottoconto2.Numero) AS Numero del documento contabile
|DA
| Registro contabile. Saldi autoportanti (&OnDate, Account = &account,) AS Saldi autoportanti
|DOVE
<>&gruppo e
| Saldi autoportanti. Sottoconto 1. Madre<>&gruppo1
|GRUPPO PER
| Saldi autoportanti.Conto,
| Saldi autoportanti. Sottoconto 1,
| AutoportanteResti.Subconto2
|ORDINA PER
| Sottoconto1
|ORDINE AUTOMATICO";

Il mio compito era limitare i gruppi di controparti per i quali vengono caricati gli accordi reciproci.

Determiniamo i valori delle variabili che verranno utilizzate in futuro.

InData = data("20130101");
TD = DataCorrente();
gruppo = Directory.Counterparties.FindByName("Acquirenti");
gruppo1 = Directory. Trova per nome("Resi da PRIVATI");

Creiamo una tabella che passeremo successivamente alla regola di conversione dei valori.

TZ = Nuova TabellaValori();
TK.Columns.Add("Controparte");
TK.Columns.Add("Importo");
TK.Columns.Add("ImportoREGLE");
TK.Columns.Add("CalculationDocument");
TK.Columns.Add("Data del documento di liquidazione");
TK.Columns.Add("Numero documento di transazione");
TK.Columns.Add("Partner");
TK.Columns.Add("Valuta del regolamento reciproco");
TK.Columns.Add("Data pagamento");

Impostiamo i parametri, chiamiamo la richiesta, compiliamo la tabella e chiamiamo la regola di conversione.

richiesta = nuova Richiesta(TestoRichiesta);
richiesta.SetParameter("gruppo", gruppo); richiesta.SetParameter("gruppo1",gruppo1);
request.SetParameter("OnDate",OnDate);
request.SetParameter("Conto", Piani contabili. Contabilità propria. Calcoli con altri fornitori e appaltatori);//76.05
Recupera = request.Run().Select();
TZ.clear();
Mentre Select.Next() Ciclo
se Sample.SumRemainingCT = 0 o Sample.SumRemainingCT = "" allora
continuare;
endif;
se Esempio.ImportoRestoCT< 0тогда
report(""+Sample.Subconto1+" valore negativo "+Sample.SumRemainingCT);
endif;
LineaTZ = TZ.Add();
Riga TK.Controparte = Selection.Subconto1;
LineTZ.sum = Selection.SumRemainingCT;//Selection.SumRemainingCT;
LineTZ.sumRegl = Campionamento.SumRemainingCT;//Sampling.SumRemainingCT;
Riga TK.Data documento di calcolo = Selezione.Data documento di calcolo;
Riga TK.Numero documento di calcolo = Selezione.Numero documento di calcolo;
LineTZ.PaymentDate = TD;
FineCiclo;
OutData = Nuova struttura;
OutgoingData.Insert("Data", DataCorrente());
OutgoingData.Insert("CalculationsWithPartners", TK);
OutgoingData.Insert("Tipo operazione", "Saldo debiti verso fornitori");
OutgoingData.Insert("Commento", "Generato sull'accredito sul conto 76.05");
report("76.05 Inizio CREDITO");
UploadByRule(, OutgoingData, "Inserimento dei saldi per la liquidazione reciproca_7605Credit");

Allo stesso modo eseguiamo la stessa operazione per i restanti account necessari (la loro descrizione, così come la regola già pronta, si trova in allegato).

3) Passiamo alla creazione delle regole di conversione degli oggetti; per fare ciò apriamo la scheda “Regole di conversione degli oggetti”. Aggiungiamo una nuova regola lì con il nome "Saldi di input per mutuo regolamento_7605Credito", lasciamo vuoto l'oggetto di origine, impostiamo l'oggetto destinatario sul documento "Inserisci saldi" e nella scheda Impostazioni rimuoviamo il flag "Cerca l'oggetto destinatario tramite il identificatore interno dell'oggetto di origine".

Nel gestore eventi "Prima del caricamento" scriveremo il seguente codice:

Genera NewNumberOrCodeIfNotSpecified = true;

Nel gestore eventi "Dopo il caricamento" scriveremo:

eseguire(algorithms.AfterLoadInputRemainings);

eseguirà un algoritmo con il seguente contenuto:

valuta = Constants.RegulatedAccountingCurrency.Get();
oggetto.Proprietario = SessionParameters.CurrentUser;
oggetto.organizzazione=parametri.organizzazione;
per ogni pagina dal ciclo object.calculationspartners
Page.SettlementDocument = Directories.Counterparty Agreements.empty link();
PageCurrencySettlements = valuta;
se ValueFilled(page.counterparty.partner) allora
p.partner = p.controparte.partner;
Altrimenti
partner = Directory.Partners.FindByName(page.counterparty.Name);
se la scrivania<>Indefinito e scrivanie<>Directory.Partners.emptylink() quindi
p.partner = scrivania;

oggetto2.Partner = scrivania;
oggetto2.Write();
Altrimenti
eseguire(algoritmi.AddPartner);
endif;

endif;

fine ciclo;

Questo algoritmo verrà eseguito sul lato ricevitore (BP). Oltre al trasferimento dei saldi per i regolamenti reciproci, c'è il compito di trasferire le controparti, ma l'UT utilizza partner, quindi dopo aver generato il documento, controlliamo se tutte le controparti e i partner sono nel database del ricevente, se per qualche motivo non sono presenti; , quindi li aggiungiamo.

L'aggiunta dei contraenti implementerà la regola di conversione per la directory “Controparti” che potrai creare analogamente alla regola precedente, ma consentendo al sistema di confrontare i campi necessari;

Per i partner è stato creato un algoritmo che viene eseguito dal lato ricevente.

Per eseguire l'algoritmo sul lato ricevitore, è necessario selezionare il flag "Utilizzato durante il caricamento" nell'angolo in alto a destra della finestra dell'algoritmo (durante la modifica).

Di seguito è riportato il codice per l'algoritmo "Aggiungi partner":

nPartner = Directory.Partners.CreateItem();
nPartner.Name = page.controparte.nome;
nPartner.Comment = "Creato durante il caricamento da BP";
nPartner.NameFull = page.counterparty.NameFull;
nPartner.Supplier = ?(find(page.counterparty.AdditionalInformation,"Fornitore")>0,true,false);
nPartner.Client = ?(find(page.counterparty.AdditionalInformation,"Client")>0,true,false);
AltreRelazioni = ?(find(page.counterparty.AdditionalInformation,"Altro")>0,true,false);
npartner.Write();
p.partner = npartner.link;
controparte = Directories.Counterparties.FindByName(page.counterparty.Name);
oggetto2 = controparte.GetObject();
oggetto2.Partner = npartner.link;
oggetto2.Write();

Torniamo alla regola di conversione degli oggetti. Ora dobbiamo stabilire la corrispondenza tra i campi sorgente e destinazione; questo poteva essere fatto immediatamente prima di scrivere il codice. Per poter confrontare i campi, nella parte inferiore della tabella è presente un pulsante per richiamare la procedura guidata “Sincronizzazione Proprietà”. In questa procedura guidata possiamo mappare i campi oppure lasciarli entrambi senza origine e senza destinazione. Nel nostro caso, lasciamo tutti i campi e i PM senza fonte.

Dopo aver selezionato i campi obbligatori nel TC inferiore, per ogni campo impostiamo un flag nella colonna “Ottieni da dati in entrata”. Questo flag indica che il sistema cercherà questo campo nei dati in entrata. È importante che il nome del campo corrisponda al nome nei dati in arrivo, altrimenti verrà visualizzato un messaggio che informa che il campo non è stato trovato.

Il testo non descrive tutte le sfumature del processo.