Доброго времени суток.
Воникла проблема с BPMonline Service Desk. Заходя во вкладку Инструменты - Администрирование - Пользователи портала, система выдает сообщение ошибки:
В работе приложения BPMonline возникла ошибка.
Exception Message: Невозможно получить экземпляр схемы типа "Terrasoft.Configuration.SysSSPUserQSchema"
Exception Type: Terrasoft.Common.NullOrEmptyException
Exception Source: Terrasoft.Core
Нравится
Стандартно в конфигурации нет схемы с названием «SysSSPUserQSchema». Возможно это какая-то доработка?
Что пишет в полном тексте сообщения?
Какая у Вас используется версия системы?
[code]
Exception Stack Trace:
at Terrasoft.Core.SchemaManager`1.InitializeSchema(ISchemaManagerItem schemaManagerItem, Assembly assembly)
at Terrasoft.Core.SchemaManagerItem`1.get_Instance()
at Terrasoft.Core.Manager`2.GetInstanceByUId(Guid uid)
at Terrasoft.UI.WebControls.Controls.EntityDataSource.get_Schema()
at Terrasoft.UI.WebControls.Controls.DataSourceStructure.TryAddColumnByMetaPath(String schemaColumnMetaPath)
at Terrasoft.WebApp.PortalUsersGridPageSchema.UpdateDataSource()
at Terrasoft.WebApp.BaseGridPageSchema.InitializeControls()
at Terrasoft.WebApp.PortalUsersGridPageSchema.InitializeControls()
at Terrasoft.UI.WebControls.PageSchema.get_TopLevelControl()
at Terrasoft.UI.WebControls.PageSchema.InitializeLocalizableValues(String resourceManagerName, String resourceGroupName)
at Terrasoft.Core.SchemaManager`1.InitializeSchema(ISchemaManagerItem schemaManagerItem, Assembly assembly)
at Terrasoft.Core.SchemaManagerItem`1.get_Instance()
at Terrasoft.Core.Manager`2.GetInstanceByUId(Guid uid)
at Terrasoft.UI.WebControls.Controls.PageContainer.LoadFromAssembly()
at Terrasoft.UI.WebControls.Controls.PageContainer.LoadUserControl()
at Terrasoft.UI.WebControls.Controls.PageContainer.OnInit(EventArgs e)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.AddedControl(Control control, Int32 index)
at Terrasoft.UI.WebControls.PageControl.AddedControl(Control control, Int32 index)
at Terrasoft.UI.WebControls.Controls.Container.AfterItemAdd(Component item)
at Terrasoft.UI.WebControls.Utilities.ItemsCollection`1.Add(T item)
at Terrasoft.UI.WebControls.Controls.PageContainer.LoadFromAssembly()
at Terrasoft.UI.WebControls.Controls.PageContainer.LoadUserControl()
at Terrasoft.UI.WebControls.Controls.PageContainer.OnInit(EventArgs e)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.AddedControl(Control control, Int32 index)
at Terrasoft.UI.WebControls.PageControl.AddedControl(Control control, Int32 index)
at Terrasoft.UI.WebControls.Controls.Container.AfterItemInsert(Int32 position, Component item)
at Terrasoft.UI.WebControls.Utilities.ItemsCollection`1.Insert(Int32 index, T item)
at Terrasoft.WebApp.MainPageEventsProcessSchema`1.InitScriptTaskExecute(ProcessExecutingContext context)
at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
at Terrasoft.WebApp.MainPageEventsProcessSchema`1.ProcessQueue(ProcessExecutingContext context)
at Terrasoft.WebApp.MainPageEventsProcessSchema`1.OnExecuted(Object sender, ProcessActivityAfterEventArgs e)
at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
at Terrasoft.WebApp.MainPageEventsProcessSchema`1.ProcessQueue(ProcessExecutingContext context)
at Terrasoft.WebApp.MainPageEventsProcessSchema`1.ThrowEvent(ProcessExecutingContext context, String message)
at Terrasoft.UI.WebControls.PageSchemaUserControl.ThrowEvent(String message)
at Terrasoft.UI.WebControls.Controls.PageContainer.LoadFromAssembly()
at Terrasoft.UI.WebControls.Controls.PageContainer.LoadUserControl()
at Terrasoft.UI.WebControls.Controls.PageContainer.OnInit(EventArgs e)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Control.InitRecursive(Control namingContainer)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
[/code]
Application Version: 5.4.0.1315
А у Вас в разделе «Конфигурация» есть схема, называющаяся «SysSSPUserQSchema» или «SysSSPUserQ»?
Судя по коду, логика системы обращается к схеме по имени и не находит. Возможно, она не перенесена в корневую конфигурацию из другой или на основной сервер с сервера разработки.
Или где-то в коде портальной страницы допущена опечатка, вместо «SysSSPUser» написали «SysSSPUserQ».
При попытке открыть метаданные SysSSPUserQ выдало ошибку. (см. скриншоты)
[code]
Exception Message: Невозможно получить экземпляр схемы типа "Terrasoft.Configuration.SysSSPUserQSchema"
Exception Type: Terrasoft.Common.NullOrEmptyException
Exception Source: Terrasoft.Core
Exception Stack Trace:
at Terrasoft.Core.SchemaManager`1.InitializeSchema(ISchemaManagerItem schemaManagerItem, Assembly assembly)
at Terrasoft.Core.SchemaManagerItem`1.get_Instance()
at Terrasoft.Core.Manager`2.GetInstanceByUId(Guid uid)
at Terrasoft.Core.SchemaManager`1.GetReadableSchemaMetaData(Guid schemaUId, UserConnection userConnection)
at Terrasoft.WebApp.SolutionExplorerModule.OnViewMetaDataMenuItemClick(Object sender, AjaxEventArgs e)
at Terrasoft.UI.WebControls.Controls.ScriptManager.RaisePostBackEvent(String eventArgument)
at Terrasoft.UI.WebControls.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Form:
submitAjaxEventConfig: {"config":{"viewStateMode":"include","extraParams":{"tag":""}}}
__EVENTTARGET: ScriptManager
__EVENTARGUMENT: ViewMetaDataMenuItem|event|Click
__VIEWSTATEFIELDCOUNT: 13
__VIEWSTATE0: /wEPGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYWBQ1TY3JpcHRNYW5hZ2VyBRlTeXNTY2hlbWFGb2xkZXJEYXRhU291cmNlBRNTeXNTY2hlbWFEYXRhU291cmNlBQlNYWluUGFuZWwFCUxlZnRQYW5lbAUPQWN0aW9uc1RhYlBhbmVsBQdGb.....................
[/code]
Возможно, стандартную схему «SysSSPUser» кто-то пытался доработать и переименовать и сломал.
Посмотрите у неё значения «Изменено» и «Изменил».
Можно накатить схему, взятую с тестового (или наоборот, основного) сайта.
Ещё можно удалить самую свежую запись в таблице SysSchemaInSolution, где SysSchemaId равно Id этой схемы. Это вернёт предыдущую версию.
[code]
Exception Message: Элемент коллекции с идентификатором "{2BCBE4B8-FD0E-4CC6-A979-93574A377150}" не найден
Exception Type: Terrasoft.Common.ItemNotFoundException
Exception Source: Terrasoft.Core
[/code]
Часто бывает и такое.
Это означает что не найден элемент с определенным идентификатором. Как пример, удалили поле в объекте, затем его добавили, но ранее уже была выполнена привязка к полю.
В таких случаях можно попробовать выполнить очистку профиля пользователя или выполнить отладку кода.