დაინსტალირებულია უსაფრთხო რეჟიმი 1s 8.3. გარე დამუშავების პროგრამული გახსნა

გარე დამუშავების პროგრამული გახსნა ხორციელდება გლობალური კონტექსტური ობიექტის ExternalProcessing-ის გამოყენებით, რომელსაც აქვს ტიპი გარე დამუშავების მენეჯერი. 1C პლატფორმის თითოეული ოპერაციული რეჟიმისთვის (ჩვეულებრივი აპლიკაციის რეჟიმი და მართული აპლიკაციის რეჟიმი), გამოიყენება სხვადასხვა ობიექტის მეთოდები გარე დამუშავებასთან მუშაობისთვის.

გარე დამუშავების გაშვება აპლიკაციის ნორმალურ რეჟიმში

ჩვეულებრივ აპლიკაციაში უნდა გამოიყენოთ ExternalProcessing ობიექტის Create() მეთოდი, რომელსაც გადაეცემა გარე დამუშავების ფაილის სრული სახელი. მეთოდი აბრუნებს ტიპის ობიექტს გარე დამუშავება, ეს ობიექტი არის გარე დამუშავების გახსნა. თუ საჭიროა გარე დამუშავების ფორმის გახსნა, მაშინ მიღებულ ობიექტზე გამოიძახეთ GetForm() მეთოდი, რომელიც დააბრუნებს მთავარ ფორმას და შემდეგ გამოიძახეთ Open() მეთოდი მის გასახსნელად.


დამუშავება = ExternalProcessing.Create(FullFileName);
დამუშავება.GetForm().Open();

გარე დამუშავებისას მთავარი ფორმა ყოველთვის უნდა იყოს რეგულარული, ხოლო კონტროლირებადი ფორმა ყოველთვის უნდა იყოს დამატებითი, წინააღმდეგ შემთხვევაში GetForm() მეთოდი არ იმუშავებს აპლიკაციის ნორმალურ რეჟიმში.

გარე დამუშავების გაშვება მართული აპლიკაციის რეჟიმში

მართული ფორმების რეჟიმში, ალგორითმი იყოფა შესრულების კონტექსტში. კლიენტზე, ჩვენ ვიღებთ ორობით მონაცემებს გარე დამუშავების ფაილის სრული სახელის გამოყენებით. მიღებულ ორობით მონაცემებს გადავცემთ სერვერზე და ვათავსებთ დროებით საცავში. შემდეგი, თქვენ უნდა გამოძახოთ Connect() მეთოდი ExternalProcessing ობიექტის, რომელსაც გადაეცემა დროებითი შენახვის მისამართი. მეთოდი აბრუნებს დაკავშირებული გარე დამუშავების სახელს. ჩვენ ვუბრუნებთ კლიენტს გარე დამუშავების სახელს, ვქმნით სტრიქონის გზას დამუშავების ფორმაში და ვიყენებთ OpenForm() მეთოდს გარე დამუშავების ფორმის გასახსნელად.

&სერვერზე
ფუნქცია GetExternalProcessingName(BinaryData)
AddressInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Return ExternalProcessing.Connect(AddressInTemporaryStorage);
საბოლოო ფუნქცია

&OnClient
FullFileName = ""; // გარე დამუშავების ფაილის სრული სახელი.
FileData = new BinaryData (FullFileName);
ExternalProcessingName = GetExternalProcessingName(FileData);
OpenForm("ExternalProcessing." + ExternalProcessingName + ".Form");

უსაფრთხო რეჟიმი გარე დამუშავებისთვის

ExternalProcessing ობიექტის Create() და Connect() მეთოდებს აქვთ შემომავალი პარამეტრი SafeMode - გარე დამუშავების უსაფრთხო რეჟიმში დაკავშირების ნიშანი. თუ პარამეტრი არ არის მითითებული, კავშირი განხორციელდება უსაფრთხო რეჟიმში.
უსაფრთხო რეჟიმი შექმნილია სისტემის დასაცავად სერვერზე "არასანდო" პროგრამის კოდის შესრულებისგან. პოტენციური საფრთხე მოდის გარე დამუშავებიდან ან პროგრამის კოდიდან, რომელიც შეყვანილია მომხმარებლის მიერ Run() და Calculate() მეთოდებში გამოსაყენებლად.
უსაფრთხო რეჟიმი აწესებს შემდეგ შეზღუდვებს:
  • პრივილეგირებული რეჟიმი გაუქმებულია, თუ ის დაინსტალირებული იყო;
  • პრივილეგირებულ რეჟიმში შესვლის მცდელობები იგნორირებულია;
  • ოპერაციები COM ობიექტებთან აკრძალულია;
  • აკრძალულია გარე კომპონენტების ჩატვირთვა და შეერთება;
  • ფაილურ სისტემაზე წვდომა აკრძალულია (გარდა დროებითი ფაილებისა);
  • ინტერნეტთან წვდომა აკრძალულია.
ინტერაქტიულად გახსნილი პროცესები არ ხორციელდება უსაფრთხო რეჟიმში, ამიტომ რეკომენდებულია გარე პროცესორების გახსნის მექანიზმის უსაფრთხო რეჟიმში დანერგვა, ასევე ნებართვის დონეზე, რომ აუკრძალოს მომხმარებელს გარე პროცესორების ინტერაქტიულად გახსნა.
დამუშავების ინტერაქტიული გახსნის აკრძალვის მიზნით, მომხმარებლისთვის მინიჭებულ ყველა როლში, აუცილებელია ამოიღოთ მარჯვენა „გარე დამუშავების ინტერაქტიული გახსნა“ (იხ. სურათი 1).
სურათი 1. გარე დამუშავების/ანგარიშების ინტერაქტიულად გახსნის უფლება
„გარე დამუშავების ინტერაქტიული გახსნის“ უფლება არანაირად არ მოქმედებს გარე დამუშავების ობიექტზე.

გარე მოხსენებების პროგრამული გახსნა გარე დამუშავების მსგავსია, მაგრამ თქვენ უნდა გამოიყენოთ გლობალური კონტექსტური ობიექტი ExternalReports, რომელსაც აქვს ტიპი ExternalReportsManager.

ბეჭდვა (Ctrl+P)

კონფიგურაციის ობიექტები

თუ საჭიროა სერვერზე "არასანდო" პროგრამის კოდის გამოყენება: გარე დამუშავება ან მომხმარებლის მიერ შეყვანილი პროგრამის კოდი Run() და Calculate() მეთოდებში გამოსაყენებლად, შეგიძლიათ გამოიყენოთ უსაფრთხო ოპერაციული რეჟიმი.

უსაფრთხო რეჟიმში:

  • პრივილეგირებული რეჟიმი გაუქმდა.
  • პრივილეგირებულ რეჟიმში შესვლა უგულებელყო.
  • Აკრძალულიოპერაციები, რომლებიც იწვევს გარე საშუალებების გამოყენებას 1C:Enterprise პლატფორმასთან მიმართებაში (მათ შორის, მითითებული მეთოდების არადაბლოკვის ანალოგები):
  • COM მექანიზმები:
    • COMObject();
    • GetCOMObject();
    • WrapperHTMLDocument.GetCOMObject().
  • გარე კომპონენტების ჩატვირთვა:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • ფაილური სისტემის წვდომა:
    • ValueInFile();
    • CopyFile();
    • MergeFiles();
    • MoveFile();
    • SplitFile();
    • CreateDirectory();
    • Წაშალე ფაილები();
    • ახალი ფაილი;
    • ახალი xBase;
    • EntryHTML.OpenFile();
    • ReadHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • New ReadText(), თუ პირველი პარამეტრი არის სტრიქონი;
    • ReadText.Open(), თუ პირველი პარამეტრი არის სტრიქონი;
    • NewTextRecord(), თუ პირველი პარამეტრი არის სტრიქონი;
    • WriteText.Open(), თუ პირველი პარამეტრი არის სტრიქონი;
    • NewTextExtract();
    • თვისების შეცვლა ExtractText.FileName;
    • ExtractText.Write();
    • New Picture(), თუ პირველი პარამეტრი არის სტრიქონი;
    • Picture.Write();
    • new BinaryData();
    • BinaryData.Write();
    • NewDataRecord(), თუ პირველი პარამეტრი არის სტრიქონი;
    • New 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().
  • ინტერნეტთან წვდომა:
    • ახალი ინტერნეტ კავშირი,
    • ახალი ინტერნეტფოსტა,
    • ახალი ინტერნეტპროქსი,
    • ახალი HTTPConnection,
    • ახალი FTPConnection.

ყურადღება! აკრძალული ოპერაციების შესრულებისას გამონაკლისი დგება გაშვების დროს.

Შენიშვნა. გარე ანგარიშები და დამუშავება გახსნილი ფაილი - ღია მენიუს გამოყენებით შესრულებულია უსაფრთხო რეჟიმში, თუ მომხმარებელს არ აქვს ადმინისტრაციული წვდომის უფლებები.

უსაფრთხო რეჟიმის ჩართვის რაოდენობა უნდა შეესაბამებოდეს მისი გამორთვის რაოდენობას. თუმცა, თუ უსაფრთხო რეჟიმი ჩართული იყო პროცედურის ან ფუნქციის ფარგლებში (ერთხელ ან მეტჯერ), მაგრამ არ იყო გამორთული, სისტემა ავტომატურად გაითიშება იმდენჯერ, რამდენჯერაც დარჩა არასრული ჩართვა პროცედურაში ან ფუნქციაში.

თუ პროცედურაში ან ფუნქციაში იძახებს მეთოდს SetSafeMode (მცდარი)გააკეთა მეტი, ვიდრე მეთოდის ზარები SetSafeMode (True), მაშინ გამონაკლისი იქნება ჩაგდებული.

უსაფრთხო რეჟიმის პროგრამული უზრუნველყოფის ინსტალაცია შეიძლება საჭირო გახდეს იმ შემთხვევაში, როდესაც კონფიგურაციის დეველოპერი აპირებს გამოიყენოს მესამე მხარის (კონფიგურაციასთან დაკავშირებით) პროგრამის კოდი, რომლის სანდოობის გარანტიაც დეველოპერს არ შეუძლია. ასეთი კოდის მაგალითია Execute() და Compute() მეთოდების შესრულება იმ შემთხვევებში, როდესაც შესრულებადი კოდი მიღებულია გარე სამყაროდან. ამ შემთხვევაში, კარგი პრაქტიკა იქნება უსაფრთხო რეჟიმის დაყენება ამ მეთოდების შესრულებამდე:

// გენერირდება პროგრამის კოდი, რომელიც უნდა შესრულდეს // შესაძლებელია კოდი ჩაიტვირთოს გარე წყაროებიდან // ან ხელით შევიდეს ExecutableCode = GetExecutedCodeFromExternalWorld(); // უსაფრთხო რეჟიმის ჩართვა SetSafeMode(True); // პოტენციურად საშიში კოდის შესრულება Execute(ExecutableCode); // უსაფრთხო რეჟიმის გამორთვა SetSafeMode(False);

ზოგიერთ შემთხვევაში, უსაფრთხო რეჟიმის პარამეტრები შეიძლება ეწინააღმდეგებოდეს პრივილეგირებული რეჟიმის პარამეტრებს. ასეთი კონფლიქტის მაგალითია დოკუმენტის განთავსება, რომლისთვისაც დაყენებულია პრივილეგირებული რეჟიმი ქონების განთავსებისას, ჩაშენებული ენის კოდიდან, რომელიც შესრულებულია უსაფრთხო რეჟიმში. ამ შემთხვევაში, პრივილეგირებული რეჟიმი გამორთულია და მისი ჩართვის მცდელობები იგნორირებულია. შედეგად, ჩაშენებულ ენაში კოდი, რომელიც „ითვლის“ ჩართულ პრივილეგირებულ რეჟიმში, „ეწყება“ მის არარსებობას, რაც იწვევს შეცდომებს მათი გარეგნობის არა აშკარა მიზეზებით. ამ სიტუაციის თავიდან ასაცილებლად, 1C: Enterprise სისტემა ავტომატურად თიშავს უსაფრთხო რეჟიმს მოვლენის დამმუშავებლებისთვის, რომლებიც ხელმისაწვდომია ობიექტის მოდულში ან მენეჯერის მოდულში, იმ პირობით, რომ ჩაშენებულ ენაში შესრულებადი კოდი არ არის განთავსებული კონფიგურაციის გაფართოებაში. ასეთი დამმუშავებლები სინტაქსის ასისტენტში სპეციალური გზით აღინიშნება.

ის ასევე უზრუნველყოფს უსაფრთხო რეჟიმის გამორთვის შესაძლებლობას ჩაშენებული ენიდან (თუ პროგრამის კოდი, რომელიც მის გამორთვას ცდილობს, არ არის კონფიგურაციის გაფართოებაში). უსაფრთხო რეჟიმის გამორთვის მეთოდი არსებობს SetDisableSafeMode(). შეგიძლიათ შეამოწმოთ, რომ უსაფრთხო რეჟიმი ამჟამად გამორთულია (ავტომატურად ან მეთოდის გამოძახებით) მეთოდის გამოყენებით GetDisableSafeMode().

ჩაშენებულ ენაში ერთი მეთოდის ფარგლებში არ შეიძლება იყოს უსაფრთხო რეჟიმის დაყენების ერთზე მეტი დონე (SetSafeMode() მეთოდის გამოძახებით) და უსაფრთხო რეჟიმის გამორთვის (ავტომატურად მეტამონაცემების ობიექტის მოვლენის შესრულებისას). დამმუშავებლები ან SetSafeModeDisable() მეთოდის გამოძახებით. ბუდეების გაზრდის მცდელობისას გამონაკლისი დგება:

// ProcedureProcedureName() SetDisableSafeMode(True) სწორი გამოყენება; SetSafeMode (true); SetSafeMode (False); SetDisableSafeMode(False); პროცედურის დასრულება // Procedure ProcedureName() SetDisableSafeMode(True) არასწორი გამოყენება; SetSafeMode (true); SetDisableSafeMode(False); // გამონაკლისი EndProcedure ProcedureProcedureName() SetSafeMode(True); SetDisableSafeMode(False); // Exception EndProcedure

8.3.9.2170 ვერსიაში უსაფრთხოება გაძლიერდა - სისტემა ახლა ითხოვს დადასტურებას გარე დამუშავების, გაფართოებების და ა.შ. როგორც ჩანს, ტროას შემდეგ:

დანერგილია საშიში ქმედებებისგან დაცვის მექანიზმი. პოტენციურად საშიში ქმედების შესრულებისას სისტემა გასცემს გაფრთხილებას, რომელიც შეიცავს ინფორმაციას განხორციელებული მოქმედებისა და ამ მოქმედების პოტენციური საფრთხის შესახებ. პოტენციურად საშიში მოქმედებები მოიცავს:

  • გარე მოხსენების ჩატვირთვა, დამუშავება ან კონფიგურაციის გაფართოება.
  • კონფიგურაციის/გაფართოების ჩატვირთვა ან განახლება.
  • წვდომა გარე მოხსენებიდან/პროცესორიდან ან გაფართოებიდან შემდეგ შესაძლებლობებზე:
  • ოპერაციული სისტემის ბრძანების შესრულება.
  • მომხმარებლის მენეჯმენტი.

მომხმარებელს აქვს შესაძლებლობა დაუშვას ან უარყოს პოტენციურად საშიში ქმედება. თუ მოქმედება დაშვებულია, ზოგიერთ შემთხვევაში შეიძლება დაგჭირდეთ ნებადართული მოქმედების ხელახლა შესრულება.

შეტყობინება ასე გამოიყურება:

უსაფრთხოების გაფრთხილება

იხსნება "" ფაილიდან "C:\.......epf". მიზანშეწონილია ყურადღება მიაქციოთ წყაროს, საიდანაც ეს ფაილი იქნა მიღებული. თუ არ არსებობს შეთანხმება წყაროსთან დამატებითი მოდულების შემუშავებაზე, ან არსებობს ეჭვი ფაილის შინაარსთან დაკავშირებით, მაშინ არ არის რეკომენდებული მისი გახსნა, რადგან ამან შეიძლება ზიანი მიაყენოს კომპიუტერს და მონაცემებს. ნება მიეცით ამ ფაილის გახსნას. ᲜᲐᲛᲓᲕᲘᲚᲐᲓ ᲐᲠ

გამოსავალი:

კონფიგურატორში, ინფორმაციული უსაფრთხოების მომხმარებლის თვისებებში, მოხსენით მონიშვნა "საშიში ქმედებებისგან დაცვა".

დოკუმენტაციიდან:საშიში აქტივობის დაცვის მექანიზმის გამორთვა

ზოგიერთ შემთხვევაში აუცილებელია სახიფათო ქმედებებისგან დაცვის მექანიზმის გამორთვა. ამისათვის შეგიძლიათ გამოიყენოთ შემდეგი პარამეტრები:

1. გამორთეთ სახიფათო მოქმედებებისგან დაცვა (საშიში მოქმედებებისგან დაცვა) ჩამრთველი კონკრეტული მომხმარებლის თვისებებში. ეს გააუქმებს ამ მომხმარებლის დაცვას.

2. გამოიყენეთ გარე დამუშავების (ანგარიშის) მენეჯერების Connect() მეთოდების დაცვა საშიში ქმედებებისგან. ამ შემთხვევაში შესაძლებელია გარე დამუშავების (ანგარიშის) ჩატვირთვა მომხმარებლის მოთხოვნის გარეშე.

3. გამოიყენეთ Configuration Extension ობიექტის Protection from Dangerous Actions თვისება ამ ობიექტის Write() მეთოდის გამოძახებამდე.

4. გამოიყენეთ DisableUnsafeActionProtection პარამეტრი conf.cfg ფაილში. ამ შემთხვევაში, სახიფათო ქმედებებისგან დაცვის მექანიზმი გაითიშება ინფობაზის ყველა მომხმარებლისთვის, რომელთა კავშირის სტრიქონები აკმაყოფილებს მითითებულ ნიღბებს.

სახიფათო მოქმედებებისგან დაცვის გამორთვა ხორციელდება შემდეგი წესების მიხედვით (მოცემული თანმიმდევრობით):

1. დაცვა ჩაითვლება გათიშულად, თუ ამჟამინდელი მომხმარებლის სახიფათო მოქმედებებისგან დაცვა გასუფთავებულია.

2. დაცვა ჩაითვლება გათიშულად, თუ ინფორმაციის ბაზასთან დაკავშირების სტრიქონი ემთხვევა conf.cfg ფაილის DisableUnsafeActionProtection პარამეტრში მითითებულ ერთ-ერთ შაბლონს.

3. თუ გარე დამუშავება (მოხსენება) დაკავშირებულია დაცვასთან, აშკარად გამორთულია დაცვის სახიფათო ქმედებებისგან დაცვის პარამეტრის გამოყენებით.

4. თუ დაცვა ცალსახად გამორთულია გაფართოების თვისების გამოყენებით, დაცვა საშიში ქმედებებისგან.

ფაქტია, რომ 1C-ის კლიენტ-სერვერის ვერსიის გამოყენებისას გარე დამუშავება/ანგარიშები იხსნება უსაფრთხო რეჟიმში, რომელშიც აკრძალულია პრივილეგირებული რეჟიმის გამოყენება. და პრივილეგირებული რეჟიმი ძალიან ხშირად გამოიყენება ტიპიურ კონფიგურაციებში: ბეჭდური ფორმების გენერირება, სხვადასხვა სერვისის შემოწმება (ბირჟების რეგისტრაცია) და ა.შ. შედეგად, თუნდაც წვდომის კონტროლის სისტემაზე რეგულარული მოხსენების გამოყენებით ფორმის გარეშე (ნაგულისხმევად გამოიყენება ზოგადი ფორმა "ReportForm") და მორგებული ანგარიშის პარამეტრების შენახვა (შესაბამის დირექტორიაში), თქვენ მიიღებთ შეცდომას არასაკმარისი წვდომის შესახებ. უფლებები სხვადასხვა მუდმივებზე და სესიის პარამეტრებზე, რომლებიც გამოიყენება ოფიციალური მიზნებისთვის ხაზის შემდეგ SetPrivilegedMode(True);

„სწორი“ გამოსავალი იქნება გარე დამუშავებისა და ანგარიშების დაკავშირება BSP „დამატებითი ანგარიშები და დამუშავების“ მექანიზმების მეშვეობით უსაფრთხო რეჟიმის გამორთვით ან ნებართვების დამატებით (ჩემი აზრით, BSP ვერსიიდან 2.2.2.1). მაგრამ თუ რაიმე მიზეზით აუცილებელია გარე მოხსენების/დამუშავების ფაილების გამოყენება, მაშინ შეგიძლიათ დააკონფიგურიროთ კლასტერული უსაფრთხოების პროფილი, რომელიც გამოიყენება როგორც უსაფრთხო რეჟიმის უსაფრთხოების პროფილი კონკრეტული ინფობაზისთვის.

დაუყოვნებლივ მინდა აღვნიშნო, რომ ეს ვარიანტი არ არის სასურველი, მაგრამ სხვადასხვა გარემოებების გამო მისი გამოყენება შესაძლებელია ასეთი გამარტივებული ფორმით. მაგალითად, მაქვს რამდენიმე მონაცემთა ბაზა სხვადასხვა ქალაქში, საერთო ლოკალური, მკაცრად შეზღუდული უფლებებით, დახურული USB და ა.შ., სადღაც ვიყენებ Accounting 2.0 და სადღაც 3.0, ვაკეთებ თითქმის ყველა ანგარიშს ACS ინსტრუმენტების გამოყენებით ფორმების გარეშე, ისე რომ ისინი გაიხსნა ორივე ვერსიაში. ყველა ამ მოხსენების შენარჩუნება სხვადასხვა ვერსიისა და მონაცემთა ბაზებისთვის შრომატევადი და უშედეგოა, რადგან იგეგმება ერთიან კონფიგურაციაზე და ბაზაზე გადასვლა...

მოდით შევქმნათ პროფილი.
კლასტერულ კონსოლში ჩვენ ვქმნით უსაფრთხოების პროფილს, რომელშიც ვაყენებთ დროშებს "შეიძლება გამოყენებულ იქნას როგორც უსაფრთხო რეჟიმის უსაფრთხოების პროფილი"და " სექციაში "სრული წვდომა დაშვებულია:" "პრივილეგირებულ რეჟიმში".

ანგარიშების გამოყენებისა და მარტივი დამუშავების მრავალ შემთხვევაში, ეს მეთოდი გამოყენებული იქნება. უფრო რთული სიტუაციებისთვის, პროცესის აღწერას აზრი არ აქვს, რადგან იგი ასახულია დოკუმენტაციაში (უსაფრთხოების პროფილების კონფიგურაციის შესაძლებლობა კონკრეტული გარე ფაილებისთვის მისი ჰეშის რაოდენობის მითითებით და ა.შ.).

P.S. მე ვფიქრობდი, რომ უსაფრთხოების პროფილები ფუნქციონირებს მხოლოდ პლატფორმისა და სერვერის ლიცენზიების გამოყენებისას CORP დონეზე, მაგრამ ეს ფუნქცია ასევე მუშაობს 1C:Enterprise 8.3 პლატფორმაზე (მას პირობითად შეიძლება ეწოდოს PROF, სტანდარტული კონფიგურაციების ანალოგიით Basic/PROF/CORP)

გააზიარეთ