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ình

Là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.

S-P cho chúng ta biết những điều sau:

Bối cảnh toàn cầu.GetForm
Bối cảnh toàn cầu
Nhận biểu mẫu
Cú pháp:

GetForm(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>)
Tùy chọn:

<ИмяФормы>(yêu cầu)

Kiểu: .
Tên biểu mẫu. Được tạo thành dưới dạng đường dẫn đầy đủ đến đối tượng siêu dữ liệu Biểu mẫu (ví dụ: "Directory. Counterparties.Form.ObjectForm", "GeneralForm.FileSavingForm") hoặc dưới dạng đường dẫn đầy đủ đến đối tượng ứng dụng, được bổ sung bằng tên biểu mẫu mặc định (ví dụ: "Directory.Products.SelectionForm" ).
Tên biểu mẫu mặc định:

  • ObjectForm - dạng đối tượng mặc định;
  • GroupForm (FolderForm) - biểu mẫu nhóm mặc định;
  • RecordForm - biểu mẫu đăng ký mặc định;
  • ListForm - dạng danh sách mặc định;
  • ChoiceForm - biểu mẫu lựa chọn mặc định;
  • GroupChoiceForm - biểu mẫu lựa chọn nhóm mặc định;
  • ConstantsForm - dạng hằng số mặc định cho chế độ bình thường, được đặt làm dạng hằng số cho cấu hình;
  • Biểu mẫu - dạng mặc định của hằng số, báo cáo và xử lý;
  • CommonForm - dạng chung;
  • SettingForm - biểu mẫu cài đặt báo cáo mặc định;
  • LoadForm - biểu mẫu để tải cài đặt;
  • SaveForm - biểu mẫu để lưu cài đặt;
  • VariantForm - biểu mẫu để chỉnh sửa một biến thể báo cáo;
  • SearchForm - một hình thức tìm kiếm toàn văn trong dữ liệu.
Ví dụ: để có được dạng chung "GeneralSettings", bạn nên viết đoạn mã sau vào mô-đun:
Biểu mẫu = GetForm("GeneralForm.GeneralSettings");

Đối với các báo cáo và xử lý bên ngoài, tên biểu mẫu được chỉ định như sau:

  • Báo cáo bên ngoài.<имя отчета>.Hình thức.<имя формы>;
  • Báo cáo bên ngoài.<имя отчета>.<имя стандартной формы>;
  • Xử lý bên ngoài.<имя обработки>.Hình thức.<имя формы>;
  • Xử lý bên ngoài.<имя обработки>.<имя стандартной формы>.
Trong trường hợp này, báo cáo hoặc quá trình xử lý bên ngoài phải được đăng ký trước đó trong hệ thống.
<Параметры>(không bắt buộc)

Kiểu: .
Các thông số biểu mẫu. Khóa cấu trúc là tên của tham số và giá trị là giá trị của tham số biểu mẫu. Tên phần tử phải khớp với tên tham số cấu trúc.
P = Cấu trúc mới("Khóa", Nhà cung cấp);
Form = GetForm("Directory. Counterparties.ObjectForm", P);
Form.Open();
<Владелец>(không bắt buộc)

Chủ sở hữu của một biểu mẫu là một biểu mẫu hoặc điều khiển của một biểu mẫu khác.
<Уникальность>(không bắt buộc)

Loại: Miễn phí.
Tham số này có thể chỉ định một khóa, giá trị của khóa này sẽ được sử dụng để tìm kiếm các biểu mẫu đã mở. Nếu tìm thấy một biểu mẫu có cùng khóa duy nhất, thay vì mở một biểu mẫu mới, biểu mẫu tìm thấy sẽ được kích hoạt.
- tìm kiếm một biểu mẫu có khóa duy nhất mặc định, - hoàn toàn không tìm kiếm biểu mẫu, bất kỳ giá trị nào khác sẽ đặt khóa duy nhất mà tìm kiếm sẽ được thực hiện.
Giá trị mặc định: .
<Окно>(không bắt buộc)

Kiểu: ; .
Cửa sổ ứng dụng trong đó biểu mẫu sẽ được mở.
Chỉ áp dụng cho biểu mẫu được quản lý. Một cửa sổ chỉ có thể là cửa sổ ứng dụng chính hoặc cửa sổ biểu mẫu phụ.
Nếu loại được chỉ định, cửa sổ biểu mẫu sẽ được tạo theo tùy chọn đã chọn.
<НавигационнаяСсылка>(không bắt buộc)

Kiểu: ; .
Nếu nó chứa một giá trị khác , thì giá trị đó sẽ được gán cho thuộc tính của biểu mẫu do gọi phương thức này và thuộc tính của biểu mẫu đó được đặt thành .
Giá trị mặc định: .
Giá trị trả về:

Kiểu: ; ; .
- nếu trình xử lý được đặt để từ chối việc tạo biểu mẫu.
Sự miêu tả:

Nhận biểu mẫu hoặc biểu mẫu được quản lý. Trước khi nhận, việc tìm kiếm được thực hiện đối với một biểu mẫu đã mở cùng loại.
Việc tìm kiếm được thực hiện theo loại biểu mẫu, giá trị của các tham số khóa của biểu mẫu, chủ sở hữu biểu mẫu, khóa duy nhất của người dùng.
Nếu trong tham số<Уникальность>giá trị được chuyển thì việc tìm kiếm các biểu mẫu đã mở sẽ không được thực hiện.
Khả dụng:

Máy khách mỏng, máy khách web, máy khách dày, ứng dụng di động (máy khách).
Ghi chú:

Trong ứng dụng khách mỏng và web, chỉ nhận được biểu mẫu được quản lý.
Các hình thức xử lý bên ngoài thông thường không được hỗ trợ.
Nếu, khi nhận được dạng thông thường trong tham số<ИмяФормы>Tên biểu mẫu không chuẩn được chỉ định; các tham số đã truyền không được xử lý.
Có thể có nhiều cuộc gọi đến máy chủ trong quá trình thực thi. Một số trong số chúng được lưu trữ. Luôn có ít nhất một yêu cầu tới máy chủ và nó không được lưu vào bộ nhớ đệm. Bộ nhớ đệm phụ thuộc vào toàn bộ phiên bản nền tảng và phiên bản cấu hình. Nếu tốc độ kết nối được đặt ở mức thấp và đường truyền hiện tại không được chỉ định thì biểu mẫu lựa chọn sẽ được lưu vào bộ đệm. Bộ nhớ đệm sẽ bị xóa sau mỗi 20 phút. Các biểu mẫu không được sử dụng trong khoảng thời gian này sẽ bị xóa.
Xem thêm:

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:

  1. 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.
  2. Chúng tôi đặt cấu trúc kết quả trong một mảng.
  3. Chúng tôi tạo một khóa bản ghi từ mảng.
  4. 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