Acest lucru se datorează unor particularități ale funcției de context global ConnectExternalComponent() .

Deseori programatorii au probleme la conectarea componentelor externe (de exemplu, drivere pentru echipamente comerciale) atunci când utilizatorii lucrează cu 1C, conectându-se la server printr-un terminal.

În acest caz, utilizatorii văd, de exemplu, această imagine:

În timp ce atunci când lucrați de pe computere locale, nu există probleme cu conectarea componentelor externe.

Cu ce ​​este legat asta? Acest lucru se datorează faptului că atunci când utilizatorii lucrează printr-un server terminal, au mai puține drepturi decât atunci când lucrează pe un computer local.

Puteți verifica cu ușurință acest lucru dacă vă conectați la serverul terminal sub un cont cu drepturi administrative.

Motivul pentru această diferență este că 1C nu poate înregistra o componentă externă în registru atunci când utilizatorul lucrează în terminal cu drepturi normale, deoarece un utilizator obișnuit nu are permisiunea de a scrie în ramura registrului de sistem HKEY_CLASSES_ROOT.

Publicațiile pe tema conectării componentelor externe în terminal oferă o varietate de metode pentru rezolvarea acestei probleme.

De exemplu, acestea:

1. Lansați 1C pentru prima dată cu drepturi administrative.

Această opțiune nu funcționează întotdeauna. Voi explica mai jos de ce.

2. Oferiți utilizatorilor obișnuiți de terminale permisiunea de a scrie în ramura registrului de sistem HKEY_CLASSES_ROOT.

Utilizatorii insuficient de avansați nu ar trebui să facă acest lucru, altfel pot apărea probleme.

3. Folosind diverse gadget-uri, înregistrați VK în numele unui utilizator cu drepturi depline.

Nici nu e bine.

Deci, care este cel mai bun mod de a ieși din această situație?

Ofer soluția mea la această problemă. După părerea mea - simplu și frumos.

În timp ce cercetam această problemă, mi-am pus întrebarea: de ce încearcă 1C să înregistreze VK folosind o nouă cale? La urma urmei, ea este deja înregistrată în sistem.

Ideea s-a dovedit a fi că, în configurațiile tipice 1C (de exemplu, „Gestionarea comerțului”), următoarea sintaxă este utilizată pentru metoda contextului global Connect External Component():

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

După cum puteți vedea, driverul VC este conectat din aspectul „ATOLBarcode Scanner Driver” din directorul „Connected Equipment”.

Ce se întâmplă atunci?

1C salvează componenta în folderul temporar al utilizatorului, de exemplu „C:\Documents and Settings\User\Local Settings\Temp\1032\v8_4_12.tmp”

și încearcă să-l înregistreze în filiala de registru HKEY_CLASSES_ROOT exact pe acest drum.

Pe terminal, utilizatorii obișnuiți nu au drepturi de a schimba această ramură de registry, așa că componenta nu se conectează la ei.

Acum să vorbim despre cum să ieșim din această situație.

Metoda de context global ConnectExternalComponent() are mai multe opțiuni de sintaxă. Acesta este ceea ce vom folosi.

Deci, pas cu pas:

1. Înregistrați componenta externă utilizând utilitarul regsvr32.exe pe serverul terminal în folderul C:\WINDOWS\SYSTEM32 pentru un sistem de operare pe 32 de biți sau în folderul C:\WINDOWS\SYSWOW64 pentru un sistem de operare pe 64 de biți.

2. Utilizați una dintre cele două opțiuni de sintaxă suplimentare pentru metoda ConnectExternalComponent():

Opțiunea 1:

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

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

Opțiunea 2:

ProgID = "AddIn.Scaner45";

ConnectExternalComponent(ProgID);

DriverObject = New(ProgID);

După părerea mea, este de preferat varianta numărul 2.

În același timp, 1C nu încearcă să reînregistreze VK folosind o nouă cale în registry și astfel toate problemele sunt rezolvate.

Ei bine, asta-i tot. Mult succes in munca ta!

[trebuie să vă înregistrați pentru a vedea linkul]

Întrebare: Instalarea unei componente externe


Vă rog să-mi spuneți cum să instalez o componentă externă. La executarea următorului cod, se afișează o eroare. În aspect, găsiți NameDecl.dll

Încercarea de a SetExternalComponent("GeneralLayout.Layout");
Excepție EndTry ;

Eroare: instalarea componentelor externe a eșuat! ()
Răspuns:
ConnectExternalComponent("GeneralLayout.Layout", "NameDecl", ExternalComponentType.Native) returnează FALSE.

New("AddIn.NameDecl.CNameDecl", Nedefinit) = (()): Tip nedefinit (AddIn.NameDecl.NameDecl)


Întrebare: Conectarea unei componente externe în 1s 8.3.6 și Win8
AfterConnecting = New Alert Description("AfterConnectingVK", ThisForm);
StartInstallingExternalComponents(,"C:\Controller\vk_rs232.dll");
StartConnectingExternalComponents(AfterConnecting,"C:\Controller\vk_rs232.dll","DLL_Scales");

și primesc eroarea că
„Instalarea unei componente externe a eșuat! Este posibil să lipsească o componentă pentru aplicația client pe care o utilizați!”.
Si acum nu inteleg:
1. Poate componenta nu este înregistrată în registry - cum pot să o verific acolo?
2. Poate că „versiunea” sa nu funcționează sub Win8, deși o am pe 32 de biți.

Eroare: instalarea componentelor externe a eșuat! 3. Poate că 1C în sine este prea nou, adică. În consecință, nu poate funcționa cu acest dll?
4. Ei bine, este banal - scriu ceva greșit.
Și toate acestea m-au condus la următoarea problemă. VneshComp este instalat, acum trebuie să-l conectați. Și aici sunt ambele opțiuni

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

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


da FALSE!!!
Întrebare: External component.dll
O zi buna tuturor.
O astfel de întrebare.
O componentă dll care funcționează excelent în 1C 7.7
1s 8.1 nu vrea să pornească deloc...
Am încercat să-l inserez în C:\Program Files\1cv81\bin\cache1c.dll
Am încercat să mă înregistrez folosind regsvr32 „C:\Program Files\1cv81\bin\cache1c.dll”

Se inregistreaza fara probleme.
Când vreau să-l accesez, primesc un mesaj de eroare: Eroare la încărcarea componentei externe! cache1c.dll Procedură ButtonExecutePress(Button) Încercați să încărcați o componentă externă ( „C:\Program Files\1cv81\bin\cache1c.dll”); Raport de excepție (

Eroare: instalarea componentelor externe a eșuat!„Eroare la încărcarea componentei externe!”
+ "cache1c.dll"); EndTempt; Încercați // Obțineți obiectul componentă.
// m = Nou ("cache1c.GTMcmd"); m = New COMObject("cache1c.GTMcmd"); Raport de excepție(); EndTempt; Sfârșitul procedurii E banal pana la imposibilitate...
Trebuie să întrerupeți între apeluri (milisecunde)...

Procedure ButtonExecutePress(Button) Attempt // Obține un obiect component.


m = New COMObject("cache1c.GTMcmd"); Raport de excepție (

„Nu s-a putut crea obiectul component extern”

); EndTempt;
Există un makefile în interiorul proiectului NativeApi. Cu ajutorul lui, construiesc o bibliotecă .so pe Ununtu.
Dar când „Conectează componenta externă” 1c se blochează.
La fel, dacă construiesc folosind „build.sh” (în rădăcina proiectului).

În makefile-ul în sine schimb steag-ul de la m32 la m64, pentru că 1c și sistemul x64 însuși. (cu parametrul m32 oricum nu se conecteaza)
Iată un exemplu de apelare a VK din 1C 8.3:
Conexiune gata = ConnectExternalComponent("/home/alexeyubuntux64-20 gb/Documents/VNCOMP83/example/NativeAPI/AddInNative.so", "AddInNative", ExternalComponentType.Native);
Există un articol doar pe acest subiect.

Dar, din câte văd, toate aceste puncte au fost deja luate în considerare și corectate în exemplul VNCOMPS.

Dar, în esență, este o chestiune de parametri de compilare. O componentă externă MB pe 32 de biți se conectează la un 1c pe 32 de biți în mod normal, dar am implementat-o ​​pe Ubuntu x64 1c enterprise83 8.3.5-1486 amd64. Și vreau să mă conectez cu ea pe VK.
Are cineva vreo idee despre cum să rezolvi această problemă?)

Eroare: instalarea componentelor externe a eșuat! Exemplul VNCOMPS ar trebui să funcționeze, dar parametrii de compilare trebuie ajustați sau platforma în sine pe care testez este incorectă.

Mă întreb, este posibil să scrii o componentă externă în Java?


Întrebare: Lucrul cu o componentă externă cu un server 1C...

Bună ziua,
Există o componentă externă scrisă în C++, a cărei sarcină este să obțină informații dintr-o bază de date externă și să returneze rezultatul interogării sub forma unui Tabel de Valori în 1C.
Pentru a genera un tabel de valori la momentul curent, se folosește interfața IDispatch* pBackConnection, primită ca parametru în funcția Init(). În continuare, folosesc pur și simplu funcțiile 1C pentru a crea un tabel de valori, îl umplu și îl returnez la al doilea parametru din CallAsFunc (...).
Problemele au început cu trecerea la thin clients 1C. Pe partea de server, componenta externă nu pornește cu adevărat. Îl puteți rula pe partea clientului, dar totul arată ca niște cârje și iese din logica generală „client-server” în 1C. De exemplu, clientul nu înțelege ce este un tabel de valori, probleme cu variabile „globale”, sesiuni etc.
NativeAPI este și mai limitat în acest sens.
Dansul cu tamburina a dus la faptul că am putut lansa o componentă externă sub serverul 1C, DAR munca continuă până când se încearcă apelarea Invoke pe pBackConnection. Versiunea pe 64 de biți a serverului 8.2 încearcă să facă ceva până când expiră, versiunea pe 32 de biți (VK este, desigur, și pe 32 de biți) pur și simplu cade imediat.
În consecință, apar întrebări: este temporar sau logica 1C se rezumă la anularea acestei scheme de lucru? Dacă este imposibil să creați structuri interne 1C (un tabel de valori) în acest fel, există, în principiu, o descriere a ceea ce este un tabel de valori la nivel de sistem pentru a încerca să îl creați în C++, umpleți-l și apoi introduceți-l pur și simplu în 1C ca parametru de returnare? Aș dori măcar să obțin o direcție în care să sap.

Multumesc.

Eroare: instalarea componentelor externe a eșuat!

Scrii un lucru și vrei să spui altceva.
În mediul 1C, declararea variabilelor care vor fi vizibile în diferite sesiuni nu este imposibilă acum și nu exista o astfel de posibilitate înainte. O altă sesiune este un proces diferit din punct de vedere fizic.
O sesiune este o sesiune care se conectează la o bază de date, de ex. sesiune utilizator. Sau pui ceva al tău în acest concept?

Într-o singură sesiune a fost posibil, iar acum este posibil, să se declare variabile în modulul de sesiune care vor trăi și vor fi vizibile în cadrul sesiunii din diferite locuri... de fapt, sunt 4 dintre ele.
- Modul de sesiune;
- Modul de aplicare regulat;
- Modul de aplicație gestionat;
- Modul de conectare extern.

Ei bine, desigur, trebuie să vă amintiți contextul. Contextul serverului nu este direct accesibil din partea clientului și invers.

De fapt, arhitectura 1C prevede că schimbul de date se va desfășura după cum urmează:
- prin intermediul parametrilor/retururilor de proceduri/functii;
- prin intermediul așa-numiților parametri de sesiune (nu pot fi obiecte, dar efectiv vizibile în paletă).

Un tabel de pe formular... este conectat la un tabel de obiecte (procesare, de exemplu)? sau nu. Dacă da, atunci este disponibil pe server (&OnServer) și editați acolo....

Și totuși, da, Tabelul de valori nu este disponibil în UV pe partea clientului. Ei bine, asta a decis 1C.

Haide! Funcționează cu Excel, funcționează cu FSO și o grămadă de alte lucruri, dar nu funcționează aici. Prinde eroarea si analizeaza....

Încercare
...
acțiunile tale
...
Excepţie
str = ErrorDescription();
EndTempt;

Cu capabilitățile hardware moderne, acesta nu este deloc un argument.

Părerea ta pur personală. nu are nimic de-a face cu realitatea. Nu în niciun fel. Repet încă o dată, 1C funcționează excelent cu COM. Ambele cu in-proc și out-proc.

Vă rugăm să furnizați codul pe care îl utilizați pentru a descărca și să contactați VK.

Apropo, VK... în cazul tău, este COM sau API nativ?
Dacă COM, atunci îl înregistrați ca... prin regsvr32... cum „rezolvați” problema adâncimii de biți?

Întrebare: 1C8 și o componentă externă cu tipul Nativ


Bună ziua.
Am o configurație BP 3.0.50.12 și dorința de a implementa cântărirea de la compania Vesy-Soft folosind UniServerAuto în ea.
Dezvoltatorii au compilat componenta în Native pentru Windows 32 și 64 și au arhivat-o cu fișierul principal. Există, de asemenea, un exemplu pentru 1C despre modul în care poate fi calculată greutatea. În ea, folosind un aspect cu date binare, această arhivă este indicată, după cum am înțeles. În exemplu, totul este în regulă: componenta este instalată, conectată, apoi se stabilește conexiunea și se citește greutatea.
Dar de îndată ce începi să-l transferi la 1C, greutatea nu este citită. Totul pare a fi scris simplu, dar nu înțeleg unde este grebla.
Cine are puțin timp - ajută, aruncă o privire cu un ochi, poate că soluția este la suprafață, dar merg undeva în locul greșit și fac lucrul greșit. Nu am fost niciodată nevoit să lucrez cu tehnologia nativă până acum...

Și în atașament este textul meu de procesare

Eroare: instalarea componentelor externe a eșuat!

Ei bine, am vești...
Tocmai am început să văd pas cu pas în ce moment va începe să eșueze. Pentru a face acest lucru, am creat o bază de date goală și am procesat-o cu comanda. Prin analogie cu exemplul furnizorului, am transferat aspectul într-o nouă configurație - funcționează a doua oară. Aceste. prima dată nu, dar a doua oară da. Acest lucru a condus la ideea că în prelucrarea noastră ar fi totuși necesară separarea conexiunii componentei și obiectului conform diferitelor proceduri.
Apoi l-am transferat în baza mea de date cu conexiunea aspectului - funcționează. Pf, e bine.... Dar aș dori să nu fac modificări la configurație, așa că hai să mergem mai departe

Încerc să adaug aspectul la procesare. Dimensiunea sa crește imediat de la 10kb la 3mb și se observă o încetinire semnificativă a funcționării - nu este potrivit. Încep să cercetez conectarea componentelor prin dll. Aceste. în esență la fel ca de unde am început. Dar există un „DAR”: când am căutat numele dll-ului în folderul utilizatorului, am observat că acest dll se află unde (după cum am înțeles) sunt adăugate dll-urile înregistrate în 1C:
C:\Utilizatori\UTILIZATOR\AppData\Roaming\1C\1cv8\ExtCompT
În consecință, nu este nevoie să folosiți calea completă către dll, puteți pur și simplu să introduceți numele acestuia:
ConnectExternalComponent(„Add1CUniServerAuto32.dll”, „UniServerAuto”, ExternalComponentType.Native);

Încerc... înjură la înregistrare, dar returnează rezultatul cântăririi. Se pare că dll-ul este deja înregistrat și asta înseamnă că trebuie doar să îl conectați. Il scot si totul merge.
Pentru a rezuma:
1. În procesarea cântăririi, procedura AtOpening a inclus conectarea unei componente externe și o conexiune la un obiect.
2. Calea către dll nu am scris-o, doar i-am indicat numele.

Acum stau și mă gândesc, când a fost instalat dll-ul în 1C? În momentul instalării software-ului? Cu greu... La momentul lansării configurației pentru dezvoltatori a acestui dll, unde este instalat când se deschide formularul? Nu știu, dar mi se pare aproape... Ce părere ai?
Și în al doilea rând, într-un loc nou, când este nevoie să instalați același terminal, ce trebuie făcut pentru ca totul să funcționeze? Ar trebui să instalez software-ul complet, să rulez configurația furnizorului pentru a verifica funcționarea și apoi (teoretic) ar trebui să funcționeze procesarea mea? Ceva este cumva complicat... Sau ar trebui să fac Instalarea componentei externe o dată în procesare după ce am instalat software-ul?

As dori sa aud parerile voastre despre aceasta chestiune...

Întrebare: Mutarea unei părți a codului într-o componentă externă


Multe articole despre protecția procesării descriu că o parte a codului este transferată către o componentă externă, dar nu este clar cum acționează programatorul exact în astfel de cazuri.
Oricine a făcut acest lucru sau a întâlnit hotărâri similare, explică principiul însuși folosind un exemplu simplu. Se pare că totul este clar cu conectarea componentelor externe.

// Exemplu de completare a tabelului de valori TK.Clear(); Solicitare = Solicitare nouă;
Query.Text = "SELECTARE |

Eroare: instalarea componentelor externe a eșuat! Nomenclatură.Link CUM Nomenclatură |DIN | Directory.Nomenclature AS Nomenclature"; Request Result = Request.Execute(); Selection = Request Result.Select(); While Selection.Next() Cycle Page = TK.Add(); Fill inPropertyValues(Page, Selection); EndCycle;

Ați putea folosi acest exemplu pentru a explica ce parte a codului este de obicei scoasă? Ar fi logic să eliminăm partea cu cerere, dar atunci cum putem accesa baza de date din componenta externă, ocolind platforma? Nu are rost să scoți textul. Sau eliminați însăși formarea părții tabulare. Împărtășiți-vă experiența cu oricine s-a confruntat cu asta.


Și că cuvântul „Incompatibil” înseamnă întotdeauna cuvântul „Rău”? Da, mi se pare că dacă mi-aș numi stilul „1C: Cea mai proastă programare pe acest motor de scripting care există în natură (tradusă în limbaj literar)!” și atunci probabil vor exista oameni care vor să verifice această fiară. Și arată ca un clasic: „Nu am citit Pasternak, dar nu sunt complet de acord cu el!”

Întrebare: Componentă externă din Delphi nu pot conecta r 1C
Compilat un exemplu de proiect al unei componente externe
Am primit DLL-ul.

L-a înregistrat în sistem (Regsvr32 testvk.dll)
Acum trebuie să-l folosești în 1C. Pentru a face acest lucru, am scris procesare externă și în ea:
&OnClient
Procedură Comanda 1 (Comandă)
path="C:\1\VK Template\TestVK\DLL\testvk.dll";
OB = Nou ("Addln.TestVK" Întrebare: Componente externe pentru 1s 7.7.);


Buna ziua. Scriu o componentă pentru 1c7.7 în c#, o conectez la 1c, totul este în regulă, dar când vreau să apelez metode sau proprietăți pentru 1c, îmi spune „câmpul obiectului agregat nu a fost găsit”, prin depanatorul am aflat că metodele interfeței ILanguageExtender nu sunt apelate, după implementarea interfeței IInitDone se numește din nou componentele claselor constructoare, conform teoriei scrierii componentelor externe 1C, VK trebuie să implementeze cel puțin două interfețe - IInitDone și ILanguageExtender, Le implementez, dar nu inteleg care este problema Poate are cineva idei???

Eroare: instalarea componentelor externe a eșuat! Subiect închis, problema rezolvată.

Întrebare: v7: componentă externă pentru 1C7 în C#


Unde pot să mă uit la un exemplu simplu pentru crearea de componente pentru 1C7 în C# începând cu Visual studio 2010?

Eroare: instalarea componentelor externe a eșuat!

Uite
Creați rapid componente externe în C#. Exemple de utilizare a contextului global, IAsyncEvent, IExtWndsSupport, WinForms și WPF

Deseori programatorii au probleme la conectarea componentelor externe (de exemplu, drivere pentru echipamente comerciale) atunci când utilizatorii lucrează cu 1C, conectându-se la server printr-un terminal.

Acest lucru se datorează unor particularități ale funcției de context global ConnectExternalComponent().

În acest caz, utilizatorii văd, de exemplu, poza prezentată în anunțul articolului.

În timp ce atunci când lucrați de pe computere locale, nu există probleme cu conectarea componentelor externe.

Cu ce ​​este legat asta? Acest lucru se datorează faptului că atunci când utilizatorii lucrează printr-un server terminal, au mai puține drepturi decât atunci când lucrează pe un computer local.

Puteți verifica cu ușurință acest lucru dacă vă conectați la serverul terminal sub un cont cu drepturi administrative.

Motivul pentru această diferență este că 1C nu poate înregistra o componentă externă în registru atunci când utilizatorul lucrează în terminal cu drepturi normale, deoarece un utilizator obișnuit nu are permisiunea de a scrie în ramura registrului de sistem HKEY_CLASSES_ROOT.

Publicațiile pe tema conectării componentelor externe în terminal oferă o varietate de metode pentru rezolvarea acestei probleme.

De exemplu, acestea:

1. Lansați 1C pentru prima dată cu drepturi administrative.

Această opțiune nu funcționează întotdeauna. Voi explica mai jos de ce.

2. Oferiți utilizatorilor obișnuiți de terminale permisiunea de a scrie în ramura registrului de sistem HKEY_CLASSES_ROOT.

Utilizatorii insuficient de avansați nu ar trebui să facă acest lucru, altfel pot apărea probleme.

3. Folosind diverse gadget-uri, înregistrați VK în numele unui utilizator cu drepturi depline.

Nici nu e bine.

Deci, care este cel mai bun mod de a ieși din această situație?

Ofer soluția mea la această problemă. După părerea mea, este simplu și frumos, neoferit anterior pe Lancer.

În timp ce cercetam această problemă, mi-am pus întrebarea: de ce încearcă 1C să înregistreze VK folosind o nouă cale? La urma urmei, ea este deja înregistrată în sistem.

Ideea s-a dovedit a fi că în configurațiile tipice 1C (de exemplu, „Managementul comerțului”) este utilizată următoarea sintaxă a metodei contextului global ConnectExternalComponent():

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

După cum puteți vedea, driverul VC este conectat din aspectul „ATOLBarcode Scanner Driver” din directorul „Connected Equipment”.

Ce se întâmplă atunci?

1C salvează componenta în folderul temporar al utilizatorului, de exemplu „C:\Documents and Settings\User\Local Settings\Temp\1032\v8_4_12.tmp”

și încearcă să-l înregistreze în cheia de registry HKEY_CLASSES_ROOT de-a lungul acestei căi.

Pe terminal, utilizatorii obișnuiți nu au drepturi de a schimba această ramură de registry, așa că componenta nu se conectează la ei.

Acum să vorbim despre cum să ieșim din această situație.

Metoda contextului global ConnectExternalComponent() are mai multe opțiuni de sintaxă. Acesta este ceea ce vom folosi.

Deci, pas cu pas:

1. Înregistrați componenta externă utilizând utilitarul regsvr32.exe pe serverul terminal în folderul C:\WINDOWS\SYSTEM32 pentru un sistem de operare pe 32 de biți sau în folderul C:\WINDOWS\SYSWOW64 pentru un sistem de operare pe 64 de biți.

2. Utilizați una dintre cele două opțiuni de sintaxă suplimentare pentru metoda ConnectExternalComponent():

Opțiunea 1:

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

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

Opțiunea 2:

ProgID = "AddIn.Scaner45";

ConnectExternalComponent(ProgID);

DriverObject = New(ProgID);

După părerea mea, este de preferat varianta numărul 2.

În același timp, 1C nu încearcă să reînregistreze VK folosind o nouă cale în registry și astfel toate problemele sunt rezolvate.

Ei bine, asta-i tot. Mult succes in munca ta!

/
Dezvoltarea interfeței cu utilizatorul

Instalarea componentelor externe și a extensiilor de platformă

1.1. Instalarea componentelor externe și a extensiilor de platformă ar trebui să fie interactivă. Utilizatorul trebuie să ia propria decizie cu privire la instalare. Dialogul de instalare ar trebui să indice pentru ce este necesară componenta (extensia) și ce nu va funcționa dacă nu este instalată.

De exemplu, este incorect să folosiți construcții precum

Dacă nu conectați componenta externă(...), atunci instalați componenta externă(...)

Este corect să puneți utilizatorului o întrebare în mod explicit:

Pentru a continua lucrul, trebuie să instalați o componentă externă. O componentă externă vă va permite să lucrați cu raportare. Pentru a instala componenta, faceți clic pe „Instalare”. După finalizarea instalării, faceți clic pe Continuare.

  • Utilizatorul a folosit comanda „Trimite raport”.
  • Această configurație necesită instalarea unei componente externe.
  • Configurația verifică dacă componenta este instalată.
  • Dacă componenta nu este instalată, afișează utilizatorului informații că, pentru a trimite un raport, componenta trebuie să fie instalată și un buton care face ca componenta să fie instalată.
  • Utilizatorul apasă butonul, instalarea este efectuată.
  • După instalare, utilizatorul face clic pe butonul „Continuați trimiterea raportului”.
  • Programul continuă să trimită raportul.

Acest scenariu va asigura că componentele (extensiile) sunt instalate fără probleme pe toate browserele acceptate, inclusiv pe browser FireFox.

2. Soluția aplicației trebuie să ofere utilizatorului instrumente pentru a instala componente și extensii externe în orice moment în timpul funcționării. Astfel, ele pot fi instalate nu numai în timpul rezolvării unei sarcini, ci și sub forma unei acțiuni separate (din anumite moduri administrative).

Când este utilizat în configurare Biblioteci standard de subsistem pentru a instala o extensie pentru lucrul cu fișiere, utilizați comanda generală InstallExtension Lucrul cu fișierele, care se recomandă să fie plasat în formularul de setări personale al utilizatorului (vezi formularul general _DemoMySettingsîn configurație demo). În aceeași formă, se recomandă plasarea comenzilor pentru instalarea componentelor externe de care utilizatorul ar putea avea nevoie în timpul lucrului său.