1c cách mở biểu mẫu được quản lý từ biểu mẫu thông thường. Làm thế nào để mở một biểu mẫu của một đối tượng hiện có? Cách mở biểu mẫu đối tượng trong ứng dụng được quản lý nếu có liên kết đến nó
Trang chủ Dành cho nhà phát triển mới bắt đầu Học lập trìnhLàm thế nào để mở một biểu mẫu của một đối tượng hiện có?
Khi mở một form của một đối tượng có sẵn, ngoài tên của form bạn còn phải chỉ rõ đối tượng cần mở form đó. Để thực hiện việc này, hãy sử dụng tham số Biểu mẫu khóa và liên kết đến đối tượng mà chúng tôi quan tâm.
Ví dụ: nếu từ danh sách biểu mẫu tổ chức, bạn cần mở biểu mẫu của tổ chức nơi con trỏ nằm trên đó, bạn có thể thực hiện việc này theo cách sau:
Chúng ta truyền các tham số biểu mẫu ở dạng cấu trúc, trong đó tên của thành phần cấu trúc tương ứng với tên của tham số biểu mẫu và giá trị là giá trị mà chúng ta muốn đặt tham số biểu mẫu.
Nếu bạn muốn mở không phải là chính mà là một dạng tùy ý của một đối tượng được tạo trong bộ cấu hình, thay vì tên tiêu chuẩn của biểu mẫu chính (ObjectForm), hãy chỉ ra từ Biểu mẫu theo sau là dấu chấm - tên của biểu mẫu được tạo trong người cấu hình.
Ví dụ:
ReferenceToDirectoryElement = Elements.List.CurrentRow; FormParameters = Cấu trúc mới ("Khóa", ReferenceToDirectoryElement); OpenForm("Directory.Organizations.Form.UniversalObjectForm",FormParameters);
Cần lưu ý rằng trong trường hợp, ngoài liên kết đến một đối tượng, không có tham số nào cần được chuyển đến biểu mẫu đang được mở và đó là dạng chính của đối tượng hiện có cần thiết, bạn có thể sử dụng một phương pháp đơn giản hơn - mở biểu mẫu bằng thủ tục OpenValue():
OpenValue(Items.List.CurrentRow);
Phương pháp này kém linh hoạt hơn, nhưng trong một số trường hợp, nó giúp tiết kiệm thời gian và công sức. Ví dụ, trong trường hợp đang xem xét, một dòng như vậy có thể thay thế toàn bộ quy trình ba dòng mà chúng tôi đã viết trước đó.
Tuy nhiên, cần phải cẩn thận khi sử dụng thủ tục này. Trong một số trường hợp, nó có thể gây ra các cuộc gọi bổ sung đến máy chủ, chẳng hạn như khi bạn cần mở biểu mẫu mục thư mục phân cấp. Khi sử dụng quy trình này, nền tảng sẽ thực hiện lệnh gọi bổ sung đến máy chủ để xác định xem một phần tử có phải là một nhóm hay không, vì các biểu mẫu khác nhau phải được mở cho phần tử và cho nhóm.
Đồng thời, nhà phát triển có thể biết trước thông tin này trong thuật toán của mình và bằng cách sử dụng hàm OpenForm(), nhà phát triển có thể mở biểu mẫu mong muốn mà không cần gọi thêm đến máy chủ, chỉ định ngay tên tiêu chuẩn của chính hình thức.
Để mở biểu mẫu lựa chọn với lựa chọn trong 1 giây 8.2(dạng thông thường), chúng ta cần thực hiện một số hành động. Chúng ta sẽ lấy nó trước. Sau đó, chúng ta sẽ thiết lập lựa chọn và mở nó theo chương trình, đây là một ví dụ về mã:
Lựa chọn trên biểu mẫu trong trường đầu vào 1C 8.2 với một số giá trị
Trong ví dụ trên chúng ta đã xem xét cách thiết lập lựa chọn trên biểu mẫu lựa chọn theo giá trị cụ thể. Bây giờ, hãy xem xét một tình huống trong đó bạn cần thay thế một số giá trị, ví dụ: giá trị này có thể là một mảng hoặc được dỡ bỏ khỏi kết quả truy vấn. Đây là lựa chọn trong trường đầu vào 1c với nhiều ý nghĩa.
Đầu tiên, chúng ta lấy biểu mẫu lựa chọn, chuyển “Phần tử” (chủ sở hữu) vào các tham số, đặt cờ chế độ lựa chọn. Sau đó, chúng tôi tạo một danh sách các giá trị và một mảng, chúng tôi lưu ý rằng dưới dạng lựa chọn khi đặt loại so sánh trong danh sách, một đối tượng chỉ có thể xuất hiện với loại Danh sách giá trị. Chúng tôi thêm các phần tử vào mảng, sau đó tải mảng này vào Danh sách các Giá trị mà sau đó chúng tôi đặt trong vùng chọn. Ngoài ra, đừng quên bật cờ để sử dụng lựa chọn này và đặt Loại so sánh.
Cài đặt lựa chọn trong trường nhập trên biểu mẫu trong 1C 8.3, Sự kiện bắt đầu lựa chọn
Bây giờ chúng ta hãy xem xét lựa chọn trong trường đầu vào trên biểu mẫu được quản lý trong 1C 8.3. Hãy tìm trên biểu mẫu phần tử mà chúng tôi quan tâm, trong đó chúng tôi sẽ đặt lựa chọn, trong trường hợp của chúng tôi đây là trường “Tổ chức”. Chúng tôi tìm thấy sự kiện “Bắt đầu lựa chọn”, nhấp vào kính lúp và tìm thấy chính mình trong quy trình. Chúng ta thấy tham số Dữ liệu lựa chọn; tham số này thuộc loại ValueList. Để giới hạn lựa chọn ở các phần tử cần thiết, chúng ta cần điền vào Danh sách Giá trị. Chúng tôi chỉ có thể chọn các thành phần trên máy chủ, vì vậy chúng tôi tạo một quy trình với chỉ thị biên dịch &OnServer. Trong quy trình này, hãy điền vào Dữ liệu lựa chọn.
Việc mở các biểu mẫu theo chương trình trong ứng dụng 1C được quản lý khác biệt đáng kể so với việc mở chúng trong một ứng dụng thông thường. Trước tiên hãy nhìn vào phương pháp cũ. Nó bao gồm việc nhận một biểu mẫu và sau đó mở nó ở chế độ bình thường hoặc phương thức (khi mở ở chế độ phương thức, biểu mẫu sẽ chặn chương trình).
GetForm() . Mở()
Đây là phương pháp mở biểu mẫu chậm nhất. Tuy nhiên, nó cho phép bạn xử lý biểu mẫu theo chương trình trước khi mở nó. Để xử lý mã bạn cần thay đổi một chút:
Biểu mẫu = GetForm( "Chứng từ. Biên nhận hàng hóa và dịch vụ. Mẫu chứng từ")
;
// Ở đây chúng ta thực hiện các hành động với biểu mẫu
Hình thức. Mở();
Cần lưu ý rằng khi nhận được biểu mẫu, một thủ tục sự kiện khác sẽ được thực thi WhenCreatedOnServer.
Hãy xem xét các phương pháp khác cho phép bạn mở biểu mẫu trong ứng dụng 1C được quản lý nhanh hơn và thuận tiện hơn. Tùy từng trường hợp cụ thể có thể sử dụng các phương pháp khác nhau.
1. Cách mở biểu mẫu đối tượng trong ứng dụng được quản lý nếu có liên kết đến nó.
Trong trường hợp này, mọi thứ cực kỳ đơn giản.
RefLink = Thư mục. Danh pháp. FindByCode("000000001" );
OpenValue(RefLink) ;
2. Cách mở biểu mẫu lựa chọn và sau đó lấy giá trị đã chọn.
Có một chức năng cho việc này EnterValue(). Hàm có 3 tham số:
- Biến mà giá trị đã chọn sẽ được ghi vào;
- Một gợi ý sẽ được hiển thị trong cửa sổ lựa chọn;
- Mô tả các loại giá trị được chọn. Có thể có một số loại, trong trường hợp đó bạn sẽ được nhắc chọn loại trước khi chọn một giá trị cụ thể.
Kết quả của việc thực thi hàm, biểu mẫu lựa chọn mặc định cho một đối tượng thuộc loại đã chỉ định sẽ mở ra.
Giá trị biến;
Mảng=mảng mới;
Mảng. Thêm(Loại( "DirectoryLink.Nomenclature")
)
;
Mảng. Thêm(Loại( "DirectoryLink. Đối tác")
)
;
TypeDescription= new TypeDescription(Array) ;
Res = EnterValue(Value, "Hint", TypeDescription) ;
Các phương pháp trước đây chỉ cho phép bạn mở các biểu mẫu mặc định cho các đối tượng (biểu mẫu đối tượng hoặc biểu mẫu lựa chọn). Nếu bạn cần mở một biểu mẫu tùy chỉnh, bạn có thể sử dụng chức năng OpenForm().
Hàm này có khá nhiều tham số. Hãy xem xét một số trong số họ:
- Tên biểu mẫu— ở đây bạn có thể chọn một trong các hình dạng đối tượng tiêu chuẩn, ví dụ: Mẫu tuyển chọn hoặc Mẫu danh sách. Hoặc một hình thức cụ thể được tạo bởi các nhà phát triển.
- Tùy chọn— cho phép bạn chuyển nó sang biểu mẫu trong biểu mẫu cấu trúc một số thông số trước khi mở nó, từ đó xác định được dữ liệu đầu ra. Các tham số có thể là bất kỳ dữ liệu nào có thể được truyền từ máy khách đến máy chủ. Các tham số được truyền khi mở biểu mẫu có thể được xử lý trong quy trình KhiCreatingOnServer() tại biểu mẫu đang được mở.
- Chế độ mở biểu mẫu— có 3 lựa chọn: độc lập, chặn toàn bộ giao diện, chặn biểu mẫu chủ sở hữu.
Hãy xem cách sử dụng chức năng này OpenForm() trong nhiều tình huống khác nhau.
3. Cách mở form của đối tượng đã có
Mỗi biểu mẫu có một thuộc tính chính. Nó được tô đậm trong danh sách chi tiết biểu mẫu và thường được gọi là Một đối tượng dưới dạng các yếu tố sách, tài liệu tham khảo. Các đối tượng khác có thể có tên khác. Để mở một biểu mẫu của một đối tượng hiện có, bạn cần truyền tham số cho biểu mẫu đang được mở Chìa khóa với giá trị làm tham chiếu đến một đối tượng.
&Trên máy khách
Thủ tục Command1 (Lệnh)
Tham số=cấu trúc mới;
Tham số. Insert("Key", FindC() ) ;
OpenForm(, Tham số);
Kết thúcThủ tục
&Trên máy chủ
Hàm FindC() ;
Trả về thư mục. Đối tác. FindByRequisites ("TIN", "745107734623")
Chức năng cuối cùng
4. Cách mở một biểu mẫu đối tượng mới
Một chức năng đơn giản sẽ làm ở đây OpenForm() không có bất kỳ tham số nào.
&Trên máy khách
Thủ tục Command1 (Lệnh)
OpenForm( "Danh mục. Đối tác. Mẫu đối tượng")
;
Kết thúcThủ tục
5. Cách mở một biểu mẫu đối tượng mới và điền vào nó dựa trên nội dung nào đó
Bạn cần truyền một tham số Căn cứ, giá trị của nó sẽ là tham chiếu đến đối tượng cơ sở điền. Điều này sẽ bắt đầu thủ tục ProcessFill().
&Trên máy khách
Thủ tục Command1 (Lệnh)
Tham số=cấu trúc mới;
Tham số. Insert("Base", LinkToBuyerAccount);
OpenForm( "Tài liệu. Bán hàng hóa và dịch vụ. Mẫu đối tượng", Tham số) ;
Kết thúcThủ tục
Ví dụ này sẽ tạo một tài liệu Bán hàng hóa và dịch vụ và điền vào trên cơ sở hóa đơn thanh toán cho người mua, liên kết được truyền tới.
6. Cách mở biểu mẫu và đặt vùng chọn trên đó
Lựa chọn trên biểu mẫu 1C có thể đơn giản hoặc phức tạp. Lựa chọn đơn giản bao gồm các biểu thức như Tổ chức = Horns and Hooves LLC. Lựa chọn phức tạp liên quan đến các loại so sánh khác, ví dụ: Trên danh sách. Trong bài viết này, chúng tôi sẽ xem xét việc tổ chức lựa chọn đơn giản và một bài viết riêng sẽ dành cho việc lựa chọn phức tạp.
Để tổ chức một lựa chọn đơn giản, bạn cần truyền một tham số có khóa cho biểu mẫu đang được mở Lựa chọn, giá trị sẽ là cấu trúc trong đó khóa là tên của trường danh sách động và giá trị là dữ liệu đang được tìm kiếm.
Ví dụ: hãy mở biểu mẫu danh sách thư mục số GTD và thực hiện lựa chọn ở đó theo chủ sở hữu - phần tử thư mục Danh pháp.
&Trên máy khách
Thủ tục Command1 (Lệnh)
Tham số=cấu trúc mới;
lựa chọn= Cấu trúc mới;
Lựa chọn. Insert("Chủ sở hữu", LinkToNomenclature);
Tham số. Insert("Lựa chọn", Lựa chọn);
OpenForm( "Thư mục.Số GTD.Mẫu danh sách", Tham số) ;
Kết thúcThủ tục
7. Cách mở phiếu nhập thông tin đăng ký
Để làm điều này, bạn sẽ cần khóa nhập đăng ký thông tin.
Khóa ghi— đây là các giá trị của tất cả các phép đo và khoảng thời gian (nếu thanh ghi là định kỳ). Nghĩa là, khóa bản ghi là các tham số mà nhờ đó một bản ghi có thể được xác định duy nhất.
Thuật toán mở như sau:
- Chúng ta nhập dữ liệu record key với các giá trị cần thiết vào cấu trúc.
- Chúng tôi đặt cấu trúc kết quả trong một mảng.
- Chúng tôi tạo một khóa bản ghi từ mảng.
- Chúng tôi chuyển một tham số cho biểu mẫu mở ra Chìa khóa với khóa bản ghi từ bước 3 làm giá trị.
&Trên máy khách
Thủ tục Command1 (Lệnh)
Tham số=cấu trúc mới;
KeyParameters= Cấu trúc mới;
Các thông số quan trọng. Insert("Danh pháp", LinkToNomenclature) ;
Các thông số quan trọng. Insert("PriceType", LinkToPriceType) ;
Các thông số quan trọng. Insert("Giai đoạn", Ngày) ;
KeyArray = Mảng mới;
KeyArray. Thêm(KeyParameters) ;
EntryKey = Mới( "Thông tin Đăng kýRecord Key.PriceNomenclature", KeyArray) ;
Tham số. Insert("Khóa", RecordKey) ;
OpenForm( "Sổ đăng ký thông tin. Giá danh pháp. Mẫu hồ sơ", Tham số) ;
Kết thúcThủ tục