Нужно переименовать объект раздела. БПМ выбивает, что элемента с таким именем нет. Как же переименовать объект?

Нравится

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

Можете подробнее описать, каким образом Вы пытаетесь переименовать объект раздела (и желательно добавьте скриншоты)?

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

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

таблице со столбцами

Ответственный | Количество активностей

Нравится

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

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

За основу можете взять пример воронки продаж в дешбордах - там тоже реализована возможность фильтрации периода.

Также посмотрите статью на Академии по добавлению пользовательского виджета итогов.

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

За основу можете взять пример воронки продаж в дешбордах - там тоже реализована возможность фильтрации периода.

Также посмотрите статью на Академии по добавлению пользовательского виджета итогов.

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

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

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

Условно говоря, можно ли как-то свой пакет сделать по умолчанию для сохранения всех таких настроек?

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

 

Нравится

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

Создайте свой пакет, укажите его в системной настройке "Текущий пакет".

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

Создайте свой пакет, укажите его в системной настройке "Текущий пакет".

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

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

Добрый день. Требуется скрывать содержимое ContentContainer инструментальной панели действий в зависимости от значения атрибута карточки редактирования. Я переопределил объявление модуля в карточке, добавив свойство  contentVisible с привязкой к атрибуту, но теперь содержимого ContentContainer не видно никогда.  Подскажите как добиться, чтобы содержимое отображалось в зависимости от значения атрибута карточки редактирования. Ниже привожу код, который я модифицировал

        modules: /**SCHEMA_MODULES*/{

            "ActionsDashboardModule": {

                "config": {

                    "isSchemaConfigInitialized": true,

                    "schemaName": "OpportunityActionsDashboard",

                    "useHistoryState": false,

                    "parameters": {

                        "viewModelConfig": {

                            "entitySchemaName": "Opportunity",

                            "actionsConfig": {

                                "schemaName": "OpportunityStage",

                                "columnName": "Stage",

                                "colorColumnName": "Color",

                                "filterColumnName": "ShowInProgressBar",

                                "orderColumnName": "Number",

                                "innerOrderColumnName": "End",

                                "decouplingConfig": {

                                    "name": "OppStageDecoupling",

                                    "masterColumnName": "CurrentStage",

                                    "referenceColumnName": "AvailableStage"

                                }

                            },

                            "contentVisible": {bindTo: "NrbIsOpportunity"},

                            "dashboardConfig": {

                                "Activity": {

                                    "masterColumnName": "Id",

                                    "referenceColumnName": "Opportunity"

                                }

                            }

                        }

                    }

                }

            }

        }/**SCHEMA_MODULES*/,

Нравится

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

Попробуй по изменению атрибута вызывать обновление  твоей детали:

this.updateDetail({detail: "Relationships"});

Решил свою проблему с помощью сообщений. Пришлось сделать два встречно направленных сообщения, чтобы корректно отрабатывало во всех возможных вариантах просмотра: combined mode с вертикальным реестром и без, separate mode. Ниже код замещающей схемы инструментальной панели действий

define("OpportunityActionsDashboard", [], function() {
	return {
		messages: {
			"InitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
			},
			"GetInitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.PUBLISH
			}
		},
		methods: {
			/**
			 * @inheritdoc Terrasoft.BaseActionsDashboard#subscribeSandboxEvents
			 * @overridden
			 */
			subscribeSandboxEvents: function() {
				this.callParent(arguments);
				var sandbox = this.sandbox;
				var tags = [sandbox.id];
				sandbox.subscribe("InitVisibilityByRights", this.initVisibilityByRights, this, tags);
				sandbox.publish("GetInitVisibilityByRights");
			},
 
			/**
			 * Инициализирует видимость содержимого панели
			 */
			initVisibilityByRights: function(value) {
				this.set("ContentVisible", value);
			}
		},
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
	};
});

В карточке редактирования продажи необходимы следующие модификации

		messages: {
			"InitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.PUBLISH
			},
			"GetInitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
			}
		},
 
		attributes: {
			// это и есть атрибут, который определяет видимость
			"IsColumnVisibleByOwnerOrFuncRole": {
				dependencies: [{
					columns: ["IsColumnVisibleByOwnerOrFuncRole"],
					methodName: "publishVisibilityByRights"
				}]
			}
		},
		methods: {
 
			subscribeSandboxEvents: function() {
				this.callParent(arguments);
				this.sandbox.subscribe("GetInitVisibilityByRights", this.publishVisibilityByRights, this);
			},
 
			/**
			 * Публикует признак видимости в другие модули
			 */
			publishVisibilityByRights: function() {
				var moduleIds = this.getModuleIds();
				moduleIds.push(this.sandbox.id);
				var value = this.get("IsColumnVisibleByOwnerOrFuncRole");
				this.sandbox.publish("InitVisibilityByRights", value, moduleIds);
			}
 
		},

 

Вот так это выглядит в интерфейсе

Когда показано содержимое панели действий

 и 

Когда скрыто

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

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

Существует ли документация по сущностям системы? /ServiceModel/EntityDataService.svc/ возвращает массу сущностей, нужны конкретные, в частности персоны, компании, адреса, их взаимосвязи.

Нравится

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

Насколько мне известно такой документации нет.

Компании - Account

Контакты (персоны) - Contact

Адреса - AccountAddress и ContactAddress соответственно

Взаимосвязи - Relationship

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

Насколько мне известно такой документации нет.

Компании - Account

Контакты (персоны) - Contact

Адреса - AccountAddress и ContactAddress соответственно

Взаимосвязи - Relationship

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

Можно открыть раздел «Конфигурация» и вбивать в поиск названия (они используются в списке из EntityDataService) и заголовки интересующих объектов. Если неизвестен и заголовок, можно посмотреть используемый объект в мастере раздела для интересующего раздела или детали.

Спасибо за инфо! Методом научного тыка я уже пробовал, но вдруг... :)

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

Возможно ли использование JWT авторизации для подключения веб сервиса, а так же для доступа к API BPM?

Нравится

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

Нет, JWT не поддерживается. 

При интеграции bpm’online с веб-сервисами поддерживается два типа аутентификации: базовая и OAuth 2.0.

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

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

О компании

Завод элеваторного оборудования «Сокол» — лидер в изготовлении и монтажа доступного и высококачественного элеваторного оборудования в Украине.

 

Предпосылки внедрения bpmonline

Работа с клиентами в компании проводилась при помощи Excel, данные велись разрозненно, что не позволяло сделать общий анализ показателей продаж, загрузки и вовлеченности менеджеров. Директор компании принял решение внедрить CRM-систему, которая бы максимально позволила закрыть данные задачи.

 

Задачей внедрения bpm'online было создать и автоматизировать рабочий процесс отдела продаж.

Выполненные настройки

Основной процесс работы менеджеров по продаже ведется в Лиде. Для этого была видоизменена базовая карточка Лида, добавлены такие поля как «Банк земли», «Код ОКПО», «Холдинг» и т.д. В виду обширной торговой деятельности сотрудникам компании необходима была детализация адресов клиентов по регионам и районам. В ходе реализации данной задачи были добавлены связанные справочники. После наполнения  этих справочников данными формирование адреса было автоматизировано следующим образом: после указания города  фильтруется соответствующая область, далее исходя из выбранной области фильтрация применяется к регионам, а в результате выбора нужного региона фильтруется район.

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

 

Работу с клиентами менеджеры ведут в Лидах через активности, email, звонки. Если клиент готов к покупке, создается контрагент на основании регистрационных данных в Лиде, следующим шагом по нему заключается договор. Также перед CRM-координатором стояла задача, автоматического формирования договоров из системы с использованием данных имеющихся в системе, например, «Номер договора», «Дата договора», и т.д. Данную потребность удалось реализовать с помощью конструктора печатных форм. В следствии были настроены печатные формы, и их автоматическое формирование из системы позволило значительно сократить время на рутинные операции связанные с подготовкой договоров.

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

Результат

Внедрение bpm’online позволило вывести работу с клиентами на более высокий уровень. Менеджеры в системе ежедневно фиксируют все договоренности с клиентами, эффективно планируя свои активности, что в свою очередь позволило освободить время для работы над увеличением клиентского портфеля. В дальнейшем клиент планирует автоматизировать процесс работы со счетами.

Нравится

Поделиться

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

Здравствуйте, возможно ли открыть страницу записи детали по URL ссылке, используя Id записи?



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



http://[someSite]/Nui/ViewModule.aspx#CardModuleV2/ContactPageV2/edit/a36a54a2-3c6c-44eb-aa2f-a7e75305270a , 



не url детали.

Спасибо

Нравится

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

Добрый день!

Да, BPM не меняет адрес в адресной строке.

Адрес записи детали будет следующим:

ttp://[someSite]/Nui/ViewModule.aspx#CardModuleV2/[Страница редактирования записи детали]/edit/[Id записи детали]

Добрый день!

Да, BPM не меняет адрес в адресной строке.

Адрес записи детали будет следующим:

ttp://[someSite]/Nui/ViewModule.aspx#CardModuleV2/[Страница редактирования записи детали]/edit/[Id записи детали]

Сидоров Александр В.,

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

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

Запускаю из сервиса БП, в котором нет никаких ожиданий.

UserConnection 	userConnection	= HttpContext.Current.Session["UserConnection"] as UserConnection;
var 			manager 		= userConnection.ProcessSchemaManager;
var 			processSchema 	= manager.GetInstanceByName("UsrProcess");
var 			process 		= processSchema.CreateProcess(userConnection);
 
process.SetPropertyValue("ExternalCall", true);
process.Execute(userConnection);

Подскажите, как дождаться завершения БП и прочитать параметры, которые мы имеем в конце выполнения?

Нравится

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

Добрый день!

Данное действие синхронно, т.е. после завершения операции process.Execute(userConnection); уже можно забирать параметры.

Забирать их следующим образом (пример):

res.Success = process.GetPropertyValue("RpSuccess") != null ? (bool)process.GetPropertyValue("RpSuccess") : false;
res.ErrorDescription = process.GetPropertyValue("RpReturnMsg") != null ? (string)process.GetPropertyValue("RpReturnMsg") : "";

 

Добрый день!

Данное действие синхронно, т.е. после завершения операции process.Execute(userConnection); уже можно забирать параметры.

Забирать их следующим образом (пример):

res.Success = process.GetPropertyValue("RpSuccess") != null ? (bool)process.GetPropertyValue("RpSuccess") : false;
res.ErrorDescription = process.GetPropertyValue("RpReturnMsg") != null ? (string)process.GetPropertyValue("RpReturnMsg") : "";

 

Я бы еще добавил проверку что БП завершен а не свалилися например с ошибкой или еще выполняется, примерно так. 

if (process.Status != ProcessStatus.Running && process.Status != ProcessStatus.Error)

or

if (process.Status == Terrasoft.Core.Process.ProcessStatus.Done)

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

UserConnection 	userConnection	= HttpContext.Current.Session["UserConnection"] as UserConnection;
var manager 		= userConnection.ProcessSchemaManager;
var processSchema 	= manager.GetInstanceByName("UsrPreCreateDealProcess");
var flowEngine 		= new Terrasoft.Core.Process.FlowEngine(userConnection);
Dictionary<string, object> parameter = new Dictionary<string, object>();
parameter.Add("CarId", car_id);
Terrasoft.Core.Process.ProcessDescriptor pd = flowEngine.RunProcess(processSchema, parameter);
if (pd.ProcessStatus == Terrasoft.Core.Process.ProcessStatus.Done)
{
	?????
}

Как вытащить параметры в конце выполнения здесь?

Есть предположение, что копать стоит в сторону FlowEngineStateService, у него есть метод FindProcessComponentSet(Guid processUId), который возвращает инфу о процессе. И там уже забрать параметры

Сидоров Александр В.,

я нашел этот класс, у него есть метод GetParameterValue, но он стабильно возвращает, что параметр не найден по данному пути и возникает (философский) вопрос, что есть Путь? Видимо, это не просто имя. Но товарищи из Террасофта не догадались описать этот момент нигде ни разу.

перепробовал всё с FlowEngineStateService - ничего не работает, написал в ТП

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

ТП ответила, что решения в 7.11 нет. Я так и знал :)) и заранее сделал обходной путь через БД. Заодно полезное для отладки логирование получилось

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

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

Нравится

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

Добрый день!

Деталь можно обновить следующим кодом:

this.updateDetail({detail: "DetailName"});

 

Добрый день!

Деталь можно обновить следующим кодом:

this.updateDetail({detail: "DetailName"});

 

Сидоров Александр В.,

Спасибо, добавил reloadAll: true и заработало)

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