Вопрос

Получить данные лида, привязанного к активности

Добрый день.

Как мне из схемы конфигурации ActivityMiniPage получить данные привязанного лида ?

При наведении на активность в боковой панели вызываю функцию getEmail. В ней пытаюсь получить сначала id лида, потом по этому id получить объект из БД. Как это правильно сделать?

    

getEmail: function() {
     var id = ??;
     var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
            rootSchemaName: "Lead"
         });
     esq.addColumn("Id");
     esq.addColumn("Email");
     esq.getEntity(id, function(result) {
         this.console.log(result.entity.get("Email"));
     }, this);

 

Нравится

9 комментариев

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

Так. стоп. Т.е вы наводите на активность, появляется миникаточка, и тут где-то в недрах комм. панели происходит вызов функции? Просто я немного не понимаю скоуп вызова метода.

Если он всё-таки вызывается в миникарточке, то

var id = this.get("Lead") ? this.get("Lead").value : null;

Если в другой схеме, то тут надо реализовывать логику через сообщения

 

я пробовала уже так. постоянно null, даже когда лид привязан. функцию вызываю тут: 

{
"operation": "insert",
"name": "ContactEmailButton",
"parentName": "ActivityGeneralInfoContainer",
"propertyName": "items",
"values": {
			"itemType": Terrasoft.ViewItemType.LABEL,
		    "caption": {"bindTo": "getEmail"},
 
	},
"visible": {
			"bindTo": "isIconVisible"
    }
}

 

>Т.е вы наводите на активность, появляется миникаточка, и тут где-то в недрах комм. панели происходит вызов функции

да

Ужас какой smiley

1) ActivityGeneralInfoContainer, есть в ActivityMiniPage. Всё-таки туда вы добали esq, а не в комм.панель. 

2) "caption": {"bindTo": "getEmail"}. Не сработает. Кепшн биндится на статичную переменную, а не асинхронную функцию.

Попробуйте добавить аттрибут,  тип текст. В diff кепшн биндите на этот аттрибут, а на onEntityInitialized запускайте свою функцию (там лид скорее всего будет известен) и после того как вытащите из лида email перенесите его в аттрибут 

или ещё легче.

это в аттрибуты

"Lead": {
	"lookupListConfig": {
		"columns": ["Email"]
	}
},
"MyLabelCaption": {
	dataValueType: 1,
	value: ""
}

это в методы

onEntityInitialized: function(){
	this.callParent(arguments);
	this.set("MyLabelCaption", this.get("Lead") ? this.get("Lead").Email : "лид не найден");
}

это в дифф

{
    "operation": "insert",
    "name": "ContactEmailButton",
    "parentName": "ActivityGeneralInfoContainer",
    "propertyName": "items",
    "values": {
			"itemType": Terrasoft.ViewItemType.LABEL,
		    "caption": {"bindTo": "MyLabelCaption"},
            "visible": {"bindTo": "isIconVisible"}
    }
}

 

спасибо огромное

а не подскажите еще, пожалуйста, как мне этот имейл сделать в таком вот виде  http://prntscr.com/gwf5yb ? или хотя бы как обработать клик по элементу ?

это кнопка, с пустым кэпшеном, стиль - "transparent", наложена иконка с изображением, ну и с каким-то обработчиком.

при нажатии на имейл надо чтобы открывало окно с отправкой имейла. делаю вот так : 

    onTypeIconButtonClick: function() {
		var value = this.get("Lead").Email;
		if (value) {
			var path = this.getLinkUrl(value);
			this.console.log(path);
			if (path) {
				this.onLinkClick(path.url)
			  }
			}
		},
		getLinkUrl: function(value) {
		    if (!value || Ext.isEmpty(value)) {
			    return {};
		    }
		    var emailUrl = EmailHelper.getEmailUrl(value);
		    if (Ext.isEmpty(emailUrl)) {
					return {};
		    } 
		    return {
			    url: emailUrl,
			    caption: value
		    };
		    return {};
	    },
		onLinkClick: function(path) {
			window.location.href = path;
		},

в консоле: http://prntscr.com/gwhngk

и на страницу с отправкой имейла не переходит

попробуйте

onTypeIconButtonClick: function() {
	var value = this.get("Lead").Email;
	if (value) {
		this.openCard("EmailPageV2", "add", Terrasoft.generateGUID());
	}
}

 

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