Добрый день!

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

Подскажите, как отключить такое поведение, не отключая автопривязку в принципе (привязка к контрагенту работает и нас вполне устраивает)?

Нравится

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

закомментируйте строку

Incident = GetIncidentDataBySubject(MailItem.Subject);

в function SaveMailItem(MailItem, Options) в scr_MSOutlookLibrary

Кстати, логика поиска такова:
1. Выявить ключевое понятие для данное проблемы - в данном случае это номер инцидента
2. перевести его на язык террасофт - IncidentNumber (была бы продажа - было бы OpportunityNumber и т.д.)
3. открыть администратора и воспользоваться GREP-search
4. Найти пересечение между результатами поиска и темой, в контексте которой рассматриваем проблему - в данному случае это интеграция с Outlook, а значит нас интересует scr_MSOutlookLibrary.

Открываем, смотрим по названию\коду то ли это, что нас интересует, если да, то поднимаемся по функциям до места срабатывания.

Огромное спасибо!

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

Здравствуйте! При создании шаблона сообщения, при попытке выбрать макрос
1
возникает следующая ошибка:
2

Что за блокировка документа, вероятно дело в правах доступа?

Нравится

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

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

1) предлагаю написать в поддержку для предоставления последних исполняемых файлов вашего продукта.
2) отключить UAC (если Вы используете windows 7), если не поможет, отключите DEP.

после этого, должно все работать.

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

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

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

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

После переноса базы возникла проблема с фильтрацией реестра email по группам (Входящие, Исходящие, и пр.). В группе "Все сообщения" отображается только небольшая часть сообщений (по какому признаку они выбрались не понятно), хотя в правах доступа к группе для Всех пользователей стоит полный доступ. Как выяснилось, все сообщения отображаются только под "старым" Администратором, который был первоначально (в данный момент этот аккаунт уже не админ). Также все сообщения под любым пользователем отображаются, если создать в группах динамическую группу. Создание динамических групп принято как временное решение, но хотелось бы решить проблему.

Нравится

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

Здравствуйте, Дмитрий.

Посмотрите, пожалуйста, профайлером какие запросы бегают к БД при смене групп (все сообщения, входящие, исходящие и пр.) - если никаких "лишних" фильтров не накладывается, нужно смотреть в сторону прав доступа не на группу, а на записи в таблице раздела E-Mail.
Хотя странно то, что при создании дин. группы - письма отображаются корректно...

Профайлера нет, посмотреть к сожалению не получится. Насчет прав, на всех сообщениях права прописаны, для групп тоже (для всех пользователей). Все письма видит только сис админ. Где могут накладываться эти "лишние" фильтры?

В функции:
ApplyMailsWorkspaceFilter() скрипта scr_MailWorkspace
Закомментировал наложение фильтра:

ApplyDatasetFilter(BaseWorkspace.GridDataset, 'OwnerID',
		Connector.CurrentUser.ContactID,
		!BaseWorkspace.GroupsDataset.ValAsBool('IsFiltered'));

Теперь все вроде бы работает. Вопрос: на что это может повлиять, и как он должен правильно работать?

Добрый день!

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

Логика в том, что в разделе E-mail должны отображаться лишь те сообщения, по которым текущий пользователь является ответственным.

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

Доброго времени суток!

Возник вопрос: в разделе Email при открытии конфигурации не инициализируются некоторые детали (те, у которых в свойстве Windows USI стоит wnd_MailsDetailGridArea). Инициализируются только если переключиться с одной детали на другую, а потом обратно . Можно ли как-нибудь это исправить?

Еще вопрос: при добавлении задачи в деталь раздела Email вылетает ошибка:

Галка "Всегда выбирать в запросе" на поле "Состояние" в разделе Задачи стоит. Куда копать?

Нравится

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

Дмитрий, какая версия конфигурации?

Service Desk 3.4.0.54

Дмитрий, проблема с инициализацией из конфигурации не решится, поэтому вопрос передан на рассмотрение в департамент разработки.
Что касается ошибки при добавлении задачи в деталь раздела Email, не смогла ее воспроизвести на аналогичной версии. Опишите, пожалуйста, последовательность действий, вызывающих ошибку.

Последовательность действий: кнопка "Добавить" детали "Задачи" раздела "Email" -> выбираю задачу -> нажимаю "Добавить" -> ошибка.

Точнее так: кнопка "Добавить" детали "Задачи" раздела "Email" -> выбираю задачу -> нажимаю "ОК" -> ошибка.

Есть какие-нибудь идеи?

Чтобы устранить ошибку, возникающую при добавлении задачи в деталь раздела Email необходимо:
- Открыть сервис sq_MailTaskLinks, установить для колонки StatusID признак «Всегда выбирать в запросе».
- Открыть сервис sq_Task, установить для колонки StatusID признак «Всегда выбирать в запросе».

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

Только начинаем осваивать и внедрять BPMOnline Service Desk.
Сразу появился ряд вопросов, написал в support, но хочу еще тут спросить.

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

Было бы вообще супер, если такое сделать вне активностей, чтобы не засорять их такими сообщениями

2. Не могу найти скрипт(бизнес процесс) создания email при синхронизации с почтой. необходимо привязывать ответ на email из 1. к уже созданным запросам.

Нравится

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

Здравствуйте, Антон!

"Антон Шумахер" написал:1. Как можно реализовать рассылку email-уведомлений если изменяется определенные свойства у обращений.
т.е. нужно прислать письмо ответственному если у него появилось новая задача, или был добавлен комментарий к задаче и тп, а автора необходимо уведомлять например о смене статуса задачи.

Было бы вообще супер, если такое сделать вне активностей, чтобы не засорять их такими сообщениями

Настроить отправку почты можно как при помощи активностей, так и без них. Для отправки сообщения следует доработать процесс карточки - необходимо добавить событийный подпроцесс на нажатие кнопки Ok (либо доработать его), проводить в нем вычитку необходимых параметров, и передавать из в элемент процесса типа UserTask. К элементу следует привязать системный процесс SendEmailUserTask.

2. Не могу найти скрипт(бизнес процесс) создания email при синхронизации с почтой. необходимо привязывать ответ на email из 1. к уже созданным запросам.

Создание активности делается в конфигурации, в source code схеме ImapClient. Метод называется SaveAsActivity

Добрый день.
а можете прислать абсолютно любой пример части процесса, где происходит отслеживание определенных свойств объекта после его сохранения?
Заранее спасибо.

Антон, уточните, пожалуйста, свойства какого объекта Вам нужно отслеживать?

Допустим объект "Запрос на обслуживание", отслеживаемые свойства "Состояние" и "Срок разрешения"

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

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

eventsubprocess

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

subprocessscript

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

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

Как же добавить подобный фирменный бланк в BPMonline?

Сделать это можно следующим образом:

1. Создать активность с типом Email, в теле которой будет наш бланк.

01

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

01

01

2. Найдите в базе данных запись нужного шаблона и скопируйте содержимое поля HtmlBody:

SELECT Title, HtmlBody FROM Activity

01

3. Откройте объект Активности и добавьте содержимое поля HtmlBody в значения по умолчанию:

01

Опубликуйте схему.

Обратите внимание, в значении константы все двойные кавычки " нужно продублировать: ""

Это необходимо для того, чтобы в сгенерированном исходном коде схемы константа сохранилась корректно.

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

Нравится

Поделиться

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

Добрый день
Анна, не могли бы вы подсказать:
мне в шаблоне на уведомление (в е-мейл акт-ти) нужно, чтобы отображалась ссылка на активность-задачу (url-адрес). Т.е. сотрудник, получивший по эл.почте это уведомление, перейдя по этой ссылке, открыл саму активность-задачу. Подскажите, как "выцепить" этот url-адрес ? Заранее спасибо

Здравствуйте, Татьяна.
Ссылка на активность состоит из константы (постоянной части ссылки) и идентификатора конкретной активности. Например: «http://localhost:8094/0/ViewPage.aspx?Id=f2bf397b-8fa3-48ba-b691-573608…» – константа, «23731a65-f9bb-4b75-b983-8c815cae6050» – идентификатор конкретной активности.
Для подстановки конкретной активности в шаблоне, необходимо в url после константы поставить %id% для передачи в эту ссылку идентификатора конкретной записи. Например: «http://localhost:8094/0/ViewPage.aspx?Id=f2bf397b-8fa3-48ba-b691-573608…%».

А как в подпись попадают данные сотрудника?

Владимир,

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

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

"Обуховский Александр Сергеевич" написал:Для подстановки конкретной активности в шаблоне, необходимо в url после константы поставить %id% для передачи в эту ссылку идентификатора конкретной записи. Например: «http://localhost:8094/0/ViewPage.aspx?Id=f2bf397b-8fa3-48ba-b691-573608…%».

а в шаблоне сообщения это тоже через макрос можно как-то сделать?

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

Всем привет!

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

Поскольку на комюнити по этому поводу ничего конкретно не нашел - решил поделится.

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

Есть конструкция:

#[Link;%1:Макрос>;Действие>/ Название сущности >/%1:ID]#, где

  1. Макрос> - Название макроса соответствующего поля
  2. Действие> - Одно из действий, которое произойдет по нажатию на ссылку, а именно
    • open - открытие карточки редактирования записи
    • goto - переход к записи в реестре
    • calltonumber - звонок по номеру средствами call-центра системы
  3. Название сущности > - название сущности в системе (Инцидент - Incident, Задача - Task и т.д.)

Получается, что для решения задачки, которую я описал в начале, нам необходимо:
Макрос #Номер# заменить на #[Link;%1:Номер;goto/Incident/%1:ID]#

Нравится

Поделиться

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

Не могли бы описать этот механизм подробнее?

Что значит Макрос #Номер#? Вместо чего нужно подставить номер (или ID в базе) проекта, к которому нужно перейти из письма?

"Росинская Лена" написал:

Не могли бы описать этот механизм подробнее?

Что значит Макрос #Номер#? Вместо чего нужно подставить номер (или ID в базе) проекта, к которому нужно перейти из письма?

1. Для примера: при выполнении всех задач по инциденту, необходимо оповестить ответственного, о том, что все работы выполнены. Для удобства просмотра инцидента Вы можете добавить ссылку на эту запись. (В теле письма номер инцидента будет ссылкой, кликнув на которую, программа Террасофт перейдет к записи инцидента, либо откроет её карточку)

пример

2. При настройке шаблонов сообщений в Террасофте Вы можете добавлять макросы из пользовательского запроса.
пример2
В нашем случае мы используем макрос Номер, который в тело письма вставится в формате #Номер#.
пример3
И для того, что бы при отправке письма номер отображаемого инцидента стал ссылкой необходимо заменить #Номер# на #[Link;%1:Номер;goto/Incident/%1:ID]#

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

Пытаюсь просто вставить её в письмо - как ссылка не работает. Что я делаю не так? =)
И можно ли из кода при формировании письма вместо номера подставлять эту строку (чтобы работало как ссылка)?

Попыталась из кода отправить письмо со строкой
#[Link;%1:Номер;goto/Opportunities/%1:{ED24FAA0-13E3-423A-BBBF-9C61B58D7FE7}]#

Не воспринимается как ссылка.

Елена, здесь, вероятно, дело не в том, что Вы отправляете письмо из кода. Проверьте, верно ли создан шаблон сообщения, а именно:
- сформирован пользовательский запрос;
- шаблон сообщения создан с использованием пользовательского запроса;
- выполнен пункт 2 из ответа Дмитрия (http://www.community.terrasoft.ru/blogs/7544#comment-35998)

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

var Body = Body + FormatStr("Создал: %1\nДата создания: %2\n\nНазвание проекта: %3\nНаправление: %4\nТочка продаж: %5\nОтветственный: %6",
Author, DateStr, GetCorrectStringForSendEmail(Title), Direct, Department, Owner);
var Link = FormatStr("%1", OwnerID)
Link = '#[Link;%1:Номер;goto/Opportunities/%1:'+ Link+']#';
Body = Body+Link;

var SQL = "EXEC msdb.dbo.sp_send_dbmail @profile_name = '%1', ";
SQL += "@recipients = '%2', @body = '%3', @subject = '%4', @body_format = '%5'";
var body_format = 'HTML';
SQL = FormatStr(SQL, ProfileName, AddressStr, Body, Subject, body_format);
Connector.DBEngine.ExecuteCustomSQL(SQL, System.EmptyValue);

в формате html. Но текст #[Link;%1:Номер;goto/Opportunities/%1:'+ Link+']# всё так же не распознаётся как ссылка.

Скрипты, указанные в ответе Дмитрия, не используются (это видно по отладчику).

Елена,
при отправке писем через dbMail, с использованием Body_Format="HTML" следует использовать следующий формат ссылки:

<a href="terrasoft://open/Opportunities/' + CONVERT(NVARCHAR(250),@ID) + '">Перейти</a>

где
Open - операция открытия записи
Goto - переход к записи в реестре

@ID - ID Продажи (в Вашем случае).

Это то, что надо. Спасибо!

Вопрос в продолжение темы: можно ли настроить переход по ссылке к разделу, но так, чтобы фильтр был настроен на по ID записи, а по ContactID, к примеру?

"Росинская Лена" написал:

Вопрос в продолжение темы: можно ли настроить переход по ссылке к разделу, но так, чтобы фильтр был настроен на по ID записи, а по ContactID, к примеру?


Лена, все возможно с Террасофт :smile:
Вам необходимо будет переопределить метод: HyperlinkGotoWorkspace. То есть в существующий формат передачи ссылок добавить параметр, опредиляющий поле по которому необходимо осуществить фильтрацию.

terrasoft://goto/wnd_ХХХWorkspace/{b365C4C25-D782-4F14-89DA-1BB5C1D993CA}/ContactID - например.

А уже в самой функции распарсить сам параметр

	if (Params.length < 2) {
		return;
	}
	var Module = Params[0];
	var IDValue = Params[1].replace(/%7b/g, '{').replace(/%7d/, '}');	
// Опредиляем парамет из строки ссылки
	var FieldName = Params[2];

и уже соответственно обработать дальше

Спасибо за быстрый ответ!

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

То есть, к примеру, в текстовом поле написать Перейти

так, чтобы это воспринималось как ссылка?

"Росинская Лена" написал:

Спасибо за быстрый ответ!

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

То есть, к примеру, в текстовом поле написать Перейти

так, чтобы это воспринималось как ссылка?


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

К сожалению, речь идёт именно о гриде.

"Росинская Лена" написал:
можно ли сделать поле в датасете так, чтобы оно являлось ссылкой? Как в письме?

Если я верно понял, может, так?

Добрый день, подскажите пожалуйста как правильно сформировать BodyText, чтобы письмо в формате HTML отправлялось со ссылкой?
Я делаю так :

BodyText = 'Здравствуйте!/nВы добавлены в команду проекта: <a href="terrasoft://goto/Project/E9A312A0-4882-40DA-8DE7-05B1D45B4449/">Валютный проект</a>./n/nЭто сообщение сгенерировано автоматически. Пожалуйста, не отвечайте на него.'

На выходе получается следующее письмо:

Здравствуйте!
Вы добавлены в команду проекта: <a href="terrasoft://goto/Project/E9A312A0-4882-40DA-8DE7-05B1D45B4449/">Валютный проект</a>. 
 
Это сообщение сгенерировано автоматически. Пожалуйста, не отвечайте на него.

Валентин, проверьте, какой формат устанавливается?
Сам текст Вы формируете правильно, такое ощущение, что формат сообщения текстовый.

Вот полный вызов процедуры:

SendEmail({Address:  TeamSelectDataset.Values('eMail'), 
Subject: 'Вы добавлены в команду проекта!', BodyFormat: 2, 
HTMLBody: 'Здравствуйте!/nВы <b>добавлены</b> в команду проекта: <a href="terrasoft://goto/Project/E9A312A0-4882-40DA-8DE7-05B1D45B4449/">Валютный проект</a>./n/nЭто сообщение сгенерировано автоматически. Пожалуйста, не отвечайте на него.', 
AutoSend: true, SendImmediately: true});

Валентин, завтра проверю корректность формирования BodyText с учетом добавленной Вами процедуры вызова и сообщу результат.

Валентин, в функции CreateOutlookMessage скрипта scr_OutlookUtils замените блок кода

if (Params.HTMLBody) {
 Message.BodyFormat = 2;
 Message.Body = Params.HTMLBody;
			}

На:

if (Params.HTMLBody) {
 Message.BodyFormat = 2;
 Message.HTMLBody = Params.HTMLBody;
			}

Спасибо! Все получилось.

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

Всем привет!
Данная доработка дает возможность использовать в шаблонах сообщений детали пользовательских запросов (аналогично отчету Word).

В архиве - сервисы, которые нужно залить. Поскольку дорабатывал для 3.4.0, потому настоятельно рекомендую перед заливкой сравнить их с исходными.

Или следуя инструкции вставить необходимый код в нужные места в тех же сервисах. (Инструкция в архиве)

Нравится

Поделиться

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

Спасибо Дмитрий,
Проверил на конфигурации 3.3.2.244, если подменить сервисы, все отрабатывает корректно

Добрый день! Пробовала подменить сервисы на конфигурации 3.3.2.255, не выводит данные в таблицу

Здравствуйте Марина,
В ходе удаленного подключения проведенного в рамках инцидента 0100907 было показано, что на коробочной версии 3.3.2 все работает корректно. Не корректная работа в Вашем случае, связана с доработками в базовых скриптах интеграции с Outlook. Ждем от вас бэкап базы данных для решения вопроса в Вашем случае

Проверили еще раз
В 3.3.2 (коробка)

function AddSection(UserReportData, ID, TablePath, ParentID, ParentFieldPath,
	PrimaryFieldUID, Caption, MainTable) {
	var Section = new Object();
	Section[spnID] = ID;
	Section[spnTablePath] = TablePath;
	Section[spnParentID] = ParentID;
	Section[spnParentFieldPath] = ParentFieldPath;
	Section[spnPrimaryFieldUID] = PrimaryFieldUID;
	Section[spnCaption] = Caption;
	Section[spnMainTable] = MainTable;
	var Sections = GetSections(UserReportData);
	Sections(ID) = Section;
	return Section;
}

Сервисы с вложения Дмитрия Павлова

function AddSection(UserReportData, ID, TablePath, ParentID, ParentFieldPath,
	PrimaryFieldUID, Caption, MainTable, Top) {
	var Section = new Object();
	Section[spnID] = ID;
	Section[spnTablePath] = TablePath;
	Section[spnParentID] = ParentID;
	Section[spnParentFieldPath] = ParentFieldPath;
	Section[spnPrimaryFieldUID] = PrimaryFieldUID;
	Section[spnCaption] = Caption;
	Section[spnMainTable] = MainTable;
	Section[spnTop] = Top?((Top>0)?Top:-1):-1;
	var Sections = GetSections(UserReportData);
	Sections(ID) = Section;
	return Section;
}

Необходимо все оставить как в 3.3.2

function AddSection(UserReportData, ID, TablePath, ParentID, ParentFieldPath,
	PrimaryFieldUID, Caption, MainTable) {
	var Section = new Object();
	Section[spnID] = ID;
	Section[spnTablePath] = TablePath;
	Section[spnParentID] = ParentID;
	Section[spnParentFieldPath] = ParentFieldPath;
	Section[spnPrimaryFieldUID] = PrimaryFieldUID;
	Section[spnCaption] = Caption;
	Section[spnMainTable] = MainTable;
	var Sections = GetSections(UserReportData);
	Sections(ID) = Section;
	return Section;
}

т.е убрать строчку Section[spnTop] = Top?((Top>0)?Top:-1):-1; и аргумент Top с функции AddSection в скрипте scr_UserReportCommon

Всем привет!
Доработан механизм вставки детали в сообщение при автоматическом его отравлении.
Для применения обновления необходимо обновить файл scr_MailUtils и scr_OutlookUtils.
Рекомендую перед обновлением сверить Ваши файлы с исходными.

Спасибо Дмитрий, очень пригодилась ваши доработки.
Для того что бы использовать функциональность в 3.3.2.157 XRM
необходимо:
1.

"Яворский Алексей" написал:убрать строчку Section[spnTop] = Top?((Top>0)?Top:-1):-1; и аргумент Top с функции AddSection в скрипте scr_UserReportCommon

2. Добавить системную переменную MSOutlookMaxFileSize
1
3. Удалить весь код между

/* MODULE INCIDENTS */
...
/* MODULE INCIDENTS */

если у Вас нет модуля инциденты

Отредактированные скрипты для XRM 3.3.2 (без модуля инциденты) во вложении

Дмитрий просьба исправить грамматическую ошибку в коде
var Message = 'Ошыбка при обработке деталей шаблона сообщения.';
функция ReplaceDetailTemplate скрипт scr_MailUtils.
Еще момент, при формировании письма с окна просмотра отчетов FastReport, при нажатии Send by E-mail -> PDF version у меня вылетает эта ошибка.

Ошибка происходит в функции ReplaceDetailTemplate на строчке

var Sections = Params.Template.Query.Sections;

а вызывается ф-ия тут

function InternalSendMessage(Message, Params) {
	ReplaceDetailTemplate(Message, Params);
	if (Params.Template) {
...

Как бы в обычном письме Params.Template не определен, т.е нужно вызывать ReplaceDetailTemplate так :

function InternalSendMessage(Message, Params) {
	if (Params.Template) {
		ReplaceDetailTemplate(Message, Params);
		var Prop = '';
		try {
			Prop = toJSON(Params.MessageLinks);
		} catch (e) {
			Prop = '';
		}
...

Исправил синтаксическую ошИбку.

Дмитрий, спасибо. Пригодилось решение.

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

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

Нравится

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

Добрый день!
По Вашему запросу ведутся работы по номеру инцидент 097200.

С уважением
Белецкий Арсений
Операционный менеджер

При отправке письма из Terrasoft система формирует команду создать письмо с определенным текстом и вставить в поле [Кому] соответствующие значения. Отправка же письма происходит после открытия письма и соответственно пользователь сам может выбрать какую учетную запись использовать. Изначально, при создании письма подставляется учетная запись, отмеченная как учетная запись по умолчанию.

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

На практике, автоматическая отправка (например рассылка) выполняется от имени той учетной записи на которой он был создан.
Тоесть, если мы при формировании шаблона меняем адрес в поле [От] и сохраняем данный шаблон - то при отправке рассылки с того же компьютера, на котором формировался шаблон, отправка будет происходить от имени измененной учетной записи.

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

Отследить email-адрес, от которого отправляется письмо, вы можете с помощью свойства SenderEmailAddres объекта MailItem (который формируется в скрипте scr_OutlookUtils):

var emailFrom = Message.SenderEmailAddress;
//Message - MailItem object;

В случае же Exchange аккаунтов, тут немного другой метод: вначале нам нужно получить AddressEntry а потом SMTP Address этого объекта.

"Олейник Дмитрий" написал:Отследить email-адрес, от которого отправляется письмо, вы можете

Добрый день!

А можно ИЗМНИТЬ отправителя письма. Через MS OUTLOOK (v.14.0.7128.5000) с этим проблем нет, а вот в коде не могу понять как это сделать?

Здравствуйте, AlexLS.

Посмотрите параметр Message'а - SentOnBehalfOfName:

Если указать его принудительно перед отправкой, то в сформированном письме в поле "От" можно увидеть подставленное в параметр значение:

Message.SentOnBehalfOfName = 'test1';
Message.Send();

http://i60.fastpic.ru/big/2015/0202/53/3d218290a8cab5190a0af477c4ee1553.png

"Безродный Андрей" написал:Посмотрите параметр Message'а - SentOnBehalfOfName:

Спасибо, Андрей! То что надо!!!

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