массив в "параметрах диаграммы" в бизнес процессе

Версия CRM 3.3.2.127. Бизнес процесс.

В "параметры диаграммы" задаю три массива. В цикле считываю эти параметры. Проблема в том, что первый раз нужный мне массив AccountIDCurrent содержит 3 элемента, эти элементы правильные, а при втором/третьем и т. д. входе в цикл мой массив стирается, в нем ноль элементов. Сама я их нигде не обнуляю. В чем может быть причина?

параметры диаграммы
сам процесс

Заполняю массивы:

function Item3OnExecute(ScriptItem, IsComplete) {
        // скрипт до задачи
        ...
        WFSetParamValue(Diagram, 'GlobalCount', CountTask); // 3.4.0.49
       
        for (var i = 0; i BidAccountIDs.length; i++) {
                WFSetParamValue(Diagram, 'AccountIDCurrent', BidAccountIDs[i], "ArrayBid");
        }
        for (var i = 0; i BidContactIDs.length; i++) {  
                WFSetParamValue(Diagram, 'ContactIDCurrent', BidContactIDs[i], "ArrayBid");
        }
        for (var i = 0; i BidIDs.length; i++) {  
                WFSetParamValue(Diagram, 'BidIDCurrent', BidIDs[i], "ArrayBid");
        }
}

Считываю:

function Action4OnBeforeExecute(ActionItem) { //debugger // 2011
        // 1 раз помнит массив, след разы - 0 значений
        //Diagram = GetDiagramByItem(ActionItem);
        GlobCount = WFGetParamValue(Diagram, 'GlobalCount');
        GlobCountTask = WFGetParamValue(Diagram, 'GCT');
        if (GlobCountTask >= 0) {
                AccountIDCurrentScr =
                        WFGetParamValue(Diagram, 'AccountIDCurrent', "", GlobCountTask, GlobCount);
                ContactIDCurrent = WFGetParamValue(Diagram, 'ContactIDCurrent');
                BidIDCurrent = WFGetParamValue(Diagram, 'BidIDCurrent');
        }
}

где Diagram - это

function wd_BidExecute3OnBeforeItemExecute(DiagramItem) {
        // основной скрипт БП
        Diagram = GetDiagramByItem(DiagramItem);
        ...
}

Заранее спасибо за ответ.

правильно
неправильно

Нравится

15 комментариев

а можно для теста получить сервисы диаграммы и скрипта?

Как вариант для решения задачи можно попробывать использовать StringList, преобразовывать и передавать его в параметр типа строки

"Яворский Алексей" написал:Как вариант для решения задачи можно попробывать использовать StringList, преобразовывать и передавать его в параметр типа строки

Если есть массивы, хотелось бы их и использовать :)

"просто Алексей" написал:а можно для теста получить сервисы диаграммы и скрипта?

Конечно :) Еще выложила Заявку, она используется в БП. Архив

Есть у меня мысль, что надо создавать датасет, но правильно ли это?

Предлагаю обратить внимание на тему http://www.community.terrasoft.ru/forum/topic/4566

[quote="Яворский Алексей"]Предлагаю обратить внимание на тему http://www.community.terrasoft.ru/forum/topic/4566[/quote]
Я видела эту тему, там нет решения.

Данный вопрос передан в департамент разработки, ориентировочный срок ответа 28.10.2011

Спс :)

Забыла дописать. Еще добавляла:

function WFGetParamValueDirect(Parameters, ParamName, DefaultValue, NumberTask, GlobCount) {
	if (ParamName == "AccountIDCurrent"	 || ParamName == "ContactIDCurrent"	
		|| ParamName == "BidIDCurrent") 
	{
		if (GlobCount != 0) {
				return Parameters.ItemsByName(ParamName).Value.Items(NumberTask);
		}
...

"Яворский Алексей" написал:Данный вопрос передан в департамент разработки, ориентировочный срок ответа 28.10.2011

Когда примерно будет ответ? Или как-то пытаться переписать, не используя массивы?

Данный вопрос требует больше времени, ориентировочный срок ответа 08.11.2011, на данный момент советую Вам воспользоваться обходным решением

Доработка выполнена, изменения войдут в сборку 3.3.2.241

Спасибо :)

Анна, добрый день!

Сообщаю, что сборка бинарных файлов 3.3.2.241 уже выпущена.
Чтобы получить ссылку для загрузки соответствующих файлов, пожалуйста, направьте запрос в службу технической поддержки на e-mail support@tscrm.com.

Спасибо.

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