Настройка Автонумерации для объекта

Здравствуйте, пытаюсь настроить автонумерацию по статье для 7.9(https://academy.terrasoft.ru/documents/technic-sdk/7-9/primer-ispolzovaniya-vstroennogo-processa-obekta-dobavlenie-avtonumeracii-k-polyu-stranicy), т.к. в свежей документации данный вопрос разбирается еще менее детально.

 

Удалось настроить присвоение номера на стороне клиента, но настройка через БП не работает.

 

В примере предлагается использовать обращение к Entity и UserTask1(АЛГОРИТМ РЕАЛИЗАЦИИ КЕЙСА НА СТОРОНЕ СЕРВЕРА, п.4.3):

UserTask1.EntitySchema = Entity.Schema;
return true;

К сожалению такое обращение к UserTask1 не работает совсем, говорит, что для данного контекста данный объект не определен(хотя в системе присутствуют коробочные БП, который используют такой синтаксис, вероятно проблема в том, что они компилируемые, а вот при интерпретировании такой синтаксис не работает)

Так же не работает обращение к Entity, он ругается с такой ошибкой: "An object reference is required for the non-static field, method or property 'Entity.Schema'".(Понятно в чем проблема, но не понятно, почему это раньше работало).

 

 

Я решил попробывать вот таким образом:

var esqRes = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "UsrRequest");
Set("UserTask1.EntitySchema", esqRes.GetSchema());
return true;

 В данном случае это не сработало. Компиляцию проходит, но при выполнении  он падает с ошибкой: 

System.NotSupportedException: EntitySchema
 
   в Terrasoft.Core.Process.FlowEngineStateService.InternalSetValue[T](Guid processUId, String parameterPath, T value)
   в Terrasoft.Core.Process.FlowEngineStateService.Terrasoft.Core.Process.IInternalProcessParameterStore.InternalSetParameterValue[T](Guid processUId, String parameterPath, T value)
   в Terrasoft.Core.Process.ProcessInstanceParameterStore.SetParameterValue[TValue](String parameterPath, TValue value)
   в Terrasoft.Core.Process.ProcessInstanceParameterStore.SetParameterValue[TValue](ProcessSchemaParameter parameter, Guid schemaElementUId, TValue value)
   в Terrasoft.Core.Process.ProcessModel.SetParameterValue[T](FoundParameterData result, T value)
   в Terrasoft.Core.Process.ProcessModel.TrySetValue[T](ProcessSchema processSchema, String propertyPath, T value)
   в Terrasoft.Core.Process.ProcessModel.Set[T](String propertyPath, T value)
   в Terrasoft.Core.Process.RzdProcess_c91f2beRzdBaseZnoObject1MethodsWrapper.ScriptTask1Execute(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessFlowElement.ExecuteItem(ProcessExecutingContext context)
   в Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

 

Насколько я понимаю, проблема в том, что не совпадает тип данных. Подскажите, в каком виде мне надо передать схему в данное пользовательское действие? Может явно привести к какому-то типу или использовать другой метод?

 

Т.к. в общем случае это работает: я смог передать таким образом текстовый параметр в "Выполнить действие процесса".

Подскажите, пожалуйста

Нравится

4 комментария
Лучший ответ

Думаю, в руководстве сказано про создание процесса в объекте, а не отдельно от него

А точно название пользовательского действия (в расширенном режиме) UserTask1?

 

Владимир Соколов, да.

Думаю, в руководстве сказано про создание процесса в объекте, а не отдельно от него

Владимир Соколов,

Спасибо, действительно проблема была в том, что невнимательно прочитал, нужной зайти в объект и открыть бизнес процесс из объекта.

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