Pāvels Čistovs. Ir iestatīts drošais darbības režīms 1c drošais režīms, darbība ir aizliegta

Palaižot dokumentu augšupielādes programmu kā parasts lietotājs, tiek parādīta kļūda "Drošais režīms ir iestatīts. Darbība ir aizliegta."

Šīs grūtības rodas tāpēc Nav pietiekami daudz tiesību, lai sāktu ārēju apstrādi. Lai konfigurētu piekļuves tiesības, piesakieties datu bāzē režīmā 1C Enterprise vārdā Administrators un dodieties uz sadaļu Lietotāju un tiesību iestatījumi / Piekļuves grupu profiliem, klikšķis Lai izveidotu grupu.

Ievadiet grupas nosaukumu un atzīmējiet šīs grupas lietotājiem pieejamo lomu izvēles rūtiņas -

  • Interaktīva ārējo atskaišu atvēršana un apstrāde
  • Papildu atskaišu un apstrādes izmantošana

Klikšķis Saglabājiet un aizveriet


Atgriezieties izvēlnē Lietotāji un atlasiet no saraksta darbinieku, kurš strādās ar dokumentu augšupielādes programmu. Noklikšķiniet uz Atļaujas. Profilu sarakstā atlasiet iepriekš izveidoto profilu. Klikšķis Pierakstīt.


Lai lietotāji varētu sākt apstrādi, ieteicams ārējās apstrādes sarakstam pievienot dokumentu ielādi. Lai to izdarītu izvēlnē Administrēšana / Drukātas veidlapas un apstrāde / Papildus atskaites un apstrāde izveidot jaunu apstrādi. Norādiet ceļu uz failu "Download Documents.epf" un piešķiriet nosaukumu. Izvēlnē norādiet apstrādes vietu, no kuras lietotājs var to palaist vēlāk, piemēram, atlasiet izvēlni Katalogi

Noklikšķinot uz vienuma Ātrā piekļuve, jūs norādāt, kuriem lietotājiem ir piekļuve apstrādei:


Pēc iestatīšanas noklikšķiniet uz Saglabājiet un aizveriet. Lai sāktu apstrādi, lietotājiem būs tikai atkārtoti jāievada datu bāze un jāatver tā no piekļuves izvēlnes (piemērā - Katalogi) un jānoklikšķina Izpildīt.


Atvērt Izvēlne — visas funkcijas.... un sarakstā atrodiet opciju "Tiek izmantoti drošības profili".


Vienkārši noņemiet atzīmi no opcijas "Tiek izmantoti drošības profili".


Pēc tam programma tiks veiksmīgi palaists.

Fakts ir tāds, ka, izmantojot 1C klienta-servera versiju, ārējā apstrāde/pārskati tiek atvērti drošajā režīmā, kurā ir aizliegts izmantot priviliģēto režīmu. Un priviliģētais režīms tiek izmantots ļoti bieži tipiskās konfigurācijās: drukātu veidlapu ģenerēšana, dažādas pakalpojumu pārbaudes (maiņu reģistrācija) utt. Rezultātā pat izmantojot regulāru atskaiti par piekļuves kontroles sistēmu bez veidlapas (pēc noklusējuma tiek izmantota vispārīgā forma "Pārskata veidlapa") un saglabājot pielāgotus atskaites iestatījumus (attiecīgajā direktorijā), tiks parādīts kļūdas ziņojums par nepietiekamu piekļuvi. tiesības uz dažādām konstantēm un sesijas parametriem, ko izmanto oficiāliem nolūkiem pēc rindas SetPrivilegedMode(True) ;

“Pareizais” risinājums būtu savienot ārējo apstrādi un atskaites caur BSP “Papildu atskaites un apstrāde” mehānismiem ar drošā režīma atspējošanu vai atļauju pievienošanu (manuprāt, no BSP versijas 2.2.2.1). Bet, ja kāda iemesla dēļ ir nepieciešams izmantot ārējos ziņošanas/apstrādes failus, varat konfigurēt klastera drošības profilu, kas tiek izmantots kā drošā režīma drošības profils konkrētai informācijas bāzei.

Uzreiz gribu atzīmēt, ka šī iespēja nav vēlama, taču dažādu apstākļu dēļ to var izmantot tik vienkāršotā veidā. Piemēram, man ir vairākas datu bāzes dažādās pilsētās, kopīga vietējā ar stingri ierobežotām tiesībām, slēgts USB utt., kaut kur izmantoju Accounting 2.0 un kaut kur 3.0, gandrīz visas atskaites veidoju izmantojot ACS rīkus bez veidlapām, lai tās atvērts abās versijās. Visu šo atskaišu uzturēšana dažādām versijām un dažādām datu bāzēm ir darbietilpīga un veltīga, jo Ir plānots pāriet uz vienotu konfigurāciju un bāzes...

Izveidosim profilu.
Klasteru konsolē mēs izveidojam drošības profilu, kurā iestatām karogus "Var izmantot kā drošā režīma drošības profilu" un sadaļā "Atļauta pilna piekļuve:" "uz priviliģēto režīmu".

Daudzos gadījumos, izmantojot pārskatus un vienkāršu apstrādi, šī metode būs piemērojama. Sarežģītākām situācijām nav jēgas aprakstīt procesu, jo tas ir izklāstīts dokumentācijā (iespēja konfigurēt drošības profilus konkrētiem ārējiem failiem, norādot tā jaukšanas apjomu utt.).

P.S. Es domāju, ka drošības profili darbojas tikai tad, ja tiek izmantotas platformas un servera licences CORP līmenī, bet šī funkcionalitāte darbojas arī platformā 1C:Enterprise 8.3 (to var nosacīti saukt par PROF, pēc analoģijas ar standarta konfigurācijām Basic/PROF/CORP)

Drukāt (Ctrl+P)

Konfigurācijas objekti

Ja nepieciešams serverī izmantot “neuzticamu” programmas kodu: ārējo apstrādi vai lietotāja ievadīto programmas kodu izmantošanai Run() un Calculate() metodēs, var izmantot drošo darbības režīmu.

Drošajā režīmā:

  • Priviliģēts režīms atcelts.
  • Pārslēgšanās uz priviliģēto režīmu ignorēts.
  • Aizliegts operācijas, kuru rezultātā tiek izmantoti ārēji līdzekļi saistībā ar platformu 1C:Enterprise (tostarp norādīto metožu nebloķējošie analogi):
  • COM mehānismi:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Ārējo komponentu ielāde:
    • LoadExternalComponent();
    • ConnectExternalComponent ().
  • Piekļuve failu sistēmai:
    • ValueInFile();
    • CopyFile();
    • MergeFiles();
    • MoveFile();
    • SplitFile();
    • CreateDirectory();
    • Dzēst failus ();
    • Jauns fails;
    • Jauns xBase;
    • EntryHTML.OpenFile();
    • LasītHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • Jauns ReadText(), ja pirmais parametrs ir virkne;
    • ReadText.Open(), ja pirmais parametrs ir virkne;
    • NewTextRecord(), ja pirmais parametrs ir virkne;
    • WriteText.Open(), ja pirmais parametrs ir virkne;
    • NewTextExtract();
    • mainot rekvizītu ExtractText.FileName;
    • ExtractText.Write();
    • New Picture(), ja pirmais parametrs ir virkne;
    • Picture.Write();
    • jauns BinaryData();
    • BinaryData.Write();
    • NewDataRecord(), ja pirmais parametrs ir virkne;
    • New ReadData(), ir pirmais parametrs - virkne;
    • visas FileStreamManager objekta metodes;
    • Jauns FileStream();
    • FormattedDocument.Write();
    • Ģeogrāfiskā shēma.Lasīt();
    • GeographicScheme.Write();
    • Ģeogrāfiskā shēma.Drukāt();
    • TabularDocument.Read();
    • TabularDocument.Write();
    • TabularDocument.Print(); GrafiskāShēma.Lasīt();
    • GraphicScheme.Write();
    • GrafiskāShēma.Drukāt();
    • TextDocument.Read();
    • TextDocument.Write().
  • Interneta pieslēgums:
    • Jauns interneta savienojums,
    • Jauns InternetMail,
    • Jauns interneta starpniekserveris,
    • Jauns HTTP savienojums,
    • Jauns FTP savienojums.

UZMANĪBU! Veicot aizliegtas darbības, izpildes laikā tiek izmests izņēmums.

Piezīme. Ārējās atskaites un apstrāde, kas atvērta, izmantojot izvēlni Fails - Atvērt, tiek izpildītas drošajā režīmā, ja lietotājam nav administratīvās piekļuves tiesību.

Drošā režīma ieslēgšanas reižu skaitam jāsakrīt ar tā izslēgšanas reižu skaitu. Tomēr, ja drošais režīms tika ieslēgts procedūrā vai funkcijā (vienu vai vairākas reizes), bet netika izslēgts, sistēma automātiski izslēgsies tik reižu, cik bija atlikušas nepilnīgas ieslēgšanās procedūras vai funkcija.

Ja procedūrā vai funkcijā izsauc metodi SetSafeMode (nepatiess) veica vairāk nekā metodes izsaukumus SetSafeMode (patiess), tad tiks izmests izņēmums.

Drošā režīma programmatūras instalēšana var būt nepieciešama, ja konfigurācijas izstrādātājs plāno izmantot trešās puses (attiecībā uz konfigurāciju) programmas kodu, kura uzticamību izstrādātājs nevar garantēt. Šāda koda piemērs ir Execute() un Compute() metožu izpilde gadījumos, kad izpildāmais kods tiek iegūts no ārpasaules. Šādā gadījumā laba prakse būtu iestatīt drošo režīmu pirms šo metožu izpildes:

// Tiek ģenerēts programmas kods, kas jāizpilda // Iespējams, ka kods ir ielādēts no ārējiem avotiem // vai ievadīts manuāli ExecutableCode = GetExecutedCodeFromExternalWorld(); // Iespējot drošo režīmu SetSafeMode(True); // Izpildīt potenciāli bīstamu kodu Execute(ExecutableCode); // Izslēgt drošo režīmu SetSafeMode(False);

Dažos gadījumos drošā režīma iestatījumi var būt pretrunā ar priviliģētā režīma iestatījumiem. Šāda konflikta piemērs ir tāda dokumenta ievietošana, kuram ir iestatīts rekvizīts Priviliģētais režīms grāmatošanas laikā no koda iebūvētajā valodā, kas tiek izpildīts drošajā režīmā. Šajā gadījumā priviliģētais režīms ir atspējots, un mēģinājumi to iespējot tiek ignorēti. Rezultātā kods iegultajā valodā, kas “rēķinās” ar iespējoto priviliģēto režīmu, “saskaras” ar tā neesamību, kā rezultātā rodas kļūdas ar acīmredzamiem to parādīšanās iemesliem. Lai novērstu šo situāciju, sistēma 1C:Enterprise automātiski atspējo drošo režīmu notikumu apstrādātājiem, kas ir pieejami objekta modulī vai pārvaldnieka modulī, ar nosacījumu, ka izpildāmais kods iebūvētajā valodā neatrodas konfigurācijas paplašinājumā. Šādi apstrādātāji sintakses palīgā tiek atzīmēti īpašā veidā.

Tas arī nodrošina iespēju atspējot drošo režīmu no iebūvētās valodas (ja programmas kods, kas mēģina to atspējot, nav konfigurācijas paplašinājumā). Lai atspējotu drošo režīmu, ir metode SetDisableSafeMode(). Varat pārbaudīt, vai drošais režīms pašlaik ir atspējots (automātiski vai izsaucot metodi), izmantojot šo metodi GetDisableSafeMode().

Iebūvētajā valodā vienas metodes ietvaros nevar būt vairāk par vienu ligzdošanas līmeni drošā režīma iestatīšanai (izsaucot metodi SetSafeMode()) un drošā režīma atspējošanas iestatīšanu (automātiski metadatu objekta notikuma izpildes laikā apdarinātājiem vai izsaucot SetSafeModeDisable() metodi). Mēģinot palielināt ligzdošanu, tiek izmests izņēmums:

// ProcedureProcedureName() SetDisableSafeMode(True) pareiza izmantošana; SetSafeMode(true); SetSafeMode(False); SetDisableSafeMode(False); EndProcedure // Nepareiza ProcedureProcedureName() izmantošana SetDisableSafeMode(True); SetSafeMode(true); SetDisableSafeMode(False); // Izņēmums EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(False); // Izņēmums EndProcedure

Ārējās apstrādes programmatiskā atvēršana tiek veikta, izmantojot globālā konteksta objektu ExternalProcessing, kuram ir tips ExternalProcessingManager. Katram 1C platformas darbības režīmam (parastais lietojumprogrammas režīms un pārvaldītās lietojumprogrammas režīms) darbam ar ārējo apstrādi tiek izmantotas dažādas objektu metodes.

Notiek ārējā apstrāde parastā lietojumprogrammas režīmā

Parastā lietojumprogrammā ir jāizmanto objekta ExternalProcessing metode Create(), kurai tiek nodots pilns ārējā apstrādes faila nosaukums. Metode atgriež tipa objektu Ārējā apstrāde, šis objekts ir ārējā apstrāde, kas tiek atvērta. Ja jums ir jāatver ārējā apstrādes forma, tad saņemtajā objektā izsauciet metodi GetForm(), kas atgriezīs galveno formu, un pēc tam izsauciet Open() metodi, lai to atvērtu.


Apstrāde = ExternalProcessing.Create(FullFileName);
Apstrāde.GetForm().Open();

Ārējā apstrādē galvenajai formai vienmēr ir jābūt parastajai, bet kontrolētajai formai vienmēr jābūt papildu formai, pretējā gadījumā GetForm() metode nedarbosies parastajā lietojumprogrammas režīmā.

Darbojas ārējā apstrāde pārvaldītās lietojumprogrammas režīmā

Pārvaldīto formu režīmā algoritms tiek sadalīts pēc izpildes konteksta. Klientā mēs saņemam bināros datus, izmantojot pilnu ārējā apstrādes faila nosaukumu. Saņemtos bināros datus pārsūtām uz serveri un ievietojam pagaidu krātuvē. Tālāk jums ir jāizsauc ExternalProcessing objekta metode Connect(), kurai tiek nodota pagaidu uzglabāšanas adrese. Metode atgriež pievienotās ārējās apstrādes nosaukumu. Mēs atgriežam klientam ārējās apstrādes nosaukumu, izveidojam virknes ceļu uz apstrādes formu un izmantojam OpenForm() metodi, lai atvērtu ārējo apstrādes formu.

&Serverī
Funkcija GetExternalProcessingName(BinaryData)
AdresePagaidu krātuvē = VietaPagaidu krātuvē(Bināri dati);
Atgriezt ExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&OnClient
FullFileName = ""; // Ārējās apstrādes faila pilns nosaukums.
FileData = jauns BinaryData(FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm("ExternalProcessing." + ExternalProcessingName + ".Form");

Drošais režīms ārējai apstrādei

Objekta ExternalProcessing metodēm Create() un Connect() ir ienākošais parametrs SafeMode - zīme par ārējās apstrādes savienošanu drošajā režīmā. Ja parametrs nav norādīts, savienojums tiks izveidots drošajā režīmā.
Drošais režīms ir paredzēts, lai aizsargātu sistēmu no “neuzticama” programmas koda izpildes serverī. Iespējamās briesmas rada ārēja apstrāde vai programmas kods, ko lietotājs ievadījis izmantošanai Run() un Calculate() metodēs.
Drošais režīms nosaka šādus ierobežojumus:
  • priviliģētais režīms tiek atcelts, ja tas tika instalēts;
  • mēģinājumi pāriet priviliģētajā režīmā tiek ignorēti;
  • darbības ar COM objektiem ir aizliegtas;
  • ārējo komponentu iekraušana un pievienošana ir aizliegta;
  • piekļuve failu sistēmai ir aizliegta (izņemot pagaidu failus);
  • Interneta piekļuve ir aizliegta.
Interaktīvi atvērtie procesi netiek veikti drošajā režīmā, tādēļ ir ieteicams ieviest mehānismu ārējo procesoru atvēršanai drošajā režīmā, kā arī atļauju līmenī aizliegt lietotājam interaktīvi atvērt ārējos procesorus.
Lai aizliegtu interaktīvu apstrādes atvēršanu, visās lietotājam piešķirtajās lomās ir nepieciešams noņemt tiesības “Ārējās apstrādes interaktīvā atvēršana” (skat. 1. attēlu).
1. attēls. Tiesības interaktīvi atvērt ārējo apstrādi/pārskatus
Tiesības "Ārējās apstrādes interaktīvā atvēršana" nekādā veidā neietekmē Ārējās apstrādes objektu.

Ārējo atskaišu programmatiskā atvēršana ir līdzīga ārējai apstrādei, taču jums ir jāizmanto globālā konteksta objekts ExternalReports, kura veids ir ExternalReportsManager.