Ошибка при созданни фабрики XDTO на основе xsd #619227


#0 by metanal
Здравствуйте. помогите разобраться. при выполнении кода [code] возникает ошибка: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (СоздатьФабрикуXDTO)    Фабрика = СоздатьФабрикуXDTO(Пути); по причине: Ошибка проверки модели XDTO: xdto-package-3.3    пакет: Импортируемый пакет типов '' не определен поиск ничего дельного пока не дал...
#1 by sapphire
И? Значит не определен тип.
#2 by Skylark
По ходу что-то не нравится в схеме. Попробуй схему импортировать вручную в конфигурацию.
#3 by metanal
в файле xsd. есть строчка с импортом. там тоже какая то ошибка. щас постараюсь текст достать
#4 by metanal
"не удалось разрешить импортируемую схему для пространства имен"
#5 by metanal
содержимое импортируемого файла property.xsd: содержимое главного файла: <xs:schema targetNamespace="http://**/awms" xmlns:awms="http://**/awms"           xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:uo="http://**/awms/user-objects"
#6 by sapphire
Вроде как с такими конструкциями xs:import namespace 1С не работает :(
#7 by metanal
а эту ошибку я уже не в 1С прочитал. ее мне visual studio показывает
#8 by metanal
без импорта действительно заработало. но с импортом тоже хотелось бы разобраться
#9 by Саша Питерский
Почему у тебя первая схема описана как uo:schema, а не xs:schema?
#10 by metanal
файл не я писал. я только разбираюсь. но мне тоже было бы интересно услышать ответ на этот вопрос
#11 by Саша Питерский
Лично у меня проблем с конструкцией import не возникало. Попробуй поменяй uo на xs и посмотри что получится.
#12 by metanal
ругается на все типы <uo:
#13 by metanal
"недопустимый дочерний элемент"
#14 by Саша Питерский
Заменяй все на xs
#15 by metanal
теперь возникла другая проблема: xsd: файл xml: <warehouses>        <warehouse wh_name="WH1" wh_UID="{009e8f41-412c-11dd-8b47-000feaf1b3e0}">Склад AWMS           при попытке чтения через сериализатор возникает ошибка: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (ПрочитатьXDTO)    Сериализатор.ПрочитатьXDTO(КорневойОбъектXDTO.warehouses.warehouse); по причине: Ошибка преобразования данных XDTO: НачалоСвойства: {    Форма: Элемент    Тип: { по причине: Ошибка преобразования данных XDTO: НачалоСвойства: wh_name    Форма: Атрибут    Тип: { кто знает куда копать?
#16 by Саша Питерский
Что это за xml файл такой без заголовков и определенного namespace? Что вот этой строкой хочется получить? Сериализатор.ПрочитатьXDTO(КорневойОбъектXDTO.warehouses.warehouse);
#17 by metanal
таблицу значений с 1 строкой. или соответствие.что угодно с типом 1С а не объектXDTO
#18 by Саша Питерский
А где у xml заголовок? Где в xsd описание того, в какой тип 1С должен превратиться wh_UID?
#19 by metanal
я только выдержки из файлов выложил.сами по себе файлы очень большие
#20 by metanal
а можно по подробнее про описание типа в xsd?
#21 by metanal
наверное этого мне и не хватает
#22 by Саша Питерский
Надо начать с того, что проверить, что файл соответствует схеме.
#23 by metanal
весь файл очень большой. я уверен что что-нибудь да не так. а как все таки привязать тип атрибута к типу 1С?
#24 by Саша Питерский
Загрузить схему в конфигурацию, затем открыть ее на редактирование, выбрать атрибут и выбрать у него тип, соответствующий нужному объекту 1С.
#25 by metanal
спасибо. попробую
#26 by metanal
вот что получилось: я правильно понимаю , что мне нужно назначить Тип элемента? из какого пространства имен выбирать тип. 1с core? все варианты которые удалось пробовать не лишают меня ошибки из
#27 by Саша Питерский
Приведи код вызова конструктора, которым ты создаешь тип Сериализатор.
#28 by metanal
#29 by Саша Питерский
1. Тебе нужно указать тип элемента, то есть сказать например, что в указанном атрибуте хранится значение типа СправочникСсылка.Склады. Если посмотреть список пакетов, то такую информацию можно найти в пакете 2. Если ты меняешь тип в загруженном пакете, то потом либо внеси изменения в свой xsd, либо поменяй свой код создания фабрики на создание из метаданных, а не из файла 3. Я бы еще попробовал в код    КорневойОбъектXDTO = Фабрика.ПрочитатьXML(ЧтениеXML, Неопределено); В качестве второго параметра не указывать неопределено, а либо вообще его пропустить, либо явно указать тип, который ты из файла читаешь.
#30 by metanal
если не указывать "неопределено" вываливалось с ошибкой. мне не обязательно привязывать к складам. мне бы хотя бы реквизит wh_name указать как строку. пространства имен у меня почему то нет. конфа не типовая
#31 by Саша Питерский
С какой ошибкой? Раз ошибка, значит укажи конкретный тип. Про хотя бы указать как строку не понял. КорневойОбъектXDTO.warehouses.warehouse.__content разве у тебя не является строкой? Указанное пространство имен указывает на твою текущую конфигурацию. Ей все равно, типовая конфа или нет.
#32 by metanal
на строку вроде больше не ругается: но теперь тип не определяется ) сейчас буду пробывать. свойства __content к сожалению у меня и в помине нет.
#33 by metanal
и пакет я всегда экспортирую. до этого я хотя бы догадался
#34 by metanal
для wh_name в xsd проовал указывать все возможные типы из пространства имен . ничего это не изменило <xs:attribute name="wh_name" use="required" type="ns1:**">
#35 by Саша Питерский
Если я правильно понимаю как должна работать платформа, Сериализатор по GUID вернет тебе ссылку на элемент склада. У тебя GUID содержится в поле wh_UID. Соответственно можно попытаться в сериализатор передать КорневойОбъектXDTO.warehouses.warehouse.wh_UID Зачем ты пихаешь в схему типы из я не понимаю, поэтому ничего сказать не могу.
#36 by metanal
затем что со складом это частный случай. потом у меня типы которые можно только как структуру прочитать. у меня возникает подозрение что мне вообще сериализация не нужна. а работать просто с фабрикой придется...
#37 by metanal
спасибо за помощь
#38 by Саша Питерский
Я предполагаю, что если ты укажешь тип из пространства имен что я указал, платорма сама тебе при чтении подставит нужную ссылку. Я предполагаю что Сериализация нужна тогда, когда у тебя в xml есть GUID ссылки из ИБ, но при этом в самой схеме нет возможности указать пространство имен 1С. Если в твоем xml GUID указан вообще не из 1С взятый, то никакую автоматическую сериализацию ты не сделаешь.
#39 by metanal
кто знает почему при чтении типа атрибута я всегда получаю AnySimpleType, хотя у меня например явно задан тип
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С