Для того, чтобы открывать карточку создания инцидента из карточки письма, и автоматически переносить из нее некоторые значения, следует доработать систему таким образом:
1. Создайте в карточке кнопку, создайте обработчик события кнопки, как показано на рисунке:
При нажатии на кнопку Вы автоматически перейдете в процесс карточки, в который уже будет добавлен стартовый сигнал обработчика нажатия на кнопку и пустой скрипт.
В скрипт следует добавить такой программный код:
var defValuesId = Guid.NewGuid();
var defValues = new Dictionary string, object>();
defValues.Add("Contact", Page.ContactEdit.Value.ToString());
defValues.Add("Account", Page.AccountEdit.Value.ToString());
defValues.Add("Title", Page.TitleEdit.Value.ToString());
var IncidentId = Guid.NewGuid();
UserConnection.UserContext.Add(defValuesId.ToString(), defValues);
var parameters =
new Dictionarystring, string> {
{"createWithUId", IncidentId.ToString()},
{"entitySchemaUId", "C449D832-A4CC-4B01-B9D5-8A12C42A9F89"},
{"defValuesId", defValuesId.ToString()}
};
OpenTaskEditPage.OpenerInstanceId = InstanceUId;
OpenTaskEditPage.UseCurrentActivePage = true;
OpenTaskEditPage.PageUId = new Guid("F2BF397B-8FA3-48BA-B691-57360871967A");
OpenTaskEditPage.PageParameters = parameters ;
OpenTaskEditPage.CloseMessage = "IncidentEditPageClosed";
После действия БП открытие окна добавить ожидание сигнала IncidentEditPageClosed
В скрипте после сигнала добавьте следующий программный код:
var entitySchemaManager = Page.Schema.SchemaManagerProvider.GetManager("EntitySchemaManager") as EntitySchemaManager;
var TargetScemaQuery = new EntitySchemaQuery(entitySchemaManager, "ServiceRequest");
var primaryColumn = TargetScemaQuery.AddColumn(TargetScemaQuery.RootSchema.GetPrimaryColumnName());
TargetScemaQuery.AddColumn("Number");
TargetScemaQuery.Filters.Add(TargetScemaQuery.CreateFilterWithParameters(
FilterComparisonType.Equal,
"Id",
IncidentId));
var incidentCollection = TargetScemaQuery.GetEntityCollection(UserConnection);
if(incidentCollection.Count != 0){
Page.IncidentEdit.SuspendAjaxEvents();
Page.IncidentEdit.SetValueAndText(incidentCollection[0].GetTypedColumnValueGuid>(primaryColumn.Name), incidentCollection[0].GetTypedColumnValuestring>("Number"));
Page.IncidentEdit.ResumeAjaxEvents();
}
2. Затем добавьте действие бизнес-процесса, и поместите его на тот же событийный подпроцесс, на котором уже лежат стартовое событие и скрипт. При необходимости событийный подпроцесс можно растянуть. Это важно для корректной работы процесса.
Проведите стрелку из скрипта в действие.
3. Переключитесь в расширенный режим и укажите в настройках действия бизнес-процесса следующее:
4. Сохраните и опубликуйте схему.
В результате по нажатию на кнопку будет открываться новая карточка, где автоматически будут заполнены соответствующие значения: