Вопрос

Добрый час суток! Сделал когда нажимаю на запись в реестре  в разделе то переходит на пустую белую страницу и в консоле такое вот предупреждение,а надо на мою Preview. Подскажите пожалуйста как исправить или где искать решение проблемы ? Раздел - SuInterview

при этом конфиг выглядит так: 

Terrasoft.sdk.RecordPage.addColumnSet("SuInterview", {
    name: "primaryColumnSet",
    isPrimary: true,
    position: 0
});

Terrasoft.sdk.RecordPage.addColumn("SuInterview", {
    name: "SuAccount",
    position: 0,
    isInPlaceEditingMode: false,
    readOnly: true
}, "primaryColumnSet");

Terrasoft.sdk.RecordPage.addColumn("SuInterview", {
    name: "SuContact",
    position: 1,
    isInPlaceEditingMode: false,
    readOnly: true
}, "primaryColumnSet");

Terrasoft.sdk.RecordPage.addColumn("SuInterview", {
    name: "SuResponsible",
    position: 2,
    isInPlaceEditingMode: false,
    readOnly: true
}, "primaryColumnSet");

Terrasoft.sdk.GridPage.setPrimaryColumn("SuInterview", "SuName");
Terrasoft.sdk.GridPage.setSecondaryColumn("SuInterview", "CreatedOn");

Сам манифест: 

{
    "SyncOptions": {
        "SysSettingsImportConfig": [],
        "ModelDataImportConfig": [
            {
                "Name": "SuInterview",
                "SyncColumns": [
                    "SuName",
                    "SuResponsible",
                    "SuQuestionary",
                    "SuKind"
                ]
            },
            {
                "Name": "Contact",
                "SyncColumns": []
            },
            {
                "Name": "SuQuestionary",
                "SyncColumns": []
            },
            {
                "Name": "SuInterviewKind",
                "SyncColumns": []
            },
            {
                "Name": "SocialMessage",
                "SyncColumns": [
                    "EntityId"
                ]
            },
            {
                "Name": "SuInterviewQuestion",
                "SyncColumns": [
                    "Id",
                    "SuInterview"
                ]
            }
        ],
        "SysLookupsImportConfig": [
            "SuAnswersType",
            "SysUserInRole"
            ]
    },
    "Modules": {
        "SuInterview": {
            "Group": "main",
            "Model": "SuInterview",
            "Position": 4,
            "isStartPage": false,
            "Title": "SuInterviewSectionTitle",
            "Hidden": false
        }
    },
    "Models": {
        "SuAnswersType": {
            "RequiredModels": [
            ]
        },
        "Account": {
            "RequiredModels": [
            ]
        },
        "SuInterview": {
            "Preview": "SuInterviewPreviewPage",
            "RequiredModels": [
                "SuInterview",
                "Contact",
                "SuQuestionary",
                "SuInterviewKind",
                "SocialMessage",
                "SuInterviewQuestion",
                "SuAnswersType",
                "SuInterviewType",
                "ContactAddress",
                "Account"
            ],
            "ModelExtensions": [],
            "PagesExtensions": [
                "SuInterviewPreviewPage",
                "SuMobileInterviewModuleConfig"
            ]
        },
        "SocialMessage": {
            "RequiredModels": [],
            "ModelExtensions": [],
            "PagesExtensions": []
        },
        "SuInterviewQuestion": {
            "RequiredModels": [
                "SuInterviewQuestion",
                "SocialMessage"
            ],
            "ModelExtensions": [],
            "PagesExtensions": []
            
        }
    }
}

и моя PreviewPage 

/* globals SuInterview: false */
Terrasoft.LastLoadedPageData = {
    controllerName: "SuMobileSuInterviewPreviewPage.Controller",
    viewXType: "sumobilesuinterviewpreviewpageview"
};

Ext.define("SuMobileSuInterviewPreviewPage.View", {
    extend: "Terrasoft.view.BasePreviewPage",
    xtype: "sumobilesuinterviewpreviewpageview",
    config: {
        id: "SuMobileSuInterviewPreviewPage"
    }
});

Ext.define("SuMobileSuInterviewPreviewPage.Controller", {
    extend: "Terrasoft.controller.BasePreviewPage",

    statics: {
        Model: SuInterview
    },

    config: {
        refs: {
            view: "#SuMobileSuInterviewPreviewPage"
        }
    }

});

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

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

Добрый день! Сделал PreviewPage при нажатии на запись в разделе должна открываться страничка:она не открывается вместо этого ошибка в консоле:

Cannot read property 'columnType' of undefined

 посмотрев по колстеку в методе resolveColumnCollectionModelDependencies передается вот такое:

column = {name: "Account", columnConfig: {…}, position: 0, model: "Interview"}:как я понимаю в моем разделе Interview должна быть колонка Account:но в манифесте она нигде у меня не фигурирует. Подскажите пожалуйста как решить проблему. Код манифеста:

{
    "SyncOptions": {
        "SysSettingsImportConfig": [],
        "ModelDataImportConfig": [
            {
                "Name": "Interview",
                "SyncColumns": [
                    "Name",
                    "Responsible",
                    "Questionary",
                    "Kind"
                ]
            },
            {
                "Name": "Contact",
                "SyncColumns": []
            },
            {
                "Name": "Questionary",
                "SyncColumns": []
            },
            {
                "Name": "InterviewKind",
                "SyncColumns": []
            },
            {
                "Name": "SocialMessage",
                "SyncColumns": [
                    "EntityId"
                ]
            },
            {
                "Name": "InterviewQuestion",
                "SyncColumns": [
                    "Id",
                    "Interview"
                ]
            }
            
        ],
        "SysLookupsImportConfig": [
            "SuAnswersType",
            "SysUserInRole"
            ]
    },
    "Modules": {
        "SuInterview": {
            "Group": "main",
            "Model": "Interview",
            "Position": 4,
            "isStartPage": false,
            "Title": "InterviewSectionTitle",
            "Hidden": false
        }
    },
    "Models": {
        "SuAnswersType": {
            "RequiredModels": [
            ]
        },
        "SuInterview": {
            "Preview": "SuInterviewPreviewPage",
            "RequiredModels": [
                "Interview",
                "Contact",
                "Questionary",
                "InterviewKind",
                "SocialMessage",
                "InterviewQuestion",
                "AnswersType",
                "InterviewType",
                "ContactAddress",
                "Account"
                
            ],
            "ModelExtensions": [],
            "PagesExtensions": [
                "InterviewPreviewPage",
                "MobileInterviewModuleConfig"
            ]
        },
        "SocialMessage": {
            "RequiredModels": [],
            "ModelExtensions": [],
            "PagesExtensions": []
        },
        "InterviewQuestion": {
            "RequiredModels": [
                "InterviewQuestion",
                "SocialMessage"
            ],
            "ModelExtensions": [],
            "PagesExtensions": []
            
        }
      
    }
}

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

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

Никита, просьба предоставить полный листинг PreviewPage.

Также убедитесь, что объект SuInterview существует. Также такое ощущение, что у есть 2 раздела с разными названиями и они перемещались. Перепроверьте, название объектов и что схемы используется для соответствующего объекта.

 

  "Modules": {
        "SuInterview": {
 
            "Model": "Interview",
        }
    },
    "Models": {
 
        "SuInterview": {
            "Preview": "SuInterviewPreviewPage",
            "RequiredModels": [
                "Interview",
            ],
   
            "PagesExtensions": [
                "InterviewPreviewPage",
                "MobileInterviewModuleConfig"
            ]
        },

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

да действительно я перепутал название уже все работает,спасибо!

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

Добрый день,подскажите пожалуйста что подробно означает запись (комментарий) рода /* globals Accountfalse */ например на PreviewPage. Заранее спасибо!

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

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

Никита, здравствуйте!

Это служебное сообщение для дизайнера схемы. А именно, предотвращает предупреждение дизайнера при сохранении схемы, что объект Account не определен.

понял,спасибо!

 

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

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

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

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()).

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

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

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

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

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

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

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 можно будет иконку для него прописать

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

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

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

В профиле пользователя, от которого произведен логин в мобильное приложение +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 соответственно.

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

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

1. Можно ли использовать для детали filterMethod, как в основной версии, или каким-либо образом использовать произвольный фильтр, а не только по колонке родительской страницы?

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

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

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

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

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

1. Для деталей можно указывать фильтры, используя метод configure() соотв. sdk-класса:

 

Terrasoft.sdk.Details.configure("Contact", "ActivityDetailV2StandartDetail", {
   filters: Ext.create("Terrasoft.Filter", {
      type: Terrasoft.FilterTypes.Group,
      subfilters: [
         Ext.create("Terrasoft.Filter", {
            compareType: Terrasoft.ComparisonTypes.NotEqual,
            property: "Type",
            value: Terrasoft.GUID.ActivityTypeEmail
         })
      ]
   })
});

2. В целом, изменение режима работы детали делается так:

Terrasoft.sdk.Details.setChangeModes("Contact", "ActivityDetailV2StandartDetail", [Terrasoft.ChangeModes.Read]);

Но если нужно менять режим работы от условия, то для этого в контроллерах страниц есть метод getChangeModes(). Т.е. в контроллерах соотв. страниц (грида, просмотра, редактирования) нужно расширить этот метод:

 

getChangeModeOperations: function() {
   var detailConfig = this.getDetailConfig();
   if (detailConfig) {
      var parentRecord = detailConfig.parentRecord;
      if (parentRecord.get("IsNonActualEmail") === false) {
         return {
            canCreate: false,
            canUpdate: false,
            canDelete: false
         };
      }
   }
   return this.callParent(arguments);
}
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Коллеги, добрый день!
Возник вопрос, записывается ли в систему факт прохождения/нарушения верификации чек-ина?
Вот есть системная настройка "Радиус верификации чек-ина", в которой указываем, например значение "100" (метров).
На визите выполняем действие "Чек-ин", находясь к 500 метрах от контрагента. Система выдает сообщение о том, что "Верификация не пройдена. Сохранить результаты?".
Если выбрать вариант "Да", то где фиксируется так скажем "нарушение", факт того, что при выполнении действия верификация была нарушена?

Есть необходимость построить дашборд, который бы отображал количество визитов, которые не прошли верификацию (чек-ин был выполнен от контрагента дальше, чем это задано в системной настройке)

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

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

Владимир, здравствуйте!

Есть справочная колонка "Статус верификации чекина" - аналитику можно построить по ней. 
Пример описан в Академии - https://academy.terrasoft.ru/documents/sales-enterprise/7-11/kak-kontrolirovat-vypolnenie-chek-ina

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