Если в компоненте Типы справочников для реквизита конкретного справочника в поле *Обязательный установлено значение Да, то у заголовка данного реквизита появится значок *. Реквизит всегда обязателен для заполнения. Если он не был заполнен до сохранения карточки записи справочника, то выделится красным цветом без дополнительной доработки:
Чтобы реквизит отображался как обязательный в зависимости от значений других реквизитов карточки записи справочника, нужно изменять заголовок реквизита на клиенте:
WA.CR.form.requisites['Sum'].bind('change', function (req, event, newData) {
if (newData.value < 0) {
// Изменить заголовок у реквизита LongString
// при отрицательном значении реквизита Sum.
WA.CR.form.requisites.LongString.setLabel("*Test")
}
});
Если реквизит, отображаемый как обязательный, не был заполнен до сохранения карточки записи справочника, то, чтобы он выделился красным цветом, нужно переопределить метод, срабатывающий при выводе сообщения:
JS
WA.ready(function () {
WA.CR.form._handleFailSave = function (res, needShowError, callback, details, inlineHint) {
var me = this;
me._fillRowsID(res.Result, details);
// Проверить, есть ли в сообщении {}.
if (needShowError) {
var isJSON = new RegExp(/^\{.+\}$/);
if (isJSON.test(res.Error)) {
var err = $.parseJSON(res.Error);
// Получить сообщение без указания реквизитов.
var mes = err.message;
if (!WA.isMobile()) {
inlineHint.show(format(L("ERROR_MSG"), mes));
} else {
ErrorShow(format(L("ERROR_MSG"), mes), true)
};
me._highlightRequisites(err.reqs, details);
} else {
// Начало своих доработок по условно-обязательным реквизитам.
// Вставить свою обработку ошибки из сообщения res.Error.
if (res.Error.indexOf("Requisites") > -1) {
var reqs = [];
// Добавить в массив реквизиты для подсвечивания
// (можно распарсить из ошибки).
reqs.push("Requisites1");
reqs.push("Requisites2");
me._highlightRequisites(reqs.join(", "), details);
return;
}
// Конец своих доработок по условно-обязательным реквизитам.
if (!WA.isMobile()) {
inlineHint.show(format(L("ERROR_MSG"), res.Error));
} else {
ErrorShow(format(L("ERROR_MSG"), res.Error), true)
}
}
};
if ($.isFunction(callback)) callback(false, res.Warning);
HideTopSpinner();
}
});
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |