უსაფრთხო მუშაობის რეჟიმი. როგორ დავამატოთ გარე ბეჭდვის ფორმა ან დამუშავების უსაფრთხო რეჟიმი 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.

ფაქტია, რომ 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)

პლატფორმის 8.3.9.2033 გამოშვებით გამოჩნდა ახალი მექანიზმი "დაცვა საშიში ქმედებებისგან".

ამ ინოვაციის წყალობით, 1C-მა ახლა დაიწყო გინება დამუშავების გახსნაზე (და არა მხოლოდ):

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

ხსნის "ჩემი გარე დამუშავება" ფაილიდან "My_External_Processing.epf"

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

ნება მომეცით გავხსნა ეს ფაილი?

ასე რომ, 1C-მ გადაწყვიტა ებრძოლა მავნე კოდს!

საიდან მოდის ეს "მავნე კოდი" საწარმოში, ჯერ კიდევ საიდუმლოა)

პოტენციურად საშიში ქმედებები მოიცავდა:

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

როგორ შეიძლება ამ "სასწაულის" გამორთვა?

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

ამის გამორთვის სხვა გზებიც არსებობს:

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

ამ პარამეტრში შეგიძლიათ მიუთითოთ რამდენიმე ნიღაბი, რომლებიც გამოყოფილია ";" სიმბოლოთი, მაგალითად:

DisableUnsafeActionProtection=test_.*;stage_.*;

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

  • გარე დამუშავების (ანგარიშის) მენეჯერების Connect() მეთოდების საშიში მოქმედებებისგან პარამეტრის დაცვა
  • კონფიგურაციის გაფართოების ობიექტის სახიფათო მოქმედებებისგან დაცვა ამ ობიექტის Write() მეთოდის გამოძახებამდე.

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

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)

ბეჭდვა (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();
    • 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) სწორი გამოყენება;