Технические вопросы
7.x

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

Нравится

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

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

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

Программированием Вы можете создать список элементов для отображения. Пример Вы можете найти в схеме ActivityPageV2 (пакет UIV2). Поле "Результат" фильтруется. Доступные для выбора записи определяются кодом:
[javascript]
"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;
}
]
}
},
[/javascript]

Правами Вы можете включить администрирование по записям для объекта справочника. Далее, Вам необходимо:
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).

Показать все комментарии
Маркетинговая кампания
отклик
7.x

Доброго дня.
Підкажіть, на сторінці трігерного листа є дешборди зі статистикою. Зокрема видно такі речі як 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 ссылкой на новый раздел.
Мастером разделов добавил на страницу нового раздела деталь «Продажи».

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

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

[javascript]
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: {}
};
});
[/javascript]

Показать все комментарии
authorization
connection
JAVA
Технические вопросы
7.x

Здравствуйте, коллеги.
В ходе реализации задачи переноса данных из 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
обновление билда
Технические вопросы
7.x

После обновления с 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:


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

Показать все комментарии
Технические вопросы
7.x

Здравствуйте, коллеги.
В ходе реализации задачи переноса данных из 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.

Показать все комментарии
curl
slack
экспорт
Технические вопросы
7.x

Приветствую.
Хочу сделать интеграцию с внешней системой, в частности мессенджером 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 комментарий

[csharp]
public class RequestUtils: IDisposable {

#region Methods: Private

private async Task 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
}

[/csharp]

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