Александра, к сожалению, пошаговой инструкции как это реализовать нет, но Вы можете попробовать реализовать по аналогии с базовыми разделами.
Вся логика, как общая, так и по модификации конкретных разделов, находится в пакете Completeness. Например, там есть замещение объекта Account с добавлением числового поля Completeness, а также замещение AccountPageV2 с добавлением в неё компонентов AccountCompletenessContainer, CompletenessValue, CompletenessTip, атрибутов CompletenessValue и MissingParametersCollection и скриптов для управления ими.
И общее для всех разделов: в объекте Completeness хранится список объектов, по которым запускается функциональность пересчета обновления профиля (это справочник «Полнота наполнения данными»), далее в объекте CompletenessParameter]хранится список параметров/полей, по которым рассчитывается полнота из объекта выше (это уже справочник «Полнота наполнения данными»). Далее в системе используется бизнес-процесс «Обновить полноту профиля» для массового пересчета показателя полноты профиля, к примеру, после импорта из Excel. А также бизнес процесс «Запустить обновление полноты профиля», который выполняет обновление данных по наполнению для конкретной записи. В свою очередь, при запуске процесса «Обновление полноты профиля» в базе данных вызывается процедура tsp_CompletenessRenew.
Идея добавить возможность пользовательского включения полноты профиля в любом разделе системы уже зафиксирована.
Ошибка при запуске "полнота наполнения данными" вручную процесса. В академии написано что необходимо запустить бизнес-процесс “Обновить полноту профиля”, но это приводит в ошибке. Подскажите как правильно произвести пересчет этого показателя?
Если бы тут привели текст выводимого на экран или в логи при запуске БП сообщения, гадать о причинах было бы намного легче: фаза Луны, погода на Марсе...
А так можно только посоветовать воспользоваться инструментами Visual Studio и Management Studio: отладить функцию RecalculateAll в схеме BaseCompletenessService, которую запускает этот БП и запустить с теми же параметрами хранимку tsp_CompletenessRenew в базе, которую функция запускает.
Oracle.DataAccess.Client.OracleException ORA-00936: missing expression
ORA-06512: at "BPM.tspkg_Completeness", line 113
ORA-06512: at line 2 at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
at Polly.Policy.<>c__DisplayClass119_0`1.<Execute>b__0(Context ctx, CancellationToken ct)
at Polly.Policy.<>c__DisplayClass129_0`1.<ExecuteInternal>b__0(Context ctx, CancellationToken ct)
at Polly.Policy.<>c__DisplayClass103_0.<NoOp>b__1(Context ctx, CancellationToken ct)
at Polly.NoOp.NoOpEngine.Implementation[TResult](Func`3 action, Context context, CancellationToken cancellationToken)
at Polly.Policy.<>c.<NoOp>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.DB.Oracle.OracleExecutor.FailoverExecute[TResult](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.Execute(String sqlText, QueryParameterCollection queryParameters)
at Terrasoft.Core.DB.StoredProcedure.Execute()
at Terrasoft.Configuration.BaseCompletenessService.RecalculateAll()
at Terrasoft.Core.Process.CompletenessRenew.ScriptTask1Execute(ProcessExecutingContext context)
at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
Если запускать "Запустить обновление полноты профиля"
System.NullReferenceException: Object reference not set to an instance of an object.
at Terrasoft.Configuration.BaseCompletenessService.get_AppConnection()
at Terrasoft.Configuration.BaseCompletenessService.RecalculateAllByCompleteness(Guid completenessId)
at Terrasoft.Configuration.BaseCompletenessService.RecalculateAll()
at Terrasoft.Core.Process.CompletenessRenew.ScriptTask1Execute(ProcessExecutingContext context)
at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)
Значит ещё и используется Oracle... Нужно смотреть, что находится в пакете spkg_Completeness во второй строке и во входящей в него хранимке tsp_CompletenessRenew в 113 строке и рядом. Были ли в них доработки?
Есть ли замещения схемы BaseCompletenessService? Если есть, попробуйте удалить, скомпилироваться, повторить запуск процесса.
Попробуйте для отладки запускать функцию с тем же параметром, которым его запускает система,чтобы увидеть, где именно падает выполнение хранимки. Возможно, в разделе настраивали детали и у одной из них что-то настроено некорректно.