Использование XML-схемы из макета внешней обработки

Публикация № 1145749

Разработка - Системная интеграция - Обмен через XML

21
Простой способ использования XML-схем из макета внешней обработки.

Одним из наиболее эффективных способов чтения XML-файлов является использование метода ПрочитатьXML() глобальной ФабрикиXDTO. Но при использовании данного метода хорошо бы сразу иметь тип XML-документа, который, как правило, включен в конфигурацию как XDTO-пакет.

В случае, если мы обрабатываем XML-документ с помощью внешней обработки, включать в конфигурацию лишние XDTO-пакеты нет необходимости, можно использовать XML-схему, добавленную во внешнюю обработку как макет.

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

 

Если изначально у нас есть только XML-файл, необходимо получить из него XML-схему. Сделать это можно с помощью любого онлайн-конвертера «XML to XSD».

Исходный XML-файл:

Полученная XML-схема:

В сформированную схему добавляем пространство имен (уникальная строка-идентификатор схемы).  В нашем случае, пусть будет «http://SchemeTEST».

Далее во внешней обработке создаем макет с типом Текстовый документ и добавляем в него XML-схему.

Чтобы использовать добавленную схему, пишем следующий код:

Последовательность действий такая:

  1. В каталоге временных файлов создаем новый файл
  2. Получаем макет со схемой
  3. Записываем схему в созданный файл
  4. Создаем Фабрику XDTO.  При создании фабрики, передаем путь к созданному файлу, который уже содержит XML схему

Далее читать значения XML-файла будем с помощью метода ПрочитатьXML (), в который передаем не только сам XML документ, но и его тип, полученный из схемы.

 

21

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. vadver 38 28.10.19 20:21 Сейчас в теме
Очень интересно, каким образом у вас сочетается в заголовке XML "encoding="utf-8" и в коде
ТекстДок.Прочитать(ИмяВременногоФайла, "cp866")?

Это первое.
На закуску - ну научитесь теги "CODE" применять для оформления кода - вроде не сложно же
2. Milanick 28.10.19 22:14 Сейчас в теме
А какое практическое применение данного функционала?
3. dusha0020 896 29.10.19 11:47 Сейчас в теме
(2)
А какое практическое применение данного функционала?

Например когда схемы сервиса нет, а есть только инструкция по формированию запросов и образцы XML, которые Вы получаете в ответ на запросы. Тогда приводите XML ответы к XSD схемам, сохраняете их в макеты, пишите тонну кода и вот этой бородой в обработке заменяете стандартную WS ссылку.
Такой корявый подход к работе с клиентами, например, практикует французский маркетплейс CDiscount. Из моего опыта.
Можно, конечно, закачать схемы в XDTO пакеты конфигурации, но это мне не сильно нравится для работы с побочными и редко используемыми сервисами, да и разработка и отладка сервиса во внешней обработке намного проще.
4. capitan 1322 29.10.19 11:51 Сейчас в теме
Прекрасно.
Почему текстовый документ, когда схему можно сразу положить в макет как двоичные данные ?
5. Cерый 15 30.10.19 09:59 Сейчас в теме
В макеты удобно ложить все: дополнительные обработки, файлы правил обмена, файлы запросов:
ПолучитьМакет(ИмяМакета).Записать(ИмяФайла);
по аналогии с работой стандартного справочника ВнешниеОбработки
6. capitan 1322 30.10.19 14:24 Сейчас в теме
(5)Ложить может быть удобно и все, если не прибьют граммар-наци.
Но для каждого вида данных есть свой тип хранения.
В данном случае - этой выигрыш в скорости
8. Cерый 15 30.10.19 16:00 Сейчас в теме
Благодарю Вас за ответ, файловые операции могут быть сомнительны как в плане производительности, так и в плане качества кода,
в свое время пытался переписать типовой справочник ВнешниеОбработки для их исключения.
По крайней мере в макетах можно хранить тексты запросов:
Запрос.Текст=ПолучитьМакет("Макет").ПолучитьТекст()
без обрамлений 124-ми символами(|) типа:
|ВЫБРАТЬ
| Превдоним.Реквизит
и дальнейших игр с ними ...
(6)
7. PLAstic 218 30.10.19 14:37 Сейчас в теме
Спасибо, почерпнул пару новых моментов для себя. Как минимум, пригодится в высоконагруженных системах, остановка которых нежелательна.
9. UberElder 01.11.19 13:25 Сейчас в теме
Довольно интересный способ чтения из XML, возьму на заметку)
10. da_1c 9 03.11.19 17:35 Сейчас в теме
Можно без временных файлов, например так
	
        СтрокаXML = ЭтотОбъект.ПолучитьМакет("SchemaXSD").ПолучитьТекст();
	ЧтениеXML = Новый ЧтениеXML;	
	ЧтениеXML.УстановитьСтроку(СтрокаXML);
	Построитель = Новый ПостроительDOM;
	Документ = Построитель.Прочитать(ЧтениеXML);
	ПостроительСхемы = Новый ПостроительСхемXML;
	Схема = ПостроительСхемы.СоздатьСхемуXML(Документ.ЭлементДокумента);	
	НаборСхем = Новый НаборСхемXML;
	НаборСхем.Добавить(Схема);
	СвояФабрикаXDTO = Новый ФабрикаXDTO(НаборСхем);
Показать
dusha0020; IgorS; +2 Ответить
Оставьте свое сообщение

См. также

Быстрое создание наполненных коллекций 58

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции

Разберем самые частые способы создания коллекции, значения которой известны заранее. И сравним скорость их выполнения.

28.10.2019    3188    SeiOkami    51       

Преобразование XML в таблицу значений или иной объект 1С методом XSL преобразования 41

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Универсальные функции Обмен через XML

Сразу открою интригу, напрямую прочитать XML, не содержащий объект 1С, не удастся. Статья раскрывает способы привести XML к формату, который возможно прочитать средствами платформы.

24.10.2019    3108    kraspila    25       

Обертка функций Excel на русском. Ускорение процесса разработки. 41

Статья Программист Нет файла v8 Windows Бесплатно (free) Загрузка и выгрузка в Excel Универсальные функции

Устали переключаться с русского на английский и обратно при работе с таблицами Excel из 1С? Сборка наиболее необходимых функций и методов работы с Excel, обернутых в функции 1С на русском языке.

24.10.2019    2266    DmitryKotov    6       

Доработка конвертации данных КД2 (версии 2.1). Расширенная диагностическая информация при выгрузке по правилам из 1С 7.7 и при загрузке в 1С 7.7 3

Статья Программист Нет файла v7.7 v8 КД Бесплатно (free) Обмен данными 1С Перенос данных из 1С7.7 в 1C8.X Обмен через XML

Есть очень неприятная особенность при настройке обмена по правилам КД2 в момент отладки на стороне 1С 7.7, как при выгрузке из 1С 7.7, так и при загрузке в 1С 7.7. Непонятно, в каком конкретно месте формирования или разбора данных XML файла в какой именно момент споткнулась программа (произошел сбой). Я нашел способ вывода дополнительной диагностики, теперь точно известно, на каком элементе данных XML споткнулся модуль выгрузки V77Exp.ert (модуль загрузки V77Imp.ert). Теперь отладка правил обмена на стороне 1С 7.7 стала простой, выполняется на порядок проще.

18.10.2019    1074    ksnik    0       

Полезняшки по СКД и построителям. Просто код 45

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Универсальные функции

Полезные процедуры и функции для работы с построителями и СКД. Просто исходник.

10.10.2019    4033    Yashazz    45       

Полезные процедуры и функции для программиста 140

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Практика программирования Универсальные функции

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

07.10.2019    8950    HostHost    23       

Практика XDTO. Нюансы 53

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Обмен через XML

Некоторые практические моменты работы с XDTO. Дополнения к очевидному.

23.09.2019    4068    Yashazz    24       

Запись/Чтение XML, пример обмена по COM соединению 8

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Обмен через XML

Пример работы с XML, запись и чтение, обмен по COM между одинаковыми конфигурациями.

08.09.2019    1766    user5300    6       

Отслеживание выполнения фонового задания 141

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    10435    ids79    16       

Конвертация данных 2.0. Перенос справочника с иерархией групп и элементов 1

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Обмен через XML

Детективная история о том, как при переносе элементы справочника становились не "видимыми".

09.08.2019    1481    chagbig    4       

Конвертация 3.0. Пример доработки: два справочника в один 31

Статья Программист Нет файла v8 КД ERP2 БП3.0 Россия Бесплатно (free) Обмен через XML

Доработка правил конвертации путем расширения конфигурации: номенклатура и характеристика (ERP) в номенклатуру (БП).

15.05.2019    3632    forusing    4       

Сохранение запроса со всеми параметрами и временными таблицами 20

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Универсальные функции

Функция сохранения запроса со всеми параметрами и временными таблицами в формате *.q1c для открытия в консоли запросов с диска ИТС.

13.05.2019    2825    Serge R    5       

Обмен данными между УПП 1.3.64.х и БП 3.0 по расписанию через Универсальный обмен данными + План обмена 2

Статья Программист Нет файла v8 УПП1 Россия Windows Бесплатно (free) Обмен через XML Перенос данных из 1C8 в 1C8

Описание доработки конфигурации УПП 1.3.64.х для выполнения обмена данными по расписанию в БП 3.0. через обработку Универсальный Обмен Данными XML и План Обмена.

09.04.2019    2794    mrcamomile    0       

Иерархия справочника Сверху Вниз. Получаем произвольное количество родителей "верхнего" уровня 7

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

Иерархия справочника Сверху Вниз. Функция для получения произвольного количества родителей "верхнего" уровня. На примере справочника "Номенклатура".

28.03.2019    2312    obsfromekb    11       

Доработка проведения типовых документов в УТ 11.4, КА 2.4, ЕРП 2.4 101

Статья Программист Нет файла v8 v8::УФ ERP2 УТ11 КА2 Россия УУ Бесплатно (free) Практика программирования Универсальные функции Разработка

Различные варианты корректировки типовых механизмов проведения документов, без корректировки основной конфигурации. Использование расширений, подписок на событие и механизма локализации типовых документов.

22.03.2019    9537    ids79    14       

RabbitMQ + Конвертация Данных 3.0 181

Статья Системный администратор Программист Бизнес-аналитик Руководитель проекта Нет файла v8 КД Бесплатно (free) Внешние источники данных Обмен через XML Интеграция Перенос данных из 1C8 в 1C8

Предлагаем ознакомиться с хронологией проекта, проследить ход мыслей от снятия потребностей до реализации, и решить, удалось ли проектной команде найти оптимальное архитектурное решение под конкретный кейс заказчика путем совмещения двух известных, но до сих пор не пересекавшихся технологий, и получилось ли сложить плюсы и устранить минусы каждой из них.

21.03.2019    14783    barelpro    82       

Работа со строками: от простого к сложному 26

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Универсальные функции

Простые примеры работы со строками, в конце более читаемый разбор сложных текстов.

14.01.2019    8672    Evg-Lylyk    17       

Нумерация колонок субконто при выгрузке набора записей регистра бухгалтерии в таблицу значений 6

Статья Программист Нет файла v8 Бесплатно (free) Универсальные функции

Решение проблемы несовпадения номеров колонок с номерами субконто на счете при выгрузке в таблицу значений.

14.01.2019    2603    The Ded    3       

EnterpriseData – часть 2. Процесс выгрузки данных 127

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    13768    ids79    27       

Неполадки в работе функционала конфигурации "Бухгалтерия предприятия 3.0" после переноса данных из одной конфигурации в другую через XML 6

Статья Программист Нет файла v8 БП3.0 Россия Бесплатно (free) Обмен через XML

«Подводные камни» в работе конфигурации «Бухгалтерия предприятия 3.0» после переноса данных из одной конфигурации в другую средствами XML.

18.12.2018    2564    faust0923    1       

Новый подход к обмену данными EnterpriseData 207

Статья Программист Нет файла v8 v8::УФ Россия Бесплатно (free) Практика программирования Обмен через XML

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    23140    ids79    72       

MDM система для централизованного управления справочниками предприятия типовыми средствами 7

Статья Системный администратор Программист Нет файла v8 1cv8.cf Бесплатно (free) Обработка справочников Обмен через XML

Поставили мне пару недель назад задачу настроить единые справочники номенклатуры во всех базах холдинга. Учитывая количество 1С бухгалтерий, которых в процессе выполнения задачи оказалось 32, и учитывая, что они все разных версий (2.0, 3.0, отраслевые), задача казалась из ряда чистой воды подстава. Но решение с технической точки зрения оказалось простейшим.

27.11.2018    3655    lopatin    5       

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации 119

Статья Программист Нет файла v8 v8::УФ БП3.0 УТ11 Россия Windows Бесплатно (free) Практика программирования Обмен через XML

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    20390    ids79    20       

Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке 485

Статья Программист Нет файла v8 v8::СПР ЗКГУ3.0 ЗУП3.x БУ Зарплата Управление персоналом (HRM) Бесплатно (free) Универсальные функции

В статье размещен список стандартных процедур и функций с примерами, которые могут помочь при разработке (доработке) конфигураций Зарплата и управление персоналом ред. 3.1 и Зарплата и кадры государственного учреждения 3.1. Иногда бывает довольно сложно правильно получить данные или долго, поэтому лучшим вариантом будет использование стандартных процедур. Буду очень признателен, если Вы поделитесь своим опытом и предложите свои варианты стандартных процедур которые помогают в работе. Или предложите, как дополнить имеющиеся процедуры.

14.11.2018    35473    GeterX    93       

Кадровые данные сотрудников в ЗУП 3.1 в отчетах 39

Статья Программист Нет файла v8 v8::СПР ЗУП3.x Россия Управление персоналом (HRM) Бесплатно (free) Универсальные функции

Параметры используемые для получения данных сотрудников в ЗУП 3.1. Пригодится для разработки отчетов как напоминалка.

07.11.2018    14202    fromlion    14       

Функция НайтиФайлы() в каталоге netshare на Linux - обход ошибки работы 6

Статья Программист Нет файла v8 Linux Бесплатно (free) Практика программирования Универсальные функции

Решение проблемы применения функции НайтиФайлы() в каталоге с netshare на Linux-сервере - не работает поиск файлов по указанной маске (шаблону)

19.09.2018    3569    drmaxart    1       

Свертка номенклатуры при выгрузке из Управления Торговлей 11 в Бухгалтерию 3.0 14

Статья Программист Нет файла v8 БП3.0 УТ11 БУ УУ Бесплатно (free) Обмен через XML

Свертка номенклатуры при выгрузке из УТ 11 в Бухгалтерию 3. Используется типовой обмен на базе EnterpriseData

20.07.2018    7000    Kutuzov    2       

Обмен через универсальный формат. Пример нестандартной конвертации данных 83

Статья Программист Нет файла v8 УТ11 Россия Бесплатно (free) Обмен через XML Перенос данных из 1C8 в 1C8

В статье описан небольшой пример обмена данными через EnterpriseData без снятия конфигурации с поддержки. Тестовая площадка: Управление торговлей, редакция 11 (11.4.3.126), версия платформы 8.3.11

18.06.2018    23660    artkor    12       

Простой способ программно открыть заполненную форму нового (незаписанного) документа в тонком клиенте 15

Статья Программист Нет файла v8 Бесплатно (free) Универсальные функции

В этой публикации я поделюсь своим способом открывать программно новый незаписанный документ в тонком клиенте. Для использования этого способа потребуется немного модифицировать конфигурацию. Добавив универсальные процедуру и функцию, можно будет использовать их для любых документов/справочников.

09.06.2018    7805    Serge R    12       

Генерация временного ряда запросом 7

Статья Программист Нет файла v8 v8::Запросы 1cv8.cf Бесплатно (free) Универсальные функции

Способ генерации последовательности дат средствами языка запроса 1С.

07.05.2018    6236    dim_zal    6       

Минимализмы 3 355

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Универсальные функции

Очередная серия "минимализмов" [http://infostart.ru/public/306536/, https://infostart.ru/public/460935/]. Также, как и в предыдущих статьях, здесь приведена подборка коротких оригинальных авторских решений некоторых задач. Ранее эти решения были разбросаны по моим комментариям к чужим публикациям.

19.02.2018    37097    ildarovich    44       

Таблица значений в Таблицу HTML - функция с возможностью настройки цвета шапки, заголовков, выравнивания и размера колонок 83

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции

Если вам нужно быстро получить таблицу значений в виде строкового типа 1С в формате HTML, вам поможет эта функция, включена возможность автоматического вывода столбца пункт по порядку.

22.12.2017    19592    rpgshnik    21       

Конвертация данных. Выгрузка контактной информации из регистра сведений в табличную часть 20

Статья Программист Нет файла v8 КД Бесплатно (free) Обмен через XML

Довольно часто встречается задача выгрузить при помощи «Конвертация данных, редакция 2.1» контактной информации контрагента из «Управление торговлей", редакция 10.3» в «Бухгалтерия предприятия, редакция 3.0». Сложность заключается в том, что в УТ контактная информация хранится в регистре сведений, а в БП - в табличной части справочника «Контрагенты». Предлагаю мое, достаточно простое, решение данной задачи.

11.12.2017    15623    Nicholas    9       

Пример преобразования двоичных данных в строку 26

Статья Программист Нет файла v8 Бесплатно (free) Универсальные функции

Доброго всем времени суток. Хочу поделиться маленьким решением маленькой проблемы. Думаю, будет интересно новичкам. Я не раз встречал на форумах вопрос: как преобразовать двоичные данные в строку? В частности, к примеру, частенько нужно получить хэш файла MD5 в текстовом виде, но как мы знаем 1С возвращает его в виде двоичных данных.

08.12.2017    12980    frkbvfnjh    19       

1С: Конвертация данных 3. Инструкции и примеры. EnterpriseData (универсальный формат обмена) 737

Статья Программист Нет файла v8 КД Бесплатно (free) Перенос данных из 1C8 в 1C8 Практика программирования Обмен через XML

Что такое КД3? Как начать использовать? Полезные дополнения к документации. Что нужно исправить в типовых обработках и конфигурации. Как изменить правила обмена не снимая конфигурацию с поддержки. Как отлаживать правила обмена?

19.11.2017    142791    MaxS    251       

Функция сохранения картинок из книги Excel в каталог с определением координат на листе 8

Статья Программист Нет файла v8 Бесплатно (free) Загрузка и выгрузка в Excel Универсальные функции

Разбор файла *.xlsx как Web-архива, выгрузка изображений без потери качества, с определением положения изображений.

12.11.2017    7450    user634820_zergemoth    1       

Определяем контекст сеанса 1С программно (Тонкий/Толстый клиенты/HTTP-Сервис/Фоновое задание и т.д.) 31

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции

Иногда возникает необходимость программно определить контекст сеанса в 1С. Скажем вам надо понять что этот сеанс запущен и используется HTTP-Сервисом и не регламентным заданием или толстым клиентом. Порывшись в интернете я нашел только два способа которые не позволяли отличить регламентное задание от HTTP-Сервиса, стандартная функция ТекущийРежимЗапуска() тоже не позволяет определить запуск HTTP-Сервиса. Но в 1С есть стандартные средства которые позволяют решить эту задачу.

08.11.2017    16110    azubar    9       

Правила округления 5

Статья Программист Нет файла v8 1cv8.cf Россия Бесплатно (free) Универсальные функции

Округление числовых значений по трём правилам математики

30.10.2017    8119    dakork    4       

#Область ВНЕШНИЕ_ВЫЗОВЫ или MVC в 1С, библиотечность и упрощение интеграции кода 43

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Математика и алгоритмы Универсальные функции

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

12.10.2017    14810    for_sale    58       

Получение даты, зная день недели и его порядок в месяце 10

Статья Программист Нет файла v8 Бесплатно (free) Универсальные функции

Иногда бывает необходимость получить "Первый понедельник месяца" или "Вторую пятницу месяца". Есть несколько способов решения вопроса. Опишу один из них.

12.09.2017    8514    987ww765    10       

Разность дат 23

Статья Программист Нет файла v8 Бесплатно (free) Универсальные функции

Иногда требуется получить разность дат в виде типа: 5 дней 6 месяцев 4 года. Это можно сделать с помощью запроса, получив на выходе сразу 3 нужных числа, без последующих вычислений.

11.08.2017    10135    jun-ko    24       

Что такое конвертация данных 1С (статья написана исключительно для новичков) 79

Статья Программист Стажер Нет файла v8 КД Бесплатно (free) Обмен через XML Перенос данных из 1C8 в 1C8

О том, что "Конвертация данных" - мощный инструмент и прочую терминологию, вы прочтёте в любом источнике. Я хочу поделиться кратким пояснением как пользоваться данной конфигурацией. Речь пойдет о версии 2.1.

07.08.2017    30349    perepetulichka    33       

Простой способ преобразовать UNICODE в строку или в структуру 23

Статья Программист Нет файла v8 Россия Windows Бесплатно (free) Практика программирования Универсальные функции

Первая функция получает Строку, которая содержит строчки вида «Ключ=Значение». Вторая функция получает Структуру.

07.07.2017    7432    dimasts    5