Как написать на С#

Добрый день
Помогите,пожалуйста, как написать на С#:
в процессе страницы карточки е-мейл при создании (IsNew):
если е-мейл привязан к инциденту, то в поле "Кому" копировался эл.адрес Заявителя из этого Инцидента. Заранее спасибо

Нравится

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

в 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).

Но, мне кажется, Вам лучше использовать вариант без кода, т.к. он полностью решает Вашу задачу.

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