Turvarežiim on seatud universaalsele xml-vahetusele. Turvarežiim on seadistatud. Operatsioon on keelatud. Turvarežiim väliseks töötlemiseks

Kasutades näitena "Trade Management 11.3", käsitleme välise trükivormi ühendamise lihtsat protsessi. Samuti kaalume uue turvasüsteemi funktsioone.

Kiire läbipääs

Eeltoimingud

Kõigepealt peaksite funktsiooni lubamine või kontrollige selle saadavust

1. Logige sisse täielike õigustega infobaasi.

2. Mine menüüsse “Põhiandmed ja haldus”/Blokeeri “Haldamine”/Käsk “Prinditud vormid, aruanded ja töötlemine”.

Lisand

Avanevas jaotises:

Lisame töötlemise nupu "Loo" (see on oluline) või "Uuenda!" olemasolev:

  • Valige see loendist (kui pole valitud või tühi, siis käsk ei tööta, kuid ei ütle midagi).
  • Klõpsake nuppu "Laadi failist".

Pärast 1C ilmumist välisesse töötlemisse ilmusid turvakontrollid uutes konfiguratsioonides.

Peaksite installima ainult iseseisvalt loodud või teadaolevate sidekanalite kaudu saadud töötluse (mitte posti teel, ainult kehtiva sertifikaadiga veebisaidilt või arendaja töötajate poolt telefoni teel kinnitatud).

Kui töötleja on kõik ette näinud, siis määratakse "Paigutus" - objektid, millesse töötlemine kaasatakse, kuvatakse käsk(ad).
Töötamiseks klõpsake lihtsalt nuppu "Salvesta ja sulge".

Läbivaatus

Vahetult pärast seda, olenevalt ravi tüübist:

  • Trükitud vorm saab kättesaadavaks dokumendi avamisel või selle loendist (juba avatud dokumendi puhul uuesti avamisel) vajutades nuppu “Prindi”.
  • Töötlemine on saadaval iga alamsüsteemi jaotises „Täiendav töötlemine”.
  • Täitmise töötlemine loendi nupu “Täida” või objektivormi peamise käsupaneeli abil.

Ülaltoodud töötlemise korral näeb käivitamine välja järgmine:

Kui dokument on uus, tuleb see üles kirjutada; väline töötlemismehhanism hoiatab teid selle eest:

Edasine käitumine sõltub sisseehitatud funktsionaalsusest: võimalik on avada vorm või lihtsalt töödelda andmeid.

Turvahoiatused 1C

Uued platvormi väljalasked ja konfiguratsioonid on tugevdanud kaitset pahatahtlike programmide käivitamise vastu.

Töötlemine võib põhjustada Exceli käivitamise ja laadimise, sel juhul hoiatab uus turbe alamsüsteem teid ka:

Sel juhul töötleja kood katkeb.

Kui klõpsate "Jah", palub süsteem teil käsk uuesti käivitada:

Infobaasi kasutajal on võimalik keelata kaitse ohtlike toimingute eest konfiguraatori kaudu:

Seda ei saa režiimist "Ettevõte" muuta, võib-olla tehti seda meelega ja see võib ilmuda pärast värskendamist.

Samuti tuleb märkida, et kui töötlemine kasutab Excelit, peab see töötama ebaturvalises režiimis (see oli nii enne uue süsteemi kasutuselevõttu, see töötab paralleelselt):

"MS EXCELi ei saa laadida!!!" "Turvarežiim on seadistatud. Operatsioon on keelatud"

Välistöötlusel näeb see välja järgmine:

Arendaja peaks sisemises töötlemise kirjelduses määrama selle väärtuseks "False", siis on kõik korras:

Funktsioon InformationOnExternalProcessing() ExportRegistrationParameters = Uus struktuur; Registreerimisparameetrid.Insert("SafeMode", False);

Konfiguratsiooni uuendamisel ilmus hoiatustekst ka allika kohta, kust seadistusfail saadi:

Fakt on see, et 1C klient-serveri versiooni kasutamisel avatakse väline töötlemine / aruanded turvarežiimis, milles privilegeeritud režiimi kasutamine on keelatud. Ja privilegeeritud režiimi kasutatakse väga sageli tüüpilistes konfiguratsioonides: trükitud vormide genereerimine, mitmesugused teenusekontrollid (vahetuste registreerimine) jne. Selle tulemusena saate isegi ilma vormita juurdepääsukontrollisüsteemi tavaaruande kasutamisel (vaikimisi kasutatakse üldvormi "Aruandevorm") ja kohandatud aruande seadete salvestamisel (vastavasse kataloogi) veateate ebapiisava juurdepääsu kohta. õigused erinevatele ametlikel eesmärkidel kasutatavatele konstantidele ja seansi parameetritele pärast rida SetPrivilegedMode(True) ;

“Õige” lahendus oleks välistöötluse ja aruannete ühendamine BSP “Täiendavad aruanded ja töötlemine” mehhanismide kaudu turvarežiimi keelamise või õiguste lisamisega (minu arvates BSP versioonist 2.2.2.1). Kui aga on mingil põhjusel vaja kasutada väliseid aruandlus-/töötlemisfaile, saate konfigureerida klastri turvaprofiili, mida kasutatakse turvarežiimi turvaprofiilina konkreetse teabebaasi jaoks.

Tahaksin kohe märkida, et see valik ei ole eelistatav, kuid erinevate asjaolude tõttu saab seda kasutada nii lihtsustatud kujul. Näiteks on mul erinevates linnades mitu andmebaasi, tavaline kohalik rangelt piiratud õigustega, kinnine USB jne, kuskil kasutan Accounting 2.0 ja kuskil 3.0, teen peaaegu kõik aruanded ilma vormideta ACS vahenditega, et need avatud mõlemas versioonis. Kõigi nende aruannete pidamine erinevate versioonide ja erinevate andmebaaside jaoks on töömahukas ja mõttetu, sest Plaanis on üle minna ühtsele konfiguratsioonile ja baasile...

Loome profiili.
Klastri konsoolis loome turvaprofiili, milles seame lipud "Saab kasutada turvarežiimi turvaprofiilina" ja jaotises "Täielik juurdepääs lubatud:" "privilegeeritud režiimi".

Paljudel aruannete kasutamise ja lihtsa töötlemise juhtudel on see meetod rakendatav. Keerulisemate olukordade puhul pole mõtet protsessi kirjeldada, sest seda kirjeldatakse dokumentatsioonis (võimalus konfigureerida konkreetsete väliste failide turvaprofiile, määrates selle räsi hulga jne).

P.S. Arvasin, et turvaprofiilid toimivad ainult platvormi- ja serverilitsentside kasutamisel CORP-i tasemel, kuid see funktsioon töötab ka platvormil 1C:Enterprise 8.3 (seda võib tinglikult nimetada PROF-iks, analoogselt tavakonfiguratsioonidega Basic/PROF/CORP)

Prindi (Ctrl+P)

Konfiguratsiooniobjektid

Kui serveris on vaja kasutada “ebausaldusväärset” programmikoodi: välist töötlemist või kasutaja poolt sisestatud programmikoodi, mida kasutatakse meetodites Run() ja Calculate(), saab kasutada turvalist töörežiimi.

Turvarežiimis:

  • Privilegeeritud režiim tühistatud.
  • Lülitumine privilegeeritud režiimile ignoreeritud.
  • Keelatud toimingud, mis viivad väliste vahendite kasutamiseni seoses platvormiga 1C:Enterprise (sealhulgas määratletud meetodite mitteblokeerivad analoogid):
  • COM mehhanismid:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Väliste komponentide laadimine:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • Juurdepääs failisüsteemile:
    • ValueInFile();
    • CopyFile();
    • MergeFiles();
    • MoveFile();
    • SplitFile();
    • CreateDirectory();
    • Kustuta failid();
    • Uus fail;
    • Uus xBase;
    • EntryHTML.OpenFile();
    • LoeHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • New ReadText(), kui esimene parameeter on string;
    • ReadText.Open(), kui esimene parameeter on string;
    • NewTextRecord(), kui esimene parameeter on string;
    • WriteText.Open(), kui esimene parameeter on string;
    • NewTextExtract();
    • atribuudi ExtractText.FileName muutmine;
    • ExtractText.Write();
    • New Picture(), kui esimene parameeter on string;
    • Pilt.Kirjuta();
    • new BinaryData();
    • BinaryData.Write();
    • NewDataRecord(), kui esimene parameeter on string;
    • New ReadData(), on esimene parameeter - string;
    • kõik FileStreamManageri objekti meetodid;
    • Uus FileStream();
    • VormindatudDokument.Write();
    • Geograafiline skeem.Loe();
    • GeographicScheme.Write();
    • GeographicScheme.Print();
    • Tabelidokument.Loe();
    • Tabelidokument.Write();
    • Tabelidokument.Prindi(); Graafiline skeem.Loe();
    • Graafiline skeem.Write();
    • Graafikaskeem.Prindi();
    • TextDocument.Read();
    • TextDocument.Write().
  • Internetiühendus:
    • Uus Interneti-ühendus,
    • Uus InternetMail,
    • Uus Interneti-puhverserver,
    • Uus HTTP-ühendus,
    • Uus FTP-ühendus.

TÄHELEPANU! Keelatud toimingute tegemisel tehakse käitusajal erand.

Märge. Menüü Fail - Ava abil avatud välised aruanded ja töötlemine käivitatakse turvarežiimis, kui kasutajal pole administraatori juurdepääsuõigusi.

Turvarežiimi sisselülitamiste arv peab ühtima selle väljalülitamise kordade arvuga. Kui aga turvarežiim lülitati protseduuri või funktsiooni käigus sisse (üks kord või mitu), kuid seda ei lülitatud välja, lülitub süsteem automaatselt välja nii mitu korda, kui toimingu või funktsiooni sisselülitusi oli pooleli.

Kui protseduuris või funktsioonis kutsub välja meetodi SetSafeMode (vale) teinud rohkem kui meetodikutseid SetSafeMode (tõene), siis tehakse erand.

Turvarežiimi tarkvara installimine võib olla vajalik juhul, kui konfiguratsiooniarendaja kavatseb kasutada (seoses konfiguratsiooniga) kolmanda osapoole programmikoodi, mille usaldusväärsust arendaja ei saa garanteerida. Sellise koodi näiteks on meetodite Execute() ja Compute() täitmine juhtudel, kui käivitatav kood saadakse välismaailmast. Sel juhul on hea tava seada enne järgmiste meetodite käivitamist turvarežiim:

// Genereeritakse programmi kood, mis tuleks käivitada // Võimalik, et kood on laaditud välistest allikatest // või sisestatud käsitsi ExecutableCode = GetExecutedCodeFromExternalWorld(); // Turvarežiimi lubamine SetSafeMode(True); // Potentsiaalselt ohtliku koodi käivitamine Execute(ExecutableCode); // Turvarežiimi väljalülitamine SetSafeMode(False);

Mõnel juhul võivad turvarežiimi sätted olla vastuolus privilegeeritud režiimi sätetega. Sellise konflikti näide on dokumendi postitamine, mille jaoks on määratud atribuut Privilegeeritud režiim sisseehitatud keeles, mis käivitatakse turvarežiimis. Sel juhul on privilegeeritud režiim keelatud ja selle lubamise katseid ignoreeritakse. Selle tulemusel puutub sisseehitatud keele kood, mis "arvestab" lubatud privilegeeritud režiimiga, selle puudumisega, mis põhjustab tõrkeid nende ilmumise mitteselgete põhjustega. Selle olukorra vältimiseks keelab süsteem 1C:Enterprise automaatselt turvarežiimi objektimoodulis või haldurimoodulis saadaolevate sündmuste käitlejate jaoks, tingimusel et sisseehitatud keeles käivitatav kood ei asu konfiguratsioonilaiendis. Sellised töötlejad märgitakse süntaksiabis erilisel viisil.

Samuti võimaldab see sisseehitatud keelest turvarežiimi keelata (kui programmi kood, mis üritab seda keelata, ei ole konfiguratsioonilaiendis). Turvarežiimi keelamiseks on olemas meetod SetDisableSafeMode(). Seda meetodit kasutades saate kontrollida, kas turvarežiim on praegu keelatud (automaatselt või meetodi väljakutsumise teel). GetDisableSafeMode().

Ühe meetodi sees sisseehitatud keeles ei saa olla rohkem kui üks pesastustase turvarežiimi seadistamisel (kutsates välja SetSafeMode() meetodi) ja turvarežiimi keelamise seadmisel (automaatselt metaandmeobjekti sündmuse täitmise ajal töötlejad või kutsudes meetodit SetSafeModeDisable()). Pesastumise suurendamisel tehakse erand:

// ProcedureProcedureName() õige kasutamine SetDisableSafeMode(True); SetSafeMode(tõene); SetSafeMode(False); SetDisableSafeMode(False); EndProcedure // ProcedureProcedureName() vale kasutamine SetDisableSafeMode(True); SetSafeMode(tõene); SetDisableSafeMode(False); // Erand Procedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(False); // Erandi lõppprotseduur

Välise töötlemise programmiline avamine toimub globaalse kontekstiobjekti ExternalProcessing abil, millel on tüüp Väline töötlemishaldur. 1C platvormi iga töörežiimi jaoks (tavaline rakendusrežiim ja hallatud rakenduse režiim) kasutatakse välise töötlemisega töötamiseks erinevaid objektimeetodeid.

Välise töötlemise käivitamine tavalises rakendusrežiimis

Tavalises rakenduses peate kasutama objekti ExternalProcessing meetodit Create(), mis edastatakse välise töötlemisfaili täisnime. Meetod tagastab tüüpi objekti Väline töötlemine, on see objekt avatav välistöötlus. Kui peate avama välise töötlemisvormi, kutsuge vastuvõetud objektil meetod GetForm(), mis tagastab põhivormi, ja seejärel avage meetod Open().


Töötlemine = ExternalProcessing.Create(FullFileName);
Töötlemine.GetForm().Open();

Välistöötlusel peab põhivorm alati olema tavaline ja juhitav vorm alati lisavorm, muidu GetForm() meetod tavalises rakendusrežiimis ei tööta.

Välise töötlemise käitamine hallatud rakenduse režiimis

Hallatud vormide režiimis jagatakse algoritm täitmise konteksti järgi. Kliendis saame binaarandmeid, kasutades välise töötlemisfaili täisnime. Edastame saadud binaarandmed serverisse ja asetame ajutisele salvestusruumile. Järgmiseks tuleb kutsuda ExternalProcessing objekti meetod Connect(), millele edastatakse ajutise salvestuse aadress. Meetod tagastab ühendatud välise töötlemise nime. Tagastame kliendile välise töötlemise nime, loome stringi tee töötlemisvormile ja kasutame OpenForm() meetodit välise töötlemisvormi avamiseks.

&Serveris
Funktsioon GetExternalProcessingName (binaarandmed)
AddressInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Return ExternalProcessing.Connect(AddressInTemporaryStorage);
EndFunction

&OnClient
FullFileName = ""; // Välise töötlusfaili täisnimi.
Failiandmed = new BinaryData(Faili täisnimi);
ExternalProcessingName = Hangi välimineProcessingName(FileData);
OpenForm("ExternalProcessing." + ExternalProcessingName + ".Form");

Turvarežiim väliseks töötlemiseks

ExternalProcessing objekti meetoditel Create() ja Connect() on sissetulev parameeter SafeMode – märk välise töötlemise ühendamisest turvarežiimis. Kui parameetrit ei täpsustata, luuakse ühendus turvarežiimis.
Turvarežiim on loodud süsteemi kaitsmiseks "ebausaldusväärse" programmikoodi käivitamise eest serveris. Võimalik oht tuleneb välisest töötlemisest või programmikoodist, mille kasutaja on sisestanud kasutamiseks meetodites Run() ja Calculate().
Turvarežiim seab järgmised piirangud:
  • privilegeeritud režiim tühistatakse, kui see oli installitud;
  • katseid siseneda privilegeeritud režiimi ignoreeritakse;
  • toimingud COM-objektidega on keelatud;
  • väliste komponentide laadimine ja ühendamine on keelatud;
  • juurdepääs failisüsteemile on keelatud (v.a ajutised failid);
  • Interneti-ühendus on keelatud.
Interaktiivselt avatud protsesse turvarežiimis ei teostata, seetõttu on soovitatav rakendada väliste protsessorite turvarežiimis avamise mehhanismi, samuti lubade tasemel keelata kasutajal väliseid protsessoreid interaktiivselt avada.
Töötlemise interaktiivse avamise keelamiseks on kõigis kasutajale määratud rollides vaja eemaldada õigus “Välise töötlemise interaktiivne avamine” (vt joonis 1).
Joonis 1. Õigused välise töötlemise/aruannete interaktiivseks avamiseks
Õigus "Välise töötlemise interaktiivne avamine" ei mõjuta välise töötlemise objekti mingil moel.

Väliste aruannete programmiline avamine sarnaneb välise töötlemisega, kuid peaksite kasutama globaalset kontekstiobjekti ExternalReports, mille tüüp on Väline aruannete haldur.

Fakt on see, et 1C klient-serveri versiooni kasutamisel avatakse väline töötlemine / aruanded turvarežiimis, milles privilegeeritud režiimi kasutamine on keelatud. Ja privilegeeritud režiimi kasutatakse väga sageli tüüpilistes konfiguratsioonides: trükitud vormide genereerimine, mitmesugused teenusekontrollid (vahetuste registreerimine) jne. Selle tulemusena saate isegi ilma vormita juurdepääsukontrollisüsteemi tavaaruande kasutamisel (vaikimisi kasutatakse üldvormi "Aruandevorm") ja kohandatud aruande seadete salvestamisel (vastavasse kataloogi) veateate ebapiisava juurdepääsu kohta. õigused erinevatele ametlikel eesmärkidel kasutatavatele konstantidele ja seansi parameetritele pärast rida SetPrivilegedMode(True) ;

“Õige” lahendus oleks välistöötluse ja aruannete ühendamine BSP “Täiendavad aruanded ja töötlemine” mehhanismide kaudu turvarežiimi keelamise või õiguste lisamisega (minu arvates BSP versioonist 2.2.2.1). Kui aga on mingil põhjusel vaja kasutada väliseid aruandlus-/töötlemisfaile, saate konfigureerida klastri turvaprofiili, mida kasutatakse turvarežiimi turvaprofiilina konkreetse teabebaasi jaoks.

Tahaksin kohe märkida, et see valik ei ole eelistatav, kuid erinevate asjaolude tõttu saab seda kasutada nii lihtsustatud kujul. Näiteks on mul erinevates linnades mitu andmebaasi, tavaline kohalik rangelt piiratud õigustega, kinnine USB jne, kuskil kasutan Accounting 2.0 ja kuskil 3.0, teen peaaegu kõik aruanded ilma vormideta ACS vahenditega, et need avatud mõlemas versioonis. Kõigi nende aruannete pidamine erinevate versioonide ja erinevate andmebaaside jaoks on töömahukas ja mõttetu, sest Plaanis on üle minna ühtsele konfiguratsioonile ja baasile...

Loome profiili.
Klastri konsoolis loome turvaprofiili, milles seame lipud "Saab kasutada turvarežiimi turvaprofiilina" ja jaotises "Täielik juurdepääs lubatud:" "privilegeeritud režiimi".

Paljudel aruannete kasutamise ja lihtsa töötlemise juhtudel on see meetod rakendatav. Keerulisemate olukordade puhul pole mõtet protsessi kirjeldada, sest seda kirjeldatakse dokumentatsioonis (võimalus konfigureerida konkreetsete väliste failide turvaprofiile, määrates selle räsi hulga jne).

P.S. Arvasin, et turvaprofiilid toimivad ainult platvormi- ja serverilitsentside kasutamisel CORP-i tasemel, kuid see funktsioon töötab ka platvormil 1C:Enterprise 8.3 (seda võib tinglikult nimetada PROF-iks, analoogselt tavakonfiguratsioonidega Basic/PROF/CORP)