День добрый, кто нибудь переходил с версии 5.2 на версию 5.4?
В чем особенные отличия?
Какие основные проблемы могут возникнуть при переходе?

Нравится

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

На моей памяти сами Волшебники из Terrasoft переход делали с 5.3 на 5.4 да еще с переносом доработок для одного из клиентов.
А какой смысл в таком переходе? Принципиальная невозможность чего-то определенного в 5.2?
Может лучше не обновляться на заведомо устаревшее и несовершенное решение, а посмотреть в сторону 7.х?

Встал вопрос о интеграции с телефонией, компонент CallCenter нормально работает с версией 5.4 (по словам TerraSoft) соответственно и возник этот вопрос. Переход на 7.х пока невозможен из-за большого количества доработок

Илья, здравствуйте!
Уточните, пожалуйста, с какой АТС планируется интеграция?
Спасибо.

Avaya

Интеграция с TSAPI поддерживается с версии bpm’online 7.x
В запрашиваемом Вами продукте BPMonline Call Centre которая доступна с версии 5.4 имеется возможность интеграции по протоколу TAPI
Для возможности интеграции с Avaya необходимо наличие в АТС компонента Avaya Application Enablement Services (AES)
В случае если Вами будет выполнен переход на 7.6 мы сможем интегрироваться с Вашей АТС Avaya версии 5.2 или выше по протоколу TSAPI

переход на 7.6 не рассматривается, поэтому и интересуюсь по переходу на 5.4

Илья. Переход на 5.4 не позволит Вам использовать интеграцию с Avaya по протоколу TSAPI Так как данная реализация предусмотрена на 7.х
Спасибо.

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

Стоит задача разделить документы на 2 раздела с разными типами. Есть ли возможность определять несколько разделов для одного объекта в mobile с некоторыми фильтрами или прийдется делать для это представление в базе данных bpm?

Нравится

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

Да, вы правы, нельзя добавить на один объект 2 раздела. Предложенный вариант вполне жизненный – реализовать новое представление с фильтром.

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

Каким образом можно загруженные данные подтянуть в модель карточки?
Например в следующем коде данные подгружаются в одном из контроллеров, но установка их в loadedRecord не меняет состояние отображаемых значений в карточке. Также никаких изменений не просходит при обращении к модели одного из вложенных элементов во view.

onLoadRecord: function(loadedRecord) {
                this.callParent(arguments);
                var store = Ext.create('Terrasoft.store.BaseStore', {
                    model: 'Account'
                });
                var queryConfig = Ext.create('Terrasoft.QueryConfig', {
                    columns: ['Name', 'Ownership', 'AccountCategory', 'TypeOfFacility'],
                    modelName: 'Account'
                });
                store.loadPage(1, {
                    queryConfig: queryConfig,
                    filters: Ext.create('Terrasoft.Filter', {
                        property: 'Id',
                        value: loadedRecord.data.Account.data.Id
                    }),
                    callback: function(records, operation, success) {
                        var record = records[0];
                        if (record) {
                            var name = record.get('Name');  
                            loadedRecord.set('OutletName', name);
                        }
                    },
                    scope: this
                });

Нравится

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

Каким образом можно добавить встроенную (Embedded) деталь со связанного объекта? Например на одной из деталей активности вывести деталь адресов контрагента данной активности.

Нравится

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

Для этого необходимо:
1) В манифесте прописать требуемые модели с которыми мы будем работать (например "адреса контрагента"):
Models: { Activity: { RequiredModels: ["AccountAddress"...] ...

2) В карточку (например, просмотра - MobileActivityPreviewPage) добавляем примерно такой код:

*перекрываем событие loadedRecord (или дописываем в него если оно уже перекрыто)

onLoadRecord: function(loadedRecord) {
...
this.callParent(arguments); 
...
var view = this.getView();
var containerConfig = {
		xtype: "container",
		cls: "my-css",
		layout: {
			type: "vbox"
		}
};
var container = view.add(containerConfig);
var modelName = "AccountAddress";
var store = Ext.create("Terrasoft.store.BaseStore", {
	model: modelName
});
var columns = ["Address"];
var queryConfig = Ext.create("Terrasoft.QueryConfig", {
	modelName: modelName,
	columns: columns
});
var AccountId = loadedRecord.data.Account.data.Id;
var filtersConfig = {
	property: "Account",
	value: AccountId
};
store.setPageSize(Terrasoft.AllRecords);
store.loadPage(1, {
	filters: Ext.create("Terrasoft.Filter", filtersConfig),
	queryConfig: queryConfig,
	callback: function(loadedRecords, operation, success) {
		var lr = loadedRecords;
		if (success) {
			for (var i = 0, ln = lr.length; i < ln; i++) {
				var a = container.add(Ext.factory({
					xtype: "label",
					cls: "my-label-css"
				}));
				a.setHtml(lr[i].data.Address);
			}
		}
	},
	scope: this
});
...

В итоге мы увидим адреса контрагента указанного в активности

Теоретически можно добавить любые данные в любое место любой карточки.

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

Часто при необходимости показать в документации или переписке диаграмму процесса просто открывают её в дизайнере и делают скриншот. Таким образом нельзя сохранить большой процесс, не умещающийся целиком на экране в нормальном масштабе.

О возможности сохранить бизнес-процесс в виде графического файла зачастую не знают даже опытные пользователи системы. Но она есть.:wink:

Terrasoft 3.X:
3.X
Две кнопки, экспорт в BMP и в WMF.

bpm'online 5.X и 7.X:
5.X
Есть возможность выбрать формат JPEG, BMP или PNG.

Лучше всего выбирать формат BMP или PNG. В изображениях JPG возможны артефакты сжатия, процессы в WMF также выглядят не очень.

process

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

Нравится

Поделиться

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

В bpm'online 5.X шаблоны для импорта хранятся в статье раздела "База знаний". При настройке системы есть вероятность, что пользователь может удалить статью с шаблонами. В результате, при попытке загрузить шаблон для импорта, система не сможет его подгрузить из-за отсутствия.
Для решения вопроса следует:
1. В раздел [База знаний] добавить новый документ. Указать название и тип.
2. В статью добавить файл-шаблон с названием раздела, например "Юр. лица".
3. В базе данных, таблице KnowledgeBase, скопировать Id статьи, которую мы добавили.
4. В разделе [Инструменты] - [Конфигурация] открыть процесс, например "Скачать шаблон для импорта Юр. лиц".
5. В элементе процесса заменить Id удаленной статьи на Id новой. Сохранить элемент процесса. Опубликовать процесс.

Нравится

Поделиться

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

Намагаюся розібратися зі скриптом [PageLoadCompleteScriptTask].
В ньому використовуються значення полів, взяті наступним чином:

Page.ProductCategoryEdit.Value;
Page.HasAnalogsCheckBox.Checked;
Page.IsAdditionalHandlingRequiredCheckBox.Checked;
...

Значення отримую нульові, або інакше - в них ще не відобразилися значення з DataSource.
Якщо зчитати відповідні значення з DataSource, то все гаразд, є значення.
Але таке застосування не буде коректним.

Коли значення описаних полів ([Page...]) використовую у відповідному обробнику, що був описаний в [InitScriptTaskExecute], то на цьому етапі значення вже присутні.

Запитання: в який момент прописуються значення описаних полів ?
Куди потрібно прописувати логіку, яка спирається на вказані значення ?
Чи, що треба зробити, щоб поля гарантовано отримали свої значення ?

Нравится

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

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

"Ігор Андрусенко" написал:в який момент прописуються значення описаних полів ?

Значение интерфейсных полей изначально прописываются на клиентской части при помощи DataSource. Определение значений на сервере происходит, когда страница вернется с клиентской части.

"Ігор Андрусенко" написал:Куди потрібно прописувати логіку, яка спирається на вказані значення ?

Логику можно прописывать, например, на событиях изменений значений полей, на подготовку фильтров Lookup полей.
Не могли бы Вы описать логику применения значений полей и почему Вас не устраивает использование DataSource?
Спасибо

"y.perevjazko" написал:Не могли бы Вы описать логику применения значений полей и почему Вас не устраивает использование DataSource?

Мабуть справа в організації процесу оновлення полів.

На карточці заявки на внесення змін є пара полів типу дата.
Значення дат розраховуються в методі SetDeadlineDate().

Якщо метод запускається з якого-небудь обробника, то значення в полях фіксуються, в разі якщо обробник відпрацьовує.

А якщо метод запускається в скрипті PageLoadCompleteScriptTaskExecute,
то значення залишаються не зафіксованими.

Я так розумію, що обробник відпрацьовує по AJAX і дає миттєвий результат, а результат відпрацювання по скрипту фіксується після ситуативного надсилання даних на сервер.

Тому зараз запитання я б сформулював наступним чином:
Як заставити здійснити відправку даних на сервер не через обробник зміни значення якогось поля, а в примусовому порядку, у скрипті PageLoadCompleteScriptTaskExecute ?

Сделайте методу булевский параметр, на PageLoadComplete запускаете SetDeadlineDate(true), из других мест — SetDeadlineDate(false). Внутри метода в зависимости от параметра пишите или в поле датасорса (на PageLoadComplete), или в контрол на карточке.

Дещо "косим" способом запускаю метод:
вставив метод SetDeadlineDate() у скрипт обробки повідомлення SetTaskOwnerButtonClick (натиснення кнопки "Установить Content-менеджера").
При натисненні кнопки метод відпрацьовує, візуально значення змінюється.

Але далі отримав наступну мороку:
коли при першому натисненні кнопки вичитую його обома способами:

Page.DeadlineDateEdit.Value
Page.DataSource.ActiveRow.GetTypedColumnValue<DateTime>("DeadlineDate");

то отримую незмінене значення, не те, що в цей момент видно в полі карточки.
Вже коли вікно вибору менеджерів закриваю і потім повторно натискаю кнопку, тоді вичитується значення, яке було підставлене при попередньому натисненні-відпрацюванні SetDeadlineDate().

Це я вже з огляду на даний факт писав про AJAX.
Тому й питання щодо примусової відправки даних на сервер залишається актуальним, бо необхідність двічі розкривати вікно вибору Content-менеджерів навряд чи порадує виконавців.

Что это за окно выбора менеджеров? Оно открывается по кнопке? Как оно связано с полем?
Какой это продукт?

Так по кнопці відкривається вікно OwnerSelectionGridPage
З полем воно пов"язане таким чином:

UserConnection.SessionData["customDeadLine"] = Page.DeadlineDateEdit.Value;

Продукт: ServiceDesk
Я так розумію, що це додаткова розробка.

Але зважаючи на те, що при першому натисненні кнопки значення поля DeadlineDateEdit залишається неоновленим, то й у вікно передається неактуальне значення.
При другому - актуальне.

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

Рекомендуется всюду присваивать через

Page.DataSource.ActiveRow.SetColumnValue("DeadlineDate", DeadlineDate);

а не

Page.DeadlineDateEdit.Value = DeadlineDate;

Значення прописується ось так:

Page.DeadlineDateEdit.SetValue(deadlineDate);

Я так собі уявляю процес:
Значення прописується на боці клієнта, без відправки на сервер.
Тому не обновляється DataSource і, відповідно, зчитується не оновлене значення.
А при відкритті/закритті вікна по кнопці відбувається відправка даних, тому при наступному відпрацюванні SetDeadlineDate() показує, що значення вже оновлені.

А если заменить на Page.DataSource.ActiveRow.SetColumnValue ?

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

Впроваджую ручний розподіл контент-менеджерів по запитах.
Зустрівся з таким фактом:
При формуванні списку пар дат випадають деякі дні із загального списку.

Дослідив,- використовується для роботи "Базовый календарь".

Загалом є такі календарі в системі:
Базовый календарь
Тестовый календарь
Капран Владислав

Для роботи список днів має бути без вихідних (які, я так розумію, і випадають із загального списку дат ).

Мені можна взяти до роботи "Тестовый календарь" ? (Я подивився за червень - всі дні присутні)

Чи потрібно забезпечувати якесь інше рішення ?

Нравится

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

Можно создать свой календарь в справочника «Календари» и там определить все дни рабочими. Или отредактировать какой-то из существующих.
Обычно есть один базовый календарь, он определяется системной настройкой. А остальные календари определены относительно него, то есть в новом календаре для дней недели «Суббота» и «Воскресенье» поставить галочку «Отличается от родительского календаря» и задать их рабочими.
calendar

Проставив у базовому всі дні робочими з 07:00 до 20:00.
Все добре, окрім дати 2015.06.05, вона у мене чомусь відображається в 3-х екземплярах:
StartDate EndDate
2015-06-05 14:16:49.000 2015-06-05 18:00:00.000
2015-06-05 14:16:49.000 2015-06-05 20:00:00.000
2015-06-05 14:16:49.000 2015-06-05 18:00:00.000

і, як видно, у двох у кінечний час підставлено попереднє значення - 18:00.

Де це воно визначено, чи можу я зайве прибрати, в у списку періодів всі три і відображаються

Хоча візуально важко розпізнати, що саме відображається.

Думаю, лучше не трогать базовый календарь, а создать или изменить какой-то другой.
Окна «Страница выбора Content-менеджера» я у себя не вижу. Вероятно, это какая-то проектная доработка. Обратитесь лучше к тем, кто его разрабатывал.

Це в календарних таблицях зафіксувались записи для різних часових інтервалів.
Інструменту для чистки немає. Та для тестової бази воно й неважливо.

Краще створити новий календар і прописати його в карточках контент-менеджерів ?

Да, лучше новый.

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

Не могу разобраться с базовыми вещами.
Скачать мануал Bpm’online Автоматизация бизнес-процессов Руководство пользователя

Первая же простейшая инструкция ставит в тупик.

Я в непонятках - где эту кнопку искать. Вот мой экран:

У меня вообще другой продукт?
Или устаревший мануал? Или что?
Объясните, пожалуйста.

Нравится

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

Добрый день!

У Вас другой продукт. Скачанный мануал касается продукта bpmonline sales. Для того, чтобы добавить процесс в Вашем продукте:

1) Перейдите в главное меню нажав на кнопку, выделенную на скриншоте желтым цветом:

2) В главном меню нажмите "Настройка" и выберите "Управление конфигурацией":

3) После перехода в конфигурацию выберите "Дизайн процессов":

4) Во вкладке "Дизайн процессов" нажмите кнопку "Добавить":

Вам откроется дизайнер процессов, который имеет более широкий функционал, чем мастер процессов. Для работы в дизайнере процессов, у Вас должен быть установлен Silverlight.

Какой мануал относится к моему продукту?

Вы можете найти нужную информацию в мануале, который находится по ссылке:
tstmpbpmonline_personal_lending_cg_7.2.20.pdf

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

Хочу змінити колір записів в журналі змін на деталі "Звернення".

Забезпечив зміну кольорів в загальному журналі змін.
А от як забезпечити таку ж зміну кольорів на деталі журналу в реєстрі звернень ніяк не можу розібратися.

var config = base.GetModuleRowConfig(module);
Guid changeType = module.GetTypedColumnValueGuid>("ChangeTypeId");
string backgroundColor;
if (changeType == new Guid("A852C33F-0BDD-E011-92C3-00155D04C01D")) {
        backgroundColor = "Green";
} else if (changeType == new Guid("AA52C33F-0BDD-E011-92C3-00155D04C01D")) {
        backgroundColor = "Red";
} else if (changeType == new Guid("38DF8CD6-13FE-E411-97E7-005056981054")) {
        backgroundColor = "Grey";
} else {
        backgroundColor = "Blue";
}
config.AddConfig(new DataSourceRowColorConfigValue(backgroundColor));
return config;


Ніяк не знайду модуль, в якому треба зробити таке налаштування.

 

Нравится

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

Мне кажется, такое можно сделать и на уровне страницы реестра детали.
Вбил в поиск по исходникам кофигурации слово «DataSourceRowColorConfigValue», нашло такое.
На ините GridPage:

Page.TreeGrid.GetRowConfigHandler += delegate(Entity row) {	
	var delegation = row as ApprovalDelegation;
	var config = new DataSourceRowConfig(delegation.Id.ToString());
	var currentDate = UserConnection.CurrentUser.GetCurrentDateTime();
 
	if(delegation.EndDate.Date < currentDate.Date)
	{
        config.AddConfig(new DataSourceRowColorConfigValue("Grey"));
	}
	return config;
};

Похоже, оно тоже раскрашивает в зависимости от значения поля. Тут «ApprovalDelegation» — просто объект, используемый в DataSource детали.

Для детали журнала используется страница «Страница реестра истории изменений объектов».
Будьте осторожны, она может использоваться в разных разделах. Если хотите раскрасить только для обращений, надо будет добавить проверку.

Вдалося ідентифікувати модуль: "RecordAllChangesGridPage".

Доброго дня, 

 

На жаль, базовими засобами додатку це реалізувати неможливо, але ми вже передали це побажання відповідальній R&D команді, для реалізації такої можливості в майбутнії версіях додатку.  

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