Показать сообщение отдельно
Старый 19.06.2008, 14:18   #61  
KingPeas is offline
KingPeas
Участник
Аватар для KingPeas
 
163 / 35 (2) +++
Регистрация: 09.01.2007
Адрес: Россия, Новосибирск
:(
Цитата:
Сообщение от RumataEstor Посмотреть сообщение
Уверен, что ReportingServices типа Microsoft.Dynamics.ReportingServices.ReportingService2005? Уж с методами все должно быть нормально, ведь ListChildren нормально отрабатывает.
Тип правильный. Во первых в определении явно указываю
X++:
Microsoft.Dynamics.ReportingServices.ReportingService2005   ReportingServices = new Microsoft.Dynamics.ReportingServices.ReportingService2005();
Во вторых специально ввел для проверки в месте вызова
X++:
 info (ReportingServices.ToString());
возвращает
Microsoft.Dynamics.ReportingServices.ReportingService2005
так что ошибка непонятно где( Может у кого есть возможность в 2009 посмотреть код, там вроде описание необходимых параметров есть, возможно и ошибки более детальные выдаются...
Вот результирующий код
X++:
static void RSGetReportParameter2(Args _args)
{
    Microsoft.Dynamics.ReportingServices.ReportingService2005   ReportingServices = new Microsoft.Dynamics.ReportingServices.ReportingService2005();
    Microsoft.Dynamics.ReportingServices.CatalogItem            catalogItem;
    Microsoft.Dynamics.ReportingServices.ItemTypeEnum           itemTypeEnum;

    Microsoft.Dynamics.ReportingServices.ReportParameter        reportParameter;
    SRSItemTypeEnum                                             ItemType;
    System.Net.ICredentials cred = CLRInterop::staticInvoke("System.Net.CredentialCache", "get_DefaultCredentials");

    System.Exception                                            exception;
    System.Array                                                ar, ar2, arEmpty;
    System.Text.StringBuilder                                   sb = new System.Text.StringBuilder();
    System.Uri                                                  url = new System.Uri('http://ax-dev/ReportServer');
    str         name,
                path;
    int         i, j, arLength, arLength2, typeElement;
    str         type;

    anytype getFieldValue(CLRObject _object, str  _fieldName)
    {
        System.Type                     t;
        System.Reflection.FieldInfo     fieldInfo;
        ;

        t = _object.GetType();
        fieldInfo = t.GetField(_fieldName);
        return fieldInfo.GetValue(_object);

    }
    ;

    try
    {
        ReportingServices.set_WebServiceUrl('http://ax-dev/ReportServer/ReportService2005.asmx');
        ReportingServices.set_Credentials(cred);
        ar = ReportingServices.ListChildren('/',true);
        arLength = ar.get_Length();
        for (i=0; i< arLength; i++)
        {
            catalogItem = ar.GetValue(i);
            path = getFieldValue(catalogItem,"Path");
            name = getFieldValue(catalogItem,"Name");
            typeElement = getFieldValue(catalogItem,"Type");
            ItemType = typeElement;
            info (strfmt('%1 - %2 (%3)',ItemType, path, name));
            ar2 = ReportingServices.GetReportParameters(path, null, false, null, null);
            arLength2 = ar2.get_Length();
            for (j = 0; j < arLength2; j++)
            {
                reportParameter = ar2.GetValue(j);
                name = getFieldValue(reportParameter,"Name");
                info(strFmt('--Параметр %1',name));
            }

        }
    }
    catch (Exception::CLRError)
    {
        info('Ошибка .NET');
        exception = CLRInterop::getLastException();
        name = exception.ToString();
        info (name);

    }

    info('Конец');

}
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ.