Имя: Пароль:
1C
 
8.1 XDTO проблема при создании ЗначениеXDTO
0 DS_SD
 
06.06.08
17:23
Подскажите, пожалуйста, что делаю не так...
При сериализации справочника возникает проблема с реквизитами, которые имеют тип перечисления и не заполнены

ОбъектXDTO.Проверка() выдает следующее:

Структура объекта не соответствует типу: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.ТипыЦенНоменклатуры
Проверка свойства 'СпособРасчетаЦены':
   форма: Элемент
   имя: {http://v8.1c.ru/8.1/data/enterprise/current-config}СпособРасчетаЦены
   тип: {http://v8.1c.ru/8.1/data/enterprise/current-config}EnumRef.СпособыРасчетаЦены
Отсутствует обязательное свойство

Присваиваю значение свойству так:

ОбъектXDTO.СпособРасчетаЦены = Фабрика.Создать(ТипЗначенияXDTO, Спр.СпособРасчетаЦены);

ТипЗначенияXDTO содержит тип {http://v8.1c.ru/8.1/data/enterprise/current-config}EnumRef.СпособыРасчетаЦены
1 regniws
 
06.06.08
17:43
ну, видимо потому что в схеме, данные поля обязательны для заполнения.
2 DS_SD
 
06.06.08
17:52
Если ты о свойстве "Возможно пустое". пробовал, менял - все одно и тоже.

Кстати, функция возвращает такую ошибку:

{(1)}: Ошибка при вызове метода контекста (Создать): Ошибка проверки данных XDTO:
Значение: '' не соответствует простому типу: {http://v8.1c.ru/8.1/data/enterprise/current-config}EnumRef.СпособыРасчетаЦены
Значение не соответствует значениям фасета перечисления
3 regniws
 
06.06.08
17:55
выгрузи пакет xdto в xsd схему и посмотри на нее глазками в разделе, где проверяются твои перечисления. Может на что тебя натолкнет.

Может глукануло и просто список доступных значений полей не соответствует тому, что есть в базе.
4 DS_SD
 
06.06.08
18:07
Вот так объявляется перечисление:
<xsd:simpleType name="EnumRef.СпособыРасчетаЦены">
   <xsd:restriction base="xsd:string">
       <xsd:enumeration value="ПоПроцентнойНаценкеНаБазовыйТип"/>
       <xsd:enumeration value="ПоВхождениюБазовойЦеныВДиапазон"/>
   </xsd:restriction>
</xsd:simpleType>


Вот так справочник:
<xsd:complexType name="CatalogObject.ТипыЦенНоменклатуры">
   <xsd:sequence>
       ...
       ...
       ...
       <xsd:element name="СпособРасчетаЦены" type="tns:EnumRef.СпособыРасчетаЦены"/>
   </xsd:sequence>
</xsd:complexType>

мысли уже кончились...
5 regniws
 
06.06.08
18:11
хм.. ну, думаю, что ты у себя проверил, что всего два значения у тебя перечисления в конфигураторе!?

Кстати, в xsd твоем не сказано. что name="СпособРасчетаЦены" необязательно для заполнения.
6 DS_SD
 
06.06.08
18:20
1) да, эта часть конфы идентична.
2) просто, поскольку это роли не сыграло, вернул взад... еще раз проверил, появилась строка :
<xsd:element name="СпособРасчетаЦены" nillable="true" type="tns:EnumRef.СпособыРасчетаЦены"/>

толку от нее не увидел
7 regniws
 
06.06.08
18:23
хм.. а я знаю..
короче, нужно посмотреть, как сериализуется пустое значение перечисления.

nilable = true, говорит, что его вообще можно не заполнять, но
пустое значение и отсутствие значения - это разные вещи :)))

например, если сериализуется в "", то это не nilable = true, и к тому же по рестрикшенам xsd
<xsd:simpleType name="EnumRef.СпособыРасчетаЦены">
   <xsd:restriction base="xsd:string">
       <xsd:enumeration value="ПоПроцентнойНаценкеНаБазовыйТип"/>
       <xsd:enumeration value="ПоВхождениюБазовойЦеныВДиапазон"/>
   </xsd:restriction>
</xsd:simpleType>

это тоже не допустимо

попробуй в xsd Руками поправить

<xsd:simpleType name="EnumRef.СпособыРасчетаЦены">
   <xsd:restriction base="xsd:string">
       <xsd:enumeration value=""/>
       <xsd:enumeration value="ПоПроцентнойНаценкеНаБазовыйТип"/>
       <xsd:enumeration value="ПоВхождениюБазовойЦеныВДиапазон"/>
   </xsd:restriction>
</xsd:simpleType>


или во что оно там сериализуется.
8 regniws
 
06.06.08
18:23
а, ну и потом xsd загрузить обратно
9 DS_SD
 
06.06.08
18:30
))) Кошмар!!! Получилось! Спасибо тебе большое!
А если не ручками, а в конфигураторе, мышкой, такое получится?
10 regniws
 
06.06.08
18:31
не знаю :)) никогда не работал с xdto :))))
11 regniws
 
06.06.08
18:32
да, и хотелось бы, так сказать, мужской комплемент  :)

зачетный вопрос, инетерсно было разобраться :)))
12 DS_SD
 
06.06.08
18:37
Похоже нет. Ничего подобного там не нашел... Ну 1С... :)) Ну такое то надо предусмотреть (при экспорте XML-схемы).
Ладно, теперь буду по аналогии мучать составные типы! Спасибо!
13 regniws
 
06.06.08
18:39
:)
14 DS_SD
 
06.06.08
18:41
11 Спасибо ) надеюсь, ветка кому-н. еще пригодиться
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс