Вопрос

В таблице SysModule есть такие поля:

- HasAnalytics

- HasAction

- HasRecent

- HelpContextId

Уточните, пожалуйста, для чего они используются и в каких случаях содержат значения равные true или просто заполнены (для не булевого  поля [HelpContextId])?

и для SysModuleEdit

  • UseModuleDetails 
  • SearchRowSchemaUId 

Ответ

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

 

Короткое описание:

- HasAnalytics - содержит аналитику

- HasAction - содержит процессы

- HasRecent - содержит группу Недавние

- HelpContextId - идентификатор контекстной справки

 

Хотелось бы отметить, что «SysModule» является системной таблицей и не рекомендуем ее использовать для своих целей и завязываться на базовых колонках, так как в дальнейшем может поменяться структура БД.

Также По порядку:

  1. SearchRowSchemaUId – задается Uid схемы сущности (см. «SysSchema»), которая используется при глобальном поиске (например, «OpportunitySearchRowSchema»). Т.е.  после ввода в командной строке схема, которая отображает информацию одной записи объекта (наглядный скриншот)

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

    2. UseModuleDetails – используется только для 5.х разделов. Выдержка из документации 5.х версий - [Добавить в карточку детали раздела] — установите признак, если карточка записи должна содержать все детали раздела, например, как в карточке контрагента, контакта и т.д. При установке признака, на деталь [Детали] карточки будут добавлены все детали, зарегистрированные для данного раздела.

Нравится

Поделиться

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

Задача

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

Решение

Можно отключить отображение определенных страниц редактирования с помощью метода фильтрации страниц редактирования. В этом случае страница редактирования останется в системе, но пользователи в разделе ее видеть не будут.  Пример такого метода можно посмотреть в разделе [Активности], страница «ActivitySectionV2». Метод называется initEditPages.

Пример кода:

/**
* Инициализирует коллекцию страниц редактирования сущности.
* Удаляет из коллекции страницы для типа Email и Звонок
* @inheritdoc Terrasoft.BaseSection#initEditPages
* @override
*/
initEditPages: function() {
    var enabledEditPages = new this.Terrasoft.Collection();
    this.callParent(arguments);
    var editPages = this.get("EditPages");
    this.Terrasoft.each(editPages.getItems(), function(item) {
        if (item.get("Id") !== ConfigurationConstants.Activity.Type.Email &&
            item.get("Id") !== ConfigurationConstants.Activity.Type.Call) {
                enabledEditPages.add(item);
        }
    });
    this.set("EnabledEditPages", enabledEditPages);
},

Необходимые условия

Права администратора

Нравится

Поделиться

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

Вопрос

Можно ли разместить кнопку рядом с названием группы полей (как на рисунке)?

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

Ответ

Кнопка добавляется аналогично как и для детали (в diff указываете propertyName -"tools",а itemType, указываете, что это кнопка (itemTypethis.Terrasoft.ViewItemType.BUTTON,)

Пример реализации можете посмотреть в схеме «BaseGridDetailV2» (пакет «NUI»).

Также наглядный пример (на примере группы полей "Результат").

Скриншот:

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

Листинг:

{
   "operation": "insert",
   "parentName": " ResultControlGroup",
   "name": "TestButtom",
   "propertyName": "tools",
   "values": { 
            itemType: this.Terrasoft.ViewItemType.BUTTON,
            caption: "111",
            click: {bindTo: "zzz"},
            visible: true,
            }
},

или

{
   "operation": "insert",
   "parentName": "GeneralInfoTab",
   "name": "ResultControlGroup",
   "propertyName": "items",
   "values": {
      "itemType": Terrasoft.ViewItemType.CONTROL_GROUP,
      "caption": {"bindTo": "Resources.Strings.ResultControlGroupCaption"},
      "items": [],
      "tools": [
         {
            itemType: this.Terrasoft.ViewItemType.BUTTON,
            caption: "111",
            click: {bindTo: "zzz"},
            visible: true,
            tag: "onUnsubscribeChannelClick"
         }
      ]
   }
},

 

Нравится

Поделиться

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

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

Описание проблемы тут:

https://community.terrasoft.ru/ideas/dostupnost-knopok-na-gruppe-poley

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

Симптомы

  1. Определено несколько одинаковых позиций по распределению прав по операциям.
  2. Текущий пользователь не имеет прав доступа на объект "MobileData".

Причина

Не розданы права доступа на объекты мобильного приложения и не актуализирована организационная структура.

Решение

1. Раздать права доступа на объекты мобильного приложения;

2. Актуализировать организационную структуру.

Скриншот для 7.5:

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

Скриншот для 7.4:

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

Необходимые условия и возможные ограничения

Права администратора.

Нравится

Поделиться

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

Задача

Необходимо настроить сортировку электронной почты, загружаемой в bpm`online. Клиент привязал в виде писем к почте SMS сообщения и переписку в Skype.  В зависимости от темы, почта должна попадаит в одну из трех категорий - SMS, Email, Skype. 

Решение

  1. В разделе [Активности] с помощью мастера разделов добавить поле, в котором будет храниться тип email-сообщения(Почта, SMS, Skype).
  2. Создайте бизнес процесс и настройте его автоматический запуск при поступлении в bpm’online нового письма, который, в зависимости от темы письма, будет заполнять значение поля «Тип Email сообщения».
  3. Для того, чтобы сообщения электронной почты отобразились в разделе [Активности], необходимо отключить их фильтрацию. Чтобы это сделать, необходимо:

a. В разделе [Управление конфигурацией] создать замещающий клиентский модуль  «ActivitySectionV2» («Раздел Активности»);

b. В поле «Исходный код» добавить код:

define("ActivitySectionV2", ["ActivitySectionV2Resources"], function (resources) {
    return {
        entitySchemaName: "Activity",
        methods: {
            getFilters: function() {
                var filters = this.callParent(arguments);
                filters.removeByKey("NotEmailFilter");
                return filters;
            }
        },
        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
    }
});

c.       Сохранить замещающую страницу;

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

4. Теперь Вы можете настроить динамические группы в разделе [Активности] для фильтрации сообщений. Подробнее о динамических группах можно узнать в разделе Работа с группами.

Нравится

Поделиться

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

Вопрос

Подскажите как организовать в BPMOnline получение доступа к ресурсам, используя протокол OAuth2?

Ответ

Алгоритм подключения к внешнему ресурсу Livetex представлен в виде диаграммы (скриншот во вложении). Если же LIVETEX предоставляет JS API для работы с ним, концептуально, из диаграммы исключается ServerPage и сервисы. Пример реализации кода можно найти в конфигурации – схема SocialAccountAuthModule.

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

Нравится

Поделиться

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

Вопрос

Как добавить дополнительную фильтрацию по пользовательскому полю на деталь? Например, на детали "Документы" в продаже не видно продажу, которую указали в документе в пользовательском поле. Как это исправить?

Ответ

Вот пример фильтра для детали "Документы" на странице раздела "Продажи" по колонке Opportunity и созданной вручную колонке UsrOpop.

Код из секции details:

"Documentd03ac1374493": {
   "schemaName": "DocumentDetailV2",
   "entitySchemaName": "Document",
   "filterMethod": "relationshipDetailFilter",
   "filter": {
      "detailColumn": "Opportunity",
      "masterColumn": "Id"
   }
}

Код метода фильтрации relationshipDetailFilter():

relationshipDetailFilter: function(){
    var recordId = this.get("Id");
    var filterGroup = new this.Terrasoft.createFilterGroup();
    filterGroup.logicalOperation = this.Terrasoft.LogicalOperatorType.OR;
    filterGroup.add("DocumentAFilter", this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "Opportunity", recordId));
    filterGroup.add("DocumentBFilter", this.Terrasoft.createColumnFilterWithParameter(
        this.Terrasoft.ComparisonType.EQUAL, "UsrOpop", recordId));
    return filterGroup;
}

 

Нравится

Поделиться

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

Вопрос

Как изменить цвет ячеек грида в разделе?

Ответ

1) Создать замещающую схему раздела

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

define("ActivitySectionV2", ["GridUtilitiesV2"],
function() {
    return {
        entitySchemaName: "Activity",
        contextHelpId: "1001",
        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,
        messages: {},
        methods: {
            //подсвечивать активность
            prepareResponseCollection: function(collection) {
                this.callParent(arguments);
                var colour = "";
                collection.each(function(item) {
                    var type = item.get("UsrType");
                    if (!this.Ext.isEmpty(type)) {
                        if (type.value === "1192a8c5-7d3d-4c8a-b3ce-8e2f320d64d7") {
                            colour = "#33FF33";//зеленый - FOOTY PARTY
                        }
                        if (type.value === "b8e248b6-e37a-4b21-8377-0c5c6d8bc196") {
                            colour = "#ff33cc"; //розовый - СЧ (Baby)
                        }
                        if (type.value === "20834765-ea57-41d3-8ff9-24e69a70162b") {
                            colour = "#0066ff"; //голубой - СЧ (Boy)
                        }
                        item.customStyle = {
                            background: colour
                        };
                        item.set("Background", colour);
                    }
                }, this);
            },
 
            //выборка полей в расписание
            getGridDataColumns: function() {
                var baseGridDataColumns = this.callParent(arguments);
                var gridDataColumns = {
                    "Account": {path: "Account"},
                    "StartDate": {path: "StartDate"},
                    "DueDate": {path: "DueDate"},
                    "ShowInScheduler": {path: "ShowInScheduler"},
                    "Status": {path: "Status"},
                    "Status.Finish": {path: "Status.Finish"},
                    "UsrType": {path: "UsrType"},
                    "ProcessElementId": {
                        path: "ProcessElementId",
                        dataValueType: 0
                    }
                };
                return Ext.apply(baseGridDataColumns, gridDataColumns);
            }
        }
    };
});

 

Нравится

Поделиться

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

Задача

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

Текст ошибки: Обнаружены системные схемы для раздела с именем Smracalendar1. Продолжение невозможно.

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

Решение

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

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

Итого, при создании раздела создаются такие объекты: 

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

Вы оставили у себя только такие объекты:

Изображение удалено.Варианты решения - добавить вручную удаленные объекты  или создать раздел заново и перенести в него данные.

Нравится

Поделиться

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

Вопрос

Версия 7.4.1, в БП использую элемент Add data.

Нужно в поле с типом дата/время установить значение = текущая дата, время 9-00

что то вроде DateTime(DateTime.Now.Year, DateTime.Now.Month,DateTime.Now.Date, 9, 0, 0) не срабатывает...

Ответ

Для реализации данного запроса, необходимо построить БП (состоит из элементов "Чтение данных", "Формула" и "Изменение данных") и в элементе "Формула" указать следующее:

DateTime.Today + new TimeSpan(9, 0, 0);

 

Нравится

Поделиться

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

А если надо получить 21-е число следующего месяца?

У меня вышло так:

[#Параметр 1#].AddDays(-[#Параметр 1#].Day + 21).AddMonths(1)

Если у Вас тоже упомянутая старая версия 7.4.1 и в ней формулами никак, всегда можно использовать блок-скрипт с кодом, как в этих примерах.

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