Chế độ vận hành an toàn 1s 8.3. Pavel Chistov. Chạy xử lý bên ngoài ở chế độ ứng dụng được quản 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ở theo chương trình của quá trình xử lý bên ngoài đượ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 mở tương tác xử lý, 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 chung InternalReports, có kiểu Trình quản lý báo cáo bên ngoài.

Việc mở theo chương trình của quá trình xử lý bên ngoài đượ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 mở tương tác xử lý, 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 chung InternalReports, có kiểu Trình quản lý báo cáo bên ngoài.

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 thi 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í dụ:

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 thức 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 tham số Bảo vệ chống lại các hành động nguy hiểm của quá trình xử lý hoặc báo cáo 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.

Trong phiên bản 8.3.9.2170, bảo mật đã được tăng cường - hệ thống hiện yêu cầu xác nhận để khởi chạy xử lý bên ngoài, tiện ích mở rộng, v.v. Rõ ràng sau Trojan:

Một cơ chế bảo vệ chống lại các hành động nguy hiểm đã được thực hiện. Khi một hành động nguy hiểm tiềm tàng được thực hiện, hệ thống sẽ đưa ra cảnh báo chứa thông tin về hành động đang được thực hiện và mối nguy hiểm tiềm ẩn của hành động này. Các hoạt độ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 thi lệnh của hệ điều hành.
  • Quản lý người dùng.

Người dùng có khả năng cho phép hoặc từ chối một hành động nguy hiểm tiềm tàng. Nếu một hành động được cho phép, trong một số trường hợp bạn có thể cần phải thực hiện lại hành động được phép.

Tin nhắn trông như thế này:

Cảnh báo an ninh

Mở "" từ tệp "C:\......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 mở tập tin này. KHÔNG THỰC SỰ

Giải pháp:

Trong bộ cấu hình, trong thuộc tính người dùng bảo mật thông tin, bỏ chọn hộp kiểm "Bảo vệ chống lại các hành động nguy hiểm".

Từ tài liệu:Vô hiệu hóa Cơ chế bảo vệ hoạt động nguy hiểm

Trong một số trường hợp, cần phải vô hiệu hóa cơ chế bảo vệ trước các hành động nguy hiểm. Để thực hiện việc này, bạn có thể sử dụng các tùy chọn sau:

1. Tắt hộp kiểm Bảo vệ khỏi các hành động nguy hiểm (Bảo vệ khỏi các hành động nguy hiểm) trong thuộc tính của một người dùng cụ thể. Điều này sẽ vô hiệu hóa bảo vệ cho người dùng đó.

2. Sử dụng tham số Bảo vệ 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. Trong trường hợp này, có thể tải xử lý (báo cáo) bên ngoài mà không cần yêu cầu của người dùng.

3. Sử dụng thuộc tính Bảo vệ khỏi Hành động Nguy hiểm của đối tượng Tiện ích Cấu hình trước khi gọi phương thức Write() của đối tượng này.

4. Sử dụng tham số Vô hiệu hóaActionProtection trong tệp conf.cfg. Trong trường hợp này, cơ chế bảo vệ chống lại các hành động nguy hiểm sẽ bị vô hiệu hóa đối với tất cả người dùng cơ sở thông tin có chuỗi kết nối đáp ứng các mặt nạ được chỉ định.

Việc vô hiệu hóa bảo vệ khỏi các hành động nguy hiểm được thực hiện theo các quy tắc sau (theo thứ tự nhất định):

1. Tính năng bảo vệ được coi là bị vô hiệu hóa 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.

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

3. Nếu quá trình xử lý bên ngoài (báo cáo) được kết nối với tính năng bảo vệ bị tắt rõ ràng bằng cách sử dụng tham số Bảo vệ chống lại các hành động không an toàn.

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.