Использую действие Добавление данных (AddDataUserTask1)
Мне нужно создать активность по клиенту типа SMS (в допустимых действиях только Задача, Звонок и E-mail)
Guid SchemaId = new Guid("C449D832-A4CC-4B01-B9D5-8A12C42A9F89");
var DefValues= new Dictionary
string, object>();
DefValues.Add("Recepient", Phone);
DefValues.Add("MsgSubject", "Информирование об открытии счета");
DefValues.Add("Body", Body);
DefValues.Add("StartDate", DateTime.Now);
DefValues.Add("DueDate", DateTime.Now);
DefValues.Add("OwnerId", "410006E1-CA4E-4502-A9EC-E54D922D2C00");//Петр Петрович Петров
DefValues.Add("AuthorId", "410006E1-CA4E-4502-A9EC-E54D922D2C00");//Петр Петрович Петров
DefValues.Add("StatusId", "4BDBB88F-58E6-DF11-971B-001D60E938C6");//Завершена
DefValues.Add("DetailedResult", "Cмс отправлено");
DefValues.Add("ContactId", Contact);
DefValues.Add("AccountId", Account);
DefValues.Add("EmployeeFolder", Otdelenie);
DefValues.Add("LeadId", LeadId);
AddDataUserTask1.EntitySchemaId = SchemaId;
AddDataUserTask1.RecordDefValues = DefValues;
return true;
Выходит ошибка : Неявное преобразование типа "System.Collections.Generic.Dictionary" в "Terrasoft.Core.Process.EntityColumnMappingValues" невозможно
Нравится
Если Вы хотите просто создать в скрипте новую активность с нужными значениями полей, а потом сохранить в базу с отработкой всей логики на объекте, то можно воспользоваться методами Entity. См., например, как это сделано:
var communication = new Activity(userConnection); communication.SetDefColumnValues(); if (isEmail) { communication.Title = (string)Terrasoft.Core.Configuration.SysSettings.GetValue(userConnection, "EmailTypeCommunicationPrintingFormText"); } else if (isImmidiateProcessing) { communication.StatusId = ActivityConsts.CompletedStatusUId; communication.Title = "Коммуникация по обработке на месте" ; } else { communication.Title = "Коммуникация с письменным ответом"; } communication.Commentary = serviceRequestEntity.GetTypedColumnValue<string>(shortDescColumn.Name); if(isEmail) { var contactEmail = serviceRequestEntity.GetTypedColumnValue<string>(emailColumnName.Name); if (!string.IsNullOrEmpty(contactEmail)) { communication.Recepient = string.Format("{0} <{1}>; ", serviceRequestEntity.GetTypedColumnValue<string>(contactNameColumn.Name), contactEmail); } communication.HtmlBody = communication.Title; } else if(isSms) { communication.Recepient = serviceRequestEntity.GetTypedColumnValue<string>(contactPhoneColumn.Name); } communication.ContactId = serviceRequestEntity.GetTypedColumnValue<Guid>(contactIdColumn.Name); communication.TypeId = activityTypeId; communication.ActivityCategoryId = ActivityConsts.ToDoCategoryUId; communication.MessageTypeId = ActivityConsts.OutgoingEmailtypeUId; communication.ServiceCallId = recordUId; communication.Save();
Александр, я поступила по-другому - создала новый процесс на добавление данных и передаю туда данные из основного событийного подпроцесса.
Есть вопросы по поводу сериализациии в БД - для чего она нужна и везде ли она нужна?
При добавление в событийный подпроцесс процесса по добавлению данных получена ошибка: Элемент "CreatedSMS" не может быть сериализован в БД, т.к. не сериализуется процесс.
Методом перебора вариантов получилось сохранить страницу только после того, как в процессе по добавлению данных убрала галочку «сериализовать в БД», все сохранилось и работает.
НО! Мне нужно в основной событийный подпроцесс после создания объекта добавить еще один процесс (старый, написан не мной) и опять такая же проблема: Элемент "SendSmsProcess" не может быть сериализован в БД, т.к. не сериализуется процесс.
Сериализация элемента процесса в БД нужна для того, чтобы после перерыва в выполнении процесса (например, пока пользователь не выполнит задачу) в нём хранились те же значения, что и до.
Могу ли я убрать из старого процесса галочку сериализации? Или как мне лучше всего поступить?
Анастасия, это зависит от конкретного процесса.
Уточните у того, кто его делал.