4.3.5. Использование независимых полей вместо FieldGroup
Использование компонента FieldGroup в редакторе сущности не является обязательным. Мы можете легко заменить FieldGroup на отдельные поля, чтобы кастомизировать стандартную разметку экрана.
Ниже приведён пример такого экрана для редактирования сущности Order.
XML-дескриптор экрана order-edit.xml содержит основной источник данных orderDs и вложенный в него orderLinesDs для строк заказа, а также независимый источник данных customersDs, чтобы загружать список покупателей для выбора из выпадающего списка lookupField:
<dsContext>
    <datasource id="orderDs"
                class="com.company.sample.entity.Order"
                view="order-edit">
        <collectionDatasource id="orderLinesDs"
                              property="orderLines"/>
    </datasource>
    <collectionDatasource id="customersDs"
                          class="com.company.sample.entity.Customer"
                          view="_minimal">
        <query>
            <![CDATA[select e from sample$Customer e]]>
        </query>
    </collectionDatasource>
</dsContext>Теперь достаточно создать поля для всех атрибутов сущности Order, указать для каждого поля соответствующий источник данных и нужный атрибут сущности, используя XML-атрибут property:
-  поле номера заказа: <textField id="numField" caption="msg://order.num" datasource="orderDs" property="num"/>
-  поле выбора покупателя: <lookupField id="customerField" caption="msg://order.customer" datasource="orderDs" property="customer" optionsDatasource="customersDs"/>
-  выбор даты заказа: <datePicker id="datePicker" caption="msg://order.date" datasource="orderDs" property="date"/>
-  таблица строк заказа: <table id="orderLinesTable" height="300px" width="100%"> <rows datasource="orderLinesDs"/> . . . </table>
Такой подход к созданию экранов предоставляет большую гибкость в использовании визуальных компонентов и их расположении на экране.