Các mô-đun phổ biến. Các mô-đun chung Cờ kết nối bên ngoài

Bài viết tiếp tục loạt bài “Những bước đầu tiên trong quá trình phát triển trên 1C”, thảo luận chi tiết các vấn đề sau:

  • Mô-đun phần mềm là gì và nó bao gồm những phần nào?
  • Mô-đun ứng dụng dùng để làm gì? Tại sao lại có hai người trong số họ? Khi nào cái nào bắt đầu? Sự tinh tế của công việc là gì?
  • Những sự kiện nào liên quan đến việc bắt đầu vận hành hệ thống, xử lý chúng như thế nào và ở đâu?
  • Mô-đun kết nối bên ngoài dùng để làm gì? Khi nào và làm thế nào để sử dụng nó?
  • Khi nào mô-đun phiên được sử dụng?
  • Các mô-đun phổ biến là gì? Tính chất và quy luật hoạt động của nó là gì? Tại sao nên sử dụng thuộc tính “Tái sử dụng các giá trị trả về”?
  • Khi nào mô-đun biểu mẫu được sử dụng và những sự kiện nào có thể được xử lý trong đó?
  • Mô-đun đối tượng dùng để làm gì? Nó bao gồm những phần nào? Làm cách nào để xem các sự kiện mô-đun có sẵn?
  • Sự tinh tế khi làm việc với các mô-đun quản lý giá trị (đối với hằng số) và mô-đun tập bản ghi (đối với các thanh ghi) là gì?
  • Sự khác biệt giữa mô-đun đối tượng và mô-đun quản lý là gì? Khi nào bạn nên sử dụng cái sau?

Khả năng ứng dụng

Bài viết thảo luận về nền tảng 1C:Enterprise 8.3.4.496. Tài liệu này cũng phù hợp với các bản phát hành nền tảng hiện tại.

Các mô-đun trong "1C:Enterprise 8.3"

Mô-đun là những đối tượng chứa mã chương trình.

Có khá nhiều loại mô-đun trong Nền tảng, mỗi loại đều có mục đích và tính năng riêng.

Bất kỳ dòng mã nào cũng phải có trong một mô-đun nào đó. Có các mô-đun mục đích chung và mô-đun đối tượng. Một số mô-đun có thể được biên dịch trên cả Máy khách và Máy chủ và một số mô-đun chỉ có thể được biên dịch trên Máy chủ.

Một mô-đun có thể bao gồm một số phần. Phần mô tả biến mô tả các biến cục bộ của mô-đun này, sau đó có thể được sử dụng trong bất kỳ quy trình nào.

Trong mỗi quy trình, bạn có thể truy cập một biến mô-đun. Ngoài ra, trong chính thủ tục đó có thể có một khai báo biến khác có cùng tên. Đây sẽ là một biến cục bộ của thủ tục này.

Mặc dù có cùng tên nhưng đây là hai biến khác nhau: một biến được sử dụng bên trong một thủ tục cụ thể và biến còn lại được sử dụng bên ngoài thủ tục đó.

Trong một số mô-đun, các biến có thể có vị trí biên dịch (có sẵn) trên Máy chủ hoặc Máy khách. Ví dụ:

Phần mô tả các biến được theo sau bởi phần thủ tục và hàm, trong đó các phương thức cục bộ của mô-đun này được chỉ ra. Một số mô-đun phải chỉ định nơi thủ tục hoặc hàm sẽ được biên dịch.

Về nguyên tắc, chỉ thị biên dịch có thể được bỏ qua. Trong trường hợp này, chỉ thị biên dịch mặc định là Server. Tuy nhiên, để thuận tiện cho việc phân tích mã chương trình, nên chỉ ra rõ ràng nơi một quy trình nhất định sẽ được biên dịch. Thứ tự các thủ tục được mô tả không quan trọng.

Ở cuối mô-đun, sau khi mô tả tất cả các thủ tục và chức năng, có một phần của chương trình chính, có thể chứa một số toán tử và khởi tạo các biến cục bộ của mô-đun biểu mẫu. Phần này được thực thi khi truy cập mô-đun.

Vì vậy, ví dụ, khi mở một biểu mẫu phần tử, phần chương trình chính của mô-đun biểu mẫu sẽ được thực thi trước tiên.

Cần lưu ý rằng phần khai báo biến và phần chương trình chính không tồn tại cho tất cả các mô-đun (tức là các phần này không hợp lệ trong một số mô-đun). Phần mô tả các thủ tục và chức năng có thể tồn tại trong bất kỳ mô-đun nào.

Mô-đun ứng dụng

Mô-đun này được thiết kế để xử lý các sự kiện khởi động và kết thúc ứng dụng. Ví dụ: khi khởi chạy ứng dụng, bạn có thể tải xuống tỷ giá tiền tệ từ Internet. Khi chấm dứt một ứng dụng, bạn có thể xác nhận với người dùng rằng họ có ý định thoát.

Ngoài ra, trong mô-đun ứng dụng còn có các trình xử lý đặc biệt cho phép bạn chặn các sự kiện bên ngoài từ thiết bị.

Đây có thể là sự kiện từ đầu đọc thẻ từ hoặc cơ quan đăng ký tài chính. Và những sự kiện này cũng có thể được xử lý theo một cách nào đó.

Xin lưu ý rằng quá trình khởi động tương tác của hệ thống sẽ được giám sát trong mô-đun ứng dụng.

Mô-đun ứng dụng sẽ không hoạt động nếu chương trình 1C được khởi chạy, chẳng hạn như ở chế độ kết nối com. Trong trường hợp này, cửa sổ chương trình không được tạo.

Cần lưu ý rằng trong Nền tảng 8.3 có hai mô-đun ứng dụng khác nhau: mô-đun Ứng dụng được quản lý và mô-đun Ứng dụng thông thường. Các sự kiện mô-đun ứng dụng được quản lý được xử lý khi Ứng dụng được quản lý Máy khách mỏng và Dày và Máy khách web được khởi chạy.

mô-đun ứng dụng thường xuyên hoạt động khi chạy Thick Client ở chế độ ứng dụng thường xuyên, chứa giao diện lệnh thông thường ở dạng Thực đơn chính.

Nếu ứng dụng đang chạy trong Được quản lý, và ở chế độ ứng dụng thường xuyên, khi đó cần mô tả các thủ tục xử lý như đối với module Ứng dụng được quản lý, và cho mô-đun ứng dụng thường xuyên.

mô-đun Ứng dụng được quản lý có thể được chọn từ menu ngữ cảnh của nút cấu hình gốc.

Mô-đun này cũng có thể được mở từ bảng thuộc tính của thành phần cấu hình gốc.

Để mở một mô-đun ứng dụng thường xuyên, bạn nên tham khảo phần cài đặt cấu hình (lệnh Tùy chọn trên thực đơn Dịch vụ).

Biểu mẫu sẽ mở Tùy chọn. Trên dấu trang Là phổ biến chế độ chỉnh sửa cấu hình phải được chỉ định Ứng dụng được quản lýứng dụng thường xuyên.

Trong trường hợp này mô-đun ứng dụng thường xuyên nó cũng có thể mở từ các thuộc tính của nút gốc.

Danh sách các sự kiện có thể được xử lý Được quản lýứng dụng thường xuyên là giống nhau.

Mô-đun này có thể chứa phần khai báo biến, phần mô tả các thủ tục và hàm tùy ý và phần chương trình chính. Nhưng ngoài các thủ tục và hàm tùy ý, các trình xử lý sự kiện đặc biệt có thể được đặt trong mô-đun.

Có thể xem danh sách các trình xử lý có sẵn bằng cách gọi danh sách các thủ tục và chức năng của mô-đun hiện tại khi mô-đun mở.

Cửa sổ Thủ tục và Chức năng mở ra sẽ hiển thị tất cả các thủ tục và chức năng của mô-đun này cũng như các sự kiện mà trình xử lý chưa được tạo.

Có hai sự kiện liên quan đến việc khởi động hệ thống (“trước” và “tại”). Hai sự kiện liên quan đến việc tắt hệ thống (“trước” và “tại”). Và cũng có thể xử lý các sự kiện bên ngoài (ví dụ: các sự kiện của thiết bị thương mại).

Khi trình xử lý sự kiện before được thực thi, hành động đó được coi là chưa diễn ra. Khi trình xử lý sự kiện “at” được thực thi, hành động đó đã được hoàn thành.

Sự kiện Trước khi khởi động hệ thống xảy ra khi Enterprise 8.3 được khởi chạy nhưng bản thân ứng dụng vẫn chưa xuất hiện trên màn hình. Sự kiện này có tham số sau: từ chối.

Nếu tham số này nhận giá trị ĐÚNG VẬY, thì ứng dụng sẽ không khởi động. Sự kiện Khi khởi động hệ thống giả định rằng hành động đã được hoàn thành, cửa sổ đã được tạo và trong trường hợp này, chẳng hạn, chúng ta có thể hiển thị một số biểu mẫu đặc biệt. Không còn có thể từ chối việc ra mắt.

Tương tự, trước khi tắt hệ thống, ứng dụng vẫn mở và bạn có thể từ chối đóng nó. Khi hệ thống tắt, cửa sổ ứng dụng đã đóng. Chỉ có thể thực hiện các hành động bổ sung, chẳng hạn như xóa một số tệp hoặc gửi email.

Trong mô-đun Ứng dụng được quản lý Các chỉ thị biên dịch các thủ tục và chức năng không được chỉ định vì mô-đun được biên dịch hoàn toàn ở phía Máy khách. Điều này có nghĩa là trong các quy trình và chức năng của mô-đun, chúng ta sẽ không thể truy cập trực tiếp, chẳng hạn như sách tham khảo.

Nếu từ mô-đun Ứng dụng được quản lý cần thực hiện cuộc gọi Máy chủ, thì để làm được điều này, bạn sẽ cần tạo một cuộc gọi đặc biệt với một lá cờ .

Trong mô-đun ứng dụng thường xuyên Không có hạn chế nào như vậy vì mô-đun này sẽ được biên dịch khi tải Máy khách Dày. Hầu hết tất cả các loại dữ liệu đều có sẵn trong Thick Client.

Các thủ tục, chức năng và biến của một mô-đun ứng dụng có thể được mô tả dưới dạng xuất.

Vì mô-đun được biên dịch hoàn toàn trên Máy khách, điều này có nghĩa là trong các thủ tục máy khách, chúng ta có thể truy cập phương thức này và thuộc tính này.

Ví dụ: bạn có thể gọi một thủ tục hoặc hàm của một mô-đun ứng dụng từ mô-đun biểu mẫu của một đối tượng. Tuy nhiên, nên sử dụng Common Modules để mô tả các thuật toán chung. Mục đích chính của mô-đun ứng dụng là xử lý điểm bắt đầu và điểm kết thúc.

Bằng cách tương tự với một mô-đun ứng dụng, mô-đun này được thiết kế để xử lý sự kiện mở chương trình và sự kiện tắt máy.

Không giống như mô-đun ứng dụng, được khởi tạo tại thời điểm khởi chạy tương tác của ứng dụng, mô-đun kết nối bên ngoài hoạt động ở chế độ kết nối COM, tức là. khi đối tượng 1C:Enterprise 8 được tạo và kết nối với cơ sở dữ liệu cụ thể.

Mô-đun này có các sự kiện: Khi khởi động hệ thốngKhi tắt hệ thống.

Mô-đun kết nối bên ngoài có thể được mở bằng cách sử dụng menu ngữ cảnh ở cấp đối tượng cấu hình gốc hoặc bảng thuộc tính cho nút gốc.

Bản thân quá trình kết nối bên ngoài là một quá trình làm việc theo chương trình với cơ sở thông tin chứ không phải mang tính tương tác. Theo đó, tại thời điểm này, bạn không thể sử dụng biểu mẫu hộp thoại hoặc hiển thị thông báo cảnh báo vì không có giao diện người dùng.

Trong Mô-đun kết nối bên ngoài, có thể mô tả các biến xuất và phương thức xuất sẽ có sẵn ở phía xảy ra lệnh gọi bên ngoài tới 1C:Enterprise 8.3.

Vì không có giao diện người dùng trong một kết nối bên ngoài nên Mô-đun kết nối bên ngoài được biên dịch hoàn toàn trên Máy chủ.

Mô-đun phiên

Mô-đun này là cần thiết để khởi tạo các tham số phiên. Tham số phiên là các biến toàn cục nhanh có giá trị có sẵn ở bất kỳ đâu trong cấu hình.

Bạn có thể mở Mô-đun phiên thông qua menu ngữ cảnh hoặc thông qua bảng thuộc tính của nút gốc.

Mô-đun phiên cung cấp một sự kiện Cài đặtSessionParameter.

Khi ứng dụng khởi động, thủ tục này được gọi đầu tiên. Các tham số phiên là cần thiết cho bất kỳ hoạt động ứng dụng nào: cả khi khởi chạy tương tác và khi khởi chạy ở chế độ kết nối bên ngoài.

Mô-đun phiên mô tả các hành động khác nhau để khởi tạo các tham số phiên tùy thuộc vào các điều kiện khác nhau.

Mô-đun này, theo quy tắc, mô tả một số thủ tục được gọi từ thủ tục Cài đặtSessionParameter. Vì vậy, tất cả các thủ tục này được tách thành một mô-đun riêng biệt.

Mô-đun phiên luôn chạy ở chế độ đặc quyền. Điều này có nghĩa là sẽ không có kiểm tra quyền nào được thực hiện khi truy cập cơ sở dữ liệu. Mô-đun phiên được biên dịch trên Máy chủ, tức là. Có thể truy cập bất kỳ phương thức máy chủ nào (bao gồm cả việc đọc các giá trị từ cơ sở dữ liệu).

Trong Mô-đun phiên, chỉ có thể xác định các thủ tục và chức năng, tức là. không có phần mô tả biến và không có phần chương trình chính. Bạn không thể xác định phương thức xuất trong Mô-đun phiên.

Nếu, khi khởi động hệ thống, cần thực hiện một số hành động trên Máy chủ, chẳng hạn như tạo một phần tử của thư mục, thì có thể sử dụng Mô-đun phiên như một tùy chọn, bởi vì nó được biên dịch trên Máy chủ và luôn được thực thi một cách đáng tin cậy khi khởi động hệ thống. Tuy nhiên, những điểm sau đây phải được tính đến:

  • thủ tục Cài đặtSessionParameterđược thực thi không chỉ khi khởi động hệ thống mà còn khi truy cập các tham số phiên chưa được khởi tạo. Những thứ kia. trình xử lý SetSessionParameters có thể được gọi liên tục trong quá trình vận hành ứng dụng;
  • nếu số phần tử trong mảng tham số phiên bằng 0 (mảng tham số bắt buộc có kiểu dữ liệu là Không xác định), thì đây là thời điểm ứng dụng được khởi chạy;
  • vì Mô-đun phiên hoạt động ở chế độ đặc quyền và sẽ không kiểm tra quyền truy cập, bạn nên làm việc thật cẩn thận với các đối tượng cơ sở dữ liệu, vì người dùng có thể có quyền truy cập vào dữ liệu không được cung cấp cho anh ta;
  • Khi hệ thống khởi động, vẫn chưa biết chắc chắn liệu ứng dụng có được khởi chạy hay không. Trong trường hợp này, các hành động không cần thiết có thể được thực hiện trong trình xử lý sự kiện SetSessionParameters.

Các mô-đun này thể hiện mô tả về một số thuật toán chung, tức là các thủ tục và chức năng có thể được gọi từ nhiều nơi khác nhau.

Các phương pháp liên quan đến logic có thể được nhóm thành các Mô-đun chung khác nhau. Các mô-đun này được tạo bên trong nhánh General.

Bạn có thể thêm bất kỳ số lượng mô-đun phổ biến nào. Để cung cấp các phương thức Mô-đun chung ở nơi khác trong cấu hình, chúng phải được xác định bằng từ khóa Xuất. Các quy trình máy khách của các mô-đun phổ biến sẽ có sẵn trên Máy khách và các quy trình máy chủ – trên Máy chủ.

Trong Mô-đun chung, chỉ có phần mô tả các thủ tục và chức năng. Những thứ kia. trong Mô-đun chung bạn không thể mô tả các biến và bạn không thể mô tả một phần của chương trình chính.

Nếu cần một biến toàn cục, bạn có thể sử dụng tham số phiên hoặc biến xuất mô-đun ứng dụng.

Đối với các mô-đun chung, bạn có thể đặt một số tham số sẽ ảnh hưởng đến hoạt động của mô-đun này. Nếu thuộc tính Toàn cầu được đặt cho mô-đun Chung thì các phương thức xuất được khai báo trong mô-đun này sẽ có thể truy cập trực tiếp từ bên ngoài mà không cần bất kỳ hướng dẫn bổ sung nào.

Những thứ kia. các mô-đun chung sẽ tham gia vào việc hình thành bối cảnh cấu hình toàn cầu.

Tài sản Toàn cầuđối với các mô-đun chung, nó có thể hữu ích. Tuy nhiên, bạn không nên sử dụng nó ở mọi nơi cho tất cả các module thông thường.

Những thứ kia , được đánh dấu bằng dấu Toàn cầu, sẽ được biên dịch khi khởi động hệ thống. Càng nhiều mô-đun như vậy, chương trình sẽ khởi động càng chậm.

Nếu lá cờ Toàn cầumô-đun chung không được chỉ định thì việc biên dịch mô-đun này sẽ được thực hiện tại thời điểm gọi lần đầu tiên đến nó (tức là sau khi hệ thống khởi động).

Ngoài ra, việc sử dụng các mô-đun chung toàn cầu sẽ ảnh hưởng đến việc hiểu mã. Các phương thức của một mô-đun chung không toàn cục được gọi thông qua tên mô-đun chung và tên của phương thức, ví dụ:
Mô-đun tính toán chi phí.DistributeIndirectCosts();

Trong trường hợp này, tên của các Mô-đun chung phải phản ánh nội dung của các quy trình được mô tả trong đó. Việc chỉ định tên của Mô-đun chung khi gọi một thủ tục sẽ giúp hiểu rõ hơn về mã.

mô-đun chung V. Bảng thuộc tính bạn có thể đặt thuộc tính Đặc quyền.

Mô-đun đặc quyền không kiểm soát quyền truy cập. Điều này là cần thiết nếu mô-đun chung Cần phải thực hiện xử lý dữ liệu hàng loạt, lấy dữ liệu từ cơ sở dữ liệu.

Việc kiểm soát quyền truy cập sẽ làm tăng thời gian truy cập cơ sở dữ liệu và các thuật toán hàng loạt thường cần phải hoạt động nhanh nhất có thể.

Ví dụ, tính lương là một hoạt động sử dụng nhiều nguồn lực. Nó cần phải được thực hiện càng nhanh càng tốt. Để làm điều này, các thuật toán tính lương được đặt ở vị trí đặc quyền. .

Đồng thời, mọi thủ tục đảm bảo hoàn thiện hồ sơ trả lương đều nằm ngoài phạm vi này. Các mô-đun chung. Chính trong các thủ tục này, việc kiểm soát quyền truy cập được thực hiện.

Bằng cách này, có thể đạt được những cải tiến hiệu suất đáng kể. Điều này đặc biệt đúng khi sử dụng cơ chế kiểm soát quyền truy cập theo từng hàng vào các bản ghi bảng.

Nếu Mô-đun chung có đặc quyền thì các quy trình của mô-đun này chỉ có thể được biên dịch trên Máy chủ.

Có những tình huống khi một số đối tượng không thể truy cập được đối với người dùng, chẳng hạn như một thư mục nhất định. Nhưng khi thực hiện bất kỳ một tài liệu nào thì việc tham khảo sách tham khảo này là cần thiết.

Những thứ kia. Cần phải tạm thời mở rộng quyền của người dùng và sau đó đưa họ trở lại trạng thái ban đầu. Hiệu ứng này có thể đạt được bằng cách sử dụng đặc quyền Các mô-đun chung.

Để làm điều này trong một đặc quyền mô-đun chung Bạn nên tạo một thủ tục truy cập dữ liệu cần thiết.

Thủ tục này sẽ được gọi từ tài liệu tương ứng. Những thứ kia. người dùng thực sự được cấp quyền mở rộng tại thời điểm thủ tục này được gọi.

Các mô-đun chung Có thể chỉ định vị trí biên dịch. Các cờ được sử dụng để xác định xem Mô-đun chung sẽ khả dụng trên Máy khách (ứng dụng được quản lý), trên Máy chủ hay ở chế độ Kết nối bên ngoài.

Ngoài ra, nếu bạn chuyển chế độ chỉnh sửa cấu hình sang Ứng dụng được quản lý và ứng dụng thông thường thì sẽ có thể thực hiện được một bối cảnh biên dịch khác - Máy khách (ứng dụng thông thường).

Vì vậy, có bốn tùy chọn cho hoạt động của chương trình. Tùy thuộc vào ứng dụng đang chạy, tùy thuộc vào công việc trên Client hay trên Server mà Common Modules nhất định sẽ có sẵn hoặc không có sẵn.

Ngoài khả năng chỉ định các cờ biên dịch, có thể chỉ định các chỉ thị biên dịch cho các thủ tục và chức năng nằm trong Mô-đun chung.

Nếu một lệnh biên dịch được chỉ định cho một phương thức thì mặc dù Mô-đun chung có sẵn trong tất cả các ngữ cảnh được chỉ định, nhưng tính khả dụng của phương thức cụ thể đó sẽ bị giới hạn bởi lệnh biên dịch.

Trong trường hợp này, quy trình không thể được truy cập trong ngữ cảnh mà toàn bộ mô-đun không thể truy cập được.

Nếu bạn không chỉ định chỉ thị biên dịch cho một thủ tục (hàm), nó sẽ được biên dịch trong tất cả các ngữ cảnh được xác định cho mô-đun.

Những thứ kia. Về cơ bản, nhiều bản sao của thủ tục sẽ được tạo ra. Việc lựa chọn một phiên bản được biên dịch cụ thể tùy thuộc vào nơi thủ tục được gọi (theo quy tắc gọi gần nhất). Cần lưu ý rằng mã của quy trình như vậy phải được viết có tính đến tính khả dụng của nó trong tất cả các ngữ cảnh được xác định cho mô-đun.

Các mô-đun chung có thể truy cập đồng thời trong nhiều ngữ cảnh khác nhau được thiết kế chủ yếu để tạo các thủ tục có thể truy cập được trong nhiều ngữ cảnh.

Khi tạo một Mô-đun chung, cách tốt nhất là không chỉ định các chỉ thị biên dịch. Những thứ kia. Tính khả dụng của các thủ tục và chức năng phải được xác định bởi các thuộc tính của chính mô-đun.

Với cách tiếp cận này, các thủ tục máy khách sẽ được đặt trong các Mô-đun chung riêng biệt và các thủ tục máy chủ sẽ được đặt trong các Mô-đun chung riêng biệt.

Các mô-đun có nhiều cờ biên dịch được đặt rất hiếm khi được sử dụng trong thực tế. Đây là một số hành động phổ biến có sẵn trên cả Máy khách và Máy chủ. Thông thường đây là một số tính toán đơn giản.

Quan trọng! Máy khách có thể truy cập các phương thức máy chủ xuất của Mô-đun chung, nhưng chỉ khi Mô-đun chung này chỉ được biên dịch trên Máy chủ. Trong trường hợp này, một cờ đặc biệt được cung cấp để đảm bảo quyền truy cập từ Khách hàng .

Đối với các mô-đun Common không toàn cục, có thể lưu vào bộ đệm các giá trị được hàm trả về. Những thứ kia. Sau lệnh gọi hàm đầu tiên, hệ thống có thể ghi nhớ kết quả thực hiện của hàm đó. Nếu hàm này được gọi lại với cùng tham số, hệ thống sẽ trả về giá trị từ bộ đệm.

Mục đích của cơ chế này là tăng tốc độ các cuộc gọi lặp lại. Để định cấu hình hành vi này, bạn cần phải Bảng thuộc tính mô-đun, hãy đặt giá trị thích hợp cho thuộc tính Tái sử dụng các giá trị trả về.

Theo mặc định, thuộc tính này được đặt thành Không sử dụng. Các giá trị có thể khác: bộ đệm Trong cuộc gọi, hoặc Trong suốt thời gian của phiên.

Thuộc tính này chỉ hợp lý khi sử dụng cho những hàm có kết quả chỉ phụ thuộc vào tham số đầu vào. Cơ chế này chỉ khả dụng cho các Mô-đun chung không toàn cầu.

Nếu giá trị của tham số tương ứng Trong khoảng thời gian của cuộc gọi được chọn, bộ đệm sẽ hoạt động miễn là quy trình mà phương thức Mô-đun chung được gọi đang chạy. Nếu giá trị Trong khoảng thời gian của phiên được chọn thì có điều kiện giả định rằng bộ đệm sẽ hoạt động trong khi người dùng đang làm việc.

Tuy nhiên, có những hạn chế về thời gian nhất định. Bộ đệm sẽ tự động bị xóa 20 phút sau khi giá trị được nhập vào bộ đệm.

Mô-đun biểu mẫu

Mô-đun này được thiết kế để xử lý các hành động của người dùng. Ví dụ: mô tả thuật toán về cách chương trình phản ứng khi nhấn nút. Hoặc, ví dụ, tại thời điểm nhập một giá trị vào một trường, hãy kiểm tra ngay tính chính xác.

Ngoài các sự kiện liên quan đến điều khiển biểu mẫu (nút, trường nhập), còn có các sự kiện liên quan trực tiếp đến chính biểu mẫu đó.

Ví dụ: bạn có thể xử lý sự kiện mở biểu mẫu và thực hiện một số khởi tạo ban đầu. Bạn cũng có thể xử lý sự kiện đóng biểu mẫu và kiểm tra xem người dùng đã nhập chính xác mọi thứ hay chưa.

Có các hình thức kiểm soát và các hình thức thông thường. Mô-đun của các biểu mẫu này khác nhau chủ yếu ở chỗ mô-đun biểu mẫu được quản lý được phân chia rõ ràng theo ngữ cảnh. Mỗi thủ tục (chức năng) phải có một chỉ thị biên dịch. Ở dạng bình thường, tất cả mã được sử dụng trên Máy khách.

Trong mô-đun biểu mẫu được quản lý, bạn có thể khai báo các thủ tục và hàm, bạn có thể khai báo các biến và bạn có thể mô tả một phần của chương trình chính.

Mã chương trình của chương trình chính sẽ được thực thi tại thời điểm khởi tạo biểu mẫu, tức là. khi người dùng bắt đầu mở nó. Hình này hiển thị danh sách các sự kiện tiêu chuẩn cho một biểu mẫu được quản lý.

Danh sách các sự kiện của biểu mẫu được quản lý cũng hiển thị trực tiếp trong danh sách thuộc tính của chính biểu mẫu đó. Danh sách này được gọi trong trình chỉnh sửa biểu mẫu được quản lý.

Trong biểu mẫu được quản lý, bạn có thể xử lý sự kiện ghi của mục. Sự kiện này chỉ xuất hiện đối với các biểu mẫu đối tượng (thư mục, tài liệu và một số thứ khác). Nếu biểu mẫu không bị ràng buộc với một đối tượng cụ thể thì sẽ không có sự kiện ghi.

Đối với mô-đun có dạng thông thường, danh sách các sự kiện tiêu chuẩn có phần nhỏ hơn, bởi vì Trong biểu mẫu được quản lý, nhiều sự kiện được tạo để ghép nối (một sự kiện được thực thi trên Máy khách và sự kiện khác trên Máy chủ). Ở dạng bình thường, tất cả mã được thực thi trên Máy khách.

Mô-đun đối tượng

Các mô-đun này điển hình cho các thư mục, tài liệu, sơ đồ cho các loại tính toán, biểu đồ tài khoản và nhiều đối tượng khác. Mô-đun đối tượng được thiết kế để xử lý các sự kiện tiêu chuẩn. Ví dụ: một sự kiện để nhập một phần tử thư mục, một sự kiện để viết một phần tử, xóa, đăng một tài liệu, v.v.

Về nguyên tắc, sự kiện ghi cũng tồn tại trong Mô-đun biểu mẫu. Tuy nhiên, sự kiện ghi trong Mô-đun biểu mẫu xảy ra trong quá trình ghi tương tác khi làm việc với một biểu mẫu cụ thể.

Sự kiện ghi trong Mô-đun đối tượng sẽ được thực thi trên bất kỳ thao tác ghi nào từ bất kỳ dạng nào của đối tượng đã cho. Ngoài ra, nếu đối tượng được viết theo chương trình, sự kiện mô-đun của đối tượng sẽ kích hoạt.

Trong sự kiện ghi của Mô-đun đối tượng, bạn có thể xây dựng tất cả các kiểm tra về tính chính xác của dữ liệu được ghi, vì quy trình này sẽ được thực thi tại thời điểm ghi hoàn toàn.

Mô-đun của đối tượng này có thể được gọi thông qua menu ngữ cảnh, từ Bảng thuộc tính đối tượng và từ cửa sổ chỉnh sửa đối tượng.

Hình dưới đây hiển thị danh sách các sự kiện mô-đun thư mục có sẵn.

Trong Mô-đun đối tượng, bạn có thể đặt một phần để mô tả các biến, mô tả các hàm tùy ý có thể không liên quan đến một sự kiện, cũng như một phần của chương trình chính.

Ví dụ: trong phần chương trình chính, bạn có thể khởi tạo các biến cục bộ của một mô-đun nhất định. Mã chương trình này sẽ được thực thi khi mô-đun đối tượng này được truy cập.

Cần lưu ý rằng tất cả các thủ tục của Mô-đun đối tượng đều được biên dịch trên Máy chủ. Theo đó, không cần phải có các chỉ thị biên dịch cho các thủ tục và chức năng của Mô-đun đối tượng. Một số đối tượng cấu hình không có Mô-đun đối tượng.

Điều này là do đặc điểm của chính các đối tượng. Những đối tượng như vậy bao gồm Hằng sốĐăng ký. Vì Không thay đổi không có mô-đun đối tượng, nhưng có một mô-đun rất giống được gọi là Mô-đun quản lý giá trị.

TRONG Mô-đun quản lý giá trị bạn có thể xử lý các sự kiện viết Hằng số và điền xử lý xác minh.

Toàn bộ bối cảnh mô-đun được thực thi trên Máy chủ.

Đối với các thanh ghi có Mô-đun Recordset.

Mô-đun này cũng có khả năng xử lý các sự kiện ghi và thực hiện kiểm tra tỷ lệ sử dụng.

Trong Mô-đun đối tượng, Mô-đun quản lý giá trị (dành cho hằng số) và Mô-đun bản ghi (dành cho sổ đăng ký), bạn có thể mô tả các phương thức có thể xuất được và những phương thức này sẽ có thể truy cập được từ bên ngoài.

Những thứ kia. Ngoài việc sử dụng các phương thức cố định của một lớp đối tượng, bạn có thể tạo các phương thức bổ sung cho một đối tượng trong Mô-đun đối tượng. Mô-đun này sẽ mô tả quy trình tương ứng với từ khóa Xuất khẩu.

Sau đó sẽ có thể truy cập thủ tục này từ bên ngoài. Hơn nữa, phương pháp này sẽ được hiển thị trong chú giải công cụ ngữ cảnh. Các phương thức mới trong chú giải công cụ ngữ cảnh được đánh dấu bằng phông chữ màu xanh lam (biểu tượng màu xanh lam P() về các thủ tục và f() cho các chức năng).

Tương tự, bạn có thể tạo một thuộc tính mới bằng cách khai báo một biến với từ khóa Xuất khẩu. Thuộc tính này cũng có thể được truy cập từ bên ngoài.

Bằng cách này, có thể mở rộng chức năng của các đối tượng (để xác định các phương thức và thuộc tính mới). Tuy nhiên, các thuộc tính là động và không được lưu trong cơ sở dữ liệu.

Nếu bạn cần sử dụng một thuộc tính cho một đối tượng sẽ được lưu trữ trong cơ sở dữ liệu, bạn nên tạo một thuộc tính đối tượng.

Mô-đun quản lý

Mô-đun này tồn tại cho nhiều đối tượng (thư mục, tài liệu, sổ đăng ký, v.v.). Mô-đun được mở thông qua menu ngữ cảnh cho đối tượng hoặc thông qua Bảng thuộc tính, hoặc thông qua cửa sổ chỉnh sửa.

Trong Mô-đun quản lý, bạn có thể ghi đè một số sự kiện tiêu chuẩn. Xử lýNhậnLựa chọnDữ liệu, khi một phần tử được chọn từ thư mục, một số thao tác lọc hoặc kiểm tra bổ sung có thể được thực hiện.

Ngoài ra, bạn có thể tạo các phương thức bổ sung trong Mô-đun Trình quản lý và chỉ ra rằng chúng là các phương thức xuất. Trong trường hợp này, có thể truy cập các phương thức này từ bên ngoài.

Để thực hiện cuộc gọi này, cần phải có kiểu dữ liệu Trình quản lý thư mục.

Sự khác biệt giữa các phương thức xuất của Mô-đun quản lý và Mô-đun đối tượng là để truy cập phương thức của Mô-đun đối tượng, trước tiên bạn cần lấy chính đối tượng đó (nghĩa là bằng cách nào đó lấy được một liên kết rồi chuyển liên kết này thành một đối tượng) .

Sau này, các biến và phương thức xuất của Mô-đun đối tượng sẽ có sẵn. Đối với Mô-đun quản lý, lệnh gọi đơn giản hơn, ví dụ:
Thư mục.Đối tác.MethodName

Đây là hai lời kêu gọi khác nhau. Chuyển đổi từ tham chiếu sang đối tượng (phương thức Nhận đối tượng) là một hành động khá nghiêm trọng đối với hệ thống, vì khi nhận một đối tượng, tất cả dữ liệu của đối tượng này đều được đọc, có thể khá dài.

Sự khác biệt thứ hai đó là Mô-đun đối tượngđược gọi trong ngữ cảnh của một phần tử cụ thể. Theo đó, chúng ta có thể giả định rằng nó có thể áp dụng được cho một phần tử nhất định (trong hầu hết các trường hợp, đây chính xác là logic được sử dụng).

Đối với Mô-đun Trình quản lý, nó mô tả một số hành động chung cho một nhóm hoặc cho tất cả các thành phần của một thư mục hoặc một số tài liệu. Ví dụ: nếu bạn cần in một mục thư mục, bạn có thể sử dụng Mô-đun đối tượng.

Nhưng trong Mô-đun quản lý, có thể tạo ra một cơ chế phổ quát hơn để in một nhóm phần tử, cùng với những thứ khác.

Ngoài ra, việc truy cập vào Module đối tượng vẫn là một hành động dài hơn. Vì vậy, tốt hơn hết bạn nên giải quyết vấn đề này trong mô-đun quản lý.

Điều này kết thúc phần làm quen của chúng tôi với các mô-đun trong cấu hình hệ thống 1C:Enterprise. Nếu chúng ta tóm tắt ngắn gọn tất cả những điều trên, thì điểm mấu chốt là những kết luận sau:

  • Mô-đun phần mềm là một phần của cấu hình chỉ có thể chứa văn bản bằng ngôn ngữ 1C tích hợp
  • Các mô-đun phần mềm được phân loại theo loại chúng tôi đã thảo luận trong bài viết này. Mỗi chế độ xem được xác định bởi vị trí của nó và bối cảnh chương trình có sẵn.
  • Cấu trúc của mô-đun bao gồm một số phần được sắp xếp theo một trình tự nhất định. Thành phần của các phần được xác định bởi loại mô-đun.

Cũng lưu ý rằng chúng tôi đã cố tình bỏ qua một loại mô-đun, đó là mô-đun lệnh. Nó không có gì đáng chú ý và chúng tôi mời bạn làm quen với chức năng của nó.

Cho đến nay, chúng tôi đã xem xét tất cả mã chương trình của mình một cách riêng biệt với giải pháp ứng dụng và theo quy định, chúng tôi đã viết nó trong một số cấu hình thử nghiệm nhỏ của riêng mình. Bạn có biết rằng “bạn không thể cứ đi” và bắt đầu chỉnh sửa mã của cấu hình tiêu chuẩn không? KHÔNG? Vậy thì ở bài viết tiếp theo chúng tôi sẽ giải thích tất cả!

In (Ctrl+P)

Các đối tượng nằm trong nhánh mô-đun chung của cây cấu hình nhằm mục đích chứa văn bản về các hàm và thủ tục có thể được gọi từ bất kỳ mô-đun cấu hình nào khác.
CHÚ Ý! Một mô-đun chung chỉ có thể chứa các định nghĩa thủ tục và hàm.
Các thủ tục và chức năng của một mô-đun chung mà từ khóa Xuất được chỉ định trong tiêu đề của chúng là một trong những thành phần của bối cảnh chung. Bạn có thể tìm thêm thông tin về quy trình viết trong một mô-đun chung trong phần “Định dạng văn bản nguồn của mô-đun chương trình” và “Người vận hành” của trợ giúp ngôn ngữ tích hợp.
Để chỉnh sửa một mô-đun chung, trong bảng thuộc tính của một đối tượng thuộc loại Mô-đun chung trong cửa sổ Cấu hình, trong thuộc tính Mô-đun, nhấp vào liên kết Mở. Văn bản của mô-đun chung sẽ được đưa ra để chỉnh sửa trong trình soạn thảo văn bản của hệ thống 1C:Enterprise ở chế độ chỉnh sửa văn bản của mô-đun phần mềm.
Mô-đun chung, là một phần của cấu hình, chỉ được lưu như một phần của cấu hình.
Thuộc tính Global xác định xem các phương thức được xuất của một mô-đun chung có phải là một phần của bối cảnh chung hay không.
Nếu thuộc tính Toàn cầu được đặt thành True thì các phương thức được xuất của mô-đun chung sẽ có sẵn dưới dạng các phương thức của ngữ cảnh chung.
Nếu thuộc tính Toàn cầu được đặt thành Sai thì thuộc tính sẽ được tạo trong ngữ cảnh chung với tên khớp với tên của mô-đun chung trong siêu dữ liệu. Thuộc tính này là chỉ đọc. Giá trị của thuộc tính này là đối tượng GeneralModule. Các phương thức đã xuất của mô-đun chung này có sẵn thông qua đối tượng này. Do đó, việc truy cập các phương thức của mô-đun chia sẻ không toàn cầu trông giống như XXXXX.YYYYY, trong đó XXXXX là tên thuộc tính tương ứng với ngữ cảnh của mô-đun chia sẻ và YYYYY là tên của phương thức được xuất của mô-đun chia sẻ.
Ví dụ:

Làm việc VỚI Thiết bị bán lẻ.ConnectBarcode Scanner();

Bối cảnh khác nhau và các mô-đun chung

Bằng cách sử dụng các thuộc tính của các mô-đun chung và các lệnh tiền xử lý, bạn có thể tổ chức việc thực thi các phương thức khác nhau của các mô-đun chung trong ngữ cảnh mong muốn.
Mỗi thuộc tính của một mô-đun chung chịu trách nhiệm về khả năng biên dịch (và thực thi) mô-đun chung trong một ngữ cảnh cụ thể.
Các thuộc tính sau đây có sẵn, chịu trách nhiệm về bối cảnh trong đó các phương thức của mô-đun chung có sẵn:
Khách hàng (ứng dụng thông thường)– các phương pháp của mô-đun chung sẽ có sẵn cho máy khách dày ở chế độ ứng dụng thông thường;
● – các phương pháp của mô-đun chung sẽ có sẵn cho máy khách mỏng, máy khách web cũng như cho máy khách dày trong
chế độ ứng dụng được quản lý;
● Máy chủ – các phương thức của mô-đun chung sẽ có sẵn trên máy chủ;
Tham gia bên ngoài– các phương thức của mô-đun chung sẽ có sẵn ở kết nối bên ngoài.
Nếu một số thuộc tính được đặt cùng lúc, điều này có nghĩa là các phương thức của mô-đun chung sẽ có sẵn trong một số ngữ cảnh.
Nếu một mô-đun chung có thuộc tính Máy chủ và bất kỳ bộ thuộc tính nào khác, điều này có nghĩa là mô-đun chung sẽ có sẵn đồng thời trên máy chủ và trong máy khách đã chọn. Cần phải hiểu rằng trên thực tế, đây sẽ là một số phiên bản của mã được biên dịch (theo số lượng máy khách đã chọn và chính máy chủ).
Hơn nữa, nếu một phương thức nằm trong mô-đun chung như vậy được gọi từ phía máy khách thì bản sao máy khách của mô-đun chung sẽ được sử dụng và nếu từ máy chủ thì bản sao máy chủ. Trong trường hợp này, bằng cách sử dụng các chỉ thị tiền xử lý (xem tại đây để biết thêm chi tiết), bạn có thể “bảo vệ” máy chủ khỏi mã không thể thực thi được trên đó.
Hãy xem một ví dụ. Trong mô-đun chung (có thể được thực thi trên máy khách tối thiểu và trên máy chủ), có một phương thức có hành vi hơi khác nhau ở phía máy khách tối thiểu và phía máy chủ. Hãy xem làm thế nào điều này có thể được thực hiện:



#Nếu ThinClient thì
// Hiển thị cảnh báo
Hiển thịCảnh báo người dùng(“Trên máy khách”);
#TheEndIf
Kết thúcThủ tục
Sau đó, về phía máy chủ, mã sẽ trông như thế này:
Thủ tục Phương thức CommonModule() Xuất khẩu
// Nhiều mã quan trọng khác nhau ở đây
Kết thúcThủ tục
Và về phía máy khách mỏng, mã sẽ trông như thế này:
Quy trình Phương thức CommonModule() Xuất
// Nhiều mã quan trọng khác nhau ở đây
// Hiển thị cảnh báo
ShowUserAlert(“Trên máy khách”);
Kết thúcThủ tục

Có một số cách để chuyển quyền điều khiển từ máy khách sang máy chủ:
● gọi phương thức của mô-đun chung của máy chủ;
● trong một biểu mẫu hoặc mô-đun lệnh, gọi một phương thức có các chỉ thị biên dịch đứng trước &OnServer, &OnServerKhông có ngữ cảnh

Đồng thời, không thể gọi các phương thức của mô-đun chung máy khách (không có tập thuộc tính Máy chủ) và các phương thức máy khách của mô-đun biểu mẫu hoặc mô-đun lệnh từ các thủ tục máy chủ. Điều khiển sẽ quay trở lại máy khách sau khi cuộc gọi phương thức máy chủ ngoài cùng hoàn tất.
Ngoại lệ là các phương thức của mô-đun biểu mẫu và mô-đun lệnh, trước các chỉ thị biên dịch &Trên máy kháchTrên máy chủ, &OnClientOnServerKhông có ngữ cảnh
Những điểm sau đây cũng cần được đề cập:
● Nếu một mô-đun chung có sẵn cho nhiều máy khách thì khi viết mã chương trình, bạn nên xem xét các hạn chế tối đa mà máy khách có thể áp đặt hoặc sử dụng các hướng dẫn tiền xử lý để “cô lập” mã dành riêng cho máy khách.
● Các lệnh tiền xử lý cũng có ý nghĩa khi một mô-đun chung có một số bối cảnh thực thi, ví dụ: một kết nối bên ngoài và một máy khách tối thiểu hoặc (phổ biến hơn nhiều) một số máy khách và một máy chủ. Trong trường hợp này, các hướng dẫn tiền xử lý sẽ đóng khung mã tương tác không thể sử dụng trên máy chủ nhưng có thể sử dụng trên máy khách (xem ví dụ ở trên).
Để biết thêm thông tin về các hướng dẫn tiền xử lý và chỉ thị biên dịch, hãy xem phần “Thực thi các thủ tục và chức năng” của trợ giúp ngôn ngữ nhúng.
Thuộc tính Máy chủ cuộc gọi nhằm kiểm soát khả năng gọi các phương thức đã xuất của mô-đun chung của máy chủ từ mã máy khách.
Nếu thuộc tính được đặt thì các phương thức được xuất của mô-đun chung của máy chủ sẽ có sẵn để gọi từ phía máy khách. Nếu thuộc tính không được đặt thì các phương thức được xuất như vậy chỉ có thể được gọi từ các phương thức phía máy chủ (cả hai phương thức của mô-đun chung phía máy chủ và phương thức phía máy chủ của mô-đun biểu mẫu và mô-đun lệnh).
Khuyên bảo . Bạn nên đặt thuộc tính Cuộc gọi máy chủ thành Sai trong trường hợp mô-đun chung của máy chủ chứa các phương thức mà bạn không muốn gọi từ máy khách (ví dụ: vì lý do bảo mật).
Ghi chú. Nếu các thuộc tính được đặt cùng một lúc Khách hàng (ứng dụng thông thường), Khách hàng (ứng dụng được quản lý), Tham gia bên ngoài, thì thuộc tính Máy chủ cuộc gọi sẽ tự động được đặt lại. Nếu thuộc tính Máy chủ cuộc gọi được đặt, các thuộc tính sẽ tự động được đặt lại Khách hàng (ứng dụng thông thường), Khách hàng (ứng dụng được quản lý)Tham gia bên ngoài, nếu các thuộc tính này được đặt cùng một lúc.
Tài sản Đặc quyền nhằm mục đích vô hiệu hóa kiểm soát quyền truy cập khi thực thi các phương thức của một mô-đun chung.
GHI CHÚ. Nếu tài sản Đặc quyềnđược cài đặt thì thuộc tính Máy chủ sẽ tự động được đặt cho mô-đun chung và các thuộc tính còn lại được đặt lại ( Khách hàng (ứng dụng thông thường), Khách hàng (ứng dụng được quản lý) và B kết nối bên ngoài). Một mô-đun chia sẻ đặc quyền chỉ có thể được thực thi trên máy chủ.

Sử dụng lại giá trị trả về

Nếu mô-đun chia sẻ không mang tính toàn cầu, thuộc tính Giá trị trả về tái sử dụng sẽ khả dụng. Thuộc tính này có thể nhận các giá trị sau:
● Không sử dụng - Không sử dụng lại các giá trị trả về cho các hàm trong mô-đun chung này.
● Mỗi cuộc gọi và mỗi phiên – Mô-đun dùng chung sử dụng một phương pháp để xác định việc sử dụng lại dữ liệu. Bản chất của phương pháp này là trong quá trình thực thi mã, hệ thống sẽ ghi nhớ các tham số và kết quả của hàm sau lần gọi hàm đầu tiên. Khi một hàm được gọi lại với cùng tham số, giá trị được lưu trữ (từ lệnh gọi đầu tiên) sẽ được trả về mà không thực thi chính hàm đó. Nếu một hàm thay đổi giá trị của các tham số trong quá trình thực thi thì việc gọi lại hàm sẽ không thực hiện được điều này.
Bạn có thể làm nổi bật các tính năng lưu kết quả cuộc gọi sau:
● nếu một chức năng được thực thi trên máy chủ và được gọi từ mã máy chủ thì các giá trị tham số và kết quả của cuộc gọi sẽ được ghi nhớ cho phiên hiện tại ở phía máy chủ;
● nếu chức năng được thực thi trên máy khách dày hay mỏng, thì các giá trị của tham số và kết quả của lệnh gọi sẽ được ghi nhớ ở phía máy khách;
● nếu một hàm được thực thi ở phía máy chủ và được gọi từ mã máy khách thì các giá trị của tham số cuộc gọi sẽ được ghi nhớ cả ở phía máy khách và phía máy chủ (đối với phiên hiện tại).
Các giá trị đã lưu sẽ bị xóa:
● nếu thuộc tính được đặt thành Trong suốt thời gian cuộc gọi:
● về phía máy chủ – khi trả lại quyền điều khiển từ máy chủ;
● về phía máy khách – khi một thủ tục hoặc chức năng ngôn ngữ tích hợp cấp cao nhất chấm dứt (được hệ thống gọi từ giao diện chứ không phải từ một thủ tục hoặc chức năng ngôn ngữ tích hợp sẵn khác);
● nếu thuộc tính mô-đun chia sẻ được đặt thành Trong suốt phiên:
● về phía máy chủ – vào cuối phiên;
● về phía máy khách – khi đóng ứng dụng máy khách.
Các giá trị đã lưu sẽ bị xóa:
● trên máy chủ, trong máy khách dày, trong kết nối bên ngoài, trong máy khách mỏng và trong máy khách web với tốc độ kết nối bình thường - 20 phút sau khi tính giá trị được lưu trữ hoặc 6 phút sau lần sử dụng cuối cùng;
● trong máy khách tối thiểu và máy khách web có tốc độ kết nối thấp – 20 phút sau khi tính giá trị đã lưu;
● nếu thiếu RAM trong quá trình làm việc của máy chủ;
● khi khởi động lại quy trình làm việc;
● khi máy khách chuyển sang quy trình công việc khác.
Sau khi các giá trị bị xóa, lệnh gọi hàm được xuất sẽ được thực hiện như trong lệnh gọi đầu tiên.
Thuộc tính này của các mô-đun chung không ảnh hưởng đến việc thực thi các thủ tục - các thủ tục luôn được thực thi.

Nếu một mô-đun chung được đặt để sử dụng lại các giá trị trả về thì một số hạn chế sẽ được áp dụng đối với các loại tham số do hàm xuất. Các loại tham số chỉ có thể là:
● Các loại nguyên thủy ( Không xác định, NULL, Boolean, Số, Chuỗi, Ngày).
● Mọi tham chiếu đến đối tượng cơ sở dữ liệu.
● Cấu trúc có giá trị thuộc tính thuộc các loại trên. Trong trường hợp này, việc nhận dạng các tham số được kiểm soát “bởi nội dung” của cấu trúc.
Nếu hàm đã xuất trả về một đối tượng, nó thực sự trả về một tham chiếu đến đối tượng được lưu trong bộ đệm. Nếu sau khi nhận được tham chiếu này, trạng thái của đối tượng thay đổi thì lệnh gọi tiếp theo tới cùng hàm đó sẽ trả về tham chiếu đến đối tượng đã được sửa đổi mà không thực sự thực thi hàm đó. Hành vi này sẽ tiếp tục cho đến khi giá trị được lưu trữ bị xóa (vì bất kỳ lý do gì). Nói cách khác, việc thay đổi trạng thái của một đối tượng do lệnh gọi hàm từ một mô-đun chung với việc sử dụng lại các giá trị trả về không phải là cơ sở cho lệnh gọi hàm thực tế. Bạn cũng nên nhớ rằng bộ đệm của các đối tượng được trả về không quan tâm đến
trạng thái chế độ đặc quyền tại thời điểm hàm được gọi, sử dụng lại các giá trị trả về. Tính năng này có thể dẫn đến hành vi sau:
● Việc thực thi lệnh gọi hàm thực tế có sử dụng lại các giá trị trả về (lệnh gọi đầu tiên) được thực hiện khi bật chế độ đặc quyền.
● Khi thực thi một chức năng, một đối tượng đã được nhận nhưng không thể nhận được khi chế độ đặc quyền bị tắt.
● Các lệnh gọi chức năng tiếp theo được thực hiện mà không cài đặt chế độ đặc quyền.
● Tuy nhiên, cho đến khi bộ đệm đối tượng trả về bị xóa hoặc lệnh gọi thực tế được thực hiện lại, hàm sẽ trả về một đối tượng chính thức không thể truy cập được.
● Hành vi ngược lại cũng đúng, khi cuộc gọi đầu tiên được thực hiện mà không cài đặt chế độ đặc quyền và ở chế độ đặc quyền, một đối tượng đáng lẽ có thể nhận được ở chế độ đặc quyền sẽ không được trả về.

Nếu một mô-đun chung có thuộc tính Sử dụng lại giá trị trả vềđược đặt thành Trong suốt thời gian của phiên, thì các giá trị thuộc loại không thể được sử dụng trong các giá trị được trả về bởi các hàm của mô-đun đó Trình quản lý bảng thời gian.
Nếu một chức năng của mô-đun chia sẻ, với bộ khả năng sử dụng lại, được gọi từ trong cùng một mô-đun chia sẻ (ví dụ: được đặt tên là GeneralModule), thì cần lưu ý cảnh báo sau: nếu hàm được gọi bằng tên MyFunction() , thì hàm sẽ được thực thi mỗi khi hàm được gọi. Để sử dụng được các giá trị đã lưu, hàm phải được gọi bằng tên đầy đủ của nó:
GeneralModule.MyFunction().
Phương thức bối cảnh chung sẽ loại bỏ tất cả các giá trị được sử dụng lại, cả phía máy chủ và phía máy khách, bất kể phương thức đó được gọi ở đâu. Sau khi thực hiện phương pháp Cập nhậtReusableValues() lệnh gọi hàm đầu tiên sẽ được thực hiện hoàn toàn.

Bất kỳ chương trình nào cũng bao gồm mã chương trình, nghĩa là thực tế là một chuỗi hành động được viết bằng bất kỳ ngôn ngữ nào phải được thực hiện.

Tuy nhiên, chính chương trình này phải được viết ở đâu đó, nghĩa là nằm ở đâu đó. Trong hầu hết các trường hợp, mã chương trình được viết bằng các tệp văn bản thuần túy. Điểm khác biệt duy nhất là phần mở rộng trong chúng không phải là .txt mà là .cpp hoặc .php.

Chương trình 1C được viết ở đâu?

Mô-đun 1C là gì?

Tất nhiên, mã 1C cũng có thể được viết trong một số tệp văn bản. Tuy nhiên, có khái niệm về Cấu hình 1C - không chỉ bao gồm danh sách cài đặt, mẫu biểu mẫu, v.v. mà còn bao gồm mã chương trình 1C. Do đó, mã 1C được lưu trữ trong cấu hình.

Cấu hình bao gồm các đối tượng 1C, như chúng ta đã thảo luận trong các bài học trước. Mỗi đối tượng 1C chứa các đối tượng lồng nhau, ví dụ: một thư mục có nhiều dạng.

Mỗi đối tượng 1C, bao gồm một số đối tượng lồng nhau, đều có Mô-đun riêng - một tệp văn bản chứa mã chương trình.

Ngoài ra còn có các mô-đun độc lập với đối tượng trong đó mã chương trình có thể được viết độc lập với một đối tượng cụ thể.

Vì vậy, trong 1C không có chương trình “đơn”. Có một bộ module để viết mã chương trình cho từng đối tượng cấu hình 1C.

Mô-đun 1C được sử dụng như thế nào?

Toàn bộ chương trình có thể được chia thành hai loại:

  • Phương thức đối tượng
  • Phản ứng với các sự kiện.

phương pháp. Như chúng tôi đã nói trước đó, đối tượng 1C là một cấu trúc tích hợp bao gồm cả dữ liệu và phương thức để xử lý nó. Các phương thức này là một tập hợp các hành động (phương thức) có thể được gọi để xử lý dữ liệu. Một ví dụ về hành động như vậy là DirectoryObject.Write() – ghi một phần tử thư mục vào cơ sở dữ liệu.

Các phương thức của nhiều đối tượng 1C có thể là tiêu chuẩn (tức là được lập trình trên nền tảng 1C) và được lập trình viên viết bằng ngôn ngữ 1C. Với sự trợ giúp của thứ hai, bạn có thể mở rộng chức năng của các đối tượng 1C theo ý muốn.

Sự kiện. Sự kiện có sẵn trong nhiều công cụ phát triển khác. Mục đích của chương trình không chỉ là tính toán một cái gì đó khi khởi động mà còn hỗ trợ công việc của người dùng.

Sự kiện người dùng - người dùng đã nhấn nút. Đáp lại, một số phần của mã sẽ được thực thi, phản ứng với hành động của người dùng.

Sự kiện hệ thống - chúng tôi đã ghi lại đối tượng 1C trong cơ sở dữ liệu. Đã xảy ra sự kiện hệ thống “Ghi đối tượng”. Có thể định cấu hình phản ứng sẽ xảy ra với các sự kiện không phải do người dùng (người đã nhấn nút hoặc làm việc khác gây ra) mà do chính hệ thống gây ra. Một ví dụ nổi bật về sự kiện như vậy là khi chương trình bắt đầu.

Thứ tự thực hiện các module 1C

Nhiều ngôn ngữ có khái niệm như “điểm vào”. Đây là dòng hoặc hàm đầu tiên sẽ được thực thi khi chương trình bắt đầu.

Trong 1C có một số điểm vào như vậy - dành cho từng loại khách hàng. Nghĩa là, khi khởi động một máy khách dày, có một điểm vào, khi khởi động một máy khách mỏng, một điểm khác. Điều này cho phép bạn lập trình các tính năng khác nhau cho các loại khách hàng khác nhau.

Điểm vào trong mô-đun tương ứng lần lượt là các trình xử lý sự kiện hệ thống BeforeSystemStart() và WhenSystemStart() (tức là theo thứ tự). Các chức năng này được thực thi trước tiên, chúng có thể bắt đầu một cái gì đó một cách tự động.

Nếu không có gì được khởi chạy tự động thì giao diện 1C sẽ mở ra trước mặt người dùng và sau đó mọi thứ sẽ phụ thuộc vào nó. Anh ta nhấn một nút - trình xử lý bấm nút được thực thi (do đó cũng có thể tự động khởi chạy một cái gì đó).

Làm việc với các mô-đun 1C

Được sản xuất trong bộ cấu hình. Bạn có thể mở mô-đun bằng cửa sổ Cấu hình.

Cấu trúc của mô-đun phần mềm có thể được chia thành các phần sau:

  • phần định nghĩa biến;
  • phần thủ tục và chức năng;
  • phần của chương trình chính.

Trong một mô-đun phần mềm cụ thể, bất kỳ phần nào cũng có thể bị thiếu.

Phần định nghĩa biếnđược đặt từ đầu văn bản mô-đun đến câu lệnh Thủ tục hoặc Hàm đầu tiên hoặc bất kỳ câu lệnh thực thi nào. Phần này chỉ có thể chứa các câu lệnh khai báo biến.

Phần thủ tục và chức năngđược đặt từ câu lệnh Thủ tục hoặc Hàm đầu tiên đến bất kỳ câu lệnh thực thi nào bên ngoài phần nội dung của mô tả thủ tục hoặc hàm.

Phần chương trình chínhđược đặt từ câu lệnh thực thi đầu tiên bên ngoài phần thân của thủ tục hoặc hàm cho đến cuối mô-đun. Phần này chỉ có thể chứa các câu lệnh thực thi. Phần chương trình chính được thực thi khi mô-đun được khởi chạy để thực thi (xem "Các loại mô-đun chương trình"). Thông thường, trong một phần của chương trình chính, việc đặt các toán tử để khởi tạo các biến với bất kỳ giá trị cụ thể nào là hợp lý. Việc này phải được thực hiện trước lệnh gọi đầu tiên tới bất kỳ thủ tục hoặc hàm nào của mô-đun.

Các ký tự đặc biệt được sử dụng trong văn bản nguồn

// Một bình luận bắt đầu bằng hai dấu gạch chéo. Một nhận xét được coi là toàn bộ văn bản từ dấu "//" đến cuối dòng hiện tại.
| Thanh dọc ở đầu dòng chỉ được sử dụng trong các hằng chuỗi và có nghĩa là dòng này là sự tiếp nối của dòng trước (ngắt dòng), (xem "Hằng chuỗi").
~ Nhãn toán tử bắt đầu bằng dấu ngã.
: Dấu hai chấm kết thúc nhãn toán tử.
; Dấu chấm phẩy là dấu phân cách câu lệnh.
() Danh sách các tham số của phương thức, thủ tục và hàm được đặt trong ngoặc đơn.
Kích thước của mảng được đặt trong dấu ngoặc vuông.
, Dấu phẩy phân tách các tham số trong danh sách tham số của phương thức, thủ tục và hàm.
" " Các hằng chuỗi được đặt trong dấu ngoặc kép.
" " Các hằng số ngày tháng được đặt trong dấu nháy đơn.
. Dấu thập phân trong hằng số. Dấu phân cách được sử dụng trong khai báo kiểu dữ liệu tổng hợp.
+ Ký hiệu dấu cộng thể hiện phép cộng.
Ký hiệu dấu trừ biểu thị phép trừ.
* Ký hiệu dấu hoa thị thể hiện phép tính nhân.
/ Biểu tượng dấu gạch chéo thể hiện phép chia.
> Dấu ngoặc vuông biểu thị toán tử logic "lớn hơn".
>= Hoạt động logic "lớn hơn hoặc bằng".
< Dấu ngoặc nhọn bên trái biểu thị phép toán logic nhỏ hơn.
<= Hoạt động logic "nhỏ hơn hoặc bằng".
= Dấu bằng biểu thị một phép gán hoặc phép toán logic "bằng".
<> Hai dấu ngoặc nhọn biểu thị toán tử logic "không bằng".

Mô-đun 1C chung- đối tượng siêu dữ liệu cấu hình cho 1C 8.3 và 8.2, lưu trữ mã chương trình thường được gọi trong cấu hình. Một hàm/thủ tục có thể được gọi từ bất kỳ đâu trong cấu hình (nếu đó là cấu hình xuất).

Cách sử dụng mô-đun chia sẻ

Cách tốt nhất là đặt một thủ tục hoặc hàm trong một mô-đun chung nếu nó được gọi ở nhiều nơi. Thứ nhất, nếu sửa đúng quy trình thì chỉ được sửa một chỗ. Thứ hai, điều này đạt được thứ tự cao hơn trong mã.

Một ví dụ điển hình của mô-đun chung là xử lý đăng lên một số sổ đăng ký, lấy số tiền chênh lệch trong ngày làm việc, tính toán lại tỷ giá hối đoái, tính toán lại số lượng/giá/số tiền trong phần bảng và các chức năng khác.

Thuộc tính của các mô-đun chung

Một trong những tính năng chính của mô-đun chia sẻ từ các mô-đun khác là bạn không thể khai báo các biến dùng chung.

Nhận miễn phí 267 bài học video trên 1C:

Chúng ta hãy xem xét kỹ hơn bảng thuộc tính của mô-đun chung:

  • Toàn cầu- nếu cờ được đặt, các chức năng và thủ tục từ mô-đun này sẽ khả dụng trong bối cảnh chung. Những thứ kia. chúng có thể được gọi ở bất kỳ đâu trong cấu hình bằng cách truy cập mà không cần tên của mô-đun chung. Tuy nhiên, một điều kiện được thêm vào - tên của các thủ tục và hàm trong mô-đun chung này phải là duy nhất trong bối cảnh chung.
  • Máy chủ— các thủ tục và chức năng của mô-đun chung này có thể được thực thi trên máy chủ.
  • Tham gia bên ngoài— mã chương trình của mô-đun chung này có thể được thực thi khi được kết nối bằng nguồn bên ngoài (ví dụ: COM).
  • Khách hàng (ứng dụng được quản lý)— các quy trình và chức năng của mô-đun chung này có thể được sử dụng trong máy khách dày ở chế độ ứng dụng được quản lý.
  • Khách hàng (ứng dụng thông thường)— mã chương trình của mô-đun chung này có thể được sử dụng trong máy khách dày ở chế độ ứng dụng thông thường.
  • Cuộc gọi máy chủ— cờ cho phép máy khách sử dụng các thủ tục và chức năng từ mô-đun chung này.
  • — nếu được đặt thành True, việc kiểm tra quyền truy cập sẽ bị tắt trong mô-đun chung này.
  • Tái sử dụng— xác định cài đặt của các giá trị được trả về; nếu tùy chọn được bật thì sau lần thực hiện đầu tiên, hệ thống sẽ ghi nhớ giá trị cho các tham số đầu vào này và sẽ trả về giá trị được tạo sẵn. Có thể nhận các giá trị sau: không được sử dụng- tắt, trong suốt thời gian của cuộc gọi- trong thời gian của một thủ tục nhất định, trong suốt thời gian của phiên— cho đến khi người dùng đóng phiên (chương trình).

Nếu bạn đang bắt đầu học lập trình 1C, chúng tôi khuyên bạn nên tham gia khóa học miễn phí (đừng quên