Добрый день!

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

Вот - один из вариантов кода, который я пытался использовать:

Terrasoft.sdk.Model.addBusinessRule("UsrZakupka", {
    name: "UsrAutoSetUsrDepartByCreatedBy",
    ruleType: Terrasoft.RuleTypes.Custom,
    triggeredByColumns: ["CreatedBy"],
    events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged],
    executeFn: function(record, rule, column, customData, callbackConfig, event) {
        var department = record.get("CreatedBy.Department");
            record.set("UsrDepart", department, true);
        Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);
    }
});

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

Нравится

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

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

при загрузке лукапного поля все его поля автоматом не подтягиваются. Только Id и его дисплейное поле (Name). Поэтому, чтобы получить какое-то другое поле, нужно сделать отдельную загрузку по лукапному значению. Как вариант, можно использовать утилитный метод Terrasoft.DataUtils.loadRecordById или Terrasoft.DataUtils.loadRecords:

Terrasoft.DataUtils.loadRecordById({
   recordId: recordId,
   modelName: modelName,
   columns: [],
   expandLookupColumns: false,
   callback: function(loadedRecord) {
      // Здесь получаешь значение департамента, устанавливаешь его в поле UsrDepart и вызываешь success правила.
      Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);
   },
   scope: this
});

Алёна Доля,

Спасибо за пояснение.

Правило вроде отрабатывает, но как-то через раз, и только на одном значении...

Такой код:

Terrasoft.sdk.Model.addBusinessRule("Zakupka", {

    name: "AutoSetDepartByOrder",

    ruleType: Terrasoft.RuleTypes.Custom,

    triggeredByColumns: ["Order"],

    events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Load],

    executeFn: function (record, rule, column, customData, callbackConfig, event) {

        var order = record.get("Order");

        var orderId = order ? order.get("Id") : null;

        if (orderId) {

            Terrasoft.DataUtils.loadRecordById({

                recordId: orderId,

                modelName: "Order",

                columns: ["Podrazdel","Account"],

                expandLookupColumns: false,

                callback: function (loadedRecord) {

                    var department = loadedRecord.get("Podrazdel");

                    var departmentId = department ? department.get("Id") : null;

                    record.set("Depart", departmentId, true);

                    var account = loadedRecord.get("Account");

                    var accountId = account ? account.get("Id") : null;

                    record.set("Account", accountId, true);

                    Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);

                },

                scope: this

            });

        }

    }

});

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

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

Пример

На странице раздела есть вкладка под названием "Карточка" Code (ProjectMap)

в "Карточка" есть 5 групп полей .

Нужно чтобы  (Если)

поле "Название проекта" (Поле не находится в той же вкладке) НЕ Заполнено 

ТО

Делать поле редактируемым 

и тут уже не поле, а группы полей которые находятся во вкладке "Карточка"

Пробывал следующим образом : Тип "Поле" заменяю на "Атрибут" тут пишу Code(ProjectMap) (Система определяет его ) после сохраняю обнавляю, но б.правило не отрабатывает . 

Для теста попробывал сделать редактируемым какое-то НЕ Атрибут а обычное Поле - всё ок , всё робит .

 

Нравится

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

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

Yanina Ryssjanova,

 

Добрый день. Полей много - всего  45  ))) 

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

Tigran Gevorgyan пишет:

Yanina Ryssjanova,

Добрый день. Полей много - всего  45  ))) 

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

Сделайте 2 вкладки. На одной одно состояние (редактируемое), на другое - другое. Прячьте ненужную вкладку с помощью правил

Владимир Соколов,

 

Да, как вариант подойдёт , но в этом случае тоже потребуется для отображении значений полей в 2 вкладках 45 правил . Решил созданием 45 правил , пока не решут вопрос с разрабом. Всем спасибо .

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

Всем привет!

Добавила в бизнес правилах такие условия редактирования поля: 

При наступании на активный рядок в консоли появляется ошибка "Product.UsrBasicPriceExist" была удалена или переименована. Но поле в Продуктах(UsrBasicPriceExist) точно существует. Кто-то пробовал делать что-то подобное в бизнесс правилах? Возможно лучше переписать условие кодом?

Нравится

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

Анастасия, здравствуйте.

Для исправления необходимо включить фичу LoadLookupColumnsInEditGrid, скрипт во вложении.

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

Возможность полноценной работы БП в редактируемых реестрах будет реализована в следующих релизах.

 

Скрипт включения фичи ниже.

 

DECLARE @featureCode varchar(max) = 'LoadLookupColumnsInEditGrid',
 @featureId uniqueidentifier;
set @featureId = (select top 1 Id from Feature where Code = @featureCode);
IF @featureId is null
BEGIN
 insert into Feature
  (Name, Code)
 values
  (@featureCode, @featureCode);
 set @featureId = (select top 1 Id from Feature where Code = @featureCode);
END;
delete from AdminUnitFeatureState where FeatureId = @featureId;
insert into AdminUnitFeatureState
 (SysAdminUnitId, FeatureState, FeatureId)
values
 ('A29A3BA5-4B0D-DE11-9A51-005056C00008', 1, @featureId),
 ('720B771C-E7A7-4F31-9CFB-52CD21C3739F', 1, @featureId);

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

Добрый день! 

Каким образом можно реализовать автозаполнение региона и федерального округа при выборе города, это должно быть два бизнес-правила? 

Нужно использовать 3 справочника (города, регионы, федеральные округа)? 

Можно ли использовать один многоуровневый справочник? Если да, то как его создать? 

Нравится

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

Справочник города содержит страну и регион (область/штат называется). Справочник Регион содержит страну. Как вариант добавить в справочники Город и Регион (обласи/штаты) поле Федеральный округ (тоже справочником). Далее создать правила по фильтрации значений в справочниках Регион от Федерального округа, Город от Региона в правиласх поставить галки. Все будет работать.

примеров в системе много

Справочник города содержит страну и регион (область/штат называется). Справочник Регион содержит страну. Как вариант добавить в справочники Город и Регион (обласи/штаты) поле Федеральный округ (тоже справочником). Далее создать правила по фильтрации значений в справочниках Регион от Федерального округа, Город от Региона в правиласх поставить галки. Все будет работать.

примеров в системе много

Алексей Следь,

Спасибо! 

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

Добрый день! 

Как настроить бизнес-правило для автоматического заполнения логического поля при выборе определенного значения из справочника.  

Нравится

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

Насколько знаю, сейчас такой функционал недоступен.

Вариант 1 - это написать спкрип на странице редактирования.

Вариант 2 - попробовть в справочнике добавить логическое поле и из него уже заполнять значение бизнес-правилом. 

 

Я бы сделал первым вариантом.

Насколько знаю, сейчас такой функционал недоступен.

Вариант 1 - это написать спкрип на странице редактирования.

Вариант 2 - попробовть в справочнике добавить логическое поле и из него уже заполнять значение бизнес-правилом. 

 

Я бы сделал первым вариантом.

Алексей Следь,

Спасибо! 

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

Добрый день! Прошу уточнить, если ли возможность добавить условие бизнес-правила по роли текущего пользователя (а не конкретному пользователю), например:

Отобразить вкладку Админ только пользователям с ролью System Administrator

 

Нравится

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

Нет. Есть обходной способ через права на операции. Приоткрытии страница проверяется право на операцию и атрибуту присваивается значение True/False. А далее уже бизнес правило на этот атрибут/

Вот подробно на Tech Hour

Здравствуйте, Павел!

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

Тем не менее в качестве обходного решения Вы можете либо добавить всех пользователей, что входят в роль, отдельным условием в бизнес правиле, либо использовать настройку прав доступа по колонкам:
https://academy.terrasoft.ru/docs/user/ustanovka_i_administrirovanie/up…

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

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

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

Нравится

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

Открыть код схемы и с помощью copy-paste быстро создать  и подредактировать остальные 

Владимир Соколов,

Спасибо, в атрибутах колонок?

Сергей Рогов,

нет, в businessRules: /**SCHEMA_BUSINESS_RULES*/

https://academy.terrasoft.ua/docs/developer/front-end_development/clien…

 

Владимир Соколов,

Спасибо!

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

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

Суть, откуда потребность. 

Есть страница с множеством вкладок, которые показываются в зависимости от условий. И когда мы показываем эти вкладки, то надо делать их активными. Сейчас это можно реализовать только через код на странице (а как же LowCodeNoCode?)

 

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

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

 

Спасибо за выбор нашего продукта.

 

С уважением,
Кучер Виталина
Оператор
Группа компаний Terrasoft

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

На текущий момент в бизнес-правилах при указании действия Заполнять значения поля, если не указать параметр значения поля, то сохранение правила блокируется с сообщением "Поле в действии: Необходимо указать значение. "

В текущей реализации нет нормальной возможности очистить значение поля через бизнес-правило.

Было бы корректно, считать незаполненный параметр, как желание очистить значение в соответствии с типом поля.
 

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

Дополню своё же предложение:
Было бы весьма полезно, если бы при заполнении данного параметра, можно было бы указывать и конкретное значение для поля.

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

Добрый день!
Столкнулся с проблемой, что бизнес-правило в мобильном приложении не отрабатывает на действие изменения значения в поле колонки вот здесь:

 

Но при этом бизнес-правило успешно отрабатывает когда я не меняю число 20 в поле выше, а когда добавляю новую запись в продвигаемые продукты  и ввожу значение в поле:

Код бизнес-правила:
 

Terrasoft.sdk.Model.addBusinessRule("ActivityPromProduct", {
    name: "OpportunityAmountValidatorRule",
    ruleType: Terrasoft.RuleTypes.Custom,
    triggeredByColumns: ["QuantityPrescription"],
    events: [Terrasoft.BusinessRuleEvents.ValueChanged],
    executeFn: function(model, rule, column, customData, callbackConfig) {
        var revenue = model.get("QuantityPrescription");
		if (model.phantom){
			model.set("QuantityPrescription", 5, true);
		}
		else{
			model.set("QuantityPrescription", 7, true);
		}
        Ext.callback(callbackConfig.success, callbackConfig.scope);
    }
});

 

Нравится

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

Добрый день, Сергей.

Попробуйте также в events добавить событие Terrasoft.BusinessRuleEvents.Save и проверьте работу.

 

events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Save]

 

Mykhailo Storozhuk,

Добрый день! Не помогло, всё-равно при вводе значения в поле и сохраняется введённое мной значение, а не например, 5 или 7 как из кода выше по идее должно быть.

Симонов Сергей Сергеевич,

Добрый день, Сергей.

1) Добавили ли Вы схему, в которой настраиваете это бизнес правило в манифест мобильного приложения? Корректно ли Вы это сделали?  
2) Попробуйте также вообще удалить правило и посмотреть будет ли изменяться значение при создании новой записи. 
3) Кроме того, нужно провести отладку кода внутри мобильного приложения и посмотреть вызывается ли нужный метод.
4) Возможно у Вас есть еще одно бизнес правило, которое может нарушать логику текущего? Проверьте бизнес правила связанные с проблемными колонками.

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

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