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

Нравится

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

Здравствуйте, Олег!

 

В основном приложении, в разделе [Системные настройки] есть настройка с кодом [MobileSectionsWithSearchOnly]. Она отвечает за список разделов в мобильном приложении, данные в которых отображаются только через использование поиска.
Если в поле [Значение по умолчанию] проставить значение "0", то во всех разделах записи будут сразу отображаться, без использования поиска.

Если необходимо, чтобы в некоторых разделах записи отображались лишь через использование поиска, требуется прописать в поле [Значение по умолчанию] список объектов разделов, разделяемых точкой с запятой.
 

Эта логика задействована по нескольким причинам:
- с целью уменьшения потребления трафика на моб. приложении;
- уменьшение запросов к серверу на select, что снижает нагрузку на БД;
- зачастую, в рабочей практике, нет необходимости листать весь список записей, а удобнее просматривать список недавних.
 

На СУБД PostgreSQL нет данной настройки, поэтому есть обходное решение для отображения записей в разделах мобильного приложения.
Так как настройки нет, за основу берется фича UseMobileSearchOnlyInSections и режим работы приложения (онлайн-режим). Если фичу отключить, то данные в разделах будут подгружаться автоматически в моб. приложении в онлайн режиме. В оффлайн режиме все записи в разделах кешируются по умолчанию.

Скрипт по включению/выключению фичей ниже:
https://academy.terrasoft.ua/docs/developer/ehlementy_interfejsa/upravl…

 

Частично описание настроек мобильного приложения есть на Академии:
https://academy.terrasoft.ua/docs/8-0/user/ustanovka_i_administrirovani…

 

Так же некоторые настройки подписаны в самом приложении, если их открыть в разделе "Системные настройки".

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

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

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

Объясните пожалуйста последовательность действий для решения этой задачи.

Спасибо!

Нравится

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

Добрый день.

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

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

Добрый день!

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

Вот - один из вариантов кода, который я пытался использовать:

Terrasoft.sdk.Model.addBusinessRule("UsrZakupka", {
    name: "UsrAutoSetUsrDepartByCreatedBy",
    ruleType: Terrasoft.RuleTypes.Custom,
    triggeredByColumns: ["CreatedBy"],
    events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged],
    executeFn: function(record, rule, column, customData, callbackConfig, event) {
        var department = record.get("CreatedBy.Department");
            record.set("UsrDepart", department, true);
        Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);
    }
});

Подскажите,  пожалуйста, каким образом можно получить запись с данными(через esq пытался, тоже ничего)

Нравится

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

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

при загрузке лукапного поля все его поля автоматом не подтягиваются. Только Id и его дисплейное поле (Name). Поэтому, чтобы получить какое-то другое поле, нужно сделать отдельную загрузку по лукапному значению. Как вариант, можно использовать утилитный метод Terrasoft.DataUtils.loadRecordById или Terrasoft.DataUtils.loadRecords:

Terrasoft.DataUtils.loadRecordById({
   recordId: recordId,
   modelName: modelName,
   columns: [],
   expandLookupColumns: false,
   callback: function(loadedRecord) {
      // Здесь получаешь значение департамента, устанавливаешь его в поле UsrDepart и вызываешь success правила.
      Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);
   },
   scope: this
});

Алёна Доля,

Спасибо за пояснение.

Правило вроде отрабатывает, но как-то через раз, и только на одном значении...

Такой код:

Terrasoft.sdk.Model.addBusinessRule("Zakupka", {

    name: "AutoSetDepartByOrder",

    ruleType: Terrasoft.RuleTypes.Custom,

    triggeredByColumns: ["Order"],

    events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Load],

    executeFn: function (record, rule, column, customData, callbackConfig, event) {

        var order = record.get("Order");

        var orderId = order ? order.get("Id") : null;

        if (orderId) {

            Terrasoft.DataUtils.loadRecordById({

                recordId: orderId,

                modelName: "Order",

                columns: ["Podrazdel","Account"],

                expandLookupColumns: false,

                callback: function (loadedRecord) {

                    var department = loadedRecord.get("Podrazdel");

                    var departmentId = department ? department.get("Id") : null;

                    record.set("Depart", departmentId, true);

                    var account = loadedRecord.get("Account");

                    var accountId = account ? account.get("Id") : null;

                    record.set("Account", accountId, true);

                    Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);

                },

                scope: this

            });

        }

    }

});

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

Доброго дня!

Возникла следующая ситуация...

В мобильном приложении за невозможностью сформировать печатную форму, был реализован механизм ее сохранения в деталь Файлы и ссылки. Для этого был добавлен пункт в меню Действия, по нажатию на который запускается на бэкенде веб-сервис, который формирует docx-файл и сохраняет его в деталь Файлы и ссылки.

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

Сервис возвращает коллбэк после своей работы. Оттуда в идеале нужно вызвать какой-то метод для обновления, но все это происходит в схеме этого самого действия, которое было добавлено в меню действий. Там доступна запись Активности (этот функционал реализуется в активностях), из которой было совершено действие по формированию ПФ.

Ниже привожу фрагмент кода для наглядности

Ext.define("Terrasoft.ActionContactNote", {
	extend: "Terrasoft.ActionBase",
	config: {
		useMask: false,
		title: "MobileActionContactNoteTitle",
		iconCls: "atc-action-contact-note"
	},
	execute: function(record, config) {
        this.callParent(arguments);
 
		var serviceName = "AtcPrintablesAttachmentService";
		var	methodName = "Attach";
 
		Terrasoft.ServiceHelper.issueRequest({
			serviceName: serviceName,
			methodName: methodName,
			success: function(response) {
				// Здесь необходимо обновить деталь "Файлы и ссылки"
			},
			failure: function(response) {
				Terrasoft.MessageBox.showMessage("Error in webservice");
			},
			scope: this
		});
 
        this.executionEnd(true);
	}
});

 

Нравится

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

Есть похожее дополнение для бизнес-процессов
https://marketplace.creatio.com/template/refresh-active-page-process-el…

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

Можно попробовать добавить следующий код в тело экшена:
var embeddedDetailId = Terrasoft.util.getColumnSetId(record.modelName, "detailName", pageConfig.viewMode);
var embeddedDetail = Ext.getCmp(embeddedDetailId);
embeddedDetail.setIsCollapsed(false);
var f = CaseFile.create({
    Case: record,
    Name: "xxx"
});
f.phantom = false;
embeddedDetail.addRecord(f);

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

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

Подскажите, пожалуйста, как можно решить проблему автоматического изменения мобильным приложением протокола с https на http на этапе ввода адреса сервера? Т.е. приложение каждый раз заменяет протокол передачи данных, в следствие чего невозможна дальнейшая работа. Пробовал на разных версиях МП.

Версия системы - 7.13.1, версия МП - от 7.15 до 7.18.1

Нравится

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

Добрый день!
Подскажите, ваше основное приложение работает по протоколу http или https ?
Вы хотите в мобильное приложение ввести адрес http://site.terrasoft.ru, верно ?

1. При входе в МП мы проверяем валидный ли протокол (http или https) и для этого "пингуем" наш сервис MobileCodeService.ashx. Для протокола должен быть валидный сертификат и он не должен быть самоподписанным.

2. Далее пытаемся понять, какой тип аутентификации у клиента. И если SSO, открываем адрес соотв. identity-провайдера.

3. После успешного входа осуществляется редирект на NuiLogin.aspx, который приложение ожидает и запускает синхронизацию.

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

Всем привет. Пытаюсь сделать своё кастомное бизнес-правило в мобилке, а оно работает как-то некорректно. Кто-нибудь может подсказать в чем может быть ошибка?

Terrasoft.sdk.Model.addBusinessRule("Activity", {
    name: "ActivityCategoryVisibilityRule",
    ruleType: Terrasoft.RuleTypes.Custom,
    triggeredByColumns: ["ActivityCategory"],
    events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Load],
    executeFn: function(record, rule, column, customData, callbackConfig, event) {
        var category = record.get("ActivityCategory.Id").toUpperCase();
        if (category === "42C74C49-58E6-DF11-971B-001D60E938C6" || //Meeting 
            category === "E52BD583-7825-E011-8165-00155D043204" || //Call
            category === "BC8B0E9A-6574-4A22-9538-BDE44C484008" || //Exhibition
            category === "F51C4643-58E6-DF11-971B-001D60E938C6" || //To do
            category === "17E871DD-1BF0-4E02-8D15-763A8F2C78C9" || // Forum round table
            category === "B821675D-8303-448B-936D-E931FFFD00BD" // Workshop
           ) {
            record.changeProperty("AtcSubcategory", {
                hidden: {
                    value: false
                }
            });
        } else {
            record.changeProperty("AtcSubcategory", {
                hidden: {
                    value: true
                }
            });
        }
        Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);
    }
});

Нравится

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

Добрый день

Можете подробнее сказать про "оно работает как-то некорректно"? smiley

Как-то некорректно это как?

Артем Гура,

Нашёл в чем проблема. Корректно сетить свойство нужно вот так:

record.changeProperty("AtcSubcategory", {
                hidden: true
            });

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

Добрый день!
Столкнулся с проблемой, что бизнес-правило в мобильном приложении не отрабатывает на действие изменения значения в поле колонки вот здесь:

 

Но при этом бизнес-правило успешно отрабатывает когда я не меняю число 20 в поле выше, а когда добавляю новую запись в продвигаемые продукты  и ввожу значение в поле:

Код бизнес-правила:
 

Terrasoft.sdk.Model.addBusinessRule("ActivityPromProduct", {
    name: "OpportunityAmountValidatorRule",
    ruleType: Terrasoft.RuleTypes.Custom,
    triggeredByColumns: ["QuantityPrescription"],
    events: [Terrasoft.BusinessRuleEvents.ValueChanged],
    executeFn: function(model, rule, column, customData, callbackConfig) {
        var revenue = model.get("QuantityPrescription");
		if (model.phantom){
			model.set("QuantityPrescription", 5, true);
		}
		else{
			model.set("QuantityPrescription", 7, true);
		}
        Ext.callback(callbackConfig.success, callbackConfig.scope);
    }
});

 

Нравится

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

Добрый день, Сергей.

Попробуйте также в events добавить событие Terrasoft.BusinessRuleEvents.Save и проверьте работу.

 

events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Save]

 

Mykhailo Storozhuk,

Добрый день! Не помогло, всё-равно при вводе значения в поле и сохраняется введённое мной значение, а не например, 5 или 7 как из кода выше по идее должно быть.

Симонов Сергей Сергеевич,

Добрый день, Сергей.

1) Добавили ли Вы схему, в которой настраиваете это бизнес правило в манифест мобильного приложения? Корректно ли Вы это сделали?  
2) Попробуйте также вообще удалить правило и посмотреть будет ли изменяться значение при создании новой записи. 
3) Кроме того, нужно провести отладку кода внутри мобильного приложения и посмотреть вызывается ли нужный метод.
4) Возможно у Вас есть еще одно бизнес правило, которое может нарушать логику текущего? Проверьте бизнес правила связанные с проблемными колонками.

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

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

Добрый день!

на данный момент используем интеграцию Creatio + Power automate + Teams bot.

 

В бизнес процессе, при создании Визы на объект формируем сообщение для уведомления пользователя через Бота. Для версии в браузере все формируется прекрасно. но в мобильном приложении хочется указать ссылку на визу, чтобы переход был приложение именно в раздел "Визы", где уже есть вся информация об объекте и все предыдущие установленные визы, другими пользователями.  

Нравится

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

Добрый день!

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

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

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

Привет!
 

При синхронизации в оффлайн режиме не импортируются значения колонок одного из объектов. При чем данная проблема воспроизводится только при синхронизации непосредственно из самого мобильного устройства (версия приложения на устройстве 7.17.3). 
При синхронизации с эмулятора все работает корректно.

Колонки объекта и их настройка синхронизации в манифесте:

Ловлю запрос в профайлере при синхронизации с эмулятора:

Ловлю запрос при синхронизации с приложения на мобильном устройстве:

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

Нравится

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

Привет!

 

Мы сталкивались с подобным кейсом. Проблема была в том, что был задублированный в одном из манифестов  объект импорта. В итоге, при слиянии манифестов в результирующем конфиге присутствовали две настройки импорта для одного объекта. Один с дополнительными колонками, второй - нет. Брался второй конфиг при формировании запроса к серверу.

 

Привет!

 

Мы сталкивались с подобным кейсом. Проблема была в том, что был задублированный в одном из манифестов  объект импорта. В итоге, при слиянии манифестов в результирующем конфиге присутствовали две настройки импорта для одного объекта. Один с дополнительными колонками, второй - нет. Брался второй конфиг при формировании запроса к серверу.

 

Зезюков Сергей Aлександрович,

Спасибо, действительно в одном из пакетов в манифесте был дубль объекта SupplyPaymentTemplate

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

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

{
	"SyncExtensions": [
		"ScpMobileSyncExtensions"
	],
	"SyncOptions": {
//Настройки синхронизации
  }
}

Однако этот модуль не загружается вообще при синхронизации с реального устройства (в моём случае под Android). Пробовал отдельно просто выводить окошко с сообщение Terrasoft.MessageBox.showMessage("Тест"); При синхронизации с эмулятора окно с сообщением выводится как и положено, но при синхронизации с телефона ничего не происходит.

Кто сталкивался с подобным, как удалось решить?

Нравится

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

SyncExtensions стал deprecated c версии 7.16.0 так как перешли на «нативную» синхронизацию написаную на Java.
Соответсвенно, пользовательский javascript подключить туда нельзя.
Есть обходное решение — отключить нативную синхронизацию.
Но делать это настоятельно не рекомендуем, т.к. все новые «фишки» у Вас перестанут работать.
Опишите свою проблему, может, её «в коробке» исправят в новых версиях.

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