How-to: Documents with lines
Example 1
Task
We have the orders and their specification lines.
CLASS Book 'Book';
name 'Name' = DATA ISTRING[100] (Book) IN id;
CLASS Order 'Order';
date 'Date' = DATA DATE (Order);
number 'Number' = DATA STRING[10] (Order);
CLASS OrderDetail 'Order line';
order 'Order' = DATA Order (OrderDetail) NONULL DELETE;
book 'Book' = DATA Book (OrderDetail) NONULL;
nameBook 'Book' (OrderDetail d) = name(book(d));
quantity 'Quantity' = DATA INTEGER (OrderDetail);
price 'Price' = DATA NUMERIC[14,2] (OrderDetail);
We need to create a form with a list of orders where the user can add, edit or delete them.
Solution
FORM order 'Order'
    OBJECTS o = Order PANEL
    PROPERTIES(o) date, number
    OBJECTS d = OrderDetail
    PROPERTIES(d) nameBook, quantity, price, NEW, DELETE
    FILTERS order(d) == o
    EDIT Order OBJECT o
;
FORM orders 'Orders'
    OBJECTS o = Order
    PROPERTIES(o) READONLY date, number
    PROPERTIES(o) NEWSESSION NEW, EDIT, DELETE
;
NAVIGATOR {
    NEW orders;
}
We do not add a link to the order for the line object on the order form, since when adding the object using NEW, the system will automatically set up this link based on the FILTERS block.
Example 2
Task
Similar to Example 1.
We need to add order specification to the order list form.
Solution
EXTEND FORM orders
    OBJECTS d = OrderDetail
    PROPERTIES(d) READONLY nameBook, quantity, price
    FILTERS order(d) == o
;
It may be convenient that the user can view the order contents without editing it.