Параметр типа "Массив" в своем Workflow Action

Добрый день,

Я создал свой Workflow Action, в котором один из параметров имеет тип "Массив". Для редактирования сделал отдельное окно, и попытался реализовать сохранение и загрузку значений параметра по аналогии с текстовым параметром:

var MyObject = new Object();

function LoadData(DiagramItem) {
        // заберем значения в свою переменную
        MyObject.IDs = WFGetParamsMapItemValue(DiagramItem, 'IDs');
}

function SaveData(DiagramItem) {
        WFSetParamsMapItemValue(DiagramItem, 'IDs', MyObject.IDs, wptArray);
}

При сохранении бизнес-процесса, на который поставлен этот Action, происходит ошибка "Тип 'varDispatch' не поддерживается".

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

var MyObject = new Object();

function LoadData(DiagramItem) {
        // заберем значения в свою переменную
        MyObject.IDs = GetArrayByCollection(WFGetParamsMapItemValue(DiagramItem, 'IDs'));
}

function SaveData(DiagramItem) {
        var Value = WFGetParamsMapItemValue(DiagramItem, 'IDs');
        Value.Clear();
        for (var i = 0; i MyObject.IDs.length; i++)
                Value.Add(MyObject.IDs[i]);
}

В этом случае все работает нормально, пока не закрою бизнес-процесс. То есть, создаю новый БП, ставлю на него свой Action, в окне редактирования в список добавляю несколько значений, закрываю окно. Сохраняю бизнес-процесс, опять дважды щелкаю на Action-е - открывается окно редактирования со списком значений. Вроде все хорошо. Но когда я закрываю сервис БП и открываю его снова, затем дважды щелкаю на Action-е - список значений пуст.

Подскажите пожалуйста, что я делаю не так? :)
Версия Х25 3.3.0.46

Нравится

3 комментария

Может использовать ни массив, а TSObjectLibrary.StringsList

var MyObject = new Object();
 
function LoadData(DiagramItem) {
        // заберем значения в свою переменную
        MyObject.IDs = System.CreateObject('TSObjectLibrary.StringsList');
MyObject.IDs.CommaText = WFGetParamsMapItemValue(DiagramItem, 'IDs');
}
 
function SaveData(DiagramItem) {
WFSetParamsMapItemValue(DiagramItem, 'IDs', MyObject.IDs.CommaText, wptString);  
}

Да, это вариант, спасибо.
Но все же интересно, как работать с параметром типа Массив, раз уж такой есть :)

То что есть такой тип, еще не означает что с ним можно работать :)

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