Управление учебным процессом ВУЗа  (03.07.2022)
Работа с шаблонами почтовых сообщений

Работа с шаблонами почтовых сообщений ведется в форме Сервер приложений на вкладке Шаблоны почтовых сообщений. Каждый шаблон имеет Имя, Тему, Тело, Скрипт, а также свойство Использует свойства класса.

В качестве значения свойства Использует свойства класса может быть установлена ссылка на один из бизнес-классов системы. В этом случае в теме и в теле сообщения можно будет обращаться к свойствам этого класса, заключая имена свойств в символы "%".

Пример:
Тема сообщения:

  Тестовое сообщение для %Name%, сформировано %CurrentUserName%
Тело сообщения:
1  Тестовое сообщение от базы данных - %Name% и GUID - %GUID%.
2
3  Значение локальной переменной local_variable = %local_variable%.
4
5  Значение глобальной переменной global_variable = %global_variable%.
6
7  %AdditionalMessageInfo%

В скрипте форматирования сообщения доступны следующие переменные:

  • ContextObject - контекстный объект, реализующий интерфейс IContext. Подробнее о возможностях данного интерфейса можно прочесть в Руководстве разработчика.
  • ID - ID объекта класса указанного в UsesPropertiesOfClass, свойства которого будут использоваться
  • Subject - текст темы сообщения
  • Body - текст тела письма
  • SourceClass - значение поля UsesPropertiesOfClass
  • Variables - (переменная типа "Scripting.Dictionary") список локальных переменных, в которую можно добавлять переменные и их значения
Помимо форматирования темы или тела сообщения, в скрипте можно и формировать их, изменяя соответственно переменные Subject и Body.

Скрипт форматирования сообщения:

01  Dim LDataSet, LTemp
02
03  ContextObject.DebugString "Hello from script!"
04
05  'добавление глобальной переменной, значение которой можно использовать не только в тексте письма
06  ContextObject.Variable("global_variable", False) = Now
07
08  'добавление локальной переменной, значение которой можно использовать в тексте письма
09  Variables.Add "CurrentUserName", ContextObject.GetName(ContextObject.ExecuteMethod("TUser", "GetCurrentUser", Null))
10
11  if Variables.Item("CurrentUserName") = "SYSDBA" then
12    Variables.Add "local_variable", "current user is SYSDBA"
13  else
14    Variables.Add "local_variable", "current user is simple user"
15  end if
16
17  ContextObject.DebugString "Test CreateDataSet"
18
19  set LDataSet = ContextObject.CreateDataSet("TDataBase")
20  LDataSet.AddQueryItem 0, "Name"
21  LDataSet.AddQueryItem 0, "Description"
22  LDataSet.AddQueryItem 0, "GUID"
23
24  LTemp = "TDataBase dataset:"  & vbNewLine
25
26  while not LDataSet.Eof
27    LTemp = LTemp & _
28      LDataSet.Field("Name") & ", " & _
29      LDataSet.Field("Description") & ", " & _
30      LDataSet.Field("GUID") & vbNewLine
31
32
33    LDataSet.Next
34  wend
35
36  Variables.Add "AdditionalMessageInfo", LTemp