powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / SSIS и WebService
15 сообщений из 15, страница 1 из 1
SSIS и WebService
    #38958675
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Пишу в Script Task-е на C# обращение к webservice. Но столкнулся с проблемой.

В описании сервиса в качестве входного параметра метода используется структура (класс).
Код: c#
1.
2.
3.
4.
5.
public partial class ZwsLoyMaSave {
        
        private ZswsMaControl isMaControlField;
        
        private ZswsMa[] itMaField




Код: c#
1.
2.
3.
4.
5.
6.
7.
public ZswsMa[] ItMa {
            get {
                return this.itMaField;
            }
            set {
                this.itMaField = value;
            }




Сам ZswsMa в описании сервиса выглядит так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public partial class ZswsMa {
        
        private string activityTypeField;
        
        private string externalCardNuField;
        
        private decimal activityDateField;
и т.д.




Я соответственно в скрипте объявил их:
Код: c#
1.
2.
      ZwsLoyMaSave zws = new ZwsLoyMaSave();
        ZswsMa zwsma = new ZswsMa();



Объявил сам метод
Код: c#
1.
ZWS_LOY_MA_SAVE wMa_Save = new ZWS_LOY_MA_SAVE();




Далее присвоил значения
Код: c#
1.
2.
3.
4.
5.
zws.IsMaControlField ="0"

zwsma.ActivityType = "ЕЕЕЕЕЕЕЕЕЕ";
zwsma.ExternalCardNu = "333333333";
и т.д.




И теперь пытаю присвоить:
Код: c#
1.
zws.itMa = zwsma




И далее я б передал zws в качестве параметра методу. Но на zws.itMaField = zwsma ругается. Как же мне присвоить теперь заполненную структуру?
Ошибка следующая
Ошибка 2
Неявное преобразование типа "SC_1635cd09ba8843b2840092a612b90976.csproj.c1.ZswsMa"
в "SC_1635cd09ba8843b2840092a612b90976.csproj.c1.ZswsMa[]" невозможно
main.cs 53 20 sc_1635cd09ba8843b2840092a612b90976
...
Рейтинг: 0 / 0
SSIS и WebService
    #38958695
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81,
Дык ItMa - это массив объектов класса ZswsMa, а zwsma - это один объект класса. Надо как-то так:
Код: c#
1.
2.
3.
4.
zws.itMa = new ZswsMa[]
{
    zwsma
};
...
Рейтинг: 0 / 0
SSIS и WebService
    #38958814
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно поподробнее? Я не силен еще в этом.
Сам WebService я поправить не могу. я просто использую веб сылку и смотрю что да как в обозревателе. Соответственно я вижу, что интересуемый метод имеет один параметр вот такого вида:
Код: c#
1.
public ZwsLoyMaSaveResponse ZwsLoyMaSave([System.Xml.Serialization.XmlElementAttribute("ZwsLoyMaSave", Namespace="urn:sap-com:document:sap:soap:functions:mc-style")] ZwsLoyMaSave ZwsLoyMaSave1)



Я так понял, что передается класс ZwsLoyMaSave. Иду к определению класса, там следующее:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public partial class ZwsLoyMaSave {
        
        private ZswsMaControl isMaControlField;
        
        private ZswsMa[] itMaField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
        public ZswsMaControl IsMaControl {
            get {
                return this.isMaControlField;
            }
            set {
                this.isMaControlField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
        [System.Xml.Serialization.XmlArrayItemAttribute("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)]
        public ZswsMa[] ItMa {
            get {
                return this.itMaField;
            }
            set {
                this.itMaField = value;
            }
        }
    }



Далее иду к определению ZswsMa, там следующее:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
    public partial class ZswsMa {
        
        private string activityTypeField;
        
        private string externalCardNuField;
        
        private decimal activityDateField;
        
        private string activityTzField;
        
        private string tranSeqNumField;
        
        private string retailStoreIdField;
        
        private decimal amountField;
        
        private string promotionFlagField;
        
        private string parametr1Field;
        
        private string parametr2Field;
        
        private string productIdField;
        
        private decimal productQuantityField;
        
        private decimal positionLineField;
        
        private string prodcategoryIdField;
        
        private decimal pointAmountField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]



Исходя из просмотренных определений в скрипте пишу следующее:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
       ZwsLoyMaSave zws = new ZwsLoyMaSave();
        ZswsMa zwsma = new ZswsMa();
        ZWS_LOY_MA_SAVE wMa_Save = new ZWS_LOY_MA_SAVE();
        ZwsLoyMaSaveResponse wMASave = new ZwsLoyMaSaveResponse();

        zwsma.ActivityType = "уууууууу";
        zwsma.ExternalCardNu = "333333333";
        zwsma.ActivityDate = 20150507151732;
        zwsma.ActivityTz = "RUS03";
        zwsma.RetailStoreId = "Store 2";
        zwsma.Parametr1 = "A2222222";

        zws.IsMaControl.SaveMode = "0";



Когда я все заполнил, соответственно я должен в ItMa в zws присвоить заполненный массив для того чтобы передать требуемый параметр в WebService
Код: c#
1.
wMASave = wMa_Save.ZwsLoyMaSave(zws);



И вот с присвоением у меня проблема.
...
Рейтинг: 0 / 0
SSIS и WebService
    #38958833
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По наводке Axeleron сделал так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  ZwsLoyMaSave zws = new ZwsLoyMaSave();
        zws.ItMa = new ZswsMa[0];
        ZWS_LOY_MA_SAVE wMa_Save = new ZWS_LOY_MA_SAVE();
        ZwsLoyMaSaveResponse wMASave = new ZwsLoyMaSaveResponse();

        zws.ItMa[0].ActivityType = "MSH_FORMRETURN";
        zws.ItMa[0].ExternalCardNu = "K000000000871";
        zws.ItMa[0].ActivityDate = 20150507151732;
        zws.ItMa[0].ActivityTz = "RUS03";
        zws.ItMa[0].RetailStoreId = "Store 2";
        zws.ItMa[0].Parametr1 = "A2222222";

        zws.IsMaControl.SaveMode = "0";

        wMASave = wMa_Save.ZwsLoyMaSave(zws);



Теперь ругается, что "Индекс находился вне границ массива."
...
Рейтинг: 0 / 0
SSIS и WebService
    #38958867
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81,
А почему вы упорно игнорируете мой код выше?
...
Рейтинг: 0 / 0
SSIS и WebService
    #38958874
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С массивом ошибку поборол. Нужно было при объявлении указать параметр 1, а к массиву обращаться непосредственно указав элемент 0.
...
Рейтинг: 0 / 0
SSIS и WebService
    #38958875
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AxeleronSemen81,
А почему вы упорно игнорируете мой код выше?
Я не игнорирую. Я наоборот воспользовался им. Вот
Код: c#
1.
zws.ItMa = new ZswsMa[1];



А далее заполняю, указав
Код: c#
1.
zws.ItMa[0].ActivityType = "УУУУУУУУУ";
...
Рейтинг: 0 / 0
SSIS и WebService
    #38959073
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, ничего не вышло. Ругается, что не задана ссылка на объект. Я уже ничего не понимаю ((((
...
Рейтинг: 0 / 0
SSIS и WebService
    #38959087
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81Не, ничего не вышло. Ругается, что не задана ссылка на объект. Я уже ничего не понимаю ((((
Тогда - книжка по Web сервисам в руки
...
Рейтинг: 0 / 0
SSIS и WebService
    #38959105
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronSemen81Не, ничего не вышло. Ругается, что не задана ссылка на объект. Я уже ничего не понимаю ((((
Тогда - книжка по Web сервисам в руки
книжка по C# , по сервисам - рано
...
Рейтинг: 0 / 0
SSIS и WebService
    #38959114
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen81AxeleronSemen81,
А почему вы упорно игнорируете мой код выше?
Я не игнорирую. Я наоборот воспользовался им. Вот
Код: c#
1.
zws.ItMa = new ZswsMa[1];



Здесь забыл создать то, что заполнять будешь

Semen81А далее заполняю, указав
Код: c#
1.
zws.ItMa[0].ActivityType = "УУУУУУУУУ";
...
Рейтинг: 0 / 0
SSIS и WebService
    #38959445
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pationSemen81пропущено...

Я не игнорирую. Я наоборот воспользовался им. Вот
Код: c#
1.
zws.ItMa = new ZswsMa[1];



Здесь забыл создать то, что заполнять будешь

Semen81А далее заполняю, указав
Код: c#
1.
zws.ItMa[0].ActivityType = "УУУУУУУУУ";



(((( Вы правы, я не силен в C#, просто увидел пример и решил по нему сделать. И все бы ничего, если бы не структура в качестве параметра в веб сервисе. Вот на ней я и запнулся. Подскажите, что значит "Забыл создать то, что заполнять будешь"?
...
Рейтинг: 0 / 0
SSIS и WebService
    #38959505
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался. Правильно я понял?
Код: c#
1.
 ZswsMa[] zwsMa = new ZswsMa[1]


А потом нужно еще
Код: c#
1.
zwsMa[0] = new ZswsMa()
...
Рейтинг: 0 / 0
SSIS и WebService
    #38959527
Semen81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уверенный шаг вперед - это хороший пинок сзади
Спасибо. Вроде все получилось. Сделал так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
       ZWS_LOY_MA_SAVE wMa_Save = new ZWS_LOY_MA_SAVE();
        ZwsLoyMaSave zws = new ZwsLoyMaSave();
        ZswsMa[] zwsMa = new ZswsMa[1];
        ZswsMaControl zwsMaCon = new ZswsMaControl();
        ZwsLoyMaSaveResponse wMASave = new ZwsLoyMaSaveResponse();

        zwsMaCon = new ZswsMaControl();
        zwsMaCon.SaveMode = "0"; 

        zwsMa[0] = new ZswsMa();

        zwsMa[0].ActivityType = "УУУУУУУУУУУУУУ";
        zwsMa[0].ExternalCardNu = "333333333";
        zwsMa[0].ActivityDate = 20150507151732;
        zwsMa[0].ActivityTz = "RUS03";
        zwsMa[0].RetailStoreId = "Store 2";
        zwsMa[0].Parametr1 = "1111111111111";

        zws.IsMaControl = zwsMaCon;
        zws.ItMa = zwsMa;

        wMASave = wMa_Save.ZwsLoyMaSave(zws);
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
SSIS и WebService
    #39801443
alexcid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Semen81,

понимаю, что тема уже старая, но все же. Не могли бы вы прислать пример response, который возвращается при регистрации.
Можно в личку. Спасибо!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / SSIS и WebService
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]