Добрый день.
В E-mail активностях заложена константа - общая подпись службы технической поддержки:
Activity:
Вопрос: подскажите, пожалуйста, как перед этой общей подписью указать исполнителя, который является текущим пользователем системы (т.е. того, что создает эту е-мейл активность) ?
Нравится
Здравствуйте, Татьяна!
Как вариант, Вы можете реализовать что-то типа макросов для этой цели. То есть, на уровне объекта Вы вставляете в значение тела по-умолчанию "[#CurrentUserName#]", а на странице E-mail на PageLoadComplete заменяете этот макрос на нужное значение с помощью String.Replace.
Татьяна, уберите кавычки, чтобы было так:
Дополнительно обращаю Ваше внимание на то, что этого недостаточно для того, чтобы по умолчанию подставлялось имя текущего пользователя. Вам нужно будет еще организовать обработку этого макроса.
Здравствуйте, Татьяна!
Guid contactId = UserConnection.CurrentUser.ContactId; //id контакта текущего пользователя string contactName = UserConnection.CurrentUser.ContactName; //имя контакта текущего пользователя
Добрый день!
Первый параметр должен быть строкой, то есть:
String.Replace("[#CurrentUserName#]", contactName);
Добрый день
На уровне объекта Активность вставила в значение НТМЛ-тела контанту по-умолчанию :[#CurrentUserName#],
В карточке е-мейл в PageLoadCompleteAfterParentScript написала:
Guid contactId = UserConnection.CurrentUser.ContactId; //id контакта текущего пользователя
string contactName = UserConnection.CurrentUser.ContactName; //имя контакта текущего пользователя
String.Replace("[#CurrentUserName#]", contactName);
Здравствуйте, Татьяна!
Как написано в сообщении об ошибке, String.Replace - нестатический метод, поэтому его вызов должен быть связан с экземпляром класса String. То есть,
string s = "my string"; s = s.Replace("my", "your");
Применительно к данной ситуации можно попробовать так:
string s = Page.BodyEdit.Text; Page.BodyEdit.Text = string.Empty; s = s.Replace("[#CurrentUserName#]", contactName); Page.BodyEdit.InsertText(s);
Добрый день
В константе HTMLBody объекта Активность написала [#CurrentUserName#].
В процессе Карточки Е-мейл в PageLoadCompleteAfterParentScript написала:
Guid contactId = UserConnection.CurrentUser.ContactId; //id контакта текущего пользователя
string contactName = UserConnection.CurrentUser.ContactName; //имя контакта текущего пользователя
string s = Page.BodyEdit.Text;
Page.BodyEdit.Text = string.Empty;
s = s.Replace("[#CurrentUserName#]", contactName);
Page.BodyEdit.InsertText(s);
Опубликовалось без ошибок. Создаю новую е-мейл - ничего не изменилось, в теле письма выводится [#CurrentUserName#].
Точно нужно прописывать это в PageLoadCompleteAfterParentScript ?
Добрый день, Татьяна!
Прописывать необходимо в обработчике события PageLoadComplete, например, в скрипт-таске EnableSendButton. Рабочий вариант:
string contactName = UserConnection.CurrentUser.ContactName; string s = Page.DataSource.ActiveRow.GetTypedColumnValue<string>("HtmlBody"); s = s.Replace("[#CurrentUserName#]", contactName); Page.DataSource.ActiveRow.SetColumnValue("HtmlBody", s); Page.BodyEdit.Text = s;
С уважением,
Великоиваненко Вадим
Добрый день. Хочу подставить должность текущего пользователя в подписи Е-мейл, для этого:
1) на уровне объекта Активность создала константу [#DolUserName#].
2) В процессе Карточки Е-мейл в скрипт-таске EnableSendButton написала:
string contactdol = UserConnection.CurrentUser.ContactJobTitle;
string d = Page.DataSource.ActiveRow.GetTypedColumnValue("HtmlBody");
d = s.Replace("[#DolUserName#]", contactdol);
Page.DataSource.ActiveRow.SetColumnValue("HtmlBody", d);
Page.BodyEdit.Text = d;
При компиляции появилась ошибка:
Подскажите, пжста, как избежать этой ошибки?
У UserConnection.CurrentUser нет такого свойства ContactJobTitle.
Чтобы вычислить должность текущего пользователя, считайте его ContactId:
Guid contactId = UserConnection.CurrentUser.ContactId
а затем при помощи функции вычитайте значение этого поля из контакта:
String contactdol = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue<String>(UserConnection, "Contact", "JobTitle", ContactId;
Добрый день
В процессе Карточки Е-мейл в скрипт-таске EnableSendButton написала:
Guid contactId = UserConnection.CurrentUser.ContactId;
String contactdol = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "Contact", "JobTitle", ContactId);
string d = Page.DataSource.ActiveRow.GetTypedColumnValue("HtmlBody");
d = s.Replace("[#DolUserName#]", contactdol);
Page.DataSource.ActiveRow.SetColumnValue("HtmlBody", d);
Page.BodyEdit.Text = d;
ContactId в одном месте с большой буквы, а в другом — с маленькой.
Добрый день. Таким же образом я хочу указать в подписи эл.адрес текущего пользователя:
Guid ContId = UserConnection.CurrentUser.ContactId;
string contactmail = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "Contact", "Email", ContId);
string m = Page.DataSource.ActiveRow.GetTypedColumnValue("HtmlBody");
m = s.Replace("[#MailUserName#]", contactmail);
Page.DataSource.ActiveRow.SetColumnValue("HtmlBody", m);
Page.BodyEdit.Text = m;
В итоге: у меня компилируется без ошибок. Но в самой подписи не происходит замена [#DolUserName#] на должность, а вместо [#MailUserName#] выводится эл.адрес пользователя. Если я закомментирую вышенаписанное , то все ок - вместо [#DolUserName#] выводится должность пользователя.
В чем моя ошибка, подскажите, пжста. Заранее спасибо
В приведенном фрагменте кода нет заполнения должности. Вероятно, в полном коде Вы не заменяете последовательно сначала один макрос и потом второй, а оба раза берёте начальный текст с макросами и в результате сохраняете только вторую замену.
Полный текст:
В процессе Карточки Е-мейл в скрипт-таске EnableSendButton написала:
Guid СontactId = UserConnection.CurrentUser.ContactId;
String contactdol = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "Contact", "JobTitle", ContactId);
string d = Page.DataSource.ActiveRow.GetTypedColumnValue("HtmlBody");
d = s.Replace("[#DolUserName#]", contactdol);
Page.DataSource.ActiveRow.SetColumnValue("HtmlBody", d);
Page.BodyEdit.Text = d;
Guid ContId = UserConnection.CurrentUser.ContactId;
string contactmail = Terrasoft.Configuration.CommonUtilities.GetEntityTypedColumnValue(UserConnection, "Contact", "Email", ContId);
string m = Page.DataSource.ActiveRow.GetTypedColumnValue("HtmlBody");
m = s.Replace("[#MailUserName#]", contactmail);
Page.DataSource.ActiveRow.SetColumnValue("HtmlBody", m);
Page.BodyEdit.Text = m;
В итоге: у меня компилируется без ошибок. Но в самой подписи не происходит замена [#DolUserName#] на должность, а вместо [#MailUserName#] выводится эл.адрес пользователя. Если я закомментирую вышенаписанное , то все ок - вместо [#DolUserName#] выводится должность пользователя.
В чем моя ошибка, подскажите, пжста. Заранее спасибо
Не записывайте и считывайте 2 раза, а считайте, вычислите d, затем m на основе d и запишите.
d = s.Replace("[#DolUserName#]", contactdol); m = d.Replace("[#MailUserName#]", contactmail);