Добрый день!

Есть необходимость обрабатывать вложения входящих писем. Хотели создать процесс по сигналу создания активности с типом email, затем прочитать вложения. Но проблема в том, что файл на этот момент еще не доконца загружен. Подскажите как запустить процесс по полностью загруженному вложению. 

Нравится

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

Я бы завязался на событие добавления записи Файл и ссылка активности. И если активность =email, то начинаем обработку, иначе выход из процесса. Далее получить размер файла из БД, если он равен нулю, то ждем 15 сек. и повторяем. Если больше нуля, то уже делаем что хотели с файлом.

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

Добрый день!



Подскажите пожалуйста, каким образом можно настроить автоматический ответ на письмо, как в Outlook? Например: на любое входящее сообщение CRM должна отсылать шаблонный ответ "Письмо получено. Спасибо за обращение."

Нравится

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

Письмо єто активность с типом Emailте как вариант создать БП со стартовым сигналом слушающим добавление входящего Email и использовать элемент БП Отправить письмо для формирования ответа

Письмо єто активность с типом Emailте как вариант создать БП со стартовым сигналом слушающим добавление входящего Email и использовать элемент БП Отправить письмо для формирования ответа

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

Здравствуйте.
Где и как можно настроить уведомление о новых сообщениях. Сообщения приходят, но в боковой панели не показывается уведомление. Возможно ли настройка уведомления?
Спасибо

Нравится

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

Здравствуйте!
Следует проверить доступ Вашего пользователя или роли, в которую он входит к объектам - "Уведомление", "Уведомление ленты" (раздел Администрирование: Доступ к объектам).
Также просьба уточнить название и версию Вашего продукта.

"Зарицкий Олег Васильевич" написал:

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

Следует проверить доступ Вашего пользователя или роли, в которую он входит к объектам - "Уведомление", "Уведомление ленты" (раздел Администрирование: Доступ к объектам).

Также просьба уточнить название и версию Вашего продукта.

Здравствуйте.
bpm'online sales enterprise 7.6
Когда открываешь боковую панель с письмами, там показываются новые сообщения. Однако, уведомление о том, что пришло новое письмо или же изменения в ленте не показывается. Допустим, как приходит уведомление о новой визе или же обычные уведомления.
Спасибо.

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

На коммуникационной панели стоит разделять "Лента" и "Уведомления".
В Ленте отображается сообщения раздела ЛЕНТА (например, другой пользователь оставил Вам комментарий или "лайкнул" существующий, созданный Вами)
В Уведомлениях отображается системная информация (например - Импортированы новые записи),
напоминания по активностям. Уведомления о новом входящем письме не приходят, т.к. достаточно открыть рядом стоящую панель "Email".
Более детальную информацию Вы можете найти в документации.
http://academy.terrasoft.ru/documents/docs/product/bpm'online%20sales/e…?

Добрый день!
Возобновлю тему.
Подскажите, как при создании визы по БП сделать так, чтобы сразу появлялись и исчезали уведомления.?

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

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

Алексей, а с какими параметрами нужно запускать этот процесс?

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

Алексей, спасибо. Все работает.

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

Здравствуйте, Владимир!

"Владимир Соколов" написал:

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

Уточните, пожалуйста, версию, на которой наблюдается такое поведение.

Задаю поля в Add Data (для Notification): To = ответственный, Title, Time = current date/time, Object = Document, Source = Owner, Unique caption Id = Record Id (из сигнала)
После этого запускаю Get number of reminders

В итоге само уведомление есть, а красная цифра не загорается.
Версия omnichannel English 7.6.0.938

Здравствуйте, Владимир!

Это зависит от часовых поясов на сервере, в профиле пользователя и на локальной машине пользователя. В версии 7.7.0. данное поведение поправили. Попробуйте убрать в профиле пользователя значение в поле "Часовой пояс".

"Демьяник Алексей" написал:Это зависит от часовых поясов на сервере, в профиле пользователя и на локальной машине пользователя. В версии 7.7.0. данное поведение поправили. Попробуйте убрать в профиле пользователя значение в поле "Часовой пояс".

Проверил в 7.10 - то же самое... Может, что-то забыл указать при создании Notification?

Владимир, здравствуйте!

В версии 7.10 система показывает, что появились новые сообщения без доработок.

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

  • NotificationType
  • Время
  • Заголовок
  • Кому
  • Объект
  • Уникальный идентификатор заголовка

Здравствуйте, подскажите , пожалуйста: пользователь создает активность на другого человека: указывает все необходимые параметры (тип уведомления, время начала , завершения, заголовок, кому, объект), но уведомление не отображается на боковой панели другого пользователя, хотя в активности время напоминания ответственному указано. Часовые пояса у пользователей не указаны. Уведомления то приходят ,то нет (в основном нет). В чем может быть проблема?

Медведева Анастасия Дмитриевна,

Данное поведение может быть вызвано следующими причинами:

1. Сначала была установлена галочка "Напоминать автору" и сохранена активность, а уже после этого установлено время напоминания;

2. У Вас часовой пояс в профиле пользователя не совпадает с часовым поясом на ПК. 

3. У Вас не установлен Формат даты и времени.

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

Добрый день!
Версия itil transitions 7.5.0.1473

Стандартный процесс обработки инцидентов.
Настройка системная "адрес сайта" заполнена.
Пользователю приходит письмо о разрешении инцидента и необходимости поставить оценку.
Пользователь ставит оценку, выходит сообщение в браузере о том, что оценка поставлена.
Но в карточке обращения эта оценка в поле "оценка" не появляется.

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

Нравится

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

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

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

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

1. Создайте в карточке кнопку, создайте обработчик события кнопки, как показано на рисунке:

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

В скрипт следует добавить такой программный код:

var defValuesId = Guid.NewGuid();
var defValues = new Dictionary string, object>();
defValues.Add("Contact", Page.ContactEdit.Value.ToString());
defValues.Add("Account", Page.AccountEdit.Value.ToString());
defValues.Add("Title", Page.TitleEdit.Value.ToString());
var IncidentId = Guid.NewGuid();

UserConnection.UserContext.Add(defValuesId.ToString(), defValues);
var parameters =  
      new Dictionarystring, string> {
            {"createWithUId", IncidentId.ToString()},
                        {"entitySchemaUId", "C449D832-A4CC-4B01-B9D5-8A12C42A9F89"},
                        {"defValuesId", defValuesId.ToString()}
      };
OpenTaskEditPage.OpenerInstanceId = InstanceUId;
OpenTaskEditPage.UseCurrentActivePage = true;
OpenTaskEditPage.PageUId = new Guid("F2BF397B-8FA3-48BA-B691-57360871967A");
OpenTaskEditPage.PageParameters = parameters ;
OpenTaskEditPage.CloseMessage = "IncidentEditPageClosed";

После действия БП открытие окна добавить ожидание сигнала IncidentEditPageClosed

В скрипте после сигнала добавьте следующий программный код:


var entitySchemaManager = Page.Schema.SchemaManagerProvider.GetManager("EntitySchemaManager") as EntitySchemaManager;
var TargetScemaQuery = new EntitySchemaQuery(entitySchemaManager, "ServiceRequest");
var primaryColumn = TargetScemaQuery.AddColumn(TargetScemaQuery.RootSchema.GetPrimaryColumnName());
TargetScemaQuery.AddColumn("Number");
TargetScemaQuery.Filters.Add(TargetScemaQuery.CreateFilterWithParameters(
        FilterComparisonType.Equal,
        "Id",
        IncidentId));
var incidentCollection = TargetScemaQuery.GetEntityCollection(UserConnection);
if(incidentCollection.Count != 0){
        Page.IncidentEdit.SuspendAjaxEvents();
        Page.IncidentEdit.SetValueAndText(incidentCollection[0].GetTypedColumnValueGuid>(primaryColumn.Name), incidentCollection[0].GetTypedColumnValuestring>("Number"));
        Page.IncidentEdit.ResumeAjaxEvents();
}

2. Затем добавьте действие бизнес-процесса, и поместите его на тот же событийный подпроцесс, на котором уже лежат стартовое событие и скрипт. При необходимости событийный подпроцесс можно растянуть. Это важно для корректной работы процесса.

Проведите стрелку из скрипта в действие.

3. Переключитесь в расширенный режим и укажите в настройках действия бизнес-процесса следующее:

4. Сохраните и опубликуйте схему.

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

Нравится

Поделиться

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

спасибо!

Добрый день.

Помогите реализовать следующее:
1. Нужно сделать в Активности кнопку "Таймер" у нового поля "Счетчик времени"
2. При нажатии на эту кнопку нужно, чтобы включится счетчик времени.
3. При отжатии этой кнопки, счетчик времени останавливался.
4. При повторном нажатии на эту кнопку и при условии, что состояниеактивности не конечное (т.е. не Завершена и не Отменена), счетчик продолжал отсчитывать время.

Заранее спасибо

Татьяна, для версии 5.Х встроенной функциональности для создания таймера нет, еобходимо сложное программирование с использованием сторонних библиотек либо веб-сервисов.Что касается версий 7.X и позднее, точно сказать не могу. Пожалуйста, обратитесь в техническую поддержку по адресу support@terrasoft.ru

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

Иногда возникает ситуация, что при выполнении рассылки (шаблон в формате html) - конечный пользователь получает письмо с сплошным текстом, без единого форматирования (которое было выполнено в шаблоне сообщения).

Такая ситуация может происходить в версиях 3.3.1 и 3.3.2.

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

Далее, запускаем TSAdmin.exe и находим сервис scr_OutlookUtils.

В данном сервисе нам необходимо добавить метод CreateNewOutlookMessageByCopy:

function CreateNewOutlookMessageByCopy(FileName) {
      var Message;
      if (FileName) {
            TemplateMessage = Outlook.Application.CreateItemFromTemplate(FileName);
            RemoveOutlookMessageProperties(TemplateMessage);
            Message = Outlook.Application.CreateItem(0);
            RemoveOutlookMessageProperties(Message);
            Message.Subject = TemplateMessage.Subject;
          var NewMailItemBodyFormat = GetMailItemBodyFormat(Message);
          var MessageText;

            if ((NewMailItemBodyFormat  == olFormatHTML) ||
                  (NewMailItemBodyFormat  == olFormatRichText)) {
                  MessageText = GetDecodedMessageText(TemplateMessage);
                  if (GetMailItemBodyFormat(TemplateMessage) == olFormatPlain) {
                    MessageText = PreparePlainTextForHTML(MessageText, true);
                  }
                  if (GetOutlookCodePageOut() != -1) {
                    var CodePage = GetMailItemCharsetName(Message);
                    MessageText = System.EncodeText(MessageText, CodePage);
                  }
            } else {
                  MessageText = TemplateMessage.Body;
            }

            CopyAttachments(TemplateMessage, Message, false, Log);
            SetMailItemBody(Message, MessageText);
           
            var Recipient;
            var SourceRecipient;
            for (var i = 1; i = TemplateMessage.Recipients.Count; i++) {
                  SourceRecipient = TemplateMessage.Recipients.Item(i);
                  Recipient = null;
                  if (SourceRecipient.AddressEntry.Type != 'EX') {
                Recipient = Message.Recipients.Add(SourceRecipient.Address +
                             ' ' + SourceRecipient.Name + '>');
                  } else {
                Recipient = Message.Recipients.Add(SourceRecipient.Name);
                Recipient.Resolve();
                  }
                  Recipient.Type = TemplateMessage.Recipients.Item(i).Type;
            }

            TemplateMessage.Close(0);
      } else {
            Message = Outlook.Application.CreateItem(0);
            if (Outlook.CodePageOut) {
                  Message.InternetCodepage = Outlook.CodePageOut;
            } else {
                  Message.InternetCodepage = 20866;
            }
      }
      return Message;
}

В этом же сервисе модифицировать функцию GetOutlookCodePageOut (добавить return Outlook.CodePageOut;):

function GetOutlookCodePageOut() {
      if (!Outlook.OutlookCodePageOutInitialize) {
            var MSOfficeRootKey = 'Software\\Microsoft\\Office\\';
            var OutlookCodePageOptionsKey = '\\Outlook\\Options\\MSHTML\\International';
            var Version = GetOutlookVersion();
            var OutlookSettingKey = MSOfficeRootKey + Version +
                  OutlookCodePageOptionsKey;
            Outlook.AutoDetectCodePageOut = GetRegParamValue(REG_DWORD,
                  HKEY_CURRENT_USER, OutlookSettingKey, 'Autodetect_CodePageOut');
            Outlook.CodePageOut = GetRegParamValue(REG_DWORD,
                  HKEY_CURRENT_USER, OutlookSettingKey, 'Default_CodePageOut')
                  || 20866;
            Outlook.OutlookCodePageOutInitialize = true;
      }
      return Outlook.CodePageOut;
}

А также, модифицировать метод CreateOutlookMessage
(добавить var Message = CreateNewOutlookMessageByCopy(Params.Template ?
Params.Template.FileName : null
):

function CreateOutlookMessage(Params) {
      var Message = CreateNewOutlookMessageByCopy(Params.Template ?
            Params.Template.FileName : null);

      if (Params.Address) {
            if (typeof(Params.Address) == 'string') {
                  Params.Address = [Params.Address];
            } else {
                  Params.Address = RemoveDublicates(Params.Address);
            }
            for (var i = 0; i Params.Address.length; i++) {
                  AddRecipient(Message, Params.Address[i], olTo);
            }
      }
      if (Params.CopyAddress) {
            if (typeof(Params.CopyAddress) == 'string') {
                  Params.CopyAddress = [Params.CopyAddress];
            }
            for (var i = 0; i Params.CopyAddress.length; i++) {
                  AddRecipient(Message, Params.CopyAddress[i], olCC);
            }
      }
}

Для версии 3.3.1, необходимо выполнить еще одно изменение.
В сервисе scr_MailUtils найтифукцию CreateNewMessage(Params) и добавить ByCopy в строчке var Message = CreateNewOutlookMessage(Params.Template ? Params.Template.FileName : null);
:

function CreateNewMessage(Params) {
         if (!GetCanCreateMessage(true)) {
                   return;
         }
         
         if (!InitMailUtils()) {
                   return;
         }
         
         if (!Params) {
                   Params = new Object();
         }
         
         var Message = CreateNewOutlookMessageByCopy(Params.Template ?
                   Params.Template.FileName : null);

Сохраняем сервис и проверяем рассылку!

С уважением
Белецкий Арсений
Группа компаний Terrasoft

Нравится

Поделиться

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

Добрый день.
Такая ситуация так же может происходить и в версии 3.3.0 :) Но в ней я не нашел ни скрипта scr_OutlookUtils ни функций GetOutlookCodePageOut, CreateOutlookMessage.
Не подскажите, что можно сделать в данном случае?

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

Если шаблон письма формируется некорректно, прошу обновить исполняемые файлы до более поздних.
На данный момент, это 3.3.0.83.
Данные файлы Вы можете запросить у Службы технической поддержки support@terrasoft.ru

С уважением
Белецкий Арсений
Группа компаний Terrasoft

Дело в том, что мы уже используем версию 3.3.0.83 :sad:

Добрый день!

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

С уважением
Белецкий Арсений
Группа компаний Terrasoft

Скриншот и полученное письмо во вложении

Причем было замечено, что письма из TS уходят без форматирования только на одной машине, на других все ок. Windows 7 x32, MS Outlook 2010 x32

Павел, а Вы проверяли настройки самого Outlook?
Возможно формат принимаемых и отправляемых писем стоит - текст, а не в html?

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

mail

Формат отправляемых писем уже установлен в html. Возможно, есть еще какие-нибудь настройки?

Нужно проверить, что бы и шаблон был создан в формате html.

сделал данные настройки но при этом картинки приходят вложениями(( не подскажите что можно сделать? и какую информацию нужно показать?

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

Добрый день!

Почему не отправляется письмо ответственному за инцидент, как это реализовано в Задаче?
Вроде все функции есть (стандартный функционал, ничего не меняла). Сообщение с вопросом об отправке письма появляется, а письмо не приходит на почту.

версия TS XRM 3.3.1.97

Нравится

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

1. Из задач письмо отсылается нормально?
2. Что видно в отправленных или исходящих в Outlook после попытки отправить письмо?

1. да
2. не создается письмо

Кстати, а можно такой же функционал (отправка письма ответственному) как в задаче сделать и в Проекте, но не копирую полностью все, а как-то проще?

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

проверила. шаблона не было просто) создала его и привязала к системной переменной через настройки.

а что по поводу отправления писем из проектов можете посоветовать? слишком уж много функций используется при отправке письма в задаче. как-то упростить процесс нельзя для проектов?

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

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

Добрый день!

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

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

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

Для устранения ошибки пришлось создать все проблемные шаблоны заново, а старые удалить.

Если по каким-либо причинам необходимо именно обновить шаблон, а не создать новый (такое может понадобиться если на шаблон ссылаются какие-то записи, либо шаблони используется в скриптах или бизнес-процессах), то придется немного повозиться. Необходимо создать промежуточный шаблон (назовем его, например, "Промежуточный шаблон"), поместить в него нужный текст (можно взять прямо из неправильного шаблона). Затем выполнить такой запрос:

UPDATE Incorrect
SET Incorrect.Template = Correct.Template
FROM
  tbl_MailTemplate Incorrect,
  tbl_MailTemplate Correct
WHERE
  Incorrect.Name = 'Название шаблона, созданного по входящему письму'
  AND Correct.Name = 'Промежуточный шаблон'

Запрос написан для СУБД MS SQL 2000, но портировать его для других, думаю, будет не сложно.

После этого промежуточный шаблон можно удалить.

За помощь в решении проблемы спасибо Андрею Кихтенко.

Нравится

Поделиться

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

Нередко при работе с Terrasoft CRM возникает необходимость отправить своему сотруднику оповещение о задаче (или инциденте). В стандартном приложении Terrasoft CRM подобный функционал реализован при помощи предварительного создания шаблона e-mail по задаче.
Но не менее удобный функционал также может пригодиться: отправка оповещения о задаче во вложении к письму с возможностью написания своему коллеге личное сообщение в самом теле письма.
Постараюсь как можно более подробно описать алгоритм реализации подобного функционала.

Предлагаю воспользоваться функцией, описанной в scr_mailUtils CreateEmptyMessageWithAttachments. Ниже приведен пример непосредственного создания сообщения.

1. Создать файл MSWord с расширением dot. Особенность этого файла - его структура - это закладки (BookMarks), которые используются для автоматической замены значений, которые можно вытянуть из выборки данных необходимых для формирования шаблона. В прикрепленном файле высылаю пример - это таблица, в которую будут заноситься данные из конкретной выборки.

2. На необходимое действие нужно добавить функционал по созданию сообщения с вложением. Например, этот функционал можно добавить на какую-либо кнопку. Лучше всего воспользоваться базовой функцией CreateEmptyMessageWithAttachments. Ниже приведен пример ее использования, а также динамическое редактирование файла-шаблона.
Пример открытия файла:

 var WordRecord = OpenWordTemplate('C:\\TestReport.dot');

Пример создания выборки данных:

var Datasets = GetNewDictionary();
var Dataset = Services.GetNewItemByUSI('ds_Contact');
//здесь можно наложить необходимые фильтры
Dataset.Open();
AddDatasetToDictionaryByUSI(Datasets, 'Contacts', Dataset);
return Datasets;

Для заполнения документа-шаблона можно использовать функцию ReplaceWordBookmarks(WordInfo, Datasets). Как параметры ей передаются файл и созданный датасет. Только в этой функции созданный документ с заполненными значениями открывается, а его можно сохранить во временных документах на диске, а после прикрепления к письму удалять.

Пример непосредственного использования функции CreateEmptyMessageWithAttachments:

var Attachments = System.CreateObject('TSObjectLibrary.StringsList');
Attachments.Add(// необходимо указать полный путь к сохраненному документу);
CreateEmptyMessageWithAttachments(MailAddress, MailSubject, BodyFormat, CodePage, Importance, Attachments);
DeleteFilesFromStringsList(Attachments);

Также можно использовать не только сохраненный на диске файл, но и загружать его из библиотеки, используя базовую функцию поиска файла по коду FindFileInLibraryByCode(Code)

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

С уважением,
Мельникова Екатерина

Нравится

Поделиться

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