AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.08.2014, 15:53   #1  
gibor2000 is offline
gibor2000
Участник
 
18 / 10 (1) +
Регистрация: 15.12.2008
Отмена изменений Note-s в Account в Crm 2013
С Б.П

Всем привет,
Задача такая: контролировать возможность users изменять Note-s v Account.

Если в кастомизациях отменить "Write" - то тогда пропадает возможность создавать Notes.

1. Какие есть варианты реализовать эту задачу, кроме плагина?

2. Если через плагин на PreUpdate => написал:

Entity target = PluginOperations.GetContextTarget(m_pluginExecutionContext, out success);
if (success)
{
string[] rolesFromSystemParams = RetrieveRolesFromSystemParameters();
if (rolesFromSystemParams != null && rolesFromSystemParams.Length > 0)
{
bool canUpdate = RetrieveLogedInUserRoles(rolesFromSystemParams);
if (!canUpdate)
{
throw new InvalidPluginExecutionException("The user has no priveleges to update note records.")
{
Source = "Plugin : NoteBL. Method : PreUpdateAnnotation. The user has no priveleges to update note records"
};
}
}
else
{
throw new InvalidPluginExecutionException("The user has no priveleges to update note records.")
{
Source = "Plugin : NoteBL. Method : PreUpdateAnnotation. The user has no priveleges to update note records"
};
}
}
=> В таком случае выскакивает 2! сообщения об ошибке :

Название: Error.png
Просмотров: 423

Размер: 7.8 Кб

и после нажатия ОК:

Название: BusinessProcessError.png
Просмотров: 405

Размер: 6.8 Кб

Можно ли убрать первое сообщение об ошибке и почему оно вообще появилось?
Можно ли изменить Business Process Error на мое сообщение?


Спасибо

Последний раз редактировалось gibor2000; 11.08.2014 в 15:55.
Старый 12.08.2014, 10:44   #2  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Все верно. Единственный системный метод проконтролировать изменения известный мне - это плагин. Изменить внешний вид страницы сообщения, увы, нельзя. Однако, должно отображаться только одно сообщение. Возможно, проблема в том, что ваш плагин нарушает работу какой-то системной логики, потому ошибки вылетает 2. В этом случае, в системном логе тоже должно быть две записи об ошибке. Думаю это позволит пролить свет на то что происходит.

p.s. У меня не было опыта подобной работы с 2013, возможно что-то изменилось. Если лог не прольет свет на происходящее, попробуйте написать простой плагин для другой системной сущности, который бы просто выбрасывал исключение. Интересно сколько сообщений об ошибке будет в этом случае.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: gibor2000 (1).
Старый 12.08.2014, 12:46   #3  
gibor2000 is offline
gibor2000
Участник
 
18 / 10 (1) +
Регистрация: 15.12.2008
С Б.П

Спасибо за ответ.
Отменил все свои кастомные плагины кроме этого - тоже самое

В системном логе - это где ты имеешь ввиду? в Trace ili v EventViewer v Windows Logs - Application? - посмотрел в EventViewer - вообще не увидел там ошибки.
В Trace есть упоминание об ошибки , но не могу найти там где именно выскакивает первое сообщение (Trace прикрепил)

plugin_error.txt

По поводу предложения сделать простой плагин с Exceptions
Сделал плагин на AccountUpdate - только выброс Exception - там только одно окно- Business Process Error
protected void ExecutePostAccountUpdate(LocalPluginContext localContext)
{
throw new InvalidPluginExecutionException("ACCOUNT : TEST TEST TEST")
{
Source = "ACCOUNT : TEST"
};


}
тоже самое и на Pre-UpdateStage
Старый 12.08.2014, 13:56   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Раз мы пошли эмпирическим путем, попробуйте перевесить плагин, который выбрасывает исключение на изменение Annotation.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 12.08.2014, 14:50   #5  
gibor2000 is offline
gibor2000
Участник
 
18 / 10 (1) +
Регистрация: 15.12.2008
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Раз мы пошли эмпирическим путем, попробуйте перевесить плагин, который выбрасывает исключение на изменение Annotation.
Не понял что ты имеешь ввиду?
Я пробовал этот код и для Annotation (note)
PreUpdate:
protected void ExecutePreNoteUpdate(LocalPluginContext localContext)
{
throw new InvalidPluginExecutionException(" NOTE : TEST TEST TEST")
{
Source = NOTE : TEST"
};
}

Без вызова какого-то другого кода + отменил все другие кастомные плагины
Как дополнительная проверка добавил плагин :
Plugin Description="Plug-in to PreValidateNoteUpdate" FriendlyName="PreValidateNoteUpdate"

Все равно две ошибки
Старый 12.08.2014, 15:01   #6  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
А нельзя в пре плагине через имадж получать старое значение, перетирать им новое введённое, если у пользователя нет прав на внесение изменений, а над табом с записями повесить большой дисклеймер, который при необходимости объяснит это?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 12.08.2014, 15:04   #7  
gibor2000 is offline
gibor2000
Участник
 
18 / 10 (1) +
Регистрация: 15.12.2008
Цитата:
Сообщение от a33ik Посмотреть сообщение
А нельзя в пре плагине через имадж получать старое значение, перетирать им новое введённое, если у пользователя нет прав на внесение изменений, а над табом с записями повесить большой дисклеймер, который при необходимости объяснит это?
Об этом я тоже думал. могу затирать новое. Пробовал уже это.
Вопрос в этом случае - как сообщить юзеру. Дать ему алерт или что-то в этом роде

Что такое : а над табом с записями повесить большой дисклеймер?
Что ты имеешь ввиду?
Старый 12.08.2014, 15:13   #8  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от gibor2000 Посмотреть сообщение
Об этом я тоже думал. могу затирать новое. Пробовал уже это.
Вопрос в этом случае - как сообщить юзеру. Дать ему алерт или что-то в этом роде

Что такое : а над табом с записями повесить большой дисклеймер?
Что ты имеешь ввиду?
"Если у вас нет прав на изменение примечаний - ваши изменения не будут сохранены". Метка такая.

А по поводу запрещать - не запрещать. С плагинами, думаю, намучаешься. Мой совет изучай контрол и как в него можно внедрить свой код.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 12.08.2014, 15:14   #9  
gibor2000 is offline
gibor2000
Участник
 
18 / 10 (1) +
Регистрация: 15.12.2008
Цитата:
Сообщение от a33ik Посмотреть сообщение
Мой совет изучай контрол и как в него можно внедрить свой код.
Какой контрол ты имеешь ввиду?
Старый 12.08.2014, 15:18   #10  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от gibor2000 Посмотреть сообщение
Какой контрол ты имеешь ввиду?
А ты поведение чего пытаешься изменить? Вот и сам ответь себе на этот вопрос. Неужели не очевидно????
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 12.08.2014, 15:40   #11  
gibor2000 is offline
gibor2000
Участник
 
18 / 10 (1) +
Регистрация: 15.12.2008
Цитата:
Сообщение от a33ik Посмотреть сообщение
А ты поведение чего пытаешься изменить? Вот и сам ответь себе на этот вопрос. Неужели не очевидно????
Я не пытаюсь изменить поведение контрола.
я пытаюсь не дать юзеру сделать изменения Note если у него нет на это прав.

На сколько я понимаю из твоих сообщений, ты предлагаешь делать это не через плагин,а через скрипт или как? я не очень понял.
Старый 12.08.2014, 15:54   #12  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от gibor2000 Посмотреть сообщение
а через скрипт или как
Да.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 12.08.2014, 19:51   #13  
gibor2000 is offline
gibor2000
Участник
 
18 / 10 (1) +
Регистрация: 15.12.2008
С Б.П.

Спасибо Андрею за совет...

Вообщем сделал посредством Javascript

Скриптом я делаю Disable i ReadOnly на поле NoteText

Если кому интересно вот код скрипта:
DisableNotesFromEdit : function () {

if ($("#notesWallContainer").length > 0) {

$("#notesWallContainer").click(function () {

if ($('div[class*="focus"]').length > 0
&& $('div[class*="focus"]')[0].id != null && $('div[class*="focus"]')[0].id != undefined
&& $("#" + $('div[class*="focus"]')[0].id + "_notesTextBox").length > 0
) {
var clickedTextArea = $("#" + $('div[class*="focus"]')[0].id + "_notesTextBox");
clickedTextArea.bind("keydown", null, function () { return false; });
clickedTextArea.prop('disabled', true);
clickedTextArea.attr('readonly', 'readonly');
}
});
}
}

Этот код прекрасно сработал в IE i Chrome, но в FF работать отказался, поэтому пришлось добавить:
var isFirefox = typeof InstallTrigger !== 'undefined';
if (isFirefox) {
if ($("#tab5").length > 0) {
$("#tab5").click(function () {
Account.DisableNotesFromEdit();
});
}
}
else {
Account.DisableNotesFromEdit();
}


Несмотря на то,что поле Disabled после того как User его покидает СРМ все равно пытается выполнить Save
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 15 Blog bot Dynamics CRM: Blogs 1 10.02.2016 10:26
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 17 Blog bot Dynamics CRM: Blogs 0 10.05.2014 06:30
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2013 Update Rollup 2 Blog bot Dynamics CRM: Blogs 0 15.04.2014 01:15
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 16 Blog bot Dynamics CRM: Blogs 0 23.01.2014 03:15

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:57.