Вопрос:

У меня в работе есть однотипные задачи, при выполнении которых, я задаю вопросы клиенту (скрипт). Я хотел бы, чтобы этот скрипт отображался во всех активностях определенной категории (когда такая активность создается по БП) в примечании к активности (закладка файлы и примечания). А когда активность завершается я хотел бы скопировать этот текст в лид, с которым эта активность связана.

Я не знаю как сделать две вещи:

- как задать исходный текст, который должен помещаться в поле Примечание к активности (это таблица в формате Word)

- как потом скопировать этот текст в тоже поле, но в лиде

Ответ:

Для сохранения таблицы необходимо её корректно указать с помощью HTML форматирования.

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

1. Скопировать всю таблицу из Word файла в примечания одной записи Контакта (скажем, контакт1).

2. Создать процесс из двух элементов:

- Читать данные, Контакт, где id = id записи из первого пункта.

- Автогенерируемая страница, добавить текстовое поле, заполнить его значением Читать данные контакта.Заметки

3. Запустить процесс, в открывшейся странице скопировать текстовое значение (в нем будет HTML форматированое наполнение)

4. Создать системную настройку, условно, "Заметка по умолчанию", тип = Строка неограниченной длины, в поле "Значение по умолчнаию" вставить скопированный со страницы текст, сохранить сис настройку.

5. В рамках процесса заполнять поле Заметки значением из созданной системной настройки "Заметка по умолчанию".

Нравится

Поделиться

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

Коллеги, здравствуйте. 

Столкнулся с проблемой при построении бизнес процесса, в котором система должна автоматически при добавлении нового контрагента указывать в поле "тип" -всегда клиента.

Если кто имеет понятие каким образом правильно выстроить этот БП в bpm, буду очень благодарен.

Заранее спасибо!

 

Нравится

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

Здравствуйте, Роман!

Бизнес-процес для вашей ситуации может выглядеть следующим образом (скриншот 1):

1.Для запуска БП, начальным событием будет сигнал от обьекта, в нашем случае это "Добавление нового контрагента" (скриншот 2);

2.С помощью действия системы [Изменить данные], мы ищем нашего нового контрагента по Id, и устанавливаем ему 

значение поля "Тип контрагента" - Клиент (скриншот 3).

Но я бы Вам посоветовал для данной задачи, просто сменить поле по умолчанию для типа контрагента в конфигурации системы.

Для этого Вам нужно:

1. Перейти в [Управление конфигурацией](скриншот 4);

2. Выбрать вкладку [Конфигурация];

3. Дальше [Схемы]-[Добавить]-[Замещающий обьект] (скриншот 5);

4. В Структуре выбрать "UsrEntity1", в свойствах [Родительский обьект] указать "Контрагент" (скриншот 6);

5. Затем в структуре перейти на вкладку [Type] - [Поведение]-[Значение по умолчанию]-[Установить константу] и в поле выбора значения

выбрать неоходимое (скриншот 7).

Роман,

У поля "Тип" объекта "Контрагент" можете выставить свойство "Значение по умолчанию", равное значению "Клиент".

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

 Добрый день!



Возникла необходимость указания значений кастомных колонок при создании активности элементом "Выполнить задачу". Нужно, чтобы сразу при открытии пользователю карточки этой активности там уже были нужные значения в пользовательских колонках (На основе их будет приниматься решение о состоянии активности). Как я понял, пользовательскими средствами это сделать нельзя, нужно использовать мини-сценарий "После сохранения активности" в расширенном режиме. После этого я столкнулся с проблемой, которую описывает Михаил в посте https://community.terrasoft.ru/questions/vypolnit-zadacu-i-dobavit-dann…;то есть ограниченность контекста выполнения этого скрипта. На данный момент у меня не получается заставить работать даже простой



 

var userConnection = Get<UserConnection>("UserConnection");

Потому как "Get" не существует в данном контексте. Мне же хотелось использовать параметры процесса и запросы в базу в этом сценарии. По совету Михаила передал в текстовом виде параметр процесса в Переменную "Контекст выполнения" элемента, но не понимаю на данном этапе, как получить из него значение в сценарии и распарсить в GUID.



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

Нравится

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

Олег, добрый день.

Не совсем понятно, зачем выполнять все эти действия, если можно просто добавить связи для Ваших колонок, как описано в комментарии, и предзаполнять поля в самом элементе.

При небольшом количестве кастомных полей такой подход мне кажется более оптимальным.

Логвин Андрей Витальевич,

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



Дело в том, что, как вы сами написали, в таком случае нужно будет использовать добавление активности, а затем открытие страницы редактирования, что не одно и то же с вызовом элемента "Выполнить задачу".

Андронов Олег Алексеевич,

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

Но если Вы всё же хотите именно в рамках сценария После сохранения Активности, то алгоритм примерно следующий:

Создать параметр процесса, заполнить, передать его в Контекст выполнения в Выполнить задачу, а в сценарии обращаться напрямую к параметру:

var TitleFromExecutionContext = ExecutionContext;//Здесь в ExecutionContext передали ранее параметр процесса

var update = new Update(UserConnection, "Activity")

        .Set("Title", Column.Parameter(TitleFromExecutionContext)).

        Where("Id").IsEqual(Column.Parameter(CurrentActivityId));

        update.Execute();

 

Удачи в реализации.

Андронов Олег Алексеевич,

Доброго дня, скажите, получилось ли решить Вашу задачу? Каким способом?

У меня сейчас такая же, и это совсем беда))

Наверно, лучше писать такие вопросы Олегу в личку. Никто, кроме Вас, не знает подробностей задачи и чем не подходят советы Андрея.

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

Настроили простенький процесс, который открывает форму отправки email.

Проблема:

в поле "От кого" не проставляется значение

При этом, если сидеть под админом то поле заполняется.

 

Нравится

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

Здраствуйте!

Описанная Вами проблема, скорей всего, происходит из-за отсутсвия прав доступа на чтение записи почтового ящика, на который администратору выдаётся доступ по умолчанию.

Для того чтобы выдать доступ на почтовый ящик необходимо зайти под администратором в профиль пользователя, после чего выбрать опцию "Учетные записи почты", выделить запись необходимой почты, нажать в появившимся меню "Права доступа" и там выдать доступ на чтение тем пользователям, которым этот доступ необходим, чтобы бизнес-процесс работал корректно.

Если после этого проблема продолжит воспроизводиться, рекомендую обратиться в службу технической поддержки за более детальной информацией.

Спасибо.

Кормильцев Андрей,

Спасибо помогло

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

Добрый день.

Столкнулись со следующей проблемой:

Есть объект заявка, при создании этого объекта запускается бизнес процесс "Обработать заявку". Заявка может быть создана и со стороны основного приложения, с потрала и с мобильного клиента. 

Проблема в том, когда заявка создается от пользователя с ролью "Все пользователи портала" (т.е. от пользователя с очень ограниченными правами), то и Бизнес процесс запускается под этим пользователем. И процесс перестает работать на шаге создания активности:

 Изображение удалено.



После того как скачали текст ошибки и изучил исходники - выяснилось, что портальному пользователю не хватает прав на объект ActivityParticipantRole. После того как были выданы права на этот объект, появилась ошибка, что прав не хватает уже на объект "ActivityParticipant". Дальше права не стали выдавать (т.к. есть опасения что придется выдавать очень много).

Пока мы видим 3 решения этой проблемы: 

а) Последовательно выдавать пользователям портала права на все необходимые объекты - видится что это не самый правильный вариант решения проблемы, но рабочий.

б) Переделать архитектуру процесса, так чтобы только пользователи основного приложения запускали процесс обработки заявки.

в) Всегда запускать процесс от конкретного пользователя (если такое возможно).





Собственно вопросы:

1) Есть ли еще какие нибудь варианты решения и как "правильно" решить данную проблему?

2) Можно ли запускать процесс от конкретного пользователя?

 

Нравится

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

По пунктам:

а) Действительно рабочий, но куча проблем оттестировать этот момент.

б) Я бы переделал весь процесс и выборки/изменения/удаления делал через C# скрипт, пользуясь UserConnection.AppConnection.SystemUserConnection

в) скорее всего запускать так нельзя, только выполнять отдельные элементы под "видом" супервизора (см. пункт б)

Добрый день. Вот тоже столкнулся с проблемой. Что за пункт 6? 

Что то сайт совсем поломался, процитировать не могу.



По поводу "Я бы переделал весь процесс и выборки/изменения/удаления делал через C# скрипт, пользуясь UserConnection.AppConnection.SystemUserConnection" - наш процесс не маленький, по этому такая переделка будет очень трудоемкой, возможно даже более трудоемкой чем выдача прав.



Придумали еще 1 вариант, это запускать процессы по новым заявкам по таймеру (например раз в 1, 5 или 10 минут получать все заявки по которым еще не запущен процесс и запускать)

Габбазов Искандер Рустемович,

А как вы считываете, что по данному обращению был запущен именно тот процесс который активность создаёт? 

Евгений. В журнале процессов это все можно увидеть

Габбазов Искандер Рустемович,

В журнале процесса, есть ход выполнения процесса. А то что данный процесс был выполнен для заявки 1 нет. При таком же подходе, активности будут открываться вновь и вновь.

А, вопрос про то запущен процесс уже или нет? Так можно поле флаг создать. Например когда процесс по заявке стартует, сразу заполняем это поле флаг. А для запуска ищем все заявки у которых этот флаг не отмечен.

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

Добрый день!

Возможно, кто-то сталкивался.  Процесс идет по циклу. Для задач "Открыть страницу редактирования" я устанавливаю длительность таким образом

([#Длительность задачи(мин)#]==-1)?480:[#Длительность задачи(мин)#]

На первом круге все работает, но когда иду на второй круг, то выходит ошибка

Невозможно вычислить выражение "([#[IsOwnerSchema:false].[IsSchema:false].[Parameter:{d68182d4-d334-4166-a66e-c2f355d8db20}]#]==-1)?480:[#[IsOwnerSchema:false].[IsSchema:false].[Parameter:{d68182d4-d334-4166-a66e-c2f355d8db20}]#]", ошибка: Допущена ошибка в формуле: Expression expected (at index 1).

при этом в "вопрос пользователю я задаю это же выражение в качестве вопроса ([#Длительность задачи(мин)#]==-1)?480:[#Длительность задачи(мин)#] и там оно выводит все корректно, а именно длительность установить на втором круге не может и процесс валиться с ошибкой

 

 

 

Нравится

1 комментарий

Здравствуйте.

При разработке бизнес-процесса необходимо установить значение логического параметра.

Изображение удалено.

Установил с помощью контексно меню дизайнера. Но при сохранении выдает ошибку.

Изображение удалено.

Эти ошибки не дают возможности скомпилировать конфигурацию.

Подскажите, что сделать?

Нравится

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

а если через "формулу" задать true/false заработает?

Здравствуйте, Данила. Собственно, true и false установил, конфигурация скомпилировалась. Заработало) Но осадочек остался) Спасибо за оперативную помощь. 

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

Коллеги, доброго дня!

 

В Академии есть хорошая статья по настройке e-mail - уведомлений о новом комментарии к сообщению в ленте:

https://academy.terrasoft.ru/documents/technic-bpms/7-10/kak-uvedomit-p…

 

Хотелось бы получать уведомление о новом сообщении и новом комментарии, но только в одном из каналов.

Вопрос такой. Существует ли связь между сообщением и каналом, в котором сообщение добавлено? Не удается найти подходящее условие для Сигнала.

 

Заранее спасибо за помощь.

Нравится

1 комментарий

Здравствуйте, Эрнст!

Для Вашего кейса Вы можете взять за пример стартовые сигналы базового процесса "Уведомления в ESN".

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

Коллеги, добрый день!

Такой кейс: есть бизнес-процесс с несколькими задачами, которые создаю с помощью элемента бизнес-процесса «Выполнить задачу». Для примера, создаем такой процесс: при создании новой записи в разделе «Счета» запускается бизнес-процесс, состоящий из трех последовательных задач: «Уточнить юридический адрес Контрагента», «Отправить счет на оплату по почте» и «Ожидать оплату». Для заполнения параметров создаваемой активности «Читаю данные» из записи созданного Счёта, в том числе, в поле «Ответственный» создаваемых Активностей ставлю значение поля «Ответственный» из записи Счёта.

В реальной жизни, пока пользователь выполнял задачу, ответственный сотрудник по Счёту мог поменяться (уволился, перевёлся и т.д.). Логично, что при формировании следующей задачи следует в поле «Ответственный» поставить новое значение из Счёта. Однако для этого необходимо заново прочитать запись «Счёт» с помощью элемента «Читать данные». Таким образом, поскольку мы не знаем, когда будут изменены данные в Счёте, приходится перед каждым элементом задачи ставить элемент «Читать данные» и ориентироваться на него при создании новой Активности.

Хотела бы обсудить, какие еще варианты решения этого кейса есть. Напрашивается вытащить однотипные действия (в нашем случае – «Читать данные» Счёта) в отдельный событийный подпроцесс, но что бы я не делала, я не смогла запустить его более одного раза либо без ошибок.

Нравится

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

Проще всего именно так и делать - три раза читать данные. Просто и надежно.

Добрый день! 

Оптимальнее всего это будет сделать посредством бизнес-кейсов:

Это позволит уйти от бизнес-процессов, длительных загрузок при сохранении и необходимости обновлять страницу. 

Также это избавит от необходимости создавать множество чтений данных.

Удачи!

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

Коллеги, добрый день!

Ранее в сообществе несколько раз поднимались темы использования элемента "Чтение данных" для получения "результирующей коллекции", чтобы в последствии её использовать в элементе "Задание-сценарий" для различных нужд. В версии 7.8 осталось только режимы: "читать первую запись", "считать количество записей" и "считать функцию".

Каким образом в данной версии можно получить Результирующую коллекцию? И каким образом можно к ней обратиться в элементе "Задание-сценарий"?

Заранее спасибо!

Нравится

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

Добрый день!

Пример обработки коллекции из чтения данных в ScriptTask:

EntityCollection entities = Get<EntityCollection>("ReadDataUserTask1.ResultEntityCollection");

var result = new Collection<string>();

foreach(Entity entity in entities) {

    

    var cityName = entity.GetTypedColumnValue<string>("Name");

    string temp = cityName.ToString();

    result.Add(temp);

    }

string displayValue = result.ConcatIfNotEmpty(",");

Set("MyResult", displayValue);

return true;

* MyResult - параметр процесса с типом Строка неограниченной длины

* ReadDataUserTask1 - название элемента Чтения данных

 

Олег, Спасибо!

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