Публикация

Как отобразить поля при смене состояния поля

Вопрос

Каким образом возможно создавать связанные поля?

Например при изменении состояния документа должны появляться дополнительные поля.

Ответ

В bpm'online нет понятия связанных полей. Описанную Вами задачу возможно решить с использованием свойства visible для полей. Данное свойство может быть привязано как к булевому атрибуту, так и к методу, возвращающему булевый тип. Свойство visible проверяется как при загрузке карточки, так и при любом изменении модели.

Пример скрытия справочного поля по значению текстового поля:

1) Объявление полей в секции diff:

{
    "operation": "insert",
    "name": "myEnum",
    "values": {
        visible : {
                bindTo: "isEnumVisble"
        },
        "caption": "myEnum",
        "dataValueType": 11,
        "bindTo": "myEnum",
        "layout": {
            "colSpan": 12,
            "rowSpan": 1,
            "column": 0,
            "row": 3
        },
        "controlConfig": {
            "className": "Terrasoft.ComboBoxEdit",
            "list": {
                "bindTo": "myList"
            },
            "change": {
                "bindTo": "onMyValueChange"
            },
            "prepareList": {
                "bindTo": "prepareMyList"
            }
        }
    },
    "parentName": "ContactGeneralInfoBlock",
    "propertyName": "items",
    "index": 5
},
{
    "operation": "insert",
    "name": "UsrSTRING",
    "values": {
        "layout": {
            "colSpan": 12,
            "rowSpan": 1,
            "column": 0,
            "row": 2,
            "layoutName": "ContactGeneralInfoBlock"
        },
        "labelConfig": {},
        "enabled": true,
        "bindTo": "UsrSTRING"
    },
    "parentName": "ContactGeneralInfoBlock",
    "propertyName": "items",
    "index": 6
},

в данном коде интерес представляет только фрагмент:

visible : {
    bindTo: "isEnumVisble"
},

2) Сам метод:

isEnumVisble: function() {
    return this.get("UsrSTRING") === "Hello";
},

В данном примере поле "myEnum" будет отображено только если в поле "UsrSTRING" добавлен текст Hello c последующей сменой фокуса. Связывание с атрибутом происходит таким же образом, только в bindTo указывается не имя метода, а имя атрибута.

Для того, чтобы не привязывать видимость каждого поля к одному и тому же методу, Вы можете добавить все поля в контейнер и установить свойство visble для контейнера.

Нравится

Поделиться

0 комментариев
Показать все комментарии