Публикация

Как сделать все элементы детали Адреса на странице Контрагента недоступными для редактирования?

Вопрос

Как сделать все элементы детали Адреса на странице Контрагента недоступными для редактирования? Версия 7.2.0.

Ответ

Пример реализации функционала для схемы AddressDetail:

1) можно добавить новый метод enableDetailControls:

this.methods.enableDetailControls = function(viewConfig, enabled) {
    if (!viewConfig.items) {
        return;
    }
    viewConfig.items.forEach(function(item) {
        item.enabled = enabled;
    }, this);
};

2) далее вызвать этот метод внутри метода getCustomItemView после полного формирования конфигурации представления, добавив необходимые условия. Например, перед строкой return viewConfig:

this.methods.getCustomItemView = function(viewModel, itemKey, action, types, itemViewModel) {
    var viewConfig = {};
    ...
    var enableControls = (action === "edit") && (/*любые другие условия*/);
    this.enableDetailControls(viewConfig, enableControls);
    return viewConfig;
};

Очень желательно до этого момента уже получить значения необходимых условий, так как после выполнения getCustomItemView управление передаётся в модуль базовой детали (DetailModule), в котором уже выполняется привязка модели к представлению и рендеринг детали.

Нравится

Поделиться

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