В замещающий модуль контрагента AccountPageV2 добавил локализованную строку.

Но я не вижу ее в разделе переводы, поиск делаю по ключу.Скрин. Локализ строка SalesHistoryTabCaption. Во всем списке не нашел свою.

Изображение удалено.

Нравится

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

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

Для обычной страницы, замещенной от базовой, лок. строки все есть.

Здравствуйте, Евгений!

Рекомендуем Вам обратиться с данным вопросом в службу технической поддержки  -  support@terrasoft.ru Для детального анализа данного кейса.

Я написал, но ответа нет. они как долго отвечают?

Попробуйте перевести в вашей схеме AccountPage, саму локализованную строку так:

Литвинко Павел,

А если перевод на французский, например?

 

Евгений В. пишет:

Литвинко Павел,

А если перевод на французский, например?

Перейдите в раздел Языки, из дизайнера системы. Добавьте а Активируйте нужный вам язык. 

Остальное по аналогии.

На примере Французского, скриншоты ниже. 

Литвинко Павел,

Сделал аналогично скринам, но поле в лок. строке на франц. не появляется.

Евгений В. пишет:

Литвинко Павел,

Сделал аналогично скринам, но поле в лок. строке на франц. не появляется.

Попробуйте для вашего профиля указать в поле Текущий язык, необходимый вам язык(для которого делали перевод и перезайдите в систему), после чего повторно сохраните схемы в которых произвели переводы(и проверьте их наличие), затем почистите кэш и перезайдите

Литвинко Павел,

Спасибо, появилось.

Остался вопрос, почему его нет в стандартном разделе Переводы?

Евгений В.,

Здравствуйте, Евгений!

Вероятней всего данное поле было некорректно создано. Все кастомные поля должны отображаться в переводах.

Показать все комментарии
деталь с редактируемым реестром
7.10
Ninja Forms

Добрый день!

Реализовал объект залог в заявке, у которого может быть 2 типа залога: Депозит и Недвижимость. Для каждого типа создал свою деталь, в котором выводятся только записи соотв. типа. Мне нужно, чтобы при редактировании записи из детали открывалась страница с типом залога, который в детали. Создал две разные страницы для редактирования сущности.

Далее выполнил привязку в таблицах SysDetail, SysModuleEntity, SysModuleEdit.

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

Изображение удалено.Изображение удалено.Изображение удалено.

Нравится

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

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

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

Показать все комментарии
Мобильное приложение
7.10
mobile

Мне нужно, чтобы при выборе колонки в справочнике подгружались и ещё дополнительные значения по этой колонке. В основной версии я это могу сделать, перечислив нужные мне колонки в columns в lookupListConfig в настройке соответствующей справочной колонки в attributes. Как мне сделать аналогичное в мобильном приложении? Скажем, мне нужно в активности получить колонку Account.UsrParentAccount.UsrCode или что-то подобное.

Нравится

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

Добрый день!

Если необходимо отобразить дополнительную колонку в реестре, это можно сделать с помощью SDK реестра - https://academy.terrasoft.ru/documents/technic-sdkmob/7-12/sdk-reestra. Если задача другая, опишите, пожалуйста, ее подробнее, а также с какой целью необходимо ее реализовать.

Одеяненко Юлия,

Нет, это совсем не то.

Впрочем, сам уже разобрался. Делается это через sdk страницы, например так:

Terrasoft.sdk.RecordPage.addColumn("Activity", {
    name: "Account.UsrCode",
    hidden: true
}, "primaryColumnSet");

Тогда и нужная колонка будет подгружаться. Только если это доп. поле нужно на странице детали и зависит от родительской колонки, например, Activity.Account.UsrCode, то нужно добавлять колонку к родительскому объекту, чтобы получить доступ к нужной колонке при создании записи.

Показать все комментарии
Настройка колонок
Деталь
7.10
Ninja Forms

Добрый день!

При настройке колонок детали, столкнулся со следующей проблемой: хочу вывести колонку булевого типа из связанного объекта по ссылке. Выбираю в настройках связанный объект, однако в нем не отображаются все реализованные в объекте поля. Компилировал несколько раз, перегенерировал схему объекта, чистил редис и кэш - безрезультатно. Подскажите, как вывести колонку в интерфейс.Изображение удалено.

Изображение удалено.

Нравится

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

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

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

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

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

Нравится

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

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

Реестр справочника и так открывается если нажать на значение - 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()).

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

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

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

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

Используйте отладку для выяснения причины - https://academy.terrasoft.ru/documents/technic-sdkmob/7-12/otladka-mobi…

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

Добрый день.

При попытке сохранить новую запись в бд через esq возникает ошибка на методе Save():

"Ссылка на объект не указывает на экземпляр объекта..    в Terrasoft.Core.DB.Select.GetSqlText()"

Код:

var schema = UserConnection.EntitySchemaManager.GetInstanceByName("OrderProduct");
			var esqEntity = schema.CreateEntity(UserConnection);
			esqEntity.SetColumnValue("Id", entity.BpmId);
            ....
            esqEntity.SetColumnValue("CurrencyId", entity.CurrencyId);
            esqEntity.UseAdminRights = false;
            esqEntity.Save();

 

Нравится

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

Сообщение «Ссылка на объект не указывает на экземпляр объекта» означает, что в C#-коде конфигурации или ядра в какое-то поле попадает Null, а с ним пытаются работать как с объектом. Например, обращаться к его полям и методам. Не видя полного кода и стека сложно сказать точно, где именно.

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

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

Нравится

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",

        ...

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

Добрый день!

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

 

Изображение удалено.

 

Нравится

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

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

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

Значение, которое у Вас выводится как undefined, берется из локализируемой строки в схеме LookupPageViewModelGenerator, название строки - CaptionLookupPage. Проверьте, возможно, там затерлось значение, или эта локализируемая строка вообще отсутствует.

Юлия, спасибо! Действительно, схема LookupPageViewModelGenerator была мной переопределена, а параметр LookupPageCaptionPrefix был не заполнен.

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

Добрый день.

подскажите как мне сделать выполнения определенного кода старте bpm'online, который регистрирует BPM'Online в определенном сервисе. И так же при выключении BPM'Online делает unregister.

Нравится

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

"при выключении BPM'Online" - это очень странная фраза, учитывая, что bpm-серверное приложение и всегда активно. Ну допустим, что все пользователи не будут бездумно жать на крест в браузере(я так понимаю тогда вообще не отследить), а будут разлогиниваться перед закрытием приложения(кто блин вообще так делает в 2018?)

1) logout в MainHeaderSchema в функции onExitMenuItemClick

2) при входе грузится ViewModuleWrapper и ConfigurationViewModule. Я думаю легче перегрузить wrapper(в нем меньше мусора)



Но, опять же, при такой архитектуре всё будет работать в "лабораторных" условиях: пользователь залогинился, НЕ обновляет никакие страницы, (скорее всего) не открывает доп вкладки (иначе происходит загрузка приложения с нуля, отработает теоретический register), перед закрытием браузера выходит из приложения.

Возможно, кто-нибудь из разработчиков подскажет, можно ли с серверной стороны как-то отследить пользователя (ip-шники же пишутся в деталь пользователя)

Показать все комментарии
Мобильное приложение
редактируемый реестр
7.10

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

Нравится

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

    },

 

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

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