BPMonline: Создать инцидент из активности типа Email

Для того, чтобы открывать карточку создания инцидента из карточки письма, и автоматически переносить из нее некоторые значения, следует доработать систему таким образом:

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. Сохраните и опубликуйте схему.

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

Нравится

Поделиться

3 комментария

спасибо!

Добрый день.

Помогите реализовать следующее:
1. Нужно сделать в Активности кнопку "Таймер" у нового поля "Счетчик времени"
2. При нажатии на эту кнопку нужно, чтобы включится счетчик времени.
3. При отжатии этой кнопки, счетчик времени останавливался.
4. При повторном нажатии на эту кнопку и при условии, что состояниеактивности не конечное (т.е. не Завершена и не Отменена), счетчик продолжал отсчитывать время.

Заранее спасибо

Татьяна, для версии 5.Х встроенной функциональности для создания таймера нет, еобходимо сложное программирование с использованием сторонних библиотек либо веб-сервисов.Что касается версий 7.X и позднее, точно сказать не могу. Пожалуйста, обратитесь в техническую поддержку по адресу support@terrasoft.ru

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