Безбедниот режим е поставен на универзална размена на xml. Поставен е безбеден режим. Операцијата е забранета. Безбеден режим за надворешна обработка

Користејќи го „Trade Management 11.3“ како пример, ќе го разгледаме едноставниот процес на поврзување на надворешен формулар за печатење. Ќе ги разгледаме и карактеристиките на новиот безбедносен систем.

Брз скок

Прелиминарни дејствија

Прво треба овозможи функционалностили проверете ја неговата достапност

1. Најавете се со целосни права на информативната база на податоци.

2. Одете во менито „Главни податоци и администрација“/Блокирај „Администрација“/Команда „Печати формулари, извештаи и обработка“.

Додаток

Во делот што се отвора:

Додаваме обработка користејќи го копчето „Креирај“ (ова е важно) или „Ажурирај!“ постоечки:

  • Изберете го во списокот (ако не е избрано или празно, командата нема да работи, но нема да каже ништо).
  • Кликнете на копчето „Вчитај од датотека“.

По појавувањето на 1C во надворешната обработка, безбедносните проверки се појавија во нови конфигурации.

Треба да инсталирате само обработка создадена независно или добиена преку познати канали за комуникација (не од пошта, само од веб-локација со валиден сертификат или обезбедени од вработените на развивачот, потврдени од него преку телефон).

Ако сè во обработката е пропишано од развивачот, тогаш ќе се постави „Поставување“ - ќе се појават објектите во кои ќе биде вклучена обработката, командата(ите).
За да работите, само кликнете „Зачувај и затвори“.

Испитување

Веднаш по ова, во зависност од видот на третманот:

  • Печатениот образец станува достапен при отворање на документ или од неговата листа (за веќе отворен кога се отвора повторно) со кликнување на копчето „Печати“.
  • Обработката е достапна во секциите „Дополнителна обработка“ во секој потсистем
  • Обработка на пополнување со помош на копчето „Пополни“ од списокот или главниот команден панел на формуларот за објект.

За горенаведената обработка, лансирањето ќе изгледа вака:

Ако документот е нов, треба да се запише, надворешниот механизам за обработка ќе ве предупреди за ова:

Понатамошното однесување зависи од вградената функционалност: можно е да се отвори формулар или едноставно да се обработат податоци.

Безбедносни предупредувања во 1C

Новите изданија и конфигурации на платформата ја зголемија заштитата од стартување на малициозни програми.

Обработката може да доведе до вчитување на Excel, во тој случај новиот безбедносен потсистем исто така ќе ве предупреди:

Во овој случај, кодот на управувачот е прекинат.

Ако кликнете „Да“, системот ќе ве замоли повторно да ја извршите командата:

Можно е корисникот на инфобазата да ја оневозможи заштитата од опасни дејства преку „Конфигураторот“:

Ова не може да се смени од режимот „Enterprise“, можеби ова е направено намерно и може да се појави по ажурирањето.

Исто така, треба да се забележи дека ако обработката користи Excel, тој мора да работи во небезбеден режим (ова беше случај пред воведувањето на новиот систем, ова работи паралелно):

"Не може да се вчита MS EXCEL!!!" „Безбеден режим е поставен. Операцијата е забранета“

Во надворешната обработка изгледа вака:

Програмерот треба да го постави на „Неточно“ во описот на внатрешната обработка, тогаш сè ќе биде во ред:

Функција InformationOnExternalProcessing() ExportRegistrationParameters = Нова структура;

Registration Parameters.Insert("SafeMode", False);

При ажурирање на конфигурацијата, се појави предупредувачки текст и за изворот од кој е добиена конфигурациската датотека: Факт е дека при користење на верзијата клиент-сервер на 1C, надворешната обработка/извештаи се отвораат во безбеден режим, во кој е забрането користење на привилегиран режим. И привилегираниот режим се користи многу често во типични конфигурации: генерирање печатени обрасци, разни проверки на услуги (регистрација на размена) итн. Како резултат на тоа, дури и со користење на редовен извештај за системот за контрола на пристап без формулар (по дифолт, се користи општата форма „ReportForm“) и зачувување на сопствените поставки за извештај (во соодветниот директориум), ќе добиете грешка за недоволен пристап права на различни константи и параметри на сесија кои се користат за официјални цели по линијата

SetPrivilegedMode (Точно) ;

Би сакал веднаш да забележам дека оваа опција не се претпочита, но поради различни околности може да се користи во толку поедноставена форма. На пример, имам неколку бази на податоци во различни градови, заедничка локална со строго ограничени права, затворено USB итн., некаде користам сметководство 2.0, а некаде 3.0, ги правам скоро сите извештаи користејќи алатки ACS без формулари, така што тие отворена во двете верзии. Одржувањето на сите овие извештаи за различни верзии и различни бази на податоци е трудоинтензивно и залудно, бидејќи Се планира да се префрли на единствена конфигурација и база...

Ајде да создадеме профил.
Во конзолата на кластерот, создаваме безбедносен профил во кој ги поставуваме знаменцата „Може да се користи како безбедносен профил во безбеден режим“и " во делот "Дозволен е целосен пристап:" „во привилегиран режим“.

Во многу случаи на користење извештаи и едноставна обработка, овој метод ќе биде применлив. За посложени ситуации, нема смисла да се опишува процесот, бидејќи тоа е наведено во документацијата (способност да се конфигурираат безбедносни профили за одредени надворешни датотеки со наведување на нејзината количина на хаш, итн.).

П.С. Мислев дека безбедносните профили функционираат само кога се користат лиценци за платформа и сервер на ниво на CORP, но оваа функционалност работи и на платформата 1C:Enterprise 8.3 (може условно да се нарече PROF, по аналогија со стандардните конфигурации Basic/PROF/CORP)

Печатење (Ctrl+P)

Конфигурациски објекти

Ако е неопходно да се користи „недоверлив“ програмски код на серверот: надворешна обработка или програмски код внесен од корисникот за употреба во методите Run() и Calculate(), можете да го користите безбедниот режим на работа.

Во безбеден режим:

  • Привилегиран режим откажана.
  • Префрлување на привилегиран режим игнорирани.
  • Забранетооперации што водат до употреба на надворешни средства во однос на платформата 1C: Enterprise (вклучувајќи аналози што не блокираат на наведените методи):
  • COM механизми:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • Вчитување на надворешни компоненти:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • Пристап до датотечен систем:
    • ValueInFile();
    • CopyFile();
    • MergeFiles();
    • MoveFile();
    • SplitFile();
    • CreateDirectory();
    • DeleteFiles();
    • Нова датотека;
    • Нов xBase;
    • EntryHTML.OpenFile();
    • ReadHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • Нов ReadText(), ако првиот параметар е низа;
    • ReadText.Open(), ако првиот параметар е низа;
    • NewTextRecord(), ако првиот параметар е низа;
    • WriteText.Open(), ако првиот параметар е низа;
    • NewTextExtract();
    • менување на својството ExtractText.FileName;
    • ExtractText.Write();
    • New Picture(), ако првиот параметар е низа;
    • Слика.Write();
    • нови BinaryData();
    • BinaryData.Write();
    • NewDataRecord(), ако првиот параметар е низа;
    • Ново ReadData(), има прв параметар - стринг;
    • сите методи на објектот FileStreamManager;
    • Нов 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().
  • Пристап до Интернет:
    • Нова интернет конекција,
    • Нова Интернет-пошта,
    • Нов Интернетпрокси,
    • Нова HTTP-врска,
    • Нова FTP-врска.

ВНИМАНИЕ! При извршување на забранети операции, исклучок се фрла при извршување.

Забелешка. Надворешните извештаи и обработката отворени со помош на менито Датотека - Отвори се извршуваат во безбеден режим доколку корисникот нема административни права за пристап.

Бројот на активирања на безбеден режим мора да одговара на бројот на оневозможени. Меѓутоа, ако безбедниот режим бил вклучен во рамките на процедурата или функцијата (еднаш или повеќе), но не бил исклучен, системот автоматски ќе се исклучи онолку пати колку што имало нецелосни вклучувања во процедурата или функцијата што останала.

Ако во постапка или функција повика метод SetSafeMode (Неточно)направи повеќе од повици со методи SetSafeMode (Точно), тогаш ќе се фрли исклучок.

Може да биде потребна инсталација на софтвер на безбеден режим во случај кога развивачот на конфигурација има намера да користи програмски код од трета страна (во однос на конфигурацијата), чија сигурност не може да ја гарантира развивачот. Пример за таков код е извршувањето на методите Execute() и Compute() во случаи кога извршниот код се добива од надворешниот свет. Во овој случај, добра практика би било да поставите Safe Mode пред да ги извршите овие методи:

// Се генерира програмски код што треба да се изврши // Можно е кодот да се вчита од надворешни извори // или да се внесе рачно ExecutableCode = GetExecutedCodeFromExternalWorld(); // Овозможи безбеден режим SetSafeMode (Точно); // Изврши потенцијално опасен код Execute(ExecutableCode); // Исклучи безбеден режим SetSafeMode (Неточно);

Во некои случаи, поставките за безбеден режим може да бидат во конфликт со поставките за привилегиран режим. Пример за таков конфликт е објавувањето на документ за кој е поставен режимот Привилегиран при објавување, од кодот на вградениот јазик што се извршува во безбеден режим. Во овој случај, привилегираниот режим е оневозможен и обидите да се овозможи се игнорираат. Како резултат на тоа, кодот во вградениот јазик, кој „брои“ на овозможениот привилегиран режим, „наидува“ на неговото отсуство, што доведува до грешки со неочигледни причини за нивното појавување. За да се спречи оваа ситуација, системот 1C:Enterprise автоматски го оневозможува безбедниот режим за ракувачи со настани што се достапни во модулот за објекти или менаџерски модул, под услов извршниот код на вградениот јазик да не се наоѓа во наставката за конфигурација. Таквите ракувачи се означени на посебен начин во синтаксниот асистент.

Исто така, обезбедува можност за оневозможување на Safe Mode од вградениот јазик (ако програмскиот код што се обидува да го оневозможи не е во наставката за конфигурација). За да го исклучите безбедниот режим постои метод SetDisableSafeMode(). Можете да проверите дали безбедниот режим е моментално оневозможен (автоматски или со повикување метод) користејќи го методот GetDisableSafeMode().

Во рамките на еден метод во вградениот јазик, не може да има повеќе од едно ниво на вгнездување на поставување на безбеден режим (со повикување на методот SetSafeMode()) и поставување на оневозможување на безбедниот режим (автоматски за време на извршувањето на настанот на објектот на метаподатоци ракувачи или со повикување на методот SetSafeModeDisable()). Кога се обидувате да го зголемите гнездењето, се фрла исклучок:

// Правилна употреба на ProcedureProcedureName() SetDisableSafeMode(True);

SetSafeMode (точно); SetSafeMode (Неточно); SetDisableSafeMode (Неточно); Крај на процедурата // Неправилна употреба на Procedure ProcedureName() SetDisableSafeMode(True);

SetSafeMode (точно);

SetDisableSafeMode (Неточно); // Исклучок EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode (Неточно); // Исклучок крајна процедураПрограмското отворање на надворешната обработка се врши со помош на глобалниот контекст објект ExternalProcessing, кој го има типот


ExternalProcessingManager
. За секој режим на работа на платформата 1C (редовен режим на апликација и режим на управувана апликација), се користат различни методи на објект за работа со надворешна обработка.

Извршување на надворешна обработка во нормален режим на апликација

Во типична апликација, мора да го користите методот Create() на објектот ExternalProcessing, на кој му се пренесува целото име на надворешната датотека за обработка. Методот враќа објект од типот

Надворешна обработка

, овој објект е надворешната обработка што се отвора. Ако треба да отворите надворешен формулар за обработка, тогаш повикајте го методот GetForm() на примениот објект, кој ќе ја врати главната форма, а потоа повикајте го методот Open() за да го отворите.
Обработка = ExternalProcessing.Create(FullFileName);
Обработка.GetForm().Open();
Во надворешната обработка, главната форма секогаш мора да биде редовна, а контролираната форма секогаш мора да биде дополнителна, инаку методот GetForm() нема да работи во нормален режим на апликација.
Крајна функција

&OnClient
FullFileName = ""; // Целосно име на надворешната датотека за обработка.
FileData = нов BinaryData (FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm ("ExternalProcessing." + ExternalProcessingName + ".Form");

Безбеден режим за надворешна обработка

Методите Create() и Connect() на објектот ExternalProcessing имаат дојдовен параметар SafeMode - знак за поврзување на надворешната обработка во безбеден режим. Ако параметарот не е наведен, врската ќе се изврши во безбеден режим.
Безбедниот режим е дизајниран да го заштити системот од извршување на „недоверлив“ програмски код на серверот. Потенцијалната опасност доаѓа од надворешната обработка или програмскиот код внесен од корисникот за употреба во методите Run() и Calculate().
Безбедниот режим ги наметнува следниве ограничувања:
  • привилегираниот режим е откажан ако е инсталиран;
  • обидите за влез во привилегиран режим се игнорираат;
  • операциите со COM објекти се забранети;
  • се забранува вчитување и поврзување на надворешни компоненти;
  • пристапот до датотечен систем е забранет (освен за привремени датотеки);
  • Пристапот до Интернет е забранет.
Процесите отворени интерактивно не се изведуваат во безбеден режим, затоа се препорачува да се имплементира механизам за отворање на надворешни процесори во безбеден режим, како и на ниво на дозвола за да се забрани на корисникот интерактивно отворање на надворешни процесори.
За да се забрани интерактивното отворање на обработката, во сите улоги доделени на корисникот, неопходно е да се отстрани десното „Интерактивно отворање на надворешна обработка“ (види Слика 1).
Слика 1. Права за интерактивно отворање на надворешна обработка/извештаи
Правото „Интерактивно отворање на надворешна обработка“ на кој било начин не влијае на објектот за надворешна обработка.

Програмското отворање на надворешни извештаи е слично на надворешната обработка, но треба да го користите глобалниот контекст објект ExternalReports, кој има тип Менаџер за надворешни извештаи.

При ажурирање на конфигурацијата, се појави предупредувачки текст и за изворот од кој е добиена конфигурациската датотека: Факт е дека при користење на верзијата клиент-сервер на 1C, надворешната обработка/извештаи се отвораат во безбеден режим, во кој е забрането користење на привилегиран режим. И привилегираниот режим се користи многу често во типични конфигурации: генерирање печатени обрасци, разни проверки на услуги (регистрација на размена) итн. Како резултат на тоа, дури и со користење на редовен извештај за системот за контрола на пристап без формулар (по дифолт, се користи општата форма „ReportForm“) и зачувување на сопствените поставки за извештај (во соодветниот директориум), ќе добиете грешка за недоволен пристап права на различни константи и параметри на сесија кои се користат за официјални цели по линијата

SetPrivilegedMode (Точно) ;

Би сакал веднаш да забележам дека оваа опција не се претпочита, но поради различни околности може да се користи во толку поедноставена форма. На пример, имам неколку бази на податоци во различни градови, заедничка локална со строго ограничени права, затворено USB итн., некаде користам сметководство 2.0, а некаде 3.0, ги правам скоро сите извештаи користејќи алатки ACS без формулари, така што тие отворена во двете верзии. Одржувањето на сите овие извештаи за различни верзии и различни бази на податоци е трудоинтензивно и залудно, бидејќи Се планира да се префрли на единствена конфигурација и база...

Ајде да создадеме профил.
Во конзолата на кластерот, создаваме безбедносен профил во кој ги поставуваме знаменцата „Може да се користи како безбедносен профил во безбеден режим“и " во делот "Дозволен е целосен пристап:" „во привилегиран режим“.

Во многу случаи на користење извештаи и едноставна обработка, овој метод ќе биде применлив. За посложени ситуации, нема смисла да се опишува процесот, бидејќи тоа е наведено во документацијата (способност да се конфигурираат безбедносни профили за одредени надворешни датотеки со наведување на нејзината количина на хаш, итн.).

П.С. Мислев дека безбедносните профили функционираат само кога се користат лиценци за платформа и сервер на ниво на CORP, но оваа функционалност работи и на платформата 1C:Enterprise 8.3 (може условно да се нарече PROF, по аналогија со стандардните конфигурации Basic/PROF/CORP)