![]() |
#2 |
Заноза в заднице
|
![]()
Ну-с, сам и начну...
Первый пример, котроый хотел бы представить на всеобщий обзор - пример из SDK по поиску дубликатов записей организации при вводе новой. Дабы всё не пересказывать - прикрепил архивчик duplicatedetection.rar с файлами этого примера. Файлов немного, к тому же пристутствует Readme-файл, инструкции которого следует выполнить пошагово. Однако, читая readme можно отметить первый момент, который не очень понятен (по крайней мере мне): ну сгенерили мы библиотеку Microsoft.Crm.Sdk.Wsdl.dll, ну а дальше-то что. Там есть данные о том, что где-то надобно его выложить, но буквально два слова. Не буду разбирать подробности моих умозаключений, но не будет ил столь любезен кто-нибудь сказать точно, куда надо её поместить для успеха, либо же, кто-то может поведать некие правила или принципы, по которым можно установить, куда же всё-таки надо эту библиотеку положить? Про библиотеку можно забыть, создав новый проект, подключив его к сайту CRM в IIS и добавив в веб-ссылки этого проекта ссылку на службу crmservice, которая располагается обычно по ссылке: http:// < имя сервера crm > /mscrmservices/2006/crmservice.asmx Дальше, пример страницы checkforduplicateaccount.aspx надо добавить в проект и попробовать сбилдить. У меня сбилдилось всё обалденно, но когда я попытался запустить это хозяйство для проверки (на всякий случай: для корректной работы указанного примера необходимо к ссылке запуска странички, справа добавлять параметр, например: "?name=%D0%90%D1%80%D0%B5%D0%BD"), получил невнятную ошибку в классе Reference.cs. Собственно, упомянутый файл класса - это не что иное, как класс созданный при добавлении ссылки на службу crmservice. Буквально, ошибка заключается в том, что при выполнении строки кода страницы aspx: RetrieveMultipleResponse retrieved = (RetrieveMultipleResponse)service.Execute(retrieve); в коде класса происходит обращение к строкам: public Response Execute([System.Xml.Serialization.XmlElementAttribute(Namespace="http://schemas.microsoft.com/crm/2006/WebServices")] Request Request) { object[] results = this.Invoke("Execute", newobject[] { Request}); а ссылка, упомянутая в этих строках не работает, то есть буквально, при её выполнении, броузер выдает ошибку 404 Not Found. Ессно, добавив код в событие формы OnSave() из приложенного js-файла, я ничего не добился, поскольку ошибка не давала исполнять страничку aspx. Код странички был переписан, таким образом, чтобы избавиться от конструкции кода service.Execute, в результате чего рабочая странчка aspx стала такой, как в прикрепленном файле CheckForDuplicateAccount.rar. И напоследок совет: в примере, событие OnSave() формы организации снабжено условием, при выполнении которого проверка на дубликаты выполняется только при создании нового элемента. Таким образом проверку можно обойти, создав элемент с уникальным именем, сохранив его и потом открыть для изменения. Я у себя это условие убрал и проверка на дубликаты выполняется всегда. Всем успехов в работе! ![]() Последний раз редактировалось Likefire; 14.12.2007 в 12:17. |
|
|
|