Механизмы обмена с различными форматами данных в 1С

Механизмы обмена с различными форматами данных в 1С

Web-сервисы

Web-сервисы ‑ это механизм системы 1С:Предприятие, предназначенный для интеграции текущего прикладного решения с другими информационными системами.

Web-сервисы

Прикладное решение системы 1С:Предприятия может являться поставщиком web-сервисов, для этого используются общие объекты «Web-сервисы». Также прикладное решение системы 1С:Предприятия может являться потребителем web-сервисов, опубликованных другими поставщиками, для этого используются общие объекты «WS-ссылки».

WS-ссылки ‑ это общие объекты конфигурации, предназначенные для доступа к сторонним веб-сервисам по статической ссылке.

WS-ссылки

Менеджер WEB-сервисов решает задачу:

  • Реализация протокола SOAP (Simple Object Access Protocol – простой протокол доступа к объектам).
  • Поддержка WSDL описания сервиса (Web Services Description Language, язык описания веб-сервисов, основанный на XML).
  • Управление пулом соединений с информационными базами.

Web-сервисы в системе 1С:Предприятие представляют собой реализацию протокола SOAP (Simple Object Access Protocol – простой протокол доступа к объектам). В конфигурации создается web-сервис с определенным функционалом. Web-сервис публикуется на web-сервере. При публикации web-сервиса происходит публикация его описания в формате WSDL (Web Service Definition Language – язык описания веб-сервисов и доступа к ним, основанный на языке XML). Это описание содержит описание методов web-сервиса и типов данных, которые могут передаваться между клиентом и web-сервисом. После получения описания, организуется пул соединения, в рамках которого происходит обмен SOAP-сообщениями. Обмен происходит по протоколу HTTP, а сами сообщения располагаются в теле HTTP-пакета в формате XML.

Архитектура WEB-сервиса

В ветке «Общие – Web-сервисы» добавляются объекты для экспорта некоторой функциональности прикладного решения, с целью доступа к ним из других информационных систем.

Web-сервисы

Функции веб-сервисов возвращают и принимают значения, которые могут являться типом значения XDTO или типом объекта XDTO.

Типы возвращаемого значения

Взаимодействие клиентов веб-сервисов с системой 1C:Предприятие выполняется при помощи расширения веб-сервера. В качестве сервисного хоста может использоваться веб-сервер IIS или Apache.

WEB-серверы
WEB-серверы

Описание установки и настройки веб-сервера Apache под Windows расположено на сайте 1С:ИТС по ссылке: https://its.1c.ru/db/metod8dev/content/5978/hdoc

При обращении к Web-сервису последовательность действий следующая:

  • По статической ссылке:
    • Настройка подключения (создание прокси).
    • Обращение к операции сервиса.
Обращение по статической ссылке WSDL
  • По динамической ссылке:
    • Получение WSDL-описания.
    • Настройка подключения (создание прокси).
    • Обращение к операции сервиса.
Обращение по динамической ссылке WSDL

Строка доступа к WSDL-описанию формируется как:

http://<ИмяСервера>:порт>/<ИмяКонфигурации>/ws/<ИмяФайлаПубликацииВебСервиса> ?wsdl

Механизм XDTO

Механизм XDTO — это механизм объектного моделирования данных необходимый для обмена данными с другими системами.

Аббревиатура XDTO расшифровывается как XML Data Transfer Objects (XML-объекты переноса данных).

Пакет XDTO

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

Фабрика XDTO, пакеты XDTO

Механизм XDTO состоит из двух основных понятий: фабрика XDTO и пакет XDTO, которые представлены в виде структуры.

Фабрика XDTO содержит определения всех типов и позволяет осуществлять чтение и запись данных XDTO в XML и JSON.

В системе 1С:Предприятие существует глобальная фабрика XDTO, представленная объектом ФабрикаXDTO, который автоматически создается системой при создании новой информационной базы. Глобальная фабрика XDTO расширяется за счет добавления новых объектов в конфигурацию.

Фабрика XDTO

Фабрика XDTO содержит описания типов, сгруппированных в один или несколько пакетов XDTO. С помощью этих пакетов можно добавлять новые типы как поодиночке, так и группами.

Пакеты XDTO

XDTO-пакеты добавляются в ветке “Общие – XDTO-пакеты“.

Пакет XDTO

XDTO-пакет – предназначен для описания системы типов и значений при взаимодействии с внешними системами или обработки XML-данных. Для гарантированного обеспечения уникальности типов между различными XDTO-пакетами, в свойстве «URI-пространства имен» задается имя, которое уникально в пределах текущей конфигурации. Исторически сложилось так, что пространство имен выглядит как URL-адрес, но на самом деле это всего лишь строка, которая может быть абсолютно любой. XDTO-пакет можно экспортировать в XML-схему в формате xsd, и наоборот – из xsd-файла можно импортировать в XDTO-пакет.

Пакет XDTO и XML-схема

Если проводить аналогию между XDTO и XML, то можно сказать, что «XDTO-пакет» соответствует «Схеме XML-документа», а «Фабрика XDTO» соответствует набору нескольких «Схем XML-документов».

Разработчики могут создать произвольную фабрику XDTO средствами встроенного языка. При программном создании такой фабрики она должна определяться сразу в полном объеме и в дальнейшем расширить ее новыми типами нельзя.

Типы данных XDTO

Каждый из типов данных XDTO является либо типом значения XDTO, либо типом объекта XDTO. Соответственно, для описания типа значения используется объект ТипЗначенияXDTO, а для описания типа объекта ‑ ТипОбъектаXDTO.

  • ТипЗначенияXDTO применяется для описания типов простых данных, таких как строки, числа, даты, ссылки и другие подобные значения.
  • ТипОбъектаXDTO применяется для описания типов экземпляров данных, которые состоят из набора значений свойств, таких как массивы, справочники, документы и т.д. При этом типы свойств этого экземпляра данных могут являться как типами значений XDTO, так и типами объектов XDTO.
Типы данных XDTO

ТипЗначенияXDTO и ТипОбъектаXDTO имеют два одинаковых свойства:

  • Имя ‑ имя типа.
  • URIПространстваИмен ‑ идентификатор, в котором определен данный тип. URI (Uniform Resource Identifier — унифицированный идентификатор ресурса) — последовательность символов, идентифицирующая абстрактный или физический ресурс.
Свойства типов данных XDTO

Директивы импорта XDTO

В рамках создаваемого XDTO-пакета (без использования директивы импорта) можно использовать:

  • типы, определенные только в данном пакете (использующие текущее пространство имен)
  • типы, стандартные для XML (пространство имен http://www.w3.org/2001/XMLSchema)
Директивы импорта XDTO

В случае, если нужно указать тип из другого XDTO-пакета (из другого пространства имен) – необходимо его импортировать при помощи директивы импорта. Импортировать можно только существующие пакеты типов; кроме того, недопустимо делать циклические импорты – когда в импортируемом пакете есть директива импорта текущего пакета.

JSON

JSON (JavaScript Object Notation) – это текстовый формат обмена данными, который широко используется в веб-приложениях. По сравнению с форматом XML он является более лаконичным и занимает меньше места.

Представление данных в формате JSON:

  • Объект ‑ неупорядоченное множество пар ключ:значение, заключенное в фигурные скобки { }. Пары ключ:значение разделяются запятыми.
  • Массив ‑ множество значений. Массив заключается в квадратные скобки [ ]. Значения разделяются запятыми.
  • Значение ‑ может быть строкой, числом, объектом, массивом или литералом true, false, null.
    • Строка ‑ набор символов, заключенный в двойные кавычки ” “.
    • Число ‑ сериализуется с разделителем точка . Точность числа не ограничена.

С помощью вышеперечисленных вариантов представления можно описать объекты любой сложности в формате JSON.

Работа с данными в формате JSON может выполняться в нескольких техниках:

  • Объектная техника – позволяет формировать простые и небольшие JSON-документы для обмена с внешними приложениями или веб-сервисами. Сериализация выполняется с помощью метода ЗаписатьJSON() объекта СериализаторXDTO. Чтение данных из JSON-документа осуществляется с помощью функции восстановления ПрочитатьJSON(). Обрабатываемая информация во время сериализации загружается в оперативную память, что отрицательно сказывается при сериализации больших объемов.
  • Потоковая техника – позволяет работать с данными большого объема без загрузки их в память приложения. Навигация по JSON-документу полностью ложится на разработчика (как при записи, так и при чтении документа). Для того чтобы выполнить потоковую запись JSON-документа, используется объект ЗаписьJSON. Для контроля правильности структуры JSON-объекта используется свойство ПроверятьСтруктуру у объекта ЗаписьJSON. Чтение JSON-документа выполняется аналогично его записи.
  • Совмещенная техника – позволяет сочетать потоковую технику и объектную.

Для использования технологии JSON как средство обмена данными, оно применяется в HTTP-сервисах системы 1С:Предприятие.

HTTP-сервисы – это общие объекты конфигурации, которые позволяют обрабатывать входящие HTTP запросы, с помощью протокола HTTP, в основе которого лежат популярные методы, такие как GET, POST и т.д.

HTTP-сервисы

Строка URL HTTP-сервиса формируется как:

http://<ИмяСервера>:порт>/<ИмяКонфигурации>/hs/<КорневойURL>/<Шаблон>/<Параметр>

Работа с различными форматами данных

Двоичные данные

Любой файл, такой как картинка, музыка, видео можно представить в виде двоичных данных в системе 1С:Предприятие.

Для работы с двоичными данными используются специализированные объекты, такие как: Поток, Чтение данных, Запись данных, ДвоичныеДанные и др.

Двоичные данные можно записать в объект ХранилищеЗначений.

Текстовый файл

Для работы с текстовыми документами используется механизм последовательного доступа с помощью объекта ЗаписьТекста и ЧтениеТекста. У объекта ЧтениеТекста есть два метода:

  • Прочитать() – позволяет посимвольно читать текстовый файл или полностью до конца.
  • ПрочитатьСтроку() – позволяет построчно читать текстовый файл.

Табличный документ

Для сохранения данных табличного характера используется файл с расширением *.MXL

HTML-документ

Для работы с HTML-документами используется элемент управления «Поле», который отображается как «Поле HTML-документа». Этот элемент позволяет просматривать HTML-документы как в локальной сети, так и в Интернете.

Для отслеживания момента полной загрузки HTML-документа в элементе управления «Поле HTML-документа» можно использовать обработчик события ДокументСформирован данного элемента управления, в котором при этом производится проверка свойства URL на равенство заданному адресу ресурса. В обработчике события ДокументСформирован рекомендуется анализировать значение свойства readyState HTML-документа. Значение этого свойства показывает текущий этап формирования HTML-документа. В случае, когда значение равно Complete, формирование объектной модели завершено, документ готов к работе.

Результат использования поля HTML-документа

Ваганов Сергей, эксперт в области разработки прикладных решений на платформе 1С:Предприятие, преподаватель-методист CORS Academy и автор курса «Разработчик 1С с нуля до профессионала».

Механизмы обмена с различными форматами данных в 1С
Подписаться
Уведомить о
guest

wp-puzzle.com logo

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

подпишитесь на рассылку академии

2 письма в неделю со свежими новостями о скидках, курсах и других событиях

Нажимая на кнопку “Подписаться”, вы даете согласие на обработку персональных данных