Počítače Windows Internet

1c núdzový režim externého spracovania. Núdzový režim je nastavený. Operácia je zakázaná. Spustenie externého spracovania v normálnom aplikačnom režime

Programové otvorenie externého spracovania sa vykonáva pomocou objektu globálneho kontextu ExternalProcessing, ktorý má typ ExternalProcessingManager. Pre každý prevádzkový režim platformy 1C (režim bežnej aplikácie a režim riadenej aplikácie) sa na prácu s externým spracovaním používajú rôzne objektové metódy.

Spustenie externého spracovania v normálnom aplikačnom režime

V typickej aplikácii musíte použiť metódu Create() objektu ExternalProcessing, ktorej sa odovzdá úplný názov súboru externého spracovania. Metóda vracia objekt typu Externé spracovanie, tento objekt je otvorené externé spracovanie. Ak potrebujete otvoriť formulár externého spracovania, zavolajte metódu GetForm() na prijatom objekte, ktorá vráti hlavný formulár, a potom zavolajte metódu Open() na jeho otvorenie.


Spracovanie = ExternalProcessing.Create(FullFileName);
Processing.GetForm().Open();

Pri externom spracovaní musí byť hlavný formulár vždy bežný a riadený formulár musí byť vždy doplnkový, inak metóda GetForm() nebude fungovať v normálnom režime aplikácie.

Spustenie externého spracovania v režime riadenej aplikácie

V režime spravovaných formulárov je algoritmus rozdelený podľa kontextu vykonávania. Na klientovi dostávame binárne dáta s použitím celého názvu externého spracovateľského súboru. Prijaté binárne dáta prenesieme na server a uložíme ich do dočasného úložiska. Ďalej je potrebné zavolať metódu Connect() objektu ExternalProcessing, ktorému sa odovzdá adresa dočasného úložiska. Metóda vráti názov pripojeného externého spracovania. Klientovi vrátime názov externého spracovania, vytvoríme reťazec cestu k formuláru spracovania a pomocou metódy OpenForm() otvoríme formulár externého spracovania.

&Na serveri
Funkcia GetExternalProcessingName(BinaryData)
AddressInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Return ExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&OnClient
FullFileName = ""; // Úplný názov súboru externého spracovania.
FileData = new BinaryData(FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm("ExternalProcessing." + ExternalProcessingName + ".Form");

Núdzový režim pre externé spracovanie

Metódy Create() a Connect() objektu ExternalProcessing majú vstupný parameter SafeMode – znak pripojenia externého spracovania v núdzovom režime. Ak parameter nie je zadaný, pripojenie sa uskutoční v zabezpečenom režime.
Núdzový režim je navrhnutý tak, aby chránil systém pred spustením „nedôveryhodného“ programového kódu na serveri. Potenciálne nebezpečenstvo pochádza z externého spracovania alebo programového kódu zadaného používateľom na použitie v metódach Run() a Calculate().
Núdzový režim ukladá nasledujúce obmedzenia:
  • privilegovaný režim sa zruší, ak bol nainštalovaný;
  • pokusy o vstup do privilegovaného režimu sú ignorované;
  • operácie s objektmi COM sú zakázané;
  • nakladanie a pripájanie externých komponentov je zakázané;
  • prístup do súborového systému je zakázaný (okrem dočasných súborov);
  • Prístup na internet je zakázaný.
Interaktívne otvárané procesy sa nevykonávajú v núdzovom režime, preto sa odporúča implementovať mechanizmus na otváranie externých procesorov v núdzovom režime, ako aj na úrovni povolení, aby sa používateľovi zakázalo interaktívne otvárať externé procesory.
Na zákaz interaktívneho otvárania spracovania je vo všetkých rolách priradených používateľovi potrebné odstrániť právo „Interaktívne otváranie externého spracovania“ (pozri obrázok 1).
Obrázok 1. Práva na interaktívne otváranie externého spracovania/správ
Právo „Interaktívne otvorenie externého spracovania“ nijako neovplyvňuje objekt Externé spracovanie.

Programové otváranie externých zostáv je podobné externému spracovaniu, ale mali by ste použiť objekt globálneho kontextu ExternalReports, ktorý má typ ExternalReportsManager.

Tlačiť (Ctrl+P)

Konfiguračné objekty

Ak je potrebné na serveri použiť „nedôveryhodný“ programový kód: externé spracovanie alebo programový kód zadaný používateľom na použitie v metódach Run() a Calculate(), môžete použiť bezpečný prevádzkový režim.

V núdzovom režime:

  • Privilegovaný režim zrušené.
  • Prepnutie do privilegovaného režimu ignoroval.
  • Zakázané operácie vedúce k použitiu externých prostriedkov vo vzťahu k platforme 1C:Enterprise (vrátane neblokujúcich analógov špecifikovaných metód):
  • COM mechanizmy:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Načítanie externých komponentov:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • Prístup k súborovému systému:
    • ValueInFile();
    • CopyFile();
    • MergeFiles();
    • MoveFile();
    • SplitFile();
    • CreateDirectory();
    • Vymazať súbory();
    • Nový súbor;
    • Nový xBase;
    • EntryHTML.OpenFile();
    • ReadHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • New ReadText(), ak je prvým parametrom reťazec;
    • ReadText.Open(), ak je prvým parametrom reťazec;
    • NewTextRecord(), ak je prvým parametrom reťazec;
    • WriteText.Open(), ak je prvým parametrom reťazec;
    • NewTextExtract();
    • zmena vlastnosti ExtractText.FileName;
    • ExtrahovaťText.Write();
    • New Picture(), ak je prvým parametrom reťazec;
    • Picture.Write();
    • new BinaryData();
    • BinaryData.Write();
    • NewDataRecord(), ak je prvým parametrom reťazec;
    • Nové ReadData(), je tu prvý parameter - reťazec;
    • všetky metódy objektu FileStreamManager;
    • New FileStream();
    • FormattedDocument.Write();
    • GeographicScheme.Read();
    • GeographicScheme.Write();
    • GeographicScheme.Print();
    • TabularDocument.Read();
    • TabularDocument.Write();
    • TabularDocument.Print(); GraphicScheme.Read();
    • GraphicScheme.Write();
    • GraphicScheme.Print();
    • TextDocument.Read();
    • TextDocument.Write().
  • Prístup na internet:
    • Nové internetové pripojenie,
    • Nový InternetMail,
    • Nový InternetProxy,
    • Nové HTTP pripojenie,
    • Nové FTP pripojenie.

POZOR! Pri vykonávaní zakázaných operácií sa za behu vyvolá výnimka.

Poznámka. Externé hlásenia a spracovanie otvorené pomocou ponuky Súbor - Otvoriť sa vykonávajú v núdzovom režime, ak používateľ nemá práva správcu.

Počet zapnutí núdzového režimu sa musí zhodovať s počtom vypnutí. Ak bol však núdzový režim zapnutý v rámci postupu alebo funkcie (raz alebo viackrát), ale nebol vypnutý, systém sa automaticky vypne toľkokrát, koľkokrát bolo v postupe alebo funkcii neúplných zapnutí.

Ak v procedúre alebo funkcii volá metódu SetSafeMode (False) vykonali viac ako len volania metód SetSafeMode (True), potom bude vyvolaná výnimka.

Inštalácia softvéru v núdzovom režime môže byť potrebná v prípade, keď vývojár konfigurácie zamýšľa použiť programový kód tretej strany (vo vzťahu ku konfigurácii), ktorého spoľahlivosť vývojár nemôže zaručiť. Príkladom takéhoto kódu je vykonávanie metód Execute() a Compute() v prípadoch, keď je spustiteľný kód získaný z vonkajšieho sveta. V tomto prípade by bolo dobrým postupom nastaviť núdzový režim pred vykonaním týchto metód:

// Vygeneruje sa kód programu, ktorý by sa mal spustiť // Je možné, že kód je načítaný z externých zdrojov // alebo je zadaný manuálne ExecutableCode = GetExecutedCodeFromExternalWorld(); // Povolenie bezpečného režimu SetSafeMode(True); // Spustenie potenciálne nebezpečného kódu Execute(ExecutableCode); // Vypnutie bezpečného režimu SetSafeMode(False);

V niektorých prípadoch môžu nastavenia núdzového režimu kolidovať s nastaveniami privilegovaného režimu. Príkladom takéhoto konfliktu je zaúčtovanie dokumentu, pre ktorý je nastavený režim Privilegovaný pri vlastnosti účtovania, z kódu vo vstavanom jazyku, ktorý sa vykonáva v núdzovom režime. V tomto prípade je privilegovaný režim zakázaný a pokusy o jeho aktiváciu sú ignorované. Výsledkom je, že kód vo vloženom jazyku, ktorý „počíta“ so zapnutým privilegovaným režimom, „naráža“ na jeho absenciu, čo vedie k chybám s nezjavnými dôvodmi ich výskytu. Aby sa predišlo tejto situácii, systém 1C:Enterprise automaticky deaktivuje bezpečný režim pre obsluhu udalostí, ktoré sú k dispozícii v objektovom module alebo module manažéra, za predpokladu, že spustiteľný kód vo vstavanom jazyku sa nenachádza v rozšírení konfigurácie. Takéto manipulátory sú v asistentovi syntaxe označené špeciálnym spôsobom.

Poskytuje tiež možnosť zakázať núdzový režim zo vstavaného jazyka (ak programový kód, ktorý sa ho pokúša zakázať, nie je v rozšírení konfigurácie). Ak chcete vypnúť núdzový režim, existuje spôsob SetDisableSafeMode(). Pomocou tejto metódy môžete skontrolovať, či je bezpečný režim momentálne zakázaný (automaticky alebo volaním metódy). GetDisableSafeMode().

V rámci jednej metódy v zabudovanom jazyku nemôže existovať viac ako jedna úroveň vnorenia nastavenia bezpečného režimu (volaním metódy SetSafeMode()) a nastavenia vypnutia bezpečného režimu (automaticky počas vykonávania udalosti metaúdajového objektu manipulátory alebo volaním metódy SetSafeModeDisable(). Pri pokuse o zvýšenie vnorenia sa vyvolá výnimka:

// Správne použitie ProcedureProcedureName() SetDisableSafeMode(True); SetSafeMode(true); SetSafeMode(False); SetDisableSafeMode(False); EndProcedure // Nesprávne použitie ProcedureProcedureName() SetDisableSafeMode(True); SetSafeMode(true); SetDisableSafeMode(False); // Výnimka EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(False); // Výnimka EndProcedure

Programové otvorenie externého spracovania sa vykonáva pomocou objektu globálneho kontextu ExternalProcessing, ktorý má typ ExternalProcessingManager. Pre každý prevádzkový režim platformy 1C (režim bežnej aplikácie a režim riadenej aplikácie) sa na prácu s externým spracovaním používajú rôzne objektové metódy.

Spustenie externého spracovania v normálnom aplikačnom režime

V typickej aplikácii musíte použiť metódu Create() objektu ExternalProcessing, ktorej sa odovzdá úplný názov súboru externého spracovania. Metóda vracia objekt typu Externé spracovanie, tento objekt je otvorené externé spracovanie. Ak potrebujete otvoriť formulár externého spracovania, zavolajte metódu GetForm() na prijatom objekte, ktorá vráti hlavný formulár, a potom zavolajte metódu Open() na jeho otvorenie.


Spracovanie = ExternalProcessing.Create(FullFileName);
Processing.GetForm().Open();

Pri externom spracovaní musí byť hlavný formulár vždy bežný a riadený formulár musí byť vždy doplnkový, inak metóda GetForm() nebude fungovať v normálnom režime aplikácie.

Spustenie externého spracovania v režime riadenej aplikácie

V režime spravovaných formulárov je algoritmus rozdelený podľa kontextu vykonávania. Na klientovi dostávame binárne dáta s použitím celého názvu externého spracovateľského súboru. Prijaté binárne dáta prenesieme na server a uložíme ich do dočasného úložiska. Ďalej je potrebné zavolať metódu Connect() objektu ExternalProcessing, ktorému sa odovzdá adresa dočasného úložiska. Metóda vráti názov pripojeného externého spracovania. Klientovi vrátime názov externého spracovania, vytvoríme reťazec cestu k formuláru spracovania a pomocou metódy OpenForm() otvoríme formulár externého spracovania.

&Na serveri
Funkcia GetExternalProcessingName(BinaryData)
AddressInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Return ExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&OnClient
FullFileName = ""; // Úplný názov súboru externého spracovania.
FileData = new BinaryData(FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm("ExternalProcessing." + ExternalProcessingName + ".Form");

Núdzový režim pre externé spracovanie

Metódy Create() a Connect() objektu ExternalProcessing majú vstupný parameter SafeMode – znak pripojenia externého spracovania v núdzovom režime. Ak parameter nie je zadaný, pripojenie sa uskutoční v zabezpečenom režime.
Núdzový režim je navrhnutý tak, aby chránil systém pred spustením „nedôveryhodného“ programového kódu na serveri. Potenciálne nebezpečenstvo pochádza z externého spracovania alebo programového kódu zadaného používateľom na použitie v metódach Run() a Calculate().
Núdzový režim ukladá nasledujúce obmedzenia:
  • privilegovaný režim sa zruší, ak bol nainštalovaný;
  • pokusy o vstup do privilegovaného režimu sú ignorované;
  • operácie s objektmi COM sú zakázané;
  • nakladanie a pripájanie externých komponentov je zakázané;
  • prístup do súborového systému je zakázaný (okrem dočasných súborov);
  • Prístup na internet je zakázaný.
Interaktívne otvárané procesy sa nevykonávajú v núdzovom režime, preto sa odporúča implementovať mechanizmus na otváranie externých procesorov v núdzovom režime, ako aj na úrovni povolení, aby sa používateľovi zakázalo interaktívne otvárať externé procesory.
Na zákaz interaktívneho otvárania spracovania je vo všetkých rolách priradených používateľovi potrebné odstrániť právo „Interaktívne otváranie externého spracovania“ (pozri obrázok 1).
Obrázok 1. Práva na interaktívne otváranie externého spracovania/správ
Právo „Interaktívne otvorenie externého spracovania“ nijako neovplyvňuje objekt Externé spracovanie.

Programové otváranie externých zostáv je podobné externému spracovaniu, ale mali by ste použiť objekt globálneho kontextu ExternalReports, ktorý má typ ExternalReportsManager.

Na príklade „Trade Management 11.3“ zvážime jednoduchý proces pripojenia externého tlačového formulára. Zvážime aj vlastnosti nového bezpečnostného systému.

Rýchly prechod

Predbežné opatrenia

Najprv by ste mali povoliť funkčnosť alebo skontrolujte jeho dostupnosť

1. Prihláste sa s plnými právami do informačnej databázy.

2. Prejdite do menu „Kmeňové údaje a správa“/Blok „Správa“/Príkaz „Tlačené formuláre, zostavy a spracovanie“.

Doplnenie

V sekcii, ktorá sa otvorí:

Spracovanie pridávame pomocou tlačidla „Vytvoriť“ (toto je dôležité) alebo „Aktualizovať!“ existujúce:

  • Vyberte ho v zozname (ak nie je označený alebo prázdny, príkaz nebude fungovať, ale nebude nič hovoriť).
  • Kliknite na tlačidlo „Načítať zo súboru“.

Po objavení sa pre 1C v externom spracovaní sa bezpečnostné kontroly objavili v nových konfiguráciách.

Mali by ste nainštalovať iba spracovanie vytvorené nezávisle alebo prijaté prostredníctvom známych komunikačných kanálov (nie z pošty, iba z webovej stránky s platným certifikátom alebo poskytnuté zamestnancami vývojára, ním potvrdené telefonicky).

Ak je všetko v spracovaní predpísané vývojárom, potom sa nastaví „Placement“ - objekty, na ktorých sa bude spracovanie podieľať, sa objavia príkazy.
Ak chcete pracovať, stačí kliknúť na „Uložiť a zavrieť“.

Vyšetrenie

Ihneď potom, v závislosti od typu ošetrenia:

  • Vytlačený formulár sa sprístupní pri otvorení dokumentu alebo z jeho zoznamu (pre už otvorený pri opätovnom otvorení) kliknutím na tlačidlo „Tlačiť“.
  • Spracovanie je dostupné v sekciách „Ďalšie spracovanie“ v každom podsystéme
  • Spracovanie vyplnenia pomocou tlačidla „Vyplniť“ zoznamu alebo hlavného príkazového panela formulára objektu.

Pre vyššie uvedené spracovanie bude spustenie vyzerať takto:

Ak je dokument nový, mal by sa zapísať; mechanizmus externého spracovania vás na to upozorní:

Ďalšie správanie závisí od vstavanej funkcionality: je možné otvoriť formulár alebo jednoducho spracovať údaje.

Bezpečnostné upozornenia v 1C

Nové verzie a konfigurácie platforiem majú vylepšenú ochranu pred spustením škodlivých programov.

Spracovanie môže spôsobiť spustenie načítania Excelu, v takom prípade vás nový bezpečnostný subsystém tiež upozorní:

V tomto prípade je kód obsluhy prerušený.

Ak kliknete na „Áno“, systém vás požiada o opätovné spustenie príkazu:

Používateľ informačnej databázy môže vypnúť ochranu pred nebezpečnými akciami prostredníctvom „Konfigurátora“:

Toto sa nedá zmeniť z režimu „Enterprise“, možno to bolo urobené zámerne a môže sa to objaviť po aktualizácii.

Treba tiež poznamenať, že ak spracovanie používa Excel, musí bežať v nebezpečnom režime (takto to bolo pred zavedením nového systému, funguje to paralelne):

"Nedá sa načítať MS EXCEL!!!" „Bol nastavený núdzový režim. Operácia je zakázaná"

Pri externom spracovaní to vyzerá takto:

Vývojár by ho mal v popise interného spracovania nastaviť na „False“, potom bude všetko v poriadku:

Function InformationOnExternalProcessing() ExportRegistrationParameters = Nová štruktúra; Registration Parameters.Insert("SafeMode", False);

Pri aktualizácii konfigurácie sa objavil aj varovný text o zdroji, z ktorého bol konfiguračný súbor získaný: