Добрый день!

Подскажите пожалуйста, можно ли в систему загрузить с помощью импорта из Excel 2 и более e-mail адресов в карточку Контакта?

Есть база Контактов, у которых помимо основного e-mail, указано дополнительно ещё несколько e-mail. Есть жизненная необходимость проимпортировать записи с помощью Excel, чтобы в карточке Контакта поле E-mail заполнилось автоматически с учетом нескольких электронных адресов.

Если ли какой-либо механизм или метод?

На данный момент несколько электронных адресов в карточку Контакта не получается загрузить импортом:

Нравится

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

Максимова Екатерина,

Так как в карточке контакта только 1 поле E-mail, то добавить несколько e-mail в карточку контакта можно несколькими способами.

1. В карточке контакта добавить нужное количество полей email и в каждое из этих полей проимпортировать нужное значение.

2. Вариант, который предложил Владимир, создать ещё один файл Excel и внести в него информацию по всем e-mail контактов и проимпортировать данную информацию в таблицу со средствами связи контакта.

Например, у контакт1 есть e-mail1, email2 и email3.

Тогда Ваша таблица будет выглядеть так:

Контакт - Тип связи - Номер

контакт1 - Email - e-mail1

контакт1 - Email - e-mail2

контакт1 - Email - e-mail3

Создать отдельный Excel файл с колонками Контакт - Тип связи - Номер (там несколько полей под Номер) и заимпортировать в объект Средства связи контакта

Владимир Соколов,

Владимир, нужно проимпортировать именно несколько 

 E-mail

Максимова Екатерина,

Не совсем понимаю, в чем именно заключается проблема?

Опишите подробнее.

Алла Савельева,

У 1 Контакта есть несколько электронных адресов, каким образом можно загрузить их импортом?

Сейчас в систему можно загрузить импортом только 1 электронный адрес, если в дальнейшем мы загружаем дополнительный эл.адрес, система обновляет значение эл.адреса и затирает. Нам же нужно чтобы в системе существовало несколько эл.адресов у 1 контакта. Как можно загрузить в систему несколько эл. адресов принадлежащих 1 контакту, чтобы они оба сохранились в карточке Контакта?

Максимова Екатерина,

Так как в карточке контакта только 1 поле E-mail, то добавить несколько e-mail в карточку контакта можно несколькими способами.

1. В карточке контакта добавить нужное количество полей email и в каждое из этих полей проимпортировать нужное значение.

2. Вариант, который предложил Владимир, создать ещё один файл Excel и внести в него информацию по всем e-mail контактов и проимпортировать данную информацию в таблицу со средствами связи контакта.

Например, у контакт1 есть e-mail1, email2 и email3.

Тогда Ваша таблица будет выглядеть так:

Контакт - Тип связи - Номер

контакт1 - Email - e-mail1

контакт1 - Email - e-mail2

контакт1 - Email - e-mail3

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

Добрый день.
Подскажите, пожалуйста, как реализуется прикрепление файлов активности в элемент 'Отправка e-mail' в БП? 
Желательно поэтапно.
Версия 7.7.

Имеется такой БП, который отправляет письма со страницы активности, при нажатии на соответствующую кнопку.

Что нужно сделать, чтобы прикрепить файлы активности в отправляемые письма?

Нравится

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

Добрый день.

На коммьюнити данная задача уже неоднократно обсуждалась, например, посмотрите этот пост.

Единственное, версия у Вас уж очень древняя. Возможно, что в ней могут быть нюансы, но принцип, думаю, тот же.

Рекомендую задуматься над обновлением laugh

Добрый день.

На коммьюнити данная задача уже неоднократно обсуждалась, например, посмотрите этот пост.

Единственное, версия у Вас уж очень древняя. Возможно, что в ней могут быть нюансы, но принцип, думаю, тот же.

Рекомендую задуматься над обновлением laugh

Алла Савельева,

Спасибо за ответ.
А без создания активности есть другие варианты?

stique,

Можно и без создания активности, но тогда история отправки e-mail храниться не будет.

Посмотрите, например, следующий пост.

Алла Савельева,

Я правильно понимаю, в БП нужно добавить элемент "Задание-сценарий" и прописать соответствующую реализацию из поста, который Вы приложили?)

stique,

Почти. В посте приведен пример метода отправки, Вам его нужно будет добавить в методы процесса, а вызывать с нужными параметрами из элемента 'Задание-сценарий'.

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

Добрый день.

Из продаж и из активности отправляют письма. Привязка к продаже/активности у них по умолчанию есть. Но когда получаешь ответ на такое письмо, привязывать его к соответствующей продаже/активности приходится вручную.

Как правильно настроить правило, чтобы ответы привязывались к той продаже/активности к которой привязано изначальное письмо?

Нравится

1 комментарий

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

ПРАВИЛА АВТОМАТИЧЕСКОЙ ПРИВЯЗКИ ПИСЕМ

Для уменьшения времени на ручную обработку и привязку писем к продажам, заказам или лидам будут добавлены преднастроенные правила. Например, если письмо было получено от клиента, по которому есть открытая продажа, и текущий пользователь входит в команду продажи, то письмо будет связано с продажей. Такие правила будут реализованы для разделов [Продажи], [Заказы], [Лиды], [Обращения].

Кроме того, будет упрощена пользовательская настройка новых правил, появится возможность включать/отключать определенные правила для отдельного почтового ящика.

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

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

Коллеги, добрый день. 

 

Столкнулся с проблемой - не могу найти параметр отвечающий за доступ к сообщениям в обращениях. Сотрудники в обращениях видят только свои сообщения. 

Нравится

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

Добрый день!
Скорее всего в разделе прав доступа у вас включено администрирование по записям. Подробнее тут

 

Этот параметр по операциям администрируется, вроде. Возможно, где-то в режиме администратора есть настройка? 

Нашёл вот такую статью, но решение не помогает.

https://community.terrasoft.ru/articles/cto-delat-esli-cast-menedzerov-perestala-videt-soobsenia-drugih-menedzerov

Sunrise challenge,
По умолчанию все пользователи видят все сообщения. Ограничения накладываются на правах объектов. Это можно увидеть, взяв чистую демо версию Service Enterprice.
Если на вашей системе это не так, советую обратиться в тех поддержку, т.к. это коробочный функционал

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

Проблема исчезла после перезагрузки инфраструктуры, при этом точно не выявлена взаимосвязь между возникшей проблемой и сервисами компании, оказавшими столь странное влияние на ИС. 

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

Добрый день.

Произошел сбой при отправке e-mail. В результате чего на контрагенте осталась висеть задача http://prntscr.com/jaufow .

Но при попытке её завершить попадаю в актиность e-mail, в которой отсутствую кнопки отправить, завершить или отменит. http://prntscr.com/jaugxs

Подскажите, пожалуйста, как снять или завершить данную активность (ни в черновиках ни в исходящих это письмо не висит).

Нравится

1 комментарий

Здравствуйте, Станислав!

В случае если тип данной активности "Email"  и оно было не отправлено, то письмо должно отображаться в черновиках(проверьте так же обработанные и не обработанные черновики).

В случае, если не нашли там данного письма, рекомендуем обратиться в службу технической поддержки.

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

Добрый день!

Не получается запустить процесс при получении письма по существующему инциденту.

При получении письма по инциденту запускается процесс «Incoming email registration process».
Если создается новый инцидент, то срабатывает сигнал на добавление активности с заполненным полем Case.
Однако если письмо привязывается к существующему инциденту, то сигнал на изменение поля Case в активности не срабатывает.
В самом процессе происходит вызов функции:

        var helper = ClassFactory.GetIncidentRegistrationFromEmailHelper>(
                new ConstructorArgument("userConnection", userConnection));
        helper.RegisterIncident(activityId);

В классе IncidentRegistrationFromEmailHelper одинаковое действие для новых и существующих инцидентов:

public virtual void RegisterCase(Entity emailEntity) {
var email = new Email(this, emailEntity);
        if (email.IsJunk && !CreateCasesFromJunkEmails) {
                return;
        }
        Entity caseEntity = GetCase(email);
        if (caseEntity == null) {
                caseEntity = CreateNewCaseByEmail(email);
                var copyEntityRightsParams = new SysEntityRightsHelper.CopyEntityRightsParams(emailEntity.SchemaName,
                emailEntity.PrimaryColumnValue, caseEntity.SchemaName, caseEntity.PrimaryColumnValue);
SysEntityRightsHelper.CopyEntityAdministrateByRecordsRights(UserConnection, copyEntityRightsParams);
        }
        emailEntity.SetColumnValue("CaseId", caseEntity.GetTypedColumnValueGuid>("Id"));
        emailEntity.SetColumnValue("IsNeedProcess", false);
        emailEntity.Save();
}

Если же письмо вручную привязать к инциденту, то сигнал ожидаемо срабатывает нормально.

В чем может быть причина такого поведения и как вызвать свой процесс при получении письма по существующему инциденту?

test process

Нравится

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

Добрый день, Владимир!
Вы можете выполнить настройку стартовых сигналов процесса, как это сделано в базовом процессе "Запуск процесса Переоткрытие обращения и отправка email сообщения ответственному о новом комментарии" в версии продукта 7.10.1

Причина указанного Вами поведения в том, что в новых версиях продукта могут уже создаваться активности со связкой с обращением, то есть "Изменение записи" не произойдет.

Вот пример, как можно поступить (Во вложении).

Оптимальный Вариант - это просмотреть вживую, для этого Вы можете очень быстро получить триал для тестирования https://www.terrasoft.ru/trial/bpmonline

Добрый день, Михаил!

"Михайленко Михаил" написал:Причина указанного Вами поведения в том, что в новых версиях продукта могут уже создаваться активности со связкой с обращением, то есть "Изменение записи" не произойдет.

Да, в моем рабочем процессе есть обработка обоих сигналов. И на добавление записи срабатывает, а на изменение - нет.
А в случае связи письма с существующим обращением не приходит сигнал о добавлении записи с заполненным Case, но и не приходит сигнал о заполнении поля Case.

Кстати, проверил - процесс Run process: Reopen case and notify assignee on receiving an answer regarding the case тоже иногда (пока не обнаружили системности) не запускается в этих случаях.
Я проверю еще на чистой триальной версии, но есть подозрение, что AutoEmailRelation может заполнять поле Case "по-тихому"

Пока выглядит так, что когда срабатывает правило связывания, то происходит установка поля Case и при этом сохранении события отключаются, потому и не стартует процесс.
Как это обойти?

public void ProceedRelation(Entity entity) {
			IEnumerable<IRuleRelationModel> rulesForEntity = GetRulesForEntity(entity.Schema.UId);
			bool isContactSearchSuccessfull = false;
			bool isOtherRelation = false;
			foreach (IRuleRelationModel rule in rulesForEntity) {
				if (GetCanRunRule(rule, isContactSearchSuccessfull)) {
					Guid columnUId = rule.EntitySchemaColumnUId;
					string columnName = entity.Schema.Columns.GetByUId(columnUId).Name;
					string columnValue = entity.GetTypedColumnValue<string>(columnName);
					MatchCollection matches = rule.GetMatches(columnValue);
					if (matches.Count > 0) {
						IEnumerable<Pair> extendedRelations = rule.GetEntityExtendedRelations(matches, _userConnection);
						if(extendedRelations.Count() > 0) {
							foreach(Pair relationValue in extendedRelations) {
								var relationColumn = entity.Schema.Columns.GetByUId((Guid)relationValue.First);
								Guid relationColumnValue = entity.GetTypedColumnValue<Guid>(relationColumn);
								if (relationColumnValue == Guid.Empty) {
									entity.SetColumnValue(relationColumn, (Guid)relationValue.Second);
									TryAutoCompleteContactOrAccount(entity, relationColumn, (Guid)relationValue.Second);
									if (rule.EntitySchemaSearchUId == AutoEmailRelationConst.ContactCommunicationSchemaUId) {
										isContactSearchSuccessfull = true;
									}
									if (rule.EntitySchemaSearchUId != AutoEmailRelationConst.AccountCommunicationSchemaUId &&
											rule.EntitySchemaSearchUId != AutoEmailRelationConst.ContactCommunicationSchemaUId) {
										isOtherRelation = true;
									}
								}
							}
							entity.Save(false);
						}
					}
				}
			}
			SetEntityProcessed(entity, isOtherRelation);
 
		}

Так же протестировали на другой сущности Problems (на которой не было доработок) – аналогичная ситуация. Когда происходит автоматическое связывание, не стартует процесс на добавление/изменение записи.

Добрый день, Владимир!
На сколько я понял симптомы описанной Вами проблемы, то данное исправление мы делали в версии продукта 7.10.1.

На процессе "Регистрация обращения по входящему письму" в методах данного процесса необходимо изменить код на указанный во вложении (можно выполнить изменение в замещенном процессе, базовый исправиться во время обновления). Это должно решить проблему срабатывания привязки по сигналам.

Спасибо, Михаил.

Мне поддержка также посоветовала запускать процесс по добавлению записи в Email Message.
Это помогло. Сейчас решим сопутствующие вопросы, и я опишу здесь, как в итоге решили.

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

Добрый день!

Столкнулся с такой проблемой: пытаюсь отправить письмо из бизнес процесса, а получаю ошибку.
Ошибка следующая:
Terrasoft.Mail.Sender.EmailException: Плохие данные.
---> System.Security.Cryptography.CryptographicException: Плохие данные.

в System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
в System.Security.Cryptography.Utils._DecryptData(SafeKeyHandle hKey, Byte[] data, Int32 ib, Int32 cb, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode PaddingMode, Boolean fDone)
в System.Security.Cryptography.CryptoAPITransform.TransformFinalBlock(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount)
в System.Security.Cryptography.CryptoStream.FlushFinalBlock()
в System.Security.Cryptography.CryptoStream.Dispose(Boolean disposing)
в System.IO.Stream.Close()
в Terrasoft.Core.SecureTextDataValueType.GetValueForLoad(UserConnection userConnection, Object value)
в Terrasoft.Core.Entities.EntityColumnValue.LoadValue(Object value)
в Terrasoft.Core.Entities.EntityColumnValueCollection.ForceLoadColumnValue(String name, Object value)
в Terrasoft.Core.Entities.Entity.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap)
в Terrasoft.Core.Entities.EntityCollection.LoadShallow(IDataReader dataReader, Dictionary`2 columnMap, Boolean needClear)
в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntitySchemaEntityCollection(UserConnection userConnection, IDataReader dataReader)
в Terrasoft.Core.Entities.EntitySchemaQuery.GetEntityCollection(UserConnection userConnection)
в Terrasoft.Mail.SmtpClient.CreateMailCredentialByAddress(String address, Boolean ignoreRights)
в Terrasoft.Mail.SmtpClient.CreateSmtp(String address, Boolean ignoreRights)
в Terrasoft.Mail.SmtpClient.Send(EmailMessage emailMessage, Boolean ignoreRights)
--- Конец трассировки внутреннего стека исключений ---
в Terrasoft.Mail.SmtpClient.Send(EmailMessage emailMessage, Boolean ignoreRights)
в Terrasoft.Core.Process.Configuration.AutoEmailUserTaskSender.Execute(IEmailUserTaskMessageProvider messageProvider, ProcessExecutingContext context)
в Terrasoft.Core.Process.Configuration.EmailTemplateUserTask.InternalExecute(ProcessExecutingContext context)
в Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context)

При разборе полётов определил что исключение вываливается в методе CreateMailCredentialByAddress класса SmtpClient, строка mailboxESQ.GetEntityCollection(_userConnection);

private MailCredentials CreateMailCredentialByAddress(string address, bool ignoreRights = false) {
var mailboxESQ = new EntitySchemaQuery(_userConnection.EntitySchemaManager, "MailboxSyncSettings");
EntitySchemaQueryColumn userNameColumn = mailboxESQ.AddColumn("UserName");
EntitySchemaQueryColumn userPasswordColumn = mailboxESQ.AddColumn("UserPassword");
EntitySchemaQueryColumn isAnonymousAuthentication = mailboxESQ.AddColumn("IsAnonymousAuthentication");
EntitySchemaQueryColumn sendEmailsViaThisAccountColumn = mailboxESQ.AddColumn("SendEmailsViaThisAccount");
EntitySchemaQueryColumn smtpHostColumn = mailboxESQ.AddColumn("MailServer.SMTPServerAddress");
EntitySchemaQueryColumn smtpPortColumn = mailboxESQ.AddColumn("MailServer.SMTPPort");
EntitySchemaQueryColumn smtpSslColumn = mailboxESQ.AddColumn("MailServer.UseSSLforSending");
EntitySchemaQueryColumn smtpTimeoutColumn = mailboxESQ.AddColumn("MailServer.SMTPServerTimeout");
IEntitySchemaQueryFilterItem senderEmailAddressFilter = mailboxESQ
.CreateFilterWithParameters(FilterComparisonType.Equal, "SenderEmailAddress", address);
mailboxESQ.Filters.Add(senderEmailAddressFilter);
if (ignoreRights) {
mailboxESQ.UseAdminRights = false;
} else {
mailboxESQ.AddRightsFilters(_userConnection.CurrentUser.Id);
}
EntityCollection mailboxEntities = mailboxESQ.GetEntityCollection(_userConnection);
var mailCredentials = new MailCredentials();
if (mailboxEntities.Count == 0) {
throw new Sender.EmailException("ErrorOnSend", MailboxDoesNotExist);
}

Entity mailbox = mailboxEntities[0];
if (!mailbox.GetTypedColumnValue(sendEmailsViaThisAccountColumn.Name)) {
throw new Sender.EmailException("ErrorOnSend", NotAllowedSendingFromThisMailbox);
}
mailCredentials.Host = mailbox.GetTypedColumnValue(smtpHostColumn.Name);
mailCredentials.Port = mailbox.GetTypedColumnValue(smtpPortColumn.Name);
mailCredentials.UserName = mailbox.GetTypedColumnValue(userNameColumn.Name);
mailCredentials.UserPassword = mailbox.GetTypedColumnValue(userPasswordColumn.Name);
mailCredentials.UseSsl = mailbox.GetTypedColumnValue(smtpSslColumn.Name);
mailCredentials.Timeout = mailbox.GetTypedColumnValue(smtpTimeoutColumn.Name) * 1000;
mailCredentials.IsAnonymousAuthentication = mailbox.GetTypedColumnValue(isAnonymousAuthentication.Name);
return mailCredentials;
}

Нравится

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

Здравствуйте!

Судя по ошибке в поле UserPassword (таблица MailboxSyncSetting) хранится хэш, который не может быть расшифрован. Судя по всему там записано некорректное значение.

Попробуйте пересоздать почтовый ящик. В процессе необходимо указать вновь созданный ящик.

А по поводу алгоритма получения хэша можете сориентировать?

"Сурмачевский Евгений Александрович" написал:

А по поводу алгоритма получения хэша можете сориентировать?


Здравствуйте!

Данные колонки необходимо использовать исключительно через EntitySchemaQuery используя формат "Secure Text"

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

Здравствуйте, каким элементом в бизнес процессах можно обрабатывать входящие email сообщения? Необходимо, вытягивать email отправителя и если такой контакт есть в базе, то чтобы он автоматически подставлялся в это входящее сообщение в поле “привязать контакт”.

Нравится

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

Здравствуйте!

Алгорит решения:
1. Стартовый сигнал по добавлению записи в объект Активности, где Тип = Email, Тип сообщения = Входящее.
2. Читать данные в активностях, где Id = Пункт 1. Id
3. Читать кол-во записей в контактах, где Email = Пункт 2. От кого
Условный поток: Если кол-во записей > 0 - изменить активносить
Поток по умолчанию: завершить процесс

Спасибо :smile:
А можно ли как-то сделать с помощью БП, чтобы в карточку контакта во вкладку “История” привязывалось полученное входящее сообщение? В блоке “Изменить данные” нет полей из вкладки “История” для установки id активности, а в "История раздела Контакты (представление)" есть только поле контакт :sad:

Здравствуйте!

Для того, чтобы привязать активность (с типом Email) к контакту необходимо в активности заполнить поле Контакт.
В рамках процесса следует использовать элемент "Изменить данные". В активности заполнить поле Контакт интересующим значением.

Спасибо за ответ. В входящем сообщении контакт корректно отображается, то есть в активность подставляется. Но на странице соответствующего контакта на вкладке “история” активность не отображается,

!
с чем это может быть связано?

Здравствуйте!

На детали "Активности" отображаются записи из раздела "Активности", у которых тип = Email. Активности с типом Email отображаются на детали "Email".

Базовая логика приложения скрывает деталь в двух случаях:

  1. У контакта тип "Сотрудник"
  2. У контрагента контакта тип "Наша компания"

Это сделано с целью, чтобы сотрудники не имели возможности прочитать сообщения своих коллег, которые могут содержать конфидециальную информацию.

Согласно скриншоту деталь не отображается. Именно по этой причине созданная активность не отображается.

.

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

Добрый день, можно ли как-то добавить подпись в email-сообщения по умолчанию при создании нового сообщения, не в шаблон? Чтобы и из коммуникационной панели и через средства связи отсылалось корректно?

Нравится

1 комментарий

Здравствуйте, Мария!

Данный функционал будет доработан в одном из последующих релизов приложения, ориентировочно в 7.10.

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

На днях озаботились такой проблемой - клиенту надо посмотреть почтовые сообщения за последнюю неделю. И опа :) В стандартном почтовом клиенте средств фильтрации нет никаких, о папках вообще молчу. Решение - выводить в списке активностей еще и e-maily, благо активности и есть.

Реализация занимает 5 минут, поэтому, если кому надо, то вот последовательность действий:

1. Создаем замещающую схему секции активностей (ActivitySectionV2).
2. В ней определяем, что используем. Нам надо по большому счету BaseFiltersGenerateModule и все.
3. В ветке methods сносим фильтр NotEmailFilter, который собственно и убирает из списка активностей e-maily

getFilters: function() {
  var filters = this.callParent(arguments);
  if (filters.contains("NotEmailFilter")) {
     filters.removeByKey("NotEmailFilter");
   }
  return filters;
}

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

Нравится

Поделиться

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

Причем системная настройка "Отображать email в разделе активности" просится в коробочную версию :)

Согласен :)

или прямо в разделе фильтрацию - галочку поставить

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