Добрый день! 

Нужно сделать двунаправленный фильтр для полей Тип проекта и Вид процесса проекта в мобильном приложении.

 

 

Мне удалось сделать фильтр при изменении значении поле Вид процесса проекта фильтровать значение поле Тип проект в мобильном приложении.

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

Таблица Project содержет в себе поля

PsProcessType - вид процесса проекта и

ProjectSubType - тип проекта.

Соответственно данные этих полей берется из двух объектов справочников: 

PsProjectProcessType - Вид процесса проекта,

PsProjectSubType  - Тип проекта.

Объект PsProjectSubType содержит в себе связывающий двух столбец PsProjectProcessType.

Нравится

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

Добрый день,

 

Если связь между PsProjectProcessType и PsProjectSubType это связь один ко многим, то можно использовать MutualFiltration. Простой пример: фильтровать город по стране и наоборот. В таком случае код будет такой:

Terrasoft.sdk.Model.addBusinessRule('Contact', {
	ruleType: Terrasoft.RuleTypes.MutualFiltration,
	triggeredByColumns: ['Country'],
	filteredColumn: 'City',
	filteringPropertyName: 'Country'
});

В данной конфигурации есть два действия фильтрации:

 

Прямое: при выставлении поля-родителя фильтруемому полю выставляется фильтр (если поле-родитель заполнено)

Обратное: при выставлении фильтруемого поля, полю родителю автоматически выставляется значение (так как оно одно)

 

triggeredByColumns – имя колонки-родителя (один-ко-многим) в модели карточки

filteredColumn – имя фильтруемой колонки (один-ко-многим)  в модели карточки

filteringPropertyName – имя колонки-родителя в модели фильтруемого поля

Спасибо Oleg Drobina,

Реализовал фильтр следующим образом.

Terrasoft.sdk.Model.addBusinessRule('Project', {
    ruleType: Terrasoft.RuleTypes.MutualFiltration,
    triggeredByColumns: ["PsProcessType", "ProjectSubType"],
    connections: [
        {
            parent: "PsProcessType",
            child: "ProjectSubType",
            connectedBy: "PsProjectProcessType"
        }
    ]
});

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

Oleg Drobina, 

можете ответить на данный вопрос?

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

Добрый день!

Не срабатывает фильтр в мобильном приложении. На странице отображения списка проектов MobileProjectGridPageSettingsDefaultWorkplace хочу отобразить проекты без родительского проекта по колонке ParentProject (родительский проект)

Добавил конфигурационный модуль MobileProjectModuleConfig. Описал фильтр.

Потом добавил данный модуль в файл MobileApplicationManifestDefaultWorkplace в блок ModelExtensions.  Можете подсказать что я не так делаю.

 

Нравится

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

 Добрый день,

 

Сделал всё аналогично, кроме того, что не добавлял созданный модуль в ModelExtensions, а только в PagesExtensions. Код один в один с Вашим:

Terrasoft.sdk.Module.addFilter("Project", Ext.create("Terrasoft.Filter", {
    type: Terrasoft.FilterTypes.Group,
    subfilters: [
		Ext.create("Terrasoft.Filter", {
			compareType: Terrasoft.ComparisonTypes.NotEqual,
			property: "ParentProject",
			value: null
		})
	]
}));

Еще для чистоты эксперимента вывел в реестр проектов колонку Parent item и в результате, после перелогина в мобильное приложение после создания модуля и привязки его в манифесте к PagesExtensions, загрузились только записи с заполненным Parent item:

Попробуйте полностью перелогиниться в мобильное приложение.

Спасибо большое, фильтр работает!

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

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

Нравится

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 комментарий

Добрый день!

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

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

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