"Вырезание" ветки со связями из XDTO-схемы на примере EnterpriseData

29.01.26

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Использование xdto-схем резко увеличивает эффективность работы интеграций, в некоторых случаях экономит годы работы. ФабрикаXDTO не позволяет вырезать ветки из xsd-схем в статье приведен код, для выполнения этой задачи.

ФабрикаXDTO не позволяет вырезать ветки из xsd-схем, одновременно протягивая все ссылки по зависимым элементам. Ниже приведен код на примере большой xsd-схемы EnterpriseData, на других сложных схемах могут требоваться правки, на более простых схемах скорее всего отработает. 

 

 

В результате работы формируется массив структур c простыми типами для дальнейшей простой сериализации в JSON. 

Можно код взять за основу и реализовать с небольшими правками создание xsd-схемы

&НаСервере
Функция СоставитьСписокРеквизитовХозОперации(ВидХозОперации)
    
    ВерсияED = "1.20";
    СписокТиповED = ФабрикаXDTO.Пакеты.Получить("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/" + ВерсияED);
           
    ИтоговаяСтруктура = новый Структура("Имя, Тип, Свойства");
          
    ТаблицаТипов = Новый ТаблицаЗначений;  
    ТаблицаТипов.Колонки.Добавить("Имя");
    ТаблицаТипов.Колонки.Добавить("Тип");
    ТаблицаТипов.Колонки.Добавить("Свойства");  
    
    БылаНайденаОперация = Ложь;
    Для Каждого ОписаниеТипа ИЗ СписокТиповED Цикл
        Если СтрНайти(ОписаниеТипа.Имя, "Документ." + ВидХозОперации) <> 0 Тогда  
            ЗаполнитьРекурсивноСписокСвойствОбъектаXDTO(ОписаниеТипа, ТаблицаТипов, ИтоговаяСтруктура);    
            БылаНайденаОперация = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Если НЕ БылаНайденаОперация Тогда
        //TODO обработать ошибку    
    КонецЕсли; 
    
    Возврат ИтоговаяСтруктура;    
КонецФункции  

&НаСервере
Процедура ЗаполнитьРекурсивноСписокСвойствОбъектаXDTO(ТипОбъектаXDTO, ТаблицаТипов, СтруктураОбъекта)
    
    ПростойТип = "{http://www.w3.org/2001/XMLSchema}"; 
    ВерсияED = "1.20";
    ТипОбъект = "{http://v8.1c.ru/edi/edi_stnd/EnterpriseData/" + ВерсияED + "}";  
    СтруктураОбъекта.Имя = ТипОбъектаXDTO.Имя;
    СтруктураОбъекта.Тип = Строка(ТипОбъектаXDTO);  
            
    МассивСвойств = новый Массив();
    Для Каждого ДочернееСвойство Из ТипОбъектаXDTO.Свойства Цикл 
        СтруктураСвойства = новый Структура("Имя, Тип, Свойства");
        
        Если ТипЗнч(ДочернееСвойство.Тип) = Тип("ТипОбъектаXDTO")    
            И СтрНайти(ДочернееСвойство.Тип, ПростойТип) = 0
            И НЕ СтрНачинаетсяС(ДочернееСвойство.Тип.Имя, "Ссылка") Тогда // в ключевые свойства мы приходим по типу, поэтому обработки ссылки - это гарантированное зацикливание
            
            нТип = ТаблицаТипов.Найти(ДочернееСвойство.Имя,"Имя");//антизацикливание
            Если нТип = Неопределено Тогда  
                нов     =  ТаблицаТипов.Добавить();
                нов.Имя = ДочернееСвойство.Имя;
                нов.Тип = ДочернееСвойство.Тип;                  
                
                ЗаполнитьРекурсивноСписокСвойствОбъектаXDTO(ДочернееСвойство.Тип, ТаблицаТипов, СтруктураСвойства);  
                
                нов.Свойства = СтруктураСвойства.Свойства; 
            Иначе
                СтруктураСвойства.Имя       = нТип.Имя; 
                СтруктураСвойства.Тип       = Строка(нТип.Тип);
                СтруктураСвойства.Свойства = нТип.Свойства; 
            КонецЕсли;            
        Иначе             
            СтруктураСвойства.Имя = ДочернееСвойство.Имя; 
            СтруктураСвойства.Тип = Строка(ДочернееСвойство.Тип);             
            Если СтрНачинаетсяС(СтрЗаменить(СтруктураСвойства.Тип, ТипОбъект, ""), "Тип") Тогда // это ссылки на класс ТипыЗначений
                 СтруктураСвойства.Тип = Строка(ДочернееСвойство.Тип.БазовыйТип);        
             КонецЕсли;
        КонецЕсли;  
        МассивСвойств.Добавить(СтруктураСвойства);
    КонецЦикла;    
    СтруктураОбъекта.Свойства = МассивСвойств;
    
КонецПроцедуры

 

Вступайте в нашу телеграмм-группу Инфостарт

Пример кода XDTO xsd ED Enterprise Data

См. также

НДС 22% Учетные задачи ККМ Файловый обмен (TXT, XML, DBF), FTP 1С 8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Бухгалтерский учет Налоговый учет НДС Платные (руб)

Готовое обновление для конфигурации 1С:Управление торговлей 10.3, 1С:Комплексная автоматизация 1.1 , 1С:Управление производственным предприятием 1.3 обеспечивающее полную поддержку новой ставки НДС 22%. Для 1С:УТ 10.3 реализована поддержка печати чеков ККМ, а также Правила обмена с 1С:БП 3.0. Решение встраивает необходимые изменения в перечисления и документы, включая торговые операции и печатные формы.

12200 руб.

16.12.2025    7297    81    0    

75

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    186505    349    283    

411

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

22650 руб.

12.06.2017    157934    945    317    

476

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.264.x) и БП 3.0 (3.0.192.x). Правила подходят для версии ПРОФ и КОРП.

38000 руб.

15.12.2021    32570    242    61    

182

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.25.x).

38000 руб.

23.07.2020    66066    308    84    

247

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

58000 руб.

29.10.2018    61340    77    128    

76

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Перенос данных из ЗУП 3 в ЗУП 3 | из ЗУП 3 в КА 2 | из ЗУП 3 в ERP | Оперативно обновляется при выходе новых релизов 1С | Готовые правила конвертации (КД 2) для перехода с "ЗУП 3" на "УП ред. 3" / "КА, ред. 2" / "ERP, ред. 2" |Переносится нормативно-справочная информация и документы с движениями

55200 руб.

11.01.2021    37200    33    56    

35

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16531 руб.

18.02.2016    199616    662    543    

559
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Оберон 17 29.01.26 10:12 Сейчас в теме
"Использование спортивных авто-каров резко увеличивает скорость перемещения, в некоторых случаях экономит годы работы. Производители не позволяют вырезать колеса, в статье приведен код, для выполнения этой задачи."
2. Dziden 14 29.01.26 11:10 Сейчас в теме
(1) у кого была такая задача, тот знает где это применить). Тут задача аллегория в стиле: "мне поставили задачу найти авто-кар для автогонок, а рекламы на продажу таких нигде нет. Где купить авто-кар?"

У меня лично спрашивали человек 5 как это реализовать. Также сам активно искал. Выложил статью, чтобы потом когда сам же искать буду нашел как сделать. Плюс чтобы ИИшка проиндексировала решение.
Для отправки сообщения требуется регистрация/авторизация