На Marketplace опубликовано новое дополнение, расширяющее стандартные возможности системы bpm'online по работе с вложениями.

Дополнение создано командой компании "Аплана.Бизнес-решения", входящей в ГК "АйТи".

В числе новых возможностей:

- добавление детали файлового менеджера на страницу любого раздела системы с помощью редактора страницы;

- управление файловым каталогом и настройка прав доступа к нему;

- загрузка, перемещение и удаление как одного файла, так и коллекции файлов в один клик;

- установка типа хранения файлов с указанием локального сервера или базы данных;

- хранение нескольких версий файлов;

- предпросмотр файлов в окне на странице по двойному клику;

- управление доступом к файловым директориям.

Более подробная информация о дополнении доступна по ссылке: https://marketplace.terrasoft.ru/app/file-manager-bpmonline

Нравится

Поделиться

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

Бодрого дня!

Коллеги, подскажите в какой схеме находится стандартные кнопки Выбрать и Добавить в Лиде.

Нужно к ним процесс привязать, а не можем их отыскать в схемах(.

Изображение удалено.

спасибо!)

 

Нравится

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

Используйте F12 и инспектор - помогает)

Кнопки зашиты в BaseProfileSchema, от этой схемы наследуются конкретные страницы (как на скрине - LeadAccountProfileSchema). В них и замещать

Используйте F12 и инспектор - помогает)

Кнопки зашиты в BaseProfileSchema, от этой схемы наследуются конкретные страницы (как на скрине - LeadAccountProfileSchema). В них и замещать

Варфоломеев Данила,

Данила, спасибо!) нашли все)

 

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

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

Существует ли инструмент, с помощью которого в мобильном приложении можно изменить тип поиска с "Начинается с" на "Содержит"?

Нравится

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

Алексей, здравствуйте!

К сожалению, на данный момент в мобильном приложении нет пользовательской настройки изменения поиска (без использования процентов %) в быстром фильтре. Данную задачу можно реализовать только доработкой базовой логики, необходимы навыки программирования (хотим заметить, что в Ваш пакет поддержки не входят консультации по разработке).



Мы передали аналитикам продукта Ваше пожелание, они рассмотрят возможность реализации данного функционала в последующих релизах продукта.



Вы можете попробовать самостоятельно изменить логику.



Для мобильной же версии необходимо реализовывать на уровне код.

Вам необходимо:

- если не создан, то создать пользовательский манифест мобильного приложения (информация есть на SDK - https://academy.terrasoft.ru/documents/technic-sdk/7-11/manifest-mobilnogo-prilozheniya, просьба ознакомиться). Проще всего будет его создать если зайти в мастер мобильного приложения и сохранить текущие настройки;

- прописать в корне манифеста, в отдельную секцию - http://prntscr.com/hfwdpf:

 

"PreferedFilterFuncType": 'Terrasoft.FilterFunctions.SubStringOf',

 

- сохранить изменения;

- очистить кэш и провести первичную синхронизацию;

- в результате должно работать согласно бизнес-задаче - http://prntscr.com/hgci19.

 

По умолчанию название манифеста MobileApplicationManifestDefaultWorkspace, но если это пользовательское рабочее место, то приблизительное имя в конфигурации будет MobileApplicationManifest[название рабочего места].

Примечание. Заметьте, какое рабочее место Вы используете в мобильном устройстве и в какой манифест Вы добавляете код. Убедитесь, что Вы просинхронизированы с тем рабочим местом.



Также об этом параметре ("Terrasoft.FilterFunctions.SubStringOf") было описано на Академии -https://academy.terrasoft.ru/documents/technic-sdkmob/7-12/manifest-svoystva-dannyh-i-biznes-logiki.

Дмитрий, огромное спасибо!

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

Всем доброго времени суток. Версия 7.12.

Возможно ли в разделе динамически менять entitySchemaName?

Допустим в фильтр добавить кнопку, по нажатию на которую перегружать грид данными другого объекта?

Нравится

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

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

Варфоломеев Данила,

Данила, там пока не понятно, сколько их может быть.. вот и хотелось бы прояснить разные варианты.

Если данные из разных разделов однотипной структуры, можно сделать в базе view с кучей union из разных таблиц и работать с ней, как с обычной сущностью, при необходимости фильтруя. В Terrasoft 3.Х такой подход использовался в окне уведомлений, где выводилась информация о записях разных разделов, включая самодельные.

Ближайший аналог - это, наверно, журнал изменений.

https://academy.terrasoft.ru/sites/default/files/documents/docs/product…

Там переключение сделано в интерфейсе 5.Х на странице реестра ChangeLogGridPage. Логика загрузки данных при смене схемы реализована в функции InitializeDataSourceCurrentStructure.

Но в 7.Х движок страниц реестра совсем другой.

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

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

В web-клиенте реализован бизнес-процесс. Как обеспечить запуск данного процесса в мобильном клиенте?

Нравится

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

На мобильном процессы не запускаются. После синхронизации записи с телефона в основную базу процесс запустится там.

Бизнес процессы запускаются и выполняются на сервере, а не на клиенте. А запустить БП из мобилки можно попробовать при помощи ProcessEngineService.svc - это сервис, который позволяет запускать БП сторонним приложениям. По ссылке статья в Академии по этому сервису.

https://academy.terrasoft.ru/documents/technic-sdk/7-12/web-servis-proc…

Вызвать сервис из мобильного приложения можно так вызвать:

Terrasoft.AuthService.login({
    name: Terrasoft.CurrentUserInfo.login,
    password: Terrasoft.CurrentUserInfo.password,
    success: function () {
 
        Ext.Ajax.request({
            method: "POST",
            url: Terrasoft.CurrentUserInfo.serverUrl + '/0/rest/ServiceName/MethodName',
            scope: this,
            jsonData: { 
                // Параметры. Названия такие же, как и названия параметров в методе сервиса.
            },
            success: this.onRequestSuccess,
            failure: this.onRequestFailure
        });
    },
    failure: function (e) {
        Terrasoft.Mask.hide();
        Terrasoft.MessageBox.showMessage("Не удалось выполнить авторизацию.");
    },
    scope: this
});

 

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

Доброго времени суток!



Существует следующая проблема:



В реестре [Обращения] выделяются сообщения от VIP клиентов, но при выборе этих строк в реестре, они перекрашиваются в дефолтный голубой цвет (цвет выделенной строки). Каким образом можно осуществить замену дефолтного цвета активной строки реестра на тот, что мне нужен, в зависимости от того, является ли клиент VIP или нет. Где определяется стиль выделенной строки реестра?

Нравится

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

Есть бесплатное дополнение «Records color highlighting».

1) Оно абсолютно не решает текущую задачу

2) Оно не работает с логическими полями (только со справочными)

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

Зверев Александр,

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

В css выделенная запись задаётся стилем grid-row-selected, там явно прописан этот цвет.

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

Всем доброго времени суток. Версия 7.12.

Возможно ли отследить изменение любой колонки объекта?

Есть удобное свойство dependencies в attributes, которое позволяет отследить изменение конкретной колонки (причём вне зависимости от того, изменяет ли значение колонки непосредственно пользователь, или изменение происходит вследствие какой-либо зависимости в схеме карточки). Можно ли подобным образом отследить изменение любой колонки в карточке?

Нравится

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

Добрый день.

Настраиваю интеграцию с телефонией Infinity.

После установки BPMonline Messaging Service и настройки в логах

BPMonline Messaging Service получаю ошибку:

ERROR Terrasoft.Messaging.Core.MessagingServer - AgatInfinityConnector.AgatInfinityConnectorException: Plugins path does not exists

   в AgatInfinityConnector.AgatInfinityConnectorManager.GetAvailableFactories(String pluginsPath_, String logFileName_)

   в Terrasoft.Messaging.Infinity.InfinityConnectionFactory.CreateConnection(IDictionary`2 connectionParameters, IDictionary`2 sessionServiceParameters)

   в Terrasoft.Messaging.Core.MessagingServer.ProcessMsgCommand(MsgCommandInfo msgCommand, WebSocketSession session)

Что и где надо еще настроить? Что за папка Plugins? Где должна находится?

 

Спасибо.

 

Нравится

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

Сбой возникает внутри библиотеки AgatInfinityConnector, предоставляемой авторами телефонии. На их сайте есть описание этой функции:

/// <summary>
/// Возвращает список доступных фабрик коннекторов. Каждая фабрика - это плагин,
/// расположенный рядом с этой сборкой. В ближайшее время предполагается три фабрики:
/// Infinity 4
/// Infinity X
/// IP-АТС Agat-UX
/// </summary>
/// <returns>Список фабрик</returns>
 
public static IEnumerable<IAgatInfinityConnectorFactory> GetAvailableFactories(
string pluginsPath_ = "",
string logFileName_ = "");
}
 
 

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

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

Добрый день!

 

Можете подсказать , я хочу через sandbox взаимодействовать двух деталей. Имеется ввиду при выборе запись в  первой детали , должен отобразиться  второй деталь с фильтрованной переданной от первой значение.

В первом детале создал сообщение, и зарегистрировал в методе init.

init: function() {

                    this.callParent(arguments);

                    window.console.log("begin finance come here to show where error");

                    var messages = {

                        "GetFinanceBlock": {

                            mode: Terrasoft.MessageMode.BROADCAST,

                            direction: this.Terrasoft.MessageDirectionType.PUBLISH

                        }

                    };

                    this.sandbox.registerMessages(messages);

                    window.console.log("end finance come here to show where error");

}

 И при выборе запись из таблицы, вызывается метод  rowSelected, где публикуется сообщение:

rowSelected: function(primaryColumnValue) {

                    this.sandbox.publish("GetFinanceBlock", {arg1 : primaryColumnValue}, ["key"]);

                    window.console.log("end publish");

}

 

Во второй деталь метод init добавил subscribe для данного сообщение:

init: function() {

                    this.callParent(arguments);

                    window.console.log(" child come here to show where error");

                    var message={

                        "GetFinanceBlock": {

                            mode: Terrasoft.MessageMode.PTP,

                            direction: Terrasoft.MessageDirectionType.SUBSCRIBE

                        }

                    };

                    this.sandbox.registerMessages(message);

                    this.sandbox.subscribe("GetFinanceBlock", this.onMessageSubscribe, this, ["key"]);

                    window.console.log(" child end subscribe");

                },

                onMessageSubscribe: function(args) {

                    window.console.log("child call method subscribe args " + args + " " + JSON.stringify(args));

                },

И добавил метод обработчик onMessageSubscribe для анализа передачи данные из первого модуля.

 

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

 

Можете подсказать чем связано такая проблема.

 

С уважием, Асылан.

 

Заранее благодарю!

 

 

Нравится

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

Если я правильно вас понял, то у вас на странице находится 2 детали.

При выборе определенного значения на Детали №1, должна отобразиться деталь №2.

Сообщение вы публикуете в Детали №1, но принять это сообщение, вы должны на странице, где находятся обе эти детали.

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

Литвинко Павел,

Да, вы все правильно поняли. Спасибо , попробую . 

Литвинко Павел,

Попробовал анологичная ситуация. Сообщение отправляется, но подписчик не получает.

 

Асылан,

А как вы подписываетесь на сообщение?

Асылан, инструкция по работе с механизмом Sandbox есть в Академии.Возможно, что-то не было учтено, например, в одной указано BROADCAST, а в другой PTP.

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

Добрый час суток! Имеется деталь,в таблице есть 1 запись при загрузке детали - все ок отображается. Когда добавляется новая запись в таблицу,нужно,чтобы это (вторая) запись тоже появилась(первая остается). Подскажите как это можно сделать? пока привязался к 

    this.getView().fireEvent("startrefresh", this); Но работает оно не совсем так,как нужно(не затрагивается все методы,при просто заходе на детали и много чего теряется). Переопределять все это дело довольно таки долго. Подскажите пожалуйста,какая альтернатива этому? Деталь своя. Пока пробую искать подобный функционал на стандартной детали,но пока не нахожу события,которое необходимо.(динамически добавлять запись ). Спасибо!

Нравится

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

me.fireAction('refresh', [me], 'doRefresh'); вот это тоже не совсем помогло... оно добавило новую запись(которая появилась в базе),но предыдущая информация введенная(на старой,самой первой записи) не подтягивается,генерируется просто новая такая запись по шаблону и добавляется та,которая добавилась в базу. они оба "чистые"(при том что в базе информация хранится).

Никита, здравствуйте!

А чем Вам не нравится свайп вниз? Я правильно понял, что Вы хотите автообновление детали при добавлении новой записи?

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

Никита, здравствуйте!

А чем Вам не нравится свайп вниз? Я правильно понял, что Вы хотите автообновление детали при добавлении новой записи?

 Добрый! Дело в том,что мне нужно чтобы при нажатии на клавишу добавлялась запись в бд,и сразу же появлялась на странице,добавлять то она добавляется но свайпить вниз не хочется,я попробовал "взять" функционал оттуда,но он не емулируется.. А вообще да,автообновление детали при добавлении новой записи. Деталь кодом добавлял свою,не стандартная(+GridPage+ PreviewPage так же

)

Вильшанский Дмитрий,А есть другая альтернатива ?

Никита Гальченко,

В базовой версии уже реализовано обновление записи при базовых действиях (например, сохранение или удаление).

Для примера можете посмотреть как реализовано при сохранении (нужный "кусок" кода выделил): 

 

completeDataSaving: function(operation) {

   this.callParent(arguments);

   var pageHistoryItem = this.getPageHistoryItem();

   var pageConfig = pageHistoryItem.getRawConfig();

   var record = this.record;

   var operationConfig = this.createPageOperationConfig(operation);

   var useOptimisticEditing = this.useOptimisticEditing();

   if (useOptimisticEditing) {

      Terrasoft.PageNavigator.refreshPreviousPages(operationConfig, pageHistoryItem);

   } else {

      Terrasoft.PageNavigator.markPreviousPagesAsDirty(operationConfig);

   }


   var shouldOpenPreviewPageOnSave = this.shouldOpenPreviewPageOnSave();

   if (shouldOpenPreviewPageOnSave) {

      Terrasoft.util.openPreviewPage(this.self.Model, {recordId: record.getId(), isStartRecord: true,

         direction: "right", operationConfig: operationConfig});

   } else {

      Terrasoft.Router.back();

   }

   if (pageConfig) {

      Ext.callback(pageConfig.onDataSaved, this, [record]);

   }

},

Вильшанский Дмитрий,

Спасибо большое! Буду разбираться!

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