"Действие" - "Отправить E-mail по шаблону" на детали "Задача", раздела "Инциденты"
Здравствуйте!
Подскажите, пожалуйста, как можно добавить в контекстное меню детали «Задачи» (раздел Инциденты) поле «Действия» - «Отправить E-mail по шаблону».
Ранее, обращался на support, в процессе выполнения задачи, по предоставленным рекомендациям, у меня получилось добавить только amiActionMenu (в закладке «Невизуальные») сервиса wnd_TasksGridArea.
А в процессе создания обработчика событий, у меня ничего не получилось.
(Почему пишу об этом тут? – Потому, что прошло довольно таки много времени, с того дня как я обращался на support, не было времени попробовать сделать данный функционал.
А сейчас, как то неудобно писать об этом на поддержку )
Сотрудник поддержки мне предоставил исщерпывающую информацию, но так как я не силен в программировании у меня не получается правильно создать обработчик событий.
Мне посоветовали, что бы я создал функцию BuildTaskActionMenu по аналогии с функцией BuildActionMenu() сервиса scr_MailCommon.
Но то, что у меня получилось – полная «каша».
Действия мои были таковыми:
1. Добавил новый amiActionMenu (в закладке «Невизуальные») сервиса wnd_TasksGridArea;
2. Назвал его «TaskActionMenuItem»;
3. На вкладке «События» добавил обработчик «TaskActionMenuItemOnExecute»;
4. Код….код пробивал, но никак .
В итоге, с того всего что я там «натворил» , «Действие» в контекстном меню детали «Задачи» появилось, но оно не работает. Ошибка: «Window is undefined».
Помогите, пожалуйста, как должен правильно отображаться добавленный мною обработчик событий?
Заранее благодарю!
Best Regards!
Roman Mykytenko
Нравится
Здравствуйте, Роман!
Вы удивитесь, но на форуме тоже нередко отвечают сотрудники технической поддержки :)
Для того, чтобы понять, что Вами сделано, нам нужны сервисы: сервис окна, где создан 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), тогда для появления шаблона в списке достаточно указать в настройках шаблона Раздел: