Добрый день! Появилась ли возможность создавать групповые задачи для выбранных по условиям фильтра записей? Например, отобраны фильтром лиды, требуется создать однотипную задачу одному ответственному. Как это можно сделать? Спасибо!

Нравится

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

Добрый день!



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

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

На текущей конфигурации для реализации вашей задачи вы можете добавить для необходимого типа активности справочное поле "Группа ответственных", которое будет ссылаться на справочник "Объект администрирования". В объекте Объект администрирования доступны для выбора как пользователи так и группы пользователей.

Михайло Зеленюк пишет:

На текущей конфигурации для реализации вашей задачи вы можете добавить для необходимого типа активности справочное поле "Группа ответственных", которое будет ссылаться на справочник "Объект администрирования". В объекте Объект администрирования доступны для выбора как пользователи так и группы пользователей.

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

 

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

Добрый день!

 

Очень не хватает чек-листов в задачах!

Для примера мне необходимо поставить задачу сотруднику на подготовку пакета документов. Перечень фиксированный и прописан в виде списка.

На текущий момент есть возможность  только закрыть задачу с результатом выполнено/не выполнено.

В случае с чек-листом сотрудник сможет контролировать процесс сбора документов по каждому пункту. Процесс работы с задачей станет более информативным, удобным и наглядным. Как только все документы собраны(чек-боксы установлены), задача может быть закрыта. 

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

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

Сделайте деталь с редактируемым реестром в активности и будет вам чек-лист. Плюс к детали контроль логики возможности завершить активность.

А вообще ваша логика выглядит как отдельный бизнес-процесс плюс деталь которую я выше написал.

Если прям очень не хватает лучше закажите разработку.

 

Добрый день, Максим!

 

Ваше пожелание зафиксировали и передали информацию ответственной команде, для добавления данного функционала в будущих версиях.

 

Благодарим за обратную связь.

Полозюков Евгений Петрович пишет:

Сделайте деталь с редактируемым реестром в активности и будет вам чек-лист. Плюс к детали контроль логики возможности завершить активность.

А вообще ваша логика выглядит как отдельный бизнес-процесс плюс деталь которую я выше написал.

Если прям очень не хватает лучше закажите разработку.

 

"Костыли" прикрутить не проблема, только пользоваться будет не удобно. Также важный момент - юзабилити, а это уже доработка элементов интерфейса.

На мой взгляд качественная разработка данной функциональности по силам только Terrasoft. Именно поэтому оформил в качестве Идеи в Community.

Так что голосуем и ждем, что разработчики Terrasoft нас услышат. ) 

 

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

После добавления одного поля в карточку задачи и в EntityConnection, поля начинают "плясать". Иногда открывается в таком виде, при этом заполненные значения не видны. 

И после рефреша всё проходит, но потом может появиться снова

 

Как с этим бороться?Изображение удалено.

Нравится

2 комментария
Лучший ответ

1) Делаем select запрос в EntityConnection, видим поле Position, радуемся, настраиваем порядок.

2) Обновляем деталь, видим беспорядок, грустим (сортировка как бы есть, но её нет, т.к. в коде детали хлам, который не работает)

3) Вспоминаем, что у нас есть руки, и редактируем EntityConnectionsDetailV2:

methods: {
	/**
	 * Убираем позиции с 999 индексом (исключаем ненужные связи)
	 * */
	removePositions: function(item) {
		return item.$Position !== 999;
	},
 
	/**
	 * обработка и сортировка связей
	 * */
	processEntityConnectionsResponse: function(collection) {
		var filtered = collection.filterByFn(this.removePositions, this);
		var sorted = filtered.sort(null, null, function(a, b) {
			var v1 = a.$Position;
			var v2 = b.$Position;
 
			return v1===v2 ? 0 : (v1 > v2 ? 1 : -1);
		});
		collection.clear();
		collection.loadAll(sorted);
		this.loadColumnValues(collection);
 
		return sorted;
	}
}

 

Молитвой и божьим словом, на сколько я помню обращения в саппорт коллег))

1) Делаем select запрос в EntityConnection, видим поле Position, радуемся, настраиваем порядок.

2) Обновляем деталь, видим беспорядок, грустим (сортировка как бы есть, но её нет, т.к. в коде детали хлам, который не работает)

3) Вспоминаем, что у нас есть руки, и редактируем EntityConnectionsDetailV2:

methods: {
	/**
	 * Убираем позиции с 999 индексом (исключаем ненужные связи)
	 * */
	removePositions: function(item) {
		return item.$Position !== 999;
	},
 
	/**
	 * обработка и сортировка связей
	 * */
	processEntityConnectionsResponse: function(collection) {
		var filtered = collection.filterByFn(this.removePositions, this);
		var sorted = filtered.sort(null, null, function(a, b) {
			var v1 = a.$Position;
			var v2 = b.$Position;
 
			return v1===v2 ? 0 : (v1 > v2 ? 1 : -1);
		});
		collection.clear();
		collection.loadAll(sorted);
		this.loadColumnValues(collection);
 
		return sorted;
	}
}

 

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

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

у Лида есть кейс, в котором на стадии распределения появляется задача "Распределите лид, определите стратегию взращивания лида", при нажатии на которую запускается БП Распределение лида.
Как можно реализовать аналогичное? Где можно посмотреть как это реализовано?

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

BPM'Online 7.10.0.1742

Нравится

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

Любовь, здравствуйте!

Описанная логика реализована в процессе "Распределение лида 7.8.0". Процесс запускается вручную. Можно сделать копию процесса, в которой элемент "Страница распределения" заменить элементом "Задача".
Предварительно в справочник "Результаты активностей" необходимо добавить три возможных результата:

  1. Интерес отсутствует
  2. Перевод в продажу
  3. Распределить позднее

Каждой записи необходимо добавить признак "Использовать только в процессе".

Далее в копии процесса необходимо удалить элемент "Преднастроенная страница" (предварительно очистив связи) и заменить его элементом задача. В исходящих условных потоках выберите результаты, в зависимости от которых, процесс пойдет по одной из веток.

Из DCM процесс можно будет вызвать как подпроцесс.

Если я не правильно трактовал задачу, пожалуйста, уточните ее.

"Демьяник Алексей" написал:

Любовь, здравствуйте!

Описанная логика реализована в процессе "Распределение лида 7.8.0". Процесс запускается вручную. Можно сделать копию процесса, в которой элемент "Страница распределения" заменить элементом "Задача".

Предварительно в справочник "Результаты активностей" необходимо добавить три возможных результата:

  1. Интерес отсутствует
  2. Перевод в продажу
  3. Распределить позднее

Каждой записи необходимо добавить признак "Использовать только в процессе".

Далее в копии процесса необходимо удалить элемент "Преднастроенная страница" (предварительно очистив связи) и заменить его элементом задача. В исходящих условных потоках выберите результаты, в зависимости от которых, процесс пойдет по одной из веток.

Из DCM процесс можно будет вызвать как подпроцесс.

Если я не правильно трактовал задачу, пожалуйста, уточните ее.


Алексей, спасибо за подробный алгоритм.

Поясню, что я имела в виду.
процесс "распредение лида" был приведен в качестве примера.
вообще у нас реализован свой процесс над другой сущностью . В рамках нашего процесса есть шаги, на которых пользователь должен заполнять некоторые поля. Допустим,на одном шаге 5 полей, на другом 3 и т.д. Поэтому не хочется открывать страницу редактирования полностью, а хочется открыть свою преднастроенную страничку, где только эти 5 (или 3) полей, чтоб пользователь четко видел то, что он должен заполнить и чтобы не отвлекать его остальной информацией.
но проблема в том, что преднастроенные страницы в виде задачи не отображаются в активностях, а нам нужно сделать так, чтобы как -то они отображались.
и вот я увидела кейс лида, в рамках которого есть задача "Распределите лид, определите стратегию взращивания лида", и по клику на нее открывается преднастроенная страница(судя по всему просто запускается процесс Распределения). Мне показалось, что таким образом можно решить мою проблему(отображать преднастроенную страницу в активности).
поэтому хотела узнать
1) где именно прописывается тот факт, что клик по задаче "Распределите лид, определите стратегию взращивания лида" запускает процесс распределения
2) можно ли как-то вывести преднастроенные/автогенерируемые страницы в активности (или только как вы описали через результаты активностей, но мне этот вариант не подходит, так как нужно заполнять не одно, а несколько полей и набор полей будет разным на разных шагах)

Добрый день, Любовь!

К сожалению, по страниц из БП в данный момент Активности не создаются, данное пожелание уже зарегистрировано в системе, и разработчики ядра включат данную возможность в один из ближайших релизов. Исходя из Вашего кейса рекомендуем сделать следующее - все же открывать карточку редактирования, однако скрывать "лишние" поля с помощью бизнес правил. Правила же завязать на ту колонку, по которой строятся стадии кейса.

"Кот Владимир Владимирович" написал:однако скрывать "лишние" поля с помощью бизнес правил. Правила же завязать на ту колонку, по которой строятся стадии кейса.

Это самый оптимальный вариант, пока ожидаем реализации в платформе.
При этом он довольно просто реализуется.
Описывайте поэтапную логику в JavaScript со скрытием/демонстрацией полей.

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

Добрый день, подскажите, пожалуйста, какими средствами crm можно реализовать задачу: чтобы при создании нового лида приходило уведомление менеджеру, а также создавалась задача в календаре, которая, если менеджер не выполнит указанное действие через час будет просрочена?

Нравится

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

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

Задачу можно решить с помощью бизнес-процесса. Дизайн процесса будет выглядеть следующим образом:
1. Стартовый сигнал по добавлению записи в объект Лид.
2. Читать данные в лиде, где Id = Пункт 1. Id
3. Читать данные в контакте, где Id = Пункт 2. Ответственный. Подразумевается, что ответственный в лиде и есть менеджер, которому необходимо отправить уведомление.
4. Отправить письмо, в поле Кому указать Пункт 3. Email.
5. Добавить активность, в активности указать Лид = Пункт 2. Id
6. Элемент “Исключающее ИЛИ по событиям”. От этого элемента выходит два потока:
- первый поток ведет к элементу “Таймер”. В таймере указать 60 минут. После таймера добавить элемент “Изменить данные” в активности, где Id = Пункт 5. Id созданной записи, установить нужное состояние активности (в данном случае Просрочена)
- второй поток ведет к элементу “Обработка сигнала”. Элемент будет ожидать изменение состояния активности, где Id = Пункт 5. Id созданной записи, с фильтром Состояние = Выполнена.

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

Описанная задача может быть решена созданием бизнес-процесса. Логика процесса:
1) Стартовый сигнал по событию добавления записи в объект "Лид"
2) Элемент "Добавить данные" для создания записи в объекте "Активность". Необходимо заполнить поля:
Тип
Категория
Ответственный
Заголовок
Дата начала
Дата завершения
Лид
3) Элемент "Добавить данные" для создания уведомления. Необходимо заполнить следующие поля:
NotificationType: [#Справочник.Тип уведомлений.Reminding#]
Время: [#Системная переменная.Текущее значение даты и времени#]
Кому: [#Ответственный#]
Объект: [#Справочник.Объект раздела (представление).Активность#]
Уникальный идентификатор заголовка: [#Создать активность.Id созданной записи#]
4) Конец процесса.

В результате при создании лида будет запущен созданный процесс, который создаст активность и уведомление по активности

Большое спасибо за помощь. :smile:
Еще такой вопрос: если создавать активность и по активности выводить уведомление в панель - все отлично работает. Но если я вывожу уведомление по созданию нового контакта без активности, то уведомление как бы приходит, но в таком виде: 30 и звоночек не появляется.
ContactNotficationProvider в схемах присутствует. В чем может быть проблема?

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

А провайдер зарегистрирован? Подобная тема обсуждалась здесь.

Добрый вечер, спасибо за отклик.
ContactNotificationProvider шел изначально в сборке
, его тоже необходимо дополнительно регистрировать?
Не подскажите какими средствами осуществлять запуск sql скриптов в bpmonline 7.9, чтобы осуществить регистрацию?

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

Для выполнения sql запросов в системе Вы можете воспользоваться партнерским решением https://marketplace.terrasoft.ru/app/49

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

Добрый день!

Подскажите, как можно автоматически выполнить задачу по процессу в TS 3.X?
Например, стоит задача "проверить оплату". И каждую ночь система проверяет (в базе данных или с вызовом приложения), получена ли оплата.
Если получена, то необходимо закрыть задачу, как выполненную и перейти к следующему шагу процесса.

Нравится

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

Владимир.
Сделать то, что Вы хотите можно прописав все необходимые действия кодом,
который выполнять в нужное время по таймеру. Для TS 3.4 и старше через
раздел JobManager, для более ранних версий, через планировщик Windows,
или какой-то свой крон. В скриптах можно и задачу закрыть, и следующую поставить.
Мы подобное делали, если нужна конкретная помощь, пишите в личку.

"Тимофеев Александр" написал:
Для TS 3.4 и старше

У клиента 3.3.2
Боюсь, upgrade будет слишком трудозатратен

Мы пользовались программой nnCron (https://ru.wikipedia.org/wiki/NnCron).
Ее версия Lite бесплатна, но обеспечивает все необходимое и ставится как сервис.
Скрипты запускаются через WSH в командной строке. Прописываем коннект к конфигурции
и выполнение скриптов. Примеры есть в SDK. В nnCron есть логи, видно когда и что запускалось.
Можно настроить выполнение скриптов без отображения. Только надо установить параметр
AsLoggedUser OFF в ini файле и запускать сервис от системного пользователя, чтобы запускались
скрипты из командных файлов.
Больше "хитростей" нет.
Если не получится, напишите, я поищу в архивах работающий пример.

Здравствуйте, Владимир!

Можно реализовать эту функциональность на уровне базы данных в триггере.

Если получена оплата, то апдейтить данную задачу и элемент процесса, который с ней связан, а после этого создавать новый элемент процесса и новую задачу, которая идет следующим шагом по процессу.

Найти элемент задачи можно по полю WorkflowItemID в tbl_Task, а искать в tbl_WorkflowItem. В tbl_WorkflowItem определить WorkflowID для следующего элемента, который нужно создать (так в базовой версии, в Вашей версии могут быть отличия).

"Савельева Алла" написал:Можно реализовать эту функциональность на уровне базы данных в триггере

Наверное, на уровне БД параметры процесса не поменять...

"Владимир Соколов" написал:Наверное, на уровне БД параметры процесса не поменять...

Такие ограничения данного варианта решения есть и описанное Вами основное, хотя на самом деле все зависит от того, какой параметр нужно передать.

В некоторых случаях можно.

Например, если нужно, чтобы после закрытия задачи новая задача создалась с другим номером счета.
Тогда можно добавить задачу с нужным номером счета на уровне БД, а после выполнения этого элемента процесса передать значение нового счета в параметры бизнес-процесса и продолжать с ним работать дальше.

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

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

Доброго дня.
Подскажите пожалуйста, не знаю как решить проблемку:
Делал автоматическую нумерацию задач и возникла необходимость пронумеровать все старые задачи (которые были созданы до автонумерации. Они имеют номер 0)
Если у меня последняя задача с номером 4000, то необходимо пронумеровать старые начиная с 4001+

Надеюсь на Вашу помощь.

Terrasoft XRM 3.3.2.43

Нравится

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

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

Выполните обновление записей в БД. Получите список всех записей в таблице tbl_Task у которых номер равен нулю, затем для каждой полученной записи выполните update.

Также, если текущее значение счётчика хранится в системной настройке, его стоит увеличить на количество перенумерованных задач.

Да, значение счетчика хранится в системной настройке.
А автоматизировать каким-либо образом можно сие действие?

Вам же надо обновить 1 раз.

Можно написать SQL-скрипт и запустить.

Cпасибо большое за помощь

Сделал следующим образом:
alter table [Table_name] drop column 'Colomn_Name'
alter table [Table_name] add 'Colomn_name' int identity

Показать все комментарии
  • Автор: Толмачев Дмитрий
  • Организация: Программные технологии
  • Применимо: bpm'online 7.x / 5.x
  • Дата: 15.05.2015

История одного действия

В данной статье речь пойдет о создании пользовательского действия бизнес-процесса на основе уже существующего. Думаю, что все знакомы с таким замечательным действием БП как «Выполнить задачу» (рис. 1), который позволяет настроить создание активности и поднять карточку.

1

Рис.1 http://take.ms/K3T3i

Но мое любимое свойство этого действия – это возможность за счет последующего ветвления ограничить количество предлагаемых результатов и вывести результаты в виде цветных кнопок (рис. 2)

2

Рис.2 http://take.ms/zP5L0

К сожалению его использование ранее прекращалось, как только в активность добавлялось новое поле, которое необходимо динамически заполнять в БП. А такая ситуация случалась чуть чаще чем постоянно.

Вместо этого приходилось придумывать разного рода конструкции вида:

1) Использование страницы редактирования

3

Рис 3. http://take.ms/2VBdo

2) Использование промежуточного сигнала на изменение активности

4

Рис 4. http://take.ms/OKNVH

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

Решение

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

• ActivityUserTask / Выполнить задачу [Действие]

• ActivityUserTaskParametersEditPage / Страница редактирования параметров действия «Выполнить задачу»

К сожалению, не найдя способа заместить действие решил воспользоваться старым добрым экспорт/подмена UId/импорт. Экспортировав схему ActivityUserTask заменил (везде) в ней 3 интересующие меня значения

• Название схемы: ActivityUserTask -> SmrActivityUserTask

• Заголовок: Выполнить задачу -> Выполнить настраиваемую задачу

• UId: b5c726f2-af5b-4381-bac6-913074144308 -> b5c726f2-af5b-4381-bac6-913074144309 [!]

[!] Обязательно стоит проверить на существование данный UId в таблицe SysSchema. В случае совпадения наша новая схема заменит уже существующую при импорте. Далее импортируем действие в свой пакет (я предпочитаю хранить пользовательские действия в отдельном пакете)

5

Рис 5. http://take.ms/83Tjj

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

Для удобства также создадим свою страницу редактирования на базе старой: «Добавить» -> «Страница». В качестве родительской выбирается:

• Страница редактирования параметров действия "Выполнить задачу"

6

Рис 6. http://take.ms/9sw5B

Предположим, что мы создали новый раздел «Обращение» / SmrCase и в активности добавили на него ссылку. Теперь мы хотим использовать это «Обращение» в нашем действии.

Настройка страницы

Добавим новое справочное поле на страницу:

1. Добавим «Поле параметра» в контейнер «Связи активности»

7

Рис 7. http://take.ms/Z9s1p

Свойства элемента: • Название: SmrCaseEdit • Подпись: Обращение • Тип данных: Справочник

2. Пропишем привязку поля к параметру действия (сам параметр создадим в действии чуть позже):

Необходимо на странице переопределить метод «GetActivityControlsBinding»

8

Рис 8. http://take.ms/uFEkh

    Dictionary string, Terrasoft.UI.WebControls. WebControl > customBinding = base .GetActivityControlsBinding();
    customBinding.Add( "SmrCase", Page.SmrCaseEdit);
    return customBinding;

Настройка Действия

Для начала привяжем действие к странице. Для этого в свойствах действия укажем

• Страница редактирования параметров = Страница редактирования параметров действия "Выполнить настраиваемую задачу"

Можно также указать свое изображение действия. Теперь необходимо дополнить логику нашего действия с учетом добавленного поля:

1) Добавим новый параметр в действие «SmrCase»

Название: SmrCase

Подпись: Обращение

Тип данных: Справочник

Справочник: Обращение

Схема: SmrCase

2) Изменить метод «CreateActivity», добавив обработку параметра SmrCase.

    var activity = new Terrasoft.Configuration.Activity(UserConnection);
    activity.SetDefColumnValues();
    // SmrCase
    var columnSmrCase = activity.Schema.Columns.FindByName( "SmrCase" );
    if (columnSmrCase != null && SmrCase != Guid .Empty)
    {
        activity.SetColumnValue(columnSmrCase, SmrCase);
    }
    //...

3) Изменить метод «CompleteExecuting», добавив обработку параметра SmrCase.

    var activity = parameters[0] as Terrasoft.Configuration.Activity;
    if (activity == null)
    {
        return false ;
    }
    // SmrCase
    var columnSmrCase = activity.Schema.Columns.FindByName( "SmrCase" );
    if (columnSmrCase != null)
    {
        object smrCase = activity.GetColumnValue(columnSmrCase);
        if (smrCase != null )
        {
            SmrCase = ( Guid)smrCase;
        }
    }
    //...

Добавить действие в список действий БП

В общем случае для использования, созданного нами действия можно воспользоваться элементом «Действие процесса» в свойствах которого указать:

• Действие: Выполнить настраиваемую задачу

Но если этот элемент используется действительно часто можно добавить его в общий список. Для этого необходимо зарегистрировать ее в БД. В общем случае достаточно прописать скрипт:

INSERT INTO [dbo] . [SysProcessUserTask] (
        [SysUserTaskSchemaUId] ,
        [IsQuickModel] ,
        [Caption]
        )
VALUES (
        (SELECT TOP 1 UId FROM SysSchema   WHERE ( Name = 'SmrActivityUserTask' )),
       1 ,
        'Настраиваемая задача' )
GO

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

Вот что у нас получается в результате:

9

Рис 9. http://take.ms/G2PDS

Теперь мы можем использовать свое собственное (настраиваемое!) действие для создания задачи.

Нравится

Поделиться

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

Добрый день! Появилась такая задача: добавить новое поле, тип справочник в карточку "Задача", данные подтягиваются из справочника ответственных, нужно что бы при закрытии карточки отправлялся e-mail не только ответственному и автору, а ещё и человеку из нового поля.Поле добавил, а вот проблема с отправкой. Вроде бы нужно сделать по аналогии с тем что есть(отправкой ответственному например), но зашёл в ступор, не могу найти отправную точку... Буду рад любой возможной помощи. Заранее спасибо!

Нравится

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

Здравствуйте, Николай!
Нужно смотреть в 'scr_TaskEdit', метод 'ProcessSendMailMessageForTask()' проверяет параметр 'NeedSendMail' страницы и вызывает метод 'ProcessSendTaskEmailByContactFieldName()', описанный в 'scr_TaskUtils'.

Показать все комментарии
Добрый день.Предлагаю доработать элемент процесса "Задача" так, чтобы была возможность создавать напоминания ответственному и, возможно, автору задачи (вкл./выкл.).
0 комментариев
Показать все комментарии