Привязка письма к заказу.

Использован элемент БП "Отправить email". Каким образом привязать такого письмо к заказу (активностям)? В более ранних версиях можно было создавать активность вручную через "Добавление данных" и последующим использованием "Действие процесса", где выбирался процесс "Отправить сообщение". Сейчас этот функционал убрали.

Нравится

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

Здравствуйте, Александр!

Элемент "Отправить email" не создает в системе записей. В версии 770 возможность добавлять активность с типом email и отправлять письмо элементом "Задание сценарий".

Пример реализации можно посмотреть в процессе "Отправить email контакту обращения" в продуктах линейки Service.

Здравствуйте, Александр!

Элемент "Отправить email" не создает в системе записей. В версии 770 возможность добавлять активность с типом email и отправлять письмо элементом "Задание сценарий".

Пример реализации можно посмотреть в процессе "Отправить email контакту обращения" в продуктах линейки Service.

Код используемый в процессе "Отправить email контакту обращения" не работает корректно, при попытке его смоделировать и запустить на кастомном процессе.

Скорее всего, в структуре процесса в параметре Usings не подключены пространства имен, методы которых используются в процессе. Проверьте, пожалуйста.

Если ошибка при публикации сохранится, предоставьте, пожалуйста, скриншот ошибки при компиляции.

Usings добавлены так же как в процессе "Отправить email контакту обращения"

Строки 38-40: в 770 был изменен алгоритм получение userConnection пользователя. Теперь userConnection получается так:

var userConnection = Get<UserConnection>(“UserConnection”);

Строка 37: предполагаю, что элемент процесса "Добавить данные" называется по другому, соответственно в коде Вы обращаетесь к элементу, которого нет на диаграмме.

Строка 37: Элемент переименовывался соответственно. И в коде, и сам элемент, так чтобы они совпадали. Это проблемы не решало.

Попробуйте поискать данный элемент в параметре процесса:

Думаю, элемент, на который ругается не будет отображаться.

Элемент присутствует, но кодом он не подхватывается :confused:

У элемента есть два параметра:

  • Caption (Заголовок)
  • Name (Название)

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

Самый простой способ - выделить элемент на диаграмме. Тогда его название выделится в структуре процесса.

AddDataUserTask1 - название элемента в структуре и на диаграме.
AddDataUserTask1 в коде используется тоже самое название, результата это не дает.

Здравствуйте!

Давайте поступим следующим образом - скомпилируйте Ваш процесс. В результате появится ошибка. Предоставьте, пожалуйста, скриншот ошибки и листинг кода +- 50 строк от строки, в которой произошла ошибка (для просмотра исходного кода в диаграмме процесса необходимо открыть меню "Дополнительно" и выбрать пункт "Открыть исходный код")

namespace Terrasoft.Core.Process
{
 
	using Newtonsoft.Json;
	using Newtonsoft.Json.Linq;
	using System;
	using System.Collections.Generic;
	using System.Collections.ObjectModel;
	using System.Drawing;
	using System.Globalization;
	using Terrasoft.Common;
	using Terrasoft.Configuration;
	using Terrasoft.Core;
	using Terrasoft.Core.Configuration;
	using Terrasoft.Core.DB;
	using Terrasoft.Core.Entities;
	using Terrasoft.Core.Factories;
	using Terrasoft.Core.Process;
	using Terrasoft.Core.Process.Configuration;
	using Terrasoft.Mail;
	using Terrasoft.Mail.Sender;
 
	#region Class: UsrProcess1MethodsWrapper
 
	/// <exclude/>
	public class UsrProcess1MethodsWrapper : ProcessModel
	{
 
		public UsrProcess1MethodsWrapper(Process process)
			: base(process) {
			AddScriptTaskMethod("ScriptTask1Execute", ScriptTask1Execute);
		}
 
		#region Methods: Private
 
		private bool ScriptTask1Execute(ProcessExecutingContext context) {
			var activityId = AddDataUserTask1.RecordId;
var userConnection = Get<UserConnection>("UserConnection");
var emailClientFactory = ClassFactory.Get<EmailClientFactory>(new ConstructorArgument("userConnection", UserConnection));
var activityEmailSender = new ActivityEmailSender(emailClientFactory, UserConnection);
var entity = new Terrasoft.Configuration.Activity(UserConnection);
if (entity.FetchFromDB(activityId)) {
	entity.SetColumnValue("IsHtmlBody", true);
	entity.Save();
}
activityEmailSender.Send(activityId);
return true;
		}
 
		#endregion
 
	}
 
	#endregion
 
	#region Class: UsrProcess1
 
	/// <exclude/>
	public class UsrProcess1 : Terrasoft.Core.Process.Process
	{
 
		#region Class: ProcessLane1
 
		/// <exclude/>
		public class ProcessLane1 : ProcessLane
		{
 
			public ProcessLane1(UserConnection userConnection, UsrProcess1 process)
				: base(userConnection) {
				Owner = process;
				IsUsedParentUserContexts = false;
			}
 
		}
 
		#endregion
 
		#region Class: AddDataUserTask1FlowElement
 
		/// <exclude/>
		public class AddDataUserTask1FlowElement : AddDataUserTask
		{
 
			#region Constructors: Public
 
			public AddDataUserTask1FlowElement(UserConnection userConnection, UsrProcess1 process)
				: base(userConnection) {
				UId = Guid.NewGuid();
				Owner = process;
				Type = "ProcessSchemaUserTask";
				Name = "AddDataUserTask1";
				IsLogging = true;
				SchemaElementUId = new Guid("cb50206d-a0b9-482c-a7df-3310717b43ea");
				CreatedInSchemaUId = process.InternalSchemaUId;
				SerializeToDB = true;
			}
 
			#endregion
 
			#region Properties: Public
 
			private Guid _entitySchemaId = new Guid("c449d832-a4cc-4b01-b9d5-8a12c42a9f89");
			public override Guid EntitySchemaId {
				get {
					return _entitySchemaId;
				}
				set {
					_entitySchemaId = value;
				}
			}
 
			#endregion
 
		}
 
		#endregion
 
		public UsrProcess1(UserConnection userConnection)
			: base(userConnection) {
			InitializeMetaPathParameterValues();
			UId = Guid.NewGuid();
			Name = "UsrProcess1";
			SchemaUId = new Guid("62bbfc92-cc55-451a-afc4-a87fd1cb5433");
			SchemaManagerName = "ProcessSchemaManager";
			SerializeToDB = true;
			SerializeToMemory = true;
			IsLogging = true;
			ProcessModel = new UsrProcess1MethodsWrapper(this);
			InitializeFlowElements();
		}
<a href="/system/files/images/10.jpg" class="ts_fancybox"><img src="/system/files/images/10-thumb.jpg" alt="" /></a>

Подобная проблема возникает в любым элементом, попробовал добавить чтение данных, а в коде использовать его имя (ReadDataUserTask1) - пишет, элемент не найден

Здравствуйте!

Пожалуйста, напишите на support@terrasoft.ru - нужно будет удаленно подключаться и анализировать. К сожалению, по коду нельзя определить в чем проблема.

А что конкретно написать?

Укажите описание проблемы и ссылку на этот топик.

"Бахматов Александр Валерьевич" написал:Использован элемент БП "Отправить email". Каким образом привязать такого письмо к заказу (активностям)? В более ранних версиях можно было создавать активность вручную через "Добавление данных" и последующим использованием "Действие процесса", где выбирался процесс "Отправить сообщение". Сейчас этот функционал убрали.

Добрый день Александр!!!

странно что у вас вообще возникла проблема. В версии 7.7 и 7.8 даже попробовал создал Активность, через добавление данных, и далее через "действие процесса" отправил Email сообщение и все получилось. Нужно анализировать какие зависимости есть у того пакета, где создаете свой бизнес-процесс.

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