Вопрос

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

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

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

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

Реестр справочника и так открывается если нажать на значение - http://prntscr.com/jixl4c

Как вариант можете реализовать пользовательское действие - https://www.dropbox.com/s/80xtv5f8ngqviru/%D0%9F%D0%BE%D0%BB%D1%8C%D0%B…

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

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

Есть возможность поместить кнопку именно где-то посреди страницы? Дейсвтие для пользователя будет довольно неудобным. Или это принципиально невозможно?

Бершеда Д. Н.,

Можете посмотреть алгоритм реализации в похоже топике:

https://community.terrasoft.ru/questions/dobavlenie-kastomnyh-elementov-v-mobilnom-prilozenii

Если нужно открыть пикер для выбора значения, то посмотритк MobileActivityGridPageControllerV2. Там много пример открытия пикеров. Например, для выбора «Ответственного» (метод getEmployeePicker()
) или выбора режима расписания (метод getGridModePicker()).

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

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

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

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

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

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

Добрый день. Вот тут предоставили хороший ответ: https://community.terrasoft.ru/questions/skrytie-standartnoi-detali-v-k…

Парамонов Роман,

благодарю. Всё получилось.

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

Один из вариантов реализации этой задачи - перекрыть в контроллерах страниц метод onBusinessRuleExecuted, который отрабатывает после выполнения бизнес-правил и в котором можно найти нужный элемент у panel-а и скрыть\показать его.

Ext.define("CustomUsrHaulPreviewPage.Controller", {
    override: "UsrHaulPreviewPage.Controller",
 
    onBusinessRuleExecuted: function(record, rule, ruleResult) {
        this.callParent(arguments);
        var view = this.getView();
        var panel = view.getPanel();
        var type = record.get("UsrDriverCheckType");
        var isNeededType = (type && type.getId() === "079acedd-585f-4a0e-aff0-eb419ec09925");
        var panelItems = panel.getItems();
        for (var i = 0, ln = panelItems.getCount(); i < ln; i++) {
            var item = panelItems.items[i];
            if (item instanceof Terrasoft.ViewEmbeddedDetail &&
                    item.getName() === "UsrSchema11DetailEmbeddedDetail") {
                var isItemHidden = item.getHidden();
                if (type && isNeededType) {
                    if (!isItemHidden) {
                        item.setHidden(true);
                    }
                } else if (type) {
                    if (isItemHidden) {
                        item.setHidden(false);
                    }
                }
            }
        }
    }
 
});

Ext.define("CustomUsrHaulEditPage.Controller", {
    override: "UsrHaulEditPage.Controller",
 
    onBusinessRuleExecuted: function(record, rule, ruleResult) {
        this.callParent(arguments);
        var view = this.getView();
        var panel = view.getPanel();
        var type = record.get("UsrDriverCheckType");
        var isNeededType = (type && type.getId() === "079acedd-585f-4a0e-aff0-eb419ec09925");
        var panelItems = panel.getItems();
        for (var i = 0, ln = panelItems.getCount(); i < ln; i++) {
            var item = panelItems.items[i];
            if (item instanceof Terrasoft.EditEmbeddedDetail &&
                    item.getName() === "UsrSchema11DetailEmbeddedDetail") {
                var isItemHidden = item.getHidden();
                if (type && isNeededType) {
                    if (!isItemHidden) {
                        item.setHidden(true);
                    }
                } else if (type) {
                    if (isItemHidden) {
                        item.setHidden(false);
                    }
                }
            }
        }
    }
 
});

Либо же 

Создаем новую схему UsrMobileAccountPreviewPage (с типом «Модуль»)

/* globals Account: false */

Terrasoft.LastLoadedPageData = {

    controllerName: "UsrAccountPreviewPage.Controller",

    viewXType: "usractivitypreviewpageview"

};

Ext.define("UsrAccountPreviewPage.View", {

    extend: "AccountPreviewPage.View",

    xtype: "usractivitypreviewpageview",

    config: {

        id: "AccountPreviewPage"

    },

    /**

     * @inheritdoc

     * @protected

     * @overridden

     */

    shouldHidePanelItem: function(loadedRecord, component) {

        var detailName = component.config.name;

        if (detailName === "ActivityDetailV2StandartDetail") {

            var categoryId = loadedRecord.get("AccountCategory.Id");

            return categoryId !== Terrasoft.Configuration.AccountCategory.DoctorVisit;

        } else {

            return this.callParent(arguments);

        }

    }

});

Ext.define("UsrAccountPreviewPage.Controller", {

    extend: "AccountPreviewPage.Controller",

    statics: {

        Model: Account

    },

    config: {

        refs: {

            view: "#AccountPreviewPage"

        }

    }

});

Прописываем ее в манифесте

"Models": {

    "Account": {

        ...

        "Preview": "UsrMobileAccountPreviewPage",

        ...

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

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

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

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

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

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

createEditComponentByColumnName: function(columnName) {
        var model = this.getModel();
        var columnConfig = model.ColumnConfigs.get(columnName);
        var config = {
            name: columnName,
            markerValue: columnName
        };
        switch (columnConfig.columnType) {
            case Terrasoft.ColumnTypes.number:
                config.xtype = "tsintegerfield";
                break;
            case Terrasoft.ColumnTypes.decimal:
                config.xtype = "tsfloatfield";
                break;
            case Terrasoft.ColumnTypes.bool:
                config.xtype = "tstoggle";
                break;
            default:
                return null;
        }
        return this.createFieldComponent(config);
    },

 

Мы зафиксируем Ваше пожелание для рассмотрения аналитиками продукта.

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

Коллеги, здравствуйте!
Возникло несколько вопросов по открытию доступа в моб.приложение.
Какие есть варианты открытия доступа к моб.приложению если система будет разворачиваться on-site и что для этого необходимо?

Возможно ли открыть доступ на тестовый период в случае, если лицензии пока не активированы? 
Возможно ли открыть доступ к  моб.приложению через локальную сеть wi-fi?

Спасибо!

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

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

Роман, добрый день!

Это зависит от настроек доступа к серверу. Особых требований нет.
Главное, чтобы был сервер доступен с мобильного устройства (через VPN, Wi-Fi и т.д.). Этот вопрос уже больше относится к работе администрирования а не к приложению.

Также некоторые нюансы описаны на Академии -https://academy.terrasoft.ru/documents/mobile/7-11/ustanovka-
mobilnogo-prilozheniya-i-pervyy-vhod

Для использования мобильного приложения Вам необходима активная лицензия продукта bpm'online (например, sales enterprise) либо же trial/демо сайт. Отдельная лицензия не нужно. 

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

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

например,в обычном приложении есть кнопка "три точки", открыв которую, открывается меню с вариантами удалить, изменить и пр.
нужно что-то подобное для мобилки. при нажатии на строку детали хотелось бы иметь возможность совершать те или иные кастомные действия. например, кнопки Отклонить, Утвердить и пр.

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

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

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

 

Ниже приблизительный алгоритм реализации (возможно необходимо будет его доработать): 

Создаем новую схему UsrAccountBillingInfoModuleConfig, подключаем ее в манифесте

там пишем: 

Terrasoft.sdk.Actions.add("AccountBillingInfo", {
    name: "MyActionName",
    title: "MyLocalizibleTitle",
    isVisibleInGrid: true,
    isDisplayTitle: true,
    iconCls: "cf-action-my-icon",
    position: 3,
    actionClassName: "Terrasoft.configuration.MyAction",
});

 

AccountBillingInfo - имя модели, которая используется в детали

isVisibleInGrid - означает, будет ли действие показываться в реестре

Terrasoft.configuration.MyAction - имя класса кастомного действия (нужно создать свой новый класс. Пример можно глянуть тут Terrasoft.configuration.OpenPortalMessagePublisherPageAction)

cf-action-my-icon - название CSS стиля, который добавится к элементу иконки, на вкладке less можно будет иконку для него прописать

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

Добрый день!

Столкнулись с проблемой с манифестами мобильного приложения

На дев среде был указан префикс, издатель = ХХХ.

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

Перенесли на тест среду пакет с изменениями. На тест среде префикс пустой. Наше рабочее место не открывается. Прописали на тест среде наш префикс XXX. Все заработало.

Кроме нас на проекте есть еще другая компания, которая поставляет свои пакеты с префиксом YYY. Но у них пока нет доработок мобильного приложения

Вопросы:

1) Как повлияет указание префикса XXX на промышленной среде на работу в системе? все ли будет доступно из нашего пакета(префикс XXX) и из пакеты другой организации(префикс YYY)? Где еще может всплыть проблема с префиксом? мне казалось, что он отвечает только за сам префикс создаваемых объектов и схем.

2) Как создавать рабочие места в мобильном приложении и вообще настраивать его без привязки к префиксам?

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

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

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

bpm'online по особому обрабатывает схемы манифестов мобильного приложения.

В ядре идет завязка на имя схемы.

Имя должно быть либо MobileApplicationManifestXXX либо PrefixMobileApplicationManifestXXX , где Prefix берется из текущего значения системной настройки «SchemaNamePrefix».

 

Рекомендуем следующее:

  1. В момент настройки мобильного приложения, через дизайнер, делать системную настройку «SchemaNamePrefix» пустой, чтоб все манифесты были без префикса.

(по окончании работы с мастером не забудьте ее снова вернуть)

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

При этом префикс может быть любой (главное чтоб не пустой).

 

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

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

Zaitova Liubov,

1) без разницы какой будет

2) каждый раз когда создаете новое рабочее место через дизайнер нужен пустой префикс

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

а редактирование существующего рабочего места тоже с пустым префиксом должно быть или можно ставить свой ХХХ?

Zaitova Liubov,

Желательно пустым

Спасибо

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

Добрый день. При разработке нового раздела в мобильном приложении возникла проблема с настройкой с выбором колонки реестра для стандартной детали. Настройка первичной колонки будто вовсе не срабатывает. В качестве отображаемого значения всегда выводится guid-ное значение (id строки). При этом вторичная колонка настраивается без каких-либо проблем. 

Terrasoft.sdk.GridPage.setPrimaryColumn("MyModel", "MyModelField1");
 
Terrasoft.sdk.GridPage.setSecondaryColumn("MyModel", "MyModelField2");

Пробовал устанавливать значения через convertFunction, но она вообще не вызывается.

В чём может быть причина подобного поведения?

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

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

Добрый день!

Для решения вашей бизнес цели Вы можете использовать следующее:

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

  1. Добавляем новую схему типа "Module" с именем UsrИмя_вашей_схемы
  2. Пишем в ней примерно такой код:

    Terrasoft.sdk.GridPage.setPrimaryColumn("ContactCareer""JobTitle");

    Terrasoft.sdk.RecordPage.addColumn("ContactCareer", {

            name: "JobTitle",

            position: 1

        }"primaryColumnSet");

    Terrasoft.sdk.RecordPage.removeColumn("ContactCareer""Contact""primaryColumnSet");

    Где ContactCareer - имя таблицы, которая соответствует нашей детали;

          JobTitle - имя колонки, которую нужно отобразить

Подключаем данную схему в манифесте мобильного приложения MobileApplicationManifestDefaultWorkplace:
Находим блок модели Ваш_блок(например, ContactCareer) и в PagesExtensions добавляем наш модуль UsrИмя_вашей_схемы

 

Гриценко Игорь,

Спасибо! Всё получилось.

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

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

Настройки часовых поясов: 

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

Добавляю запись через мобильное приложение со следующими значениями:

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

В основном приложении значения:
Дата подачи: 20.12.2017 9:28
Дата начала командировки: 19.12.2017
Дата окончания командировки: 19.12.2017

Что можно с этим сделать?

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

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

Искандер, здравствуйте!

Уточните, пожалуйста:

- версию мобильного приложения;

- версию приложения bpm'online;

- какой конкретно (название) часовой пояс стоит в мобильном устройстве и в приложении;

- в каком разделе создаете запись;

- какой режим (offline/online) мобильного приложения используется;

- какую версию платформы Вы используете (UIv1/UIv2).

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

Версия мобильного приложения: 7.11.7
Версия приложения  7.11.0.3122
Часовой пояс в мобильном приложении определяется автоматически (GMT+03:00 Москва, стандартное время)
Запись создаем в новом разделе (раздел создан в рамках проекта)
Режим приложения - Онлайн
Использовать мобильный интерфейс V2 : да

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

Добрый день. Подскажите пожалуйста как добавить возможность загружать файлы через мобильное приложение.

В академии есть инструкция для настройки embeded детали. Но мне бы хотелось сделать обычную деталь.

Спасибо

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

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

Здравствуйте.
Что в Вашем понимании "обычная" деталь?
В мобильном приложении есть два типа деталей: встроенные (например, адреса, средства связи и т.д.) и стандартные (Активность в контакте и прочие, сюда же входят детали с редактируемым реестром).
В инструкции на данный момент представлена наиболее удобная для разработчика и пользователя реализация встроенной детали "Файлы и ссылки" из возможных. Пользователь нажимает "Добавить" и может сделать фото с камеры, прикрепить картинку с галереи или добавить файл.
Помимо инструкции можете также посмотреть реализацию данной детали в пакете Mobile.

Добрый день!

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

Хочу отметить, что загруженные записи отображаются на страницы записи, а не на отдельной странице - http://prntscr.com/hpzz3r.

Вопрос: чем Вам не подходит встроенная деталь?

В версии bpm'online 7.11.3 добавлена возможность добавить деталь "Файлы и ссылки" в любой раздел мобильного приложения (если для аналогичного раздела деталь существует в основном интерфейсе) через мастер мобильного приложения.

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

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

Добрый день.

Можно ли как то задавать значения по умолчанию для полей в мобильном приложении?
Хочется сделать предзаполнение полей  (в идеале даже не выводить их в интерфейс мобильного приложения), например заполнить "дату подачи" текущей датой, и поле "поле канал поступления" указать "мобильное приложение".

Можно ли такое сделать и если можно, то как?

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

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

Добрый день.

Для того, чтобы задать значение по умолчанию для поля при создании записи, можно использовать SDK модели:

Terrasoft.sdk.Model.setDefaultValuesFunc("НазваниеМодели", function(config) {
    var myValue = "Мобильное приложение";
    config.record.set("НазваниеКолонки", myValue);
    Ext.callback(config.success, config.scope);
});

Скрыть колонку тоже можно. Теперь используем SDK страницы:

Terrasoft.sdk.RecordPage.addColumn("НазваниеМодели", {
    name: "НазваниеКолонки", // название колонки как в объекте
    position: 0,
    hidden: true // Здесь скрывается колонка
}, "primaryColumnSet");

Значения должны записываться, несмотря на скрытость колонки.

Больше примеров можете найти в пакете Mobile в схемах MobileActivityModelConfig и MobileActivityModuleConfig соответственно.

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