Добрый день.
Есть справочник с полями(Имя, Описание, Показывать(логическое)).
Подскажите, как сделать фильтр, если Показывать = фолс то не отображать запись в справочнике.
(при нажатии на лупу в всплывающем окне не отображались такие записи)
Прикреплю скриншоты.

Нравится

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

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

Есть два варианта решения:
1) Программированием
2) Распределением прав

Программированием Вы можете создать список элементов для отображения. Пример Вы можете найти в схеме ActivityPageV2 (пакет UIV2). Поле "Результат" фильтруется. Доступные для выбора записи определяются кодом:

				"Result": {
					lookupListConfig: {
						filters: [
							function() {
								var type = this.get("ActivityCategory");
								var filterGroup = Ext.create("Terrasoft.FilterGroup");
								filterGroup.add("ActivityCategory",
									Terrasoft.createColumnFilterWithParameter(
										Terrasoft.ComparisonType.EQUAL,
										"[ActivityCategoryResultEntry:ActivityResult].ActivityCategory",
										type.value));
								filterGroup.add("BusinessProcessOnly",
									Terrasoft.createColumnFilterWithParameter(
										Terrasoft.ComparisonType.EQUAL,
										"BusinessProcessOnly",
										0));
								return filterGroup;
							}
						]
					}
				},

Правами Вы можете включить администрирование по записям для объекта справочника. Далее, Вам необходимо:
1) Определить права для пользователей, чтобы все видели все записи
2) Удалить содержимое справочника
3) Создать значения, которые должны видеть все пользователи
4) Изменить права по умолчанию - раздать права таким образом, чтобы записи не видели пользователи, у которых Пользователь = false (например, добавив пользователей, которые могут видеть записи в функциональную роль)
5) Создать значения, которые должны видеть пользователи, входящие в функциональную роль с четвертого пункта.

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

возможно ли использовать сервис Mandrill совместно с bpmOnline 7.2?

Нравится

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

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

Да и Террасофт уже отошел от Mandrill в сторону рассылок UniOne.

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

возможно ли использовать сервис Mandrill совместно с bpmOnline 7.2?

Нравится

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

Добрый день!

Интеграция с Mandrill была реализована начиная с продукта 7.4, до этого использовалась интеграция с MailChimp. К сожалению, ввиду технологических отличий, на продукте версии 7.2 использовать сервис Mandrill не удастся.
Прошу обратить Ваше внимание, что с версии продукта 7.8 мы перешли на использование email-рассылок в облаке (UniOne).

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

Доброго дня.
Підкажіть, на сторінці трігерного листа є дешборди зі статистикою. Зокрема видно такі речі як hard bounce. Підкажіть, де можна побачити список контактів по яких власне і відбувся hardbounce?

Нравится

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

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

Добавил деталь Продажи в новый раздел

details: /**SCHEMA_DETAILS*/{
        Opportunities: {
                schemaName: "OpportunityDetailV2",
                entitySchemaName: "Opportunity",
                filter: {
                        masterColumn: "Id",
                        detailColumn: "UsrCar"
                }
        }
}/**SCHEMA_DETAILS*/,
diff: /**SCHEMA_DIFF*/[
        {
                "operation": "insert",
                "parentName": "HistoryTabContainer",
                "propertyName": "items",
                "name": "Opportunities",
                "values": {
                        "itemType": Terrasoft.ViewItemType.DETAIL
                }
        }
]/**SCHEMA_DIFF*/

При добавление или изменение записи из детали, страница редактирования не открывается, в консоли ошибка: "Cannot read property 'name' of undefined" в методе BasePageV2.getDefaultTabName на строчке:

defaultTabName = this.getDefaultValueByName("DefaultTabName");

Подскажите чем может быть вызвана проблема? В разделе контрагенты например все нормально.

Нравится

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

Самое банальное - скомпилировать конфигурацию и почистить после этого redis.

Не помогло.

Здравствуйте,
А вы деталь мастером добавляли в новый раздел, или вручную, может у вас нет закладки HistoryTabContainer
Вот к примеру, в конфигурации создал мастером новый раздел «NesCar».
В Opportunity добавил колонку справочник NesCar ссылкой на новый раздел.
Мастером разделов добавил на страницу нового раздела деталь «Продажи».

В итоге деталь отображается.

Код сгенерированный мастером:

define('NesCarPage', ['NesCarPageResources', 'GeneralDetails'],
function(resources, GeneralDetails) {
	return {
		entitySchemaName: 'NesCar',
		details: /**SCHEMA_DETAILS*/{
	"Opportunity14547f8203f8": {
		"schemaName": "OpportunityDetailV2",
		"entitySchemaName": "Opportunity",
		"filter": {
			"detailColumn": "NesCar",
			"masterColumn": "Id"
		}
	}
}/**SCHEMA_DETAILS*/,
		diff: /**SCHEMA_DIFF*/[
	{
		"operation": "insert",
		"name": "NesName",
		"values": {
			"layout": {
				"column": 0,
				"row": 0,
				"colSpan": 24,
				"rowSpan": 1
			}
		},
		"parentName": "Header",
		"propertyName": "items",
		"index": 0
	},
	{
		"operation": "insert",
		"name": "NesTestd95734f67c80",
		"values": {
			"layout": {
				"column": 0,
				"row": 1,
				"colSpan": 12,
				"rowSpan": 1
			},
			"bindTo": "NesTest",
			"caption": {
				"bindTo": "Resources.Strings.NesTestCaption"
			},
			"textSize": 0,
			"contentType": 1,
			"labelConfig": {
				"visible": true
			},
			"enabled": true
		},
		"parentName": "Header",
		"propertyName": "items",
		"index": 1
	},
	{
		"operation": "insert",
		"name": "GeneralInfoTab",
		"values": {
			"caption": {
				"bindTo": "Resources.Strings.GeneralInfoTabCaption"
			},
			"items": []
		},
		"parentName": "Tabs",
		"propertyName": "tabs",
		"index": 0
	},
	{
		"operation": "insert",
		"name": "Opportunity14547f8203f8",
		"values": {
			"itemType": 2
		},
		"parentName": "GeneralInfoTab",
		"propertyName": "items",
		"index": 0
	}
]/**SCHEMA_DIFF*/,
		attributes: {},
		methods: {},
		rules: {},
		userCode: {}
	};
});
Показать все комментарии

Здравствуйте, коллеги.
В ходе реализации задачи переноса данных из firebird-а в облачную 7-ю bpm'online столкнулся с проблемой авторизации. Сервис для отбора данных из firebirdа написал на Jave. Для того, чтобы засетить данные необходимо вызвать веб-сервис реализованый на C# в bpm'online по ссылке. Сервис на стороне bpm'online работает правильно. Не могу пройти авторизацию сайта.
Подключил библиотеку jerse. Такой код не проходит авторизацию.

Client client = Client.create();
client.addFilter(new HTTPBasicAuthFilter(username, password));
WebResource webResource = client.resource("https://test.bpmonline.com/0/rest/CustomConfigurationService/SetContact/ttteeest/123/12463");
ClientResponse clientResponce = webResource.post(ClientResponse.class);

Подскажите пожалуйста что не так. Есть ли другой способ пройти авторизацию в bpm'online с помощью Java.
Заранее благодарен.

Нравится

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

Обычно авторизацию делают через AuthService.

У кого-нибудь есть пример реализации authService на Джаве?

Уважаемые коллеги, никак не получается пробиться через авторизацию.
URL url = new URL("https://test.bpmonline.com/ServiceModel/AuthServ..");
CookieManager manager = new CookieManager();
HttpURLConnection http = (HttpURLConnection) url.openConnection();
http.setDoOutput(true);
http.setRequestMethod("POST");
http.setRequestProperty("Content-Type","application/json");
CookieHandler.setDefault(this.manager);

Проблема с куками, т.к. в managere пустое множество. Подскажите пожалуйста где поправить. Заранее благодарен

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

После обновления с 7.5.0.1007 на 7.5.0.1328 при логине появилась ошибка:
Метод не найден: "Common.Logging.ILog Common.Logging.LogManager.GetLogger(System.Type)".
Сама библиотека (Common.Logging.dll) в папке Terrasoft.WebApp\bin имеется.
Файлы сайта скопировал с новой сборки, конфигурацию компилировал, структуру бд обновлял, исходные коды генерировал. Подскажите как исправить.

UPD: Разобрался. Конфигурация не компилировалась из-за бп, для которого нужно было сгенерировать исходный код. Кстати почему исходные коды не генерируются там где нужно при действии "Сгенерировать для требующих генерации", а структура БД в свою очередь не обновляется там где нужно при действии "Обновить для требующих обновления" - для меня загадка.

Нравится

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

Здравствуйте.
Скорее всего, это особенность конкретной версии. Насколько мне известно, в более поздних релизах такого уже не было.

Поэтому я как правило пользуюсь "Сгенерировать для всех" и т.д :smile:

"Александр Кудряшов" написал:

Поэтому я как правило пользуюсь "Сгенерировать для всех" и т.д :smile:


А возможно каким-то способом обновить структуру БД для всех объектов? Можно конечно отфильтровать и делать постранично. Но вдруг есть способ проще.

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

Здравствуйте, коллеги.
В ходе реализации задачи переноса данных из firebirdа в облачную 7ю бпм столкнулся с проблемой авторизации. Сервис для отбора данных из firebirdа написал на Jave. Для того, чтобы засетить данные необходимо дернуть сервис в бпм по ссылочке.
Подключил библиотеку jerse. Такой код не проходит авторизацию.

Client client = Client.create();
client.addFilter(new HTTPBasicAuthFilter(username, password));
WebResource webResource = client.resource("https://test.bpmonline.com/0/rest/CustomConfigurationService/SetContact/ttteeest/123/12463");
ClientResponse clientResponce = webResource.post(ClientResponse.class);

Подскажите пожалуйста что не так. Заранее благодарен.

Нравится

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

Базовая http аутентификация в версии 7.8 не поддерживается. Можно использовать сервис аутентификации
Подробности смотрите здесь
https://academy.terrasoft.ru/documents/technic-sdk/7-8-0/autentifikaciy…

Статья, сожалению, содержит информацию о Basic-аутентификации, но в ближайшее время будет актуализирована

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

Доброго времени суток.
Подскажите ответ на такую задачу:
Есть маркетинговая кампания "Приглашение на мероприятие"
Аудитория на основе группы.
Вопрос - каким елементом кампании подтвердить участие контакта в мероприятии (изменить его статус).
Можно ли ввобще это сделать кампанией или надо делать БП.
Буду очень благодарен за примеры.

Нравится

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

"Мотков Илья" написал:

Здесь почитайте - https://academy.terrasoft.ru/documents/marketing/7-8-0/kak-sozdat-kampan...


Там читал в первую очередь.
Там нет ответа на мой вопрос, и возникает еще куча дополнительных:
1. Из первого мейла поток с уловием "Переход по ссылке". А если в письме несколько ссылок, как отследить по которой именно перешел?
2. Допустим я отправив письмо з кнопкой "Потвердите участие". Как поменять отклик учасника уже в мероприятии на "Подтверждено участие"
3. В какой момент начнет заполнятся пкладка аудитория у мероприятия?

Добрый день!

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

Более подробную информацию о бизнесс-процессах Вы можете просмотреть тут:
https://academy.terrasoft.ru/documents/technic-bpms/7-8-0/obzor-vozmozh…

"Мария Ватулина" написал:

Добрый день!

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

Более подробную информацию о бизнесс-процессах Вы можете просмотреть тут:

https://academy.terrasoft.ru/documents/technic-bpms/7-8-0/obzor-vozmozhn...


Подскажите, а в какой таблице лежит информация по какой именно ссилке перешел клиент.
Нашел таблицу откликов e-mail - там просто есть окклити типа открыл, hard bounce, перешел по ссылке.
А вот по какой именно ссылке - найти не могу.

Добрый день, Ярослав!

В БД есть таблица "MandrillClicks", в которую пишется информация какой контакт открывал конкретную ссылку.
Также есть вьюха "VwBulkEmailClickedLink", которая на основании таблицы "MandrillClicks" показывает информацию.

Отдельно есть таблица "BulkEmailHyperlink", которая показывает Caption гиперссылки и ее Url.

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

Приветствую.
Хочу сделать интеграцию с внешней системой, в частности мессенджером Slack, он позволяет сделать WebHook, и обращаться к нему посредством POST запроса, например:

curl -X POST --data-urlencode 'payload={"channel": "#general", "username": "BPM-bot", "text": "This is posted to #general and comes from a bot named webhookbot.", "icon_emoji": ":ghost:"}' https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXX

Это запостит в канал #general от имени BPM-bot сообщение text и смайл, https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXX уникальный адрес webhook`а для моего инстанса Slack.

Как в BPM реализовать отправку этого сообщения? Т.е. как сделать бизнес-процесс мне понятно, а вот с отправкой сложности...

Нравится

1 комментарий
public class RequestUtils: IDisposable {
 
    #region Methods: Private
 
    private async Task<HttpWebResponse> SendRequest(WebRequest request) {
        var response = await request.GetResponseAsync();
        return (HttpWebResponse)response;
    }
 
    #endregion
 
    #region Methods: Public
 
    public void Dispose() {
    }
 
    public void DoPostRequest(string requestUri, string user, string pwd, string text) {
       /* data sample
        {
            "userName": "user1",
            "password": "password",
            "data": "Hello"
        }
        */
        /* Преобразовываем в json */
        string jsonData = JsonConvert.SerializeObject(new {
            userName = user,
            paswword = pwd,
            data = text
        });
        /* uri sample: http://localhost/MyApp/bla.svc/Login */
        WebRequest request = WebRequest.Create(requestUri);
        byte[] dataArray = Encoding.UTF8.GetBytes(jsonData);
        request.Method = "POST";
        request.ContentType = "application/json";
        request.ContentLength = dataArray.Length;
        Stream stream = request.GetRequestStream();
        stream.Write(dataArray, 0, dataArray.Length);
        /* send request */
 
        /* async */
        var response = SendRequest(request);
 
        /* or sync*/
        var response = request.GetResponse();
    }
 
    #endregion
}
Показать все комментарии