Добрый день! Необходимо реализовать след. задачу: при сохранении карточки документа формировать письмо в Outlook'е со след. параметрами:
1
Вероятно нужно создать шаблон письма? Как это делается, хотелось бы знать в общих чертах.

Нравится

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

Да, Антон Владимирович, это делается с использованием раздела "Шаблоны сообщений". О нём можно почитать в инструкции, стр. 462-487. В двух словах, сначала создаётся пользовательский запрос, вытягивающий нужные поля из таблиц, потом на его основе - шаблон письма.

Разделы "Шаблоны сообщений" и "Запросы" находятся в верхнем меню "Интструменты".
раздел шаблонов
Запрос конструируется в таком вот построителе запросов:
построитель запросов
А шаблон - в окне нового письма Аутлука с подключеным плагином Terrasoft:
Аутлук

Понятно, спасибо. Когда я указываю раздел "Документы" и запрос для шаблона сообщения, на вкладке макросы доступны лишь поля запроса. А мне необходимо еще #Контакты.Обращение#, то есть Обращение контакта, которому посылается письмо. Его динамически можно в шаблон потом подставить или сразу можно как то в шаблон вставить?

А этот контакт имеет отношение к документу? Если да, можно вытянуть это поле в запрос, выбрав в построителе в дереве слева.

имеет) спасибо, что то не подумал сразу.

Предложенный вариант Александра хочется немного дополнить автоматизацией:

  • Дабавив шаблон получите его ID в Terrasoft Administrator: сервис Mail\Dictionaries\Templates\Main Grid\sq_MailTemplate, к примеру в моем случае - это  '{F8D4D576-DA9C-43BA-815D-14DC4ED92A21}'
  • В сервис Documents\General\Main Grid\scr_DocumentEdit перед блоком // Event handlers добавьте две вспомогательные функции:

    function ProcessSendEmail(Dataset) {
    	if (Self.Attributes('SkipSendEmail')) {
    		return;
    	}
    	if (ShowConfirmationDialog(
    		"Отправить E-mail клиенту?") != wmrYes) {
    		return;
    	}
    	var AddressList = [];
    	var ContactID = Dataset.Values('ContactID');
    	GetMailAddressesByContactID(ContactID, AddressList);
     
    	SendIncidentEmailToContact(Dataset, AddressList);
    }
     
    function SendIncidentEmailToContact(DocumentDataset, AddressList) {
    	var EmailSubject = "Коммерческое предложение №" +
    		DocumentDataset.ValAsStr('DocumentNumber');
    	var TemplateID = '{F8D4D576-DA9C-43BA-815D-14DC4ED92A21}';
    	var ID = DocumentDataset.Values('ID');
    	SendEmailByTemplate(TemplateID, {RecordID: ID, Address: AddressList, Subject: EmailSubject});
    }
  • В обработчик события dlDataOnDatasetAfterPost(Dataset) добвьте вызов ранее вставленной функции:
    function dlDataOnDatasetAfterPost(Dataset) { 
    	ProcessCopyOfferingDetail(Dataset);
    	ProcessSendEmail(Dataset)	
    }

Спасибо за дополнение, Павел!

Нужно реализовать условный макрос. Читал в руководстве следующее:

3

Что такое Пол в этом выражении? Вероятно это название макроса Пол, из запроса для этого шаблона?

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