|
v8: Работа с web-сервисами | ☑ | ||
---|---|---|---|---|
0
Iovlev
26.12.12
✎
07:35
|
Не могу разобраться как заполнять данные типа complexType
|
|||
1
Iovlev
26.12.12
✎
07:39
|
Есть вот такая вот xsd-шка:
<complexType name="ReportType"> <annotation> <documentation>Отчет - Распределение средств субсидии на 2012 год по принятым обязательствам (контрактам, договорам, счетам) </documentation> </annotation> <sequence> <element name="DataYear"> <annotation> <documentation> Год, за который подаются сведения </documentation> </annotation> <simpleType> <restriction base="int"> <minExclusive value="1900"></minExclusive> <maxExclusive value="2100"></maxExclusive> </restriction> </simpleType> </element> <element name="DataStateDate" type="date"> <annotation> <documentation> Дата, по состоянию на которую сведения </documentation> </annotation> </element> <element name="ReportData"> <annotation> <documentation>Сведения отчета</documentation> </annotation> <complexType> <sequence> <element name="Section211" type="tns:SectionType"> <annotation> <documentation>Заработная плата и начисления на выплаты по оплате труда (ст.211) </documentation> </annotation> </element> <element name="Section213" type="tns:SectionType"> <annotation> <documentation>Начисления на выплаты по оплате труда (ст.213) </documentation> </annotation> </element> <element name="Section212" type="tns:SectionType"> <annotation> <documentation>Прочие выплаты (ст.212)</documentation> </annotation> </element> <element name="Section290" type="tns:SectionType"> <annotation> <documentation>Прочие расходы (ст.290)</documentation> </annotation> </element> <element name="Section221" type="tns:GroupedSectionType"> <annotation> <documentation>ст.221 "Услуги связи"</documentation> </annotation> </element> <element name="Section222" type="tns:GroupedSectionType"> <annotation> <documentation>ст.222 "Транспортные услуги"</documentation> </annotation> </element> <element name="Section223" type="tns:GroupedSectionType"> <annotation> <documentation>ст.223 "Коммунальные услуги"</documentation> </annotation> </element> <element name="Section224" type="tns:GroupedSectionType"> <annotation> <documentation>ст.224 "Арендная плата за пользование имуществом" </documentation> </annotation> </element> <element name="Section225" type="tns:GroupedSectionType"> <annotation> <documentation>ст.225 "Работы, услуги по содержанию имущества" </documentation> </annotation> </element> <element name="Section226" type="tns:GroupedSectionType"> <annotation> <documentation>ст.226 "Прочие работы, услуги"</documentation> </annotation> </element> <element name="Section310" type="tns:GroupedSectionType"> <annotation> <documentation>ст.310 "Увеличение стоимости основных средств" </documentation> </annotation> </element> <element name="Section320" type="tns:GroupedSectionType"> <annotation> <documentation>ст.320 "Увеличение стоимости нематериальных активов" </documentation> </annotation> </element> <element name="Section340" type="tns:GroupedSectionType"> <annotation> <documentation>ст.340 "Увеличение стоимости материальных запасов" </documentation> </annotation> </element> </sequence> </complexType> </element> </sequence> </complexType> <simpleType name="CellValueType"> <annotation> <documentation>Тип значения ячейки отчета</documentation> </annotation> <restriction base="decimal"></restriction> </simpleType> <complexType name="SectionType"> <annotation> <documentation>Статья из двух заполняемых столбцов отчета (без сумм обязательств)</documentation> </annotation> <sequence> <element name="FinanceAmount" type="tns:CellValueType" nillable="true"> <annotation> <documentation>Доведенные суммы финансирования согласно договору (тыс.руб.)</documentation> </annotation> </element> <element name="CashExecution" type="tns:CellValueType" nillable="true"> <annotation> <documentation>Кассовое исполнение (тыс.руб.)</documentation> </annotation> </element> </sequence> </complexType> <complexType name="GroupedSectionType"> <annotation> <documentation>Статья из всех заполняемых столбцов отчета</documentation> </annotation> <complexContent> <extension base="tns:SectionType"> <sequence> <element name="CommitmentsContracts" type="tns:CellValueType" nillable="true"> <annotation> <documentation>Принятые обязательства / контракты, договоры (с проведением конкурсных процедур)</documentation> </annotation> </element> <element name="CommitmentsPayment" type="tns:CellValueType" nillable="true"> <annotation> <documentation>Принятые обязательства / оплата договоров, счетов и иных платежных документов (заключаемых без проведения конкурсных процедур)</documentation> </annotation> </element> <element name="CoordinationAmount" type="tns:CellValueType" nillable="true"> <annotation> <documentation>Сумма обязательств на согласовании в Роскомнадзоре </documentation> </annotation> </element> </sequence> </extension> </complexContent> </complexType> Не могу заполнить ReportData |
|||
2
Iovlev
26.12.12
✎
07:48
|
По идее это массив структур типа SectionType и GroupedSectionType
Переменную типа ReportData не могу создать. ТипWSПараметра_ReportData = Прокси.ФабрикаXDTO.Пакеты.Получить("http://esoft.ru/sei/rkn/SubsidiesReport/entity/ReportType").Получить("ReportData"); WSПараметр_ReportData = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра_ReportData); Ломается и говорит что Ошибка при вызове метода контекста (Создать) WSПараметр_ReportData = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра_ReportData); по причине: Несоответствие типов (параметр номер '1') |
|||
3
Fragster
гуру
26.12.12
✎
08:07
|
ТипWSПараметра_ReportData = неопределено, инфа 146%
|
|||
4
Fragster
гуру
26.12.12
✎
08:08
|
и вообще читать СП полезно иногда...
должно быть что-то типа ТипWSПараметра_ReportData = Прокси.ФабрикаXDTO.Тип(UriПространстваИмен, "ReportData"); WSПараметр_ReportData = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра_ReportData); |
|||
5
Fragster
гуру
26.12.12
✎
08:09
|
ну и чтобы меньше говнокода было - если идет обращение через 2 и более точек несколько раз к одной и той же сущности - правильнее будет сделать типа
Фабрика = Прокси.ФабрикаXDTO; Фабрика.... |
|||
6
Iovlev
28.12.12
✎
01:54
|
Как это не прескорбно, но этот код тоже не работает . . .
Фабрика = Прокси.ФабрикаXDTO; ТипWSПараметра_ReportData = Фабрика.Тип("http://esoft.ru/sei/rkn/SubsidiesReport/entity/ReportType","ReportData"); WSПараметр_ReportData = Фабрика.Создать(ТипWSПараметра_ReportData); |
|||
7
Fragster
гуру
28.12.12
✎
08:12
|
(6) а ТипWSПараметра_ReportData чему равен? несли неопределено - значит накосячил с определением типа
|
|||
8
Fragster
гуру
28.12.12
✎
08:13
|
ну и судя по схеме должно быть таки ReportType в определении типа
|
|||
9
Iovlev
28.12.12
✎
08:49
|
Да, именно неопределено. Там помоему невозможно накосячить, берешь пространство имен, я считаю что оно такое же как и у ReportType, и всё!!!
Что то я не понял где толжен быть ReportType в определении типа? |
|||
10
Fragster
гуру
28.12.12
✎
11:59
|
(9) ты пытаешься создать тип ReportData, а у тебя такого нету, у тебя есть reporttype
|
|||
11
Fragster
гуру
28.12.12
✎
12:02
|
вообще 1с плохо работает с вложенными типами (работает, но надо код лишний писать), лучше определение сделать типа:
<xs:complexType name="ReprotType"> <xs:sequence> <xs:element type="ReportData"/> </xs:sequence> </xs:complexType> <xs:complexType name="ReportData"> <xs:sequence> <xs:element type="xs:string"/> </xs:sequence> </xs:complexType> |
|||
12
Fragster
гуру
28.12.12
✎
12:03
|
т.е. для вложенных элементов-объектов в определении пилить свой тип
|
|||
13
Kasper076
28.12.12
✎
12:34
|
А заголовок у файла схемы есть?
|
|||
14
Iovlev
29.12.12
✎
03:01
|
Просто wsdl-ка предостовляется сторонней организацией, и на ее изменение я никак повлиять не могу
|
|||
15
Iovlev
16.01.13
✎
02:02
|
(11) "работает, но надо код лишний писать" Так и не могу пробить этот тип, каком "лишнем коде" была речь, можно поподробнее!!!
|
|||
16
На стороне добра
16.01.13
✎
11:05
|
(14) сохрани описание в xml файл и отредактируй его
|
|||
17
Fragster
гуру
16.01.13
✎
11:27
|
(15) дружище, зачем мне писать за тебя код? который достаточно просто гуглится при этом...
|
|||
18
Jolly Roger
16.01.13
✎
11:41
|
(15) вложенный тип можно вытащить чем-то вроде:
типReportData.Свойства.Получить("ReportType").Тип |
|||
19
Iovlev
17.01.13
✎
01:49
|
(17) Если б он так просто гуглился, я бы не поднимал этот вопрос . . .
|
|||
20
Iovlev
17.01.13
✎
01:51
|
(16) wsdl-ка постоянно меняется у них, добавляются новые функции и т.п., т.е. это не статическая вещь, которую один раз сделали и забыли. А постоянно менять у себя это тоже не вариант
|
|||
21
Iovlev
17.01.13
✎
02:12
|
(18) На прямую так не получилось. Если не трудно по подробнее можно!?
|
|||
22
Jolly Roger
17.01.13
✎
08:52
|
(21) что не получилось-то?
|
|||
23
Iovlev
17.01.13
✎
10:42
|
(22) Получить переменную типа ReportType таким способом
|
|||
24
Jolly Roger
17.01.13
✎
11:55
|
(23) чо мешает-то?
|
|||
25
Iovlev
18.01.13
✎
01:22
|
(24) Ну вот так же примерно надо?
ТипWSПараметра_ReportType = Прокси.ФабрикаXDTO.Пакеты.Получить("http://esoft.ru/sei/rkn/SubsidiesReport/entity/ReportType").Получить("ReportType"); WSПараметр_ReportType = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра_ReportType); WSПараметр_ReportType.DataYear = Год(ТекущаяДата()); WSПараметр_ReportType.DataStateDate = ТекущаяДата(); ТипWSПараметра_ReportData = Прокси.ФабрикаXDTO.Пакеты.Получить("http://esoft.ru/sei/rkn/SubsidiesReport/entity/ReportType").Получить("ReportData"); WSПараметр_ReportData = ТипWSПараметра_ReportData.Свойства.Получить("ReportType").Тип; ТипWSПараметра_SectionType = Прокси.ФабрикаXDTO.Пакеты.Получить("http://esoft.ru/sei/rkn/SubsidiesReport/entity/ReportType").Получить("SectionType"); ТипWSПараметра_GroupedSectionType = Прокси.ФабрикаXDTO.Пакеты.Получить("http://esoft.ru/sei/rkn/SubsidiesReport/entity/ReportType").Получить("GroupedSectionType"); WSПараметр_SectionType_Section211 = Прокси.ФабрикаXDTO.Создать(ТипWSПараметра_SectionType); WSПараметр_SectionType_Section211.FinanceAmount = 0; WSПараметр_SectionType_Section211.CashExecution = 0; WSПараметр_ReportData.Section211 = WSПараметр_SectionType_Section211; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |