Motta data via com-tilkobling fra 1s. V8: COM-tilkobling. Motta og sammenligne oppregning via COM-tilkobling

Spørsmål: Parsing av et nettsted ved hjelp av COM IE 11


God dag.!
Spørsmålet er smertelig godt kjent, du må ta informasjonen fra nettstedet. Men det er nyanser:
1. Det er ingen måte å gå direkte til autorisasjonssiden (gå først til hjemmesiden, klikk på Logg inn-lenken, få autorisasjonsskjemaet og først deretter logge inn).
2. Du må besøke nettstedet via søkelinje søk etter data, les dem og søk igjen (dataene kan være på russisk og engelsk, dvs. hvis dataene for søk er på russisk, må du søke i den "russiske versjonen" av nettstedet, og dette er en annen lenke til en annen side. Det er det samme problemet med engelsk).

Etter hvert:
- gå til hjemmesiden - logg inn - se etter data - (gå til en annen versjon av nettstedet, om nødvendig) - ta det.

Problem:
Data leses ikke inn i "dokument"-egenskapen når du følger en lenke.
Det skjer på to punkter:
- når vi følger lenken for å logge inn (dette er ikke en knapp, men bare en lenke);
- når vi endrer språk på siden (også en lenke).

Merk
Hvis du, før du følger en lenke på autorisasjonsstadiet, mottar en lenke, lukker com og åpner den igjen med overgangen gjennom IE.navigate("link")-metoden, så går dataene i "document"-egenskapen normalt. Men du vil ikke kunne gjøre det samme når du endrer språket på nettstedet, fordi... Jeg må logge på igjen og pluss at jeg ikke vil løse dette problemet akkurat slik.

Her er koden:

&På klientprosedyren SetWaitingIE(IE, SecondCall=False) Hvis IKKE IE.Busy Da D = CurrentDate() + 3; Mens D >= CurrentDate() Loop If IE.Busy Then Abort; slutt om; EndCycle; slutt om; Mens IE.Busy Loop EndLoop; Mens IE.ReadyState< 4 Цикл КонецЦикла; Попытка Если IE.Document.ReadyState = Null Тогда IE.Refresh(); УстановитьОжиданиеИЕ(IE); КонецЕсли; Пока IE.Document.ReadyState <>"fullfør" Cycle EndCycle; Unntak Hvis SecondCall deretter returnerer; Else Link = IE.LocationURL; IE.Avslutt(); IE = GetCOM("InternetExplorer.Application"); IE.Naviger(Link); SetExpectIE(IE, True); slutt om; Sluttforsøk; EndProcedure &OnClient Function PerformUserAuthorization(IE, Link, Login, Password, Authorized=False, SC=0) Attempt Elements = IE.Document.GetElementsByName("brukernavn"); Hvis Elements.Length = 1 Så For hver El Of Elements Loop El.Value = Logg inn; EndCycle; slutt om; Elements = IE.Document.GetElementsByName("passord"); Hvis Elements.Length = 1 Så For hver El Of Elements Loop El.Value = Passord; EndCycle; slutt om; IE.Document.GetElementById("ID").Klikk(); SetWaitingIE(IE); Autorisert = Sant; Unntak Hvis CN > 3 Returner deretter False; slutt om; IE.Avslutt(); IE.Naviger(Link); SetWaitingIE(IE); MF = MF + 1; Hvis PerformUserAuthorization(IE, Link, Login, Password, SCH) Returner deretter True; slutt om; Sluttforsøk; Retur autorisert; EndFunction &OnClient-prosedyre Last opp(kommando) SpTables = GetListTablesForUpload(); Hvis SpTables = False Returner deretter; slutt om; IE = GetCOM("InternetExplorer.Application"); For hver rad fra SpTable.SOURCE_LIST Syklus RA = Rad.ID; Ressurs = String.RESOURCE; IE.Naviger(Ressurs); SetWaitingIE(IE); Prøv hvis Line.NEW_PAGE_IN_LOGIN = 1 Then Classes = IE.Document.GetElementsByClassName("ClassName"); Hvis Classes.Length = 1 Så for hver klasse fra klasser Loop Resource = Class.All(0).Href; Avbryte; EndCycle; Prøver IE.Quit(); IE = IE.Naviger(Ressurs); SetWaitingIE(IE); Unntaksrapport("Tilkobling til nettstedet "" +String.NAME + "" mislyktes!"); Avbryte; Sluttforsøk; Ellers Report("Tilkobling til nettstedet "" +String.NAME + "" mislyktes!"); Avbryte; slutt om; slutt om; If NOT PerformUserAuthorization(IE, Resource, String.LOGIN, String.PASSWORD) Then Report("Brukerautorisasjon på nettstedet "" + String.NAME + "" er ikke fullført!"); Avbryte; slutt om; Ressurs = IE.LocationURL; Liste over personer = SpTable.FACE_CODES.FindLines(New Structure("SOURCE", RA)); ListNotFound = Ny Array; For hver person fra listen over personer Cycle PersonName = Person.NAME_IN_SITE; Dette er russisk = CharacterCode(PersonName, 1) >= 1040; TechResource = ?(Dette er russisk, StrReplace(Resource, "en_US", "ru_RU"), StrReplace(Resource, "ru_RU", "en_US")); Hvis TekResurs<>IE.LocationURL Deretter RootClasses = IE.Document.GetElementsByClassName("ClassName"); Hvis RootClasses.Length = 1 Så For hver RootClass Fra RootClasses Loop Classes = RootClass.Children; Avbryte; EndCycle; AmGroup = False; RuGroup = False; For hver klasse fra klasser Loop Hvis HPreg(Class.ClassName) = "dropdown-header" Da AmGroup = Finn(Class.InnerText, "Americans") > 0; RuGroup = Finn(Class.InnerText, "Europa") > 0; ElseIf HPreg(Class.ClassName)<>"selected" Then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 Then IE.Navigate(Class) .Alle(1).Href); SetWaitingIE(IE); Avbryte; slutt om; slutt om; EndCycle; slutt om; slutt om; IE.Document.GetElementById("ID").Value = Personnavn; FindButton = IE.Document.GetElementById("ID"); FindButton.Focus(); FindButton.Click(); Prøver å SetExpect(IE); //Kring de mottatte dataene ExceptionListNotFound.Add(Person); Fortsette; Sluttforsøk; EndCycle; Unntaksrapport("Feil:" + Symbols.PS + ErrorDescription()); Avbryte; Sluttforsøk; EndCycle; IE.Avslutt(); Slutt på prosedyre

Svar:

Emnet er veldig interessant, men personlig har jeg dessverre verken erfaring eller mulighet til å forstå dette problemet på en eller annen måte. Hvis du finner informasjon om dette emnet, vennligst del det.
--- En forening meldinger, 29. april 2016 ---

Slik jeg forstår det, er det ingen tilgang til SQL-databasen?

--- Meldingssammenslåing, 29. april 2016 ---

Vel, hvis parsing, hva slags tilgang da?

Spørsmål: COM-tilkobling 1C 8.3 - 1C 8.3 Er det mulig å legge inn feilsøkeren i forbindelsen


Jeg ønsket å spørre medlemmer av forumet om det i det hele tatt er mulig å feilsøke når jeg kobler til via en COM-tilkobling ved hjelp av behandling fra én database på plattform 8.3.6 (BP 3.0) til den eksterne tilkoblingsmodulen til en selvskrevet database (kjører også på plattform 8.3.6) og kalle eksporter fra den prosedyrer ved hjelp av behandling? Databasene er i dag filbaserte og ligger på én PC, men det er planlagt en serverversjon. Frem til dette tidspunkt brukte jeg konstruksjonene nedenfor for å overføre vilkårlig kode for utførelse over en COM-forbindelse, samt for å logge feil. Her er fragmenter av prosedyrer i den selvskrevne databasen i den eksterne tilkoblingsmodulen:

Funksjon ExecuteIn(CodeExecute, Auxiliary Parameter = "") Eksporter
Sikkerhetskontroll(); // Beskyttelse mot forsøk på å utføre ondsinnet kode ved ekstern tilkobling på vegne av en annen bruker Svar = "0" //Hvis ingenting må returneres, så hvis det ikke er noen feil i koden  //returnerer bare OK  //Fordi Den overførte koden kan inneholde feil, så vil vi pakke utføringen av den i et forsøk. Prøv å kjøre(CodeExecute); // Kjør koden som en streng på en annen datamaskin via en COM-tilkobling (Libra Base External Connection Module) Unntak   //hvis det er en feil, returner deretter teksten Response = ErrorDetailView(ErrorInfo()); EndAttempt ; Returner svar; EndFunction Funksjon TestConnection(InParameter, OutParameter) ExportSecurityCheck(); // Beskyttelse mot forsøk på å utføre ondsinnet kode ved ekstern tilkobling på vegne av en annen bruker. OutParameter = "Det er en forbindelse med vektbasen via COM-forbindelse!"; Returner True ; EndFunction
Fra BP 3.0 kjører jeg følgende fragment:
Forsøk
Com = New COMObject("V83.COMConnector"); Connection = Com.Connect ("File=""C:\1 c\Base_1C\Libra""; Usr=""ComExchange""; Pwd=""1"";"); TellUser("Test bestått! Det er en forbindelse til vektdatabasen"); Exception Error = ErrorDetailView(ErrorInfo()); TellUser("Det er ingen COM-forbindelse til Libra-basen! Detaljer"+Feil); Com=Udefinert ; Komme tilbake ; EndAttempt ; Ut = ""; I = "1"; If Connection.Communication Test(In, Out) Then TellUser("Kommunikasjonstest med skalakonfigurasjon vellykket! Svar: "+Out); Ellers TellUser("Kommunikasjonstest med skalakonfigurasjonen mislyktes! Svar: "+Ut); Slutt om ;
Jeg forstår selvfølgelig at det ikke vil være mulig å gå inn i Execute(CodeString1C8)-operatøren, men er det en slik mulighet når man kaller en ekstern modulprosedyre ekstern tilkobling fra hoveddatabasen Connection.TestConnections(In, Out) for å skrive inn koden i samme debugger-sesjon i Security Check()-funksjonen til anropsprosedyren deres?
Jeg har allerede sett på dokumentasjonen jeg kunne finne om dette problemet. Jeg angir alternativene for å aktivere feilsøking og bruddpunkter overalt i begge konfigurasjonene. Jeg lanserte begge konfiguratorene.
Er det til og med mulig i denne situasjonen å feilsøke Security Check()-prosedyren lenger på siden av den eksterne tilkoblingsmodulen?

Spørsmål: Feil IP-adresse i COM-tilkobling


Det er prosessering som overfører dokumenter via V83.ComConnector mellom servere. Server 1 (1C versjon 8.2.19.90) kobles alltid til Server 2 (versjon 8.3.8.2033). Tilkoblingslinjen inneholdt IP-adressen til server 2 og alt fungerte bra. På selve server 1 så jeg også den installerte plattformen som på server 2, versjon 8.3.9.2033 (hvis dette er viktig).

Problemet er at på Server 2 endret IP-adressen, behandlingen sluttet selvfølgelig å fungere, og når jeg la inn en ny IP i tilkoblingslinjen, genererer behandlingen en feil, hvis beskrivelse fortsatt er den gamle IP-en (!) og teksten "Et forsøk på å opprette en tilkobling var mislykket, fordi det nødvendige svaret ikke ble mottatt fra en annen datamaskin innen den nødvendige tiden, eller etablert forbindelse på grunn av feil svar fra en allerede tilkoblet datamaskin."

De restartet alt, tømte cacher osv., admins sverger at alt er ok fra deres side, du kan logge inn fra en server til en annen via RDP osv.

Hva kan være galt, hvordan kan jeg løse det? Jeg så over hele Internett og kunne ikke finne en slik situasjon!

Svar:() 100% sikker! Den andre dagen jeg prøver, som jeg skrev, ser jeg på det med en debugger, jeg opprettet til og med en dum enkeltcellebehandling for en tilkoblingstest, den feilen dukker opp og det er det

Spørsmål: COM-tilkobling til forskjellige versjoner


Hei alle sammen.
Jeg har en database ala "Consolidation", som samler forskjellige data fra forskjellige databaser og samler alt i en haug. Problemet er at du må koble til disse databasene via com, men de er forskjellige versjoner, så til slutt får jeg en feil som
Tilkoblingsfeil!(ExternalProcessing.TransferHistory.Form.Form.Form(12)) : Feil ved oppkalling av kontekstmetoden (Connect) : Et unntak oppstod (V83.COMConnector. 1 ): Mismatch mellom klient- og serverversjoner 1 C:Enterprise Client versjoner er forskjellige og server (8.3. 8.1964 - 8.3. 6.2332), klientapplikasjon: COM-tilkobling

Jeg setter opp en tilkobling, en annen faller av...

Jeg vet at du på en eller annen måte, gjennom komponenttjenesten, kan lage "dine egne klasser (koblinger)" for hver versjon og deretter lage et nytt COM-objekt som tilsvarer plattformversjonen av klassen ... kanskje jeg tar feil.

Hjelp meg å løse dette problemet...

Svar: Det var det... jeg fjerner spørsmålet..

Spørsmål: Com-feil ved behandling av fylling


Hallo.
8.2 Detaljhandel 1.
Jeg kobler til 8.1 Ikke en typisk konf.
Jeg kobler til databasen via com og prøver å lage et dokument, men når jeg kaller "CreateDocument()" eller "GetObject()" oppstår det en feil i prosedyren Behandler Fylling. se fig.

Jeg prøver det samme i selve 8.1-databasen, men det er ingen feil, og jeg går heller ikke inn i Fyllingsbehandling.
Hva kan være galt?

Svar: turboq, en skjevt skrevet dokumentmodul!

Lagt til etter 5 minutter
Hun heter ikke! Hun prøver å kompilere! Men siden når du kobler til via ComConnector, eksisterer ikke dialogmodusproblemet, kan dokumentmodulen ikke kompileres.
For slike tilfeller, når det er nødvendig å implementere arbeid med en dialog i en objektmodul, bruk instruksjoner til forbehandleren

Dette er ikke din feil, men en feil i dokumentmodulen i databasen du kobler til.

I databasen kjøres koden på klienten og det er en dialogmodus, så alt skjer uten feil

Ikke bruk ComConnector, V8.Application for tilkobling, da vil grensesnittet være tilgjengelig for deg

Lagt til etter 5 minutter
=======================================================================================================================
fra beskrivelsen av den eksterne tilkoblingen (SP) Jeg fremhevet med fet skrift hva du bør lese om ComConnections

Beskrivelse:

Generelt er det å jobbe med 1C:Enterprise 8 via en ekstern tilkobling som å jobbe med 1C:Enterprise i serverautomatiseringsmodus. De viktigste forskjellene er som følger:

  • Når det gjelder en automatiseringsserver, startes en fullverdig 1C:Enterprise 8-applikasjon, og i tilfelle en ekstern tilkobling startes en relativt liten COM-server i prosessen.
  • Ikke tilgjengelig når du arbeider via en ekstern tilkobling funksjonalitet, på en eller annen måte relatert til organiseringen av 1C:Enterprise 8 brukergrensesnitt;
  • Når du kjører en ekstern tilkobling, vil den administrerte applikasjonsmodulen (modul vanlig søknad) konfigurasjon 1C:Enterprise 8. Dens rolle når du arbeider med en ekstern tilkobling spilles av den eksterne tilkoblingsmodulen.
Når du bruker en ekstern tilkobling, er det følgende fordeler sammenlignet med å bruke en automatiseringsserver:
  • Raskere tilkoblingsoppsett siden ingen separat prosess må opprettes operativsystem, og alle handlinger utføres i anropsprosessen;
  • Raskere tilgang til egenskapene og metodene til 1C:Enterprise-objekter, siden organisering av en tilgang ikke krever kommunikasjon mellom prosesser;
  • Mindre forbruk av operativsystemressurser.
For å organisere tilgang til 1C:Enterprise 8-data via en ekstern tilkobling, utføres følgende handlingssekvens:
  • en COM-tilkoblingsbehandling opprettes, ved hjelp av hvilken forbindelsen opprettes;
  • et anrop blir gjort til Connect-metoden til COM-tilkoblingsbehandleren. Connect-metoden returnerer en ytre forbindelse med informasjonsgrunnlag 1C:Enterprise 8;
  • gjennom en ekstern tilkobling gjøres tilgang til gyldige metoder, egenskaper og objekter til infobasen som tilkoblingen er etablert med.
Viktig! På grunn av mangelen på et brukergrensesnitt kan ikke alle objekter, egenskaper og metoder brukes i en ytre forbindelse.
Den ytre skjøten gir full tilgang til sin globale kontekst. Derfor kan en ekstern tilkobling som dens metoder ha: systemkonstanter, verdier for objekter spesifisert i konfiguratoren, tilgang til som utføres ved hjelp av ledere (for eksempel konstanter, oppregninger, kataloger, dokumenter, dokumentlogger, rapporter , prosessering, planer for kjennetegnstyper, kontoplaner , beregningstypeplaner, registre), samt variabler deklarert i den eksterne koblingsmodulen med Eksporter nøkkelordet.

Tilgjengelighet:

Integrering.

Spørsmål: COM-tilkobling, kjennetegn type plan


Oppgaven er å programmatisk lage et nytt element i en kjent plan av karakteristiske typer via en COM-forbindelse. Forbindelsen er etablert, alt er bra her.

Jeg skriver slik:

TypeDescriptionTech = New TypeDescription("DirectoryLink. Motparter"); PurposeProperties = Tilkobling. Planer over typer kjennetegn. Formål med egenskapene til kategorier av objekter. Finn etter navn("Katalog "Enkeltpersoner""); NewElement = Tilkobling. Planer over typer kjennetegn. Objektegenskaper. CreateItem(); NewElement. Navn = Eiendomsnavn; NewElement. PropertyAssignment = PropertyAssignment; NewElement. ValueType = DescriptionTypesTech;

Den siste linjen fungerer ikke. Og dette er forståelig, den finner en slik type for databasen der 1C kjører, men jeg trenger en type for den vedlagte databasen. Hvordan få det?

I min versjon opprettes ganske enkelt et element med verditypen "Custom List". Det fungerer i prinsippet, men er liksom stygt.

Plattform 8.3. En COM-tilkobling er en forutsetning. Løsninger uten bruk er ikke av interesse.

Svar:

Rundstykker. Takk, det fungerte.

Spørsmål: COM-tilkobling. Spørreparameterproblem


God dag.
Problem med forespørsel via COM-tilkobling.

Perem TK; ArrayItems = COM.NewObject("Array"); For hver linje fra TZNomenclature Cycle Nomenclature = COM.Directories.Nomenclature.GetLink(COM.NewObject("UniqueIdentifier", Abbr(String.Nomenclature.Identifier))); Nomenklatur Array.Add(Nomenklatur); EndCycle; If ArrayItems.Quantity()<>0 Deretter Request = COM.NewObject("Request"); Request.Text = "SELECT |PricesItemsSliceLast.Commodities AS Nomenclature, |PricesItemsSliceLast.SalePrice AS Price, |PricesItemsSliceLast.RateVAT, |PricesItemsSliceLast.RateNP |FROM |RegisterInformation.TypeTe&Price| Priser |Og Inventar Inventar B ( &Array of Nomenclature) |Og inventar og materialer.ThisGroup = FALSE |And Registrar LINK Document.Setting SalesPrices) AS NomenclaturePricesSliceLast"; Request.SetParameter("Item Array", Item Array); Request.SetParameter("DataDoc", EndDay(ParametersStructure.DataDoc)); Request.SetParameter("PriceType", COM.Directories.PriceTypes.GetRef(COM.NewObject("UniqueIdentifier", ParameterStructure.PriceType.Identifier))); TZ = COM.NewObject("Verditabell"); TK = Request.Run().Upload(); Ellers TK = New ValueTable; TK.Columns.Add("Nomenklatur"); TK.Columns.Add("Pris"); TK.Columns.Add("Prosentandel"); TK.Columns.Add("MVA-sats"); slutt om;

Problemet er nettopp med varen eller en rekke varer; hvis du setter dem som en parameter, returnerer forespørselen tomme priser; hvis du ikke spesifiserer denne parameteren i det hele tatt, returnerer forespørselen de riktige dataene.
I spørringskonsollen til den samme eksterne databasen behandles alt uten problemer.
Hva kan være galt?

Svar:

Prøv å gjøre det gjennom VremTable. Lag en verditabell med kolonner hhv. som, fyll den ut, trekk den inn i forespørselen, og bruk den deretter med en intern tilkobling.

Spørsmål: Com-tilkobling fra fildatabase til fildatabase


God morgen. Jeg har en fildatabase 8.3, hvorfra jeg prøver å koble til en annen fildatabase ved hjelp av en com-tilkobling:

Directory = "C:\Brukere\1C\Arbeidsflyt (test)"; Bruker = "Administrator"; Passord = ""; Tilkoblingsparametere = "Fil="+Katalog+";Usr="+Bruker+";Pwd="+Passord+";"; V83 = Nytt COMObject("V83.COMConnector"); Forsøk på tilkobling = V83.Connect(ConnectionParameters); Unntaksrapport("Kunne ikke koble til dokumentflyt!"); Sluttforsøk;


Et unntak blir kastet, uten en feilbeskrivelse.
Begge databasene er tvunget til å starte i 8.3. Katalogen og brukeren er riktig spesifisert. Hva kan årsaken være?

Svar:

Jeg skriver linjen med kode V82 = New COMObject(" V83.COMConnector"); og resten av koden er som nedenfor, uten endringer.

Når versjonene av kilde- og destinasjonsplattformene er forskjellige, oppstår det en feil.

Det er ikke klart hvilken versjon av biblioteket du skal registrere og hvor du skal registrere det?

Jeg tror jeg må registrere biblioteket, versjon 8.2.18.61, og jeg gjør dette via en bat-fil

regsvr32 /n /i:user "C:\Program Files (x86)\1cv82\8.2.18.61\bin\comcntr.dll"
pause

msk-test1c:1641 -- dette er server 8.3.5.1098
V82 = Nytt COMObject("V82. COMConnector"); Rapport ("Koble til regnskap 3.0..."); Forsøk på å koble til = V82. Connect("srvr = ""msk-test1c:1641""; ref = ""db_test""; usr = ""Administrator""; pwd = ""123"""); Varsle ("Hurra-forbindelse etablert!"); Unntaksrapport("Ingen tilkobling til databasen!"); Rapport(Feilbeskrivelse()); // Info = InformasjonOmError(); // Rapport("Beskrivelse= "" + Info.Description + """); // Rapport ("Modulenavn= "" + Info.ModuleName + """); // Rapport ("LineNumber=" + Info.LineNumber); // Rapport ("SourceLine= "" + Info.SourceString + """); Return; EndAttempt;

Hvor registrerer jeg biblioteket, på klienten, på 8.2-serveren, på 8.3-serveren? Figur nedenfor.
(for klient-serverversjonen og for filversjonen av 1C-databasen)

Svar: Det var en oppgave å kommunisere med én terminal gjennom en webtjeneste. Basen er, vel, la oss si lett. Også 0,5 eller raskere?

Det er vanskelig å si – jeg har ikke nok data. Vi var fornøyd med 0,5 sekunder, minus den unødvendige 1C-klienten på en tredjepartsmaskin, minus synkronisering av bibliotekversjoner etter oppdatering av 1C-motoren, minus den fordømte comsafearrayen, normale navn og felttyper... Han tenkte på oss fra den andre siden (et system som integreres med 1C) "de vil ikke forstå" når det viser seg at de trenger å omskrive 1C-anropene sine til en ny "systemkommunikasjonsmodell". Men etter å ha prøvd en funksjon en gang i testdatabasen, blir vi nå ertet med "la oss bytte til tjenesten så snart som mulig."

Spørsmål: Hvordan bruker jeg TypeContains for Com-objekter?


Hvis Attribute.Type.ContainsType(Type("DirectoryLink.Nomenclature")) Then There IsNomenclature = True; slutt om;

"Props" ble mottatt fra en com-forbindelse med en annen 1c-database. Det oppstår en feil ved sammenligning:

(ExternalProcessing.Coefficient Recalculation.Form.Form.Form(183)): Feil ved oppkalling av kontekstmetoden (ContainsType)
Hvis Attribute.Type.ContainsType(Type("DirectoryLink.Nomenclature")) Da
på grunn av:
Et unntak skjedde (1C:Enterprise 8.3.8.1964): Typemismatch (parameternummer "1")

Jeg mistenker at det bør sammenlignes med typen i com? Hvordan sjekke typen riktig?

Svar:

Den ruller ikke. Jeg løste problemet slik:
I mottakerdatabasen i den generelle modulen med avkrysningsboksen for ekstern tilkobling er koden:

Funksjon CheckAttributeType(Attribute, Type) Export Return Attribute.Type.ContainsType(Type(Type)); EndFunction

I databasen som jeg kobler til, kaller jeg prosedyren via Com:

ComConnection.Avis_ExchangeProcedures.CheckAttributeType(Attribut, "DirectoryLink.Nomenclature")

Skriv ut (Ctrl+P)

Et av alternativene for å utveksle data mellom 1C-databaser er utveksling via en COM-forbindelse. Ved å bruke en COM-tilkobling kan du koble fra en 1C-database til en annen og lese eller skrive data. Denne metoden kan brukes både i klient-serverversjoner av databaser og i fildatabaser. Denne artikkelen diskuterer disse typene tilkoblinger på plattform 8.3

com-tilkobling

Du kan opprette to typer COM-objekter for 1C-applikasjonen. Dette er oleforbindelser V83.Søknad og com-tilkoblinger V83.COMConnector . I tilfelle V83.Søknad En nesten fullverdig kopi av 1C-applikasjonen lanseres. Ved bruk V83.COMConnector En liten serverdel lanseres. Driftshastigheten i dette tilfellet er høyere, men noen funksjoner er kanskje ikke tilgjengelige. Spesielt arbeid med skjemaer og vanlige moduler der egenskapen til å jobbe med eksterne forbindelser ikke er satt. Stort sett bør du bruke V83.COMConnector og kun ved manglende funksjonalitet V83.Søknad. Forskjellen i driftshastighet kan være spesielt merkbar på store databaser. For plattform 8.2 brukt V82.Application eller V82.COMConnector

Etabler en OLE-forbindelse

Connection = New COMObject(“V83.Application” );

Etabler en COM-forbindelse

Connection = New COMObject(“V83.COMConnector” );

Tilkoblingsstreng

//For klient-server-alternativet
Tilkoblingsstreng= “Srvr = ““ServerName” “;Ref = “ “BaseName” ;
//For filmodusalternativ:
Tilkoblingsstreng= "Fil = ""PathKBase" "; Usr = Brukernavn; Pwd = Passord”;
Forsøk
Tilkobling = Tilkobling . Koble(ConnectionString) ;
Unntak
Message = New MessageToUser;
Beskjed . Tekst = "Kunne ikke koble til databasen" + Beskrivelsesfeil(); Beskjed . Å melde();
EndAttempt ;

Frakobling

Tilkobling = Udefinert;
For objekt V83.Søknad Det er nødvendig å avslutte tilkoblingen, ellers vil en ufullstendig økt forbli, som deretter må slettes manuelt. I tilfelle V83.COMConnector forbindelsen brytes automatisk når prosedyren som forbindelsen ble gjort i, er fullført. Og det er et lite poeng til. For brukeren som tilkoblingen opprettes under, må avmerkingsboksen "Be om bekreftelse ved lukking av programmet" være deaktivert i innstillingene.

NewObject()-metoden

For å lage et nytt objekt kan du bruke NewObject()-metoden, for eksempel:

Til V83.COMConnector

RequestCOM = Tilkobling. NewObject( "Be om ") ;
TableCOM = Tilkobling. NewObject( «Verditabell») ;
ArrayCOM = Tilkobling. NewObject(“Array” ) ;

ViewCOM =Connection.NewObject

Til V83.Søknad

RequestOLE = Tilkobling. NewObject(“ Be om ") ;
TableOLE = Tilkobling. Nytt objekt(«Verditabell») ;
ArrayOLE = Connection.NewObject("Array" );
ViewCOM =Connection.NewObject("UniqueIdentifier", StringUID);

RequestCOM . Tekst ="VELGE
| Organisasjoners posisjoner. Kode,
| Organisasjoners posisjoner.Navn
|FRA | Directory.Positions of Organisations
HVORDAN DU POSISJONER TIL ORGANISASJONER”;

Resultat = RequestCOM. Løpe();
Prøve = Resultat. Velg () ;
Bye Selection. Neste()Syklus
EndCycle ;
Du kan også bruke konfigurasjonsobjektbehandlere:
DirectoryCOM = Tilkobling. Kataloger. Katalognavn;
DocumentCOM = Tilkobling. Dokumentasjon. Dokumentnavn;
RegisterCOM = Tilkobling. Informasjonsregistre. RegisterName ;

Motta og sammenligne oppregning via COM-tilkobling

For å sammenligne verdiene til oppregningselementer definert i konfigurasjonen, er det nødvendig å konvertere disse elementene til en av de primitive typene, hvis sammenligning er enkel. Slike typer kan enten være en numerisk type eller en strengtype. Du kan konvertere verdien av et oppregningselement til en numerisk type slik:

Enum Element = Connection.Directories.Directory1.FindByCode(1).Props1;

PossibleValues ​​= Enum Element.Metadata().Enum Values;

EnumerationElementNumber = PossibleValues.Index(PossibleValues.Find(Connection.XMLString(EnumerationElement)));

Hvis EnumerationItemNumber = 0, så Rapporter( «Tallverdi1»);

ElseIfEnumerationItemNumber = 1 Deretter Rapport("EnumerationValue2");

slutt om;

Henter et objekt via COM etter identifikator

Gjennom konfigurasjonsobjektbehandlere får vi et com-objekt, for eksempel:
DocumentCOM = Tilkobling. Dokumentasjon. Dokumentnavn;

Da får vi en unik identifikatorstreng:

StringUID =Connection.string ( DocumentCOM.UniqueIdentifier())

Identifikator = Ny U uniqueIdentifier(StringUID);
MED linkByIdentifier = Dokumenter[Dokumentnavn].GetLink(Identifier);

Hvis du trenger å finne et com-objekt etter dokument etter identifikator, må du skrive slik:

WidCOM = Connection.NewObject("UniqueIdentifier", StringUID);
LinkByIdentifier = Connection.Documents[DocumentName].GetLink(WidCOM);

En måte å overføre data fra en 1C-konfigurasjon til en annen er en programvaretilkobling ved hjelp av COM. Mange bedrifter bruker flere ulike databaser, som det må være visse koblinger og avhengigheter mellom. Hvis det ikke bare er nødvendig å overføre data, men også å utføre visse databehandlinger, vil en COM-forbindelse være den optimale mekanismen. Evnen til å analysere data fra en annen 1C-database er nyttig for enhver utviklere.

Vi kobler oss til 1C-databasen via COM

For å implementere en COM-tilkobling i 1C, brukes en spesiell mekanisme kalt COMConnector. Dette objektet er installert sammen med plattformen og brukes til å koble sammen infobaser. Det skal bemerkes at for versjon 8.2 og 8.3 brukes objekter med forskjellige navn - henholdsvis "V82.COMConnector" og "V83.COMConnector".

Husk at varigheten av COM-tilkoblingen til databasen koster en lisens - ikke la deg rive med av samtidig utførelse av flere tilkoblinger. Dette er spesielt viktig for organisasjoner som har et begrenset antall lisenser. Dette problemet kan løses ved hjelp av rutineoppgaver som utføres når det ikke er noen aktive brukerforbindelser til informasjonsbasen.

For å kunne koble til en annen database og be om nødvendig informasjon, må du kjenne til følgende data:

  1. Hvilken type er det - fil eller klient-server;
  2. Hvor befinner det seg;
  3. Hvilket navn og passord kan du bruke for å logge på?
  4. Hvilke data er du interessert i?

Fra de tre første punktene, for å implementere en COM-tilkobling, må du opprette en streng med parametere. Avhengig av type informasjonssikkerhet vil den variere utseende. Ved hjelp av den mottatte strengen opprettes en forbindelse, ved hjelp av hvilken du kan samle inn data fra en annen database for analyse og behandling ved hjelp av hvilke som helst metoder.

Connection ParametersFileIB = "Fil=""Path_to_database""; Usr=""Brukernavn"";Pwd=""Passord"""; Connection ParametersClientServerIB = "Srvr=""Server_Name""; Ref=""Database_Name""; Usr=""User_Name""; Pwd=""Password""";

Tilkoblingsfunksjonen er enkel og bør ikke reise noen spørsmål hvis alle parametere er spesifisert riktig. For å fremskynde feilsøking og analyse mulige feil det er bedre å omslutte forbindelsen i "Prøv"-konstruksjonen. Funksjonen vil returnere en verdi av typen "COM-objekt", som du vil jobbe med for å få de nødvendige dataene.

&OnServer-funksjon ConnectToBase() exportConnectionIB Parameters = "File=""E:\1c database\ERP""; Usr=""Administrator"";Pwd=""1"""; V83COMCon= Nytt COMObject("V83.COMConnector"); Forsøk på retur V83COMCon.Connect(IB Connection Parameters); Unntaksrapport(ErrorDescription()); Returner Udefinert; Sluttforsøk; EndFunction

Gjennom en COM-tilkobling kan du ikke bare velge data, men også legge dem til databasen du kobler til. Husk at vi kan overføre 4 primitive datatyper via et COM-objekt. Andre typer vil måtte spesifiseres ved hjelp av plattformens innebygde søkefunksjoner. Vær oppmerksom på at globale plattformfunksjoner også kalles opp via en COM-forbindelse.

Vi mottar data fra 1C-databasen

Etter at du har mottatt ønsket objekt, må du lese data fra en annen database. For å gjøre dette bruker vi en forespørsel via en COM-forbindelse i 1C 8.3 ved å bruke den mottatte verdien av typen "COM-objekt" fra funksjonen. Det er viktig å først koble til databasen og deretter utføre forespørselen. Utførelse skjer gjennom NewObject-metoden, som spesifiserer objekttypen i strengform som en parameter - "Request".

&OnServer-prosedyre TestCOMOnServer() Connection = ConnectToBase(); If TypeValue(Connection) Type("Undefined") Then RequestBPZO = Connection.NewObject("Request"); RequestBPZO.Text = "VELG første 15 | DirectoryUser.Name AS-navn |FROM | Directory.users AS DirectoryUser"; Select = RequestBPZO.Execute().select(); Mens Selection.next() loop Report(Selection.Number); EndCycle; slutt om; Slutt på prosedyre >

For eksempel, for å få informasjon om brukere av en bestemt avdeling, vil vi sette en betingelse i forespørselen gjennom parametere. En parameter vil være av en enkel type - en streng, og divisjonen vil være en lenke til katalogelementet "Enterprise Structure". Resultatet av spørringen er en tabell med de oppførte feltene av typen de eksisterer i databasen som COM-tilkoblingen skjedde til. Hvis du trenger å konvertere dem til andre typer, bruk standard plattformfunksjoner:

  • Linje();
  • Antall();
  • Dato().
RequestBPZO = Connection.NewObject("Request"); RequestBPZO.Text = "VELG de første 15 | DirectoryUser.Name AS Name | FROM | Directory.Users AS DirectoryUser I WHERE | DirectoryUser.Department = &Obligatorisk avdeling | Og DirectoryUser.Name som ""%"" + &RequiredName+ ""%""" ; Request BPZO.SetParameter("Nødvendig avdeling", Tilkobling. Kataloger. Enterprise Structure. Finn etter kode("00-000023")); RequestBPZO.SetParameter("RequiredName","Ekaterina"); Select = RequestBPZO.Execute().select(); Mens Selection.next() loop Report(Selection.Name); EndCycle;

Hvis du trenger å overføre en matrise til databasen for valg basert på flere parametere, for eksempel avdelinger, brukes også NewObject-kommandoen. På samme måte kan du sende en liste eller tabell med verdier, fylle dem med elementer fra en annen database gjennom en tilkobling. Alle er tilgjengelige for deg å søke eksisterende metoder plattformobjekter og mekanismer.

RequestBPZO = Connection.NewObject.("Request"); RequestBPZO.Text = "VELG de første 15 | DirectoryUser.Name AS-navn | FRA | Directory.Users AS DirectoryUser I WHERE | DirectoryUser.Department B (&NecessaryDepartment) | Og DirectoryUser.Name som ""%"" + &NecessaryName+ ""%" " "; Array of Departments = Connection.NewObject("Array"); Array of Departments.Add(Connection.Directories.Enterprise Structure.Finn By Code("00-000023")); Array of Departments.Add(Connection.Directories.Enterprise Structure.Finn By Code("00-000038")); Array of Departments.Add(Connection.Directories.Enterprise Structure.Finn By Code("00-000046")); Request BPZO.SetParameter("Nødvendig avdeling", Array of Departments); RequestBPZO.SetParameter("RequiredName","Ekaterina"); Select = RequestBPZO.Execute().select(); Mens Selection.next() loop Report(Selection.Name); EndCycle;

Ved overføring av dokumenter eller katalogelementer oppstår alltid spørsmålet om å kontrollere overføringen av et bestemt objekt. Ved hjelp av COM-tilkoblinger kan slike problemer løses gjennom en unik identifikator. Du må finne et objekt i plugin-databasen etter identifikator fra gjeldende informasjonssikkerhet ved å bruke "GetLink"-funksjonen, ved å bruke identifikatoren som en streng. Hvis en ikke blir funnet, kan du opprette den ved hjelp av en COM-tilkobling.

StrIdent = String(Directories.Users.FindByCode("00-0000313").UniqueIdentifier()); Hvis IKKE ValueFilled(Connection.Directories.Users.GetLink(Connection.NewObject("UniqueIdentifier", StrIdent))) så NewUser = Connection.Directories.Users.CreateItem(); NewUser.Name = Directories.Users.FindByCode("00-0000313").Name; NewUser.Individual = Directories.Users.FindByCode("00-0000313").Individual; NewUser.Write(); slutt om;

En COM-tilkobling har også rett til å bruke prosedyrer og funksjoner fra vanlige 1C-moduler med egenskapen "Ekstern tilkobling" aktivert. I tillegg til denne betingelsen, må den kalte funksjonen eller prosedyren eksporteres og ikke inkludere interaktive handlinger utført på serveren. Ellers vil du se en feilmelding om at operasjonen er ugyldig.

Sammensatt..; VariableFunction = Tilkobling..; funksjonsanrop>generelt modulnavn>prosedyrekall>generelt modulnavn>

Mulighetene for ekstern tilkobling med en annen database i 1C er ganske omfattende og kan tillate deg å utføre mange oppgaver. Det er viktig å kunne vurdere verktøyene riktig og velge den optimale løsningen. I de fleste tilfeller vises denne ferdigheten bare med erfaring eller ved å studere eksempler på arbeidet til erfarne spesialister.


Nøkkelord: COM, tilkobling, ekstern, OLE, Automation, Connect, ComConnector, Srvr

Når du bruker 1C:Enterprise 8.0 COM-tilkoblinger for å få tilgang til data, er det følgende fordeler sammenlignet med å bruke en automatiseringsserver:

  1. Raskere forbindelsesetablering, siden det ikke er behov for å opprette en separat operativsystemprosess, og alle handlinger utføres i anropsprosessen;

  2. Raskere tilgang til egenskapene og metodene til 1C:Enterprise-objekter, siden organisering av en tilgang ikke krever kommunikasjon mellom prosesser;
  3. Mindre forbruk av operativsystemressurser.

Generelt er det å jobbe med 1C:Enterprise 8.0 via en COM-forbindelse som å jobbe med 1C:Enterprise i serverautomatiseringsmodus. De viktigste forskjellene er som følger:

  1. Når det gjelder en automatiseringsserver, startes en fullverdig 1C:Enterprise 8.0-applikasjon, og når det gjelder en COM-tilkobling, startes en relativt liten COM-server i prosessen.

  2. Når du arbeider via en COM-tilkobling, er funksjonalitet på en eller annen måte knyttet til organiseringen av 1C:Enterprise 8.0-brukergrensesnittet ikke tilgjengelig;
  3. Når du bruker en COM-tilkobling, brukes ikke 1C:Enterprise 8.0-konfigurasjonsapplikasjonsmodulen. Dens rolle når du arbeider med en COM-tilkobling spilles av den eksterne tilkoblingsmodulen.

1.1 Prosedyre for å etablere en COM-forbindelse

For å organisere tilgang til 1C:Enterprise 8.0-data via en COM-tilkobling, utføres følgende handlingssekvens:

  1. et COM-objekt opprettes med identifikatoren V8.COMConnector, ved hjelp av hvilken forbindelsen opprettes;

  2. Connect-metoden til det tidligere opprettede V8.COMConnector-objektet kalles. Connect-metoden returnerer en kobling til et COM-tilkoblingsobjekt med 1C:Enterprise 8.0 infobase;
  3. Gjennom det mottatte COM-tilkoblingsobjektet får man tilgang til de gyldige metodene, egenskapene og objektene til infobasen som tilkoblingen er etablert med.

Viktig! På grunn av mangelen på et brukergrensesnitt i en COM-forbindelse, kan ikke alle objekter, egenskaper og metoder brukes i en COM-forbindelse.

1C:Enterprise-objekter tilgjengelige eksternt via en COM-tilkobling:

  1. Eksporterte variabler og prosedyrer/funksjoner til den eksterne sammenføyningsmodulen

  2. Eksporterte variabler og prosedyrer/funksjoner til vanlige moduler
  3. Inkludere og ekskludere hele moduler ved å angi egenskaper for vanlige moduler

  4. Inkluderer og ekskluderer fragmenter av vanlige moduler som bruker en forprosessor
  5. Global kontekst 1C:Enterprise 8.0, med unntak av objekter som er tett knyttet til klientapplikasjonen (TextDocument, TabularDocument, ...)

1.2 Ekstern tilkoblingsmodul

Som allerede nevnt, utføres applikasjonsmodulens ansvar når du arbeider gjennom en COM-tilkobling av den eksterne tilkoblingsmodulen. Denne modulen kan ha hendelsesbehandlerprosedyrer When SystemStarts() og WhenSystemCompletes(), som kan inneholde handlinger utført ved henholdsvis initialisering og avslutning av tilkoblingen.

Prosedyrer, funksjoner og globale variabler definert i en ekstern sammenføyningsmodul med eksportnøkkelordet blir, som i tilfellet med en applikasjonsmodul, en del av den globale konteksten.

1.3 Vanlige moduler

Egenskapene "Client", "Server" og "External Connection" er introdusert for vanlige moduler. De er ment å bestemme i konfigurasjonen bruken av moduler i klient-serverversjonen og i COM-tilkoblingsmodus.

1.4 Objekt "V8.COMConnector"

Den eneste oppgaven som løses av V8.COMConnector COM-objektet er å etablere en COM-forbindelse med 1C:Enterprise 8.0-informasjonsbasen. Et ubegrenset antall tilkoblinger kan opprettes ved å bruke én forekomst av V8.COMConnector-objektet. V8.COMConnector-objektet har en enkelt Connect-metode, designet for å etablere en COM-forbindelse med 1C:Enterprise 8.0-infobasen.

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

Forbindelseslinjen med informasjonssikkerhetssystemet er en kjede av fragmenter av formen Parameter=Verdi. Fragmenter er atskilt fra hverandre med ";". Hvis verdien inneholder mellomrom, må den omsluttes av doble anførselstegn (").

Vanlige parametere:

Usr - brukernavn;
Pwd - passord.

Følgende parameter er definert for filversjonen:

Fil - infobase katalog.

Følgende parametere er definert for klient-server-alternativet:

Srvr - 1C:Enterprise servernavn;
Ref - navn på infobasen på serveren.

Connect-metoden etablerer en COM-tilkobling til 1C:Enterprise 8.0-infobasen og returnerer en kobling til COM-tilkoblingsobjektet.

// Et koblingsobjekt er opprettet
V8 = New COMObject("V8.COMConnector");
// et COM-tilkoblingsobjekt er opprettet
Connection = V8.Connect("File=""c:\InfoBases\Trade""; Usr=""Director"";")

1.5 COM-tilkoblingsobjekt

En COM-forbindelse til 1C:Enterprise infobase gir full tilgang til dens globale kontekst (se "Kontekst for programmodulutførelse"). Derfor kan en COM-tilkobling ha som sine metoder: systemkonstanter, verdier spesifisert i konfiguratoren av objekter som er tilgjengelig ved hjelp av ledere (for eksempel konstanter, oppregninger, kataloger, dokumenter, dokumentlogger, rapporter, behandling, planer for typer av egenskaper, plankontoer, planer for beregningstyper, registre), samt variabler deklarert i den eksterne koblingsmodulen med eksportnøkkelordet.

I tillegg har COM-tilkoblingen en ekstra NewObject-metode som kan brukes til å skape verdier av visse typer.

tk = Tilkobling. NewObject("Verditabell");

String method Lar deg få strengrepresentasjoner av 1C:Enterprise-verdier.

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

1.6. Funksjoner ved å jobbe med en COM-tilkobling

I automatisering og i en COM-forbindelse har TRUE og FALSE følgende verdier: -1 (minus én) og 0.

Det er mulig å organisere en pool av COM-tilkoblinger. Samtidig opprettes flere COM-tilkoblingsobjekter PÅ FORHÅND på mottaksserveren 1C:Enterprise og det tar enda kortere tid å etablere en tilkobling, siden det ikke er behov for å opprette et nytt objekt.

Et nytt Query Builder-objekt er implementert, designet for å generere spørringstekster basert på de angitte innstillingene. Dette objektet støtter rapportbyggerfunksjonalitet som ikke er relatert til å sende ut en rapport til et regnearkdokument og andre oppgaver relatert til brukergrensesnitt. Dette objektet kan brukes på 1C:Enterprise-serveren og i en COM-forbindelse.

Du kan bruke COM-objekter når du kjører det innebygde språket på 1C:Enterprise-serveren.

COM-feil konverteres til innebygde språkunntak.

Hvis konfigurasjonen forsøker å opprette et ugyldig objekt, f.eks. regnearkdokument, i en ekstern tilkoblingsmodul, i en delt modul eller i en objektmodul, kan COM-forbindelsen ikke etableres eller avbrytes som et unntak.

Et av alternativene for å utveksle data mellom 1C-databaser er utveksling via en COM-forbindelse.

Ved å bruke en COM-tilkobling kan du koble fra en 1C-database til en annen og lese eller skrive data. Denne metoden kan brukes både i klient-serverversjoner av databaser og i fildatabaser. I denne artikkelen skal vi se på eksempler på denne typen forbindelse. Eksemplene bruker plattform 8.2.

Du kan opprette to typer COM-objekter for 1C-applikasjonen. Dette V82.Søknad Og V82.COMConnector. I tilfelle V82.Søknad En nesten fullverdig kopi av 1C-applikasjonen lanseres. ved bruk V82.COMConnector En liten serverdel lanseres.
Driftshastigheten i dette tilfellet er høyere, men noen funksjoner er kanskje ikke tilgjengelige. Spesielt arbeid med skjemaer og vanlige moduler der egenskapen til å jobbe med eksterne forbindelser ikke er satt. Stort sett bør du bruke V82.COMConnector og kun ved manglende funksjonalitet V82.Søknad. Forskjellen i driftshastighet kan være spesielt merkbar på store databaser.

Så la oss komme i gang

  1. La oss lage et COM-objekt
    • Til V82.Søknad Connection = New COMObject("V82.Application" ) ;
    • Til V82.COMConnector Connection = New COMObject("V82.COMConnector" );
  2. La oss lage en tilkoblingsstreng
    • for serverversjonen av databasen ConnectionString = "Srvr = " "ServerName" ";Ref = " "BaseName" ;
    • for filversjonen av databasen ConnectionString = "File = " "PathKBase" "; Usr = Brukernavn; Pwd = Passord";
  3. Kobler til databasen Forsøk på tilkobling = tilkobling. Connect(ConnectionString) ; Unntaksmelding = New MessageToUser; Beskjed. Tekst = + ErrorDescription() ; Beskjed. Å melde() ; EndAttempt ;
  4. Kobler fra databasen Tilkobling = Udefinert;

    For objekt V82.Søknad Det er nødvendig å avslutte tilkoblingen, ellers vil en ufullstendig økt forbli, som deretter må slettes manuelt. I tilfelle V82.COMConnector forbindelsen brytes automatisk når prosedyren som forbindelsen ble gjort i, er fullført. Og det er et lite poeng til.

    For brukeren som tilkoblingen opprettes under, må avmerkingsboksen "Be om bekreftelse ved lukking av programmet" være deaktivert i innstillingene.

La oss nå sette sammen all koden

Connection = New COMObject("V82.Application" ) ; //Connection = New COMObject("V82.COMConnector"); ConnectionString = "Srvr = " "Server1C" ";Ref = " "MyBase" "; Usr = Petya; Pwd = 123" ; //ConnectionString = "Fil = ""С:\MyBase""; Usr = Petya; Pwd = 123"; Forsøk på tilkobling = tilkobling. Connect(ConnectionString) ; Unntaksmelding = New MessageToUser; Beskjed. Tekst = "Kunne ikke koble til databasen"+ BeskrivelseFeil() ; Beskjed. Å melde() ; EndAttempt ; Tilkobling = Udefinert;

For tilkoblingstype V82.Søknad metoden brukes for COM-objektet som ble opprettet i utgangspunktet, og for V82.COMConnector metoden brukes på forbindelsen. videre arbeid med forespørselen fortsetter standard betyr 1C. i koden ser det slik ut:

Forespørsel = Tilkobling. NewObject("Request" ) ; // For V82.COMConnector Forespørsel = Tilkobling. NewObject("Request" ) ; // For V82.Søknad Be om. Tekst = "VELG | Organisasjoners posisjoner. Kode, | Organisasjoners posisjoner.Navn|FRA | Directory. Positions of Organizations AS Positions of Organizations"; Resultat = Forespørsel. Løpe(); Prøve = Resultat. Velg() ; Bye Selection. Neste() Loop EndLoop ;

For versjon 1C:Enterprise 8.3 forblir alt uendret bortsett fra at når du oppretter COM-objekter må du bruke "V83.COMConnector" eller "V83.Application".




Topp