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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.10.2011, 22:23   #1  
Nvovka is offline
Nvovka
Участник
 
33 / 10 (1) +
Регистрация: 29.09.2011
Плагин
Создаю плагин на событие удаление записи. Задание постое есть сущность А(действие) и Б(интерес) между ними отношение 1-N много А в одной Б. Проверить необходимо если в Б А. В "Б" сущности "А" отобажаются в виде грида. Плагин висит на событие Pre. Как павильно писать шапку так как советовали что context["target"] is Entity-указывать ненужно на Удалении, а лучше работать через PrimaryEntity? На Create вешал плагин все нормально отрабатывает а с Delete возникают проблемы и как рабатать с гридом как по нему пойтись проверить есть ли там сущности "А"? Я начинающий так что извините если где не так выразился.
Старый 13.10.2011, 23:09   #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
1. Какая версия системы? Судя по всему 2011?
2. Что именно нужно? Запретить удалить Б, если к ней привязаны А? Измените настройки отношения, на "Ссылочное, ограничить удаление", тогда платформа сама будет выполнять проверку.

Плагин отрабатывает на все те же сообщения, которые вы вызываете из кода. Это обозначает, что если вы вызываете CreateRequest, то вы устанавливаете свойство Target = Entity, и во входных параметрах будет параметр "Target" и в нем будет содержаться объект типа Entity. Метод возвращает CreateResponse.id = Guid - значит в выходных параметрах будет параметр "id", значеним которого будет Guid созданной записи. С удалением - аналогично. На входе будет DeleteRequest.Target = EntityReference:
Код:
if (context.InputParameters.Contains("Target") &&
                context.InputParameters["Target"] is EntityReference)
С каждой новой версией SDK все сильнее мутирует и становится все менее читаемым. Поэтому и изучать его нужно усерднее. А вообще - дебаггер вам в руки!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional

Последний раз редактировалось Артем Enot Грунин; 13.10.2011 в 23:27.
Старый 14.10.2011, 10:15   #3  
Borisvil is offline
Borisvil
Участник
 
123 / 36 (2) +++
Регистрация: 03.06.2011
Адрес: Санкт-Петербург
Цитата:
Сообщение от Nvovka Посмотреть сообщение
Создаю плагин на событие удаление записи. Задание постое есть сущность А(действие) и Б(интерес) между ними отношение 1-N много А в одной Б. Проверить необходимо если в Б А. В "Б" сущности "А" отобажаются в виде грида. Плагин висит на событие Pre. Как павильно писать шапку так как советовали что context["target"] is Entity-указывать ненужно на Удалении, а лучше работать через PrimaryEntity? На Create вешал плагин все нормально отрабатывает а с Delete возникают проблемы и как рабатать с гридом как по нему пойтись проверить есть ли там сущности "А"? Я начинающий так что извините если где не так выразился.
Не совсем понятно что Вы хотите в итоге сделать.
Если при удалении одной подчиненной сущности надо пробежаться по всем оставшимся, то самый верный вариант зарегистрировать плагин на post операцию, но сделать pre снимок, в котором получить значение id родительской сущности. Ну а потом уже все просто - делаете выборку всех подчиненных сущностей, у которых id родительской соответствует полученному (выборка будет уже без удаленной сущности) и делаете с ними что хотите и родительскую сущность тоже легко сможете получить и обновить.
ID из снимка получается так (CRM2011):
X++:
Entity preImage = (Entity)context.PreEntityImages["PreImage"];
EntityReference dogovorid = (EntityReference)preImage.Attributes["new_contarctid"];
Guid dogovorRecordId = dogovorid.Id;
Старый 14.10.2011, 23:46   #4  
Nvovka is offline
Nvovka
Участник
 
33 / 10 (1) +
Регистрация: 29.09.2011
Просто меня сбили немного с толку. Сказали что на событии удалить стандартная провека не катит if (context.InputParameters.Contains("Target") &&
context.InputParameters["Target"] is EntityReference) т.е. эта.А надо типа ((context.InputParameters.Contains("Target")) Подсказывали что надо чеез context.PrimaryEntyty.Id что собственно и сработало. А просто пи удалении А надо было подсчитать есть ли в Б ещё подобные А и если нет то с Б выполнить действие. В пинципе еализовать удалось. Спасибо за подсказки.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ошибка при установке outlook плагин для CRM 2011 webmaster Dynamics CRM: Администрирование 8 09.12.2011 12:41
Не срабатывает плагин Буденый Dynamics CRM: Разработка 11 14.02.2011 11:35
Плагин на изменение подразделения пользователя xmarina Dynamics CRM: Разработка 6 23.11.2010 15:04
Плагин на обновление slivka_83 Dynamics CRM: Разработка 1 20.07.2009 17:10
Как зарегить плагин на смену State? Alir Dynamics CRM: Разработка 8 24.11.2008 12:06
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:46.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.