03.07.2008, 11:20 | #21 |
Участник
|
Цитата:
Сообщение от RumataEstor
К сожалению, я пока не могу предоставить код X++, но как использовать веб-сервисы из Аксапты тут уже обсуждали. Например, здесь: Покорить .NET в DAX чтобы сделать ручным ReportingServices
Если хотите посмотреть, что вы можете сделать с помощью веб-сервисов, то можете открыть в браузере интересующий сервис (например, для действий со списками http://ваш-портал/_vti_bin/lists.asmx), полный список сервисов вы можете посмотреть по адресу Program Files\...путь-к-папке-портала...\ISAPI\*.asmx Есть справка по веб-сервисам WSS: http://msdn.microsoft.com/en-us/library/ms445760.aspx Может кому пригодиться - Вот X++ код моей программки, которая читает из библиотеки документов бокументы и статус их утверждения: X++: static void main(Args args) { SPListsProxy.SharePointLists.Lists spLists; //внешняя прокси-сборка, позволяющая работать с web-сервисом System.Exception ex; System.Net.ICredentials creds; InteropPermission perm; // переменные для инициализации запроса к web-сервису System.Xml.XmlNode xmlNullNode; System.String strNullString = ""; // переменные для рзбора XML-отклика сервера XmlDocument xmlDocument = new XmlDocument(); XmlNodeList xmlNodeList; XmlNode xmlNode; XmlNode currentNode; XmlNamedNodeMap attributes; System.Xml.XmlNode xmlResult; System.Xml.XmlNode xmlDocLibNode; str strResult; int i=0; // параметры метода // TODO (позже нужно будет вынести в настроечную таблицу) str strDocLibName = "Project Documents"; // имя библиотеки документов str strSPWebSite = "[URL]http://v-sp-01/sites/AxPortal/_vti_bin/Lists.asmx[/URL]"; // узел SharePoint (обязательно в таком формате) str strTitleFieldName = "ows_LinkFilename"; str strFieldApprovalName = "ows__x0423__x0442__x0432__x0432__x0435__x0440__x0413__x0440_"; ; //проверяем возможность доступа к сборке perm = new InteropPermission(InteropKind::ClrInterop); if (perm == null) { return; } perm.assert(); // иницииализируем прокси-класс, позволяющий обращаться к вебсервису. spLists = new SPListsProxy.SharePointLists.Lists(); spLists.set_Url(strSPWebSite); // указываем узел (обязательно в таком формате) creds = System.Net.CredentialCache::get_DefaultCredentials(); // указываем Credentials пользователя spLists.set_Credentials(creds); try { // Формируем запрос к web-сервису: // формируем элементы - пустышки, что бы они могли пройти в качестве параметров вызова web-сервиса strNullString = ClrInterop::null('System.String'); xmlNullNode = ClrInterop::null('System.Xml.XmlNode'); // вызываем метод web-сервиса для библиотеки strDocLibName xmlResult = spLists.GetListItems(strDocLibName, strNullString, xmlNullNode, xmlNullNode, strNullString, xmlNullNode, strNullString); // разбираем ответ (ожидается, что это xml-список c перечислением элементов списка) strResult = ClrInterOp::getAnyTypeForObject(xmlResult.get_InnerXml()); xmlDocument.loadXml(strResult); xmlNodeList = xmlDocument.firstChild().childNodes(); info(strfmt("Элементов в списке: %1", xmlNodeList.length() )); if(xmlNodeList.length() < 1) { return; } // перебираем коллекцию элементов, показывая имя и статус утверждения(ID) currentNode = xmlNodeList.nextNode(); do { attributes = currentNode.attributes(); //получили аттрибуты записи for(i=0; i < attributes.length(); i++) { xmlNode = attributes.item(i); if(xmlNode.name() == strTitleFieldName) { info(strfmt("Документ = %1", xmlNode.value())); } if(xmlNode.name() == strFieldApprovalName) { info(strfmt("Статус утверждения = %1", xmlNode.value())); } } currentNode = xmlNodeList.nextNode(); } while(currentNode != null); } catch (exception::CLRError) { ex = ClrInterop::getLastException(); while( ex ) { info( ex.get_Message() ); ex = ex.get_InnerException(); } } catch (exception::Error) { info("Другая ошибка."); } CodeAccessPermission::revertAssert(); info("Конец алгоритма"); } |
|
Теги |
ax4.0 |
|
|