|
Обмен со сторонними ПО используя XSD, XDTO | ☑ | ||
---|---|---|---|---|
0
Said_We
26.05.18
✎
04:26
|
Стоит задача обмена базы 1С с другими ПО, используя XDTO.
Как я вижу решение задачи: 1. Создается пакет XDTO, который в виде схемы XSD передается сторонним ПО. Сторонние ПО могут быть как на 1С так и нет. Как будут выгружать данные сторонние ПО фиолетово - это их задача, формат XSD с нашей стороны. Те что на 1С могут использовать только ФабрикуXDTO и не могут СериализаторXDTO, так как физическая структура хранения данных в ПО источнике совсем другая и может совсем не пересекаться. Используя ФабрикуXDTO необходимо прописывать заполнение каждого ЗначенияXDTO ручками. 2. Собственно чтение XML и ручной разбор всего, что пришло. Существуют варианты, как эту задачу решить проще? Понятно что "1С:Конвертация данных" не подходит, так как сторонние ПО совсем не 1С. Но выгрузку, если сторонняя программа всё же 1С, может быть можно упростить. Может быть как-то составить пакет XDTO, что бы загрузку можно было осуществлять проще. Нужен совет. |
|||
1
lEvGl
гуру
26.05.18
✎
08:32
|
можно построчно писать хмл с приведением к примитивным типам
|
|||
2
MaxS
26.05.18
✎
08:36
|
(0)> Понятно что "1С:Конвертация данных" не подходит, так как сторонние ПО совсем не 1С.
Непонятно почему такой вывод. Кто мешает формировать сторонними программами xml файл в универсальном формате обмена EnterpriseData, например. На стороне 1С в этом случае практически ничего не нужно дорабатывать. В самом простом случае берем обработку из состава конфигурации "Выгрузка загрузка EnterpriseData", скармливаем ей текстовую строку из сторонней программы и она загружает данные в себя, так же может отдать в строку. |
|||
3
Said_We
28.05.18
✎
12:35
|
(2) Совсем не типовая конфигурация. Нет там никакого EnterpriseData. Поэтому и создаю свой ПакетXDTO, что бы можно было быстро давать структуру на вход для стороннего ПО.
(1) Как-то это совсем руками. Не удобно. На 77 похоже, до КД так делали. А тут ПакетXDTO помогает только писать удобнее визуально. Но все же "Пишите Шура пишите"... |
|||
4
VitShvets
28.05.18
✎
13:00
|
Так XDTO же это объектная модель. Есть схема, заполнил её, выгрузил (передал) XML. При загрузке обратная история - скормил файл фабрике XDTO, получил объект с данными. Да руками придётся писать соответствие полей документа-справочника и атрибутам-узлам XML. Но если хочется как в конвертации, чтобы поменьше руками писать, то надо двигаться, как написано в (2). EnterpriseData есть в БСП, накатить на любую смописную конфигурацию вполне реально. См. документацию по БСП, раздел "Обмен данными". https://its.1c.ru/db/bsp246doc#content:1827:1
|
|||
5
Said_We
28.05.18
✎
23:12
|
(4) "EnterpriseData есть в БСП, накатить на любую самописную конфигурацию вполне реально" - Предлагаешь перетянуть формат типовых объектов и не использовать не один из них? Или я что-то не понял?
|
|||
6
Сияющий в темноте
29.05.18
✎
09:54
|
Вы просто не встречали сторонние системы,где нет ни документов ни справочников,а есть только выборки из базы данных.
И,когдп система может вам выплюнуть только поток действий с уникальным ключом только по транзакции ручное формирование xml не покажется такой сложной вещью. |
|||
7
Apokalipsec
29.05.18
✎
10:01
|
В (0) какой-то поток сознания по 1му пункту.
Смотрите - у вас есть пакетXDTO, который вы нарисовали руками, система вам начинает передавать пакет, в который добавлено новое поле и он у вас ломается на валидации, вам придется сначала поправить пакет, потом код. Используя сериализатор - вы просто будете обходить свойства проверяя их наличие, есть - заполнили, нет - пошли дальше/ругнулись. Для начала определитесь с архитектурой вашего решения, чтобы потом не мучиться. |
|||
8
DrShad
29.05.18
✎
10:09
|
зачем вам пакетXDTO, если у вас есть XSD
юзайте DOM |
|||
9
Said_We
29.05.18
✎
10:28
|
(7) Не пойму какой сериализатор, если источник левые базы в левых ПО. Эти левые ПО не знают про ссылки 1С ничего.
Если добавлены поля и я их не описал в пакете, то они не будут переданы. Если описал, то будут переданы. Если не передали и поле обязательное, то должно прерывать прием по ошибке пакета. (8) XDTO визуально удобнее и не требует приведение в XSD после сторонних редакторов в вид, который 1С понимает. Один раз делаем в стороннем и один раз переносим в 1С, далее редактируем в 1С. В моем случае объектов не много, можно и в 1С помучиться. (6) В моем случае как раз выборки. Аналогов объектов в сторонних системах нет. Собственно по этому я и не понимаю про какой сериализатор ведется речь в (7). |
|||
10
DrShad
29.05.18
✎
10:30
|
(9) сам то понял что сказал?
|
|||
11
Said_We
29.05.18
✎
10:43
|
(10) Примерно да. :-) Не сильно прозрачно когда описание данных и сами данные в одном месте. Я плохо понимаю как это объяснить разработчикам стороннего ПО - у них нет аналогов объектов, только выборки.
|
|||
12
DrShad
29.05.18
✎
10:45
|
(11) у них есть XSD - больше ничего не нужно
|
|||
13
Apokalipsec
29.05.18
✎
10:48
|
(9) Если они руками собирать будут пакет, то они могут добавить поля и им пофигу будет на схему. Про сериализатор это я неправильно сам написал, простое чтениеXML.
Можно ещё веб-сервис запилить, если они умеют. С пакетом и без файликов.) |
|||
14
VitShvets
29.05.18
✎
11:23
|
(5) Предлагаю для начала почитать. БСП можно накатить избирательно - только необходимый минимум.
|
|||
15
Said_We
29.05.18
✎
11:28
|
(14) Ссылку в (4) я почитал. Не понимаю чем мне это поможет. Не писать сам механизм обмена файлами по FTP по почте и т.д. У меня сейчас вопрос не в этом.
|
|||
16
DrShad
29.05.18
✎
11:30
|
пример XSD в студию, т.к. тебе более всего необходимо в ней разобраться
|
|||
17
mTema32
29.05.18
✎
11:50
|
(0) Два года назад я использовал 1-ый вариант. Но задача была немного другая. Была схема от стороннего источника данных, я ее свою самописку запилил и потом читал xml с помощью XDTO.
Сегодня опять похожая задача встает. Буду ее решать через EnterpriseData. Да, придется схему в конвертации 3.0 пилить и отдавать сторонним разработчикам, т.е. он будет совсем не типовая. Но мне кажется в таком формате будет удобнее разработку загрузки вести в КД3.0. |
|||
18
MaxS
29.05.18
✎
20:31
|
Решал как-то задачу синхронизации базы на MS SQL c 1С УПП.
Пытались сделать массовое решение для связи этого стороннего решения с любой 1С. Сделал всё на EnterpriseData. Обработка в УПП прямыми запросами извлекает данные и создаёт xml файл в формате ED, потом другая обработка в УПП импортирует xml файл в базу 1С. Несколько месяцев возился. Пришел к выводу, что нужно сделать промежуточную 1С конфигурацию на БСП, которая напрямую работает со сторонней программой. Такое решение позволит настроить обмен с любой 1С базой. Сегодня УПП, завтра ERP и не нужно заново писать обмен. Реализовать идею не удалось, т.к. заказчик не одобрил. |
|||
19
Said_We
31.05.18
✎
12:51
|
(18) Если в EnterpriseData нет твоих объектов, то чем это поможет? Свой формат EnterpriseData делать отдельно сбоку?
|
|||
20
Said_We
31.05.18
✎
12:52
|
(18) А регистры сведений как предполагается в EnterpriseData переносить? Не вижу их в перечне объектов.
|
|||
21
Tateossian
31.05.18
✎
12:56
|
Народ, а скиньте шаблон, начало интересует, как написать шаблон XSL, чтобы из вот этого:
<?xml version="1.0" encoding="utf-8"?> <DocumentObject.ЗаказПокупателя xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Ref>377b50c4-edf5-11e6-9306-0cc47a067dfb</Ref> <DeletionMark>false</DeletionMark> родилось вот это: <?xml version="1.0" encoding="UTF-8"?> <DocumentObject.Задание xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Ref>377b50c4-edf5-11e6-9306-0cc47a067dfb</Ref> <DeletionMark>false</DeletionMark> <Date>2017-02-08T14:53:14</Date> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="/"> <DocumentObject.Задание xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <xsl:copy-of select="./Ref" /> </DocumentObject.Задание> </xsl:template> <xsl:template match="DocumentObject.ЗаказПокупателя"> </xsl:template> </xsl:stylesheet> Не могу понять, как идти ниже от корня по иерархии |
|||
22
Tateossian
31.05.18
✎
12:57
|
Как root/Ref выдернуть и дальше соседей всех?
|
|||
23
MaxS
31.05.18
✎
13:35
|
(19) Например, у Вас есть коробка для перевозки гвоздей, на ней так и написано "Гвозди!". Вдруг Вам понадобилось перевезти шурупы, но нет коробки "Шурупы!". Почему бы не использовать коробку для гвоздей? Нужно лишь предупредить кладовщика на той стороне, чтобы выгружали в ящик для шурупов.
Так же и с EnterpriseData. Подбираем максимально подходящий объект и переносим что угодно, в самом объекте ED или в AdditionalInfo. Для переноса регистра сведений штрихкоды используется объект формата Справочник.Штрихкоды и т.п. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |