Вопрос

Добрый день!

 

Версия 7.12.3.

Столкнулся с проблемой, одному из пользователей (upd: на самом деле не одному, проблемы точно нет у cупервизора) система не позволяет менять/удалять инфу на детали Средства связи в Контакте (добавлять разрешает). Происходит это не у всех контактов, только на некоторых, системы еще не обнаружил (upd: обнаружил - сбой на контактах, заведенных после 16 августа сего года включительно).

BatchQuery возвращает сообщение об ошибке из темы, сама CRM показывает:

Права на объект вроде по умолчанию.

Что это за глюк?

У меня такой же вопрос

12 комментариев
Лучший ответ

Попробуйте перераздать права на через решение Access rights setup wizard for bpm'online

А объект "Контакт" администрируется?

Судя по настройкам, нет.

Хотя на вкладке "Доступ к записям по умолчанию:" есть записи.

Тогда странно. Я бы попробовал встать дебаггером в функцию getValidationMessage. Сообщение похоже на то, что данная функция должна возвращать.

Не, сообщение приходит в ответ на 0/DataService/json/SyncReply/BatchQuery.
"Трасформируется" (неправильно) для вывода на экран в методе onSaved от BaseCommunicationDetail.

 

Борис Леонов,

Добрый день! В объекте детали ContactCommunication в свойстве "Доступ" у вас стоят где нибудь выбранные пункты?("По операциям, по колонкам и др."). Для полного доступа галочки напротив данных полей должны отсутствовать.

 

engineer7,

нет, галочки не установлены

Борис Леонов,

возможно данная статья сможет Вам помочь: https://academy.terrasoft.ru/documents/sales-enterprise/7-10/detal-dostup-k-obektu-razdela-dostup-k-obektam

engineer7,

на детали, указанной в статье, пусто, нет ни одной записи

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

А нет другой логики на сигналы с детали (в том числе на уровне объектных бп)?

Если есть доступ в базу, можно посмотреть скрытые в интерфейсе таблицы прав SysContactRight и SysContactCommunicationRight, если они есть. Отфильтровать по Id контактов и записей на детали средств связи, взяв примеры, созданные до и после 16. Может, права почему-то всё же выдались. Например, если тогда кто-то менял настройки прав для объекта и вернул как было.

Также можно попробовать включить по объектам Contact и/или ContactCommunication права по записям, а потом обратно выключить. Возможно, при прошлом выключении был сбой и не выключилось полностью. Лучше перед этим сделать бекап или проверять на копии базы.

Наконец, стоит запустить действие актуализации ролей. Может, что-то меняли в ролях пользователей, а актуализировать забыли.

 

 

Попробуйте перераздать права на через решение Access rights setup wizard for bpm'online

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

Здравствуйте.

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

1. В BaseCommunicationDetail существует биндинг поля enabled на метод getCommunicationEnabled, но метод getCommunicationEnabled не вызывается.
2. Сможем ли мы в теории посмотреть в таком методе на параметр новизны записи?

У меня такой же вопрос

1 комментарий

Добрый день, Егор!

Метод getCommunicationEnabled должен вызываться перед прорисовкой средства свзяи, то есть, если у вас не добавлено ни одного средства связи, то метод и не вызовется.

Этот метод достаточно сложно переопределить, так как он находится в BaseComunicationViewModel.

Проще переопределить метод getCommunicationItemViewConfig в BaseCommunicationDetail в котором модифицировать поле enabled у редактируемого поля.

А чтобы определить новый это объект создается или нет, можно в этой же детали добавить атрибут или переменную булеовго типа и переопределить метод addItem, в котором переменную (например, isNewItem) менять на true, тогда в getCommunicationItemViewConfig смотря на эту переменную вы определите дальнейшее поведение.

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

Добрый день.
На ContactPage есть деталь ContactCommunication.
Необходимо при удаления средства связи перемещать его в временную
таблицу, удалив из ContactCommunication

Подскажите как лучше это сделать.
p.s.Думали отловить удаленный элемент(ы) с детали.
Не получилось это сделать. Метод this.get("DeletedItems") в
методе save детали не возвращает values удаленных елементов.

У меня такой же вопрос

4 комментария

Вижу два пути
- тяжелый реализация на уровне субд - триггером;
- простой процесс со стартовым сигналом удаление записи

"Александр Кудряшов" написал:

Вижу два пути
- тяжелый реализация на уровне субд - триггером;
- простой процесс со стартовым сигналом удаление записи

- Вес запроса зависит от его реализации:smile:
- Не получится. Необходимо определить процесс на событие "Перед удалением записи" непосредственно в объекте ContactCommunication.

"Демьяник Алексей" написал:Не получится

получится
ставите сигнал, получаете идентификатор, затем чтение данных из СредствСвязиКонтакта с id= идентификатору из первого элемента. А потом делайте с результатом чтения данных что хотите. Проверил на 7.7.0 - создал по факту удаления активность с заголовком = удаленному номеру :)
Для удаления номера использовал действие "удалить" в детали (см скрин)
Просто доверьтесь bpmonline :)

"Демьяник Алексей" написал:Необходимо определить процесс на событие "Перед удалением записи" непосредственно в объекте ContactCommunication.

это кстати тоже отличный вариант, но мозг измученный клиентским кодом его сразу не рассмотрел

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

Войдите или зарегистрируйтесь, чтобы комментировать