Добрый день!
При попытке заменить элемент "Карточка редактирования" на действие "открыть страницу" возникло два вопроса. (вызвано отсутствием у элемента "Карточка редактирования" события о закрытии окна)
1. как действием "открыть страницу" открыть существующий элемент?
2. как привязать существующий документ к процессу?

создал тестовый процесс

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

По факту получается следующее:
документ создается, привязка не происходит, в карточке открывается новый документ.

открываю страницу так:

DocumentId = Guid.NewGuid();
DocumentId = AddDataUserTask1.RecordId;
string DefValuesKey = Guid.NewGuid().ToString();
var defValues = new Dictionary string, object>();
var parameters = new Dictionarystring, string>();

string nowDate = UserConnection.CurrentUser.GetCurrentDateTime().ToString("dd.MM.yyyy");
                       
string DocumentDefaultTitle = "asdfasdfasd " +  " " + nowDate;
var DocumentPlaneDate = DateTime.Now.AddDays(5);

//System.Guid SpecialistSKA;
//if(SpecialistSKA == Guid.Empty){
var             SpecialistSKA = Terrasoft.Configuration.ProcessUtils.DefaultContactId;
//}

System.Guid AccountId = Guid.Empty;
System.Guid Opportunity = Guid.Empty;

var opportunity = new Terrasoft.Configuration.Opportunity(UserConnection);
bool currentOpportunitySpecified = opportunity.ExistInDB(ActiveTreeGridCurrentRowId);
bool opportunityNotSpecified = (Opportunity == Guid.Empty);
if(opportunityNotSpecified && currentOpportunitySpecified){
        Opportunity = ActiveTreeGridCurrentRowId;
        bool res = opportunity.FetchFromDB(Opportunity);
        Guid accountId = res ? opportunity.GetTypedColumnValueGuid>("AccountId") : Guid.Empty;
        if (accountId != Guid.Empty){
                AccountId = accountId;
        }
}


parameters.Add("defValuesId", DefValuesKey);
defValues.Add("Id", DocumentId);
defValues.Add("recordId", DocumentId);
defValues.Add("AgreementStatus", new Guid("FDA64288-F36B-1410-2296-002618DB6C97")); //Подготовка
defValues.Add("AgreementType", new Guid("3B7F427E-F36B-1410-FC9B-002618DB6C97")); //Типовой

//new
defValues.Add("Name", DocumentDefaultTitle);
defValues.Add("Type", new Guid("4E8B76A3-182B-E111-BD99-00155D040C1F")); //Заключение СКА
defValues.Add("Status", new Guid("FD9F327A-F36B-1410-0D8B-002618DB6C97")); //Ожидается проверка
defValues.Add("Owner", SpecialistSKA); //Ответственный
defValues.Add("Account", AccountId); //Account
defValues.Add("Opportunity", Opportunity); //Opportunity
defValues.Add("PlanEndDate", DocumentPlaneDate); //Opportunity

UserConnection.UserContext.Add(DefValuesKey, defValues);
parameters.Add("createWithUId", DocumentId.ToString());

UserTask1.OpenerInstanceId = InstanceUId;
UserTask1.PageParameters = parameters;
UserTask1.PageUId = new Guid("E201DACB-F6E5-46BD-978B-0E743398AB4B"); //FinallyCKAEditPage
UserTask1.UseOpenerRegisterScript = true;
UserTask1.CloseMessage= "AgreementeditPageClose";

return true;

Нравится

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

Здравствуйте, Илья!

А зачем эта строка?

parameters.Add("createWithUId", DocumentId.ToString());

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

defValues.Add("RecordId", DocumentId);

Обратите внимание, название параметра чувствительно к регистру.

Здравствуйте, Анна!

К сожалению ничего не получается.
Прикладываю тестовый процесс.
moduleprocess3.zip

Здравствуйте, Илья!
Процесс импортировать не получится, так как в нем используются элементы не из базовой конфигурации, то есть Вам также нужно предоставить страницы и объекты, используемые в процессе.
Либо создайте простой процесс, в котором просто будет открываться какая-нибудь базовая страница, чтобы локализировать проблему.
Также настораживает то, что начальное событие "AgreementedPageClose" находится в событийном подпроцессе, а обработчик - нет. Это, конечно, не влияет на открытие страницы, но лучше так не делать.
И еще, какое действие указано в элементе "Создать документ 'Проверка СКА'"?

Андрей, вот процесс на стандартных элементах.
moduleprocess31.zip

Илья, сейчас потестирую и отпишусь.

Илья, как правильно писала Анна для открытия созданной задачи нужно писать

parameters.Add("recordId", DocumentId);

и удалить строку

defValues.Add("RecordId", DocumentId);

Также, можно удалить элемент "Привязать объект к процессу", так как созданные в процессе элементы автоматически привязываются к нему.

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