После добавления визирования в стандартный раздел Продаж (Opportunity), перестали приходить уведомления визирования в центр уведомлений
Добрый день!
После добавления визирования в стандартный раздел Продаж (Opportunity), перестали приходить уведомления в Центр уведомлений коммуникационной панели. Уведомления были добавлены отметкой чек-бокса "Enable approval in section" в секции "Approval" мастера разделов. Уведомления перестали приходить в том числе и для разделов Order, Invoice, по которым они ранее приходили. Индикатор визирования в коммуникационной панели отображается, но текст уведомления в коммуникационной панели отсутствует. Добавление схемы "OpportunityVisaNotificationProvider", записи "Terrasoft.Configuration.OpportunityVisaNotificationProvider" в таблицу "NotificationProvider" не помогло.
В консоли браузера выводится ошибка :
POST https://salesbpm.elcoin.co.uk/0/rest/VisaDataService/GetVisaEntities
[HTTP/2 400 Bad Request 84ms]
Error while sending request response status:
400 (Bad Request)
request url: https://salesbpm.elcoin.co.uk/0/rest/VisaDataService/GetVisaEntities
method: POST
request data: {"sysAdminUnitId":"3190ebaf-a3cf-461d-95f6-29115215bd39","requestOptions":{"isPageable":true,"rowCount":15}}
The server encountered an error processing the request. The exception message is '42601: each UNION query must have the same number of columns'. See server logs for more details. The exception stack trace is:
at Npgsql.NpgsqlConnector.d__157.MoveNext()
--- End of stack trace from previous location where exception was thrown
--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Npgsql.NpgsqlConnector.d__156.MoveNext()
--- End of stack trace from previous location where exception was thrown
--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Npgsql.NpgsqlConnector.d__156.MoveNext() --- End of stack trace from previous location where exception was thrown
--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Npgsql.NpgsqlConnector.d__163`1.MoveNext()
--- End of stack trace from previous location where exception was thrown
--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Npgsql.NpgsqlDataReader.d__32.MoveNext()
--- End of stack trace from previous location where exception was thrown
--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Npgsql.NpgsqlDataReader.NextResult() at Npgsql.NpgsqlCommand.d__71.MoveNext() --- End of stack trace from previous location where exception was thrown
--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Npgsql.NpgsqlCommand.d__92.MoveNext()
--- End of stack trace from previous location where exception was thrown
--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Npgsql.NpgsqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at Polly.Policy.<>c__DisplayClass119_0`1.b__0(Context ctx, CancellationToken ct) at Polly.Policy.<>c__DisplayClass129_0`1.b__0(Context ctx, CancellationToken ct) at Polly.Policy.<>c__DisplayClass103_0.b__1(Context ctx, CancellationToken ct)
at Polly.NoOp.NoOpEngine.Implementation[TResult](Func`3 action, Context context, CancellationToken cancellationToken) at Polly.Policy.<>c.b__103_0(Action`2 action, Context context, CancellationToken cancellationToken) at Polly.Policy.ExecuteInternal[TResult](Func`3 action, Context context, CancellationToken cancellationToken) at Polly.Policy.Execute[TResult](Func`3 action, Context context, CancellationToken cancellationToken) at Polly.Policy.Execute[TResult](Func`1 action) at Terrasoft.Core.DB.DBExecutor.FailoverExecuteReader(DbCommand command, Func`1 func) at Terrasoft.Core.DB.DBExecutor.ExecuteCommand[TResult](Func`2 commandExecutionCallback, String sqlText, QueryParameterCollection queryParameters, CancellationToken cancellationToken)
at Terrasoft.Core.DB.DBExecutor.InternalExecuteReader(String sqlText, QueryParameterCollection queryParameters, CommandBehavior behavior, CancellationToken cancellationToken) at Terrasoft.DB.PostgreSql.PostgreSqlExecutor.InternalExecuteReader(String sqlText, QueryParameterCollection queryParameters, CommandBehavior behavior, CancellationToken cancellationToken) at Terrasoft.Core.DB.DBExecutor.InternalExecuteReader(String sqlText, QueryParameterCollection queryParameters) at Terrasoft.Configuration.VisaHelper.GetVisaData(Select entitiesSelect) at Terrasoft.Configuration.VisaHelper.GetEntities(RequestOptions requestOptions) at SyncInvokeGetVisaEntities(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
Подскажите, пожалуйста, как это можно исправить?
Нравится
Вам нужно доработать ваш OpportunityVisaNotificationProvider, в методе, где вы добавляете колонки, добавить недостающие, они должны быть аналогичны базовому запросу, поскольку используется конструкция UNION различия в колонках быть не должно.
Чтобы увидеть недостающие, вы можете отловить профайлером запрос и там увидите различия.
Дополнено:
В методе GetEntitiesSelect
Должно работать при таком наборе колонок (на разных версиях возможно может быть больше/меньше):
Id","CreatedOn","CreatedById","ModifiedOn","ModifiedById","ProcessListeners","Objective","VisaOwnerId","IsAllowedToDelegate","DelegatedFromId","StatusId","SetById","SetDate","IsCanceled","Comment","VisaSchemaName","Title","VisaObjectId","Date","Account","Contact","VisaSchemaTypeId","VisaTypeName","VisaSchemaCaption","SchemaName","ImageId".
В методе AddColumns
"Id","Objective","StatusId","IsCanceled","SysAdminUnitId","VisaSchemaName","VisaObjectId","Account","Contact","SchemaName","ImageId"
И
public override void SetColumns(List<string> columns) {
columns.Add("Id");
columns.Add("Title");
columns.Add("Date");
columns.Add("Account");
columns.Add("Contact");
columns.Add("VisaObjectId");
columns.Add("SchemaName");
columns.Add("ImageId");
}
Вам нужно доработать ваш OpportunityVisaNotificationProvider, в методе, где вы добавляете колонки, добавить недостающие, они должны быть аналогичны базовому запросу, поскольку используется конструкция UNION различия в колонках быть не должно.
Чтобы увидеть недостающие, вы можете отловить профайлером запрос и там увидите различия.
Дополнено:
В методе GetEntitiesSelect
Должно работать при таком наборе колонок (на разных версиях возможно может быть больше/меньше):
Id","CreatedOn","CreatedById","ModifiedOn","ModifiedById","ProcessListeners","Objective","VisaOwnerId","IsAllowedToDelegate","DelegatedFromId","StatusId","SetById","SetDate","IsCanceled","Comment","VisaSchemaName","Title","VisaObjectId","Date","Account","Contact","VisaSchemaTypeId","VisaTypeName","VisaSchemaCaption","SchemaName","ImageId".
В методе AddColumns
"Id","Objective","StatusId","IsCanceled","SysAdminUnitId","VisaSchemaName","VisaObjectId","Account","Contact","SchemaName","ImageId"
И
public override void SetColumns(List<string> columns) {
columns.Add("Id");
columns.Add("Title");
columns.Add("Date");
columns.Add("Account");
columns.Add("Contact");
columns.Add("VisaObjectId");
columns.Add("SchemaName");
columns.Add("ImageId");
}
Литвинко Павел,
Подскажите,
1) базовый - это BaseVisaNotificationProvider?
2) должна ли быть запись для нового раздела Opportunity в таблице "NotificationProvider" ?
3) нужно ли добавлять копии БП по подобию "OrderVisaBaseSubprocess",
"OrderVisaBaseSubprocessOrder1",
"OrderVisaBaseProcess",
"OrderVisaBaseProcessOrder1" ?