Имя: Пароль:
1C
 
EnterpriseData 1.8 Схемы-> С# классы.
,
0 MidysaProger
 
13.03.21
08:00
Всем доброго времени суток!

Наша компания является разработчиком товароучетного софта (не на базе 1С)
Появилась задача сделать выгрузку в 1С с помощью формата EnterpriseData 1.8.
Для формирования C# классов из XSD схем используем фреймворковский xsd.exe
В данном случае столкнулись с проблемой - формирование классов невозможно в связи с использованным в схемах элементом ##any.

Предупреждение при проверке схемы: Символ шаблона "##any" допускает элемент "http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.8:ДополнительныеРеквизиты" и создает неоднозначность модели содержимого. Модель содержимого должна быть сформирована таким образом, чтобы в процессе проверки последовательности информационных единиц элемента часть, содержащаяся в ней прямо, опосредованно или неявно, с которой должна проверяться каждая единица последовательности, в свою очередь могла быть однозначно определена без изучения содержимого или атрибутов этой единицы и получения дополнительных данных об остальных единицах в последовательности.

И такая ругань возникает на каждый элемент схемы.
Вопрос к знатокам 1С, как обойти подобные ошибки? Возможно что-то не знаем про 1С и необходима еще какая-то схема.

P.S. Спасибо за ответы. Если подобная тема уже поднималась - прошу не кидаться тапками, а указать на нее. Поиском пользоваться могу и умею, но по данному вопросу ничего найти не удалось.
1 Dmitry1c
 
13.03.21
08:37
(0) может вам лучше свой XDTO-пакет накидать для 1С.

Типовые и меняются, и устаревают. И сопровождать типовой тяжелее.
2 MidysaProger
 
13.03.21
08:46
Дмитрий, я прошу прощения, а можно с этого момента подробнее?)

У меня ситуация такая, что это может быть выгрузка в УТ, может быть в бухгалтерию и т.д. То есть думали сделать на типовой схеме, дабы упростить работу конечного пользователя, не ограничивая его.
Возможно, по незнанию, думали что было бы идеально привязываться именно к типовой схеме.
Так же рассматривали вопрос выгрузки через обработку "Универсальный обмен данными в формате XML" (ограничившись хотя бы выгрузкой в бухгалтерию), но схем этой выгрузки на просторах интернета найдено не было.

Буду благодарен за "пинок" в нужном направлении.
3 Dmitry1c
 
13.03.21
08:48
(2) пинка в нужном направлении не дам, т.к. подобного не делал

у вас вообще что за решение? фронт-офис какой-то?
4 Dmitry1c
 
13.03.21
08:49
(2) +если для разных конф - и для КА/УТ/БП/ЕРП, то, наверное, надо пытаться победить энтерпрайз дату
5 MidysaProger
 
13.03.21
08:50
Товароучетный софт.
То есть это и бек и фронт.
Но появились пользователи, бухгалтера и товароведы которых хотят видеть данные в удобном им формате.
Конечно, как минимум - это загрузка в бухгалтерию.
Как максимум - не ограничивать пользователя конфигурацией.
6 acht
 
13.03.21
10:09
(0) Причина-то ситуации в другом. У вас автоматичесекий инструмент не может автоматически создать код по валидной схеме. При этом то, что валидная схема пришла от 1С вообще никакой роли не играет. Точно также могла прийти и от Оracle какого-нибудь.

Пишите код ручками. Совсем обленились.
7 MidysaProger
 
13.03.21
10:16
Конечно, все можно написать ручками, но я считаю, что инструменты для того и создают, чтобы ручками меньше писанины было, Вы не согласны?

P.S. "Лень - двигатель прогресса" (с). И ни я это придумал ;-)
8 Вафель
 
13.03.21
10:59
может вам нужно другой инструмент раоты со схемами поискать.
схема в 1с вполне валидна
9 acht
 
13.03.21
11:14
(7) > но я считаю
И вот тут вот внезапно наступил вполне конкретный случай, которому глубоко похрен, что вы там считаете. Можете, конечно, пострадать на форумах, но писать все равно придется вручную.

> Лень - двигатель
Вот и создатели инструмента автогенерации так и подумали. И решили не заморачиваться с этим сценарием. Теперь шанс подвигать прогресс есть у вас. Что-то не так?
10 ДедМорроз
 
13.03.21
11:59
Там ещё проблема в том,что все,что не влезло в формат,как раз и пойдет в эти дополнительные данные,так что их использования не избежать,а также построить модель под любые данные через xdt не просто.
Когда мы делали интеграцию 1с с программой на C# тоже сначала пошли по пути использования схем,но потом плюнули и написали обмен через json,просто реализовав его чтение на стороне 1с,оказалось быстрее,понятнее и универсальные.
11 Garykom
 
гуру
13.03.21
13:53
(0) Наймите программиста 1С
12 Вафель
 
13.03.21
16:29
не ужто с# не поддерживает поля эни?
13 oleg_km
 
13.03.21
16:36
Может сделать утилиту, которая обработает все ##any
14 acht
 
13.03.21
16:39
(12) Поддерживает, почему нет. Точно так же как и java. Только если пользоватся маппингом в классы, то их поддержка начинает сильно зависить от прикладного смысла, поэтому и автогенерилки кода на них забивают или в лучшем случае делают тупую привязку к Object. Некоторые, правда в java, позволяют в процессе указать свои биндинги, но это же надо засучивать рукава и их писать.

А тут  "Лень - двигатель прогресса".