Публикация

Передать Id выбранной записи детали на страницу редактирования

Вопрос

Подскажите как реализовать следующую задачу: есть преднастроенная страница с добавленной на нее деталью Контактов (Физ. лиц). Необходимо иметь возможность выделить конкретную запись грида детали и получить ее ID в основную страницу. Как это лучше реализовать?

Ответ

Для получения идентификатора текущей записи детали в родительской карточке редактирования используя механизм подписки/публикации сообщений между соответствующими модулями - алгоритм будет примерно следующий:



Для начала необходимо в коде карточки и детали добавить адресное сообщение с одним и тем же названием, но в карточке с типом "Подписка", а в детали - с типом "Публикация". Например, для карточки редактирования:

 

messages: {
    "GetContactDetailActiveRecordId": {
        mode: Terrasoft.MessageMode.PTP,
        direction: Terrasoft.MessageDirectionType.SUBSCRIBE
    }
}

Для детали точно так же, только в свойстве direction необходимо указать

Terrasoft.MessageDirectionType.PUBLISH

Далее при инициализации карточки редактирования (метод init) нужно подписаться на это сообщение, а в функции обратного вызова получить значение из детали и сохранить его в атрибут модели карточки:

 

init: function() {
    this.callParent(arguments);
    this.sandbox.subscribe("GetContactDetailActiveRecordId", function(recordId) {
        this.set("ContactDetailActiveRecordId", recordId);
    }, this, [contactDetailSandboxId]);
}

Значение contactDetailSandboxId Вам необходимо определить самостоятельно (оно формируется в зависимости от названия детали). В коде детали оно хранится в свойстве this.sandbox.id.



Наконец, в коде детали, при обработке нажатия на кнопку необходимо просто опубликовать сообщение, передав значение текущей записи:

 

onButtonClick: function() {
    this.sandbox.publish("GetContactDetailActiveRecordId", this.get("ActiveRow"), [this.sandbox.id]);
}

 

Нравится

Поделиться

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