Кейс таков, что есть созданная кнопка, по её нажатию должна открыться карточка EmailPageV2.
Существует ли возможность реализовать это без бизнес-процесса и передать туда значения какие-либо.
Главное это открытие, а передачу я сам организую.

Нравится

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

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

Пример реализации вы можете найти в схеме CommunicationPanelEmailSchema - при нажатии на кнопку "Добавить email" (AddEmail) вызывается метод createEmail(), который открывает страницу редактирования EmailPageV2.

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

Добрый день!
Я создал в настройках пользователя CheckBox

который сохраняет в таблицу UsrTakeMail уникальный идентификатор пользователя (GUID) и значение моего CheckBox (Flag)

Существует процесс "Отправка email сообщения группе о назначении обращения"
В нём есть блок задание-сценарий "Prepare Recipient Emails"

var emailSelect = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "SysAdminUnit");
var emailColumn = emailSelect.AddColumn("Contact.Email");
var groupId = ReadCaseData.ResultEntity.GetTypedColumnValueGuid>("GroupId");
emailSelect.Filters.Add(emailSelect.CreateFilterWithParameters(FilterComparisonType.Equal, "[SysUserInRole:SysUser].SysRole", groupId));
var collection = emailSelect.GetEntityCollection(UserConnection);
IsNeedSendEmail = collection.Count > 0;
RecipientEmails = string.Empty;
foreach(var entity in collection) {
        var email = entity.GetTypedColumnValuestring>(emailColumn.Name);
        if (!string.IsNullOrEmpty(email)) {
                RecipientEmails += string.Format("{0};", email);
        }
}
return true;

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

Проблема:
Для того чтобы сделать замещающий бизнес-процесс я скопировал процесс "Отправка email сообщения группе о назначении обращения".
Отключил основной процесс через кнопку действия
Но при попытке создать обращение, видно что в журнале процессов выполняется основной процесс а не замещенная копия.
Подскажите что я делаю не так?

Нравится

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

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

Процесс "Отправка email сообщения группе о назначении обращения" вызывается в процессе "Запуск процесса Отправка email сообщения группе о назначении обращения". Для решения вам необходимо:
1) Скопировать процесс "Запуск процесса Отправка email сообщения группе о назначении обращения"
2) Изменить логику копии, чтобы запускался созданный вами процесс
3) Отключить процесс "Запуск процесса Отправка email сообщения группе о назначении обращения"

В результате базовый процесс запускаться не будет.

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

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

Процесс "Отправка email сообщения группе о назначении обращения" вызывается в процессе "Запуск процесса Отправка email сообщения группе о назначении обращения". Для решения вам необходимо:

1) Скопировать процесс "Запуск процесса Отправка email сообщения группе о назначении обращения"

2) Изменить логику копии, чтобы запускался созданный вами процесс

3) Отключить процесс "Запуск процесса Отправка email сообщения группе о назначении обращения"

В результате базовый процесс запускаться не будет.

Большое спасибо! Получилось!
Только нужно уточнить 2 пункт:
В скопированном запуске процесса необходимо изменить GUID процесса который он будет запускать.
GUID процесса можно узнать в строке браузера, зайдя в сам процесс.

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

Добрый день.

При попытке сохранения рассылки возникает ошибка "Нет прав для добавления записи в объект email". Пользователь с правами администратора, лицензии все выданы.

Версия 7.8.0.3374
Приложение без доработок.

При попытке изменить шаблон рассылки вылетает вот такая ошибка:
ошибка

Нравится

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

Добрый день, Дмитрий!

К сожалению, описанную Вами проблему мы не можем решить в рамках форума community.
Пожалуйста, адресуйте Ваш запрос на техническую поддержку support@terrasoft.ru
Также, просьба предоставить адрес Вашей системы и более детальный кейс воспроизведения ошибки.

Спасибо за быстрый ответ!

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

При открытии мастера раздела появляется такая ошибка. "Ошибка Мастера разделов. Значение не может быть неопределённым. Имя параметра: path2"
Как можно её исправить?

Нравится

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

Антон, здравствуйте!

Для устранения данной ошибки необходимо зайти в [Дизайнер системы] - [Системные настройки] - [Текущий пакет].

И выбрать пакет Custom в [Значение по умолчанию]. Наглядный скриншот прикрепил ниже.

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

"Вильшанский Дмитрий" написал:

Антон, здравствуйте!

Для устранения данной ошибки необходимо зайти в [Дизайнер системы] - [Системные настройки] - [Текущий пакет].

И выбрать пакет Custom в [Значение по умолчанию]. Наглядный скриншот прикрепил ниже.

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


Сделал всё как вы написали, проблема не решилась

"Иванов Антон Генадиевч" написал:
Вильшанский Дмитрий пишет:

Антон, здравствуйте!

Для устранения данной ошибки необходимо зайти в [Дизайнер системы] - [Системные настройки] - [Текущий пакет].

И выбрать пакет Custom в [Значение по умолчанию]. Наглядный скриншот прикрепил ниже.

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

Сделал всё как вы написали, проблема не решилась

Пакет "Custom" доступен для редактирования?

"Вильшанский Дмитрий" написал:
Иванов Антон Генадиевч пишет:

Вильшанский Дмитрий пишет:

Антон, здравствуйте!

Для устранения данной ошибки необходимо зайти в [Дизайнер системы] - [Системные настройки] - [Текущий пакет].

И выбрать пакет Custom в [Значение по умолчанию]. Наглядный скриншот прикрепил ниже.

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

Сделал всё как вы написали, проблема не решилась

Пакет "Custom" доступен для редактирования?

Да, доступен

"Иванов Антон Генадиевч" написал:
Вильшанский Дмитрий пишет:

Иванов Антон Генадиевч пишет:

Вильшанский Дмитрий пишет:

Антон, здравствуйте!

Для устранения данной ошибки необходимо зайти в [Дизайнер системы] - [Системные настройки] - [Текущий пакет].

И выбрать пакет Custom в [Значение по умолчанию]. Наглядный скриншот прикрепил ниже.

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

Сделал всё как вы написали, проблема не решилась

Пакет "Custom" доступен для редактирования?

Да, доступен

Странно.
Антон, напишите письмо с полным описанием проблемы, пожалуйста, в техническую поддержку (support@terrasoft.ru). Для того, чтобы оперативно помочь Вам решить проблему.

Спасибо!

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

Заполняем поле менеджер(пользователь системы), заполняем поле даты/время, при заполнении этого поля нужно проверить свободен ли в это время(и следующих 15 мин) менеджер, если да то делаем кнопку доступной.
Интересует как сделать саму проверку.

Нравится

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

Добрый вечер, Виталий.

Для решения Вашей задачи необходимо:
1) Привязать доступность кнопки к булевому атрибуту, имеющему по умолчанию значение false.
2) При каждом изменении поля Дата/Время делать запрос к базе данных проверяя свободен ли он и на основании результат менять значение атрибута из пункта 1.

Вот что получилось:
var esq = Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "Activity"});
esq.addAggregationSchemaColumn("Id", Terrasoft.AggregationType.COUNT, "Id");
esq.filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL,
"Owner",
this.get("Owner").value
));
esq.filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.Greater,
"StartDate",
new Date()
));
esq.getEntityCollection(
function(response) {
var e = response.collection.getByIndex(0).get("Id");
e = e + e;
},
this
);
на строке var e = response.collection.getByIndex(0).get("Id"); выбивает ошибку - елемент не найден, если убрать фильтр по дате - выбирает все как есть, значит проблема в фильтре, что я сделал не так? возможно формат другой? я не смог найти пример с датами

... жесть, не Greater а GREATER

так, наткнулся на другую проблему, как я понял оно работает:
формируем запрос и отправили его на сервер и когда придет ответ - обрабатываем его, но не ждем пока он придет код выполняется дальше. когда приходит ответ - выполняется функция "getEntityCollection( function(response". И тут 2 вопроса можно ли сделать так чтоб все висло и ждало пока придет ответ и как передать в эту функцию параметры

Виталий, javascript асинхронный по умолчанию и с этим ничего сделать нельзя.

По поводу параметров:

1) В метод getEntityCollection вторым параметром передается scope выполнения функции обратного вызова. Т.е. если в него передать this - функция сможет работать с любыми атрибутами или методами карточки.

2) Аналогично можно перед вызовом getEntityCollection закешировать this.
var scope = this;
Тогда можно будет получить или изменить любой атрибут обращаясь к scope внутри функции обратного вызова.
var param = scope.get("Owner");
scope.set("Owner", {id: "", displayValue: "Supervisor"})

да но что делать когда нужно выполнить вот такой код:

esq.getEntityCollection(
	function(response) {
		var ActivitytCount = response.collection.getByIndex(0).get("Id");
		if (ActivitytCount === 0) {
			this.callParent([function() {
				this.Terrasoft.chain(this.publishOnSaveEvents, function() {
					this.onSaved(callback, scope);
				}, this);
			}, this]);

выбивает ошибку:
TypeError: e is undefined

Как вариант зависания - используйте метод showBodyMask() перед вызовом getEntityCollection. Это позволит отобразить на карточке маску загрузки которая не позволит менять данные.

В функции обратного вызова скройте маску this.hideBodyMask()

this.showBodyMask();
esq.getEntityCollection(function(response) {
	//вычисления
	this.hideBodyMask()
}, this);

рекомендую также смотреть в сторону использования try catch что бы избежать вечной маски загрузки если в коллбэке возникнет ошибка

Ошибка в том, что вызвать callParent в функции обратного вызова невозможно, контекст уже утерян.

Пример решения (метод onEntityInitialized взят для примера):

onEntityInitialized: function() {
	if(this.get("test") === true){
		this.set("test", false);
		this.callParent([function() {
			this.Terrasoft.chain(this.publishOnSaveEvents, function() {
				this.onSaved(callback, scope);
			}, this);
		}, this]
                return;
	}
	esq.getEntityCollection(
		function(response) {
			var ActivitytCount = response.collection.getByIndex(0).get("Id");
			if (ActivitytCount === 0) {
				this.set("test", true)
				this.onEntityInitialized();
			}
		},
	this);
}

Вау! Никогда не использовал такую логику!!! Сработало, благодарю!

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

Добрый день,

правда ли, что начиная с версии 7.8 в базовой версии продукта предусмотрена настройка, которая позволяет обрабатывать письмо из MS Outlook?

Как ее активизировать?

Нравится

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

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

На сколько я понимаю, то речь идет об "SmartCloud Connect for bpm’online".

Более детально Вы можете ознакомиться по ссылке: https://marketplace.terrasoft.ru/app/67

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

Здравствуйте, сложилась такая ситуация: есть пользовательский пакет, в котором находятся детали, объекты, схемы для пользовательского раздела, необходимо перенести пользовательский пакет с одного сайта на другой.
Пакет я перенёс, установив его из SVN, а вот раздел сам не добавился. В связи с этим, возник вопрос, как мне добавить раздел? Есть ли вообще такая возможность? Сталкивался ли кто-нибудь с такой "проблемой". Заранее спасибо за ответ.

Нравится

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

Добрый день.

Попробуйте настроить рабочее место.

"Адаменко Александр Викторович" написал:

Добрый день.

Попробуйте настроить рабочее место.


Пробовал, раздел не высвечивается в доступных

Попробуйте найти свой раздел в SysModule в базе (проверить есть ли он вообще в системе). Если нет, то как вариант можно через sql добавить его.

Здравствуйте, Антон.

После установки пакета из SVN необходимо выполнить следующие действия:

1. Сгенерировать для требующих генерации.
2. Компилировать все.
3. Выбрать элементы, структура которых менялась. Обновить для них структуру БД.
4. На вкладке Данные отобразить колонки Текст последней ошибки и Требует установки в БД. Установить выбранные элементы.
5. На вкладке SQL сценарии Установить выбранные элементы.

Более подробную информацию вы можете найти по следующей ссылке:

https://www.youtube.com/watch?v=DKVo4I5uTXA&feature=youtu.be (с 03:55:00).

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

Здравствуйте, Антон.

После установки пакета из SVN необходимо выполнить следующие действия:

1. Сгенерировать для требующих генерации.

2. Компилировать все.

3. Выбрать элементы, структура которых менялась. Обновить для них структуру БД.

4. На вкладке Данные отобразить колонки Текст последней ошибки и Требует установки в БД. Установить выбранные элементы.

5. На вкладке SQL сценарии Установить выбранные элементы.

Более подробную информацию вы можете найти по следующей ссылке:

https://www.youtube.com/watch?v=DKVo4I5uTXA&feature=youtu.be (с 03:55:00).

Спасибо большое, помогло

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

Коллеги, доброго вечера!
Есть задача отображать уведомления о Днях рождения контактов всем пользователям, а не только соответствующих условиям (https://academy.terrasoft.ru/documents/sales-enterprise/7-9/kak-rabotat-...). Техподдержка дала направление работы:
За загрузку коллекции знаменательных событий отвечает метод loadNotifications: function(isLoadNew, callback) {…} на схеме BaseNotificationsSchema.
За настройку самого запроса select для заполнение указанной коллекции отвечают методы:
addColumns: function(select) {…},
removeColumns: function(select) {…},
addFilters: function(select) {…} на схеме AnniversaryNotificationsSchema
и метод
initializePageableOptions: function(select, config) {…} на схеме BaseNotificationsSchema

Изучил эти методы, но, честно говоря, так и не понял, как отключить эту фильтрацию по ответственным пользователям. Создал замещающую схему к BaseNotificationsSchema, в ней в методе getNotificationsSelectFilters закоментирировал

filters.add("CurrentContact", this.Terrasoft.createColumnFilterWithParameter(comparisonType.EQUAL,
                                                                "Contact", currentContactId));

и добавил
this.callParent();

внчале метода, но это не помогло. На что ещё обратить внимание?

Нравится

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

Заместите, скопируйте код getNotificationsSelectFilters, закомментите что необходимо, сохраните.
Без this.callParent(), иначе фильтры добавятся.
Терзают, однако, меня смутные сомнения, что это поможет. Уж больно много условий в уведомлениях по знаменательным событиям и мало фильтров в методе.

Да, вот так заработало. Видимо, callParent и правда было зря. Данила, спасибо!

не всё так просто, как оказалось. Этот код стал теперь отображать все уведомления по всем задачам всем пользователям. Так понимаю, нужно добавить условие по типу уведомления и тогда либо добавлять, либо не добавлять доп. фильтр по ответственному, верно?

Антон, естественно, NotificationType должен быть Anniversary

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

Добрый день.
Развернул on-site BPMOnline 7.9.0.1228. Настроил Https.
Сайт работает нормально, но смущает в ошибка в консоли:

Uncaught ReferenceError: calq is not defined.

Подскажите, пожалуйста, что за ошибка и как её побороть?

Нравится

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

Здравствуйте, Игорь!

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

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

Коллеги, добрый день.

Есть коробочная установка sales 7.8 и коробочный AsteriskNOW (под управлением FreePBX), на Asterisk'е настроено два внутренних номера 101 и 102 (оба в контексте from-internal) с созданием соответствующих пользователей. Протокол PJSIP. Звонки с софтфонов между этими номерами нормально проходят.

Установлен и настроен коннектор BPM - Asterisk, в консоли выдаётся сообщение об успешном подключении к серверу в профиле отображается статус Активен. Но при попытке совершения вызова из bpm выдаётся ошибка:
[Telephony] {"connectionUId":"701d02fe-d0a9-4b81-8a97-c00afb97b22c","eventType":0,"content":"{"errorType":0,"data":"Asterisk error: OriginateResponse: Failure, Target Number = 102"}","contentType":"MsgErrorInfo"} 1 all-combined.js:1813:491

В консоли Астериска при этом появляется:
WARNING[7801]: chan_sip.c:6084 create_addr: Purely numeric hostname (101), and not a peer--rejecting!

Т.е. Астериск отклоняет осуществление вызова с прописанного в bpm номера (101).

В связи с этим вопрос: подскажите, пожалуйста, кто сталкивался - какие дополнительные настройки нужны в коробочной Asterisk/FreePBX для запуска интеграции?

Нравится

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

Александр, добрый день.

Исходя из приведенных данных можно предположить, что Originate выполняется на peer "SIP/102" (исходя из того, что предупреждение от модуля chan_sip). Вы же ранее указали, что используете модуль PJSIP. Наиболее вероятно, что проблема в этом. Больше точно можно было бы сказать из полного запроса Orginate и полного ответа. Посмотреть полную информацию можно в файлах логов интеграционной службы TMS. Если предположение верное, обратитесь, пожалуйста, в поддержку для получения интеграционной службы, которая работает с PJSIP модулем.

Да, дело было в модуле pjsip. Поменял его в Asterisk на sip, ошибка ушла.
Спасибо.

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