|   |   | 
| 
 | Обмен со сторонними ПО используя 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. Для переноса регистра сведений штрихкоды используется объект формата Справочник.Штрихкоды и т.п. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |