AXForum  
Zurück   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 26.08.2010, 10:47   #1  
u.rastegaev ist offline
u.rastegaev
Участник
 
64 / 10 (1) +
Registriert seit: 03.08.2010
KeyNotFoundException и HttpUnhandledException в плагине на update сущьности customerrelationship
Суть плагина:
есть сущность, customerrelationship-отношение с клиентом( customerrelatinship.PNG ) ,
если в поле "Роль1" стоит значение "Входит в холдинг", то для соответствующего Бизнес Партнера (это поле "Сторона 1") проставлять поле "условное объединение с иным БП" в значение " задано в отношении"( БП.PNG ) .
Нужно отслеживать все изменения в сущности customerrelationship(ее удаление , update изменение ее полей) т.е. поддерживать в актуальном состоянии поле "условное объединение с иным БП" в БП.
Аналогично для полей "Сторона2" и "Роль2".

Проблема в следующем:
Есть отношение, у него запполнены сторона1 сторона2 роль1 роль2 .
Если его открыть и изменить роль1 на "ПУСТО" то плагин ведет себя некорректно:
1) если нажимать save то он оставляет прежнее значение поля "роль1" и на "пусто" его НЕ меняет.
2) а если нажать save and close то он "пусто" в поле "роль1" сохраняет
(если потом его открыть то это видно) НО остается окно с ошибкой (crm error on save&close.PNG )

Что интересно:
аналогичные действия для "Роль2" и "Сторона2" проходят нормально!!!




это код плагина(CustomerrelationPlugin.txt )
Zitat:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;
using Microsoft.Crm.Sdk.Query;
using System.Xml;

namespace test_25_08_2010
{
public class noticeOnCustomerrelationshipPlugin : IPlugin
{
public noticeOnCustomerrelationshipPlugin(string unsecureConfig, string secureConfig)
{
try
{

}
catch (Exception ex)
{
throw new InvalidPluginExecutionException(
"An error occurred in the detailSummator plug-in.", ex);
}
}
public void Execute(IPluginExecutionContext context)
{

DynamicEntity entity = null;

if (context.InputParameters.Properties.Contains("Target"))
{
if (context.InputParameters.Properties["Target"] is DynamicEntity)
{
entity = (DynamicEntity)context.InputParameters.Properties["Target"];

Guid inHoldingCompanyGuid = new Guid("98CBD94A-2FEE-DE11-8853-00155D4E1B14");//id сущности "входит в холдинг"


Customer customerC = null;//Сторона1
Guid customerCValue = new Guid("00000000-0000-0000-0000-000000000000");
Lookup customerLk = null;//Роль1
Guid customerLkValue = new Guid("00000000-0000-0000-0000-000000000000");

DynamicEntity cEntity = null;

if (entity.Properties.Contains("customerid") && entity.Properties.Contains("customerroleid"))
{
customerC = (Customer)entity.Properties["customerid"];//Сторона1
customerCValue = customerC.Value;
customerLk = (Lookup)entity.Properties["customerroleid"];//Роль1
customerLkValue = customerLk.Value;
}
else
{
if (entity.Properties.Contains("customerrelationshipid") && context.MessageName != "Update")
{
//
cEntity = getCustomerrelationshipById(context, ((Key)entity.Properties["customerrelationshipid"]).Value, "customerid", "customerroleid");
//

customerC = (Customer)cEntity.Properties["customerid"];//Сторона1
customerCValue = customerC.Value;
if (cEntity.Properties.Contains("customerroleid"))
{
customerLk = (Lookup)cEntity.Properties["customerroleid"];//Роль1
customerLkValue = customerLk.Value;
}

}

}


if (context.MessageName == "Create" && entity.Properties.Contains("customerroleid") && !customerLk.IsNull && (customerLkValue == inHoldingCompanyGuid))
{
changeCustomerrelationshipNamberOfAccount(context, new Key(customerCValue), new CrmBoolean(true));
}

if (context.MessageName == "Update")
{
//getting entity from preStage image

DynamicEntity preCustomerrelationship1 = null;
Customer preCustomer = null;
Guid preCustomerValue = new Guid("00000000-0000-0000-0000-000000000000");
Lookup preCustomerLk = null;
Guid preCustomerLkValue = new Guid("00000000-0000-0000-0000-000000000000");

if (context.PreEntityImages.Properties.Contains("CustomerrelationshipPreImage") && context.PreEntityImages.Properties["CustomerrelationshipPreImage"] is DynamicEntity)
{
preCustomerrelationship1 = (DynamicEntity)context.PreEntityImages.Properties["CustomerrelationshipPreImage"];
preCustomer = (Customer)preCustomerrelationship1.Properties["customerid"];
preCustomerValue = preCustomer.Value;
if (preCustomerrelationship1.Properties.Contains("customerroleid"))
{
preCustomerLk = (Lookup)preCustomerrelationship1.Properties["customerroleid"];
preCustomerLkValue = preCustomerLk.Value;
}
//try
//{
// preCustomerLk = (Lookup)preCustomerrelationship.Properties["customerroleid"];
// preCustomerLkValue = preCustomerLk.Value;
//}
//catch (KeyNotFoundException) { }

}


//getting entity from postStage image

DynamicEntity postCustomerrelationship1 = null;
Customer postCustomer = null;
Guid postCustomerValue = new Guid("00000000-0000-0000-0000-000000000000");
Lookup postCustomerLk = null;
Guid postCustomerLkValue = new Guid("00000000-0000-0000-0000-000000000000");

// Проверяем что post-снимок существует
if (context.PostEntityImages.Properties.Contains("CustomerrelationshipPostImage") && context.PostEntityImages.Properties["CustomerrelationshipPostImage"] is DynamicEntity)
{
postCustomerrelationship1 = (DynamicEntity)context.PostEntityImages.Properties["CustomerrelationshipPostImage"];
postCustomer = (Customer)postCustomerrelationship1.Properties["customerid"];
postCustomerValue = postCustomer.Value;
if (postCustomerrelationship1.Properties.Contains("customerroleid"))
{
postCustomerLk = (Lookup)postCustomerrelationship1.Properties["customerroleid"];
postCustomerLkValue = postCustomerLk.Value;
}
//try
//{
// postCustomerLk = (Lookup)postCustomerrelationship.Properties["customerroleid"];
// postCustomerLkValue = postCustomerLk.Value;
//}
//catch (KeyNotFoundException) { }

}

//if customerid changed
//work just with the OLD customerrelationship!!!
if (preCustomerValue != postCustomerValue)
{
if (preCustomerLkValue == inHoldingCompanyGuid)
{
changeCustomerrelationshipNamberOfAccountUsingSearch(context, "customerid", preCustomerValue, "customerroleid", 0);
}
}

if (postCustomerLkValue == inHoldingCompanyGuid)
{
changeCustomerrelationshipNamberOfAccount(context, new Key(postCustomerValue), new CrmBoolean(true));
}
else
{
if (postCustomerValue == preCustomerValue && preCustomerLkValue == inHoldingCompanyGuid)
{

changeCustomerrelationshipNamberOfAccountUsingSearch(context, "customerid", postCustomerValue, "customerroleid", 0);
}
}
}



Customer partnerC = null;//Сторона2
Guid partnerCValue = new Guid("00000000-0000-0000-0000-000000000000");
Lookup partnerLk = null;//Роль2
Guid partnerLkValue = new Guid("00000000-0000-0000-0000-000000000000");

DynamicEntity pEntity = null;
if (entity.Properties.Contains("partnerid") && entity.Properties.Contains("partnerroleid"))
{
partnerC = (Customer)entity.Properties["partnerid"];//Сторона2
partnerCValue = partnerC.Value;

partnerLk = (Lookup)entity.Properties["partnerroleid"];//Роль2
partnerLkValue = partnerLk.Value;
}
else
{
if (entity.Properties.Contains("customerrelationshipid") && context.MessageName != "Update")
{
pEntity = getCustomerrelationshipById(context, ((Key)entity.Properties["customerrelationshipid"]).Value, "partnerid", "partnerroleid");
partnerC = (Customer)pEntity.Properties["partnerid"];//Сторона2
partnerCValue = partnerC.Value;
if (pEntity.Properties.Contains("partnerroleid"))
{
partnerLk = (Lookup)pEntity.Properties["partnerroleid"];//Роль2
partnerLkValue = partnerLk.Value;
}

}
}


if (context.MessageName == "Create" && entity.Properties.Contains("partnerroleid") && !partnerLk.IsNull && (partnerLkValue == inHoldingCompanyGuid))
{
changeCustomerrelationshipNamberOfAccount(context, new Key(partnerCValue), new CrmBoolean(true));
}

if (context.MessageName == "Update")
{
//getting entity from preStage image

DynamicEntity preCustomerrelationship2 = null;
Customer prePartner = null;
Guid prePartnerValue = new Guid("00000000-0000-0000-0000-000000000000");
Lookup prePartnerLk = null;
Guid prePartnerLkValue = new Guid("00000000-0000-0000-0000-000000000000");

if (context.PreEntityImages.Properties.Contains("CustomerrelationshipPreImage") && context.PreEntityImages.Properties["CustomerrelationshipPreImage"] is DynamicEntity)
{
// Получаем pre-снимок как объект DynamicEntity
preCustomerrelationship2 = (DynamicEntity)context.PreEntityImages.Properties["CustomerrelationshipPreImage"];
prePartner = (Customer)preCustomerrelationship2.Properties["partnerid"];
prePartnerValue = prePartner.Value;
if (preCustomerrelationship2.Properties.Contains("partnerroleid"))
{
prePartnerLk = (Lookup)preCustomerrelationship2.Properties["partnerroleid"];
prePartnerLkValue = prePartnerLk.Value;
}
//try
//{
// prePartnerLk = (Lookup)preCustomerrelationship.Properties["partnerroleid"];
// prePartnerLkValue = prePartnerLk.Value;
//}
//catch (KeyNotFoundException) { }

}

//getting entity from postStage image

DynamicEntity postCustomerrelationship2 = null;
Customer postPartner = null;
Guid postPartnerValue = new Guid("00000000-0000-0000-0000-000000000000");
Lookup postPartnerLk = null;
Guid postPartnerLkValue = new Guid("00000000-0000-0000-0000-000000000000");

// Проверяем что post-снимок существует
if (context.PostEntityImages.Properties.Contains("CustomerrelationshipPostImage") && context.PostEntityImages.Properties["CustomerrelationshipPostImage"] is DynamicEntity)
{
postCustomerrelationship2 = (DynamicEntity)context.PostEntityImages.Properties["CustomerrelationshipPostImage"];
postPartner = (Customer)postCustomerrelationship2.Properties["partnerid"];
postPartnerValue = postPartner.Value;
if (postCustomerrelationship2.Properties.Contains("partnerroleid"))
{
postPartnerLk = (Lookup)postCustomerrelationship2.Properties["partnerroleid"];
postPartnerLkValue = postPartnerLk.Value;
}
//try
//{
// postPartnerLk = (Lookup)postCustomerrelationship.Properties["partnerroleid"];
// postPartnerLkValue = postPartnerLk.Value;
//}
//catch (KeyNotFoundException) { }

}


//if partnerid changed
//work just with the OLD customerrelationship!!!!!!!!!!!
if (postPartnerValue != prePartnerValue)
{
if (prePartnerLkValue == inHoldingCompanyGuid)
{
changeCustomerrelationshipNamberOfAccountUsingSearch(context, "partnerid", prePartnerValue, "partnerroleid", 0);
}
}


if (postPartnerLkValue == inHoldingCompanyGuid)
{
changeCustomerrelationshipNamberOfAccount(context, new Key(postPartnerValue), new CrmBoolean(true));
}
else
{
if (postPartnerValue == prePartnerValue && prePartnerLkValue == inHoldingCompanyGuid)
{

changeCustomerrelationshipNamberOfAccountUsingSearch(context, "partnerid", postPartnerValue, "partnerroleid", 0);
}

}
}

}//если это DynamicEntity
else
{
if (context.InputParameters.Properties["Target"] is Moniker)
{
Guid DelInHoldingCompany = new Guid("98CBD94A-2FEE-DE11-8853-00155D4E1B14");//id сущности "входит в холдинг"

Moniker m = (Moniker)context.InputParameters.Properties["Target"];

DynamicEntity cDelEntity = getCustomerrelationshipById(context, m.Id, "customerid", "customerroleid");

Customer customerC = (Customer)cDelEntity.Properties["customerid"];//Сторона1
Guid customerCValue = customerC.Value;
Lookup customerLk = null;
Guid customerLkValue = new Guid("00000000-0000-0000-0000-000000000000");
if (cDelEntity.Properties.Contains("customerroleid"))
{
customerLk = (Lookup)cDelEntity.Properties["customerroleid"];//Роль1
customerLkValue = customerLk.Value;
}


if (customerLkValue == DelInHoldingCompany && context.MessageName == "Delete")
{
changeCustomerrelationshipNamberOfAccountUsingSearch(context, "customerid", customerCValue, "customerroleid", -1);
}


DynamicEntity pDelEntity = getCustomerrelationshipById(context, m.Id, "partnerid", "partnerroleid");
Customer partnerC = (Customer)pDelEntity.Properties["partnerid"];//Сторона2
Guid partnerCValue = partnerC.Value;
Lookup partnerLk = null;
Guid partnerLkValue = new Guid("00000000-0000-0000-0000-000000000000");
if (pDelEntity.Properties.Contains("partnerroleid"))
{
partnerLk = (Lookup)pDelEntity.Properties["partnerroleid"];//Роль2
partnerLkValue = partnerLk.Value;
}


if (partnerLkValue == DelInHoldingCompany && context.MessageName == "Delete")
{
changeCustomerrelationshipNamberOfAccountUsingSearch(context, "partnerid", partnerCValue, "partnerroleid", -1);
}
}//если это Moniker



}// else для DynamicEntity
}//если содержит "Target"


}

private BusinessEntityCollection getCustomerrelationshipsOfAccount(IPluginExecutionContext context, string typename,
string pidname, Guid pguid, String role)//метод возвращает id тех сущностей типа typename, у которых pidname==pguid
{
Guid inHoldingCompanyG = new Guid("98CBD94A-2FEE-DE11-8853-00155D4E1B14");//id сущности "входит в холдинг"

ICrmService service = context.CreateCrmService(false);

QueryByAttribute query = new QueryByAttribute();
query.EntityName = typename;
query.ColumnSet = new ColumnSet();

query.ColumnSet.AddColumn(String.Format("{0}id", typename));

query.Attributes = new string[] { pidname, role };
query.Values = new object[] { pguid, inHoldingCompanyG };
RetrieveMultipleRequest request = new RetrieveMultipleRequest();
request.Query = query;
request.ReturnDynamicEntities = true;
RetrieveMultipleResponse response = (RetrieveMultipleResponse)service.Execute(request);
return response.BusinessEntityCollection;
}

private void changeCustomerrelationshipNamberOfAccount(IPluginExecutionContext context, Key bpKey, CrmBoolean value)
{
DynamicEntity entityToUpdate = new DynamicEntity();
entityToUpdate.Name = "account";
entityToUpdate.Properties.Add(new KeyProperty("accountid", bpKey));
entityToUpdate.Properties.Add(new CrmBooleanProperty("gar_conditional_association", value));

TargetUpdateDynamic accountTU = new TargetUpdateDynamic();
accountTU.Entity = entityToUpdate;

UpdateRequest accountUR = new UpdateRequest();
accountUR.Target = accountTU;

ICrmService service = context.CreateCrmService(false);
UpdateResponse response = (UpdateResponse)service.Execute(accountUR);

}

private void changeCustomerrelationshipNamberOfAccountUsingSearch(IPluginExecutionContext context, String nameId, Guid pguid, String role, int correction)
{
BusinessEntityCollection ds = getCustomerrelationshipsOfAccount(context, "customerrelationship", nameId, pguid, role);
int count = 0;
count = ds.BusinessEntities.Count;
if (count + correction > 0)
{
changeCustomerrelationshipNamberOfAccount(context, new Key(pguid), new CrmBoolean(true));
}
else
{
changeCustomerrelationshipNamberOfAccount(context, new Key(pguid), new CrmBoolean(false));
}
}

private DynamicEntity getCustomerrelationshipById(IPluginExecutionContext context, Guid pguid, String nameId, String nameRoleId)
{
TargetRetrieveDynamic target = new TargetRetrieveDynamic();
target.EntityId = pguid;
target.EntityName = "customerrelationship";

ColumnSet columnSet = new ColumnSet();
columnSet.AddColumn(nameId);
columnSet.AddColumn(nameRoleId);

// Create a retrieve request object.
RetrieveRequest retrieve = new RetrieveRequest();
retrieve.Target = target;
retrieve.ColumnSet = columnSet;
retrieve.ReturnDynamicEntities = true;

// Create a response reference and execute the retrieve request.
ICrmService service = context.CreateCrmService(false);
RetrieveResponse response = (RetrieveResponse)service.Execute(retrieve);
DynamicEntity pentity = (DynamicEntity)response.BusinessEntity;
return pentity;
}



}
}
Miniaturansicht angehängter Grafiken
Klicken Sie auf die Grafik für eine größere Ansicht

Name:	customerrelatinship.PNG
Hits:	509
Größe:	74,6 KB
ID:	6088   Klicken Sie auf die Grafik für eine größere Ansicht

Name:	crm error on save&close.PNG
Hits:	495
Größe:	116,0 KB
ID:	6089  

Klicken Sie auf die Grafik für eine größere Ansicht

Name:	БП.PNG
Hits:	488
Größe:	168,9 KB
ID:	6090  
Angehängte Dateien
Dateityp: txt CustomerrelationPlugin.txt (21,0 KB, 526x aufgerufen)
Alt 26.08.2010, 15:23   #2  
Гуревич Денис ist offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Registriert seit: 04.08.2008
Ort: Москва
Еще бы пара строчек кода и уже далеко не каждый взялся бы вникнуть в его суть...

А можно осторожно спросить, что мешает Вам отладить этот плагин в дебаггере?
__________________
Опыт позволяет ошибаться гораздо увереннее.
This post has been rated by: a33ik (1).
Alt 27.08.2010, 10:07   #3  
u.rastegaev ist offline
u.rastegaev
Участник
 
64 / 10 (1) +
Registriert seit: 03.08.2010
Да кода многовато сорри я не так давно занялся MS crm около 1.5 месяца, а тему сюда вообще впервые создаю. в след раз учту этот косяк читабельности темы

Ничего не мешает я его отлаживал:
1) если при изменении отношения нажимать save and close,то он корректно проходит нужные if 'ы и конкретно условие где проверяется не пустое ли поле "Роль1" тоже правильно проходит. а в конце вместо закрытия окна с отношением в этом же окне остается ошибка(ее скрин я прикрепил к теме)
2) а если save нажимать то переменная РОЛЬ1получает значение не "пусто" которое я ставлю, а то значения что было при открытии (это во время дебага видно)

а)Мне просто интересны мысли насчет ошибки.
б) интересно почему при save он не сохраняет "пусто"
в) и вопрос немного отвлеченный от темы: если у меня в папке C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly лежат предыдущие версии этого плагина и они были зарегистрированы на туже сущность событие и т.д что текущая версия плагина, может ли быть так что исполняется не последняя версия плагина а какая то из старых? причем предыдущии версии разрегистрированы, но iisreset не делал
__________________
rurik
Alt 28.08.2010, 13:19   #4  
Артем Enot Грунин ist offline
Артем Enot Грунин
Moderator
Benutzerbild von Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.912 / 623 (28) +++++++
Registriert seit: 16.08.2007
Ort: Пермь!
Blog-Einträge: 151
Что значит предыдущие? Вы их нумеруете что ли вместо того, чтобы заменять? Я обычно отлаживаюсь так:
1. Настраиваю проект, чтобы собранные бинарные файлы и (pdb) сохранялись в папке assembly.
2. При регистрации сборки, указываю сохранять ее в базе. Отладка при этом работает нормально.
3. Изменяю код, собираю, обновляю в системе, после чего подключаюсь к процесу и отлаживаю.
Перезагрузка IIS в этом случае не всегда требуется. Случай когда требуется очень легко отличить - если дебагер не подключается, то надо ресетить.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Alt 29.08.2010, 20:07   #5  
u.rastegaev ist offline
u.rastegaev
Участник
 
64 / 10 (1) +
Registriert seit: 03.08.2010
по поводу отладки: 1) и 2) делаю именно так как и вы. просто пытался удалить файлы с ошибкой после того как я разрегистрировал соответствующую им сборку пишет что их использует w3pp процесс, соответственно приходится либо iisreset и отлаженное класть с тем же именем либо первый разрегиваю кладу отлаженное с другим именем и его регю

А что вы(Артем Enot Грунин) имеете в виду под "обновляю в системе"? в папке assembly. меняете бинарные файлы и (pdb) ? это? и он их подцепляет и работает уже новая сборка?(я просто не знаю каких действий достаточно чтобы заработала измененная сборка)

А на счет ошибки есть мысли? хотя бы в какую сторону копать) ?
__________________
rurik
Alt 30.08.2010, 14:26   #6  
u.rastegaev ist offline
u.rastegaev
Участник
 
64 / 10 (1) +
Registriert seit: 03.08.2010
а можно ли сделать поле обязательным к заполнению?(сущность "отношение с клиентом" нередактируема) или как то в плагине обязать пользователя вводить это поле иначе не будет сохранятся
P.S.лезть в базу и делать поле обязательным это вариант рискованный
__________________
rurik

Geändert von u.rastegaev (30.08.2010 um 15:58 Uhr)
Alt 30.08.2010, 20:40   #7  
Артем Enot Грунин ist offline
Артем Enot Грунин
Moderator
Benutzerbild von Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.912 / 623 (28) +++++++
Registriert seit: 16.08.2007
Ort: Пермь!
Blog-Einträge: 151
Сделать поле обязательным можно в настройках соответствующего атрибута через интерфейс системы. Просто откройте на редактирование нужный атрибут и установите нужный уровень требований.
По поводу обновить в системе: плагин регистратор позволяет не только регистрировать, но и обновлять сборку при внесении в нее изменений. Если вы выбрали опцию "хранить сборку в базе", то без принудительного обновления при помощи утилиты вы новый код в процесс не подгрузите. Если сборку хранить в каталоге bin (при регистрации плагина), то собирать в него проект не получится - сервер будет блокировать сборку до вызова iisreset.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Alt 31.08.2010, 09:45   #8  
u.rastegaev ist offline
u.rastegaev
Участник
 
64 / 10 (1) +
Registriert seit: 03.08.2010
В том то и проблема что через интерфейс системы этого сделать нельзя, сущность не кастомизабельная и атрибут "Роль1" тоже нередактиируем

по поводу обновить: как именно? в PluginRegistrationTool выделяю сборку -> правая кнопка-> update->появляется окно как при регистрации новой сборки -> выбираю файл новой сборки-> ок и все? теперь в этом плагине работает новая сборка, ту которую я только что выбрал?

а по поводу ошибки есть идеи? кстати я зарегил на эту же сущьность на те же события с теми же имейджами пустой плагин(я имею ввиду конструктор + execute пустой без моего кода) тоже самое и что самое странное опять keyNotFoundException: вообще не понятно(
Zitat:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;
using Microsoft.Crm.Sdk.Query;
using System.Xml;

namespace test_empty_2
{
public class noticeOnCustomerrelationshipPlugin : IPlugin
{
public noticeOnCustomerrelationshipPlugin(string unsecureConfig, string secureConfig)
{}
public void Execute(IPluginExecutionContext context)
{}
}
}
__________________
rurik
Alt 31.08.2010, 15:41   #9  
Гуревич Денис ist offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Registriert seit: 04.08.2008
Ort: Москва
Сразу два вопроса:
1. А сборка-то подписана?
2. А Вы уверены, что именно этот плагин падает? Ну т.е. если его регистрацию задисэблить, то ошибка исчезает?
__________________
Опыт позволяет ошибаться гораздо увереннее.
Alt 01.09.2010, 14:12   #10  
u.rastegaev ist offline
u.rastegaev
Участник
 
64 / 10 (1) +
Registriert seit: 03.08.2010
1) вы имеете ввиду ключем? да подписана
2) я разрегистрировал плагин - ошибка осталась, но у меня все таки сомнения в чистоте эксперимента, сегодня вечерком ребутну Crm и напишу,пропала ошибка или нет.
__________________
rurik
Alt 01.09.2010, 20:04   #11  
u.rastegaev ist offline
u.rastegaev
Участник
 
64 / 10 (1) +
Registriert seit: 03.08.2010
сейчас ребутнул crm( iisreset ) ошибка осталась.
__________________
rurik
Alt 01.09.2010, 20:35   #12  
Гуревич Денис ist offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Registriert seit: 04.08.2008
Ort: Москва
Таким образом, можно сделать довольно уверенный вывод о том, что источником ошибки является не вышеуказанный плагин. Есть еще другие плагины? Отключайте их по одному и смотрите, когда пропадет ошибка.
__________________
Опыт позволяет ошибаться гораздо увереннее.
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
CRM DE LA CREME! Update Rollup 7 for Microsoft Dynamics CRM 4.0 Blog bot Dynamics CRM: Blogs 0 26.10.2009 07:05
CRM DE LA CREME! Update Rollup 6 for Microsoft Dynamics CRM 4.0 Blog bot Dynamics CRM: Blogs 0 29.08.2009 11:05
CRM DE LA CREME! Microsoft CRM 4.0 Update Rollup Best Practices Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05
Microsoft Dynamics CRM Team Blog: Update Rollup 2 for Microsoft Dynamics CRM 4.0 - More Info Blog bot Dynamics CRM: Blogs 0 12.02.2009 13:05
Microsoft Dynamics CRM Team Blog: Update Rollup 2 for Microsoft Dynamics CRM 4.0 Blog bot Dynamics CRM: Blogs 0 20.01.2009 21:05

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 16:42 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.