Доброго дня всем (может конечно и не дня)!

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

Для примера создадим тривиальную wf:

Единственный шаг с типом business service, имя сервиса Inbound E-mail Database Operations, а имя метода FindRecord.

У этого метода вот такие аргументы:

Имя In/Out Обязательность Описание
BusObj In Да Бизнес объект компоненты из которой нужно получить значение
BusComp In Да Бизнес комнонента из котороой нужно получить значение
QueryFields In Да Поля компоненты через запятую, по которым будет производится поиск
ValueFields In Нет Поля компоненты через запятую, значения которых необходимо получить
<In Field Name> In Нет Значение поля, по которым будет производится поиск. Для каждого поля в QueryFields отдельная запись со значением. Проставляется руками.
ErrorMessage Out Нет Текст ошибки
FatalErrCode Out Нет Код ошибки
Id Out Нет Id найденной записи
<Out Field Name> Out Нет Имя поля, значение которого необходимо получить. Для каждого поля в ValueFields отдельная запись со значением. Для каждого поля Проставляется руками.

Для примера зададим такие входные параметры:

И такие выходные:

И получаем дату рождения и полное имя контакта по запросу типа: «[First Name] = ‘СЕРВИСА’ AND [Last Name] = ‘ТЕСТ’.

Вот такой незамысловатый, но очень usefull сервис (не мог удержаться от этого слова). За материал спасибо Лехе!