Здравствуйте, пытаюсь настроить автонумерацию по статье для 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)
Насколько я понимаю, проблема в том, что не совпадает тип данных. Подскажите, в каком виде мне надо передать схему в данное пользовательское действие? Может явно привести к какому-то типу или использовать другой метод?
Т.к. в общем случае это работает: я смог передать таким образом текстовый параметр в "Выполнить действие процесса".
Подскажите, пожалуйста
Нравится
Думаю, в руководстве сказано про создание процесса в объекте, а не отдельно от него
А точно название пользовательского действия (в расширенном режиме) UserTask1?
Думаю, в руководстве сказано про создание процесса в объекте, а не отдельно от него
Владимир Соколов,
Спасибо, действительно проблема была в том, что невнимательно прочитал, нужной зайти в объект и открыть бизнес процесс из объекта.