1s 8.3 làm sạch thiết kế có điều kiện của danh sách động. Kiểu dáng có điều kiện của các biểu mẫu được quản lý. Đặt thuộc tính biểu mẫu

Trong ấn phẩm này, chúng ta sẽ xem xét một ví dụ về tô màu các tài liệu quá hạn trong nhật ký tài liệu (danh sách động) từ ngày hiện tại và thời gian hiện tại.

Nhiệm vụ của chúng ta là tô màu dòng màu hồng nếu Ngày mục tiêu nhỏ hơn Ngày hiện tại, có tính đến việc ngày hiện tại liên tục thay đổi. Nghĩa là, ngày hiện tại phải được đọc linh hoạt và không được xác định khi mở lần đầu.

Chúng ta sẽ tìm hiểu cách thực hiện một cách có kiểm soát:

Sử dụng trình xử lý chờ;

Lập trình cấu hình sự xuất hiện có điều kiện của danh sách động

Giả sử chúng ta có tài liệu "Đặt hàng thông minh" với thuộc tính "Ngày kiểm soát" và loại "Ngày" (thành phần của ngày "Ngày và giờ"):

Và nhật ký tài liệu “SmartOrder” có cột “Ngày kiểm soát” tương ứng với chi tiết này:

Nhiệm vụ của chúng ta là tô màu hồng cho hàng nếu Ngày mục tiêu nhỏ hơn Ngày hiện tại, có tính đến việc ngày hiện tại liên tục thay đổi.

Hãy tạo một biểu mẫu được quản lý:

Bây giờ, khi tạo trên máy chủ, chúng ta sẽ gọi thủ tục tô màu các dòng là “UpdatesDisplayOverdueOnServer”. Và chúng tôi sẽ gọi thủ tục này với tần suất nhất định.

Kiểu dáng có điều kiện của các biểu mẫu được quản lý.

Hầu hết những người đã từng làm việc với hệ thống kiểm soát truy cập và tạo báo cáo về hệ thống kiểm soát truy cập đều biết trực tiếp về thiết kế có điều kiện. Việc thay đổi phông chữ, màu ô hoặc cách trình bày của trường tùy thuộc vào giá trị trong trường khác đã khá phổ biến.

Nhưng chúng ta ít gặp phải thiết kế có điều kiện của các biểu mẫu được kiểm soát hơn. Mặc dù đây là cơ chế không kém phần mạnh mẽ, chức năng và cần thiết.
tính cách anh ta như thế nào? Nhưng mọi thứ đều giống nhau. Dựa trên bất kỳ điều kiện nào, chúng ta có thể định cấu hình chế độ xem hoặc thuộc tính của các trường của thành phần biểu mẫu dạng bảng và chúng sẽ thay đổi ngay lập tức.

Tôi đang nói về trường danh sách động và trường bảng. Ở đây, từ mã, chúng ta có thể truy cập một cột riêng biệt và đặt thuộc tính cho toàn bộ cột cùng một lúc, nhưng chúng ta không thể đặt thuộc tính của một trường riêng lẻ.

Trích dẫn

Quan trọng!!! Nhiều người đấu tranh với điều này và lãng phí thời gian của họ. Kiểu có điều kiện không hoạt động đối với các trường biểu mẫu thông thường (không phải trường bảng).

Điều này có thể được sử dụng ở đâu ngoài các trường tô màu. Vâng, một ví dụ cổ điển là việc trình bày các khung nhìn trong phần dạng bảng. Đối với kế toán, có thể có ba trong số chúng là tiêu chuẩn. Và thường thì họ xếp hàng ở một cánh đồng, cái này ở dưới cái kia. Vì mỗi dòng có thể có tài khoản riêng nên thành phần phân tích có thể khác nhau. Và nói chung, nếu bạn hiển thị 3 phân tích trên mỗi dòng thì sẽ chiếm rất nhiều dung lượng. Tại sao phải làm điều này nếu chúng ta được phép có một subconto ở đâu đó, hoặc hai ở đâu đó.

Đặt thuộc tính biểu mẫu

Hãy xem ví dụ về phần bảng mà chúng tôi đã tạo trong quá trình xử lý.

Hãy tạo một quy trình xử lý trong đó chúng ta sẽ thêm một phần dạng bảng với ba chi tiết Subconto, đồng thời thêm thuộc tính Số lượng Subconto, thuộc tính này sẽ cho biết số lượng các subconto trong dòng.

Thiết lập giao diện có điều kiện của biểu mẫu nằm trong thuộc tính biểu mẫu trên tab Giao diện.

Bây giờ nhiệm vụ của chúng ta là chỉ ra cho chương trình rằng nếu giá trị trong dòng của trường Số lượng Subconto là 1 thì chỉ hiển thị Subconto1, với giá trị là 2: Subconto1 và Subconto2, với giá trị là 3: Subconto1, Subconto2. , Subconto3.

Để thực hiện việc này, hãy sử dụng biểu mẫu cài đặt giao diện có điều kiện.

Trong cột Trường được định dạng, chúng tôi chỉ ra các trường Subconto1, Subconto2, Subconto3. Vì mỗi trường sẽ có thiết kế khác nhau nên chúng ta sẽ tạo 3 dòng.

Hãy để chúng tôi chỉ ra rằng chúng tôi sẽ chính thức hóa thuộc tính khả năng hiển thị.

Chúng tôi cũng sẽ thiết lập một điều kiện để tắt khả năng hiển thị.

Hãy nhìn vào những gì đã xảy ra trong doanh nghiệp. Đồng thời, chúng ta sẽ thêm hàng vào phần bảng và sắp xếp giá trị số lượng subcontos.

Như bạn có thể thấy, số lượng trường khác nhau được hiển thị ở các dòng khác nhau.

Cài đặt mã

Ngoài việc cài đặt bằng các thuộc tính, cài đặt này có thể được thực hiện bằng mã chương trình.
Nếu bạn sử dụng cấu hình được xây dựng trên , nó sẽ trông như thế này (điều này áp dụng cho tất cả các cấu hình tiêu chuẩn):

ElementUO = ConditionalDesign.Elements.Add();
DataCompositionClientServer.AddDesignField(ElementUO.Fields, "TabularPartSubconto2");

GeneralPurposeClientServer.AddLayoutElement(ElementUO.Selection,
"TabularPartQuantitySubconto", DataCompositionComparisonType.Less, 2);

ElementUO.Design.SetParameterValue("Hiển thị", Sai);


Nếu không sử dụng BSP, mã sẽ dài hơn một chút. Tôi sẽ chỉ đưa ra các quy trình tiêu chuẩn từ cùng một BSP.

Hàm AddDesignableField(CollectionofDesignableFields,FieldName) Xuất

ElementField = Bộ sưu tập FormattedFields.Elements.Add();
ItemField.Field = NewDataCompositionField(FieldName);

returnItemField;

Chức năng cuối cùng


Hàm AddLayoutElement(AddArea,
Giá trị tên trường,
Loại so sánh giá trị,
Giá trị RightValue = Không xác định,
Biểu diễn giá trị = Không xác định,
Giá trị sử dụng = Không xác định,
valueDisplayMode = Không xác định,
valueUserSettingsIdentifier = Không xác định) Xuất

Phần tử = AdditionArea.Elements.Add(Type("Phần tử lựa chọn thành phần dữ liệu"));
Item.LeftValue = NewDataCompositionField(FieldName);
Element.ComparisonView = Loại so sánh;

Nếu DisplayMode = Không xác định thì
Element.DisplayMode = ElementDisplayModeDataCompositionSettings.Unavailable;
Nếu không thì
Element.DisplayMode = DisplayMode;
endIf;

Nếu giá trị đúng<>Không xác định
Element.RightValue = RightValue;
endIf;

Nếu đại diện<>Không xác định
Item.View = Xem;
endIf;

Nếu sử dụng<>Không xác định
Item.Use = Sử dụng;
endIf;

// Quan trọng: Phải thực hiện cài đặt ID
// khi kết thúc việc thiết lập phần tử, nếu không nó sẽ bị sao chép
// trong cài đặt người dùng được lấp đầy một phần.
IfUserIdentifierCài đặt<>Không xác định
Element.UserSettingsIdentifier = UserSettingsIdentifier;
ElseIf Element.DisplayMode<>ItemDisplayModeDataLayoutSettings.Unavailable Sau đó
Item.UserSettingIdentifier = Tên trường;
endIf;

Trả lại hàng;

Chúng tôi có một số dạng danh sách, ví dụ: các thành phần kế hoạch thuộc loại đặc điểm "Quyền người dùng" trong phiên bản cấu hình "Quản lý doanh nghiệp sản xuất" 1.3.

Biểu mẫu, như bạn có thể thấy, có thể quản lý được. chúng ta cần thiết kế danh sách sao cho tất cả các hàng của nhóm thành phần được đánh dấu màu xanh lục. Bắt đầu nào!

Ví dụ

Các thành phần của biểu mẫu được quản lý được tạo kiểu bằng cách sử dụng kiểu dáng biểu mẫu có điều kiện:

Để giải quyết vấn đề của chúng ta, hãy thêm một phần tử thiết kế có điều kiện với các cài đặt sau:


Khi bạn mở biểu mẫu lần tiếp theo, các hàng nhóm của sơ đồ loại đặc trưng sẽ được đánh dấu bằng màu xanh lục. Nhưng... điều này không xảy ra!


Thực tế là danh sách các thành phần và nhóm của sơ đồ thuộc các loại đặc trưng được hiển thị trên biểu mẫu bằng cách sử dụng đối tượng biểu mẫu có loại "Danh sách động". Danh sách động tận dụng các khả năng của hệ thống tổng hợp dữ liệu, bao gồm các lựa chọn và định dạng có điều kiện. Cái sau xác định thiết kế cuối cùng của danh sách, bỏ qua các cài đặt của thiết kế có điều kiện của chính biểu mẫu. Hãy thêm các cài đặt hiển thị có điều kiện tương tự cho danh sách động.


Sự khác biệt duy nhất là bạn cần thêm tất cả các trường hiển thị của danh sách vào danh sách các trường sẽ được định dạng mà thiết kế có điều kiện sẽ áp dụng.

Phần kết luận

Tôi thường nghe nói rằng kiểu dáng có điều kiện trên biểu mẫu được quản lý không phải lúc nào cũng hoạt động. Cuối cùng, hóa ra bạn chỉ đang thực hiện cài đặt cho biểu mẫu chứ không phải cho danh sách động.

Tôi hy vọng bài viết này sẽ giúp ai đó tiết kiệm thời gian khi giải quyết vấn đề với định dạng có điều kiện.