Добрый день.
Подскажите пожалуйста, можно ли указать страницу объекта при действии "Открыть страницу выбора из справочника"
Нравится
Здравствуйте, Илья!
Пример Вам в помощь.
Открытие окна выбора элемента из справочника (с фильтрами)
Создать Действие процесса (UserTask). Действие = Открыть страницу выбора из справочника
Создать скрипт подготовки перед действием и написать в нем следующее:
[csharp]
var SSDocumentOfferingtId = new Guid(SysSettings.GetValue(UserConnection, "SSDocumentOfferingtId").ToString());//UID Объекта
Collection> filters = new Collection>();
filters.Add(new Dictionary {
{"comparisonType", FilterComparisonType.Equal},
{"leftExpressionColumnPath", "Document"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[] {ParentDocumentSpecificationId}}
});
filters.Add(new Dictionary {
{"comparisonType", FilterComparisonType.NotEqual},
{"leftExpressionColumnPath", "IsVsat"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[] {true}}
});
filters.Add(new Dictionary {
{"comparisonType", FilterComparisonType.IsNull},
{"leftExpressionColumnPath", "[ProductsParts:DocumentOffering].Parent"},
{"useDisplayValue", false},
{"rightExpressionParameterValues", new object[] {}}
});
OpenSpecOfferingLookupUserTask.ProcessKey = InstanceUId;
OpenSpecOfferingLookupUserTask.PageParameters = new Dictionary() {
{"LookupFilters", filters},
{"schemaUId", SSDocumentOfferingtId},
{"customClosedEvent", "SpecOfferingLookupPageClosed"} //Сообщение при закрытии окна
};
OpenSpecOfferingLookupUserTask.UseCurrentActivePage = true;
return true;
[/csharp]
Создать скрипт обработки после действия и написать в нем следующее:
[csharp]
var offerings = OpenSpecOfferingLookupUserTask.GetSelectedValues(UserConnection) as Dictionary ;
var offeringId = Guid.Empty;
foreach (var offering in offerings) {
offeringId = new Guid(offering.Key.ToString());
break;
}
if (offeringId == Guid.Empty) {
return true;
}
return true;
[/csharp]
Илья, насколько я вижу из кода действия, то за то, какая страница будет открыта отвечает параметр "lookupPageSchemaUId". Попробуйте добавить его в PageParameters с соответсвующим UId страницы.
Андрей, создал страницу справочника. Изменил вызов действия "Открыть страницу выбора из справочника" добавив
[csharp]
pageParameters.Add("lookupPageSchemaUId", "dff16a7e-027f-45aa-8662-1a4f01c4238c");
[/csharp]
Страница не открывается. И никакой ошибки не возникает. Этот параметр убираю, открывается стандартная страница справочника.
Илья, здравствуйте.
А сам справочник у Вас зарегистрирован с кастомной страницей редактирования, которая унаследована от базовой страницы редактирования справочника?
Можно получить сервисы обьекта справочника, страницы справочника и сам бизнес процесс?