Добрый день, уважаемое сообщество!

Возникла необходимость передать во внешний сервис список проектов, привязанных к контакту текущего пользователя (под которым была выполнена аутентификация через AuthService.svc). При вызове процесса через  ProcessEngineService.svc я могу получить контакт текущего пользователя и выполнить нужный запрос, но не могу вернуть его результат (или могу?).

А при обращения через OData я могу получить результат запроса, но не представляю, как в него добавить фильтр по текущему контакту.

Подскажите, пожалуйста, как мне быть.

Нравится

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

Посмотрите в академии ПРИМЕРЫ ЗАПРОСОВ НА ВЫБОРКУ С ФИЛЬТРАЦИЕЙ

На вскидку вам надо получить id текущего пользователя в переменую ContactCurrentUserId и вызвать чтото типа

В примере ниже e71dceda-9b0f-4509-aa10-f479aa69a9eb - Id контакта текущего пользователя а фильтрация идет по значению Guid в поле Contact объекта Project

Url сайта>/0/ServiceModel/EntityDataService.svc/ProjectCollection?$filter=Contact/Id eq guid'e71dceda-9b0f-4509-aa10-f479aa69a9eb'

 

Посмотрите в академии ПРИМЕРЫ ЗАПРОСОВ НА ВЫБОРКУ С ФИЛЬТРАЦИЕЙ

На вскидку вам надо получить id текущего пользователя в переменую ContactCurrentUserId и вызвать чтото типа

В примере ниже e71dceda-9b0f-4509-aa10-f479aa69a9eb - Id контакта текущего пользователя а фильтрация идет по значению Guid в поле Contact объекта Project

Url сайта>/0/ServiceModel/EntityDataService.svc/ProjectCollection?$filter=Contact/Id eq guid'e71dceda-9b0f-4509-aa10-f479aa69a9eb'

 

Через OData можно считать SysAdminUnit с фильтрацией по логину пользователя, тем самым получить contactId. А дальше делать уже запрос на выборку и фильтрацию проектов.

Через ProcessEngineService можно получить значение пвраметра (указав название параметра в ResultParameterName), но с интерпретируемыми процессами это работает плохо

В 7.17.1 должен появиться возврат результата из нынешних интерпретируемых БП, в академии будут инструкции по запуску из клиентского и серверного кода.

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

Коллеги,

Помогите, пожалуйста, разобраться с курсами валют. Я сделал веб-сервис, который передает курсы валют из 1С в bpmonline. Бизнес-процесс bpmonline запускает этот веб-сервис и добавляет запись в сущность "Курсы валют". Поле Rate (курс) заполняется значением из 1С, но есть еще такое поле как RateMantissa. Судя по всему, это поле влияет на то как курс представляется в bpmonline. Например, если я вручную, через интерфейс bpmonline, добавляю курс доллара как 27.04, то в таблице БД поле Rate устанавливается в 0.0370, а RateMantissa=03698224852071006. Скажите, пожалуйста, что это за RateMantissa такая и как мне ее рассчитать, чтобы в бизнес-процессе передать курс полученный из веб-сервиса? Заранее спасибо за ответ. 

Нравится

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

В поле RateMantissa содержится дробная часть курса в неокругленном виде, причем обратите внимание, что данное поле текстового, а не числового формата.

Что такое мантисса и зачем она нужна можно почитать здесь и здесь.

В поле RateMantissa содержится дробная часть курса в неокругленном виде, причем обратите внимание, что данное поле текстового, а не числового формата.

Что такое мантисса и зачем она нужна можно почитать здесь и здесь.

Алла Савельева,

Спасибо за ответ. Посмотрев на код клиентских схем я установил, что в случае когда в 1С курс доллара равен 27.04, в bpmonline поле Rate в сущности CurrencyRate следует передавать как результат деления 1/27.04, а RateMantissa я передаю как (1/27.04).ToString().Split('.',',')[1]. Возможно, это кому-нибудь поможет.

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

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

Нравится

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

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

Показать все комментарии
активности
аналитика
график
данные
7.12
sales

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

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

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

Нравится

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

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

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

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

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

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

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

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

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

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

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

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

 

Нравится

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

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

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

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

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

Показать все комментарии
инструментальная панель
инструментальная панель действий
7.13_()
sales

Добрый день. Требуется скрывать содержимое 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.

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

Добрый день.

При нажатии на кнопку у меня должна меняться иконка кнопки. Я заместила  CTI panel, добавила картинку "MyButtonIcon" такого же размера как и остальные иконки. Как передавать новую иконку в "ImageConfig" каждый раз когда я совершаю нажатие.

Нравится

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

В схеме CommunicationPanel для иконок почты, виз и прочего заведено по несколько изображений с однотипными названиями: VisaMenuIcon, VisaMenuPressedIcon, VisaMenuCounterIcon и VisaMenuPressedCounterIcon. И в функции выбирается то или иное:

/**
 * Creates menu icon image for current menu item state.
 * @private
 * @param {String} itemTag Menu item tag.
 * @return {Object} Menu item icon config.
 */
getItemImageConfig: function(itemTag) {
	var resourceName = "";
	var menuItemIconNameTemplate = this.get("MenuItemIconNameTemplate");
	if (!this.getIsFeatureEnabled("OldUI")) {
		resourceName = this.Ext.String.format(menuItemIconNameTemplate, itemTag, "", "");
		return this.get("Resources.Images." + resourceName + "SVG");
	}
	var isItemPressed = (this.get("SelectedMenuItem") === itemTag);
	var isItemCounter = this.get(itemTag + "Counter");
	var pressedSuffix = isItemPressed ? "Pressed" : Ext.emptyString;
	var counterSuffix = isItemCounter ? "Counter" : Ext.emptyString;
	resourceName = Ext.String.format(menuItemIconNameTemplate, itemTag, pressedSuffix, counterSuffix);
	return this.get("Resources.Images." + resourceName);
},

 

Показать все комментарии
url
details
Деталь
ссылка на запись
7.7
sales

Здравствуйте, возможно ли открыть страницу записи детали по 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 записи детали]

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

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

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