Вопрос

Как программно обновить поля на странице после обновления записи в базе данных (с помощью ESQ)?

Ответ

Программно обновить значение поля можно при помощи метода this.set(‘ColumnName’, ‘NewValue’). Рекомендуем обновлять поле в функции обратного вызова с предварительной проверкой на удачность обновления в базе данных.

Пример кода:

someMethod: function(){
    var value = this.get('UsrRequired');
    var updateQuery = Ext.create("Terrasoft.UpdateQuery", {
        rootSchemaName: "UsrRuleTest"});
    var filters = updateQuery.filters;
    filters.addItem(this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "Id", 'IdValue’));
    updateQuery.setParameterValue("UsrSomething", value, this.Terrasoft.DataValueType.TEXT);
    updateQuery.execute(function(result){
        if(result.success)
            this.set('UsrTest0', value);
    }, this);
}

 

Нравится

Поделиться

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

Добрый день!  попробовал по вашему коду сделать у себя выходит ошибка( ругается на  функцию set 

stack: TypeError: this.set is not a function

    at https://8-crm-dev.kmf.kz/0/configuration/5e6b668831cc1cda80b5afd046dae2…-

вот мой код

                     updateQuery.execute(

                     

                          function(result) {

                          if(result.success) {this.set("UsrOwner",UsrOwnerVisa);}

                              }

                         ) 

                          

                          ; }, this); 

См. аналогичное поведение тут.

спасибо , разобрался

Показать все комментарии
Публикация

Вопрос

Как у группы Radiobutton указать заголовок?

Ответ

К сожалению, у группы radiobutton нельзя указать заголовок.

 Но как вариант можно добавить лейбл перед группой:

{
    "operation": "insert",
    "parentName": "Header",
    "name": "Label1",
    "propertyName": "items",
    "values": {
        "itemType": Terrasoft.ViewItemType.LABEL,
        "items": [],
        "layout": {"column": 0"row": 4"colSpan": 12},
        "caption": "Производитель"
    }
},
{
    "operation": "insert",
    "parentName": "Header",
    "name": "UsrKindCattle",
    "propertyName": "items",
    "values": {
        "itemType": Terrasoft.ViewItemType.RADIO_GROUP,
        "layout": {"column": 0"row": 5"colSpan": 12},
        "items": []
    }
},

 

Выглядеть это будет следующим образом:

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

P.S. Дополнительно можете посмотреть код генератора представления страниц (схема ViewGeneratorV2). Там есть метод generateStandardItem в котором описаны элементы и видно методы которые генерируют их представления (View).

Нравится

Поделиться

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

Симптомы

При создании детали через мастер деталей, в момент регистриции страницы возникает ошибка: message: Uncaught Terrasoft.ArgumentNullOrEmptyException: Несуществующий или пустой аргумент с именем; argumentName: query

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

Причина

Слишком длинные заголовки объектов на основе которых создаются детали:

"Документальное сопровождение Продажи в Продукте", "История изменения документального сопровождения".

Решение

Сменить заголовок объектв на более короткий (в пределах 30 символов) и опубликовать объект.

Нравится

Поделиться

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

Задача

Добавление ссылки на свою страницу на панели разделов

Решение

1) Cоздать новый раздел.

2) В Схеме страницы нового раздела (UsrNewSection) добавить метод в секцию методов:

methods: {
init: function() {
      window.location.replace("http://stackoverflow.com");
   }
},

 

Нравится

Поделиться

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

Подскажите, вы хотите чтоб ссылка была так реализована?



Но если вы добавляете ее как описано выше, то она не появляется?

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

Вопрос

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

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

Ответ

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



Например:

mail.ru: 

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



Яндекс:

Чтобы в результатах поиска Яндекс рядом с названием вашего сайта отображался фавикон, измените файл favicon.ico в корневой директории сайта и дождитесь, когда робот проиндексирует выполненные изменения. Если в коде страницы фавикон прописан несколько раз, то робот проиндексирует тот, который указан первым. Плюс это может "подхватываться" из Яндекс.Директ, если вы разместили данные о своей компании там и добавили логотип.



Gmail:

В Gmail все срабатывает так же, как и в mail.ru, за одним исключением: логотип может "подтягиваться" из поиска результатов выдачи вашего сайта. А так настраиваете в своем профиле/группе Google +. 

Нравится

Поделиться

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

Вопрос

Нам необходимо в некотором роде дублировать функционал progress bar из раздела Лиды. Какими характеристиками должен обладать lookup в разделе помимо наличия колонки с номером, чтобы при отображении в реестре(List View) к нему применился прогресс бар модуль?

Интересует применение данного функционала для объекта Аккаунт, по аналогии с объектом Лид и полем Lead stage.

Ответ

Для реализации функционала progress bar на странице списка необходимо:

1) Чтобы поле справочного типа, которое Вы ходите выводить как progress bar, обладало доп. колонкой UsrStageNumber, которая собственно и будет определять стадию прогресса.

2) Реализовать необходимые методы и зависимости по аналогии с LeadSectionV2 для AccountSectionV2.

3) Если стадий у вас не 5, то написать свой элемент управления, с другим количеством стадий по аналогии с BaseProgressBarModule и использовать его в AccountSectionV2.

Создан справочник UsrAccStage с колонкой UsrStageNumber, и выведен в одноименную колонку в Account.

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

Код замещающей схемы страницы секции контрагента:

define("AccountSectionV2", ["AccountSectionV2Resources", "terrasoft", "ControlGridModule", "BaseProgressBarModule",
        "EntityHelper", "css!BaseProgressBarModule"], function(resources, Terrasoft) {
        return {
            entitySchemaName: "Account",
            diff: /**SCHEMA_DIFF*/[
                {
                    "operation": "remove",
                    "name": "DataGrid"
                },
                {
                    "operation": "insert",
                    "name": "DataGrid",
                    "parentName": "DataGridContainer",
                    "propertyName": "items",
                    "values": {
                        "itemType": Terrasoft.ViewItemType.GRID,
                        "type": {"bindTo": "GridType"},
                        "listedZebra": true,
                        "activeRow": {"bindTo": "ActiveRow"},
                        "collection": {"bindTo": "GridData"},
                        "isEmpty": {"bindTo": "IsGridEmpty"},
                        "isLoading": {"bindTo": "IsGridLoading"},
                        "multiSelect": {"bindTo": "MultiSelect"},
                        "primaryColumnName": "Id",
                        "selectedRows": {"bindTo": "SelectedRows"},
                        "sortColumn": {"bindTo": "sortColumn"},
                        "sortColumnDirection": {"bindTo": "GridSortDirection"},
                        "sortColumnIndex": {"bindTo": "SortColumnIndex"},
                        "selectRow": {"bindTo": "rowSelected"},
                        "linkClick": {"bindTo": "linkClicked"},
                        "needLoadData": {"bindTo": "needLoadData"},
                        "activeRowAction": {"bindTo": "onActiveRowAction"},
                        "activeRowActions": [],
                        "className": "Terrasoft.ControlGrid",
                        "controlColumnName": "UsrAccStage",
                        "applyControlConfig": {"bindTo": "applyControlConfig"},
                        "getEmptyMessageConfig": {"bindTo": "prepareEmptyGridMessageConfig"}
                    }
                }
            ]/**SCHEMA_DIFF*/,
            methods: {
                getGridDataColumns: function() {
                    var gridDataColumns = this.callParent(arguments);
                    gridDataColumns.UsrAccStage = gridDataColumns.UsrAccStage || {path: "UsrAccStage"};
                    gridDataColumns["UsrAccStage.UsrStageNumber"] =
                        gridDataColumns["UsrAccStage.UsrStageNumber"] || {path: "UsrAccStage.UsrStageNumber"};
                    return gridDataColumns;
                },
                applyControlConfig: function(control) {
                    control.config = {
                        className: "Terrasoft.BaseProgressBar",
                        value: {
                            "bindTo": "UsrAccStage",
                            "bindConfig": {"converter": "getUsrAccStageValue"}
                        },
                        width: "158px"
                    };
                },
                getUsrAccStage: function(id) {
                    var activeRow;
                    if (id) {
                        var gridData = this.getGridData();
                        activeRow = gridData.get(id);
                    } else {
                        activeRow = this.getActiveRow();
                    }
                    if (!activeRow) {
                        return null;
                    }
                    var accStage = activeRow.get("UsrAccStage");
                    return (accStage) ? accStage.value : null;
                },
                addColumnLink: function(item) {
                    item.getUsrAccStageValue = function(accStage) {
                        if (!accStage) {
                            return null;
                        } else {
                            return {
                                value: this.get("UsrAccStage.UsrStageNumber"),
                                displayValue: accStage.displayValue
                            };
                        }
                    };
                    return this.callParent(arguments);
                }
            }
        };
    }
);

Как результат для записей, где стадия заполнена, в соответствующей колонке отображается progress bar:

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

Нравится

Поделиться

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

Добрый день! Подскажите, пожалуйста, как сделать так, чтобы цвет тянулся с цвета стадии в кейсе?

Добрый день, Константин

 

Можно воспользоваться решением из marketplace, цвет будет использоваться с цвета стадии в кейсе - https://marketplace.creatio.com/app/case-stage-color-coding-creatio

 

С уважением, 

Игорь

Ihor Skohariev,

Спасибо, Игорь! Но именно интересует подкраска progress bar. Может есть какой-то вариант для этого? Или может можно как-то в самом файле элемента progress bar прописать коды нужных цветов? Подскажите, пожалуйста.

Сам цвет прогресс бара реализован в стиле модуля BaseProgressBarModule, конкретно в этом месте:

.ts-progress-bar-item-active {
	background: #f8c065;
}

Вы можете переписать этот элемент со своим необходимым цветом. 

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

Дима Вовченко,

 

Благодарю!

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

Константин,

 

Добрый вечер,

 

В коде Вам необходимо:

 

1) Удалить remove грида:

{
                    "operation": "remove",
                    "name": "DataGrid"
                },

2) "operation": "insert" заменить на "operation": "merge"

3) удалить из DataGrid свойство "activeRowActions": [],

 

В итоге код в diff должен стать таким:

{
                    "operation": "merge",
                    "name": "DataGrid",
                    "parentName": "DataGridContainer",
                    "propertyName": "items",
                    "values": {
                        "itemType": Terrasoft.ViewItemType.GRID,
                        "type": {"bindTo": "GridType"},
                        "listedZebra": true,
                        "activeRow": {"bindTo": "ActiveRow"},
                        "collection": {"bindTo": "GridData"},
                        "isEmpty": {"bindTo": "IsGridEmpty"},
                        "isLoading": {"bindTo": "IsGridLoading"},
                        "multiSelect": {"bindTo": "MultiSelect"},
                        "primaryColumnName": "Id",
                        "selectedRows": {"bindTo": "SelectedRows"},
                        "sortColumn": {"bindTo": "sortColumn"},
                        "sortColumnDirection": {"bindTo": "GridSortDirection"},
                        "sortColumnIndex": {"bindTo": "SortColumnIndex"},
                        "selectRow": {"bindTo": "rowSelected"},
                        "linkClick": {"bindTo": "linkClicked"},
                        "needLoadData": {"bindTo": "needLoadData"},
                        "activeRowAction": {"bindTo": "onActiveRowAction"},
                        "className": "Terrasoft.ControlGrid",
                        "controlColumnName": "Status",
                        "applyControlConfig": {"bindTo": "applyControlConfig"},
                        "getEmptyMessageConfig": {"bindTo": "prepareEmptyGridMessageConfig"}
                    }
                }

После обновления страницы все будет работать.

Oleg Drobina,

Олег, спасибо вам большое за помощь!

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

Вопрос

Добавил в мастере страниц поле с типом ДАТА. Как из него сделать ДАТА/ВРЕМЯ?

Ответ

Ниже предоставлен алгоритм:

- поменять тип данных колонки на «Дата/время» в объекте раздела (например, «Contact») в конфигурации приложения (рис. 1). Затем опубликуйте объект (рис. 2).

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

Рис. 1

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

Рис. 2

- создать колонку с типом «Дата» (например, с названием «UsrDate2016») через мастер раздела или через в объекте через раздел «Конфигурации» (рис. 3);

 

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

Рис. 3

- в мастер раздела разместить колонку на страницу редактирования (рис. 4);

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

Рис. 4

- затем перейти в конфигурацию («Управление конфигурацией») приложения и открыть замещающую схему страницы редактирования например, «ContactPageV2» (рис. 5);

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

Рис. 5

- в секции diff найти код с настройками колонки «UsrDate2016» и вставить под «values» следующую строку:

"contentType": this.Terrasoft.ContentType.DATE_TIME,

Наглядный скриншот прикрепил ниже (рис. 6). Пожалуйста, соблюдайте, чтобы количество открывающихся и закрывающихся фигурных скобок.

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

Рис. 6

- Затем нужно сохранить схему;

- Очистить кэш браузера.

В результате на страницу будет отображаться колонка с типом «Дата/время» (рис. 7).

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

Рис. 7

Нравится

Поделиться

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

В 7.16.4 добавили смену между «Дата/время», «Дата» и «Время» пользовательскими средствами в мастере:

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

Вопрос

Как корректно удалить письма пользователя из bpm при отвязке ящика от пользовательского аккаунта? Причина удаления — был синхронизирован не тот набор папок, который необходим. 

Ответ

При удалении почтового ящика из bpm'online не нужно удалять загруженные письма. Если такая потребность есть, то можно выполнить удаление. Но при этом будут удалена вся переписка по обращениям, которая касается данного ящика и будут удалены письма из истории контактов, контрагентов и т. д.

 

Нравится

Поделиться

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

Вопрос:

Как при построении бизнес процесса реализовать следующую задачу: необходимо создать активность через 5 дней от указанной даты в карточке Проекта (это поле мы добавили с отображением только даты), время начала Активности должно быть текущее. Элемент создания активности используем "Открыть страницу редактирования", в поле "Начало" используем формулу: [#Читать дату принятия документов налоговой.Первый элемент результирующей коллекции.Дата принятия документов налоговой#].AddDays(5). +5 дней система добавляет, но текущее время система не подставляет, подскажите как это можно реализовать? По умолчанию время выполнения этой активности 30 минут. Версия 7.11.2

Ответ:

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

- создать параметр прцоесса типа целое, например, Seconds

- установить в этот параметр с помощью элемента Формула знаечние : ([#Читать данные 1.Первый элемент результирующей коллекции.Крайний срок#].AddDays(5)-[#Системная переменная.Текущее значение даты и времени#]).TotalSeconds   //где крайний срок - Ваше поле даты

- перед элементом Добавить данныеустановить таймер, который ожидает Seconds секунд

- в элементе Добавить данные аткивности в поле Начало указывать текущие дату\время (на момент выполнения элемента это будет актуальная дата), в завершение - текущая дата\время + 30минут.

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

Нравится

Поделиться

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

Вопрос:

Как добавить поля на преднастроенную страницу?

Ответ:

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



Более подробно процесс работы с преднастроенной страницой описан на Академии: https://academy.terrasoft.ru/documents/technic-bpms/7-12/element-proces…

Нравится

Поделиться

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