Время создания
Фильтры

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

Нравится

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

Добрый день!

Ваша задача может быть достигнута достигнута только путем разработки.

Пример такой реализации можно найти у нас на community.
 

Bogdan,
Привет, речь о детали с реестром, а не странице редактирования

по итогу решили, переопределив addColumnLink  и linkClicked, завязав собственную лоигку на них
Пример реализации подсмотрели на детали файлы и ссылки

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

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

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

 

Нравится

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

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

В данной статье описано отключение/замещение обработчика событий:

https://community.creatio.com/questions/disable-core-javascript-method-contractpagev2?_gl=1*1d49jeg*_gcl_au*MTYxNTAzNjkzMi4xNjkyOTU4NzI3

Отключение родительского обработчика в конце обсуждения по ссылке ниже:

https://community.terrasoft.ua/questions/raznica-vo-vremeni-v-aktivnost…

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

Добрий день. 

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

Умова:
Якщо   UsrBoolIsRppa має значення true і  UsrLkpStatus має значення або a61c3050-373e-472c-aac4-26f9a8c70e51, або fa7aeed0-6ae4-465a-b3ee-baf2288a7170.

Робити колонку UsrTextSolutionDescription  обов'язковою для заповнення. 
 

Terrasoft.sdk.Model.addBusinessRule("UsrAppNewTasks", {
    ruleType: Terrasoft.RuleTypes.Visibility,
    conditionalColumns: [
        {
            name: "UsrBoolIsRppa",
            value: true
        },
        {
            name: "UsrLkpStatus",
            value: ["a61c3050-373e-472c-aac4-26f9a8c70e51", "fa7aeed0-6ae4-465a-b3ee-baf2288a7170"]
        }
    ],
    triggeredByColumns: ["UsrBoolIsRppa", "UsrLkpStatus"],
    dependentColumnNames: ["UsrTextSolutionDescription"]
});

Нравится

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

Доброго дня!
Не впевнений, що в новому інтерфейсі мобільного застосунку вдасться створити саме таке правило, в будь-якому випадку, ось невелика інструкція по їх створенню:
На даний момент відмінність між правилами на карточці і моделі незначні. А саме відмінність полягає в тому, що у карточки є Visibility rules, які можуть показувати або ховати елементи карточки. Тому розглянемо саме цей приклад, спробуємо ховати якусь колонку за умови.

1) Налаштовуємо правила у вебі.

2) Назви контролів (“Code” та “Element code”) треба давати згідно назв колонок. Тобто, якщо колонка UsrText, то і контрол має так називатися (бо в вебі назви генеряться автоматом по замовчуванню).

3) Налаштовуємо правило, яке ховає поле UsrText.

4) Додаємо новий (або існуючий розділ) в майстрі мобільного додатку і налаштовуємо карточку належним чином.

5) Переходимо в Конфігурацію (WorkspaceExplorer) і шукаємо схему налаштування карточки (формат назви схеми: Mobile[Назва об'єкта]RecordPageSettings[Назва робочого місця]):

6) Відкриваємо цю схему. Відкриваємо її метадані (Actions → Open metadata) і дивимося її метадані (секцію Metadata (Read-Only)) і копіюємо її Uid, PackageUid та CreatedInPackageUId.

7) Експортуємо налаштовані в п.3 правила: аддон [Назва об'єкта]_FormPageBusinessRule.

8) Ці метадані треба трохи адаптувати під мобільну платформу. Відкриваємо отриманий файл метаданих і вносимо наступні правки:

а) Змінюємо Uid. Його можна або згенерувати, або просто змінити декілька цифр\символів в поточному значенні. Старий UId треба змінити по всій схемі (мінімум 2).

б) Даємо нову назву Addon-а у Name та A2. Формат буде такий: [Назва об'єкта]RecordPageSettingsBusinessRule (наприклад, RulesRecordPageSettingsBusinessRule).

в) Замінюємо всі “EntitySchemaManager” на “ClientUnitSchemaManager”, якщо такі є.

г) В B6 прописуємо PackageUId з п.6.

д) В AD1 та TargetSchemaUId прописуємо UId з п.6.

е) В A5 прописуємо CreatedInPackageUId з п.6.

є) Замінюємо всі згенеровані в вебі назви контролів на відповідні імена колонок. Шукати їх можна приблизно за такими масками: LookupAttribute_, Input_, ComboBox_.

Наприклад, замість LookupAttribute_6wy705z має бути UsrContactType.

ж) Зберігаємо зміни.

9) Імпортувати цю змінену схему. Обираємо в Конфігурації потрібний пакет, натискаємо “Add” і в списку обираємо пункт “Import“ (на даний момент він останній в списку).

В результаті в пакеті, в якому цей розділ додавався в майстрі мобільного додатка, має з'явитися Addon-схема з правилами, які прив'язані до схеми налаштування карточки в мобільному додатку.

10) Після цього треба просинхронізувати мобільний додаток з Creatio і перевірити роботу правила.

 

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

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

Вытащил json следующего фильтра из бд

{
  "className": "Terrasoft.FilterGroup",
  "items": {
    "572334d2-7d75-43e0-b60f-c2cdfca071ea": {
      "className": "Terrasoft.InFilter",
      "filterType": 4,
      "comparisonType": 3,
      "isEnabled": true,
      "trimDateTimeParameterToDate": false,
      "leftExpression": {
        "className": "Terrasoft.ColumnExpression",
        "expressionType": 0,
        "columnPath": "TestColumn"
      },
      "isAggregative": false,
      "key": "572334d2-7d75-43e0-b60f-c2cdfca071ea",
      "dataValueType": 10,
      "leftExpressionCaption": "TestColumn",
      "referenceSchemaName": "TestColumn",
      "rightExpressions": [
        {
          "className": "Terrasoft.ParameterExpression",
          "expressionType": 2,
          "parameter": {
            "className": "Terrasoft.Parameter",
            "dataValueType": 10,
            "value": {
              "Name": "Да",
              "Id": "3631ec86-e4cd-490c-9614-cea3bbf71187",
              "value": "3631ec86-e4cd-490c-9614-cea3bbf71187",
              "displayValue": "Да"
            }
          }
        }
      ]
    }
  },
  "logicalOperation": 0,
  "isEnabled": true,
  "filterType": 6,
  "rootSchemaName": "Contact",
  "key": "FolderFilters"
}

Далее с помощью этого метода пытаюсь создать esq фильтр
 

public static EntitySchemaQuery GetEsqByFilterData(UserConnection userConnection, string filterData)
        {
            if (userConnection is null) { throw new ArgumentNullException(nameof(userConnection)); }
 
            if (filterData is null) { throw new ArgumentNullException(nameof(filterData)); }
 
            var filters = Terrasoft.Common.ServiceStackTextHelper.Deserialize<Terrasoft.Nui.ServiceModel.DataContract.Filters>(filterData);
 
            string rootSchemaName = filters.RootSchemaName;
            if (string.IsNullOrEmpty(rootSchemaName))
            {
                return null;
            }
            IEntitySchemaQueryFilterItem esqFilters = filters.BuildEsqFilter(rootSchemaName, userConnection);
            var queryFilterCollection = esqFilters as EntitySchemaQueryFilterCollection;
            var esq = new EntitySchemaQuery(userConnection.EntitySchemaManager, rootSchemaName);
 
            if (queryFilterCollection != null)
            {
                if (queryFilterCollection.Count == 0)
                {
                    return esq;
                }
                esq.Filters.LogicalOperation = queryFilterCollection.LogicalOperation;
                esq.Filters.IsNot = queryFilterCollection.IsNot;
                esq.Filters.IsEnabled = queryFilterCollection.IsEnabled;
                foreach (IEntitySchemaQueryFilterItem filter in queryFilterCollection)
                {
                    esq.Filters.Add(filter);
                }
            }
            else
            {
                esq.Filters.Add(esqFilters);
            }
 
            return esq;
        }

При запуске получаю ошибку Expected hex 0x in '{0}'.
Проблему нашёл, она заключается в том что в json "value" является объектом, а не guid. Если "value": "3631ec86-e4cd-490c-9614-cea3bbf71187", то метод отрабатывает корректно. 

Единственный вариант исправления этой проблемы пока только замена с помощью регулярной строки value объект на value guid. Есть ли другие варианты решения данной проблемы.

Нравится

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

Добрый день,

 

В базовой реализации уже есть логика, которая вытаскивает из группы (папки) фильтры. Она находится в CommonUtilities, нужно смотреть в метод GetFolderEsqFilters, он в конце возвращает esqFilters (типа IEntitySchemaQueryFilterItem). Думаю это то что Вам нужно.

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

В EntityEventListener в методі OnSaving змінили значення поля:

entity.SetColumnValue("Count", 5);        

Запис зберігся успішно, але процес який був зав'язаний на поле Count - проігнорив.

Питання: Як змінити поле так, щоб процес запустився

Нравится

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

Доброго дня, Віталій!

Для вирішення вашого питання можу запропонувати такі варіанти:

​​​​​​​1. Побудуйте ваш процес на об’єкті (виведіть скрипт-таску):

    1) Advanced settings -> Needed object -> Events -> Saving -> Before record saved

    2) Advanced settings -> Needed object -> Open process -> виведіть у відкритому вікні Event sub-process -> у вікно додайте Message та впишіть інформацію з “Before record saved” -> додайте Script task та у код запишіть Entity.SetColumnValue("Count", 5);     return true;

2. Якщо перший варіант не підходить, то підкажіть, будь ласка, по якому об’єкту ви робили логіку? По кастомному чи базовому? У випадку базового – напишіть який саме об’єкт використовували.

​​​​​​​З повагою, Ангеліна

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