Возникла проблемы с передачей параметра из бизнес процесса в шаблон email. Параметр сохраняется в процессе как текст https://prnt.sc/13ikimi. Во время выполнения процесса параметр заполняется текстом и далее используется в письме https://prnt.sc/13ikpvd. Но при отправке письма параметр не подтянулся https://prnt.sc/13ikxuq. Что я делаю не так?)

Нравится

2 комментария

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

Добрый день.

 

Если Вы формируете письмо программно, тогда макросы не будут срабатывать. В этом случае Вам нужно программно считать сохраненное значение параметра бизнес-процесса и подставить его в Ваш шаблон.

 

Макросы срабатывают только в случае использования уже преднастроенных шаблонов в элементе [Отправить email].

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

Добрый день!

 

Пытаюсь создать Лид из коммуникационной панели(email-сообщения).

Создается пустая запись, заполняется только поле "ФИО Контакта" (даже адрес email не заполняется)

 

Вопрос в следующем: Каким образом при создании новой записи можно заполнить необходимые мне поля из email-сообщения (адрес email, источник и т.п.)? 

Изображение удалено.

Нравится

1 комментарий
Лучший ответ

Максим, эта логика реализована в схеме EmailItemSchema пакета UIv2. Там есть функции addEmailRelation и getRelationValuePairs, которые готовят открытия окна и предзаполняют значения полей.

Стандартно эти функции такие:

/**
 * Handles "Add relation" menu item click.
 * @protected
 * @param {String} columnName Connection column name.
 */
addEmailRelation: function(columnName) {
	this.set("EntityRelationColumnName", columnName);
	var moduleStructure = this.Terrasoft.configuration.ModuleStructure;
	var schemaName = this.getSchemaNameByRelationColumnName(columnName);
	var schemaModuleStructure = moduleStructure[schemaName];
	var schemaPages = schemaModuleStructure.pages;
	var cardSchema = schemaModuleStructure.cardSchema;
	var defaultValues = this.getRelationValuePairs(columnName, schemaName);
	if (this.Ext.isArray(schemaPages)) {
		var cardInfo = this.Terrasoft.findWhere(schemaPages, {name: schemaName});
		cardSchema = cardInfo.cardSchema;
		if (schemaModuleStructure.attribute && cardInfo.UId) {
			defaultValues.push({
				name: schemaModuleStructure.attribute,
				value: cardInfo.UId
			});
		}
	}
	var moduleId = "AddEmailRelation_" + cardSchema + this.Terrasoft.generateGUID();
	this.sandbox.subscribe("CardModuleResponse", this.cardModuleResponseHandler, this,
		[moduleId]);
	var openCardConfig = {
		schemaName: cardSchema,
		operation: this.Terrasoft.ConfigurationEnums.CardOperation.ADD,
		moduleId: moduleId,
		defaultValues: defaultValues,
		renderTo: "centerPanel",
		keepAlive: true
	};
	this.openCardInChain(openCardConfig);
},
...
/**
 * Returns default value array for relation entity.
 * @protected
 * @param {String} columnName Connection column name.
 * @param {String} schemaName Connection schema name.
 * @return {Object[]} Default value array for relation entity. Array element contains
 * column name and its value.
 */
getRelationValuePairs: function(columnName, schemaName) {
	var contact;
	var valuePairs = [];
	var entitySchema = this.entitySchema;
	if (entitySchema.name === schemaName) {
		valuePairs.push({
			name: entitySchema.primaryDisplayColumnName,
			value: this.get("MailTitleText")
		});
	}
	if (this.get("Contact")) {
		contact = this.get("Contact");
		if (this.get("Account")) {
			contact.Account = {
				value: this.get("Account").value,
				displayValue: this.get("Account").displayValue
			};
		}
	}
	var account = this.get("Account");
	if (!contact && account) {
		valuePairs.push({
			name: "Account",
			value: this.getEntityDefaultValueColumnValue(schemaName, account)
		});
		return valuePairs;
	}
	if (!contact) {
		contact = this.get("SenderContact");
	}
	if (contact && contact.value) {
		valuePairs.push({
			name: this.getSchemaDefaultValueColumnName("Contact", schemaName),
			value:  this.getEntityDefaultValueColumnValue(schemaName, contact)
		});
		var senderAccount = contact.Account;
		if (senderAccount) {
			valuePairs.push({
				name: this.getSchemaDefaultValueColumnName("Account", schemaName),
				value: this.getEntityDefaultValueColumnValue(schemaName, senderAccount)
			});
		}
	}
	if (columnName === "Contact" && this.isAutoBindingContactEmailNeeded()) {
		this.addSenderInfo(valuePairs);
	}
	return valuePairs;
},

Во второй функции есть специальная логика для полей контактов и контрагентов. Вы можете переопределить в своём пакете и добавить в эту функцию для своего раздела получение и внесение через valuePairs.push ещё нескольких полей.

Максим, эта логика реализована в схеме EmailItemSchema пакета UIv2. Там есть функции addEmailRelation и getRelationValuePairs, которые готовят открытия окна и предзаполняют значения полей.

Стандартно эти функции такие:

/**
 * Handles "Add relation" menu item click.
 * @protected
 * @param {String} columnName Connection column name.
 */
addEmailRelation: function(columnName) {
	this.set("EntityRelationColumnName", columnName);
	var moduleStructure = this.Terrasoft.configuration.ModuleStructure;
	var schemaName = this.getSchemaNameByRelationColumnName(columnName);
	var schemaModuleStructure = moduleStructure[schemaName];
	var schemaPages = schemaModuleStructure.pages;
	var cardSchema = schemaModuleStructure.cardSchema;
	var defaultValues = this.getRelationValuePairs(columnName, schemaName);
	if (this.Ext.isArray(schemaPages)) {
		var cardInfo = this.Terrasoft.findWhere(schemaPages, {name: schemaName});
		cardSchema = cardInfo.cardSchema;
		if (schemaModuleStructure.attribute && cardInfo.UId) {
			defaultValues.push({
				name: schemaModuleStructure.attribute,
				value: cardInfo.UId
			});
		}
	}
	var moduleId = "AddEmailRelation_" + cardSchema + this.Terrasoft.generateGUID();
	this.sandbox.subscribe("CardModuleResponse", this.cardModuleResponseHandler, this,
		[moduleId]);
	var openCardConfig = {
		schemaName: cardSchema,
		operation: this.Terrasoft.ConfigurationEnums.CardOperation.ADD,
		moduleId: moduleId,
		defaultValues: defaultValues,
		renderTo: "centerPanel",
		keepAlive: true
	};
	this.openCardInChain(openCardConfig);
},
...
/**
 * Returns default value array for relation entity.
 * @protected
 * @param {String} columnName Connection column name.
 * @param {String} schemaName Connection schema name.
 * @return {Object[]} Default value array for relation entity. Array element contains
 * column name and its value.
 */
getRelationValuePairs: function(columnName, schemaName) {
	var contact;
	var valuePairs = [];
	var entitySchema = this.entitySchema;
	if (entitySchema.name === schemaName) {
		valuePairs.push({
			name: entitySchema.primaryDisplayColumnName,
			value: this.get("MailTitleText")
		});
	}
	if (this.get("Contact")) {
		contact = this.get("Contact");
		if (this.get("Account")) {
			contact.Account = {
				value: this.get("Account").value,
				displayValue: this.get("Account").displayValue
			};
		}
	}
	var account = this.get("Account");
	if (!contact && account) {
		valuePairs.push({
			name: "Account",
			value: this.getEntityDefaultValueColumnValue(schemaName, account)
		});
		return valuePairs;
	}
	if (!contact) {
		contact = this.get("SenderContact");
	}
	if (contact && contact.value) {
		valuePairs.push({
			name: this.getSchemaDefaultValueColumnName("Contact", schemaName),
			value:  this.getEntityDefaultValueColumnValue(schemaName, contact)
		});
		var senderAccount = contact.Account;
		if (senderAccount) {
			valuePairs.push({
				name: this.getSchemaDefaultValueColumnName("Account", schemaName),
				value: this.getEntityDefaultValueColumnValue(schemaName, senderAccount)
			});
		}
	}
	if (columnName === "Contact" && this.isAutoBindingContactEmailNeeded()) {
		this.addSenderInfo(valuePairs);
	}
	return valuePairs;
},

Во второй функции есть специальная логика для полей контактов и контрагентов. Вы можете переопределить в своём пакете и добавить в эту функцию для своего раздела получение и внесение через valuePairs.push ещё нескольких полей.

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