Имя: Пароль:
1C
1С v8
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;