Добрый день
Помогите,пожалуйста, как написать на С#:
в процессе страницы карточки е-мейл при создании (IsNew):
если е-мейл привязан к инциденту, то в поле "Кому" копировался эл.адрес Заявителя из этого Инцидента. Заранее спасибо
Нравится
в EnableSendButton у меня есть проверка на привязку к инциденту е-мейл-активности:
var IncidentId = Page.DataSource.ActiveRow.GetTypedColumnValue("IncidentId");
if (IncidentId != Guid.Empty)
{
var incidentNumber = String.Empty;
var incident = new Terrasoft.Configuration.ServiceRequest(Page.UserConnection);
if (incident.FetchFromDB(IncidentId)) {
incidentNumber = incident.Number;
}
Page.DataSource.ActiveRow.SetColumnValue("Title", "Обращение № " + incidentNumber);
}
Подскажите, пожалуйста, как на С# написать еще и чтобы в поле Кому копировался эл.адрес Заявителя этого Инцидента. Заранее спасибо
Здравствуйте, Татьяна!
Алгоритмически решение выглядит следующим образом:
var IncidentId = Page.DataSource.ActiveRow.GetTypedColumnValue("IncidentId");
if (IncidentId != Guid.Empty)
{
var incidentNumber = String.Empty;
//создать переменную, в которую необходимо присвоить заявителя
var incident = new Terrasoft.Configuration.ServiceRequest(Page.UserConnection);
if (incident.FetchFromDB(IncidentId)) {
incidentNumber = incident.Number;
//положить заявителя из инцидента в созданную Вами переменную по аналогии с номером
}
//выполнить запрос к базе с помощью EntitySchemaQuery для получения значения Email заявителя
Page.DataSource.ActiveRow.SetColumnValue("Title", "Обращение № " + incidentNumber);
//записать полученное значение в поле "Кому"
}
Если Вам необходима реализация, прошу обратиться к Вашему менеджеру для согласования реализации в рамках экспертных часов.
Добрый день
var esqQuery = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Contact");
esqQuery.AddColumn("Email");
string esqSqlText = esqQuery.GetSelectQuery(UserConnection).GetSqlText();
Page.DataSource.ActiveRow.SetColumnValue("Recepient", esqSqlText);
Так?
Здравствуйте, Татьяна.
Нет, не совсем.
Предлагаю Вам более простой вариант решения задачи, без кода.
Я так понимаю, речь идет о случае, когда Активность будет добавляться с детали "Активности" раздела "Инциденты".
В этом случае есть инструмент базовой функциональности для решения подобных задач.
Необходимо в разделе "Рабочие места" выделить раздел "Инциденты", перейти на вкладку "Детали" и настроить связь с разделом типа "Значение по умолчанию":
После выполнение настройки для применения изменений необходимо очистить Redis на сервере.
Единственное что, у данного варианта есть небольшой побочный эффект - для Активностей с типом Звонок и Задача поле "Кому" также будет заполняться (хоть визуально его нет на карточке, если Вы выведите его в реестр, то увидите значение).
Это можно решить бизнес-процессом по сигналам добавления записи с типами Задача или Звонок - в случае заполненности поля "Кому" просто его затирать.
P.S. Если решать задачу на уровне кода, то можно даже без EntitySchemaQuery, а, например, так:
if (IncidentId != Guid.Empty)
{
var incidentNumber = String.Empty;
Guid ApplicantGuid = new Guid(Guid.Empty);
var incident = new Terrasoft.Configuration.ServiceRequest(Page.UserConnection);
if (incident.FetchFromDB(IncidentId)) {
incidentNumber = incident.Number;
ApplicantGuid = incident.ApplicantId;
}
Page.DataSource.ActiveRow.SetColumnValue("Recepient", ApplicantGuid);
Татьяна, анализируйте ошибки. Открывайте исходный код и ищите строчку с ошибками (6289, 6293).
Но, мне кажется, Вам лучше использовать вариант без кода, т.к. он полностью решает Вашу задачу.