"Действие" - "Отправить E-mail по шаблону" на детали "Задача", раздела "Инциденты"

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

Подскажите, пожалуйста, как можно добавить в контекстное меню детали «Задачи» (раздел Инциденты) поле «Действия» - «Отправить E-mail по шаблону».

Ранее, обращался на support, в процессе выполнения задачи, по предоставленным рекомендациям, у меня получилось добавить только amiActionMenu (в закладке «Невизуальные») сервиса wnd_TasksGridArea.
А в процессе создания обработчика событий, у меня ничего не получилось.
(Почему пишу об этом тут? – Потому, что прошло довольно таки много времени, с того дня как я обращался на support, не было времени попробовать сделать данный функционал.
А сейчас, как то неудобно писать об этом на поддержку :smile:)

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

Мне посоветовали, что бы я создал функцию BuildTaskActionMenu по аналогии с функцией BuildActionMenu() сервиса scr_MailCommon.
Но то, что у меня получилось – полная «каша».

Действия мои были таковыми:
1. Добавил новый amiActionMenu (в закладке «Невизуальные») сервиса wnd_TasksGridArea;
2. Назвал его «TaskActionMenuItem»;
3. На вкладке «События» добавил обработчик «TaskActionMenuItemOnExecute»;
4. Код….код пробивал, но никак :sad:.

В итоге, с того всего что я там «натворил» :smile:, «Действие» в контекстном меню детали «Задачи» появилось, но оно не работает. Ошибка: «Window is undefined».
Помогите, пожалуйста, как должен правильно отображаться добавленный мною обработчик событий?

Заранее благодарю!

Best Regards!
Roman Mykytenko

Нравится

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

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

Вы удивитесь, но на форуме тоже нередко отвечают сотрудники технической поддержки :)

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

Прикрепите их, пожалуйста.

Здравствуйте, Анна!
:smile:
Я как бы не удивляюсь, просто считаю что форум, как «не формальная обстановка» :smile:
Запрашиваемые Вами сервисы во вложении.
services.zip

Спасибо.

Ваш обработчик нужно заменить следующим:

var TemplateID = '{59DE08A1-8BF1-4509-87B6-CD0315ACDCCF}' //подставить идентификатор Вашего шаблона
var Dataset = BaseWorkspace.GridDataset;
var ID = Dataset.Values('ContactID');
var EmailSubject = Dataset.Values('Synopsis')
SendEmailByTemplate(TemplateID, {RecordID: ContactID, Subject: EmailSubject});

К скрипту реестра также необходимо подключить scr_MailUtils

Анна, к сожалению, ничего не получилось.
Обработчик заменил, идентификатор подставил, к реестру подключил scr_MailUtils, но увы….ошибка «BaseWorkspace is undefined».

Могли бы Вы более, подробнее описать, как правильно должен выглядеть обработчик.

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

Спасибо.

Попробуйте отредактировать код следующим образом:

var TemplateID = '{59DE08A1-8BF1-4509-87B6-CD0315ACDCCF}' //подставить идентификатор Вашего шаблона
var Dataset = grdData.DatasetLink.Dataset;
var ContactID = GetFieldValueFromDisabledField(Dataset, 'ContactID');
var EmailSubject = GetFieldValueFromDisabledField(Dataset,'Title')
if(ContactID){
 SendEmailByTemplate(TemplateID, {RecordID: ContactID, Subject: EmailSubject});
}else{
MessageBox('Нет адресата для отправки письма - поле контакт не заполнено!');
}

Здравствуйте, Анна!
Сейчас, после внесенных мною изменений, отображается теперь ошибка: «ID is undefined».
Могли бы Вы полностью показать код обработчика?
Спасибо.

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

function TaskActionMenuItemOnExecute(ActionMenuItem, Sender) {
	var TemplateID = '{B7990687-0C98-48BC-A9ED-510957CBEA12}' //подставить идентификатор Вашего шаблона
	var Dataset = grdData.DatasetLink.Dataset;
	var ContactID = GetFieldValueFromDisabledField(Dataset, 'ContactID');
	var EmailSubject = GetFieldValueFromDisabledField(Dataset, 'Title');
	if(ContactID){
	 SendEmailByTemplate(TemplateID, {RecordID: ContactID, Subject: EmailSubject});
	}else{
	MessageBox('Нет адресата для отправки письма - поле контакт не заполнено!');
}
}

Обратите внимание на функцию отправки письма: вероятнее всего, в нее подставляете не тот параметр

Анна, к сожалению, ничего не получилось.
Сделал в точности так, как Вы описывали.
Сейчас, при выборе пункта «Действия», контекстного меню детали «Задача», ничего не происходит.(почтовый клиент подключен к базе, контакти имеются, e-mail так же есть).
Идентификаторы шаблонов пробивал подставлять разные.
Также, в реестре «Задачи» сейчас в контекстном меню отображается два поля «Действия».
Одно поле соответственно активно.
Можно ли, данный функционал сделать идентичным тому, как в Задачах, имеется, введу, что бы была возможность выбирать шаблон из списка предложенных, а не ссылаться на один определенный?
Спасибо.

Роман, в случае, если Вами используется функция function BuildActionMenu(Window, ActionMenuItem, WorkspaceName), тогда для появления шаблона в списке достаточно указать в настройках шаблона Раздел:

001

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