Добрый день!
В ITIL есть поле "Решение" - которое представляет собой строку неограниченной длины
и на странице выглядит таким образом:

Как можно сделать такое поле обязательным по какому-либо условию ( например, при состоянии "разрешено" требовать обязательность его заполнения)

Обычное бизнес-правило для обязательности поля
ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
// Правило регулирует свойство REQUIRED поля.
property: BusinessRuleModule.enums.Property.REQUIRED,
conditions...

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

Нравится

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

Добрый день, Дарья!

Для того, чтобы поле "Решение" в карточке обращения стало обязательным, Вы можете воспользоваться мастером раздела, для этого:

1. Перейдите в "Обращения" и нажмите кнопку "Вид"-->"Открыть мастер раздела"
2. Выбрав пакет для редактирования, перейдите на страницу редактирования обращения, потом на детали "Решение", выбрав колонку "Решение" нажмите кнопку "Изменить" и Вы сможете в открывшемся окне поставить признак "Является обязательным"

Спасибо за обращение в поддержку Terrasoft.

Тогда оно станет просто обязательным, а не обязательным по условию.

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

причем обычное бизнес-правило для обязательности поля
ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
// Правило регулирует свойство REQUIRED поля.
property: BusinessRuleModule.enums.Property.REQUIRED,
conditions...

здесь не срабатывает

Дарья, во вложении прикрепил кейс "как поле Результат сделать обязательным при завершении задачи".
Прошу с ним ознакомиться, Ваш кейс аналогичен.

Александр, как я уже писала, конкретно для этого поля не работает подобное бизнес-правило.
"Solution: {
"Rule1": {
ruleType: BusinessRuleModule.enums.RuleType.BINDPARAMETER,
property: BusinessRuleModule.enums.Property.REQUIRED,
conditions: [{
leftExpression: {
type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
attribute: "Status",
attributePath: "IsResolved"
},
comparisonType: this.Terrasoft.ComparisonType.EQUAL,
rightExpression: {
type: BusinessRuleModule.enums.ValueType.CONSTANT,
value: true
}
}]
}
}

}

Любое другое поле из карточки напишу вместо "Solution" - будет работать.
Для поля же "Решение" (Solution) не работает - с ошибкой вылетает.
Возможно дело в том, что само поле на карточке отображается не так, как все остальные поля - а как кусок текста

Попробуйте использовать свойство элемента "isRequired", напрямую добавив его операцией "merge" к элементу

Попробуйте использовать свойство элемента "isRequired", напрямую добавив его операцией "merge" к элементу

Если добавить
{
"operation": "merge",
"name": "Solution",
"values": {
"caption": {
"bindTo": "Resources.Strings.SolutuinCaption"
},
"isRequired": true
}
}
то возле поля появляется красная звездочка, но обязательным оно не становится.
И в любом случае это же необязательность по условию...

поле "Решение" в карточке отображается как структурированный текст.
Может быть в том случае как-то по-другому надо проверять заполненность?

В таком случае, Вы можете переопределить метод Save и провести валидацию в нем, например вот так:
save: function () {
if (this.get("Solution")) {
this.callParent(arguments);
} else {
this.showInformationDialog("Необходимо заполнить поле решение");
}
}

Добрый день, Дарья!

Произвели анализ изменений, которые требуются для решения Вашей задачи.
И получили результат:
HTML - контролл типа RICHTEXT, которым является данное поле «Решение» не поддерживает данную функциональность..

Понятно, спасибо

Добрый день.

У нас возникла такая же задача сделать поле "Решение" обязательным по условию, скажите пожалуйста, стало ли это возможно в версии 7.10.2? Или предусмотрено реализация данной возможности в других релизах?

Татаровская Дарья, вы ссылаетесь на справочное поле (статус) это объект, вам надо получить его GUID и сравнить его. 

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