0
Голосовать

Детские вопросы про бизнес процессы

Создано:

Раскопки форума, к сожалению не дали ответов.

Пара простых вопросов про БП:

1. Если БП настроен запускаться автоматически на добавление записи в какой-либо раздел (допустим Документы), то как в самом процессе получить ID этой записи?

2. Если мне надо создавать задачу текущему пользователю на основе данных нового документа, я правильно понимаю, что логика примерно такая:
- получаю в параметры диаграммы ID нового документа
- выполняю Action типа "чтение/запись данных" чтобы вытащить нужные мне данные из созданного документа и передать их в параметры диаграммы
- в Action типа "задача" каким-то образом передаю данные из параметров в задачу

Комментарии

Яворский Алексей

Здравсттвуйете Фариз
1) Если вы запускаете процесс через комманду

WFStartByID(WorkflowID, ParamNames, ParamValues);

на событие DataSet, то в ней есть названия передаваемых параметров ParamNames и значения параметров ParamValues БП. Соответственно в БП передаете необходимый ID документа, с которым вы будете работать в БП.

С уважением,
Яворский Алексей
Эксперт 3-й линии поддержки

Гакало Игорь Александрович

По поводу второго вопроса. Можно сделать ApplyDatasetFilter датасета документа по ID документа и затем сделать запись необходимых данных в задачу.
Либо описанным Вами способом.

Мамедов Фариз Эльдарович
Яворский Алексей пишет:
Если вы запускаете процесс через комманду

Запуск процесса настраивал через меню Настройки -> Автоматический запуск процессов.

В таком случае где искать вызов БП? Поиск по сервисам по указанной функции ничего не дал (странно).

Стоян Виталий

Фариз,
1. Если идет автозапуск процесса по настройкам из Файл - Настройки - Автоматический запуск процессов, то ID записи попадет в "неявный" параметр AutoID, а USI датасета - в парамтер AutoDatasetUSI. Вы можете их читать в процессе функцией WFGetParamValue и получать необходимые значения.
2. Если задача создается через действие процесса, то в неее уже попадают некоторые значения из "фиксированных" параметров диаграммы. Например, если у Вас на диаграмме есть параметры AccountID и ContactID, то создаваемая задача "подхватит" эти значения и подставит их в поля "Контрагент" и "Контакт". Если необходимо передавать в задачу другие поля (нестандартные), то нужно будет вносить изменения в сам скрипт действия "Задача", а именно прописывать передачу значений из параметров в задачу - изменять обработчики OnInitialize и OnExecute скрипта wa_TaskActionScript

Мамедов Фариз Эльдарович

Ок, спасибо, пробую делать так:
Задача состоит в том чтобы при создании определенного типа документа автоматом создавать задачу с определенными параметрами (например дата начала задачи будет вычислятся от даты создания документа + кол-во дней из одного поля в документе). Пока просто пробую создавать задачу сохраняя все связи.
Сам БП пока что выглядит крайне примитивно - начало, action типа "открытия окна" - конец.
В параметрах есть AutoID и AccountID.

на событие OnBeforeExecute action "открытие окна" прописал следющее:
function TaskChekPayOnBeforeExecute(ActionItem) {
var DocumentID = WFGetParamValue(ActionItem.ParentItems.ParentDiagram, 'AutoID');
var DocDataset = Services.GetSingleItemByUSI('ds_Document');
ApplyDatasetFilter(DocDataset, 'ID', DocumentID, true);
DocDataset.Open();
var AccountID = DocDataset('AccountID');
WFSetParamValue(ActionItem.ParentItems.ParentDiagram,'AccountID',AccountID);
Log.Write(0, AccountID);
}

Вываливается с ошибкой, причем именно при использовании AccountID в Log.Write, просто текст - выводит. В самом Action выставлено соответствие поля Контрагент параметру диаграммы AccountID - не работает (соответствие поля Документ параметру AutoID - работает).

Мамедов Фариз Эльдарович

разобрался, детская ошибка была. Спасибо )