Открыть сраницу после задачи в процессе BPMOnline 5.1.1.156

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

DefValuesKey = GetHashCode().ToString();
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

Нравится

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

Здравствуйте, Баглан!
Выгрузите, пожалуйста, процесс и предоставьте файл, а также, опишите, какое окно Вы хотите открыть.

"Андрей Каспаревич" написал:

Здравствуйте, Баглан!

Выгрузите, пожалуйста, процесс и предоставьте файл, а также, опишите, какое окно Вы хотите открыть.

С уважением,

Каспаревич Андрей

Эксперт 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 месяца прошел.

Баглан, в связи с высокой трудоемкостью процесса воспроизведения и поисков причины возникновения ошибки, не хватает времени и ресурсов для решения проблемы.
Возможно, на следующей неделе получится получить результаты.

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