Siguran način rada postavljen je na univerzalnu xml razmjenu. Postavljen je siguran način rada. Operacija je zabranjena. Siguran način rada za vanjsku obradu

Koristeći "Trade Management 11.3" kao primjer, razmotrit ćemo jednostavan postupak povezivanja vanjske ispisne forme. Također ćemo razmotriti značajke novog sigurnosnog sustava.

Brzi prolaz

Prethodne radnje

Prvo biste trebali omogućiti funkcionalnost ili provjerite njegovu dostupnost

1. Prijavite se s punim pravima u bazu podataka.

2. Idite na izbornik “Matični podaci i administracija”/Blok “Administracija”/Naredba “Ispisani obrasci, izvješća i obrada”.

Dodatak

U odjeljku koji se otvara:

Obradu dodajemo pomoću gumba "Izradi" (ovo je važno) ili "Ažuriraj!" postojanje:

  • Odaberite je na popisu (ako nije odabrana ili je prazna, naredba neće raditi, ali neće ništa reći).
  • Kliknite gumb "Učitaj iz datoteke".

Nakon pojave za 1C u vanjskoj obradi, sigurnosne provjere pojavile su se u novim konfiguracijama.

Trebali biste instalirati samo obradu kreiranu samostalno ili primljenu putem poznatih komunikacijskih kanala (ne putem pošte, samo s web stranice s važećim certifikatom ili koju su dostavili zaposlenici razvojnog programera, potvrdio on telefonom).

Ako je sve u obradi propisano od strane programera, tada će se postaviti "Placement" - pojavit će se objekti u kojima će obrada biti uključena, naredba(e).
Za rad samo kliknite "Spremi i zatvori".

Ispitivanje

Odmah nakon toga, ovisno o vrsti tretmana:

  • Ispisani obrazac postaje dostupan prilikom otvaranja dokumenta ili s njegovog popisa (za već otvoren prilikom ponovnog otvaranja) klikom na gumb “Ispis”.
  • Obrada je dostupna u odjeljcima "Dodatna obrada" u svakom podsustavu
  • Obrada popunjavanja pomoću gumba "Ispuni" popisa ili glavne naredbene ploče obrasca objekta.

Za gornju obradu, pokretanje će izgledati ovako:

Ako je dokument nov, treba ga zapisati; vanjski mehanizam obrade će vas upozoriti na ovo:

Daljnje ponašanje ovisi o ugrađenoj funkcionalnosti: moguće je otvoriti obrazac ili jednostavno obraditi podatke.

Sigurnosna upozorenja u 1C

Nova izdanja platforme i konfiguracije imaju povećanu zaštitu od pokretanja zlonamjernih programa.

Obrada može uzrokovati pokretanje programa Excel za učitavanje, u kojem slučaju će vas novi sigurnosni podsustav također upozoriti:

U tom slučaju kod rukovatelja je prekinut.

Ako kliknete "Da", sustav će od vas tražiti da ponovo pokrenete naredbu:

Korisnik infobaze može onemogućiti zaštitu od opasnih radnji putem “Konfiguratora”:

Ovo se ne može promijeniti iz načina rada "Enterprise", možda je to učinjeno namjerno i može se pojaviti nakon ažuriranja.

Također treba napomenuti da ako obrada koristi Excel, mora se izvoditi u nesigurnom načinu rada (to je bio slučaj prije uvođenja novog sustava, ovo radi paralelno):

"Nije moguće učitati MS EXCEL!!!" “Postavljen je siguran način rada. Operacija je zabranjena"

U vanjskoj obradi to izgleda ovako:

Programer bi to trebao postaviti na "False" u opisu interne obrade, tada će sve biti u redu:

Funkcija InformationOnExternalProcessing() ExportRegistrationParameters = Nova struktura; Parametri registracije.Insert("SafeMode", False);

Prilikom ažuriranja konfiguracije pojavio se i tekst upozorenja o izvoru iz kojeg je preuzeta konfiguracijska datoteka:

Činjenica je da se pri korištenju klijent-poslužiteljske verzije 1C vanjska obrada/izvješća otvaraju u sigurnom načinu rada, u kojem je zabranjeno korištenje privilegiranog načina rada. A povlašteni način se vrlo često koristi u tipičnim konfiguracijama: generiranje ispisa, razne provjere usluga (registracija razmjena) itd. Kao rezultat toga, čak i korištenjem redovnog izvješća o sustavu kontrole pristupa bez obrasca (prema zadanim postavkama koristi se opći obrazac "ReportForm") i spremanjem prilagođenih postavki izvješća (u odgovarajućem direktoriju), dobit ćete pogrešku o nedovoljnom pristupu prava na razne konstante i parametre sesije koji se koriste u službene svrhe nakon retka PostaviPrivilegedMode(True) ;

“Ispravno” rješenje bilo bi povezivanje vanjske obrade i izvješća kroz BSP mehanizme “Dodatna izvješća i obrada” uz onemogućavanje sigurnog načina rada ili dodavanje dopuštenja (po mom mišljenju, od BSP verzije 2.2.2.1). Ali ako je iz nekog razloga potrebno koristiti vanjske datoteke za izvješćivanje/obradu, tada možete konfigurirati sigurnosni profil klastera koji se koristi kao sigurnosni profil sigurnog načina rada za određenu informacijsku bazu.

Želio bih odmah napomenuti da ova opcija nije poželjna, ali zbog različitih okolnosti može se koristiti u tako pojednostavljenom obliku. Na primjer, imam nekoliko baza podataka u različitim gradovima, jednu zajedničku lokalnu sa strogo ograničenim pravima, zatvoreni USB itd., negdje koristim Računovodstvo 2.0, a negdje 3.0, gotovo sva izvješća radim pomoću ACS alata bez obrazaca, tako da otvoren u obje verzije. Održavanje svih tih izvješća za različite verzije i različite baze podataka je naporno i uzaludno, jer U planu je prelazak na jedinstvenu konfiguraciju i bazu...

Kreirajmo profil.
U konzoli klastera kreiramo sigurnosni profil u kojem postavljamo zastavice "Može se koristiti kao sigurnosni profil sigurnog načina rada" i " u odjeljku "Dopušten potpuni pristup:" "na povlašteni način rada".

U mnogim slučajevima korištenja izvješća i jednostavne obrade, ova metoda će biti primjenjiva. Za složenije situacije nema smisla opisivati ​​proces jer to je navedeno u dokumentaciji (mogućnost konfiguriranja sigurnosnih profila za određene vanjske datoteke određivanjem njihove količine hash itd.).

p.s. Mislio sam da sigurnosni profili funkcioniraju samo kada se koriste platformske i poslužiteljske licence na razini CORP-a, ali ova funkcionalnost također radi na platformi 1C:Enterprise 8.3 (može se uvjetno nazvati PROF, po analogiji sa standardnim konfiguracijama Basic/PROF/CORP)

Ispis (Ctrl+P)

Konfiguracijski objekti

Ako je potrebno koristiti “nepouzdani” programski kod na poslužitelju: vanjsku obradu ili programski kod koji je korisnik unio za korištenje u metodama Run() i Calculate(), možete koristiti sigurni način rada.

U sigurnom načinu rada:

  • Privilegirani način rada otkazan.
  • Prebacivanje na povlašteni način rada ignorirani.
  • Zabranjeno operacije koje dovode do korištenja vanjskih sredstava u odnosu na platformu 1C:Enterprise (uključujući neblokirajuće analoge navedenih metoda):
  • COM mehanizmi:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Učitavanje vanjskih komponenti:
    • Učitaj vanjsku komponentu();
    • ConnectExternalComponent().
  • Pristup datotečnom sustavu:
    • VrijednostUDatoteci();
    • KopirajDatoteku();
    • Spoji datoteke();
    • PremjestiDatoteku();
    • SplitFile();
    • Stvori imenik();
    • Obriši datoteke();
    • Nova datoteka;
    • Novi xBase;
    • EntryHTML.OpenFile();
    • ReadHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ČitanjeZipDatoteke.Otvori();
    • New ReadText(), ako je prvi parametar niz;
    • ReadText.Open(), ako je prvi parametar niz;
    • NewTextRecord(), ako je prvi parametar niz;
    • WriteText.Open(), ako je prvi parametar niz;
    • NewTextExtract();
    • promjena svojstva ExtractText.FileName;
    • EkstraktTeksta.Napiši();
    • New Picture(), ako je prvi parametar niz;
    • Slika.Piši();
    • novi BinarniPodaci();
    • BinarniPodaci.Zapiši();
    • NewDataRecord(), ako je prvi parametar niz;
    • New ReadData(), postoji prvi parametar - string;
    • sve metode objekta FileStreamManager;
    • New FileStream();
    • FormattedDocument.Write();
    • GeographicScheme.Read();
    • GeographicScheme.Write();
    • GeographicScheme.Print();
    • TabličniDokument.Čitanje();
    • TabličniDokument.Napiši();
    • TabličniDokument.Ispis(); Grafička shema.Read();
    • Grafička shema.Write();
    • GrafičkaShema.Ispis();
    • TextDocument.Read();
    • TextDocument.Write().
  • Pristup internetu:
    • Nova internetska veza,
    • Nova Internet pošta,
    • Novi InternetProxy,
    • Nova HTTP veza,
    • Nova FTP veza.

PAŽNJA! Prilikom izvođenja zabranjenih operacija, iznimka se izbacuje tijekom izvođenja.

Bilješka. Vanjski izvještaji i obrada otvoreni pomoću izbornika Datoteka - Otvori izvode se u sigurnom načinu rada ako korisnik nema administrativna prava pristupa.

Broj uključenja sigurnog načina mora odgovarati broju isključenja. Međutim, ako je siguran način rada uključen unutar procedure ili funkcije (jednom ili više puta), ali nije isključen, sustav će se automatski isključiti onoliko puta koliko je bilo nepotpunih uključenja u postupku ili funkciji koja je ostala.

Ako u proceduri ili funkciji poziva metodu SetSafeMode(False) napravio više od poziva metode SetSafeMode(True), tada će biti bačena iznimka.

Instalacija softvera sigurnog načina rada može biti potrebna kada razvijač konfiguracije namjerava koristiti programski kod treće strane (u odnosu na konfiguraciju), čiju pouzdanost razvojni programer ne može jamčiti. Primjer takvog koda je izvršavanje metoda Execute() i Compute() u slučajevima kada se izvršni kod dobiva iz vanjskog svijeta. U ovom slučaju, dobra praksa bi bila postaviti Siguran način rada prije izvršavanja ovih metoda:

// Generiran je programski kod koji bi se trebao izvršiti // Moguće je da je kod učitan iz vanjskih izvora // ili unesen ručno ExecutableCode = GetExecutedCodeFromExternalWorld(); // Omogući siguran način SetSafeMode(True); // Izvrši potencijalno opasan kod Execute(ExecutableCode); // Isključi siguran način SetSafeMode(False);

U nekim slučajevima postavke sigurnog načina rada mogu biti u sukobu s postavkama privilegiranog načina rada. Primjer takvog sukoba je knjiženje dokumenta za koji je postavljeno svojstvo Privilegirani način rada prilikom knjiženja, iz koda na ugrađenom jeziku koji se izvršava u sigurnom načinu rada. U tom je slučaju povlašteni način rada onemogućen i pokušaji njegovog uključivanja se ignoriraju. Kao rezultat toga, kod u ugrađenom jeziku, koji "računa" na omogućeni privilegirani način rada, "nailazi" na njegovu odsutnost, što dovodi do pogrešaka s neočitim razlozima njihovog pojavljivanja. Kako bi spriječio ovu situaciju, sustav 1C:Enterprise automatski isključuje siguran način rada za rukovatelje događajima koji su dostupni u objektnom modulu ili modulu upravitelja, pod uvjetom da se izvršni kod na ugrađenom jeziku ne nalazi u konfiguracijskom proširenju. Takvi rukovatelji označeni su na poseban način u pomoćniku za sintaksu.

Također pruža mogućnost onemogućavanja sigurnog načina rada iz ugrađenog jezika (ako programski kod koji ga pokušava onemogućiti nije u konfiguracijskom proširenju). Za onemogućavanje sigurnog načina rada postoji metoda PostaviDisableSafeMode(). Možete provjeriti je li sigurni način rada trenutno onemogućen (automatski ili pozivanjem metode) pomoću metode GetDisableSafeMode().

Unutar jedne metode u ugrađenom jeziku ne može postojati više od jedne razine ugniježđenja postavljanja sigurnog načina rada (pozivom metode SetSafeMode()) i postavljanja onemogućavanja sigurnog načina rada (automatski tijekom izvođenja događaja objekta metapodataka rukovateljima ili pozivom metode SetSafeModeDisable(). Prilikom pokušaja povećanja ugniježđenosti, izbacuje se iznimka:

// Ispravna upotreba ProcedureProcedureName() SetDisableSafeMode(True); PostaviSafeMode(true); PostaviSafeMode(False); PostaviDisableSafeMode(False); EndProcedure // Neispravna upotreba ProcedureProcedureName() SetDisableSafeMode(True); PostaviSafeMode(true); PostaviDisableSafeMode(False); // Iznimka EndProcedure ProcedureProcedureName() SetSafeMode(True); PostaviDisableSafeMode(False); // Iznimka EndProcedure

Programsko otvaranje vanjske obrade provodi se pomoću globalnog kontekstnog objekta ExternalProcessing, koji ima tip ExternalProcessingManager. Za svaki način rada 1C platforme (uobičajeni aplikacijski način i upravljani aplikacijski način) koriste se različite objektne metode za rad s vanjskom obradom.

Pokretanje vanjske obrade u normalnom načinu rada aplikacije

U tipičnoj aplikaciji morate koristiti metodu Create() objekta ExternalProcessing, kojoj se prosljeđuje puni naziv datoteke za vanjsku obradu. Metoda vraća objekt tipa Vanjska obrada, ovaj objekt je vanjska obrada koja se otvara. Ako trebate otvoriti vanjsku formu za obradu, tada pozovite metodu GetForm() na primljenom objektu, koja će vratiti glavnu formu, a zatim pozovite metodu Open() da je otvorite.


Obrada = ExternalProcessing.Create(FullFileName);
Obrada.GetForm().Open();

U vanjskoj obradi, glavna forma uvijek mora biti obična, a kontrolirana forma uvijek mora biti dodatna, inače metoda GetForm() neće raditi u normalnom modu aplikacije.

Pokretanje vanjske obrade u upravljanom načinu rada aplikacije

U načinu rada upravljanih obrazaca, algoritam je podijeljen prema kontekstu izvršavanja. Na klijentu primamo binarne podatke koristeći puni naziv datoteke za vanjsku obradu. Primljene binarne podatke prenosimo na poslužitelj i stavljamo u privremenu pohranu. Zatim trebate pozvati metodu Connect() objekta ExternalProcessing, kojoj se prosljeđuje adresa za privremenu pohranu. Metoda vraća naziv povezane vanjske obrade. Vraćamo ime vanjske obrade klijentu, stvaramo stazu niza do obrasca za obradu i koristimo metodu OpenForm() za otvaranje obrasca za vanjsku obradu.

&Na poslužitelju
Funkcija GetExternalProcessingName(BinaryData)
AdresaUPrivremenomSkladištu = MjestoUPrivremenomSkladištu(BinarniPodaci);
Vrati ExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&NaKlijentu
FullFileName = ""; // Puni naziv datoteke za vanjsku obradu.
FileData = novi BinarniPodaci(FullFileName);
ImeVanjskeObrade = GetExternalProcessingName(PodaciDatoteke);
OpenForm("ExternalProcessing." + ExternalProcessingName + ".Form");

Siguran način rada za vanjsku obradu

Metode Create() i Connect() objekta ExternalProcessing imaju dolazni parametar SafeMode - znak povezivanja vanjske obrade u sigurnom načinu rada. Ako parametar nije naveden, veza će se uspostaviti u sigurnom načinu rada.
Siguran način rada dizajniran je za zaštitu sustava od izvršavanja "nepouzdanog" programskog koda na poslužitelju. Potencijalna opasnost dolazi od vanjske obrade ili programskog koda koji je korisnik unio za korištenje u metodama Run() i Calculate().
Siguran način rada nameće sljedeća ograničenja:
  • privilegirani način rada se poništava ako je instaliran;
  • pokušaji ulaska u povlašteni način se ignoriraju;
  • operacije s COM objektima su zabranjene;
  • zabranjeno je učitavanje i spajanje vanjskih komponenti;
  • pristup datotečnom sustavu je zabranjen (osim za privremene datoteke);
  • Pristup Internetu je zabranjen.
Procesi koji se otvaraju interaktivno ne izvode se u sigurnom načinu rada, stoga je preporučljivo implementirati mehanizam za otvaranje vanjskih procesora u sigurnom načinu rada, kao i na razini dopuštenja zabraniti korisniku interaktivno otvaranje vanjskih procesora.
Za zabranu interaktivnog otvaranja obrade, u svim ulogama dodijeljenim korisniku, potrebno je ukloniti pravo “Interaktivno otvaranje vanjske obrade” (vidi sliku 1).
Slika 1. Prava na interaktivno otvaranje vanjske obrade/izvješća
Pravo "Interaktivno otvaranje vanjske obrade" ni na koji način ne utječe na objekt vanjske obrade.

Programsko otvaranje vanjskih izvješća slično je vanjskoj obradi, ali trebali biste koristiti objekt globalnog konteksta ExternalReports koji ima tip ExternalReportsManager.

Činjenica je da se pri korištenju klijent-poslužiteljske verzije 1C vanjska obrada/izvješća otvaraju u sigurnom načinu rada, u kojem je zabranjeno korištenje privilegiranog načina rada. A povlašteni način se vrlo često koristi u tipičnim konfiguracijama: generiranje ispisa, razne provjere usluga (registracija razmjena) itd. Kao rezultat toga, čak i korištenjem redovnog izvješća o sustavu kontrole pristupa bez obrasca (prema zadanim postavkama koristi se opći obrazac "ReportForm") i spremanjem prilagođenih postavki izvješća (u odgovarajućem direktoriju), dobit ćete pogrešku o nedovoljnom pristupu prava na razne konstante i parametre sesije koji se koriste u službene svrhe nakon retka PostaviPrivilegedMode(True) ;

“Ispravno” rješenje bilo bi povezivanje vanjske obrade i izvješća kroz BSP mehanizme “Dodatna izvješća i obrada” uz onemogućavanje sigurnog načina rada ili dodavanje dopuštenja (po mom mišljenju, od BSP verzije 2.2.2.1). Ali ako je iz nekog razloga potrebno koristiti vanjske datoteke za izvješćivanje/obradu, tada možete konfigurirati sigurnosni profil klastera koji se koristi kao sigurnosni profil sigurnog načina rada za određenu informacijsku bazu.

Želio bih odmah napomenuti da ova opcija nije poželjna, ali zbog različitih okolnosti može se koristiti u tako pojednostavljenom obliku. Na primjer, imam nekoliko baza podataka u različitim gradovima, jednu zajedničku lokalnu sa strogo ograničenim pravima, zatvoreni USB itd., negdje koristim Računovodstvo 2.0, a negdje 3.0, gotovo sva izvješća radim pomoću ACS alata bez obrazaca, tako da otvoren u obje verzije. Održavanje svih tih izvješća za različite verzije i različite baze podataka je naporno i uzaludno, jer U planu je prelazak na jedinstvenu konfiguraciju i bazu...

Kreirajmo profil.
U konzoli klastera kreiramo sigurnosni profil u kojem postavljamo zastavice "Može se koristiti kao sigurnosni profil sigurnog načina rada" i " u odjeljku "Dopušten potpuni pristup:" "na povlašteni način rada".

U mnogim slučajevima korištenja izvješća i jednostavne obrade, ova metoda će biti primjenjiva. Za složenije situacije nema smisla opisivati ​​proces jer to je navedeno u dokumentaciji (mogućnost konfiguriranja sigurnosnih profila za određene vanjske datoteke određivanjem njihove količine hash itd.).

p.s. Mislio sam da sigurnosni profili funkcioniraju samo kada se koriste platformske i poslužiteljske licence na razini CORP-a, ali ova funkcionalnost također radi na platformi 1C:Enterprise 8.3 (može se uvjetno nazvati PROF, po analogiji sa standardnim konfiguracijama Basic/PROF/CORP)