Вопрос

Здравствуйте! А предусмотрена ли возможность заблокировать поле только на странице с типом Preview, и разрешить его редактирование на странице с типом Edit?

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

У меня такой же вопрос

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

См. тут.

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

Здравствуйте! А как настроить фильтрацию в мобильном приложении с применением обратных связей или такая возможность отсутсвует?

У меня такой же вопрос

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

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

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

Вопрос:

Есть автогенерируемая страница, в которой пользователю задается вопрос, и он определяет "ветвь" в бизнес-процессе. Надо как-то эту автогенерируемую страницу вытянуть/отобразить в мобильном приложении. Как это сделать?

Ответ:

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

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Есть правило видимости, делать поле видимым в зависимости от значения другого поля.

Все работает

Terrasoft.sdk.Model.addBusinessRule("Account", {
    ruleType: Terrasoft.RuleTypes.Visibility,
    conditionalColumns:
        [
            {name: "UsrStage", value: "a5d0ceac-3ef4-45e0-be25-af3a1190f6f9"}
        ],
        triggeredByColumns: ["UsrStage"],
        dependentColumnNames: ["UsrInstalationDate"]
    }
);

Как сделать такое же правило, но для признака "обязательно для заполнения".

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

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

 

 

У меня такой же вопрос

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

Requirement правило не поможет в данном случае. Нужно использовать Custom. Что-то вроде этого.

Terrasoft.sdk.Model.addBusinessRule("UsrMyModel", {
    name: "RuleName",
    ruleType: Terrasoft.RuleTypes.Custom,
    triggeredByColumns: [/*Список колонок, которые активируют правило*/],
    events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Save],
    executeFn: function(record, rule, column, customData, callbackConfig) {
        var hasError = false; //булевая переменная, указывающая корректность поля.
        var errorMessage = "Необходимо указать значение."; // Сообщение об ошибке.
        //Выполняем нужный код, определяющий наличие ошибки
        record.changeProperty("UsrMyColumn", {
            isValid: {
                value: hasError,
                message: errorMessage
            }
        });
        Ext.callback(callbackConfig.success, callbackConfig.scope);
    }
});

 

Обязательность задаётся как Terrasoft.RuleTypes.Requirement. В конфигурации есть много примеров использования. Например, в MobileContactAddressModelConfig так:

Terrasoft.sdk.Model.addBusinessRule("ContactAddress", {
    name: "ContactAddressRequirementRule",
    ruleType: Terrasoft.RuleTypes.Requirement,
    requireType: Terrasoft.RequirementTypes.OneOf,
    triggeredByColumns: ["Address", "City", "Country"],
    position: 3
});

 

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

Requirement правило не поможет в данном случае. Нужно использовать Custom. Что-то вроде этого.

Terrasoft.sdk.Model.addBusinessRule("UsrMyModel", {
    name: "RuleName",
    ruleType: Terrasoft.RuleTypes.Custom,
    triggeredByColumns: [/*Список колонок, которые активируют правило*/],
    events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Save],
    executeFn: function(record, rule, column, customData, callbackConfig) {
        var hasError = false; //булевая переменная, указывающая корректность поля.
        var errorMessage = "Необходимо указать значение."; // Сообщение об ошибке.
        //Выполняем нужный код, определяющий наличие ошибки
        record.changeProperty("UsrMyColumn", {
            isValid: {
                value: hasError,
                message: errorMessage
            }
        });
        Ext.callback(callbackConfig.success, callbackConfig.scope);
    }
});

 

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

Доброго времени!

Возникла необходимость фильтрации записей в детали "UsrProductInAccount" раздела Контрагенты "Account". Данная деталь отображена в манифесте

"Models": {
        "UsrProductInAccount": {
            "RequiredModels": [
                "UsrProductInAccount",
                "Account",
                "Product",
                "SocialMessage"
            ],
            "ModelExtensions": [],
            "PagesExtensions": [
                "UsrMobileUsrProductInAccountActionsSettingsFieldForceWorkplace",
                "UsrMobileUsrProductInAccountGridPageSettingsFieldForceWorkplace",
                "UsrMobileUsrProductInAccountRecordPageSettingsFieldForceWorkplace",
                "UsrMobileProductInAccountConfig"
            ]
        }
    }

Созданный модуль "UsrMobileProductInAccountConfig" отобразил в манифесте и прописал сам фильтр. Фильтр исключает все записи с заполненным реквизитом "UsrDateSale".

Terrasoft.sdk.Module.addFilter("UsrProductInAccount", Ext.create("Terrasoft.Filter", {
    name: "UsrProductInAccountFilter",
    type: Terrasoft.FilterTypes.Group,
    subfilters: [
            Ext.create("Terrasoft.Filter", {
                property: "UsrDateSale",
                    // Оператор отрицания
                isNot: false,
                    // Не заполнено
                value: null
            })
        ]
    }));

Выполняю синхронизацию. Результат не получен. В чём может быть причина?

Спасибо.

У меня такой же вопрос

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

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

Это не раздел (Terrasoft.sdk.Module), а стандартная деталь. Соответственно, для нее нужно использовать Terrasoft.sdk.Details. А именно нужно добавить в схему UsrMobileAccountModuleConfig след. код:

 
Terrasoft.sdk.Details.addFilter("Account", "UsrSchema4DetailStandardDetail", {
   property: "UsrDateSale",
   isNot: false,
   value: null
});

В результате к существующей фильтрации детали по родительской записи (по контрагенту) добавится необходимая клиенту фильтрация по колонке UsrDateSale.

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

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

 

Каким образом возможно переименовать название поля в Мобильном приложении?

Заранее спасибо.

У меня такой же вопрос

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

Точно не помню, но попробуйте посмотреть в Дизайнере системы - Дизайнер мобильной версии, выбираете нужное рабочее пространство, раздел и там смотрите, что можно с полем сделать.

В «Мастере мобильного приложения» можно только выбирать поля, уже существующие в объекте. Соответственно, чтобы переименовать, нужно менять в самом объекте раздела, его в дизайнере (или в переводах, нужно смотреть). Но так поле переименуется везде.

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

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

Что делать в такой ситуации?

Точно помню, что раньше эта схема (для разработки в мобильных приложениях) замещалась без проблем.

Пока проверяю на демо-сборке.

У меня такой же вопрос

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

Вам не нужно замещать схему. Вам достаточно в мастере мобильного приложения сохранить текущие изменения и манифест создастся сам в пользовательском пакете.

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

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

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

У меня такой же вопрос

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.

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

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

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

В 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
});

 

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

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

"В процессе синхронизации произошла ошибка"

Отчет прикрепляю:

Model Name: Benefit_M503
Platform: Android
Platform Version: 5.1
Resolution: 360x640
UIVersion: UIV2
ApplicationVersion: 7.12.9
ApplicationMajorVersion: 7.12
BackgroundSyncMode: Always
ServerUrl: https://bpmstest.abiconnect.ru/
ContactId: a0469676-80b4-4b52-a740-8a5a1f72c5c2
CultureName: ru-RU
ApplicationRevision: null
WorkplaceCode: NPD01
ProductInfo: {"ProductName":"bpm'online","ProductEdition":"studio","CustomerId":"201712251022","Version":{"Major":7,"Minor":12,"Build":1,"Revision":924,"MajorRevision":0,"MinorRevision":924}}
CurrentDateTime: Tue Jul 17 2018 15:24:47 GMT+0300 (MSK)

Type: Terrasoft.SyncException 
Message: В процессе синхронизации произошла ошибка 
Stack trace: 
Function.Ext.define.statics.handleException(Terrasoft.Mobile.Combined.js:32396:34) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Ext.define.callUserErrorHandler(Terrasoft.Mobile.Combined.js:26185:7) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Ext.define.callFailure(Terrasoft.Mobile.Combined.js:25724:8) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Function.Terrasoft.RequestManager.issueRequest.requestFnConfig.failure(Terrasoft.Mobile.Combined.js:40521:11) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Object.config.requestItemFailure(Terrasoft.Mobile.Combined.js:39654:11) 
Ext.define.onRequestFailure(Terrasoft.Mobile.Combined.js:39422:12) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
null.<anonymous>(Terrasoft.Mobile.Combined.js:39658:9) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Ext.define.executeCallbackIfNotCanceled(Terrasoft.Mobile.Combined.js:39903:8) 
Ext.define.failureHandler(Terrasoft.Mobile.Combined.js:39925:8) 
Object.Ext.apply.callback(sencha-touch-all-debug.js:10397:26) 
Ext.define.onComplete(sencha-touch-all-debug.js:36402:17) 
Ext.define.onStateChange(sencha-touch-all-debug.js:36338:18) 
XMLHttpRequest.<anonymous>(sencha-touch-all-debug.js:3233:27) 
Type: Terrasoft.ServerException 
Message: Запрос на сервер вернул ошибку 
AdditionalInfo: {"request":{"id":27,"headers":{"Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie","X-Terrasoft-Mobile":true,"X-Requested-With":"XMLHttpRequest"},"options":{"isCancelable":true,"url":"https://bpmstest.abiconnect.ru/0/Mobile/Services/MobileCodeService.ashx…","success":null,"failure":null,"scope":{"asyncOperation":{"initConfig":null,"initialConfig":{"isCancelable":true,"asyncQueueId":null},"config":{"isCancelable":true,"asyncQueueId":null},"_isCancelable":true,"_asyncQueueId":null,"asyncManagerIsDisabled":true},"initialConfig":{"isCancelable":true,"url":"https://bpmstest.abiconnect.ru/0/Mobile/Services/MobileCodeService.ashx…","success":null,"failure":null,"scope":null,"onRequestCreate":null,"headers":{"Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie","X-Terrasoft-Mobile":true},"method":"GET","disableCaching":false},"performanceCounterKey":"d94e002c-ed82-4549-8981-2404db92e317"},"onRequestCreate":null,"headers":{"Accept":"application/json","Content-Type":"application/json","Authorization":"Cookie","X-Terrasoft-Mobile":true},"method":"GET","disableCaching":false},"async":true},"requestId":27,"status":500,"statusText":"Internal Server Error","getResponseHeader":null,"getAllResponseHeaders":null,"responseText":"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\"/>\r\n<title>500 - \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.</title>\r\n<style type=\"text/css\">\r\n<!--\r\nbody{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}\r\nfieldset{padding:0 15px 10px 15px;} \r\nh1{font-size:2.4em;margin:0;color:#FFF;}\r\nh2{font-size:1.7em;margin:0;color:#CC0000;} \r\nh3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} \r\n#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:\"trebuchet MS\", Verdana, sans-serif;color:#FFF;\r\nbackground-color:#555555;}\r\n#content{margin:0 0 0 2%;position:relative;}\r\n.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}\r\n-->\r\n</style>\r\n</head>\r\n<body>\r\n<div id=\"header\"><h1>\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430</h1></div>\r\n<div id=\"content\">\r\n <div class=\"content-container\"><fieldset>\r\n  <h2>500 - \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430.</h2>\r\n  <h3>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0441 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c; \u0440\u0435\u0441\u0443\u0440\u0441 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d.</h3>\r\n </fieldset></div>\r\n</div>\r\n</body>\r\n</html>\r\n","responseXML":null,"responseBytes":null} 

У меня такой же вопрос

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

По результатам анализа, у Вас в приложении настроена аутентификация по NTLM-протоколу. К сожалению, на данный момент в мобильном приложении нет возможности работать при сквозной аутентификации по NTLM-протоколу (https://academy.terrasoft.ru/documents/studio/7-12/kak-nastroit-autentifikaciyu-windows#XREF_44889_NTLM) при открытии bpm'online приложения, так как в мобильной версии идет переход на страницу логина, а не на "ntlmlogin". Для работы в мобильной версии необходимо отключить (признак false) использование ключа "UsePathThroughAuthentication". Перед правками убедитесь, что в providerNames используется LDAP (https://academy.terrasoft.ru/documents/studio/7-12/chasto-zadavaemye-voprosy-po-sinhronizacii-s-ldap#XREF_37112)
Примечание. Рекомендуем изменять настройки приложения в нерабочее время. К сожалению, также отсутствует возможность в мобильном приложении использовать одновременно сквозную аутентификацию, минуя страницу входа, и вход по ссылке "Войти под доменным пользователем". Со своей стороны мы зафиксировали пожелание на доработку данной функциональности.

Войдите или зарегистрируйтесь, чтобы комментировать