Всем привет!

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

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

В системе есть сервис 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 = '';
		}
...

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

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

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

Всем привет!
Не знаю как кому, но при разработке проектов этой возможности очень не хватает в "тройке". Я имею в виду формирование отчетов/печатных форм в Excel, используя пользовательские запросы по определенному шаблону, как это реализовано в пользовательских отчетах Word.

Детально описывать этот функционал я не буду, поскольку он довольно сложный. Главное, чтобы он работал как надо.
С этим постом идет архив, в котором помимо сервисов есть небольшой Readme-документ, который я скопирую сюда.

ВНИМАНИЕ!
Загружать сервисы из архива необходимо, если Вы уверены, что в них Вы не делали никаких изменений. Иначе Ваши изменения будут затерты.

Порядок загрузки:
1. Настоятельно рекомендуется сделать бекап базы.
2. Загрузить сервис таблицы отчетов tbl_Report.xml. В эту таблицу добавлен признак "IsExcelReportByTemplate" ("Отчет по шаблону").
3. Загрузить остальные сервисы. Порядок их загрузки не важен.

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

Нравится

Поделиться

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

Thank You !
Really good thing, we will try it :)

Спасибо :)

Скажите пожалуйста для всех ли версий подойдёт данный хак? Потому как в моём tbl_Report помимо добавленого Вами поля отсутствует поле "FilterField" Caption="Поле фильтрации"

Пробовал только на 3.3.2. По поводу 3.3.1 - не пробовал. В самой настройке отчета Excel это поле FilterField не участвует. Оставлено было только то, что на мой взгляд, было нужно: название отчета, пользовательский запрос, признак того, что отчет будет формироваться по шаблону и раздел, в котором будет выводиться этот отчет. Не более того. Поэтому, по идее, должно работать и на 3.3.1 (лишь бы сервис загрузился, т.к. его формат, по моему, менялся). Чтобы проверить, лучше сделайте бекап и вперед. Пробуйте, одним словом.

А где примеры можно посмотреть как делать такой отчет по шаблону?

Вы имеете в виду видео как пользоваться этим инструментом? Или просто шаблон Excel-файла? Ни того, ни другого нет. На самом деле, если Вы пользовались/строили пользовательские отчеты Word, то работа с этим механизмом абсолютно идентична:
1. Создать запрос в разделе "Запросы"
2. Создать настройку/запись в разделе "Отчеты", указав тип "Excel", раздел, в котором будет отображаться этот отчет.
3. Создать шаблон отчета Excel
4. В шаблоне подключиться к конфигурации Террасофта
5. Установить расположение полей из Вашего запроса (поля будут отображаться в виде макросов)
6. Отформатировать этот шаблон как Вам нужно и сохранить его
7. Все. Запускаете отчет в том разделе, который был указан на шаге 2.

Спасибо за информацию. Да мне именно это и нужно. Пользовательские отчеты Word не строил ни разу. С 3-го пункта не знаю как делать - как создать шаблон и далее... Поясните пож-ста как это делается!

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

Для того, чтобы создать шаблон, необходимо:

1. Взять готовый отчет;
2. Определить, каким образом будет формироваться каждая цифра в отчете (из какой таблицы подставляется либо как рассчитывается);
3. Сформировать запрос отчета, который будет выбирать данные из базы;
4. Вместо цифр подставить информацию об источниках данных.

"S.Kalishenko" написал:

На самом деле, если Вы пользовались/строили пользовательские отчеты Word, то работа с этим механизмом абсолютно идентична:

1. Создать запрос в разделе "Запросы"

2. Создать настройку/запись в разделе "Отчеты", указав тип "Excel", раздел, в котором будет отображаться этот отчет.

3. Создать шаблон отчета Excel

4. В шаблоне подключиться к конфигурации Террасофта

5. Установить расположение полей из Вашего запроса (поля будут отображаться в виде макросов)

6. Отформатировать этот шаблон как Вам нужно и сохранить его

7. Все. Запускаете отчет в том разделе, который был указан на шаге 2.

не ясно как создать шаблон для отчета. Первые 2 пункта я сделал.А как сделать 3-ий и 4-ый?
В карточке отчета нажал "Изменить шаблон", сохранил Exel документ, дальше по интуиции нажал:
1
Но после запуска отчета шаблон не запустился.. А появились просто данные из запроса. Что я делаю не так? подскажите пож-ста

Прошу прощения, не все скрипты были загружены.Кстати в CRM 3.4.0.87 нет скрипта scr_ExcelUtils, я его загружал, как указано в теме http://www.community.terrasoft.ru/forum/topic/7662

Шаблон создал, и пишет что для отчета создан шаблон. Но при запуске отчета из раздела Отчеты шаблон не появляется.А при запуске из раздела, в котором нах-ся отчет, вообще ничего не происходит((

Нет, все же у меня не получается прикрепить шаблон к отчету! что для этого нужно?

Антон, вы ознакомились с примером шаблона, прикрепленным в соответствующей теме?

http://www.community.terrasoft.ru/forum/topic/7662

Вам следует создать шаблон Excel и загрузить его в базу данных, воспользовавшись соответствующим пунктом меню.

Корректное сохранение нового шаблона, создаваемого в Terrasoft требует настроенной интеграции с Excel и запущенной надстройки:

20

"Alimova Anna" написал:

Вам следует создать шаблон Excel и загрузить его в базу данных, воспользовавшись соответствующим пунктом меню.

Корректное сохранение нового шаблона, создаваемого в Terrasoft требует настроенной интеграции с Excel и запущенной надстройки:


Анна, а интеграция с Excel настраивается отдельно или при установке TS это идет по умолчанию?
Я так пробовал:
21

Не получается

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

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

Хорошо, буду очень благодарен! Могу сегодня после обеда, с 13.30.

Дмитрий, мой скайп ant.kan89, удобнее будет договориться!

А шаблон EXEL то должен быть в формате xlsx? Если да, то почему при выборе загрузки в БД
2
тип Word?

Проблема с сохранениям шаблона для отчета была решена в ходе удаленного подключения.

Последний вопрос: Можно ли в одном отчете иметь 2 таблицы, раздельные, и было бы хорошо разделить фильтры в окне фильтрации, чтобы фильтровать данные 2 таблиц. Возможно ли это в пользовательском запросе? отчет все тот же, по шаблону Excel

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

В продолжение темы. Для версии 3.4

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

"Кошкаров Андрей" написал:Добрый день.
Подскажите с какими версиями Excel тестировался функционал создания отчета по шаблону?

Тестировалось на MS Excel 2007.

Добрый день.
У нас весия 3.2.0.
Попробовала загрузить сервисы - при загрузке выдает ошибку:
Error executing script method 'wnd_MainOnPrepare'. Information for service 'scr_UserReportConsts' not found.
Скажите, пожалуйста, есть шанс использовать данный функционал в нашей версии?

Здравствуйте, Наринэ!

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

1. Найти сервисы с аналогичными именами в коробочной базе данных 3.2.0

2. Одинаковые сервисы сравнить специальной утилитой (например, Araxis Merge). В зависимости от результата либо провести слияние (перенести измененные фрагменты программного кода) либо реализовать какие-то части заново.

3. Протестировать функциональность, в зависимости от результата, может потребоваться еще перенос некоторой коробочной функциональности с 3.3.2.

Применение данных серсисов к версии 3.2.0 может быть выполнено в рамках проектной доработки.

Здравствуйте! В отчет выгружается только одна запись. Не подскажете, как выгрузить все записи?

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

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

В пользовательском запросе несколько записей. Режим отображения выбран для всех записей. Если запустить из раздела "Отчеты", то выводит все записи не по шаблону. Если запустить из интересующего раздела, то выводит одну запись по шаблону. В авторском варианте нельзя выбрать режим для отображения, это поле скрывается при установке галочки "по шаблону". Я просто вытащил это поле. Я так понимаю, скрипт нуждается в доработке. Не подскажете с чего начать? Или, может быть, Вы знаете какое-нибудь готовое решение?

Андрей, еще одно маленькое уточнение - версия у Вас 3.4.0 либо Выше? Если да, уточните, Вы загружали сервисы из этой темы?
http://www.community.terrasoft.ua/blogs/8466

Александр, проверил. Ситуация следующая: если запускать отчет из раздела "Отчеты" он строится не по шаблону.
Если запускать отчет из раздела - он строится по шаблону, но только для одной записи. Нужно изменять логику... Посмотрите и "отдебажте" в скрипте scr_UserReportCommon функцию
function ShowExcelReportByQueryID(QueryID, Workbook, RecordIDs)

Здравствуйте, а где взять архив?

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

Здравствуйте,
можно ли программно присоединить к создаваемому по шаблону е-мэйлу файл, как вложение.

Е-мэйл создается с помощью стандартной ф-ии:
function SendEmailByAddress(MailUtils, TemplateFileName, Address, Subject) {
// by default 'false' means immediate message sending
// 'true' means putting message to 'Outbox' Outlook folders
var SendResult = MailUtils.SendMessage(TemplateFileName, Address,
Subject, false);
if (!SendResult) {
SendResult = false;
}
return SendResult;
}

Или может быть есть другие решения задачи?

Версия Terrasoft CRM 3.0.2.245 под Firebird.

Нравится

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

Здравствуйте Юрий,
Попробуйте воспользоватся советама в теме http://www.community.terrasoft.com.ua/forum/topic/6788

Действительно в случае с MailUtils.SendMessage(.......) получилось прикрепить вложение, добавив параметр Attachments.

Еще вопрос можно ли аналогичное действие реализовать при создании е-мэйла через MailUtils.CreateMessage(TemplateFileName, MailAddress, MailSubject).
Просто подстановка еще одного параметра Attachments не проходит, выдается ошибка (насчет, количество параметров не соответствует).

Используйте из scr_MailUtils

function CreateEmptyMessageWithAttachments(MailAddress, MailSubject, BodyFormat,
	CodePage, Importance, Attachments)

Евгений,
к сожалению в этой версии (3.0.2.245) в scr_MailUtils функции CreateEmptyMessageWithAttachments нет.
Есть только:

function CreateEmptyMessage(MailAddress, MailSubject) {
	var MailUtils = GetMailUtils();
	MailUtils.CreateEmptyMessage(MailAddress, MailSubject);
}
 
function CreateMessageFromTemplate(TemplateFileName, MailAddress, MailSubject) {
	var MailUtils = GetMailUtils();
	MailUtils.CreateMessage(TemplateFileName, MailAddress, MailSubject);
}

Вы можете выложить Текст скрипта scr_MailUtils?

Да, выкладываю.

Выложите именно текст скрипта а не сам сервис (чуть внимательнее ;))

Выкладываю, текст скрипта

Добавьте в скрипт этот код

function CreateEmptyMessageWithAttachments(MailAddress, MailSubject, BodyFormat,
	CodePage, Importance, Attachments) {
	if (!GetCanCreateMessage(true)) {
		return;
	}
	var MailUtils = GetMailUtilsWithoutMacroses();
	if (IsEmptyValue(MailAddress)) {
        MailAddress = '';
	}
   	if (IsEmptyValue(MailSubject)) {
        MailSubject = '';
	}
	if (IsEmptyValue(BodyFormat)) {
        BodyFormat = 1;
	}
   	if (IsEmptyValue(CodePage)) {
        CodePage = '';
	}
   	if (IsEmptyValue(Importance)) {
        Importance = 1;
	}
	MailUtils.CreateEmptyMessage(MailAddress, MailSubject, BodyFormat,
		CodePage, Importance, Attachments);
}

А потом попробуйте его вызвать.
50/50 что заработает т.к. непонятна версия вашей библиотеки TSOutlookLibrary

Чем всё закончилось?

На вызов:
MailUtils.CreateEmptyMessage(MailAddress, MailSubject, BodyFormat, CodePage, Importance, Attachments);
появляется ошибка:
Недопустимое число аргументов или присвоение значения свойства.

Эх....
Похоже в вашей версии этого нет.

Да, видимо так.
Похоже это добавили начиная с версий 3.0.4.

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

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

Инна Безверхняя,
II линия службы поддержки Terrasoft

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

Разрабатывается процесс по поиску клиентов (активные продажи), до момента расчета сметы. Далее, нужно будет их описать с учетом TS.
Возникла проблема с разбиением процесса на мелкие (некая декомпозиция) и описание границ процессов. Может кто-нибудь поделиться, какие у кого процессы в программе? Особых секретов не прошу...

Нравится

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

В базовой коробке XRM есть стандартный набор процессов. Они дают общее представление, как можно организовать простые бизнес-действия в автоматизированный процесс.

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

Добрый день.
Проблема с созданием отчета Word, прошу помощи
Заключается проблема:
При создании пользовательского отчета Word, создаю запрос с полями, добавляю отчет, создаю шаблон, шаблон связываю с отчетом, добавляю нужные поля, сохраняю его и тут начинаются проблемы:
при сохранении шаблона в Terrasoft выдает табличку загрузки шаблона и зависает (скрин прикреплен)
При попытке просмотра отчета из раздела Инструменты - отчеты - все виснет. Так же он не появляется в нужном разделе документы. После перезагрузки сохраненный отчет пропадает из списка. При повторном создании все повторяется....
Заранее благодарен за помощь

Нравится

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

Укажите используемую Вами версию Terrasoft и MS Office.
Также проследите, чтобы перед формированием шаблонов в MS Word и в момент формирования самого отчета не была запущена копия Word
Также не лишним будет очистить Cache и Profile (C:\Documents and Settings\[Имя пользователя]\Application Data\Terrasoft\[Версия Terrasoft])

Terrasoft 3.2.0.34
Office 2007 (12.0.4518.1014)
win 7

Проведите обновление до более новой версии 3.2.0.76
Обратитесь в службу технической поддержки для предоставления обновления.

При создании шаблона отчета world или выгрузки в
world отчета появляются окна прикрепил скрин, которые не убираються и не
реагируют на кнопки закрыть

Terrasoft 3.2.0.34
Office 2007 (12.0.4518.1014)
win 7

Данная проблема решена в более поздних версиях Terrasoft. Для ее решения на Вашей текущей версии необходимо провести обновление.

Максим, служба технической поддержки ждет от Вас запрос на обновление с указанием Вашего e-mail адреса, названия компании и Вашей должности.
Только после получения от Вас запроса в письменном виде мы сможем предоставить ссылку на обновление.
Спасибо.

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

Необходимо в шаблон сообщения добавить ссылку, часть которой заполняется макросом:
http://site.ru/#ID#
Как такое можно реализовать?

Если http://site.ru/ делаю ссылкой, тогда макрос не будет ссылкой и нельзя будет из сообщения перейти по ссылке, кликнув на нее.

Нравится

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

Kat, попробуйте не делать текст "http://site.ru/" ссылкой, а просто дописать его к макросу #ID#, как Вы написали выше. Если письмо отправляется в формате HTML, MS Outlook автоматически отобразит эту строку как гиперссылку, даже если перед отправкой она выглядит как обычная строка. Проверял на MS Outlook 2007, версии Terrasoft 3.1.1.26. У Вас же эта версия, если не ошибаюсь?

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

Добрый день!

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

версия TS XRM 3.3.1.97

Нравится

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

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

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

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

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

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

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

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

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

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

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

Суть проблемы вот в чем:
Заказчик прислал 5 вариантов шаблонов договоров.
Мне нужно каким-то образом сделать, чтобы в зависимости от типа договора применялся определенный шаблон.
То есть в пункте «отчеты» кнопка «печатная форма договора» одна, а шаблон подставлялся в зависимости от выбранного типа договора.

Каким образом можно это реализовать? В какую сторону мне двигаться или хотя бы куда читать?
Заранее спасибо большое всем откликнувшимся!

Нравится

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

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

То есть, если я дам 5 одинаковых названий, это отобразится как один пункт меню?
Супер! Спасибо огромное!

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

Странно, а какая у Вас версия системы? На 3.3.2 все работает.

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

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

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

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

На основании этого пользовательского запроса в разделе "Шаблоны сообщений" есть шаблон письма Outlook с названием "Уведомление по задаче", в тексте которого используются ссылки на поля основной детали пользовательского запроса (в виде #Заголовок# и т.п.).

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

Нравится

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

Валерий, добрый день.

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

Добрый день, спасибо за ответ.
Этот запрос я привел просто в качестве примера. На самом деле не получается составить запрос для такой ситуации:
- шаблон письма для контакта, при этом в шаблон письма необходимо подставить факс ответственного за контакт.

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

update:
В принципе можно так, как Вы ответили в этой теме, но это слегка избыточно:
http://community.terrasoft.ua/forum/topic/5023

Валерий, конкретно Вашу задачу можно решить так:

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

Тип средства связи факс равно факс или
Тип средства связи факс пусто

В итоге получим те записи, у которых указан факс на детали "Средства связи" и те, у которых факса нет вообще. Если у контактов факс указан два раза, он продублируется. В шаблон письма можно вынести только колонку "Факс", а тип будет использоваться только для фильтрации.

Спасибо, Олег!

Здравствуйте! Такой функционал уже доработан.
http://www.community.terrasoft.ua/blogs/7535

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