Come configurare smartphone e PC. Portale informativo
  • casa
  • OS
  • Connessione Com in 1s. Tre pilastri per lavorare con oggetti COM

Connessione Com in 1s. Tre pilastri per lavorare con oggetti COM


Parole chiave: COM, connessione, esterno, OLE, automazione, connessione, ComConnector, Srvr

Quando viene utilizzato per accedere ai dati 1C: connessione COM Enterprise 8.0, ci sono i seguenti vantaggi rispetto all'utilizzo del server di automazione:

  1. Stabilimento della connessione più veloce, poiché non è necessario creare un processo separato del sistema operativo e tutte le azioni vengono eseguite all'interno del processo chiamante;

  2. Accesso più rapido alle proprietà e ai metodi di 1C: oggetti Enterprise, poiché l'organizzazione della chiamata non richiede l'organizzazione della comunicazione tra processi;
  3. Minor consumo di risorse del sistema operativo.

In generale, lavorare con 1C: Enterprise 8.0 tramite una connessione COM è simile a lavorare con 1C: Enterprise in modalità server di automazione. Le principali differenze sono le seguenti:

  1. Nel caso del server di automazione, viene avviata un'applicazione 1C: Enterprise 8.0 completa e, nel caso di una connessione COM, viene avviato un server COM in-process relativamente piccolo.

  2. Quando si lavora tramite una connessione COM, la funzionalità non è disponibile in un modo o nell'altro relativa all'organizzazione dell'interfaccia utente di 1C: Enterprise 8.0;
  3. Quando la connessione COM funziona, il modulo applicativo di configurazione 1C: Enterprise 8.0 non viene utilizzato. Il suo ruolo quando si lavora con una connessione COM è svolto da un modulo di connessione esterno.

1.1 Procedura per stabilire una connessione COM

Per organizzare l'accesso ai dati 1C: Enterprise 8.0 tramite una connessione COM, viene eseguita la seguente sequenza di azioni:

  1. viene creato un oggetto COM con l'identificatore V8.COMConnector, con l'aiuto del quale viene stabilita la connessione;

  2. viene chiamato il metodo Connect dell'oggetto V8.COMConnector creato in precedenza. Il metodo Connect restituisce un riferimento a un oggetto di connessione COM con un 1C: infobase Enterprise 8.0;
  3. l'oggetto di connessione COM ottenuto viene utilizzato per accedere ai metodi, alle proprietà e agli oggetti consentiti dell'infobase con cui viene stabilita la connessione.

Importante! A causa della mancanza di un'interfaccia utente in una connessione COM, non tutti gli oggetti, proprietà e metodi possono essere utilizzati in una connessione COM.

1C: Oggetti aziendali accessibili dall'esterno tramite connessione COM:

  1. Variabili e procedure/funzioni esportate del modulo di join esterno

  2. Variabili esportate e procedure/funzioni dei moduli comuni
  3. Includere ed escludere interi moduli impostando le proprietà dei moduli condivisi

  4. Includere ed escludere frammenti di moduli comuni utilizzando il preprocessore
  5. Il contesto globale di 1C: Enterprise 8.0, ad eccezione degli oggetti rigidamente associati all'applicazione client (TextDocument, TabularDocument, ...)

1.2 Modulo di connessione esterno

Come già notato, le responsabilità del modulo applicativo quando si lavora tramite una connessione COM sono eseguite dal modulo di connessione esterno. Questo modulo può avere gestori di procedure per l'evento AtSystemWorkingSystemWorking() e SystemWorkingCompletion(), in cui è possibile inserire rispettivamente le azioni eseguite durante l'inizializzazione e la terminazione della connessione.

Procedure, funzioni e variabili globali definite nel modulo di connessione esterna con la parola chiave Export diventano, come nel caso del modulo applicativo, parte del contesto globale.

1.3 Moduli comuni

Per i moduli comuni vengono introdotte le proprietà "Client", "Server" e "ExternalConnection". Hanno lo scopo di definire nella configurazione l'utilizzo dei moduli nella versione client-server e nella modalità di connessione COM.

1.4 Oggetto "V8.COMConnector"

L'unico compito risolto dall'oggetto COM V8.COMConnector è stabilire una connessione COM con l'infobase 1C: Enterprise 8.0. È possibile stabilire un numero illimitato di connessioni con una singola istanza dell'oggetto V8.COMConnector. L'oggetto V8.COMConnector ha un unico metodo Connect progettato per stabilire una connessione COM con l'infobase 1C: Enterprise 8.0.

<СтрокаСоединенияИБ>

La stringa di connessione IB è una catena di frammenti della forma Parametro = Valore. I frammenti sono separati l'uno dall'altro dai simboli ";". Se il valore contiene caratteri di spaziatura, deve essere racchiuso tra virgolette (").

Parametri comuni:

Utente - nome utente;
Pwd - password.

Il parametro è definito per la variante del file:

File - directory dell'infobase.

Per la versione client-server i parametri sono definiti:

Srvr - 1C: nome del server aziendale;
Ref è il nome dell'infobase sul server.

Il metodo Connect stabilisce una connessione COM con l'infobase 1C: Enterprise 8.0 e restituisce un riferimento all'oggetto connessione COM.

// Crea un oggetto connettore
V8 = Nuovo COMObject ("V8.COMConnector");
// crea un oggetto di connessione COM
Connection = V8.Connect ("File =" "c: \ InfoBases \ Trade" "; Usr =" "Director" ";")

1.5 Oggetto "Connessione COM"

La connessione COM con 1C: l'infobase aziendale fornisce l'accesso completo al suo contesto globale (vedere "Contesto di esecuzione del modulo del programma"). Pertanto, una connessione COM può avere come metodi: costanti di sistema, valori di oggetti specificati nel configuratore, il cui accesso viene effettuato tramite gestori (ad esempio costanti, enumerazioni, libri di riferimento, documenti, giornali di documenti, report, elaborazioni, grafici dei tipi di caratteristica, piani conti, grafici dei tipi di calcolo, registri), nonché le variabili dichiarate nel modulo di connessione esterna con la parola chiave Export.

Inoltre, la connessione COM dispone di un metodo NewObject aggiuntivo che è possibile utilizzare per creare valori di tipi specifici.

tz = Connessione. NewObject ("Tabella dei valori");

Metodo stringa Consente di ricevere rappresentazioni di stringa di 1C: valori Enterprise.

Visualizza = Connection.String (Data.UniqueIdentifier ());

1.6. Caratteristiche di lavorare con la connessione COM

In Automation e nella connessione COM, TRUE e FALSE hanno rispettivamente i valori -1 (meno uno) e 0.

È possibile organizzare un pool di connessioni COM. Allo stesso tempo, sul server ricevente sul server 1C: Enterprise, vengono creati in anticipo diversi oggetti di connessione COM e ci vuole ancora meno tempo per stabilire una connessione, poiché non è necessario creare un nuovo oggetto.

È stato implementato un nuovo oggetto QueryBuilder, progettato per generare testi di query in base alle impostazioni specificate. Questo oggetto supporta la funzionalità del generatore di report, che non è correlata all'output di un report su un foglio di calcolo e ad altre attività relative all'interfaccia utente. Questo oggetto può essere utilizzato sul server 1C: Enterprise e in una connessione COM.

L'uso di oggetti COM è disponibile quando la lingua incorporata è in esecuzione sul server 1C: Enterprise.

Gli errori COM vengono convertiti in eccezioni della lingua incorporata.

Se la configurazione tenta di creare un oggetto non valido, ad esempio un foglio di calcolo, in un modulo di connessione esterno, in un modulo comune o in un modulo oggetto, la connessione COM potrebbe non essere stabilita o potrebbe essere interrotta come eccezione.

Quando vogliamo vedere i dati di più tabelle contemporaneamente, ad es. per raccogliere più tabelle in una, nasce il concetto di unire le tabelle e le relazioni tra di esse. Ci sono quattro tipi di connessioni:

  • sinistra;
  • Giusto,
  • interno;
  • completare.

Considereremo ogni tipo su un esempio astratto. Ci sono 2 tabelle, nella prima memorizziamo le informazioni descrittive sulla nomenclatura, nella seconda sui suoi resti:

Per ottenerne uno da queste tabelle, dobbiamo indicare esplicitamente quali campi collegheremo, in base a quale condizione e tipo. Ora sarà più chiaro.

Connessione sinistra

Usando il join sinistro, diciamo al sistema che di conseguenza vogliamo vedere tutti i record della tabella di sinistra e i record di destra che soddisfano la condizione di connessione. Supponiamo di collegare le tabelle dal campo del prodotto con la condizione uguale, quindi otteniamo una tabella del modulo:

Testo.Richiesta =
"SELEZIONARE
| Nomenclatura Prodotto,
| Nomenclatura.Colore AS Colore
| Residui.Colore COME Colore
| Resti. Importo
| DA

";

Per la sedia non sono state trovate mappature dalla tabella dei residui, quindi i campi sono stati riempiti con valori NULL, che devono essere elaborati con la funzione ISNULL, vedi Funzioni del linguaggio di interrogazione 1C 8.

Il join sinistro funziona più o meno come un ciclo in un ciclo: viene preso il primo record della tabella di sinistra e tutti i record di destra vengono scansionati per vedere se la condizione del collegamento è soddisfatta. Quindi viene preso il secondo record dalla tabella di sinistra e così via. Se improvvisamente la condizione del collegamento è soddisfatta da diversi record della tabella di destra, verranno aggiunte diverse righe alla tabella risultante (in base al numero di collegamenti riusciti).Come puoi vedere, la tabella risultante non è informativa, i dati non lo fanno riflettono la vera essenza, quindi è meglio collegare queste tabelle in due campi: Prodotto e Colore, solo che questa volta tratteremo i NULL:

Testo.Richiesta =
"SELEZIONARE
| Nomenclatura Prodotto,
| Nomenclatura.Colore,
| IS NULL (Balance.Quantity, 0) AS Quantity
| DA
| Nomenclatura AS Nomenclatura
| LEFT JOIN Rimane COME Rimane
| Software Nomenclature.Product = Balances.Product

Connessione giusta

L'incrocio di destra non è sostanzialmente diverso dall'incrocio di sinistra. Se scambi le tabelle, il join destro si trasformerà in quello sinistro, inoltre, quando si utilizza il costruttore, il sistema stesso converte tutti i join di destra in quelli di sinistra.

Connessione interna

Usando un inner join, diciamo al sistema che di conseguenza vogliamo vedere solo quei record che soddisfano la condizione di collegamento sia dalla tabella di destra che da quella di sinistra. Pertanto, il numero di record risultanti sarà inferiore o uguale al numero di record della tabella più corta che partecipa al join. Applichiamo un inner join ai campi Product e Color delle nostre tabelle:

Testo.Richiesta =
"SELEZIONARE
| Nomenclatura Prodotto,
| Nomenclatura.Colore,
| Saldi.Quantità COME Quantità
| DA
| Nomenclatura AS Nomenclatura
| COLLEGAMENTO INTERNO Residui AS Residui
| Software Nomenclature.Product = Balances.Product
| And Nomenclature.Color = Remains.Color ";

Connessione completa

Un join completo trasferirà al risultato tutti i record di entrambe le tabelle, quei record che soddisfano la condizione di collegamento verranno collegati, quei record che non soddisfano la condizione di collegamento verranno comunque visualizzati come risultato della query, ma con parte dei campi NULL . Full è come una connessione sinistra e destra in una.

Ci possono essere molti compiti su questo argomento, proviamo a risolverne uno. La nostra organizzazione è rivenditore di 2 fabbriche di mobili: "Zarya" e "Rassvet". L'assortimento con il costo di ciascuna delle fabbriche è memorizzato in tabelle diverse. È necessario redigere un unico listino prezzi, e portarvi i prodotti al prezzo più basso:

Applicheremo una connessione completa con una selezione di tutti i campi, collegheremo per prodotto:

Testo.Richiesta =
"SELEZIONARE
| Nomenclatura Zarya Prodotto AS Prodotto Zarya,
| Nomenclatura Alba Prezzo COME Prezzo Alba,
| NomenclaturaDawn.Prodotto AS ProdottoDawn,
| Nomenclatura Dawn Price AS Price Dawn
| DA

Questo non è esattamente ciò di cui abbiamo bisogno, combiniamo il campo del prodotto in uno ed elaboriamo i NULL:

Testo.Richiesta =
"SELEZIONARE
// IS NULL è stato discusso nella sezione sulle funzioni del linguaggio di query
// se il prezzo non è definito, inizializzalo
// perché 1.000.000 vedere la spiegazione di seguito
| IS NULL (NomenclatureDawn.Price, 1000000) COME PriceDawn,
| ISNULL (NomenclatureDawn.Price, 1000000) AS PriceDawn
| DA
| Nomenclatura Dawn AS Nomenclatura Dawn
| CONNESSIONE COMPLETA Nomenclatura Dawn AS Nomenclatura Dawn
| Software NomenclatureZarya.Tovar = NomenclatureRassvet.Tovar ";

Resta solo da scegliere il prezzo minimo. Il testo della richiesta finale sarà simile a questo:

Testo.Richiesta =
"SELEZIONARE
| C'È NULL (NomenclatureDawn.Product, NomenclatureDawn.Product) COME prodotto,
| SCELTA
| QUANDO ISNULL (NomenclatureDawn.Price, 1000000)> ISNULL (NomenclatureDawn.Price, 1000000)
| ALLORA È NULL (NomenclaturaDawn.Prezzo, 1000000)
| ELSE IS NULL (Nomenclatura Zarya.Prezzo, 1000000)
| FINE COME Prezzo
| DA
| Nomenclatura Dawn AS Nomenclatura Dawn
| CONNESSIONE COMPLETA Nomenclatura Dawn AS Nomenclatura Dawn
| Software NomenclatureZarya.Tovar = NomenclatureRassvet.Tovar ";

Se il prezzo non è definito (NULL), allora deve essere inizializzato con un valore, altrimenti l'operazione di confronto per più / meno fallirà con un errore. inizializziamo il prezzo con un importo irrealisticamente grande in modo che "perda" nell'operazione di confronto, perché in base all'affermazione del problema, selezioniamo il prezzo più basso.

← Funzioni del linguaggio di interrogazione 1C 8 | Join in 1C 8 query →

Una delle opzioni per lo scambio di dati tra le basi 1C è lo scambio tramite una connessione COM.

Utilizzando una connessione COM, è possibile connettersi a un altro da un database 1C e leggere o scrivere dati. Questo metodo può essere utilizzato sia nelle versioni client-server dei database che nei database di file. In questo articolo analizzeremo esempi di questo tipo di connessioni. Gli esempi utilizzano la piattaforma 8.2.

È possibile creare due tipi di oggetti COM per un'applicazione 1C. Questo V82.Applicazione e Connettore V82.COM... In caso di V82.Applicazione viene lanciata quasi un'istanza a tutti gli effetti dell'applicazione 1C. in caso di utilizzo Connettore V82.COM si avvia una piccola parte del server.
La velocità operativa è maggiore in questo caso, ma alcune funzioni potrebbero non essere disponibili. In particolare, lavorare con form e con moduli comuni per i quali non è impostata la proprietà di lavorare con join esterni. Per lo più devi usare Connettore V82.COM e solo in caso di mancanza di funzionalità V82.Applicazione... La differenza di velocità può essere particolarmente evidente su database di grandi dimensioni.

Quindi iniziamo

  1. Creiamo un oggetto COM
    • per V82.Applicazione Connessione = Nuovo COMObject ("V82.Application");
    • per Connettore V82.COM Connessione = Nuovo COMObject ("V82.COMConnector");
  2. Formiamo una stringa di connessione
    • per la versione server del database ConnectionString = "Srvr =" "ServerName" "; Ref =" "BaseName";
    • per la versione del file del database ConnectionString = "File =" "Path to Base" "; Usr = Nome utente; Pwd = Password";
  3. Ci colleghiamo alla base Tentativo di connessione = Connetti. Connetti (stringa di connessione); Messaggio di eccezione = Nuovo messaggio all'utente; Messaggio. Text = + DescriptionErrors (); Messaggio. Per segnalare(); Fine dei tentativi;
  4. Rompiamo la connessione con la base Connessione = Indefinito;

    Per oggetto V82.Applicazioneè imperativo terminare la connessione, altrimenti resterà sospesa una sessione non terminata, che dovrà poi essere cancellata manualmente. In caso di Connettore V82.COM la connessione viene terminata automaticamente al termine della procedura in cui è stata effettuata la connessione.E c'è un altro piccolo momento.

    Per l'utente sotto il quale viene effettuata la connessione, la casella di controllo "Richiedi conferma alla chiusura del programma" nelle sue impostazioni deve essere disabilitata.

Ora mettiamo insieme tutto il codice.

Connessione = Nuovo COMObject ("V82.Application"); // Connessione = Nuovo COMObject ("V82.COMConnector"); ConnectionString = "Srvr =" "Server1C" "; Ref =" "MyBase" "; Usr = Petya; Pwd = 123"; // ConnectionString = "File =" "С: \ MyBase" "; Usr = Petya; Pwd = 123"; Tentativo di connessione = Connetti. Connetti (stringa di connessione); Messaggio di eccezione = Nuovo messaggio all'utente; Messaggio. Testo = "Impossibile connettersi al database"+ DescrizioneErrori (); Messaggio. Per segnalare(); Fine dei tentativi; Connessione = Indefinito;

Per tipo di connessione V82.Applicazione il metodo viene utilizzato per un oggetto COM che è stato originariamente creato e per Connettore V82.COM il metodo viene applicato alla connessione. ulteriore lavoro con la richiesta viene eseguito utilizzando strumenti 1C standard. nel codice appare così:

Richiesta = Connessione. NuovoOggetto ("Richiesta"); // per Connettore V82.COM Richiesta = Connessione. NuovoOggetto ("Richiesta"); // per V82.Applicazione Inchiesta. Testo = "SELEZIONA" | Posizioni delle organizzazioni Codice, | Posizioni delle organizzazioni.| DA | Directory. Posizioni delle organizzazioni AS Posizioni delle organizzazioni "; Risultato = Richiesta. Correre (); Campione = Risultato. Selezionare() ; Durante il campionamento. Successivo () Ciclo Fine del Ciclo;

Per la versione 1C: Enterprise 8.3, tutto rimane invariato, tranne che quando si creano oggetti COM, è necessario utilizzare "Connettore V83.COM" o "V83.Applicazione".

Uno dei modi per trasferire dati da una configurazione 1C a un'altra è una connessione software tramite COM. Molte aziende utilizzano diverse basi, tra le quali devono esistere determinate connessioni e dipendenze. Se è necessario non solo trasferire dati, ma anche eseguire determinate elaborazioni di dati, una connessione COM sarà il meccanismo ottimale. La capacità di analizzare i dati da un altro database 1C è utile a qualsiasi sviluppatore.

Ci colleghiamo via COM alla base 1C

Per implementare una connessione COM in 1C, viene utilizzato un meccanismo speciale chiamato COMConnector. Questo oggetto è installato con la piattaforma e viene utilizzato per collegare le infobase. Va notato che per le versioni 8.2 e 8.3 vengono utilizzati nomi diversi di oggetti - "V82.COMConnector" e "V83.COMConnector", rispettivamente.

Ricorda che una licenza viene sprecata per il tempo di una connessione COM alla base: non dovresti lasciarti trasportare dall'esecuzione simultanea di più connessioni. Ciò è particolarmente importante per le organizzazioni che dispongono di un numero limitato di licenze. Questo problema può essere risolto con l'aiuto di attività pianificate eseguite durante l'assenza di connessioni utente attive all'infobase.

Per potersi connettere ad un altro database e richiedere le informazioni necessarie, è necessario conoscere i seguenti dati:

  1. Di che tipo è: file o client-server;
  2. Dove si trova;
  3. Con quale nome e password puoi inserirlo;
  4. A quali dati sei interessato.

Dai primi tre punti per implementare una connessione COM, è necessario formare una stringa di parametri. A seconda del tipo di sicurezza delle informazioni, differirà nell'aspetto. Utilizzando la stringa risultante, viene stabilita una connessione, con l'aiuto della quale è possibile raccogliere dati da un altro database per l'analisi e l'elaborazione con qualsiasi metodo.

ConnectionParametersFileIB = "File =" "Path_to_base" "; Usr =" "Nome_utente" "; Pwd =" "Password" ""; ConnectionParametersClientServerIB = "Srvr =" "Server_Name" "; Ref =" "Database_name" "; Usr =" "User_name" "; Pwd =" "Password" "";

La funzione di connessione è semplice e non dovrebbe sollevare alcuna domanda se tutti i parametri sono corretti. Per velocizzare il debug e analizzare possibili errori, è meglio racchiudere la connessione in un costrutto Attempt. La funzione restituirà un valore del tipo "oggetto COM", con il quale funzionerà, ricevendo i dati necessari.

& AtServer Function ConnectKbase() exportConnectionParametersIB = "File =" "E: \ base 1s \ ERP" "; Usr =" "Amministratore" "; Pwd =" "1" ""; V83COMCon = Nuovo COMObject ("V83.COMConnector"); Tentativo di restituire V83COMCon.Connect; Rapporto eccezioni (DescriptionErrors ()); Rimborso non specificato; Fine dei tentativi; EndFunction

Attraverso una connessione COM, puoi non solo selezionare i dati, ma anche aggiungerli al database a cui ti stai connettendo. Ricorda che ci sono 4 tipi di dati primitivi che possiamo trasferire tramite oggetti COM. Altri tipi dovranno essere specificati utilizzando le funzioni di ricerca integrate della piattaforma. Si noti che le funzioni globali della piattaforma vengono chiamate anche tramite una connessione COM.

Riceviamo dati dal database 1C

Dopo aver ricevuto l'oggetto desiderato, è necessario leggere i dati da un altro database. Per fare ciò, applichiamo una richiesta tramite una connessione COM in 1C 8.3 utilizzando il valore ricevuto del tipo "oggetto COM" dalla funzione. È importante prima connettersi al database, quindi eseguire la richiesta. L'esecuzione avviene tramite il metodo NewObject specificando il tipo di oggetto come parametro sotto forma di stringa - "Richiesta".

& AtServer Procedura TestCOMOnServer () Connection = ConnectKobase (); IfTypeZnch (Connessione) Tipo ("Non definito") Then RequestBPZO = Connection.NewObject ("Richiesta"); QueryBPZO.Text = "SELECT first 15 | DirectoryUser.Name AS Name | FROM | Directory.users ASDirectoryUser"; Recupera = QueryBPZO.Run().Seleziona (); Mentre Sample.next () ciclo Report (Sample.Number); Fine del ciclo; Finisci se; Fine della procedura>

Ad esempio, per ottenere informazioni sugli utenti di un determinato reparto, imposteremo una condizione nella richiesta tramite parametri. Un parametro sarà di tipo semplice - una stringa e un dipartimento - un collegamento a un elemento del catalogo "Struttura aziendale". Il risultato della query è una tabella con i campi elencati dello stesso tipo di quelli presenti nel database a cui è stata effettuata la connessione COM. Se hai bisogno di convertirli in altri tipi, usa le funzioni standard della piattaforma:

  • Linea();
  • Numero();
  • Data().
RequestBPZO = Connection.NewObject ("Richiesta"); QueryBPZO.Text = "SELECT first 15 | DirectoryUser.Name AS Name | FROM | Directory.Users LIKE DirectoryUser I WHERE | DirectoryUser.Division = & NecessaryDivision | AND DirectoryUser.Name like" "%" "+ & DesiredName +" "%" "" ; RequestBPZO.SetParameter ("NecessaryUnit", Connection. References. EnterpriseStructure.FindByCode ("00-000023")); RequestBPZO.SetParameter ("Nomenecessario", "Ekaterina"); Recupera = QueryBPZO.Run().Seleziona (); Mentre Selection.next() esegue il ciclo Report (Selection.Name); Fine del ciclo;

Se è necessario trasferire un array alla base per la selezione di più parametri, ad esempio i reparti, viene utilizzato anche il comando NuovoOggetto. Allo stesso modo, puoi trasferire una lista o una tabella di valori, riempiendoli con elementi di un'altra base tramite una connessione. Tutti i metodi esistenti di oggetti e meccanismi della piattaforma sono disponibili per la ricerca.

RequestBPZO = Connection.NewObject.("Richiesta"); QueryBPZO.Text = "SELECT first 15 | DirectoryUser.Name AS Name | FROM | Directory.Users LIKE DirectoryUsers I WHERE | DirectoryUser.Division B (& NecessaryDivision) | AND DirectoryUser.Name like" "%" "+ & DesiredName +" " %" ""; OU Array = Connection.NewObject ("Array"); Suddivisioni Array.Add (Connection. References. EnterpriseStructure.FindByCode ("00-000023")); Suddivisioni Array.Add (Connection. References. EnterpriseStructure.FindByCode ("00-000038")); Suddivisioni Array.Add (Connection. References. EnterpriseStructure.FindByCode ("00-000046")); RequestBPZO.SetParameter ("NecessaryUnit", ArrayUnits); RequestBPZO.SetParameter ("Nomenecessario", "Ekaterina"); Recupera = QueryBPZO.Run().Seleziona (); Mentre Selection.next() esegue il ciclo Report (Selection.Name); Fine del ciclo;

Quando si trasferiscono documenti o elementi di catalogo, sorge sempre la domanda sul controllo del trasferimento di un determinato oggetto. Con l'aiuto delle connessioni COM, puoi risolvere tali problemi attraverso un identificatore univoco. È necessario trovare un oggetto nel database collegabile tramite l'identificatore dell'IB corrente utilizzando la funzione "GetLink" utilizzando l'identificatore sotto forma di stringa. Se non ne trovi uno, puoi crearlo utilizzando una connessione COM.

StrIdent = String (Reference books.Users.FindByCode ("00-0000313"). UniqueIdentifier ()); Se NOT ValueFilled (Connection.References.Users.GetRef (Connection.NewObject ("UniqueIdentifier", StrIdent))) allora NewUser = Connection.References.Users.CreateItem (); NewUser.Name = Directory.Users.FindByCode ("00-0000313"). Nome; NewUser.Physical = Libri di riferimento.Users.FindByCode ("00-0000313"). Persona fisica; NuovoUtente.Scrivi (); Finisci se;

Inoltre, una connessione COM ha il diritto di utilizzare procedure e funzioni dai comuni moduli 1C con la proprietà "Connessione esterna" abilitata. Oltre a questa condizione, la funzione o la procedura richiamata deve essere esportabile e non includere azioni interattive eseguite sul server. In caso contrario, verrà visualizzato un errore relativo all'operazione non valida.

Composto..; VariableOfFunction = Connessione ..; chiamata funzione> nome modulo comune> chiamata procedura> nome modulo comune>

Le possibilità di connessione esterna con un'altra base in 1C sono piuttosto ampie e possono consentire di eseguire molte attività. È importante essere in grado di valutare correttamente il toolkit e scegliere la soluzione ottimale. Nella maggior parte dei casi, questa abilità appare solo con l'esperienza o studiando esempi del lavoro di specialisti esperti.

Principali articoli correlati