Подпись при копировании Е-мейл

Добрый день.
При создании е-мейл у меня в HTMLBody указывается подпись. Подскажите, пожалуйста, где и как нужно прописать, чтобы и при копировании е-мейл активности эта же подпись тоже вставлялась?

Нравится

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

Здравствуйте, Татьяна.

Поищите в исходном коде процесса объекта проверку условия IsCopy.

Найдите скрипт, где осуществляется проверка, и в нем выполняйте заполнение поля HTMLBody копируемой карточки.

Добрый день
А как на языке С# выполнить в IsCopy заполнение поля HTMLBody копируемой карточки? мне ведь нужно чтобы перед копируемым текстом вставлялась подпись. Заранее спасибо

Татьяна, в этом условии уже есть другие примеры.
Посмотрите, пожалуйста, по аналогии.

Добрый день
Искать в процессе Объекта Активность? Или в процессе Страницы карточки e-мейл?

Здравствуйте, Татьяна!

В базовой версии - это метод EnableSendButton в процессе страницы карточки Email.

Если Вы не знаете, где именно искать - легче всего открыть исходный код всей схемы и выполнить поиск по нему.

Добрый день
в IsCopy в EnableSendButton карточки Е-мейл у нас написано:

if (IsCopy) {
var sysSettingsValue = Terrasoft.Core.Configuration.SysSettings.GetValue(UserConnection, "SmtpUserName");
var AuthorId = UserConnection.CurrentUser.ContactId;
var AuthorName = UserConnection.CurrentUser.ContactName;
var startDate = DateTime.Now;
var dataSource = Page.DataSource;
Page.SenderEdit.SetValue(sysSettingsValue);
Page.DataSource.ActiveRow.SetColumnValue("Sender", sysSettingsValue);
dataSource.ActiveRow.SetColumnValue("AuthorId", AuthorId);
dataSource.ActiveRow.SetColumnValue("StartDate", startDate);
dataSource.ActiveRow.SetColumnValue("DueDate", dueDate);
Page.StartDateEdit.SetValue(startDate);
Page.DueDateEdit.SetValue(dueDate);
Page.AuthorEdit.SetValueAndText(AuthorId,AuthorName);
Я не вижу копирования HTMLBody.

Не подскажете, где найти примеры копирования ?

Логика копирования этого поля задана в функции CopyFiltes этой же страницы.
В частности, там есть такое:

if(isChangeHtmlBody && fileList.Count > 0){		
		string columnName = "Body";
		if(activeRow.Schema.Columns.FindByName("HtmlBody") != null){
			columnName = "HtmlBody";
		}
		string messageBody = activeRow.GetTypedColumnValue<string>(activeRow.Schema.Columns.GetByName(columnName));	
		messageBody = messageBody.Replace(srcGuid.ToString(), targetGuid.ToString());
		foreach(var item in fileList){
			messageBody = messageBody.Replace(item.Key.ToString().ToLower(), item.Value.ToString().ToLower());
		}
		var update = new Update(userConnection, activeRow.Schema.Name)
						.Set(columnName, Column.Parameter(messageBody))
						.Where("Id").IsEqual(Column.Parameter(activeRow.PrimaryColumnValue));
		update.Execute();
	}

То есть HtmlBody копируется, если к письму приложены файлы (проверка fileList.Count > 0). Видимо, это сделано, чтобы вместе с вёрсткой не потерять и картинки. Возможно, стоит попробовать убрать эту часть условия, чтобы HtmlBody копировалось в любом случае.

Добрый день. Подскажите, пожалуйста, а как можно добавить текстовую информацию перед копируемой частью?

Видимо, добавить её в переменную messageBody спереди её полученного содержимого.

Добрый день.
Пишу так:
if(isChangeHtmlBody && fileList.Count > 0){
string columnName = "Body";
if(activeRow.Schema.Columns.FindByName("HtmlBody") != null){
columnName = "HtmlBody";
}
//
string messageBody = "Hello";
messageBody = string.Concat(messageBody, activeRow.GetTypedColumnValue(activeRow.Schema.Columns.GetByName(columnName)));

//

//string messageBody = activeRow.GetTypedColumnValue(activeRow.Schema.Columns.GetByName(columnName));

messageBody = messageBody.Replace(srcGuid.ToString(), targetGuid.ToString());
foreach(var item in fileList){
messageBody = messageBody.Replace(item.Key.ToString().ToLower(), item.Value.ToString().ToLower());
}
var update = new Update(userConnection, activeRow.Schema.Name)
.Set(columnName, Column.Parameter(messageBody))
.Where("Id").IsEqual(Column.Parameter(activeRow.PrimaryColumnValue));
update.Execute();

В итоге - опубликовано без ошибок. Но при копировании е-мейл активности - все без изменений, ничего не добавилось. Подскажите, пжста, в чем ошибка?

Татьяна, Вы не поменяли условие, попробуйте убрать «&& fileList.Count > 0»

Добрый день.
Закоментировала. Опубликовано без ошибок, тем не менее, все без изменений. Не подскажете?

//if(isChangeHtmlBody && fileList.Count > 0){
string columnName = "Body";
if(activeRow.Schema.Columns.FindByName("HtmlBody") != null)
{
columnName = "HtmlBody";
}
//
string messageBody = "Hello";
messageBody = string.Concat(messageBody, activeRow.GetTypedColumnValue(activeRow.Schema.Columns.GetByName(columnName)));

//

//string messageBody = activeRow.GetTypedColumnValue(activeRow.Schema.Columns.GetByName(columnName));

messageBody = messageBody.Replace(srcGuid.ToString(), targetGuid.ToString());
foreach(var item in fileList)
{
messageBody = messageBody.Replace(item.Key.ToString().ToLower(), item.Value.ToString().ToLower());
}
var update = new Update(userConnection, activeRow.Schema.Name)
.Set(columnName, Column.Parameter(messageBody))
.Where("Id").IsEqual(Column.Parameter(activeRow.PrimaryColumnValue));
update.Execute();
//}

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

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