Симптомы

Не работает мобильное приложение BPM 7.6.0.838 onSite

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

Решение

Скорее всего у Вас не обновлена структура базы.

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

- Закрыть все экземпляры Chrome;

- Перейти в папку, в которой Chrome хранит локальные данные: C:\Users\[ИМЯ_ПОЛЬЗОВАТЕЛЯ]\AppData\Local\Google\Chrome\User Data\Default;

- Удалить содержимое папок:

C:\Users\[ИМЯ_ПОЛЬЗОВАТЕЛЯ]\AppData\Local\Google\Chrome\User Data\Default\File System

C:\Users\[ИМЯ_ПОЛЬЗОВАТЕЛЯ]\AppData\Local\Google\Chrome\User Data\Default\databases

- Перезапускаем Chrome, используя startchrome.bat (в папке Mobile с исходниками моб. приложения);

- Запускаем мобильное приложение в браузере.

В результате Chrome создаст с нуля локальную базу со всеми необходимыми таблицами (в том числе с новыми колонками, как в указанном случае).

Также убедитесь, чтобы на сервере был установлен последний Framework.

Нравится

Поделиться

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

Вопрос

Каким образом можно залезть в локальную базу эмулятора мобильного приложения?

Посмотреть, какие данные приходят во время синхронизации в режиме оффлайн.

Ответ

Физически файл лежит здесь - ...\7.11.7\ChromeUserData\Default\databases\file__0, но Вы его не сможете открыть пользовательскими средствами из-за кодировки.

Есть два варианта: 



- в браузере после того, как просинхронизировались открыть консоль, перейти во вкладку "Application", раскрыть список баз в Web SQL и выбрать базу bpm'online - http://prntscr.com/hke2e6. В результате Вы можете писать SQL запросы и видеть список всех таблиц. Больше информации можете найти на сайте Google Chrome - https://developers.google.com/web/tools/chrome-devtools/manage-data/local-storage;

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

- найти расширение для Firefox, который умеет работать SQLlite (найти можно на сторонних ресурсах).

Нравится

Поделиться

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

Вопрос

Мы не можем добавить контакты. При добавление контакта страница зависает. 

Ответ

Две детали "Деталь: Адреса контакта" и "Деталь: Средства связи контакта" были удалены со страницы контакта. Поэтому вы не можете создать новые контакты.

Необходимо вернуть эти детали и ошибка пропадет.

Для этого добавьте в схему ContactPageV2 сдедующий код:

details: {
    "AccountAddress": {
        "schemaName": "AccountAddressDetailV2",
        "entitySchemaName": "AccountAddress",
        "filter": {
            "detailColumn": "Account",
            "masterColumn": "Account"
        },
        "useRelationship": true,
        "filterMethod": "accountAddressFilter"
    },
    "AccountCommunication": {
        "schemaName": "AccountCommunicationDetail",
        "entitySchemaName": "AccountCommunication",
        "filter": {
            "detailColumn": "Account",
            "masterColumn": "Account"
        },
        "useRelationship": true,
        "filterMethod": "accountAddressFilter"
    }
},
/**......*/
methods: {
    accountAddressFilter: function() {
        var account =  this.get("Account");
        var accountId = this.Terrasoft.GUID_EMPTY;
        if (account && account.value) {
            accountId = account.value;
        }
 
        var filterGroup = new this.Terrasoft.createFilterGroup();
        filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.AND;
        filterGroup.add("AccountFilter", this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "Account", accountId));
        return filterGroup;
    }
},
/**......*/

 

Нравится

Поделиться

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

Вопрос

Нет кнопки "учетные записи почты"

 

Ответ

В демосайте данные настройки не отображаются. Для того, чтобы они отобразились необходимо в системной настройке «Отображать Демо cсылки» («ShowDemoLinks») убрать признак.

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

В результате данные настройки отображаются.

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

 

Также, как вариант, ящик можно добавлять через коммуникационную панель.

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

 

Нравится

Поделиться

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

Вопрос

Как удалить/скрыть элемент в "Действие"

Ответ

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

Пример:

removeSubscribeButton: function(actionMenuItems) {
    var subscribeButtonIndex;
    actionMenuItems.each(function(item, index) {
        if (item.values.Tag === "subscribeUser") {
            subscribeButtonIndex = index;
        }
    });
    if (subscribeButtonIndex) {
        actionMenuItems.removeByIndex(subscribeButtonIndex);
    }
},
getActions: function() {
    var actionMenuItems = this.callParent(arguments);
    this.removeSubscribeButton(actionMenuItems);
    actionMenuItems.addItem(this.getButtonMenuItem({
        "Caption": {"bindTo": "Resources.Strings.RemoveButtonCaption"},
        "Enabled": { "bindTo": "DeleteButtonEnable" },
        "Tag": "canRemoveRecord"
    }));
    return actionMenuItems;
}

ИЛИ

Пример как скрыть в разделе: 

getSectionActions: function() {
    var actionMenuItems = this.callParent(arguments);
    actionMenuItems.each(function(item, index) {
        if (item.values.Type === "Terrasoft.MenuSeparator") {
            actionMenuItems.removeByIndex(index);
        }
        if (item.values.Tag === "sendToVisa") {
            actionMenuItems.removeByIndex(index);
        }
    }, this);
    return actionMenuItems;
},

Пример как скрыть в карточке: 

getActions: function() {
    var actionMenuItems = this.callParent(arguments);
    actionMenuItems.each(function(item, index) {
        if (item.values.Type === "Terrasoft.MenuSeparator") {
            actionMenuItems.removeByIndex(index);
        }
        if (item.values.Tag === "sendToVisa") {
            actionMenuItems.removeByIndex(index);
        }
    }, this);
    return actionMenuItems;
},

 

Нравится

Поделиться

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

Вопрос

Как добавить/изменить цвет в разделе "Настройка цвета панели разделов"

Ответ

Дополнить или изменить существующий цвет в разделе «Настройка цвета панели разделов» Вы можете в исходнике all-combined.js (…\Terrasoft.WebApp\Resources\ui\combined\all-combined.js). Именно свойство «colors» в «ColorMenuItem». 

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

Хотелось бы отметить, что в данном случае можно использовать только код цвета, так как в приложении прописано, что для этого свойства использовать «background-color». Ссылки на изображения не получиться вставить.

Нравится

Поделиться

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

Симптомы

Попытался повторно синхронизироваться. Вижу ошибку:

Тип: Terrasoft.SyncException%0D%0AСообщение: В процессе синхронизации произошла ошибка%0D%0A%0D%0AТип: Terrasoft.ServerException%0D%0AСообщение: Запрос на сервер вернул ошибку%0D%0AДополнительная информация: %0D%0A%09{"request":{"id":6,"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie","X-Requested-With":"XMLHttpRequest"},"options":{"url":"http://xxx.xxx.xxx.xxx/0/Services/ProfileService.asmx/Logout","method":"POST","jsonData":{"customData":"","doLogout":"true"},"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie"},"disableCaching":false,"scope":{"initialConfig":{"url":"http://xxx.xxx.xxx.xxx/0/Services/ProfileService.asmx/Logout","method":"POST","jsonData":{"customData":"","doLogout":"true"},"headers":{"X-Terrasoft-Mobile":"true","Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie"},"disableCaching":false},"performanceCounter":{"startDate":"2015-06-08T12:11:51.319Z"}}},"async":true},"requestId":6,"status":500,"statusText":"Internal Server Error","responseText":"System.InvalidOperationException: Request format is invalid: application/json.\r\n   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()\r\n   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()\r\n","responseXML":null,"responseBytes":null}%0D%0A%0D%0A

Причина

Проблема в настройках IIS

Решение

Заходим в настройки IIS - модуль Handler Mappings

Ищем правила для файлов с расширением *.asmx с такими названиями:

"WebServiceHandlerFactory-Integrated"

"WebServiceHandlerFactory-ISAPI-2.0_32bit"

"WebServiceHandlerFactory-ISAPI-2.0_64bit"

(это всё устаревшие версии)

и удаляем их

Нравится

Поделиться

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

Вопрос

Как убрать действие в мобильном приложении и как можно их отсортировать

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

Ответ

Примерный алгоритм.

1. Необходимо создать свой модуль (например «TestOrderRemoveMobileAccountModuleConfig»)

2. Для удаления действия необходимо использовать следующий метод - Terrasoft.sdk.Actions.remove: function(model, actionName)

 

Пример:

Terrasoft.sdk.Actions.remove("Account", "addAccountAnniversary");



3. Для сортировки нужно использовать:

Terrasoft.sdk.Actions.setOrder("model ", {
    "actionName1": 0,
    "actionName2": 1,
    …,
    "actionName5": 4
});

Пример:

Terrasoft.sdk.Actions.setOrder("Account", {
    "Phone": 0,
    "Email": 1,
    "Meeting": 2,
    "Terrasoft.ActionCopy": 3,
    "Terrasoft.ActionDelete": 4
});
 

4. Потом подключить в пользовательском манифесте мобильного приложения (можно ознакомиться на нашем SDK)  в секции «Models» для объекта «Account» (если это контрагенты) в разделе «PagesExtensions». Например:

"Models": {
    "Account": {
        "RequiredModels": [],
        "ModelExtensions": [],
        "PagesExtensions": [
            "TestOrderRemoveMobileAccountModuleConfig"
        ]
    },
 



где TestOrderRemoveMobileAccountModuleConfig – произвольное название схемы.

 

Реализацию логики добавления адреса можете посмотреть в схеме «MobileAccountModuleConfig» (действие называется «addAccountAddress»).

Нравится

Поделиться

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

Есть возможность убрать действия в уже загруженной странице, например как результат действия? 

Нет, при помощи Terrasoft SDK такой возможности нет.

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

Вопрос:

Реализован БП:

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

2 сигнала: 1. Создание записи, 2 изменение записи. От каждого по формуле. В формуле следующее: установить в параметр БП OrderId значение соответствующего сигнала. Затем считать данные объекта Заказ, где id=параметр OrderId. Затем изменить запись объекта Заказ где id=константа (проставить поле комментарий = OrderId). В результате в поле комментарий записывается значение 000000000000000000000000. Вывод: формула не передает значение с сигнала в параметр. Почему такое происходит?

Ответ:

Ошибка при передаче ID записи возникает из-а самой логики, настроенной в процессе.

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

И в дальнейшем будем передавать именно его.



При добавлении записи, поля "Комментарий" подтягиваются корректно, а заполняется в формате "00000..." из-за того, что согласно реализованной логике, передается id из другого сигнала, который не был задействован.

Для реализации этой логики рекомендуется использовать подпроцессы, т.к. при запуске по одному стартовому сигналу, id из второго не будет подтягиваться.

 

Нравится

Поделиться

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

Вопрос

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

Ответ

При сохранении объекта с портала, срабатывает процесс определенный в объекте Case пакета Портал,событие CaseInserting, в нем очищается Ответственный, если UserType = SSP.

Нравится

Поделиться

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