Добрый день.
Собственно, суть вопроса записана в заголовке темы. Есть предложение сохранять связку созданной записи с процессом посредством поля WorkflowItemID. Для случаев изменения записи - это связку не нужно проставлять (что логично).

Не знаю: счтитать это ошибкой или нет, но я бы сказал, что это ошибка и ее нужно исправить. Пишу для того, чтобы ее исправили в коробочной версии.

Terrasoft XRM 3.4.0.130

Как я ее исправил у себя

Изменения вносились в скрипт wa_ReadWriteDataScript.
Выделил комментариями /* added */ изменения/добавления.

function ReadWriteData(Action /* added */, WorkflowItemID /* added */) {
                ...
        if (Source == rwsQuery) {
                ...
        } else if (Source == rwsDataset) {
                ...
                if (Direction == rwdParamsToDataset) {
                        if (WriteMethod == rwdwmUpdate) {
                                ...
                        } else {
                                Dataset.Append();
                                FilterValue = Connector.GenGUID();
                                var IDDataField = Dataset.DataFields.ItemsByName('ID');
                                if (IDDataField) {
                                        IDDataField.Value = FilterValue;
                                }
                                /* added */
                                var WorkflowItemIDDataField = Dataset.DataFields.ItemsByName('WorkflowItemID');
                                if (WorkflowItemIDDataField) {
                                        WorkflowItemIDDataField.Value = WorkflowItemID;
                                }
                                /* added */                            
                        }
                } else {
                ...
        }
        ...
}

function wa_ReadWriteDataOnExecute(WorkflowAction, ActionItem, ItemDataset,
        IsComplete, ResultLinkCodes) {
        var LinkCode = '';
        try {
                var Result = ReadWriteData(ActionItem /* added */, ItemDataset.Values('ID')/* added */);
                ...
        } catch (e) {
                ...
        }
        ...
}

Нравится

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

Нужно учитывать при этом несколько факторов:

1) что после выполнения этого действия запись из системы уже нельзя будет удалить, так как она связывается с элементом БП;
2) если одна и та же запись участвует в разных БП – возникнет путаница, особенно если эти БП ещё не завершены.

За предложение - спасибо, мы его обсудим.

Сергей, спасибо за комментарии.

"Sergey Karpenko" написал:1) что после выполнения этого действия запись из системы уже нельзя будет удалить, так как она связывается с элементом БП;

В принципе, такая логика изначально была реализована и в более старых версиях Террасофт. И сейчас, например, при использовании элемента "Открытие окна" и пункта "Создать новую запись" с использованием окна редактирования значение WorkflowItemID проставляется у созданной записи.

"Sergey Karpenko" написал:2) если одна и та же запись участвует в разных БП – возникнет путаница, особенно если эти БП ещё не завершены.

Пока не вижу как такая ситуация может возникнуть, ведь мы говорим о создании новой записи, а не о ее редактировании. То есть в этом посте я имел в виду привязку к процессу только той записи и в тот момент, когда она создается из процесса.

Информацию передал в отдел разработки для анализа. Спасибо!

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