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

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

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

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

  Тестовое сообщение для %Name%, сформировано %CurrentUserName%
Тело сообщения:
  Тестовое сообщение от базы данных - %Name% и GUID - %GUID%.

  Значение локальной переменной local_variable = %local_variable%.

  Значение глобальной переменной global_variable = %global_variable%.

  %AdditionalMessageInfo%

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

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

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

  Dim LDataSet, LTemp

  ContextObject.DebugString "Hello from script!"

  'добавление глобальной переменной, значение которой можно использовать не только в тексте письма
  ContextObject.Variable("global_variable", False) = Now

  'добавление локальной переменной, значение которой можно использовать в тексте письма
  Variables.Add "CurrentUserName", ContextObject.GetName(ContextObject.ExecuteMethod("TUser", "GetCurrentUser", Null))

  if Variables.Item("CurrentUserName") = "SYSDBA" then
    Variables.Add "local_variable", "current user is SYSDBA"
  else
    Variables.Add "local_variable", "current user is simple user"
  end if

  ContextObject.DebugString "Test CreateDataSet"

  set LDataSet = ContextObject.CreateDataSet("TDataBase")
  LDataSet.AddQueryItem 0, "Name"
  LDataSet.AddQueryItem 0, "Description"
  LDataSet.AddQueryItem 0, "GUID"

  LTemp = "TDataBase dataset:"  & vbNewLine

  while not LDataSet.Eof
    LTemp = LTemp & _
      LDataSet.Field("Name") & ", " & _
      LDataSet.Field("Description") & ", " & _
      LDataSet.Field("GUID") & vbNewLine


    LDataSet.Next
  wend

  Variables.Add "AdditionalMessageInfo", LTemp