Публикация

Детали шаблонов сообщений

Всем привет!
Данная доработка дает возможность использовать в шаблонах сообщений детали пользовательских запросов (аналогично отчету 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 = '';
		}
...

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

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

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