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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.03.2009, 12:56   #1  
SJK is offline
SJK
Участник
 
3 / 10 (1) +
Регистрация: 13.03.2009
Ошибка в плагине при создании связей N:N
Добрый день.
Возникла задача при создании Предложения из Возможной сделки связать все контакты из Возможной сделки с Предложением.

Делаю следующее:
- Создаю плагин и вешаю его на post create предложения. Выполняется в child pipeline.
- В плагине создаю свой CrmServer.
- Извлекаю все контакты связанные с возможной сделкой.
- Пытаюсь связать их с помощью AssociateEntitiesRequest с предложением.

При этом появляется ошибка: Server was unable to process request.
В логах нашел следующее сообщение:
Exception when executing query: select quote0.QuoteId as 'quoteid', quote .OwningBusinessUnit as 'owningbusinessunit', quote0.OwningUser as 'owninguser' from Quote as quote0 where (quote0.QuoteId = '6f0b783a-240f-de11-a822-00155d001f15' and quote0.DeletionStateCode = 0) Exception: System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

Т.е. выходит что записи создаваемого предложения заблокированы, и он не может его связать с какими-либо сущностями.
Может кто-нибудь сталкивался с чем-то подобным? Задача то вроде бы типовая...
Вариант вызывать плагин асинхронно не подходит, т.к. связываемые с предложением контакты должны тут же отображаться на открытой карточке. Можно конечно это проделать в отдельном веб-сервисе, но хотелось бы конечно сделать по-нормальному в плагине.

PS:
- Код создающий CrmService:
Код:
private CrmService CreateCrmService(IPluginExecutionContext context, Boolean flag)
        {
            CrmAuthenticationToken authToken = new CrmAuthenticationToken();
            authToken.AuthenticationType = 0;
            authToken.OrganizationName = context.OrganizationName;

            // Include support for impersonation.
            if (flag)
                authToken.CallerId = context.UserId;
            else
                authToken.CallerId = context.InitiatingUserId;

            CrmService service = new CrmService();
            service.CrmAuthenticationTokenValue = authToken;
            service.UseDefaultCredentials = true;

            // Include support for infinite loop detection.
            CorrelationToken corToken = new CorrelationToken();
            corToken.CorrelationId = context.CorrelationId;
            corToken.CorrelationUpdatedTime = context.CorrelationUpdatedTime;
            corToken.Depth = context.Depth;

            RegistryKey regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM");

            service.Url = String.Concat(regkey.GetValue("ServerUrl").ToString(), "/2007/crmservice.asmx");
            service.CorrelationTokenValue = corToken;

            return service;
        }
- Код создающий связь:
Код:
Moniker moniker1 = new Moniker();
            moniker1.Name = entityName1;
            moniker1.Id = entityID1;
            Moniker moniker2 = new Moniker();
            moniker2.Name = entityName2;
            moniker2.Id = entityID2;
            AssociateEntitiesRequest request = new AssociateEntitiesRequest();
            request.Moniker1 = moniker1;
            request.Moniker2 = moniker2;
            request.RelationshipName = relationshipName;
            crmService.Execute(request); // здесь после 30 сек. ожидания происходит ошибка
Старый 13.03.2009, 13:43   #2  
Alir is offline
Alir
Участник
 
47 / 14 (1) ++
Регистрация: 02.08.2008
Адрес: Санкт-Петербург
Цитата:
Пытаюсь связать их с помощью AssociateEntitiesRequest с предложением.
Можно все гораздо проще сделать без всяких сторонних объектов.

У вас есть id нового предложения и id возможной сделки, из которой предложение создается.
По id возможной сделки получаете все id контактов, связанных с ней. А потом в цикле этим контактам проставляется в quioteid id-ик нового предложения и делаете Update.
В итоге плагин свяжет эти контакты с новым предложением.
Старый 13.03.2009, 15:56   #3  
SJK is offline
SJK
Участник
 
3 / 10 (1) +
Регистрация: 13.03.2009
Так сделать не получится, т.к. один контакт м.б. связан с несколькими предложениями. Там используется именно связь N:N.
Старый 14.03.2009, 10:21   #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
Можно попробовать увеличить время ожидания на SQL Server, конечно... Не совсем понятно о чем идет речь. У вас настроена связь между Контактами и Возможной сделкой, и Контактами и Предложением?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 18.03.2009, 20:19   #5  
SJK is offline
SJK
Участник
 
3 / 10 (1) +
Регистрация: 13.03.2009
Увеличение время ожидания не поможет. Если уж sql заблокировал записи, то заблокировал.
В итоге сделал так: повесил на OnLoad скрипт, который дергает метод мной написанного веб-сервиса, в котором и выполняю нужные мне действия, а после делаю reload формы.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка при публикации бизнес-процесса Верба Dynamics CRM: Администрирование 2 27.03.2009 16:18
Ошибка 401 в плагине ZooY Dynamics CRM: Разработка 2 11.03.2009 10:51
При создании сопоставления выдетает ошибка! pkost Dynamics CRM: Разработка 3 03.07.2008 21:01
Что произайдет после переустановки системы(reinstall)? pkost Dynamics CRM: Разработка 9 03.07.2008 19:06
Ошибка при создании веб-ссылки в MS VS? Alexey-IT Dynamics CRM: Разработка 1 12.01.2008 03:24

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

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

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