Добрый день, подскажите как можно настроить визуализацию коллекции на преднастроенной странице? Есть БП который читает коллекцию и преднастроенная страница с параметром “Сериализуемый список составных значений” и нужными полями. Не могу понять как вывести теперь нужный список на страницу визуально. Заранее спасибо.

Нравится

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

Добрый день Виталий,

 

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

 

С уважением,

Олег

Oleg Drobina,

Пытаюсь в тестовом БП просто читать коллекцию СкриптТаском перевести ее в String и отобразить на преднастроенной странице в текстовом поле, но значение всегда пустое.

Пробовал код с документации:

var list = Get<ICompositeObjectList<ICompositeObject>>("ReadDataUserTask1.ResultCompositeObjectList");

var sb = new StringBuilder();

foreach (ICompositeObject item in list) {

   if (item.TryGetValue<string>("Name", out string value)) {

       sb.Append(value).Append( " | ");

   }

}

Set<string>("ProcessSchemaParameter1", sb.ToString());

return true;

 

И тот что в  треде, не могу понять что упускаю.

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

Доброго дня!



Переход по ссылке к отфильтрованному списку все еще невозможен? Или появились способы реализации данного кейса?

Например, приходит уведомление на почту что зарегистрировано N объектов с каким-то признаком (например, задач на определенного пользователя). И есть кнопка "Перейти к списку задач". Есть необходимость при нажатии на кнопку в письме перейти к перечню записей, в которых поле X равно определенному значению.

Возможно ли как-то формировать url на отфильтрованный перечень?

Нравится

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

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



Правильно понимаю, что при нажатии на "Перейти", у пользователя должна открыться страница авторизации. При вводе параметров для входа, ожидается открытие соответствующего раздела с отфильтрованными записями? Детализируйте задачу.

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

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

 

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

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

UPD: временно решил проблему, добавив стиль элемента:

 

.multiLookupTabPanel {
    display: grid;
}

 

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

 

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

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

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

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

Нравится

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

в diff

{

                "operation": "merge",

                "name": "AddTypedRecordButton",

                "parentName": "Detail",

                "propertyName": "tools",

                "values": {

                    "itemType": Terrasoft.ViewItemType.BUTTON,

                    "controlConfig": {

                        "menu": {

                            "items": {"bindTo": "addMenuItems"}

                        }

                    },

                "visible": true,

                "enabled": true

                }

            },

methods

init: function() {

                this.callParent(arguments);

                this.initAddMenuItems();

            },

            initAddMenuItems: function() {

                var addMenuItems = Ext.create("Terrasoft.BaseViewModelCollection");

                addMenuItems.add("addContactItem", this.Ext.create("Terrasoft.BaseViewModel", {

                    values: {

                        "Caption": {"bindTo": "Resources.Strings.AddContactCaption"},

                        "Click": {"bindTo": "addRecipient"},

                        "Tag": "addContact"

                    }

                }));

                addMenuItems.add("addbytemplateItem", this.Ext.create("Terrasoft.BaseViewModel", {

                    values: {

                        "Caption": {"bindTo": "Resources.Strings.AddByTemplate"},

                        "Click": {"bindTo": "addRecipient"},

                        "Tag": "addbytemplate"

                    }

                }));

                this.set("addMenuItems", addMenuItems);

            },

 

в diff

{

                "operation": "merge",

                "name": "AddTypedRecordButton",

                "parentName": "Detail",

                "propertyName": "tools",

                "values": {

                    "itemType": Terrasoft.ViewItemType.BUTTON,

                    "controlConfig": {

                        "menu": {

                            "items": {"bindTo": "addMenuItems"}

                        }

                    },

                "visible": true,

                "enabled": true

                }

            },

methods

init: function() {

                this.callParent(arguments);

                this.initAddMenuItems();

            },

            initAddMenuItems: function() {

                var addMenuItems = Ext.create("Terrasoft.BaseViewModelCollection");

                addMenuItems.add("addContactItem", this.Ext.create("Terrasoft.BaseViewModel", {

                    values: {

                        "Caption": {"bindTo": "Resources.Strings.AddContactCaption"},

                        "Click": {"bindTo": "addRecipient"},

                        "Tag": "addContact"

                    }

                }));

                addMenuItems.add("addbytemplateItem", this.Ext.create("Terrasoft.BaseViewModel", {

                    values: {

                        "Caption": {"bindTo": "Resources.Strings.AddByTemplate"},

                        "Click": {"bindTo": "addRecipient"},

                        "Tag": "addbytemplate"

                    }

                }));

                this.set("addMenuItems", addMenuItems);

            },

 

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

Как добавить некий код ( ссылку в простейшем случае ) в заголовок раздела ( лидов ) ?

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

Нравится

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

Можно добавить в схеме раздела кнопку с нужным стилем, а логику сделать подобную ссылкам на Community, Академию и прочее на стартовой странице системы. Кнопку добавлять в SeparateModeActionButtonsLeftContainer или в SeparateModeActionButtonsRightContainer, где добавляются другие кнопки.

Вот пример добавления новой кнопки туда:

{
    "operation": "insert",
    "name": "ToggleCalendarButton",
    "parentName": "SeparateModeActionButtonsRightContainer",
    "propertyName": "items",
    "index": 0,
    "values": {
        "itemType": Terrasoft.ViewItemType.BUTTON,
        "click": {
            bindTo: "toggleCalendar"
        },
        "markerValue": {
            bindTo: "getToggleCalendarButtonMarkerValue"
        },
        "controlConfig": {
            "imageConfig": {
                "bindTo": "Resources.Images.ToggleCalendarIcon"
            }
        },
        "classes": {
            "wrapperClass": ["toggle-calendar-wrapper"],
            "imageClass": ["toggle-calendar-image"]
        },
        "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT
    }
},

А вот пример логики клика с переходом по ссылке:

/**
 * Navigates to community site.
 * @protected
 */
CommunityClick: function() {
    var communityLink = this.get("Resources.Strings.CommunityUrl");
    window.open(communityLink);
}

 

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

Возможно ли в раздел по api подтянуть список из другой системы и потом через карточку с виртуальными полями получать данные так же через api. Смысл в том что нужно сделать управление другим сервисом через фронтэнд Creatio.

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

 

Нравится

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

Можно варианты реализации множество навскидку 1) получать данные из сервиса (по аналогии с DataService) 

2) Использовать интеграцию на уровне БД (Linked Servers) и создать виртуальный объект на основе представления. Обсуждалось тут и тут и тут

В общем вариантов много, почитайте все ветки и документацию по интеграции с другими системами.

 

Вариант dblink не подходит так как есть доступ только по webapi.

Получить данные из сервиса я могу, проблема только как данные списка в разделе заставить брать не из базы а с api (полученные любым из способов, хоть через сервис на Бэке)

пишет:

Можно варианты реализации множество навскидку 1) получать данные из сервиса (по аналогии с DataService) 

2) Использовать интеграцию на уровне БД (Linked Servers) и создать виртуальный объект на основе представления. Обсуждалось тут и тут и тут

В общем вариантов много, почитайте все ветки и документацию по интеграции с другими системами.

 

Вариант dblink не подходит так как есть доступ только по webapi.

Получить данные из сервиса я могу, проблема только как данные списка в разделе заставить брать не из базы а с api (полученные любым из способов, хоть через сервис на Бэке)

Можно на сервере БД создать view, получающую информацию от стороннего веб-сервиса и туда же отправляющую в instead-триггерах.

Но обращаться с ней с точки зрения производительности нужно очень осторожно.

Зверев Александр пишет:

Можно на сервере БД создать view, получающую информацию от стороннего веб-сервиса и туда же отправляющую в instead-триггерах.

Но обращаться с ней с точки зрения производительности нужно очень осторожно.

Это выходит что нужно создать или сервис на c# или на уровне базы http клиентом. А можно ли переопределить логику получения списка не из базы данных а по webapi? И наверно резонно подумать что если можно, на сколько это может быть проблематично с дальнейшими обновлениями системы что бы не вышло конфликта так как я понимаю прийдеться  замещать довольно глубокий код. Другими словами стоит ли игра свеч и порванного бубна?

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

Также посмотрите статью, где обсуждают нечто подобное, хоть и без интеграции.

Зверев Александр пишет:

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

Также посмотрите статью, где обсуждают нечто подобное, хоть и без интеграции.

В общем лучше так не делать, черевато или потерей в производительности или в стабильности. Спасибо за ответ 

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

Коллеги, добрый день!

Очень актуально для многих Клиентов - зафиксировать наименование столбцов в Списочном представлении реестра записей в разделах.

Сейчас при прокручивании реестра записей, наименования столбцов скрываются. 

Огромная просьба, внести корректировки в систему.

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

Разработчики системы говорят, что примерно в версии 7.15.2 запланировано добавление такой возможности.

Зверев Александр,

это будет замечательно,если они это реализуют в версии 7.15.2. Уж очень ждем. :)

Максимова Екатерина,

Здравствуйте. Данный функционал уже реализован и будет доступен после обновления на версию 7.15.2

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

Добрый день!

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

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

Список создал для менеджеров, что у них на дашбордах отображалась ТОЛЬКО одна запись на текущий момент. Но по текущей логике менеджер может нажать "Показать больше" и взять в работу другой элемент списка (например, список по лидам)

Можно убрать ссылку Показать больше из списка? Насколько я помню, в более старых версиях данной ссылки не было

Заранее благодарю!

Нравится

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

Эта логика реализована в схеме ChartModule:

/**
 * Loads data into grid with pageble options.
 * @protected
 */
loadMore: function() {
	this.loadGridData();
},

 И ниже:

}, {
"name": chartId + "_loadMore",
"itemType": Terrasoft.ViewItemType.BUTTON,
"caption": {"bindTo": "Resources.Strings.LoadMoreButtonCaption"},
"click": {"bindTo": "loadMore"},
"controlConfig": {
"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
"imageConfig":  {"bindTo": "Resources.Images.LoadMoreIcon"}
},
"classes": {"wrapperClass": ["load-more-button-class"]},
"visible": {"bindTo": "CanLoadMoreData"}
}]

Можно попробовать либо модифицировать функцию, либо поменять условие видимости, чтобы всегда было false. Либо вообще удалить механизм целиком.

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

Добрый день!

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

Кейс - Пользователь создал 245 обращений, из них с указанной оценкой - 19. "Очень доволен" проставлено в 16-ти обращениях, в двух - "Нейтральный", в одном "Очень недоволен".

В итогах средний балл по этому пользователю равен 3 (Нейтральный), по моим подсчетам, там должно быть мимимум 4 (Доволен). 16*5+2*3+1*1 = 87 (общая сумма балов), далее 87/19 (общее кол-во обращений с оценкой) = 4,578....

Может я что-то неправильно считаю?

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

Заранее спасибо за помощь

 

Нравится

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

Коллеги, очень нужна помощь в данном вопросе, может кто-то сталкивался

По логике Ваш подсчет корректный, т.е. если все цифры такие, как Вы приводите, то среднее = 87/19.

Чудес не бывает и, если система выдает 3, значит что-то Вы не учти при подсчете.

Я вижу несколько вариантов.

1. Проверить значения 'Баллов' в справочнике 'Уровень удовлетворенности'. Возможно, было изменено одно или несколько значений в этом поле.

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

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

Итог по данной проблеме. Вместе со специалистом из Террасофт посмотрели данный кейс, действительно в списках расчет производится некорректно. Коллеги взяли на более детальный анализ

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

Коллеги, добрый день! Просьба подумать над возможностью группировки записей в реестрах. Например, в заказах сделать группировку по фирмам или датам или ответственным. С возможностью свернуть и развернуть группировку естесственно.

Нравится

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

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

А если к этому добавить возможность настраивать несколько представлений, как было в 3.x, то будет еще лучше!

Некую группировку сделали в "Планировании", но это очень кастомное решение, к сожалению

Дмитрий, Владимир, завёл идею по Вашим пожеланиям.

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

В версии 3.Х в обычных разделах (не в построителе запросов и разделах «Планирование» и «OLAP») все представления в реестре при их выборе просто включали тот или иной фильтр в sq, по сути это быстрый преднастроенный и работающий от них независимо аналог дерева динамических групп.

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