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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.07.2008, 11:20   #21  
GromRom is offline
GromRom
Участник
 
63 / 10 (1) +
Регистрация: 22.10.2007
Thumbs up
Цитата:
Сообщение от RumataEstor Посмотреть сообщение
К сожалению, я пока не могу предоставить код X++, но как использовать веб-сервисы из Аксапты тут уже обсуждали. Например, здесь: Покорить .NET в DAX чтобы сделать ручным ReportingServices

Если хотите посмотреть, что вы можете сделать с помощью веб-сервисов, то можете открыть в браузере интересующий сервис (например, для действий со списками http://ваш-портал/_vti_bin/lists.asmx), полный список сервисов вы можете посмотреть по адресу Program Files\...путь-к-папке-портала...\ISAPI\*.asmx

Есть справка по веб-сервисам WSS: http://msdn.microsoft.com/en-us/library/ms445760.aspx
Да, я решил поставленную передо мной проблему именно этим способом. Спасибо, RumataEstor!

Может кому пригодиться - Вот 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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Arijit Basu: DAX 4.01 .NET Business Connector: Microsoft.Dynamics.BusinessConnectorNet Blog bot DAX Blogs 3 30.09.2008 01:17
DAX4 берет данные из SharePoint - как закодить? Qaz Qwerty DAX: Программирование 3 04.09.2008 05:22
Inside Dynamics AX 4.0: Working with the .NET Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15
Dynamics AX: .Net Adapter and why? Blog bot DAX Blogs 0 26.06.2007 02:54
ALEG: Проект "Фишка недели" и первый пост - Microsoft Dynamics™ AX .NET Business Connector Blog bot DAX Blogs 1 22.11.2006 09:43

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

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

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