Возможно, не новый вопрос ]||||||[, но никак не удается передать внутри БП массив с ID-шниками как параметр.
Заполняется массив в одном скрипте, использовать надо в другом элементе-скрипте. Пытаюсь создать параметр с типом Объект (Entity) так ругается при попытке передачи туда массива.
Очень не хочется пользоваться строкой неограниченной длины с парсингом ее по необходимости... некрасиво это и если ID-шников много не факт что работать будет корректно.
Подскажите, какой тип параметра БП использовать и как туда закинуть массив?
Нравится
Здравствуйте.
Есть специальный тип - массив:
На самый крайний случай, можно записать в атрибут глобального объекта Connector:
Connectror.Attributes('myArray') = myArray; var myArrayNew = Connectror.Attributes('myArray');
"Олейник Дмитрий" написал:Здравствуйте.
Форум BPMonline 5.x
Саша, спасибо.
Александр, для BPM создайте параметр, и не меняйте его тип. Он по умолчанию создается как Object (внимание не как Object (Entity) - это другой тип данных). При этом, если Вы изменили тип - в списке Вы его уже не найдете.
А если ничего не менять, то такой код работает:
string[] strArr = new string[10]; array = strArr;
Где array - параметр с типом Object.
"Олейник Дмитрий" написал:Александр, для BPM создайте параметр, и не меняйте его тип. Он по умолчанию создается как Object (внимание не как Object (Entity) - это другой тип данных).
Значит, не показалось мне что оно сработало ровно один раз пока я не стал менять тип и перекомпилировал систему...
Дмитрий, ну это же не правильно как-то :smile:
Может разработчикам запрос на изменение с любым пусть низким приоритетом создать чтобы в список тот "просто объект" добавить для 5ки?
"Олейник Дмитрий" написал:Александр, вопрос передал.
Дмитрий, спасибо!
И вновь продолжается бой...
Передал я массив в параметр.
Пытаюсь к нему обратиться в другом элементе.
Вот так, например:
foreach (var i in SomeParameterArray.Length) {
где SomeParameterArray и есть параметр бп с типом объект...
и ругается оно, и не компилируется
'object' doesn't contain definition for 'Length' and no extension method 'Length' ...
Поэтому теперь надо разбираться, как же к этому переданному массиву обратиться... :sad:
Александр, во-первых, цикл foreach должен выглядеть так:
foreach (var i in SomeParameterArray) {
А в данном случае, скорее всего это не сработает и нужно приведение типов:
string[] strArr = new string[100]; ArrayParam = strArr; IEnumerable<string> enumerable = ArrayParam as IEnumerable<string>; foreach (var s in enumerable) { //своя логика }
"Андрей Каспаревич" написал:Александр, во-первых, цикл foreach должен выглядеть так:
foreach (var i in SomeParameterArray) {
Ошибся :redface:
Сейчас еще поэкспериментирую
Илья, в каком смысле? Всё работает и сейчас - создаете объект с типом Object, затем записываете в него массив.
При обращении, не забудьте привести тип Object к Array.
"Олейник Дмитрий" написал:Александр, для BPM создайте параметр, и не меняйте его тип. Он по умолчанию создается как Object (внимание не как Object (Entity) - это другой тип данных). При этом, если Вы изменили тип - в списке Вы его уже не найдете.
Я так понимаю Илья Т. пишет именно об этом, что нельзя данный тип назначить повторно, что есть баг
Тут я согласен, хоть, согласитесь, он и не критичен.
"Олейник Дмитрий" написал:он и не критичен
Согласен :smile:
"Илья Т." написал:Создали действие процесса, а в нем параметр и по умолчанию создается тип String, создать параметр с типом Object невозможно.
В режиме редактирования метаданных поменяйте тип параметра "DataValueType" на "84ed6865-9692-4c98-aaed-4d15b96a95c2" ручками и затем сохраните и опубликуйте