Menu
Za darmo
Rejestracja
Strona główna  /  Edukacja   / 1s 8 ustawiony w trybie awaryjnym. Otwieranie programu Przetwarzanie zewnętrzne

1s 8 jest ustawiony na tryb awaryjny. Otwieranie programu Przetwarzanie zewnętrzne

Programowe otwarcie przetwarzania zewnętrznego odbywa się za pomocą globalnego obiektu kontekstu ExternalProcessing, który ma ten typ Zewnętrzny menedżer przetwarzania. Dla każdego trybu pracy platformy 1C (zwykły tryb aplikacji i tryb aplikacji zarządzanej) do pracy z przetwarzaniem zewnętrznym stosowane są różne metody obiektowe.

Rozpoczęcie przetwarzania zewnętrznego w zwykłym trybie aplikacji

  W zwykłej aplikacji należy użyć metody Create () obiektu ExternalProcessing, która przenosi pełną nazwę zewnętrznego pliku przetwarzania. Metoda zwraca obiekt typu Przetwarzanie zewnętrzne, ten obiekt jest otwartym przetwarzaniem zewnętrznym. Jeśli chcesz otworzyć zewnętrzny formularz przetwarzania, to na otrzymanym obiekcie wywołaj metodę GetForm (), która zwróci główny formularz, a następnie wywołaj metodę Open (), aby go otworzyć.


  Przetwarzanie \u003d przetwarzanie zewnętrzne Utwórz (pełna nazwa pliku);
  Przetwarzanie. Pobierz formularz (). Otwórz ();

W przetwarzaniu zewnętrznym główny formularz powinien zawsze być normalny i zarządzany przez dodatkowy formularz, w przeciwnym razie metoda GetForm () nie będzie działać w zwykłym trybie aplikacji.

Rozpoczęcie przetwarzania zewnętrznego w trybie aplikacji zarządzanej

  W trybie formularza zarządzanego pojawia się separacja algorytmu od kontekstu wykonania. Na kliencie otrzymujemy dane binarne dla pełnej nazwy zewnętrznego pliku przetwarzania. Przesyłamy otrzymane dane binarne na serwer i umieszczamy w tymczasowym magazynie. Następnie należy wywołać metodę Connect () obiektu ExternalProcessing, do którego przekazywany jest adres do pamięci tymczasowej. Metoda zwraca nazwę podłączonego przetwarzania zewnętrznego. Zwracamy nazwę przetwarzania zewnętrznego do klienta, tworzymy ścieżkę łańcucha do formularza przetwarzania i używamy metody OpenForm (), aby otworzyć zewnętrzny formularz przetwarzania.

  I na serwerze
  Funkcja Uzyskaj zewnętrzną nazwę przetwarzania (dane binarne)
  Adres w magazynie tymczasowym \u003d Umieść magazyn tymczasowy (dane binarne);
  Zwróć przetwarzanie zewnętrzne Połącz (adres w pamięci tymczasowej);
  Funkcje końcowe

  I na klienta
  Pełna nazwa pliku \u003d ""; // Pełna nazwa zewnętrznego pliku przetwarzania.
  Dane pliku \u003d Nowe dane binarne (pełna nazwa pliku);
  Nazwa przetwarzania zewnętrznego \u003d Uzyskaj nazwę przetwarzania zewnętrznego (dane pliku);
Otwórz formularz („Przetwarzanie zewnętrzne.” + Nazwa przetwarzania zewnętrznego + „. Formularz”);

Tryb awaryjny do przetwarzania zewnętrznego

  Metody Create () i Connect () obiektu ExternalProcessing mają parametr wejściowy SafeMode - znak połączenia zewnętrznego przetwarzania w trybie awaryjnym. Jeśli parametr nie zostanie określony, połączenie zostanie nawiązane w trybie awaryjnym.
  Bezpieczny tryb działania ma na celu ochronę systemu przed wykonaniem „niewiarygodnego” kodu programu na serwerze. Potencjalne niebezpieczeństwo jest reprezentowane przez zewnętrzne przetwarzanie lub kod programu wprowadzony przez użytkownika do użycia w metodach Run () i Calculate ().
  W trybie awaryjnym obowiązują następujące ograniczenia:
  • tryb uprzywilejowany jest anulowany, jeśli został zainstalowany;
  • próby przejścia do trybu uprzywilejowanego są ignorowane;
  • operacje na obiektach COM są zabronione;
  • zabronione jest pobieranie i podłączanie komponentów zewnętrznych;
  • dostęp do systemu plików jest zabroniony (z wyjątkiem plików tymczasowych);
  • odmowa dostępu do Internetu.
  Procesy otwierane interaktywnie nie są wykonywane w trybie awaryjnym, dlatego zaleca się wdrożenie mechanizmu otwierania procesów zewnętrznych w trybie awaryjnym, a także na poziomie uprawnień, aby uniemożliwić użytkownikowi interaktywne otwieranie procesów zewnętrznych.
  Aby zakazać interaktywnego otwierania zabiegów, we wszystkich rolach przypisanych do użytkownika należy usunąć prawo do „Interaktywnego otwierania zabiegów zewnętrznych” (patrz rysunek 1).
Rysunek 1. Prawa do interaktywnego otwierania zewnętrznego przetwarzania / raportów
  Prawo do „Interaktywnego otwierania przetwarzania zewnętrznego” w żaden sposób nie wpływa na obiekt Przetwarzania zewnętrznego.

Programowo otwierając raporty zewnętrzne, podobne do przetwarzania zewnętrznego, tylko powinieneś używać obiektu ExternalReports kontekstu globalnego, który jest typu Menedżer raportów zewnętrznych.

Faktem jest, że w przypadku korzystania z wersji 1C klient-serwer zewnętrzne przetwarzanie / raporty są otwierane w trybie awaryjnym, w którym użycie trybu uprzywilejowanego jest zabronione. Tryb uprzywilejowany jest bardzo często używany w standardowych konfiguracjach: tworzenie drukowanych formularzy, różne kontrole urzędowe (rejestracja wymian) itp. W rezultacie, nawet używając regularnego raportu w systemie kontroli dostępu bez formularza (domyślnie używany jest ogólny formularz „Formularz raportu”) i zapisując ustawienia użytkownika dla raportu (w odpowiednim katalogu), pojawi się błąd dotyczący niewystarczających praw dostępu do różnych stałych i parametrów sesji używanych do celów oficjalnych po linii   Ustaw na tryb uprzywilejowany (prawda);

„Właściwe” rozwiązanie polega na połączeniu zewnętrznego przetwarzania i raportów za pośrednictwem mechanizmów BSP „Dodatkowe raporty i przetwarzanie” z wyłączeniem trybu awaryjnego lub dodaniem uprawnień (moim zdaniem od wersji BSP 2.2.2.1). Ale jeśli z jakiegoś powodu konieczne jest użycie zewnętrznych plików raportujących / przetwarzających, można skonfigurować profil bezpieczeństwa klastra używany jako profil bezpieczeństwa w trybie awaryjnym dla określonej bazy danych.

  Chciałbym od razu zauważyć, że ta opcja nie jest lepsza, ale ze względu na różne okoliczności może być używana w tak uproszczonej formie. Na przykład mam kilka baz danych w różnych miastach, ogólną lokalną z poważnie ograniczonymi prawami, zamkniętym USB itp., Gdzieś używałem Bookkeeping 2.0, a gdzieś 3.0, prawie wszystkie raporty używam ACS bez formularzy, więc otworzyli w obu wersjach. Udostępnianie wszystkich tych raportów dla różnych wersji i różnych baz jest czasochłonne i mało obiecujące plany mają przejście do jednej konfiguracji i podstawy ...

Utwórz profil.
  W konsoli klastra utwórz profil bezpieczeństwa, w którym ustawiamy flagi „Może być używany jako profil bezpieczeństwa w trybie awaryjnym”  i „pod” Dozwolony pełny dostęp: ” „do trybu uprzywilejowanego”.

W wielu przypadkach przy użyciu raportów i prostego przetwarzania ta metoda będzie miała zastosowanie. W przypadku bardziej złożonych sytuacji opisywanie tego procesu nie ma sensu, ponieważ jest to opisane w dokumentacji (możliwość konfigurowania profili bezpieczeństwa dla określonych plików zewnętrznych poprzez określenie sumy skrótu itp.).

P.S. Myślałem, że profile bezpieczeństwa działają tylko przy użyciu licencji dla platformy CORP na poziomie platformy i serwera, ale ta funkcja działa również na platformie 1C: Enterprise 8.3 (warunkowo można wywoływać PROF przez analogię z typowymi konfiguracjami Basic / PROF / CORP)

Wraz z wydaniem platformy 8.3.9.2033 pojawił się nowy mechanizm „Ochrona przed niebezpiecznymi działaniami”.

Dzięki tej innowacji 1C –ka zaczęła przeklinać przy otwarciu przetwarzania (i nie tylko):

Ostrzeżenie bezpieczeństwa

Otwiera „Moje przetwarzanie zewnętrzne” z pliku „My_External_Processing.epf”

Zaleca się zwrócenie uwagi na źródło, z którego uzyskano ten plik. Jeśli nie ma zgody ze źródłem na opracowanie dodatkowych modułów lub istnieją wątpliwości co do zawartości pliku, nie zaleca się jego otwierania, ponieważ może to uszkodzić komputer i dane.

Zezwolić na otwarcie tego pliku?

Więc 1C postanowił walczyć ze złośliwym kodem!

Skąd ten „złośliwy kod” pochodzący od przedsiębiorstwa nadal jest tajemnicą)

Potencjalnie niebezpieczne działania obejmowały:

  •   Pobierz zewnętrzny raport, przetwarzanie lub rozszerzenie konfiguracji.
  •   Pobierz lub zaktualizuj konfigurację / rozszerzenie.
  •   Dostęp z zewnętrznego raportu / przetwarzania lub rozszerzenia do następujących funkcji:
  •   Wykonanie polecenia systemu operacyjnego.
  •   Zarządzanie użytkownikami (rejestrowanie lub usuwanie informacji o użytkowniku bazy informacji).
  •   Wywołaj metodę Connect () zewnętrznego menedżera przetwarzania (raportów).
  •   Wywołaj metodę Extension Configuration. Write ().
  •   Praca z obiektami COM.

Jak odłączyć ten „cud”?

Aby to zrobić, uruchom 1C Enterprise w trybie konfiguratora.
  Wybierz menu „Administracja” - „Użytkownicy”.
  W otwartym oknie naszych użytkowników musisz otworzyć okno ustawień użytkownika i usunąć ptaszynę na zakładce „Podstawowe” „Ochrona przed niebezpiecznymi działaniami”

Istnieją inne sposoby, aby to wyłączyć:

Zaimplementowano możliwość określenia listy baz danych podczas pracy, z którymi ochrona przed niebezpiecznymi działaniami zostanie wyłączona.
  Za tę funkcję odpowiedzialny jest parametr DisableUnsafeActionProtection w pliku conf.cfg, który umożliwia wyłączenie mechanizmu ochrony przed zagrożeniami dla wszystkich użytkowników niektórych baz informacji, których parametry połączenia spełniają maski określone w parametrze DisableUnsafeActionProtection.

W tym parametrze możesz określić kilka masek oddzielonych symbolem „;”, na przykład:

DisableUnsafeActionProtection \u003d test _. *; Stage _. *;

Ponadto ochronę przed niebezpiecznymi działaniami użytkowników można programowo wyłączyć, dla których istnieją następujące parametry i właściwości:

  • Ochrona parametrów przed niebezpiecznymi metodami Działania Connect () zewnętrzni menedżerowie przetwarzania (raporty)
  • Właściwość Chroń przed niebezpiecznymi działaniami obiektu Extension Extension przed wywołaniem metody Write () tego obiektu.

Weryfikacja potrzeby zastosowania ochrony przed niebezpiecznymi działaniami odbywa się w następującej kolejności:

1. Jeśli pole wyboru „Ochrona przed niebezpiecznymi działaniami” jest wyczyszczone dla bieżącego użytkownika, ochronę uznaje się za wyłączoną.

2. Jeśli parametry połączenia z bazą informacji spełniają jeden z wzorców określonych w parametrze DisableUnsafeActionProtection pliku conf.cfg, ochronę uważa się za wyłączoną.

3. Jeśli ochrona jest wyraźnie wyłączona przy użyciu opcji zewnętrznego przetwarzania lub raportu Ochrona przed niebezpiecznymi działaniami.

4. Jeśli ochrona jest wyraźnie wyłączona przy użyciu właściwości rozszerzenia Ochrona przed niebezpiecznymi działaniami.

   Drukuj (Ctrl + P)

Obiekty konfiguracji

Jeśli konieczne jest użycie „niewiarygodnego” kodu programu na serwerze: przetwarzanie zewnętrzne lub kod programu wprowadzony przez użytkownika w celu użycia w metodach Run () i Calculate (), można skorzystać z bezpiecznego trybu pracy.

W trybie awaryjnym:

  • Tryb uprzywilejowany jest anulowane.
  • Przełącz do trybu uprzywilejowanego zignorowany.
  • Są zabronione  operacje prowadzące do użycia środków zewnętrznych w stosunku do platformy 1C: Enterprise (w tym nieblokujące analogi wskazanych metod):
  • Mechanizmy COM:
    • Obiekt COM ();
    • Pobierz obiekt COM ();
    • Powłoka dokumentu HTML. Uzyskaj obiekt COM ().
  • Pobierz komponenty zewnętrzne:
    • Pobierz ExternalComponent ();
    • Podłącz zewnętrzny komponent ().
  • Dostęp do systemu plików:
    • ValueVFile ();
    • Kopiuj plik ();
    • Łącz pliki ();
    • Przenieś plik ();
    • Udostępnij plik ();
    • Utwórz katalog ();
    • DeleteFiles ();
    • Nowy plik;
    • Nowy xBase;
    • Nagraj HTML.OpenFile ();
    • Czytanie HTML.OpenFile ();
    • ReadXML.OpenFile ();
    • RecordXML.OpenFile ();
    • Czytanie FastInfoset. Open File ();
    • Nagraj FastInfoset. Otwórz plik ();
    • Canonical RecordXML.OpenFile ();
    • Konwertuj XSL.Download From File ();
    • Nagraj plik zip. Open ();
    • Czytanie pliku Zip.Open ();
    • Nowa TextText (), jeśli pierwszy parametr jest łańcuchem;
    • Odczytaj tekst. Otwórz (), jeśli pierwszy parametr jest łańcuchem;
    • Nowy rekord tekstowy (), jeśli pierwszy parametr jest łańcuchem;
    • Wprowadzanie tekstu Open (), jeśli pierwszy parametr jest łańcuchem;
    • New Text Extract ();
    • zmień właściwość ExtractText.FileName;
    • Wyodrębnij tekst Write ();
    • Nowe zdjęcie (), jeśli pierwszym parametrem jest ciąg;
    • Picture.Record ();
    • New BinaryData ();
    • BinaryData.Record ();
    • Nowy rekord danych (), jeśli pierwszy parametr jest łańcuchem;
    • Nowy odczyt danych (), jest pierwszy parametr - ciąg;
    • wszystkie metody obiektu FileFlowManager;
    • Nowy strumień plików ();
    • Formatted Document.Record ();
    • Schemat geograficzny Read ();
    • Geographic Scheme.Record ();
    • Schemat geograficzny. Print ();
    • Dokument tabelaryczny Read ();
    • Tabular Document.Record ();
    • Dokument tabelaryczny Drukuj (); Schemat graficzny Read ();
    • Graphic Scheme.Record ();
    • Schemat graficzny Print ();
    • Dokument tekstowy Read ();
    • Zapis dokumentu tekstowego ().
  • Dostęp do Internetu:
    • Nowe połączenie internetowe,
    • Nowa poczta internetowa,
    • Nowy internetowy serwer proxy,
    • Nowe połączenie HTTP,
    • Nowe połączenie FTP.

UWAGA! Podczas wykonywania zabronionych operacji w czasie wykonywania zgłaszany jest wyjątek.

Uwaga Zewnętrzne raporty i przetwarzanie, które można otworzyć za pomocą menu Plik - Otwórz, są wykonywane w trybie awaryjnym, jeśli użytkownik nie ma uprawnień dostępu administracyjnego.

Liczba aktywacji trybu awaryjnego powinna pokrywać się z liczbą wyłączeń. Jeśli jednak tryb bezpieczny został aktywowany w ramach procedury lub funkcji (raz lub więcej), ale nie wyłączył się, system automatycznie wyłączy się tyle razy, ile wystąpiły niepełne uruchomienia procedury lub funkcji opuszczania.

Jeśli w procedurze lub funkcji wywołuje metodę Ustaw tryb awaryjny (fałsz)  zrobiono więcej niż wywołania metod   Ustaw tryb awaryjny (prawda)zostanie zgłoszony wyjątek.

Instalacja oprogramowania w trybie awaryjnym może być wymagana, jeśli programista konfiguracji zakłada użycie kodu programu innej firmy (w odniesieniu do konfiguracji), którego niezawodności nie może zagwarantować programista. Przykładem takiego kodu jest wykonanie metod Run () i Calculate () w przypadkach, w których kod wykonywalny jest uzyskiwany ze świata zewnętrznego. W takim przypadku dobrą praktyką jest ustawienie trybu bezpiecznego przed wykonaniem następujących metod:

   // Generowany jest kod programu, który należy wykonać // Możliwe, że kod jest ładowany ze źródeł zewnętrznych // lub ręcznie wprowadzony kod wykonywalny \u003d pobierz kod wykonywalny ze świata zewnętrznego (); // Włącz tryb awaryjny Ustaw tryb awaryjny (True); // Wykonaj potencjalnie niebezpieczny kod Wykonaj (kod wykonywalny); // Wyłącz tryb awaryjny Ustaw tryb awaryjny (False);

W niektórych przypadkach ustawienia trybu awaryjnego mogą kolidować z ustawieniami trybu uprzywilejowanego. Przykładem takiego konfliktu jest przechowywanie dokumentu, dla którego podczas wykonywania ustawiana jest właściwość Tryb uprzywilejowany, z kodu w języku osadzonym działającym w trybie awaryjnym. W takim przypadku tryb uprzywilejowany jest wyłączony, a próby włączenia go są ignorowane. W rezultacie kod w języku osadzonym, który „liczy” na dołączony tryb uprzywilejowany, „napotyka” jego brak, co prowadzi do błędów z nieoczywistymi przyczynami ich pojawienia się. Aby zapobiec takiej sytuacji, system 1C: Enterprise automatycznie wyłącza tryb bezpieczny dla procedur obsługi zdarzeń dostępnych w module obiektowym lub module menedżera, pod warunkiem, że kod wykonywalny w języku osadzonym nie znajduje się w rozszerzeniu konfiguracji. Takie procedury obsługi są oznaczone w specjalny sposób w asystencie składni.

Możliwe jest również wyłączenie trybu awaryjnego z wbudowanego języka (jeśli kod programu, od którego próba rozłączenia nie znajduje się w rozszerzeniu konfiguracji). Aby wyłączyć tryb awaryjny, użyj metody Ustaw zamknij tryb awaryjny (). Możesz sprawdzić, czy tryb awaryjny jest obecnie wyłączony (automatycznie lub przez wywołanie metody) za pomocą tej metody Uzyskaj zamknij tryb awaryjny ().

W ramach jednej metody język osadzony nie może mieć więcej niż jednego poziomu zagnieżdżenia do ustawiania trybu awaryjnego (przez wywołanie metody Set Safe Mode ()) i wyłączenia trybu bezpiecznego (automatycznie na czas obsługi zdarzeń obiektu metadanych lub przez wywołanie shutdown Set Set Safe Mode ()). Podczas próby zwiększenia zagnieżdżenia zgłaszany jest wyjątek:

   // Prawidłowe użycie Procedura Nazwa Procedura () Ustaw Wyłącz tryb awaryjny (True); Zainstaluj tryb awaryjny (prawda); Zainstaluj tryb awaryjny (fałszywy); Ustaw Shutdown Safe Mode (False); Koniec procedury // Nieprawidłowe użycie Procedura Nazwa procedury () Ustaw Wyłącz tryb awaryjny (True); Zainstaluj tryb awaryjny (prawda); Ustaw Shutdown Safe Mode (False); // Wyjątek EndProcedures Procedura NameProcedures () SetSafe Mode (True); Ustaw Shutdown Safe Mode (False); // Procedura zakończenia wyjątku