Dette skyldes noen særegenheter ved den globale kontekstfunksjonen ConnectExternalComponent() .

Ofte har programmerere problemer med å koble til eksterne komponenter (for eksempel drivere for kommersielt utstyr) når brukere jobber med 1C, kobler til serveren gjennom en terminal.

I dette tilfellet ser brukerne for eksempel dette bildet:

Når du arbeider fra lokale datamaskiner, er det ingen problemer med å koble til eksterne komponenter.

Hva henger dette sammen med? Dette er fordi når brukere jobber gjennom en terminalserver, har de færre rettigheter enn når de jobber på en lokal datamaskin.

Du kan enkelt verifisere dette hvis du logger på terminalserveren under en konto med administrative rettigheter.

Årsaken til denne forskjellen er at 1C ikke kan registrere en ekstern komponent i registeret når brukeren arbeider i terminalen under normale rettigheter, fordi en vanlig bruker har ikke tillatelse til å skrive til systemregisteret HKEY_CLASSES_ROOT.

Publikasjoner om emnet tilkobling av eksterne komponenter i terminalen tilbyr en rekke metoder for å løse dette problemet.

For eksempel disse:

1. Start 1C for første gang under administrative rettigheter.

Dette alternativet fungerer ikke alltid. Jeg skal forklare hvorfor nedenfor.

2. Gi vanlige terminalbrukere tillatelse til å skrive til systemregistergrenen HKEY_CLASSES_ROOT.

Utilstrekkelig avanserte brukere bør ikke gjøre dette, ellers kan det oppstå problemer.

3. Bruk ulike dingser, registrer VK på vegne av en bruker med fulle rettigheter.

Det er heller ikke bra.

Så hva er den beste måten å komme seg ut av denne situasjonen på?

Jeg tilbyr min løsning på dette problemet. Etter min mening - enkelt og vakkert.

Mens jeg undersøkte dette problemet, stilte jeg meg selv spørsmålet: hvorfor prøver 1C til og med å registrere VK ved å bruke en ny bane? Hun er tross alt allerede registrert i systemet.

Poenget viste seg å være at i typiske 1C-konfigurasjoner (for eksempel "Trade Management") brukes følgende syntaks for den globale kontekstmetoden Connect External Component():

ConnectExternalComponent("Directory.ConnectedEquipment.Layout.DriverATOLBarcodeScanner", "ATOLScanner");

Som du kan se, er driveren VC koblet fra "ATOLBarcode Scanner Driver"-oppsettet i "Connected Equipment"-katalogen.

Hva skjer da?

1C lagrer komponenten i brukerens midlertidige mappe, for eksempel "C:\Documents and Settings\User\Local Settings\Temp\1032\v8_4_12.tmp"

og prøver å registrere den i registergrenen HKEY_CLASSES_ROOT akkurat langs denne veien.

På terminalen har vanlige brukere ikke rettigheter til å endre denne registergrenen, så komponenten kobles ikke til dem.

La oss nå snakke om hvordan vi kommer ut av denne situasjonen.

Den globale kontekstmetoden ConnectExternalComponent() har flere syntaksalternativer. Det er dette vi skal bruke.

Så, steg for steg:

1. Registrer den eksterne komponenten ved å bruke regsvr32.exe-verktøyet på terminalserveren i mappen C:\WINDOWS\SYSTEM32 for et 32-biters operativsystem eller i mappen C:\WINDOWS\SYSWOW64 for et 64-biters operativsystem.

2. Bruk ett av to ekstra syntaksalternativer for ConnectExternalComponent()-metoden:

Alternativ 1:

ConnectExternalComponent("C:\WINDOWS\SysWOW64\Scaner1C.dll", "ATOLScanner", ExternalComponentType.COM);

DriverObject = New("AddIn.ATOLScanner.Scaner45");

Alternativ 2:

ProgID = "AddIn.Scaner45";

ConnectExternalComponent(ProgID);

DriverObject = New(ProgID);

Etter min mening er alternativ nummer 2 å foretrekke.

Samtidig prøver ikke 1C å omregistrere VK ved hjelp av en ny bane i registeret og dermed er alle problemer løst.

Vel, det er alt. Lykke til i arbeidet ditt!

[du må registrere deg for å se lenken]

Spørsmål: Installere en ekstern komponent


Fortell meg hvordan du installerer en ekstern komponent. Når du kjører følgende kode, vises en feil. Finn NameDecl.dll i oppsettet

Prøver å SetExternalComponent("GeneralLayout.Layout");
Unntak EndTry ;

Feil: Installasjon av ekstern komponent mislyktes! ()
Svare:
ConnectExternalComponent("GeneralLayout.Layout", "NameDecl", ExternalComponentType.Native) returnerer FALSE.

New("AddIn.NameDecl.CNameDecl", Udefinert) = (()): Skriv inn undefined (AddIn.NameDecl.NameDecl)


Spørsmål: Koble til en ekstern komponent i 1s 8.3.6 og Win8
AfterConnecting = Ny varselbeskrivelse("AfterConnectingVK", ThisForm);
StartInstallingExternalComponents(,"C:\Controller\vk_rs232.dll");
StartConnectingExternalComponents(AfterConnecting,"C:\Controller\vk_rs232.dll","DLL_Scales");

og jeg får feilen som
"Installasjonen av en ekstern komponent mislyktes! En komponent for klientapplikasjonen du bruker kan mangle!".
Og nå forstår jeg ikke:
1. Kanskje komponenten ikke er registrert i registeret - hvordan kan jeg sjekke det der?
2. Kanskje dens "versjon" ikke fungerer under Win8, selv om jeg har den 32-bit.

Feil: Installasjon av ekstern komponent mislyktes! 3. Kanskje 1C i seg selv er for ny, dvs. Følgelig kan det ikke fungere med denne dll?
4. Vel, det er trivielt - jeg skriver noe feil.
Og alt dette førte meg til neste problem. VneshComp er installert, nå må du koble det til. Og her er begge alternativene

ConnectExternalComponent("C:\Controller\vk_rs232.dll","Libra")

ConnectExternalComponent("GeneralLayout.Layout","Libra")


gi ut FALSK!!!
Spørsmål: Ekstern komponent.dll
God dag alle sammen.
Et slikt spørsmål.
En dll-komponent som fungerer utmerket i 1C 7.7
1s 8.1 vil ikke starte opp i det hele tatt...
Jeg prøvde å lime den inn i C:\Program Files\1cv81\bin\cache1c.dll
Jeg prøvde å registrere meg med regsvr32 "C:\Program Files\1cv81\bin\cache1c.dll"

Registrerer uten problemer.
Når jeg vil ha tilgang til den, får jeg en feilmelding: Feil ved innlasting av ekstern komponent! cache1c.dll Prosedyre ButtonExecutePress(Button) Forsøk på å laste inn ekstern komponent( "C:\Program Files\1cv81\bin\cache1c.dll"); Unntaksrapport(

Feil: Installasjon av ekstern komponent mislyktes!"Feil ved lasting av ekstern komponent!"
+ "cache1c.dll" ); Sluttforsøk; Forsøk // Hent komponentobjektet.
// m = Ny ("cache1c.GTMcmd" ); m = New COMObject("cache1c.GTMcmd" ); Unntaksrapport(); Sluttforsøk; Slutt på prosedyre Det er så banalt at det er umulig...
Du må pause mellom samtaler (millisekunder)...

Prosedyre ButtonExecutePress(Button) Attempt // Hent et komponentobjekt.


m = New COMObject("cache1c.GTMcmd" ); Unntaksrapport(

"Kunne ikke opprette eksternt komponentobjekt"

); Sluttforsøk;
Det er en makefile inne i NativeApi-prosjektet. Med dens hjelp bygger jeg et .so-bibliotek på Ununtu.
Men når "Koble til ekstern komponent" 1c krasjer.
På samme måte hvis jeg bygger ved å bruke "build.sh" (i roten av prosjektet).

I selve makefilen endrer jeg flagget fra m32 til m64, fordi 1c og selve x64-systemet. (med parameter m32 kobles den ikke til uansett)
Her er et eksempel på å kalle VK fra 1C 8.3:
Tilkobling ferdig = ConnectExternalComponent("/home/alexeyubuntux64-20 gb/Documents/VNCOMP83/example/NativeAPI/AddInNative.so", "AddInNative", ExternalComponentType.Native);
Det er en artikkel om dette emnet.

Men så vidt jeg ser, er alle disse punktene allerede tatt i betraktning og korrigert i VNCOMPS-eksemplet.

Men i hovedsak er det et spørsmål om kompileringsparametere. En MB 32-bit ekstern komponent kobles til en 32-bit 1c normalt, men jeg distribuerte den på Ubuntu x64 1c enterprise83 8.3.5-1486 amd64. Og jeg vil koble opp med henne på VK.
Er det noen som har noen ideer om hvordan man kan løse dette problemet?)

Feil: Installasjon av ekstern komponent mislyktes! VNCOMPS-eksemplet skal fungere, men byggeparametrene må justeres, eller selve plattformen som jeg tester er feil.

Jeg lurer på om det er mulig å skrive en ekstern komponent i Java?


Spørsmål: Arbeide med en ekstern komponent med en 1C-server...

God ettermiddag,
Det er en ekstern komponent skrevet i C++, hvis oppgave er å hente informasjon fra en ekstern database og returnere søkeresultatet i form av en verditabell i 1C.
For å generere en verditabell for øyeblikket, brukes IDispatch* pBackConnection-grensesnittet, mottatt som en parameter i Init()-funksjonen. Deretter bruker jeg ganske enkelt 1C-funksjoner for å lage en verditabell, fylle den og returnere den til den andre parameteren i CallAsFunc(...).
Problemer begynte med overgangen til 1C tynnklienter. På serversiden starter ikke den eksterne komponenten egentlig. Du kan kjøre det på klientsiden, men det hele ser ut som krykker og faller ut av den generelle "klient-server"-logikken i 1C. For eksempel forstår ikke klienten hva en verditabell er, problemer med "globale" variabler, økter osv.
NativeAPI er enda mer begrenset i denne forbindelse.
Dansing med tamburin førte til at jeg klarte å starte en ekstern komponent under 1C-serveren, MEN arbeidet fortsetter til det gjøres et forsøk på å ringe Invoke på pBackConnection. 64-bitsversjonen av 8.2-serveren prøver å gjøre noe til den tar timeout, 32-bitsversjonen (VK er naturligvis også 32-bit) faller bare av med en gang.
Følgelig oppstår spørsmål: er dette midlertidig eller koker 1C-logikken ned til å kansellere denne arbeidsordningen? Hvis det er umulig å lage interne 1C-strukturer (en verditabell) på denne måten, er det i prinsippet en beskrivelse av hva en verditabell er på systemnivå for å prøve å lage den i C++, fylle den, og deretter bare sette den inn i 1C som en returparameter? Jeg vil i det minste få en retning i hvilken retning jeg skal grave.

Takk.

Feil: Installasjon av ekstern komponent mislyktes!

Du skriver en ting og mener noe annet.
I 1C-miljøet er det ikke umulig å deklarere variabler som vil være synlige i forskjellige økter nå, og det var ingen slik mulighet før. En annen økt er en fysisk annerledes prosess.
En økt er en økt som kobles til en database, dvs. brukerøkt. Eller legger du noe eget inn i dette konseptet?

I løpet av en økt var det mulig, og det er nå mulig, å deklarere variabler i øktmodulen som vil leve og være synlige i økten fra forskjellige steder... faktisk er det 4 av dem.
- Sesjonsmodul;
- Vanlig applikasjonsmodul;
- Administrert applikasjonsmodul;
- Ekstern tilkoblingsmodul.

Vel, selvfølgelig, du må huske konteksten. Serverkonteksten er ikke direkte tilgjengelig på klientsiden og omvendt.

Faktisk bestemmer 1C-arkitekturen at datautveksling vil gå som følger:
- ved hjelp av parametere/retur av prosedyrer/funksjoner;
- ved hjelp av de såkalte sesjonsparametrene (kan ikke være objekter, men faktisk synlig i paletten).

En tabell på skjemaet... er den koblet til en objekttabell (for eksempel behandling)? eller ikke. Hvis ja, så er den tilgjengelig på serveren (&OnServer) og rediger der....

Og likevel, ja, verditabellen er ikke tilgjengelig i UV-en på klientsiden. Vel, det var det 1C bestemte.

Kom igjen! Det fungerer med Excel, det fungerer med FSO og en haug med andre ting, men det fungerer ikke her. Fange feilen og analyser....

Forsøk
...
handlingene dine
...
Unntak
str = ErrorDescription();
Sluttforsøk;

Med moderne maskinvarefunksjoner er ikke dette et argument i det hele tatt.

Bare din personlige mening. Har ingenting med virkeligheten å gjøre. Ikke på noen måte. Jeg gjentar nok en gang, 1C fungerer utmerket med COM. Både med in-proc og out-proc.

Vennligst oppgi koden du bruker for å laste ned og ta kontakt med VK.

Forresten, VK... i ditt tilfelle, er det COM eller Native API?
Hvis COM, så registrerer du det som... via regsvr32... hvordan "løser" du problemet med bitdybde?

Spørsmål: 1C8 og en ekstern komponent med Native-typen


God ettermiddag.
Jeg har en BP 3.0.50.12-konfigurasjon og et ønske om å implementere veiing fra Vesy-Soft-selskapet som bruker UniServerAuto inn i den.
Utviklerne kompilerte komponenten i Native for Windows 32 og 64, og arkiverte den med maifest-filen. Det er også et eksempel for 1C på hvordan vekt kan beregnes. I den, ved å bruke en layout med binære data, er dette arkivet indikert, slik jeg forstår det. I eksemplet er alt i orden: komponenten er installert, koblet til, deretter er forbindelsen opprettet og vekten avlest.
Men så snart du begynner å overføre den til 1C, avleses ikke vekten. Alt ser ut til å være skrevet enkelt, men jeg forstår ikke hvor raken er.
Den som har litt tid - hjelp, ta en titt med ett øye, kanskje løsningen er på overflaten, men jeg går et sted på feil sted og gjør feil ting. Jeg har aldri trengt å jobbe med Native-teknologi før...

Og i vedlegget er min behandlingstekst

Feil: Installasjon av ekstern komponent mislyktes!

Vel, jeg har nyheter...
Jeg begynte bare å se steg for steg på hvilket tidspunkt det ville begynne å mislykkes. For å gjøre dette opprettet jeg en tom database og behandlet den med kommandoen. I analogi med leverandørens eksempel, overførte jeg oppsettet til en ny konfigurasjon - det fungerer andre gang. De. første gang nei, men andre gang ja. Dette førte til ideen om at det i vår behandling fortsatt ville være nødvendig å skille koblingen av komponenten og objektet i henhold til forskjellige prosedyrer.
Deretter overførte jeg det til databasen min med tilkobling av layout - det fungerer. Puh, det er bra.... Men jeg vil gjerne uten å gjøre endringer i konfigurasjonen, så la oss gå videre

Jeg prøver å legge til oppsettet til behandlingen. Størrelsen øker umiddelbart fra 10kb til 3mb og en betydelig nedgang i driften blir lagt merke til - den er ikke egnet. Jeg begynner å grave i å koble komponenter via dll. De. i hovedsak det samme som der jeg startet. Men det er ett "MEN": når jeg søkte etter dll-navnet i brukerens mappe, la jeg merke til at denne dll-en ligger der (som jeg forstår det) dll-ene registrert i 1C er lagt sammen:
C:\Users\USER\AppData\Roaming\1C\1cv8\ExtCompT
Følgelig er det ikke nødvendig å bruke hele banen til dll-en, du kan ganske enkelt skrive inn navnet:
ConnectExternalComponent("Add1CUniServerAuto32.dll", "UniServerAuto", ExternalComponentType.Native);

Jeg prøver... det sverger ved registrering, men returnerer veieresultatet. Det viser seg at dll-en allerede er registrert, og det betyr at du bare trenger å koble den til. Jeg fjerner den og alt fungerer.
For å oppsummere:
1. Ved veiebehandling inkluderte AtOpening-prosedyren tilkobling av en ekstern komponent og tilkobling til et objekt.
2. Sti til dll-en Jeg skrev den ikke, jeg har bare angitt navnet.

Nå sitter jeg og tenker, når ble dll-en installert i 1C? På tidspunktet for programvareinstallasjon? Neppe... På tidspunktet for lansering av utviklerkonfigurasjonen av denne dll-filen, hvor er den installert når skjemaet åpnes? Jeg vet ikke, men det virker nært for meg... Hva synes du?
Og for det andre, på et nytt sted, når det er behov for å installere den samme terminalen, hva må gjøres for å få alt til å fungere? Bør jeg installere programvaren fullstendig, kjøre leverandørens konfigurasjon for å sjekke operasjonen og så (i teorien) skal behandlingen min fungere? Noe er på en eller annen måte komplisert... Eller bør jeg installere ekstern komponent én gang i behandlingen etter at jeg har installert programvaren?

Jeg vil gjerne høre dine tanker om denne saken...

Spørsmål: Flytte en del av koden til en ekstern komponent


Mange artikler om beskyttelse av behandling beskriver at en del av koden overføres til en ekstern komponent, men det er ikke klart hvordan programmereren opptrer i slike tilfeller.
Alle som har gjort dette eller møtt lignende kjennelser, forklar selve prinsippet ved å bruke et enkelt eksempel. Det ser ut til at alt er klart med å koble til eksterne komponenter.

// Eksempel på utfylling av verditabellen TK.Clear(); Request = Ny forespørsel;
Query.Text = "VELG |

Feil: Installasjon av ekstern komponent mislyktes! Nomenclature.Link HVORDAN Nomenklatur |FRA | Directory.Nomenclature AS Nomenclature"; Request Result = Request.Execute(); Selection = Request Result.Select(); While Selection.Next() Cycle Page = TK.Add(); Fill inPropertyValues(Page, Selection); EndCycle;

Kan du bruke dette eksemplet til å forklare hvilken del av koden som vanligvis tas ut? Det ville være logisk å fjerne delen med forespørselen, men hvordan kan vi få tilgang til databasen fra den eksterne komponenten, omgå plattformen? Det nytter ikke å få frem teksten. Eller ta ut selve dannelsen av den tabellformede delen. Del opplevelsen din med alle som har vært borti dette.


Og at ordet "Inkompatibel" alltid betyr ordet "dårlig"? Ja, det virker for meg at hvis jeg kalte stilen min "1C: Den verste programmeringen på denne skriptmotoren som finnes i naturen (oversatt til litterært språk)!" og så vil det nok være folk som vil sjekke ut dette beistet. Og det ser ut som en klassiker: "Jeg har ikke lest Pasternak, men jeg er helt uenig med ham!"

Spørsmål: Ekstern komponent i Delphi Jeg kan ikke koble til r 1C
Kompilert et eksempelprosjekt av en ekstern komponent
Jeg mottok DLL.

Registrerte det i systemet (Regsvr32 testvk.dll)
Nå må du bruke den i 1C. For å gjøre dette skrev jeg ekstern behandling og i den:
&OnClient
Prosedyre Kommando1 (Kommando)
path="C:\1\VK Template\TestVK\DLL\testvk.dll";
OB = Ny ("Addln.TestVK"); Spørsmål: Eksterne komponenter for 1s 7.7


Hallo. Jeg skriver en komponent for 1c7.7 i c#, jeg kobler den til 1c, alt er bra, men når jeg vil kalle metoder eller egenskaper for 1c, står det "feltet til det samlede objektet ble ikke funnet", gjennom feilsøkeren fant jeg ut at metodene til ILanguageExtender-grensesnittet ikke kalles, etter å ha implementert grensesnittet IInitDone kalles igjen konstruktørklassekomponenter, i henhold til teorien om å skrive eksterne komponenter 1C, må VK implementere minst to grensesnitt - IInitDone og ILanguageExtender, Jeg implementerer dem, men jeg kan ikke forstå hva problemet er. Kanskje noen har noen ideer???

Feil: Installasjon av ekstern komponent mislyktes! Emnet er lukket, problemet løst.

Spørsmål: v7: Ekstern komponent for 1C7 i C#


Hvor kan jeg se på et enkelt eksempel for å lage komponenter for 1C7 i C# som starter med Visual studio 2010??

Feil: Installasjon av ekstern komponent mislyktes!

Se
Lag raskt eksterne komponenter i C#. Eksempler på bruk av Global Context, IAsyncEvent, IExtWndsSupport, WinForms og WPF

Ofte har programmerere problemer med å koble til eksterne komponenter (for eksempel drivere for kommersielt utstyr) når brukere jobber med 1C, kobler til serveren gjennom en terminal.

Dette skyldes noen særegenheter ved den globale kontekstfunksjonen ConnectExternalComponent().

I dette tilfellet ser brukerne for eksempel bildet presentert i kunngjøringen av artikkelen.

Når du arbeider fra lokale datamaskiner, er det ingen problemer med å koble til eksterne komponenter.

Hva henger dette sammen med? Dette er fordi når brukere jobber gjennom en terminalserver, har de færre rettigheter enn når de jobber på en lokal datamaskin.

Du kan enkelt verifisere dette hvis du logger på terminalserveren under en konto med administrative rettigheter.

Årsaken til denne forskjellen er at 1C ikke kan registrere en ekstern komponent i registeret når brukeren arbeider i terminalen under normale rettigheter, fordi en vanlig bruker har ikke tillatelse til å skrive til systemregisteret HKEY_CLASSES_ROOT.

Publikasjoner om emnet tilkobling av eksterne komponenter i terminalen tilbyr en rekke metoder for å løse dette problemet.

For eksempel disse:

1. Start 1C for første gang under administrative rettigheter.

Dette alternativet fungerer ikke alltid. Jeg skal forklare hvorfor nedenfor.

2. Gi vanlige terminalbrukere tillatelse til å skrive til systemregistergrenen HKEY_CLASSES_ROOT.

Utilstrekkelig avanserte brukere bør ikke gjøre dette, ellers kan det oppstå problemer.

3. Bruk ulike dingser, registrer VK på vegne av en bruker med fulle rettigheter.

Det er heller ikke bra.

Så hva er den beste måten å komme seg ut av denne situasjonen på?

Jeg tilbyr min løsning på dette problemet. Etter min mening er den enkel og vakker, ikke tidligere tilbudt på Lancer.

Mens jeg undersøkte dette problemet, stilte jeg meg selv spørsmålet: hvorfor prøver 1C til og med å registrere VK ved å bruke en ny bane? Hun er tross alt allerede registrert i systemet.

Poenget viste seg å være at i typiske 1C-konfigurasjoner (for eksempel "Trade Management") brukes følgende syntaks for den globale kontekstmetoden ConnectExternalComponent():

ConnectExternalComponent("Directory.ConnectedEquipment.Layout.DriverATOLBarcodeScanner", "ATOLScanner");

Som du kan se, er driveren VC koblet fra "ATOLBarcode Scanner Driver"-oppsettet i "Connected Equipment"-katalogen.

Hva skjer da?

1C lagrer komponenten i brukerens midlertidige mappe, for eksempel "C:\Documents and Settings\User\Local Settings\Temp\1032\v8_4_12.tmp"

og prøver å registrere den i registernøkkelen HKEY_CLASSES_ROOT langs denne banen.

På terminalen har vanlige brukere ikke rettigheter til å endre denne registergrenen, så komponenten kobles ikke til dem.

La oss nå snakke om hvordan vi kommer ut av denne situasjonen.

Global kontekstmetode ConnectExternalComponent() har flere syntaksalternativer. Det er dette vi skal bruke.

Så, steg for steg:

1. Registrer den eksterne komponenten ved å bruke regsvr32.exe-verktøyet på terminalserveren i mappen C:\WINDOWS\SYSTEM32 for et 32-biters operativsystem eller i mappen C:\WINDOWS\SYSWOW64 for et 64-biters operativsystem.

2. Bruk ett av to ekstra syntaksalternativer for ConnectExternalComponent()-metoden:

Alternativ 1:

ConnectExternalComponent("C:\WINDOWS\SysWOW64\Scaner1C.dll", "ATOLScanner", ExternalComponentType.COM);

DriverObject = New("AddIn.ATOLScanner.Scaner45");

Alternativ 2:

ProgID = "AddIn.Scaner45";

ConnectExternalComponent(ProgID);

DriverObject = New(ProgID);

Etter min mening er alternativ nummer 2 å foretrekke.

Samtidig prøver ikke 1C å omregistrere VK ved hjelp av en ny bane i registeret og dermed er alle problemer løst.

Vel, det er alt. Lykke til i arbeidet ditt!

/
Utvikling av brukergrensesnitt

Installere eksterne komponenter og plattformutvidelser

1.1. Installasjon av eksterne komponenter og plattformutvidelser skal være interaktive. Brukeren må ta sin egen beslutning om installasjon. Installasjonsdialogen skal angi hva komponenten (utvidelsen) er nødvendig for og hva som ikke vil fungere hvis den ikke er installert.

For eksempel er det feil å bruke konstruksjoner som

Hvis du ikke kobler til den eksterne komponenten(...) så installer den eksterne komponenten(...)

Det er riktig å stille brukeren et spørsmål eksplisitt:

For å fortsette å jobbe må du installere en ekstern komponent. En ekstern komponent lar deg jobbe med rapportering. For å installere komponenten, klikk "Installer". Når installasjonen er fullført, klikker du på Fortsett.

  • Brukeren brukte kommandoen "Send rapport".
  • Denne konfigurasjonen krever at en ekstern komponent er installert.
  • Konfigurasjonen kontrollerer om komponenten er installert.
  • Hvis komponenten ikke er installert, viser brukeren informasjon om at for å sende en rapport må komponenten være installert og en knapp som gjør at komponenten installeres.
  • Brukeren trykker på knappen, installasjonen utføres.
  • Etter installasjonen klikker brukeren på knappen "Fortsett å sende rapport".
  • Programmet fortsetter å sende rapporten.

Dette scenariet vil sikre at komponenter (utvidelser) installeres uten problemer på alle støttede nettlesere, inkludert nettleseren FireFox.

2. Applikasjonsløsningen må gi verktøy for brukeren til å installere eksterne komponenter og utvidelser når som helst under drift. Dermed kan de installeres ikke bare under løsningen av en oppgave, men også i form av en separat handling (fra en administrativ modus).

Når det brukes i konfigurasjon Standard delsystembiblioteker for å installere en utvidelse for arbeid med filer, bruk den generelle kommandoen InstallExtension Arbeide med filer, som anbefales å plasseres i brukerens personlige innstillingsskjema (se generelt skjema _DemoMySettings i demokonfigurasjon). I samme form anbefales det å plassere kommandoer for installasjon av eksterne komponenter som brukeren kan trenge under arbeidet.