Chế độ vận hành an toàn. Cách thêm biểu mẫu in bên ngoài hoặc xử lý 1s 8.2 Tôi không thể cài đặt chế độ an toàn

Với việc phát hành nền tảng 8.3.9.2033, một cơ chế mới đã xuất hiện "Bảo vệ khỏi những hành động nguy hiểm".

Nhờ sự đổi mới này, giờ đây 1C đã bắt đầu tuyên bố về việc mở cửa xử lý (và không chỉ):

Cảnh báo an ninh

Mở “Xử lý bên ngoài của tôi” từ tệp “My_External_Processing.epf”

Bạn nên chú ý đến nguồn mà tập tin này được lấy. Nếu không có thỏa thuận với nguồn về việc phát triển các mô-đun bổ sung hoặc có nghi ngờ về nội dung của tệp thì không nên mở tệp vì điều này có thể gây hại cho máy tính và dữ liệu.

Cho phép tôi mở tập tin này?

Thế là 1C quyết định đấu tranh chống mã độc!

“Mã độc” này sẽ đến từ đâu trong doanh nghiệp vẫn còn là một ẩn số)

Các hành động nguy hiểm tiềm ẩn bao gồm:

  • Đang tải báo cáo bên ngoài, xử lý hoặc mở rộng cấu hình.
  • Đang tải hoặc cập nhật cấu hình/tiện ích mở rộng.
  • Truy cập từ báo cáo/bộ xử lý bên ngoài hoặc tiện ích mở rộng vào các khả năng sau:
  • Thực hiện lệnh của hệ điều hành.
  • Quản lý người dùng (ghi hoặc xóa thông tin về người dùng cơ sở thông tin).
  • Gọi phương thức Connect() của người quản lý xử lý bên ngoài (báo cáo).
  • Gọi phương thức ExtendConfiguration.Write().
  • Làm việc với các đối tượng COM

Làm sao có thể dập tắt được “điều kỳ diệu” này?

Để thực hiện việc này, bạn cần khởi chạy 1C Enterprise ở chế độ cấu hình.
Chọn menu “Quản trị” - “Người dùng”.
Trong cửa sổ mở ra cho người dùng của chúng tôi, bạn cần mở cửa sổ cài đặt người dùng và bỏ chọn tab “Cơ bản” "Bảo vệ khỏi những hành động nguy hiểm"

Có nhiều cách khác để vô hiệu hóa điều này:

Giờ đây, có thể chỉ định danh sách các cơ sở thông tin mà khi làm việc với cơ sở đó, biện pháp bảo vệ chống lại các hành động nguy hiểm sẽ bị vô hiệu hóa.
Hàm này chịu trách nhiệm về tham số Vô hiệu hóaActionProtection trong tệp conf.cfg, cho phép bạn vô hiệu hóa cơ chế bảo vệ chống lại các hành động nguy hiểm đối với tất cả người dùng của một số cơ sở thông tin nhất định có chuỗi kết nối đáp ứng các mặt nạ được chỉ định trong tham số Vô hiệu hóaActionProtection.

Trong tham số này, bạn có thể chỉ định một số mặt nạ được phân tách bằng ký hiệu “;”

Vô hiệu hóaUnsafeActionProtection=test_.*;stage_.*;

Ngoài ra, tính năng bảo vệ chống lại các hành động nguy hiểm của người dùng có thể bị vô hiệu hóa theo chương trình, có sẵn các tham số và thuộc tính sau:

  • Bảo vệ tham số khỏi các hành động nguy hiểm của phương pháp Connect() của trình quản lý xử lý (báo cáo) bên ngoài
  • Thuộc tính Bảo vệ chống lại các hành động nguy hiểm của đối tượng Tiện ích mở rộng cấu hình trước khi gọi phương thức Write() của đối tượng này.

Việc kiểm tra nhu cầu sử dụng biện pháp bảo vệ chống lại các hành động nguy hiểm được thực hiện theo trình tự sau:

1. Nếu hộp kiểm “Bảo vệ khỏi các hoạt động nguy hiểm” của người dùng hiện tại bị bỏ chọn thì tính năng bảo vệ được coi là bị vô hiệu hóa.

2. Nếu chuỗi kết nối tới cơ sở thông tin đáp ứng một trong các mẫu được chỉ định trong tham số Vô hiệu hóaUnsafeActionProtection của tệp conf.cfg thì tính năng bảo vệ được coi là bị vô hiệu hóa.

3. Nếu tính năng bảo vệ bị vô hiệu hóa rõ ràng bằng cách sử dụng thông số Báo cáo hoặc Bảo vệ khỏi các hành động nguy hiểm của xử lý bên ngoài.

4. Nếu tính năng bảo vệ bị vô hiệu hóa rõ ràng bằng cách sử dụng thuộc tính tiện ích Bảo vệ khỏi các hành động nguy hiểm.

In (Ctrl+P)

Đối tượng cấu hình

Nếu cần sử dụng mã chương trình “không đáng tin cậy” trên máy chủ: mã xử lý bên ngoài hoặc mã chương trình được người dùng nhập để sử dụng trong các phương thức Run() và Calculate(), bạn có thể sử dụng chế độ vận hành an toàn.

Ở chế độ an toàn:

  • Chế độ đặc quyền đã hủy bỏ.
  • Chuyển sang chế độ đặc quyền làm ngơ.
  • Cấm các hoạt động dẫn đến việc sử dụng các phương tiện bên ngoài liên quan đến nền tảng 1C:Enterprise (bao gồm các phương thức tương tự không chặn của các phương pháp đã chỉ định):
  • Cơ chế COM:
    • COMObject();
    • GetCOMObject();
    • Trình bao bọcHTMLDocument.GetCOMObject().
  • Đang tải các thành phần bên ngoài:
    • LoadExternalComponent();
    • ConnectExternalComponent().
  • Truy cập hệ thống tập tin:
    • ValueInFile();
    • CopyFile();
    • Hợp nhất các tập tin();
    • Di chuyển tập tin();
    • SplitFile();
    • Tạo thư mục();
    • Xóa các tập tin();
    • Tập tin mới;
    • xBase mới;
    • EntryHTML.OpenFile();
    • ReadHTML.OpenFile();
    • ReadXML.OpenFile();
    • WriteXML.OpenFile();
    • ReadingFastInfoset.OpenFile();
    • RecordFastInfoset.OpenFile();
    • CanonicalXMLRecord.OpenFile();
    • TransformXSL.LoadFromFile();
    • WriteZipFile.Open();
    • ReadingZipFile.Open();
    • ReadText() mới, nếu tham số đầu tiên là một chuỗi;
    • ReadText.Open(), nếu tham số đầu tiên là một chuỗi;
    • NewTextRecord(), nếu tham số đầu tiên là một chuỗi;
    • WriteText.Open(), nếu tham số đầu tiên là một chuỗi;
    • NewTextExtract();
    • thay đổi thuộc tính ExtractText.FileName;
    • ExtractText.Write();
    • Ảnh mới(), nếu tham số đầu tiên là một chuỗi;
    • Picture.Write();
    • Dữ liệu nhị phân mới();
    • BinaryData.Write();
    • NewDataRecord(), nếu tham số đầu tiên là một chuỗi;
    • ReadData() mới, có tham số đầu tiên - một chuỗi;
    • tất cả các phương thức của đối tượng FileStreamManager;
    • FileStream mới();
    • FormattedDocument.Write();
    • GeographicScheme.Read();
    • GeographicScheme.Write();
    • GeographicScheme.Print();
    • TabularDocument.Read();
    • TabularDocument.Write();
    • TabularDocument.Print(); GraphicScheme.Read();
    • GraphicScheme.Write();
    • GraphicScheme.Print();
    • TextDocument.Read();
    • TextDocument.Write().
  • Truy cập Internet:
    • Kết nối Internet mới,
    • InternetMail mới,
    • Proxy Internet mới,
    • Kết nối HTTP mới,
    • Kết nối FTP mới.

CHÚ Ý! Khi thực hiện các thao tác bị cấm, một ngoại lệ sẽ được đưa ra khi chạy.

Ghi chú. Các báo cáo bên ngoài và quá trình xử lý được mở bằng menu Tệp - Mở được thực thi ở chế độ an toàn nếu người dùng không có quyền truy cập quản trị.

Số lần bạn bật chế độ an toàn phải trùng với số lần bạn tắt. Tuy nhiên, nếu chế độ an toàn được bật trong một quy trình hoặc chức năng (một hoặc nhiều lần) nhưng chưa bị tắt, hệ thống sẽ tự động tắt nhiều lần nếu quy trình hoặc chức năng đó chưa được bật chưa hoàn tất.

Nếu trong một thủ tục hoặc hàm gọi một phương thức SetSafeMode(Sai) thực hiện nhiều hơn các cuộc gọi phương thức SetSafeMode(Đúng), thì một ngoại lệ sẽ được ném ra.

Có thể cần phải cài đặt phần mềm ở chế độ an toàn khi nhà phát triển cấu hình có ý định sử dụng mã chương trình của bên thứ ba (liên quan đến cấu hình), độ tin cậy mà nhà phát triển không thể đảm bảo. Một ví dụ về mã như vậy là việc thực thi các phương thức Thực thi() và Tính toán() trong trường hợp mã thực thi được lấy từ thế giới bên ngoài. Trong trường hợp này, cách tốt nhất là đặt Chế độ an toàn trước khi thực hiện các phương pháp sau:

// Mã chương trình được tạo và cần được thực thi // Có thể mã được tải từ các nguồn bên ngoài // hoặc được nhập thủ công ExecutableCode = GetExecutedCodeFromExternalWorld(); // Kích hoạt chế độ an toàn SetSafeMode(True); // Thực thi mã nguy hiểm tiềm tàng.ExecutableCode); // Tắt chế độ an toàn SetSafeMode(False);

Trong một số trường hợp, cài đặt Chế độ an toàn có thể xung đột với cài đặt Chế độ đặc quyền. Một ví dụ về xung đột như vậy là việc đăng một tài liệu có chế độ Đặc quyền khi đăng thuộc tính được đặt, từ mã bằng ngôn ngữ tích hợp được thực thi ở chế độ an toàn. Trong trường hợp này, chế độ đặc quyền bị tắt và các nỗ lực kích hoạt nó đều bị bỏ qua. Kết quả là, mã trong ngôn ngữ nhúng, “được tính” vào chế độ đặc quyền đã bật, “gặp phải” sự vắng mặt của nó, dẫn đến lỗi xuất hiện với lý do không rõ ràng. Để ngăn chặn tình trạng này, hệ thống 1C:Enterprise sẽ tự động vô hiệu hóa chế độ an toàn cho các trình xử lý sự kiện có sẵn trong mô-đun đối tượng hoặc mô-đun trình quản lý, với điều kiện là mã thực thi bằng ngôn ngữ tích hợp không nằm trong phần mở rộng cấu hình. Những trình xử lý như vậy được đánh dấu theo cách đặc biệt trong trợ lý cú pháp.

Nó cũng cung cấp khả năng tắt Chế độ an toàn từ ngôn ngữ tích hợp (nếu mã chương trình đang cố tắt thì nó không có trong tiện ích mở rộng cấu hình). Để tắt chế độ an toàn, có một phương pháp SetDisableSafeMode(). Bạn có thể kiểm tra xem chế độ an toàn hiện có bị tắt hay không (tự động hoặc bằng cách gọi một phương thức) bằng phương thức GetDisableSafeMode().

Trong một phương thức bằng ngôn ngữ tích hợp, không thể có nhiều hơn một cấp độ lồng nhau của cài đặt chế độ an toàn (bằng cách gọi phương thức SetSafeMode()) và cài đặt tắt chế độ an toàn (tự động trong quá trình thực thi sự kiện đối tượng siêu dữ liệu trình xử lý hoặc bằng cách gọi phương thức SetSafeModeDisable()). Khi cố gắng tăng khả năng lồng nhau, một ngoại lệ sẽ được đưa ra:

// Sử dụng đúng ProcessProcedureName() SetDisableSafeMode(True); SetSafeMode(true); SetSafeMode(Sai); SetDisableSafeMode(Sai); EndProcedure // Sử dụng sai Thủ tụcProcedureName() SetDisableSafeMode(True); SetSafeMode(true); SetDisableSafeMode(Sai); // Thủ tục kết thúc ngoại lệProcedureName() SetSafeMode(True); SetDisableSafeMode(Sai); //Thủ tục kết thúc ngoại lệ

Khi bạn chạy chương trình Tải lên tài liệu với tư cách là người dùng thông thường, lỗi "Chế độ an toàn được đặt. Thao tác bị cấm."

Khó khăn này phát sinh vì Không có đủ quyền để bắt đầu xử lý bên ngoài. Để định cấu hình quyền truy cập, hãy đăng nhập vào cơ sở dữ liệu ở chế độ 1C Enterprise thay mặt cho Người quản lý và đi đến phần Cài đặt người dùng và quyền/Hồ sơ nhóm truy cập, nhấp chuột Để tạo một nhóm.

Nhập tên của nhóm và chọn các hộp cho các vai trò có sẵn cho người dùng của nhóm này -

  • Mở tương tác các báo cáo bên ngoài và xử lý
  • Sử dụng báo cáo bổ sung và xử lý

Nhấp chuột Lưu và đóng


Quay lại menu Người dùng và chọn từ danh sách nhân viên sẽ làm việc với chương trình Tải tài liệu lên. Bấm vào Quyền. Trong danh sách hồ sơ, chọn hồ sơ đã tạo trước đó. Nhấp chuột Viết ra.


Để người dùng có thể bắt đầu xử lý, nên thêm Tải tài liệu vào danh sách xử lý bên ngoài. Để làm điều này trong menu Quản lý / In và xử lý các biểu mẫu / Báo cáo và xử lý bổ sung tạo ra một quá trình xử lý mới. Chỉ định đường dẫn đến tệp "Tải xuống Documents.epf" và đặt tên. Chỉ định vị trí xử lý trong menu, từ đó người dùng có thể khởi chạy nó sau, ví dụ: chọn menu Thư mục

Bằng cách nhấp vào mục Truy cập nhanh, bạn cho biết người dùng nào có quyền truy cập vào quá trình xử lý:


Sau khi thiết lập xong nhấn Lưu và đóng. Để bắt đầu xử lý, người dùng chỉ cần nhập lại cơ sở dữ liệu và mở nó từ menu truy cập (trong ví dụ - Thư mục) và nhấp vào Hành hình.


Mở Thực đơn - Tất cả chức năng.... và tìm tùy chọn "Hồ sơ bảo mật được sử dụng" trong danh sách.


Chỉ cần bỏ chọn tùy chọn "Hồ sơ bảo mật được sử dụng".


Sau đó, chương trình sẽ khởi chạy thành công.

Việc mở quy trình xử lý bên ngoài theo chương trình được thực hiện bằng cách sử dụng đối tượng bối cảnh toàn cầu InternalProcessing, có kiểu Trình quản lý xử lý bên ngoài. Đối với mỗi chế độ hoạt động của nền tảng 1C (chế độ ứng dụng thông thường và chế độ ứng dụng được quản lý), các phương thức đối tượng khác nhau được sử dụng để làm việc với xử lý bên ngoài.

Chạy xử lý bên ngoài ở chế độ ứng dụng thông thường

Trong một ứng dụng thông thường, bạn phải sử dụng phương thức Create() của đối tượng InternalProcessing, được truyền tên đầy đủ của tệp xử lý bên ngoài. Phương thức trả về một đối tượng thuộc loại Xử lý bên ngoài, đối tượng này là quá trình xử lý bên ngoài đang được mở. Nếu bạn cần mở một biểu mẫu xử lý bên ngoài, hãy gọi phương thức GetForm() trên đối tượng đã nhận, đối tượng này sẽ trả về biểu mẫu chính, sau đó gọi phương thức Open() để mở nó.


Đang xử lý = InternalProcessing.Create(FullFileName);
Đang xử lý.GetForm().Open();

Trong xử lý bên ngoài, biểu mẫu chính phải luôn là biểu mẫu thông thường và biểu mẫu được kiểm soát phải luôn là biểu mẫu bổ sung, nếu không phương thức GetForm() sẽ không hoạt động trong chế độ ứng dụng thông thường.

Chạy xử lý bên ngoài ở chế độ ứng dụng được quản lý

Trong chế độ biểu mẫu được quản lý, thuật toán được chia theo ngữ cảnh thực thi. Trên máy khách, chúng tôi nhận dữ liệu nhị phân bằng tên đầy đủ của tệp xử lý bên ngoài. Chúng tôi chuyển dữ liệu nhị phân nhận được đến máy chủ và đặt nó vào bộ lưu trữ tạm thời. Tiếp theo, bạn cần gọi phương thức Connect() của đối tượng InternalProcessing để truyền địa chỉ lưu trữ tạm thời. Phương thức trả về tên của quá trình xử lý bên ngoài được kết nối. Chúng tôi trả về tên của quá trình xử lý bên ngoài cho máy khách, tạo đường dẫn chuỗi đến biểu mẫu xử lý và sử dụng phương thức OpenForm() để mở biểu mẫu xử lý bên ngoài.

&Trên máy chủ
Hàm GetExternalProcessingName(BinaryData)
Địa chỉInTemporaryStorage = PlaceInTemporaryStorage(BinaryData);
Trả về InternalProcessing.Connect(AddressInTemporaryStorage);
Chức năng cuối cùng

&Trên máy khách
FullFileName = ""; // Tên đầy đủ của file xử lý bên ngoài.
FileData = Dữ liệu nhị phân mới (FullFileName);
InternalProcessingName = GetExternalProcessingName(FileData);
OpenForm ("Xử lý bên ngoài." + Tên xử lý bên ngoài + ".Form");

Chế độ an toàn để xử lý bên ngoài

Các phương thức Create() và Connect() của đối tượng InternalProcessing có tham số SafeMode đến - một dấu hiệu kết nối xử lý bên ngoài ở chế độ an toàn. Nếu tham số không được chỉ định, kết nối sẽ được thực hiện ở chế độ an toàn.
Chế độ an toàn được thiết kế để bảo vệ hệ thống khỏi thực thi mã chương trình “không đáng tin cậy” trên máy chủ. Mối nguy hiểm tiềm ẩn đến từ quá trình xử lý bên ngoài hoặc mã chương trình được người dùng nhập để sử dụng trong các phương thức Run() và Calculate().
Chế độ an toàn áp đặt các hạn chế sau:
  • chế độ đặc quyền sẽ bị hủy nếu nó được cài đặt;
  • nỗ lực vào chế độ đặc quyền bị bỏ qua;
  • hoạt động với các đối tượng COM bị cấm;
  • tải và kết nối các thành phần bên ngoài bị cấm;
  • quyền truy cập vào hệ thống tệp bị cấm (trừ các tệp tạm thời);
  • Truy cập Internet bị cấm.
Các quy trình được mở tương tác không được thực hiện ở chế độ an toàn, do đó nên triển khai cơ chế mở bộ xử lý bên ngoài ở chế độ an toàn, cũng như ở cấp độ quyền để cấm người dùng mở bộ xử lý bên ngoài một cách tương tác.
Để cấm việc mở tương tác xử lý bên ngoài, trong tất cả các vai trò được gán cho người dùng, cần phải loại bỏ quyền “Mở tương tác xử lý bên ngoài” (xem Hình 1).
Hình 1. Quyền mở các báo cáo/xử lý bên ngoài một cách tương tác
Quyền "Mở tương tác xử lý bên ngoài" không ảnh hưởng đến đối tượng Xử lý bên ngoài dưới bất kỳ hình thức nào.

Việc mở các báo cáo bên ngoài theo chương trình cũng tương tự như việc xử lý bên ngoài, nhưng bạn nên sử dụng đối tượng ngữ cảnh toàn cục InternalReports, có kiểu Trình quản lý báo cáo bên ngoài.

Lấy “Quản lý thương mại 11.3” làm ví dụ, chúng tôi sẽ xem xét quy trình đơn giản để kết nối một biểu mẫu in bên ngoài. Chúng tôi cũng sẽ xem xét các tính năng của hệ thống bảo mật mới.

Đi qua nhanh

Hành động sơ bộ

Đầu tiên bạn nên kích hoạt chức năng hoặc kiểm tra tính khả dụng của nó

1. Đăng nhập với toàn quyền truy cập vào cơ sở dữ liệu thông tin.

2. Vào menu “Dữ liệu và quản trị chính”/Khối “Quản trị”/Lệnh “In biểu mẫu, báo cáo và xử lý”.

Phép cộng

Trong phần mở ra:

Chúng tôi thêm quá trình xử lý bằng nút “Tạo” (điều này rất quan trọng) hoặc “Cập nhật!” hiện có:

  • Chọn nó trong danh sách (nếu không được chọn hoặc để trống, lệnh sẽ không hoạt động nhưng sẽ không nói gì).
  • Nhấp vào nút “Tải từ tập tin”.

Sau khi xuất hiện 1C trong xử lý bên ngoài, kiểm tra bảo mật đã xuất hiện trong các cấu hình mới.

Bạn chỉ nên cài đặt quá trình xử lý được tạo độc lập hoặc nhận qua các kênh liên lạc đã biết (không phải từ thư, chỉ từ trang web có chứng chỉ hợp lệ hoặc do nhân viên của nhà phát triển cung cấp, được nhà phát triển xác nhận qua điện thoại).

Nếu mọi thứ trong quá trình xử lý đều do nhà phát triển quy định, thì “Vị trí” sẽ được đặt - các đối tượng mà quá trình xử lý sẽ tham gia, (các) lệnh sẽ xuất hiện.
Để làm việc, chỉ cần nhấp vào “Lưu và đóng”.

Bài kiểm tra

Ngay sau đó, tùy thuộc vào loại điều trị:

  • Biểu mẫu đã in sẽ khả dụng khi mở một tài liệu hoặc từ danh sách của nó (đối với một tài liệu đã mở khi mở lại) bằng cách nhấp vào nút “In”.
  • Quá trình xử lý có sẵn trong phần “Xử lý bổ sung” trong mỗi hệ thống con
  • Xử lý điền bằng nút “Điền” của danh sách hoặc bảng lệnh chính của biểu mẫu đối tượng.

Đối với quá trình xử lý trên, quá trình khởi chạy sẽ như thế này:

Nếu tài liệu là mới, nó phải được ghi lại; cơ chế xử lý bên ngoài sẽ cảnh báo bạn về điều này:

Hành vi tiếp theo phụ thuộc vào chức năng tích hợp: có thể mở biểu mẫu hoặc đơn giản là xử lý dữ liệu.

Cảnh báo bảo mật trong 1C

Các bản phát hành và cấu hình nền tảng mới đã tăng cường khả năng bảo vệ chống lại việc khởi chạy các chương trình độc hại.

Quá trình xử lý có thể khiến Excel khởi chạy để tải, trong trường hợp đó, hệ thống con bảo mật mới cũng sẽ cảnh báo bạn:

Trong trường hợp này, mã xử lý bị gián đoạn.

Nếu bạn bấm “Có”, hệ thống sẽ yêu cầu bạn chạy lại lệnh:

Người dùng cơ sở thông tin có thể vô hiệu hóa tính năng bảo vệ khỏi các hành động nguy hiểm thông qua “Bộ cấu hình”:

Điều này không thể thay đổi được từ chế độ “Doanh nghiệp”, có lẽ điều này được thực hiện có chủ đích và có thể xuất hiện sau khi cập nhật.

Cũng cần lưu ý rằng nếu quá trình xử lý sử dụng Excel thì nó phải chạy ở chế độ không an toàn (điều này xảy ra trước khi giới thiệu hệ thống mới, điều này hoạt động song song):

"Không thể tải MS EXCEL!!!" “Chế độ an toàn đã được thiết lập. Hoạt động bị cấm"

Trong quá trình xử lý bên ngoài, nó trông như thế này:

Nhà phát triển nên đặt nó thành “Sai” trong mô tả xử lý nội bộ, sau đó mọi thứ sẽ ổn:

Chức năng InformationOnExternalProcessing() XuấtRegistrationParameters = Cấu trúc mới; Đăng ký Parameters.Insert("SafeMode", Sai);

Khi cập nhật cấu hình, văn bản cảnh báo cũng xuất hiện về nguồn lấy được tệp cấu hình: