Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Если в компоненте Типы справочников для реквизита конкретного справочника в поле *Обязательный установлено значение Да, то у заголовка данного реквизита появится значок *. Реквизит всегда обязателен для заполнения. Если он не был заполнен до сохранения карточки записи справочника, то выделится красным цветом без дополнительной доработки:

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

 

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
.navbar > a:hover { background: #FFD73B; }