Добрый день!
При попытке заменить элемент "Карточка редактирования" на действие "открыть страницу" возникло два вопроса. (вызвано отсутствием у элемента "Карточка редактирования" события о закрытии окна)
1. как действием "открыть страницу" открыть существующий элемент?
2. как привязать существующий документ к процессу?
Хотелось сделать это: добавляю документ, привязываю к процессу и открываю в карточке.
По факту получается следующее:
документ создается, привязка не происходит, в карточке открывается новый документ.
открываю страницу так:
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;
Нравится
Здравствуйте, Илья!
А зачем эта строка?
parameters.Add("createWithUId", DocumentId.ToString());
Ведь запись Вам не нужно создавать, она уже создана. Для того, чтобы ее открыть, достаточно передать идентификатор в DefValues, что Вы и делаете вот тут:
defValues.Add("RecordId", DocumentId);
Обратите внимание, название параметра чувствительно к регистру.
Здравствуйте, Анна!
К сожалению ничего не получается.
Прикладываю тестовый процесс.
moduleprocess3.zip
Здравствуйте, Илья!
Процесс импортировать не получится, так как в нем используются элементы не из базовой конфигурации, то есть Вам также нужно предоставить страницы и объекты, используемые в процессе.
Либо создайте простой процесс, в котором просто будет открываться какая-нибудь базовая страница, чтобы локализировать проблему.
Также настораживает то, что начальное событие "AgreementedPageClose" находится в событийном подпроцессе, а обработчик - нет. Это, конечно, не влияет на открытие страницы, но лучше так не делать.
И еще, какое действие указано в элементе "Создать документ 'Проверка СКА'"?
Андрей, вот процесс на стандартных элементах.
moduleprocess31.zip
Илья, как правильно писала Анна для открытия созданной задачи нужно писать
parameters.Add("recordId", DocumentId);
и удалить строку
defValues.Add("RecordId", DocumentId);
Также, можно удалить элемент "Привязать объект к процессу", так как созданные в процессе элементы автоматически привязываются к нему.