Открыть сраницу после задачи в процессе BPMOnline 5.1.1.156
Добрый вечер, у меня не получаеться открыть страницу после задачи в процесс
var parameters = new Dictionarystring, string>();
parameters.Add("defValuesId", DefValuesKey);
UserConnection.UserContext[DefValuesKey] = parameters;
ShowSelectDataWindow.OpenerInstanceId = InstanceUId;
ShowSelectDataWindow.PageParameters = parameters;
ShowSelectDataWindow.PageUId = new Guid("{E8343C66-8488-B471-E040-1AAC3D3ED25C}"); //EnterPeriodWhichRemainsBranchEditPage
ShowSelectDataWindow.CloseMessage= "CloseProcessWindow";
return true;
скриншот тоже прилагаеться, версия BPMOnline 5.1.1.156
Нравится
Здравствуйте, Баглан!
Выгрузите, пожалуйста, процесс и предоставьте файл, а также, опишите, какое окно Вы хотите открыть.
"Андрей Каспаревич" написал:Здравствуйте, Баглан!
Выгрузите, пожалуйста, процесс и предоставьте файл, а также, опишите, какое окно Вы хотите открыть.С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
Доброе утро, скидываю файл, сам процесс, страницу, и скриншот страницы
Баглан, попробуйите в скрипт перед открытием страницы добавить строки
ShowSelectDataWindow.CloseOpenerOnLoad = false; ShowSelectDataWindow.UseCurrentActivePage = true;
Также откройте консоль браузера и посмотрите, не возникают ли клиентские ошибки во время открытия страницы.
"Андрей Каспаревич" написал:DefValuesKey = GetHashCode().ToString();
var parameters = new Dictionary();
parameters.Add("defValuesId", DefValuesKey);
UserConnection.UserContext[DefValuesKey] = parameters;
ShowSelectDataWindow.OpenerInstanceId = InstanceUId;
ShowSelectDataWindow.PageParameters = parameters;
ShowSelectDataWindow.PageUId = new Guid("{E8343C66-8488-B471-E040-1AAC3D3ED25C}"); //EnterPeriodWhichRemainsBranchEditPage
ShowSelectDataWindow.CloseMessage= "CloseProcessWindow";
return true;
После этих кодов:
DefValuesKey = GetHashCode().ToString(); var parameters = new Dictionary<string, string>(); parameters.Add("defValuesId", DefValuesKey); UserConnection.UserContext[DefValuesKey] = parameters; ShowSelectDataWindow.OpenerInstanceId = InstanceUId; ShowSelectDataWindow.PageParameters = parameters; ShowSelectDataWindow.PageUId = new Guid("{E8343C66-8488-B471-E040-1AAC3D3ED25C}"); //EnterPeriodWhichRemainsBranchEditPage ShowSelectDataWindow.CloseMessage= "CloseProcessWindow"; return true;
этот код:
ShowSelectDataWindow.CloseOpenerOnLoad = false; ShowSelectDataWindow.UseCurrentActivePage = true;
и результат будет следующим
DefValuesKey = GetHashCode().ToString(); var parameters = new Dictionary<string, string>(); parameters.Add("defValuesId", DefValuesKey); UserConnection.UserContext[DefValuesKey] = parameters; ShowSelectDataWindow.OpenerInstanceId = InstanceUId; ShowSelectDataWindow.PageParameters = parameters; ShowSelectDataWindow.PageUId = new Guid("{E8343C66-8488-B471-E040-1AAC3D3ED25C}"); //EnterPeriodWhichRemainsBranchEditPage ShowSelectDataWindow.CloseMessage= "CloseProcessWindow"; S<strong>howSelectDataWindow.CloseOpenerOnLoad = false; ShowSelectDataWindow.UseCurrentActivePage = true;</strong> return true;
так будет правильно?
Баглан, да. Здесь идет просто установка параметров, так что не принципиально, в каком порядке они будут установлены.
"Андрей Каспаревич" написал:ShowSelectDataWindow
Этот параметр отсутствует UseCurrentActivePage
"Андрей Каспаревич" написал:ShowSelectDataWindow.CloseOpenerOnLoad = false;
Андрей добры день, добавил код просмотрел javaScriptConsole, страница не запустилась ошибку не выдало, высылаю скриншот
Баглан, Вам будет удобно организовать удаленное подключение для скорейшего разрешения проблемы?
"Андрей Каспаревич" написал:Баглан, Вам будет удобно организовать удаленное подключение для скорейшего разрешения проблемы?
С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
Удаленный доступ есть по vpn, вы можете обратиться Генову Евгений, у него имееться пароли для vpn, как получите напишите мне я доведу до этого шага где открываеться страница.
Баглан, ожидаю упрощенную схему процесса.
В свою очередь, предоставляю стандартную инструкцию по открытию страницы из процесса.
Окно редактирования
Создать Действие процесса (UserTask). Действие = Открыть страницу
Создать скрипт подготовки перед действием и написать в нем следующее:
EntitySchemaUId = Page.DataSource.SchemaUId; string recordId = Guid.Empty.ToString(); //Id записи UserTaskRunSAObjectEditPage.OpenerPage = Page; UserTaskRunSAObjectEditPage.OpenerPage = Page; UserTaskRunSAObjectEditPage.PageUId = EditPageUId; //UID вашей страницы var parameters = new Dictionary<string, string> { {"recordId", recordId.ToString()}, {"entitySchemaUId", EntitySchemaUId.ToString()}, //UID вашего объекта (не обязательно) {"treeGridId", Page.TreeGrid.ClientID} }; UserTaskRunSAObjectEditPage.PageParameters = parameters; UserTaskRunSAObjectEditPage.Centered = true; UserTaskRunSAObjectEditPage.CloseOpenerOnLoad = false;
Открытие простого окна
OpenDetailedPageUserTask.OpenerInstanceId = InstanceUId; OpenDetailedPageUserTask.UseCurrentActivePage = true; OpenDetailedPageUserTask.PageUId = EditPageUId; var parameters = new Dictionary<string, string> { {"recordId", "recordId"}, {"entitySchemaUId", ""}, {"treeGridId", ""}, {"SysModuleEditId", ""} }; OpenDetailedPageUserTask.PageParameters = parameters; OpenDetailedPageUserTask.Centered = true; OpenDetailedPageUserTask.CloseOpenerOnLoad = false;
Открытие окна выбора элемента из справочника (с фильтрами)
Создать Действие процесса (UserTask). Действие = Открыть страницу выбора из справочника
Создать скрипт подготовки перед действием и написать в нем следующее:
var SSDocumentOfferingtId = new Guid(SysSettings.GetValue(UserConnection, "SSDocumentOfferingtId").ToString());//UID Объекта Collection<Dictionary<string, object>> filters = new Collection<Dictionary<string, object>>(); filters.Add(new Dictionary<string, object> { {"comparisonType", FilterComparisonType.Equal}, {"leftExpressionColumnPath", "Document"}, {"useDisplayValue", false}, {"rightExpressionParameterValues", new object[] {ParentDocumentSpecificationId}} }); filters.Add(new Dictionary<string, object> { {"comparisonType", FilterComparisonType.NotEqual}, {"leftExpressionColumnPath", "IsVsat"}, {"useDisplayValue", false}, {"rightExpressionParameterValues", new object[] {true}} }); filters.Add(new Dictionary<string, object> { {"comparisonType", FilterComparisonType.IsNull}, {"leftExpressionColumnPath", "[ProductsParts:DocumentOffering].Parent"}, {"useDisplayValue", false}, {"rightExpressionParameterValues", new object[] {}} }); OpenSpecOfferingLookupUserTask.ProcessKey = InstanceUId; OpenSpecOfferingLookupUserTask.PageParameters = new Dictionary<string, object>() { {"LookupFilters", filters}, {"schemaUId", SSDocumentOfferingtId}, {"customClosedEvent", "SpecOfferingLookupPageClosed"} //Сообщение при закрытии окна }; OpenSpecOfferingLookupUserTask.UseCurrentActivePage = true; return true;
Создать скрипт обработки после действия и написать в нем следующее:
var offerings = OpenSpecOfferingLookupUserTask.GetSelectedValues(UserConnection) as Dictionary <string, object>; var offeringId = Guid.Empty; foreach (var offering in offerings) { offeringId = new Guid(offering.Key.ToString()); break; } if (offeringId == Guid.Empty) { return true; } return true;
Возможно будет полезно.
"Андрей Каспаревич" написал:Баглан, ожидаю упрощенную схему процесса.
В свою очередь, предоставляю стандартную инструкцию по открытию страницы из процесса.
Окно редактирования
Создать Действие процесса (UserTask). Действие = Открыть страницуСоздать скрипт подготовки перед действием и написать в нем следующее:
EntitySchemaUId = Page.DataSource.SchemaUId;
string recordId = Guid.Empty.ToString(); //Id записи
UserTaskRunSAObjectEditPage.OpenerPage = Page;
UserTaskRunSAObjectEditPage.OpenerPage = Page;
UserTaskRunSAObjectEditPage.PageUId = EditPageUId; //UID вашей страницы
var parameters = new Dictionary<string, string> {
{"recordId", recordId.ToString()},
{"entitySchemaUId", EntitySchemaUId.ToString()}, //UID вашего объекта (не обязательно)
{"treeGridId", Page.TreeGrid.ClientID}
};
UserTaskRunSAObjectEditPage.PageParameters = parameters;
UserTaskRunSAObjectEditPage.Centered = true;
UserTaskRunSAObjectEditPage.CloseOpenerOnLoad = false;Открытие простого окна
OpenDetailedPageUserTask.OpenerInstanceId = InstanceUId;
OpenDetailedPageUserTask.UseCurrentActivePage = true;
OpenDetailedPageUserTask.PageUId = EditPageUId;
var parameters = new Dictionary<string, string> {
{"recordId", "recordId"},
{"entitySchemaUId", ""},
{"treeGridId", ""},
{"SysModuleEditId", ""}
};
OpenDetailedPageUserTask.PageParameters = parameters;
OpenDetailedPageUserTask.Centered = true;
OpenDetailedPageUserTask.CloseOpenerOnLoad = false;Открытие окна выбора элемента из справочника (с фильтрами)
Создать Действие процесса (UserTask). Действие = Открыть страницу выбора из справочника
Создать скрипт подготовки перед действием и написать в нем следующее:
var SSDocumentOfferingtId = new Guid(SysSettings.GetValue(UserConnection, "SSDocumentOfferingtId").ToString());//UID Объекта
Collection<Dictionary<string, object>> filters = new Collection<Dictionary<string, object>>();
filters.Add(new Dictionary<string, object> {
{"comparisonType", FilterComparisonType.Equal},
{"leftExpressionColumnPath", "Document"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[] {ParentDocumentSpecificationId}}
});
filters.Add(new Dictionary<string, object> {
{"comparisonType", FilterComparisonType.NotEqual},
{"leftExpressionColumnPath", "IsVsat"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[] {true}}
});
filters.Add(new Dictionary<string, object> {
{"comparisonType", FilterComparisonType.IsNull},
{"leftExpressionColumnPath", "[ProductsParts:DocumentOffering].Parent"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[] {}}
});
OpenSpecOfferingLookupUserTask.ProcessKey = InstanceUId;
OpenSpecOfferingLookupUserTask.PageParameters = new Dictionary<string, object>() {
{"LookupFilters", filters},
{"schemaUId", SSDocumentOfferingtId},
{"customClosedEvent", "SpecOfferingLookupPageClosed"} //Сообщение при закрытии окна
};
OpenSpecOfferingLookupUserTask.UseCurrentActivePage = true;
return true;Создать скрипт обработки после действия и написать в нем следующее:var offerings = OpenSpecOfferingLookupUserTask.GetSelectedValues(UserConnection) as Dictionary <string, object>;
var offeringId = Guid.Empty;
foreach (var offering in offerings) {
offeringId = new Guid(offering.Key.ToString());
break;
}
if (offeringId == Guid.Empty) {
return true;
}
return true;Возможно будет полезно.
С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
Андрей я перепробовал все, высылаю простой тестовый процесс, если у вас получиться буду рад,спасибо
Баглан, жду Вашего решения по поводу удаленного доступа.
"Андрей Каспаревич" написал:Баглан, жду Вашего решения по поводу удаленного доступа.
С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
Андрей я скинул вам на корп почту, прошу посмотерть.
"Бахгельдиев Баглан Абылаевич" написал:
Андрей Каспаревич пишет:
Баглан, жду Вашего решения по поводу удаленного доступа.
С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержкиАндрей я скинул вам на корп почту, прошу посмотерть.
Андрей я получил ваше сообщение вчера сервер не был доступен, прошу сегодня попробовать подключиться
"Андрей Каспаревич" написал:Спасибо, Баглан!
Сегодня попробуем.С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
Добрый день, Андрей удалось проблему исправить? вы обещали проблему посмотреть и написать мне, но отвас я так и не получил письма
Здравствуйте, Баглан!
Данное обращение находится в работе в департаменте разработки.
Пока что никаких результатов нет.
"Андрей Каспаревич" написал:Здравствуйте, Баглан!
Данное обращение находится в работе в департаменте разработки.
Пока что никаких результатов нет.С уважением,
Каспаревич Андрей
Эксперт 3-й линии поддержки
Здравствуйте Андрей, а когда будут результаты? уже 2-3 месяца прошел.
Баглан, в связи с высокой трудоемкостью процесса воспроизведения и поисков причины возникновения ошибки, не хватает времени и ресурсов для решения проблемы.
Возможно, на следующей неделе получится получить результаты.