Перейти к содержанию

Шаблоны почтовых уведомлений

ℹ️ Шаблоны почтовых уведомлений — это конструктор, применяемый для типизации писем MS Outlook при создании различных видов уведомлений в "Первой Форме".

Создание шаблона

Чтобы добавить новый шаблон, нажмите кнопку Добавить. Откроется окно создания нового почтового шаблона. Введите данные и нажмите кнопку Сохранить.

ℹ️ Название создаваемого почтового шаблона должно совпадать с именем события, для которого он предназначается (см. ниже "Список событий"). Например, шаблон TaskCreated будет задействован только при создании новой задачи, а StateChanged — только при смене статуса задачи. Изменения в именах недопустимы! Поле "Описание" может содержать любую информацию.

ℹ️ Ссылки на задачи в шаблонах почтовых уведомлений формируются в формате /spa/tasks/{TaskID} без учета значения атрибута UseNewTaskCard в таблице базы данных Users

Список событий, для которых могут создаваться почтовые шаблоны

Название Описание
Absence Создано отсутствие
AcceptantAssigned Для подписи назначен акцептант
AcceptantAssignedEscalate Акцептант эскалировал право подписи
AcceptantAssignedWithEmptyFields Назначен акцептант, поля подписи не заполнены
AcceptantAssignedWithEmptyFieldsEscalate Акцептант эскалировал право подписи, поля подписи не заполнены
AcceptantDelegated Акцептант делегировал право подписи
AcceptantDelegatedEscalate Акцептант, которому было делегировано право подписи, эскалировал ее
AcceptantDelegatedWithEmptyFields Акцептант делегировал право подписи, поля запроса акцепта не заполнены
AcceptantDelegatedWithEmptyFieldsEscalate Акцептант, которому было делегировано право подписи, эскалировал его; поля запроса акцепта не заполнены
AccessDenied Отказ в доступе к задаче
AssistantAdded Добавлен заместитель исполнителя
AssistantAddedwDates Добавлен заместитель на определенный срок
AssistantRemoved Заместитель удален
ChangeGroupSubcatPermission Для группы пользователей изменено право доступа к категории
DefaultTemplate Стандартный шаблон по умолчанию
DueChanged Изменен срок выполнения задачи
DueChangedOverdue Изменен срок выполнения просроченной задачи
DynSignatureAccepted Динамическая подпись акцептована
DynSignatureRejected Динамическая подпись отклонена
EditComment Комментарий отредактирован
EditCommentSimple Комментарий отредактирован из ленты
ExtParamsChanged Изменено значение ДП
FileDescriptionUpdated Редактирование описания файла
HelperNotification Уведомление заместителям при назначении замещающего исполнителем
NewComment Получен новый комментарий
NewCommentSimple Получен новый комментарий (для внешних пользователей, ни разу не заходивших в систему)
NewPassword Изменен пароль
Noacceptant У задачи нет исполнителей
PasswordRecovery Отправлено письмо с кодом для восстановления пароля
PasswordRecoveryForCustomerZone Отправлено письмо с кодом для восстановления пароля для личного кабинета
PerformerAdded В список исполнителей под задаче добавлен новый исполнитель
PerformerAddedToOwner В список исполнителей под задаче добавлен новый исполнитель (письмо заказчику)
PerformerRefused Один из исполнителей отказался от выполнения задачи
PerformerRemoved Из списка исполнителей по задаче удален один из исполнителей
RemindPassword Отправлен запрос на восстановление пароля
ResponsibleAdded Назначен ответственный исполнитель по задаче
ResponsibleRemoved Ответственный исполнитель по задаче изменен
SignatureAccepted Подпись акцептована
SignatureRejected Подпись отклонена
SignatureSnapshot Создается "HTML-снимок" всех параметров задачи. Используется для сохранения текущего состояния задачи (например, при акцепте)
StateChanged Смена статуса
StateChangedForcibly Принудительная смена статуса
StateChangeNotificationToAll Всем подписчикам отправлено уведомление об изменении статуса задачи
SubscriberAdded К задаче добавлен подписчик
TaskAccepted По задаче получен акцепт
TaskCreated Задача создана
TaskCreateNotifySend Отправлено уведомление о создании задачи
TaskCreatePerformerSend Отправлено уведомление исполнителю о создании задачи
TaskCreateSubscriberSend Отправлено уведомление подписчику о создании задачи
TaskFromYourNameCreated Отправлено уведомление о создании задачи от имени пользователя (он — заказчик)
TaskTextChanged Изменен текст задачи
TaskTextChangedWithoutDifferencies Текст задачи пересохранен без изменений
UserInvitation Пользователь приглашен в систему

Редактирование шаблона (описание шаблона)

Чтобы отредактировать описание шаблона почтового уведомления, нажмите на кнопку (кнопка «Редактировать») в начале соответствующей строки. Вы сможете изменить описание шаблона и флажок включения/отключения шаблона. Чтобы сохранить внесенные изменения, нажмите иконку (кнопка «Сохранить»), а чтобы отменить изменения — иконку (кнопка «Отмена») в начале строки. Чтобы удалить шаблон, нажмите на иконку (кнопка «Удалить») в конце соответствующей строки.

⚠️ Преднастроенные системные шаблоны (TaskCreated, StateChanged и др.) нельзя удалять и отключать.

Редактирование шаблона

Чтобы перейти к редактированию самого шаблона почтового уведомления, щелкните мышью по соответствующей строке таблицы. Откроется окно редактирования шаблона. | Параметр | Описание | | --- | --- | | Название | Указание перехода, при осуществлении которого будет применен созданный шаблон. |

Если ввести имя шаблона, которого еще нет в списке, и нажать Перейти к выбранному шаблону, этот шаблон будет создан и в него будет осуществлен переход | Описание | Произвольное описание действий шаблона | | --- | --- | | Включен | Включение\отключения шаблона | | Выбор категории | Привязка шаблона к определенной категории | | Язык | Выбор языка интерфейса, для которого будет использоваться шаблон.
При отправке письма по умолчанию используется язык интерфейса, выбранный в профиле пользователя, которому отправляется письмо. Если для этого языка шаблона нет, используется шаблон для языка, указанного как международный (Languages.IsInternational = 1). Если и для международного языка нет шаблона, будет использоваться шаблон для языка приложения по умолчанию (Languages.IsDefault = 1) | | Тестовая отправка почты | Пользователь, которому будет отправлено письмо по нажатию кнопки Отправить тестовое письмо | | Номер задачи | Номер задачи, данные из которой будут использоваться при отправке тестового письма |

Шаблоны почтовых уведомлений построены на основе html и настраиваются подобно дизайну категории.

В окне дизайнера осуществляется редактирование шаблона письма для события. Все действия производятся на вкладке HTML (меню справа).

Элементы шаблона

Parameters

Элемент Описание
taskuser Заказчик
subcatid ID категории
taskid Номер задачи
entity Название сущности
tasktext Текст задачи
tasktextshort Краткое содержание текста задачи
userid ID пользователя
createdtask Дата создания задачи
orderedtime Срок задачи
priorityid Приоритет задачи
state Статус задачи
srokname Название срока выполнения
endtime Дата завершения
ExtUsersMailerFrom Почтовая рассылка для внешних пользователей (адрес)
ExtUsersMailerFromName Почтовая рассылка для внешних пользователей (имя)
username Отображаемое имя заказчика задачи
userphone Рабочий телефон заказчика задачи
userfullname Полное имя заказчика задачи
usernick Логин заказчика задачи
performer Исполнитель
performerid ID исполнителя
performername Отображаемое имя исполнителя задачи
performernick Логин исполнителя
performerfullname Полное имя ответственного исполнителя
nowtime Текущее время
taskstarttime Время начала работы над задачей
commentcreatetime Время написания комментария
custommailtext Пользовательский текст письма
paramechangedtemplate Изменение ДП по шаблону
commentuser Пользователь-отправитель комментария
commentto Сообщение
newText Новый текст сообщения
oldText Старый текст сообщения
login Ваш логин
password Ваш пароль
userName Ваше имя
commentspecid ID комментария
spectaskid Префикс + ID задачи
hrefRecoverPassword Текст ссылки на восстановление пароля
passwordRecoveryLink Ссылка на восстановление пароля

Resources

Элемент Описание
taskFrom От
performer Исполнитель
taskCat Категория, в которой находится задача
date Дата
taskNum Номер задачи
customer Заказчик
responsible Ответственный исполнитель
taskOrdered Срок
responsibleaddedhead Вас назначили ответственным исполнителем по задаче
performerremovedhead С Вас сняли исполнение по задаче
responsibleremovedhead C Вас сняли ответственность за исполнение задачи
removedyoufromperfs Вы больше не являетесь исполнителем задачи
removedyoufromresponsible Вы больше не являетесь ответственным исполнителем задачи
taskcreatedSubj Новая задача в вашей категории
extparamschanged Изменены доп. параметры
extparamschangedbody Изменились значения дополнительных параметров
changed_comment_text Изменил текст своего комментария
newcommentmessage Вы получили новый комментарий
oldcommentUserLink Отправитель старого комментария
oldcommentResipients Адресаты старого комментария
commentto Вы получили новый комментарий→
taskTextChangedHeader Заказчик изменил текст задачи
oldText Старый текст
taskcreatefromyourname От Вашего имени поставлена задача
assistantRemoved Вы были удалены из списка заместителей пользователя
assistantAdded Вы были добавлены в список заместителей
login Ваш логин
password Ваш пароль
passwordChange Смена пароля
hello Здравствуйте
betterChangeYourPassword Советуем изменить пароль при первом входе в систему
bestRegards С наилучшими пожеланиями
followTheLinkBelow Перейдите по ссылке ниже
andEnterCode И введите код
passwordRecoveryIsImpossible Восстановление пароля невозможно

Controls

Элемент Описание
tasklink fullmode Открыть (ссылка на задачу) если вышеуказанная ссылка не работает или Вы находитесь в удаленном офисе, попробуйте эту (альтернативная ссылка)
spectaskid Префикс + ID задачи
SubcatPathLink Полный путь к категории
extparams ДП
unsubscribelink Ссылка на прекращение подписки (Отписаться)
subjectPrefix Префикс темы
subjectPostfix Постфикс темы
commentid ID сообщения (1f-system-comment-id)
parentTaskLink Ссылка на родительскую задачу
gototask Перейти в задачу (ссылка)
mailheader Заголовок письма
customerlink Ссылка на заказчика
responsiblelink Ссылка на ответственного исполнителя
altlink Альтернативная ссылка
assignedyou_user_text Добавлен исполнитель
deletedperformerlink Удален исполнитель
changedtaskstate Изменить статус задачи
commentuserlink Отправитель комментария
oldcommentUserLink Отправитель старого комментария
addressedto Получатели комментария
performersAssignedForYouTaskHead Назначенные исполнители задачи, в которой вы являетесь заказчиком
taskTextChangedUser Пользователь, который изменил текст задачи
addedtoassistantsof_user Назначенный заместителем
taskonyourbehalfcreatedby_user_insubcat Задача, созданная пользователем от вашего имени
addedtoassistantsof_user_wdates Период замещения
removedfromassistantsof_user Удален из списка заместителей пользователя
addedtoassistantsof_user Добавлен заместителем пользователя
performeraddedlink Ссылка на назначенного исполнителя
apptitle Имя приложения из общих настроек приложения
helpers Исполнители
userwhochangedlink Пользователь, который изменил ссылку
internalResolutionLinks Кнопки резолюций подписи (Внутренние ссылки)
externalResolutionLinks Кнопки резолюций подписи (Внешние ссылки)
attachments Все вложения. При добавлении элемента в шаблон в письме будут отображаться все вложенные в задачу файлы или ссылки на них, в зависимости от параметра "Получать файлы в виде вложений, а не ссылок" в профиле конкретного пользователя.

Пример шаблона в html

<email>
   <subject>

   </subject>
   <mailbody>
     <style media="all" type="text/css">

     </style>

     <div class="previewForMailAgents" style="display: none;">

     </div>

     <table class="maintable" align="left" cellpadding="3" cellspacing="0">
         <tbody>

         </tbody>
     </table>
   </mailbody>
</email>

Тема письма будет составлена из параметров, помещенных в тег <subject>. В примере ниже тема будет отображаться как "Новая задача: краткий текст задачи":

<subject>
 <input style="" class="resource" value="taskcreatedSubj" id="taskcreatedSubj" type="text"/>
 <span style="" class="inlinetext">
  :
 </span>
 <input class="parameter" style="" value="tasktextshort" id="tasktextshort" type="text"/>
</subject>

Тело письма размещается внутри тегов <mailbody> и далее внутри <table>.

Стили в письме размещаются в теге <style>. Например можно задать шрифт для таблицы:

<style media="all" type="text/css">
 .maintable{font-family: Lucida Grande, Tahoma;}
</style>

Если потребуется поменять цвет кнопки "перейти в задачу" в css-классе .gototask, то нужно поменять значения background-color и border-color:

.gototask{color:#165082; background-color:#d9d9d9; display:block; width: 200px;
text-align:center; border-style: solid; border-width: 5px; border-color: #d9d9d9; text-decoration: none; font-weight:bolder;  font-size: 13px;}

Цвет шапки меняется в классе .header, значение background-color:

.header{background-color:#008000; color:#ffffff; padding-top:0px;padding-bottom:0px;height:40px;}

Стили ссылок на пользователей, такие как "заказчик" или "ответственный", задаются классом

.userlink{text-decoration: none; font-weight:bolder; color:#165082}

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

<tr class="test">

и добавить класс для стилей:

.test { color:#ffffff; }

Список классов по умолчанию

Описание Класс
Основная таблица maintable
Ссылки на пользователей .userlink
Список доп параметров .acllextparams
Ссылка-кнопка "Перейти в задачу" .gototask
Ссылка на категорию .subcatlink
Заголовок письма .header
Текст задачи .tasktext
Ссылка-кнопка "Подписать" .acceptsignature
Ссылка-кнопка "Сохранить" .rejectsignature
Ссылка "Прекратить подписку" .unsubscribe
Альтернативная ссылка на задачу .altlink

Особенности настройки

ℹ️ Если в приложении включена отправка уведомлений на почту, то в системной категории Уведомление о прочтении на вкладке "Почтовые ящики" должен быть настроен ящик, указанный в Общих настройках приложения в параметре Почтовый ящик для ответов. При необходимости можно добавить также ящик, указанный в параметре Внешний почтовый ящик для ответов.

Ссылка на задачу в новых шаблонах

Для вставки в текст письма ссылки на задачу "Первой Формы" в новых шаблонах должен содержаться следующий текст:

<div class="main-footer">

    <input type="text" class="control" value="" id="gototask" style=""/>

</div>

Пример шаблона:

<email style="width: 1357px; height: 43px;">
 <subject>
         RE: Согласование документа
         <input type="text" class="parameter" style="" value="tasktextshort" id="tasktextshort"/>
 </subject>
 <mailbody>
         <style media="all" type="text/css">
                 .main, table, a {font-family: Lucida Grande, Tahoma;} a{text-decoration: none; color:#35618c;}
                 a:visited {color: #35618c;} .main-content{color:#000000;} .secondary-content{color:#cccccc;
                 margin-top:10px;} .main-footer{margin-top:10px;} .techinfo {display:none;} .signatures
                 { margin: 20px 0;} .signatures a { margin-right: 10px; display: inline-block; padding:
                 8px 15px; background: #ccc; color: #fff; border-radius: 14px;white-space: nowrap;
                 margin-bottom: 10px; } a.resolution-accept {background: #4caf50 !important;} a.resolution-reject
                 {background: #f44336;} table.ext-params{font-size: 1em;}table.ext-params td { vertical-align:
                 top; padding: 0; padding-right: 5px;font-size: 1em; } .information-span { display:
                 block; margin: 10px 0; }.ext-params {margin-top: 10px;}.gototask {margin-right: 5px;}
         </style>
         <div class="main" align="left" width="100%">
                 <div class="main-content">
                         Поступил новый документ
                         <input type="text" class="extparameter" value="ExtParam76840" id="extparam-76840"/>
                         от
                         <input type="text" class="extparameter" value="ExtParam76840" id="extparam-76840"/>
                         , документ на сумму
                         <input type="text" class="extparameter" value="ExtParam77740" id="extparam-77740"/>
                         <br/>
                         Требуется подпись:
                         <input type="text" class="parameter" style="" value="reasoninfo" id="reasoninfo"/>
                         <input type="text" class="control" value="infoextparamtable" id="infoextparamtable" style=""/>
                         <br/>
                 </div>
                 <div class="main-footer">
                         <input type="text" class="control" value="" id="gototask" style=""/>
                 </div>
         </div>
 </mailbody>
</email>

Комментарии

Если в теме письма присутствует текст [1F[номер_задачи], то при ответе на это письмо тело ответного письма будет опубликовано как комментарий в указанной задаче. Отправитель письма будет указан как отправитель комментария.

В самом почтовом клиенте такие письма будут иметь общую тему и поэтому будут выстраиваться в цепочку (если в почтовом клиенте включено отображение цепочек писем).

Если в теме письма присутствует текст [1F[номер_задачи], а в теле письма — 1f-system-comment-id:номер_комментария, то при ответе на это письмо тело ответного письма будет опубликовано как ответный комментарий к указанному. Отправитель письма будет указан как отправитель комментария.

ℹ️ 1f-system-comment-id:номер_комментария — это служебный текст, пользователю он не интересен, и поэтому в шаблоне его лучше скрыть (например, выводить белым цветом на белом фоне).

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

Вынесение резолюций по подписям

Для вынесения резолюций по запрошенной подписи в почтовый шаблон помещаются ссылки вида:

https:///spa/tasks/?TaskSignatureID=&ResolutionID=&SignatureAction=

где:

Параметры signatureActionId и SignatureResolutionTypes частично пересекаются, т.к. типу резолюции однозначно соответствует выполняемое действие, поэтому можно указывать только один из этих двух параметров. Например, если для подписи доступны две резолюции "Подписать" и "Подписать с замечаниями", то они будут иметь одинаковое значение signatureActionId=0, но разные SignatureResolutionTypes.

Формат кнопок для вынесения резолюций

Ссылки в кнопках для вынесения резолюций по запрошенным подписям могут иметь формат URL или mailto.

Ссылка mailto — это специальный тип гиперссылки в HTML, которая при клике открывает почтовый клиент по умолчанию на устройстве пользователя для создания нового письма с заранее заполненными данными.

Формат ссылки определяется значением пользовательской настройки UseMailToLinksForSignaturesFromEmails:

  • при значении UseMailToLinksForSignaturesFromEmails=1 ссылки будут иметь формат mailto: \<адрес>?subject=\<тема ответа>&Body=\<текст ответа>, и по нажатию на ссылку будет отправляться письмо на адрес, указанный в Общих настройках приложения в параметре Почтовый ящик для ответов или Внешний почтовый ящик для ответов. Это письмо будет обработано заданием ServiceMailBoxesJob, и по подписи будет вынесена выбранная акцептантом резолюция. Текст ответного письма будет указан в качестве комментария к резолюции.

В системной категории Уведомления о прочтении будет создаваться задача с текстом вида "TSID=59354|A=Accept", где значение TSID — это ID запрошенной подписи (из таблицы БД TaskSignatures), а значение A — это ID вынесенной резолюции.

  • при значении UseMailToLinksForSignaturesFromEmails=0 (или при пустом значении) ссылки будут иметь формат обычной адресной строки (URL), и по нажатию на ссылку будет открываться интерфейс "Первой Формы".

Экспорт почтовых шаблонов

При выполнении экспорта шаблонов будет сгенерирован файл TemplatesExportFile.xml, в котором будут сохранены все настроенные в системе шаблоны.

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

Импорт почтовых шаблонов

При импорте шаблонов из xml-файла весь список новых шаблонов будет добавлен в конец общего списка.

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

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