Здравствуйте, подскажите как можно заблокировать от изменений деталь "Средства связи" у контакта и контрагента. Добавоение "+" убирается без проблем, про вот изменение типа (выпадающий список) и значения как можно заблокировать?
Нравится
Александр, тут возможны два подхода: либо модифицировать схему детали ContactCommunicationDetailV2, добавив элементам свойство только для чтения, или AccountCommunicationDetailV2, либо настроить нужным пользователям права доступа только для чтения на объект этой детали. Но в случае последнего подхода нужно помнить, что в объекты разделов Contact и Account во встроенные БП добавлена логика синхронизации с деталью средств связи. Чтобы отсутствие прав не приводило к ошибкам, нужно в своём пакете переопределить функцию SynchronizeCommunication в процессах этих объектов.
Зверев Александр,
первый вариант только на чтение - не выходит заблокировать выпадающий список
Александр, сложно сказать, не зная, что Вы меняли.
Это поле и выпадающий список формируются в ContactCommunicationDetailV2 здесь:
var typeMenuItems = []; var communicationTypes = this.get("CommunicationTypes"); communicationTypes.each(function(item) { var name = item.get("Name"); var value = item.get("Id"); typeMenuItems.push({ id: value, caption: name, tag: value, click: { bindTo: "typeChanged" } }); }, this); var typeButtonConfig = { id: "type", className: "Terrasoft.Button", classes: { wrapperClass: ["label-wrap", "detail-type-btn-user-class"], textClass: ["detail-type-btn-inner-user-class"] }, style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT, selectors: {wrapEl: "#type"}, caption: { bindTo: "CommunicationType", bindConfig: { converter: "typedStringValueConverter" } }, menu: { items: typeMenuItems } };
В случае блокировки можно попробовать сделать список пустым, тогда будет отображаться только нынешнее значение.
Зверев Александр,
Имеете ввиду сделать override модуля, и в функции удалить
var communicationTypes = this.get("CommunicationTypes"); communicationTypes.each(function(item) { var name = item.get("Name"); var value = item.get("Id"); typeMenuItems.push({ id: value, caption: name, tag: value, click: { bindTo: "typeChanged" } }); }, this);
?
Прежде, чем менять, надо сначала ещё проверить в отладке, используется ли в этой версии логика из ContactCommunicationDetailV2 или из ContactCommunicationDetail и BaseCommunicationDetail, созданная для более старого интерфейса.