Uri пространства имен 1с что это

URI — сложно о простом (Часть 1)

Uri пространства имен 1с что это. bd44ccc3e6df448e952967572648d0d3. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-bd44ccc3e6df448e952967572648d0d3. картинка Uri пространства имен 1с что это. картинка bd44ccc3e6df448e952967572648d0d3

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

«Пфф, ссылки они и в Африке ссылки, чего тут разбираться?» — скажете вы, тогда я задам вопрос:

Перед тем как начать хотел бы обозначить, что есть пост на схожую тему, в котором все обозначено проще и немного понятнее. Целью же этого поста, я ставлю более глубокое изучение вопроса и сбор информации об URI в одном месте, дабы «не потерять». Ну, почти в одном месте, статья будет разделена на две части
А для удобства бахнем оглавление, которое работает не без особенностей URI, которую мы рассмотрим попозжа, в этой статье.

Ознакомление

1. URI

Унифицированный Идентификатор Ресурса, в простонародье — URI
Самое свежее описание того, чем же все-таки являются эти пресловутые URI датируется январем аж 2005-го, а именно RFC3986, написанный самим Тимом Бёнесом-Ли, родоначальника всеми нами любимого тырнета.
Резюмируя п.1.1 можно сформулировать определение:

Многие из вас замечали, что на разных ресурсах ссылки называют то URL, то URI и, вероятно, становилось интересно — какой же из вариантов правильный?
Дело в том, что URL увидел свет и был документирован в 1990 году, в то время как URI был документирован лишь в 1994 году. И вплоть до 2002 года, до выхода RFC3305, уместными были оба варианта именования, что, порой вносило путаницу.
В п.2 RFC3305 сообщается об устаревании такого термина как URL, применимо к ссылкам, и что отныне верным будет именование URI, с того момента, во всех документах W3C использует термин URI. Исходя из этого, применяя термин URL к соответствующим ссылкам, вы не делаете смысловой ошибки, но делаете ее с точки зрения правильного именования.

Так же примечателен тот момент, что вплоть до выхода RFC2396, в 1997 году, URI расшифровывался как Universal Resource Identifier, что можно увидеть в RFC1630

1.1. Синтаксис

URI составлен из ограниченного набора символов, состоящих из цифр, букв и нескольких графических символов, все эти символы вписываются в кодировку US-ASCII (ASCII). Зарезервированное подмножество символов может использоваться, чтобы разграничить компоненты синтаксиса в URI, в то время как остающиеся символы: не зарезервированный набор и включая те зарезервированные символы, которые не действуют как разделители в данной компоненте URI, определяют данные идентификации каждого компонента.

Зарезервированные символы
Не зарезервированные символы

Для данного случая, согласно ABNF :
ALPHA — любая буква верхнего и нижнего регистров кодировки ASCII (в regExp [A-Za-z])
DIGIT — любая цифра (в regExp 5)
HEXDIG — шестнадцатиричная цифра (в regExp [0-9A-F])

Процентное кодирование

Т.о., %20, например, означает пробел.

1.2. Компоненты URI

где в квадратных скобках опциональные компоненты

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

На этом, пожалуй, знакомство с URI можно закончить и начать углубляться в отдельные подвиды URI, а именно

2. URL

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

2.1. Структура

В целом, URL имеет схожую структуру, для всех схем, хотя для каждой отдельно взятой схемы, структура может отличаться от общего шаблона.
Графически ее можно выразить в следующем виде:
Uri пространства имен 1с что это. 3732b33fd43043049c18e3c108bc9d1a. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-3732b33fd43043049c18e3c108bc9d1a. картинка Uri пространства имен 1с что это. картинка 3732b33fd43043049c18e3c108bc9d1a

3. URN

Унифицированные имена ресурсов (URN) предназначены, чтобы служить постоянными, независимыми от расположения, идентификаторами ресурсов и разработаны для упрощения отображения других пространств имен (которые совместно используют свойства URN) в URN-пространство. Таким образом, синтаксис URN обеспечивает средство закодировать символьные данные в форме, которая может быть отправлена посредством существующих протоколов, записана при помощи большинства клавиатур, и т.д.

3.1. Структура

Самоидентифицирующийся URN

Такие URN содержат в NID название хэш-функции, а в NSS значение хэша, вычисленного для идентифицируемого объекта. Такие ссылки используются в magnet-ссылках и заголовках p2p-сети Gnutela2.
Например, URN из magnet-ссылки с одного торрент-трекера:
magnet:?xt=urn:btih:c68abc1ba9b8c7c4bc373862cad1a8c01d69e53d.

С теорией все, во второй части рассмотрим, что можно и что нужно делать с URI, если мы их обрабатываем, а именно — нормализация, разбор и т.д.

За сим откланяюсь, спасибо что читали, надеюсь не было скучно, удачи!

Источник

Заметки 1С-Программиста

Цель блога описать интересные и полезные примеры программирования в системе 1С:Предприятие 8.

Страницы

воскресенье, 14 октября 2012 г.

1С:Предприятие 8. Веб-сервисы. Реализация веб-сервиса

Для создания самого простого веб-сервиса необходимо:

    Uri пространства имен 1с что это. 1+ +%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B9%D1%82%D0%B5%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9%D0%92%D0%B5%D0%B1%D0%A1%D0%B5%D1%80%D0%B2%D0%B8%D1%81. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-1+ +%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B9%D1%82%D0%B5%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9%D0%92%D0%B5%D0%B1%D0%A1%D0%B5%D1%80%D0%B2%D0%B8%D1%81. картинка Uri пространства имен 1с что это. картинка 1+ +%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%B9%D1%82%D0%B5%D0%9D%D0%BE%D0%B2%D1%8B%D0%B9%D0%92%D0%B5%D0%B1%D0%A1%D0%B5%D1%80%D0%B2%D0%B8%D1%81

    Имя веб-сервиса можно задать русское. И платформа его сохранит и опубликует, но рекомендую использовать латиницу в названиях веб-сервисов, ws-операций, параметров ws-операций. Например, chrome не смог отобразить wsdl файл веб-сервиса с русским именем.
    Перейдите на вкладку «Прочее» и укажите параметр «URI пространство имен».

    Uri пространства имен 1с что это. 2+ +%D0%A3%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%D0%9F%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE%D0%98%D0%BC%D0%B5%D0%BD. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-2+ +%D0%A3%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%D0%9F%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE%D0%98%D0%BC%D0%B5%D0%BD. картинка Uri пространства имен 1с что это. картинка 2+ +%D0%A3%D0%BA%D0%B0%D0%B6%D0%B8%D1%82%D0%B5%D0%9F%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D1%81%D1%82%D0%B2%D0%BE%D0%98%D0%BC%D0%B5%D0%BD

    Поле «Пакеты XDTO» не обязательное. Оно определяет набор пакетов XDTO в которых вы можете оказать свои типы значений. Это не обязательное поле, по умолчанию вам всегда доступны типы пространства имен «http://www.w3.org/2001/XMLSchema». О пакетах XDTO я расскажу чуть позже.

    «Имя файла публикации», это имя файла, в котором хранятся настройки веб-сервиса для Apache(путь к базе и другие) после публикации. Папка, в которой находится этот файл, определяется при публикации. О публикации на веб-сервере будет рассказано позже.

    Веб-сервис создан, но еще нет ни одной функции которую он мог бы исполнить. Надо добавить операцию. Для этого добавьте в созданный веб-сервис операцию. Нажмите не веб-веб-сервис правой кнопкой и выберите «Добавить-Операция». Она будет к вашему операнду прибавлять 2 и возвращать значение. Давайте назовем ее «Plus2». Можно указать и русское название, многие клиенты его обработают, но все же могут возникнуть проблемы.

    Uri пространства имен 1с что это. WS %D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F+ +%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-WS %D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F+ +%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8. картинка Uri пространства имен 1с что это. картинка WS %D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F+ +%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8

    «Тип возвращаемого значения» это тип описанный в указанном вами пакете XDTO или же тип из пространства имен «http://www.w3.org/2001/XMLSchema». Именно в этом типе веб сервис будет возвращать значение.
    «Возможно пустое значение» признак что ws-операция может не вернуть значение( nillable =» true » ).
    «В транзакции» указывает что код веб-сервиса будет выполняться в транзакции. А «Режим управления блокировкой данных» определяет тип блокировки данных при транзакции по умолчанию.

    Установим тип возвращаемого значения в int. В поле «Имя метода» укажем имя «Plus2» для нового метода, который будет выполнять обработку. При нажатии на лупу метод будет автоматом создан в модуле веб-сервиса.
    Напишем простой код.

    Функция Plus2(Параметр)
    Возврат Параметр+2;
    КонецФункции

    Вы заметили что на входе функции у нас есть параметр «Параметр». Для того что бы в метод этот параметр был передан надо добавить его в дереве метаданных. Для этого щелкните правой кнопкой по веб-операции Plus2 и выберите «Добавить-Параметр».

    Uri пространства имен 1с что это. 4+ +%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8+%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0+WS %D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-4+ +%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8+%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0+WS %D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8. картинка Uri пространства имен 1с что это. картинка 4+ +%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B8+%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%B0+WS %D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8

    Давайте назовем его «Param». Названия параметров тоже можно указывать русскими, мало того класс SoapClient языка PHP работает с ними корректно, ведь параметры передаются через массив. Желательно использовать кодировку UTF-8.

    Укажем «Тип значения» int из пространства имен «http://www.w3.org/2001/XMLSchema».

    Свойство «Возможно пустое» указывает что можно передать значение null в веб-операцию.

    «Направление передачи» указывает по значению или по «ссылке» передается операнд в ws-операцию. Возможные значение «Входной», «Выходной», «Входной-Выходной». Таким образом если вы для параметра укажете «Выходной» или » Входной-Выходной » то сможете менять значения операнда. В результате xml сообщение-ответ дополнится строкой с новым значением операнда. Я пока не сталкивался с задачами которые можно решить только используя Выходное направление операнда, потому не могу дать какие то комментарии по этому свойству.

    Вот в принципе и всё! Веб сервис создан, но существует он пока что только как описание в вашей конфигурации. Для того что бы им воспользоваться надо его опубликовать на вашем веб-сервере. Как опубликовать вы можете прочитать в статье 1С:Предприятие 8. Веб-сервисы. Публикация и тестирование.

    Источник

    Профессия — 1С

    рубрики: Web-Сервисы | Дата: 1 июля, 2017

    Итак, у нас есть работающий веб-сервер. Теперь самое время заняться разработкой и публикацией веб-сервисов.

    Воспользуемся для этого бесплатной учебной версией платформы 1С, благо ограничений на работу с веб-сервисами в ней нет.

    Добавление Web-сервиса в метаданные

    Открываем дерево конфигурации, ветка Общие, далее Web-сервисы, добавляем новый веб-сервис (назову его my_ws) и заполняем свойства как показано на рисунке.

    Uri пространства имен 1с что это. SozdanieVS Metadannyie. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-SozdanieVS Metadannyie. картинка Uri пространства имен 1с что это. картинка SozdanieVS Metadannyie

    Необходимо сделать несколько пояснений о свойствах веб-сервисов

    Операции веб-сервиса

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

    В качестве примера создадим для нашего веб-сервиса операцию, которая будет возвращать классическую фразу «Привет мир!». Назовем ее Hello:

    Uri пространства имен 1с что это. SozdanieVS Operatsiya. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-SozdanieVS Operatsiya. картинка Uri пространства имен 1с что это. картинка SozdanieVS Operatsiya

    В модуле веб-сервиса создадим функцию ПриветМир(), ссылку на которую вставим в соответствующее свойство операции.

    Но у этой операции есть один недостаток. В нее нельзя передавать исходные данные. Для этих целей в операциях веб-сервисов используется подчиненные им объекты — Параметры.

    Добавим еще одну операцию — HelloUsr, и создадим для нее параметр Name.

    Uri пространства имен 1с что это. SozdanieVS Parametr. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-SozdanieVS Parametr. картинка Uri пространства имен 1с что это. картинка SozdanieVS Parametr

    Эта операция будет у нас возвращать приветствие пользователю при помощи вызова вот такой функции:

    Публикация Web-сервиса

    Теперь у нас все готово для публикации веб-сервиса. Для этого необходимо зайти в конфигуратор под правами администратора. Щелкаем по ярлыку 1С правой кнопкой и выбираем соответствующий пункт меню:

    Uri пространства имен 1с что это. SozdanieVS ZapuskAdmin. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-SozdanieVS ZapuskAdmin. картинка Uri пространства имен 1с что это. картинка SozdanieVS ZapuskAdmin

    В меню выбираем Администрирование —> Публикация на веб-сервере

    Uri пространства имен 1с что это. SozdanieVS PublikatsiyaMenyu. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-SozdanieVS PublikatsiyaMenyu. картинка Uri пространства имен 1с что это. картинка SozdanieVS PublikatsiyaMenyu

    В открывшемся окне прописываем имя публикации, отмечаем пункт Публиковать Web-сервисы и также отмечаем созданный нами веб-сервис:

    Uri пространства имен 1с что это. SozdanieVS Publikatsiya. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-SozdanieVS Publikatsiya. картинка Uri пространства имен 1с что это. картинка SozdanieVS Publikatsiya

    Нажимаем Опубликовать, после чего надо перезапустить веб-сервер.

    WS-ссылки

    Для работы с веб-сервисами используется такой объект 1С как WS-ссылка. Она представляет собой WSDL описание веб-сервиса полученное путем импорта из источника на котором расположен веб-сервис. То есть в первую очередь нам надо знать адрес по которому мы сможем получить WSDL описание веб-сервиса. Применительно к нашему примеру в соответствии с настройками, которые мы делали в процессе создания и публикации веб-сервиса этот адрес будет выглядеть следующим образом

    Рассмотрим из каких же частей состоит этот адрес.

    После публикации веб-сервиса, для того чтобы убедиться, что он успешно опубликован, можно ввести адрес его WSDL описания в адресную строку браузера. При этом мы должны получить в окне браузера XML файл примерно вот такого содержания:

    Uri пространства имен 1с что это. SozdanieVS wsdl. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-SozdanieVS wsdl. картинка Uri пространства имен 1с что это. картинка SozdanieVS wsdl

    Работа с WS-ссылками возможна двумя способами:

    Рассмотрим каждый из этих способов

    Динамические WS-ссылки

    В этом случае WS-ссылка создается программно. Продолжим наш пример и приведем текст процедуры, которая задействует операцию HelloUsr нашего веб сервиса:

    Как нетрудно догадаться, результатом выполнения этой процедуры будет текст в окне сообщения «Привет, Вася!»

    Статические WS-ссылки

    Вместо программного создания объекта WSОпределения мы можем непосредственно в дереве конфигурации создать объект метаданных WS-ссылка. В процессе создания будет выведено окно с предложением указать адрес WSDL определения для его импорта:

    Uri пространства имен 1с что это. SozdanieVS SsyilkaStat. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-SozdanieVS SsyilkaStat. картинка Uri пространства имен 1с что это. картинка SozdanieVS SsyilkaStat

    После этого мы можем в коде ссылаться непосредственно на эту WS-ссылку. И процедура по обращению к веб-сервису примет вот такой вид:

    Источник

    XML пространства имен

    Пространства имен позволяют избежать конфликта имен XML элементов.

    Конфликты имен

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

    Следующий код XML содержит информацию о HTML таблице:

    Следующий код XML содержит информацию о столе (предмет мебели), который по англ. тоже table:

    Если эти два фрагмента кода XML будут сведены вместе, то возникнет конфликт имен. Так как оба документа содержат элемент , хотя и с разным контентом и значением.

    Пользователь или XML приложение не будут знать, каким образом обрабатывать эти различия.

    Разрешение конфликта имен при помощи префикса

    В XML избежать конфликта имен можно при помощи префикса имени элемента.

    Следующий код XML содержит информацию о таблице HTML и о столе:

    В этом примере не будет конфликта имен, так как два элемента имеют разные имена.

    Пространства имен XML – Атрибут xmlns

    При использовании в XML префиксов необходимо определить, так называемое, пространство имен префикса.

    Пространство имен определяется благодаря атрибуту xmlns в начальном теге элемента.

    В данном примере, атрибут xmlns в теге определяет префиксам h: и f: квалифицирующее пространство имен.

    Когда пространство имен определено для какого-то элемента, то все его дочерние элементы с тем же префиксом ассоциируются с его пространством имен.

    Пространства имен могут декларироваться либо непосредственно в самом элементе, либо в корневом элементе XML документа:

    Замечание: URI пространства имен не используется парсером для получения какой-либо информации. Цель всего этого состоит в том, чтобы дать пространству имен уникальное имя. Тем не менее, часто компании используют пространство имен, как указатель на веб-страницу с информацией об этом пространстве имен.

    Унифицированный идентификатор ресурса (URI)

    Унифицированный идентификатор ресурса (URI) это символьная строка, идентифицирующая интернет-ресурс.

    В наиболее общей форме URI является единым указателем ресурса (URL), который идентифицирует доменный адрес в интернете. Другой, более частный вид URI — единообразное имя ресурса (URN).

    В наших примерах мы будем использовать только URL.

    Пространства имен по умолчанию

    Определение пространства имен по умолчанию позволяет избежать использования префиксов во всех дочерних элементах. Такое определение имеет следующий синтаксис:

    Следующий код XML содержит информацию о таблице HTML:

    Следующий код XML содержит информацию о предмете мебели — столе:

    Реальное использование пространства имен

    XSLT — это XML язык, который может использоваться для преобразования документов XML в другие форматы, например, HTML.

    Источник

    Пример обмена через XDTO в 1С 8.3

    Механизм XDTO

    XDTO (XML Data Transfer Objects) — это специальный механизм, разработанный фирмой 1С для универсального представления данных, используемый при взаимодействии с внешними системами.

    С помощью механизма XDTO можно описать систему типов и значений, с помощью которой можно легко выполнить сериализацию/десериализацию в XML/JSON.

    XDTO можно сравнить со схемой XML. С помощью механизма XDTO можно создать XML-схему, а потом на основании этой схемы сформировать XML-документ.

    XDTO может применяться в следующих случаях:

    Создание XDTO-пакета

    В качестве примера рассмотрим следующую задачу: нужно настроить обмен документами между двумя различными конфигурациями на 1С. В обеих конфигурациях используются 2 типа документов: приходные и расходные накладные. Состав и наименование реквизитов в разных конфигурациях отличается.

    Для обмена будет использоваться определенный формат следующего вида:

    Uri пространства имен 1с что это. xdto 1. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 1. картинка Uri пространства имен 1с что это. картинка xdto 1

    Есть корневой элемент Документ, который имеет 2 свойства: Тип и Состав. Состав включает в себя массив строк со свойствами: Номенклатура, Количество и Сумма.

    Для описания данного формата будем использовать XDTO-пакет. XDTO-пакет можно сравнить со схемой XML, в нем мы укажем какие типы будут использоваться внутри пакета и каким образом они должны быть сериализованы в XML.

    В дереве метаданных в узле Общие — XDTO-пакеты добавим новый пакет. В свойствах нового пакета нужно указать URI пространства имен. Здесь нужно указать произвольный идентификатор, как правило он указывается в формате URL, например http://www.program1s.com/test-document:

    Uri пространства имен 1с что это. xdto 2. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 2. картинка Uri пространства имен 1с что это. картинка xdto 2

    На вопрос «Произвести изменение URI пространства имен для ссылок на типы данного пакета» ответим Нет, так как наш пакет еще нигде не использовался:

    Uri пространства имен 1с что это. xdto 3. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 3. картинка Uri пространства имен 1с что это. картинка xdto 3

    Добавим в пакет новый Тип объекта:

    Uri пространства имен 1с что это. xdto 4. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 4. картинка Uri пространства имен 1с что это. картинка xdto 4

    В свойствах укажем Имя Документ:

    Uri пространства имен 1с что это. xdto 5. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 5. картинка Uri пространства имен 1с что это. картинка xdto 5

    Это корневой узел нашего формата.

    Теперь нужно добавить для него 2 свойства: Тип и Состав. Для этого выделим в пакете тип Документ и выберем Добавить — Свойство:

    Uri пространства имен 1с что это. xdto 6. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 6. картинка Uri пространства имен 1с что это. картинка xdto 6

    В свойствах укажем Имя Тип:

    Uri пространства имен 1с что это. xdto 7. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 7. картинка Uri пространства имен 1с что это. картинка xdto 7

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

    Чтобы заполнить тип сначала нужно нажать на зеленую галочку возле свойства:

    Uri пространства имен 1с что это. xdto 8. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 8. картинка Uri пространства имен 1с что это. картинка xdto 8

    Появится кнопка с тремя точками для выбора типа. Нужно нажать на нее. Будет открыто окно для выбора пакетов XDTO. В самом низу нужно найти пакет с пространством имен http://www.w3.org/2001/XMLSchema, развернуть его и найти тип string:

    Uri пространства имен 1с что это. xdto 9. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 9. картинка Uri пространства имен 1с что это. картинка xdto 9 Uri пространства имен 1с что это. xdto 10. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 10. картинка Uri пространства имен 1с что это. картинка xdto 10

    Данный тип соответствует типу 1С Строка.

    Uri пространства имен 1с что это. xdto 11. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 11. картинка Uri пространства имен 1с что это. картинка xdto 11

    Добавим для объекта Документ еще одно свойство Состав, но тип пока заполнять не будем. Должно получиться так:

    Uri пространства имен 1с что это. xdto 12. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 12. картинка Uri пространства имен 1с что это. картинка xdto 12

    Теперь добавим новый тип объекта Состав. Он будет использоваться для сериализации табличной части документа. Добавим для него одно свойство Строка, тип пока не будем указывать:

    Uri пространства имен 1с что это. xdto 13. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 13. картинка Uri пространства имен 1с что это. картинка xdto 13

    Uri пространства имен 1с что это. xdto 14. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 14. картинка Uri пространства имен 1с что это. картинка xdto 14

    Это означает, что в данном свойстве может храниться неограниченное количество значений (аналогично массиву).

    Теперь для свойства Документа Состав в качестве типа укажем только что созданный объект Состав. Чтобы его выбрать нужно развернуть пространство имен созданного нами XDTO-пакета:

    Uri пространства имен 1с что это. xdto 15. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 15. картинка Uri пространства имен 1с что это. картинка xdto 15 Uri пространства имен 1с что это. xdto 16. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 16. картинка Uri пространства имен 1с что это. картинка xdto 16

    Добавим в пакет еще один тип объекта — Строка, а у него 3 свойства: Номенклатура, Количество и Сумма:

    Uri пространства имен 1с что это. xdto 17. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 17. картинка Uri пространства имен 1с что это. картинка xdto 17

    Для свойства Номенклатура в качестве типа укажем тип string из пространства имен http://www.w3.org/2001/XMLSchema. Для свойств Количество и Сумма выберем тип decimal из того же пространства имен. Тип decimal соответствует типу Число в 1С:

    Uri пространства имен 1с что это. xdto 18. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 18. картинка Uri пространства имен 1с что это. картинка xdto 18 Uri пространства имен 1с что это. xdto 19. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 19. картинка Uri пространства имен 1с что это. картинка xdto 19 Uri пространства имен 1с что это. xdto 21. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 21. картинка Uri пространства имен 1с что это. картинка xdto 21

    И наконец для свойства Строка объекта Состав укажем тип Строка (только что созданный нами тип объекта):

    Uri пространства имен 1с что это. . Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-. картинка Uri пространства имен 1с что это. картинка

    На этом создание XDTO-пакета завершено. Для удобства переименуем его в Документ (нужно щелкнуть по пакету правой кнопкой, выбрать Свойства и изменить свойство Имя):

    Uri пространства имен 1с что это. xdto 22. Uri пространства имен 1с что это фото. Uri пространства имен 1с что это-xdto 22. картинка Uri пространства имен 1с что это. картинка xdto 22

    Сериализация XDTO в XML

    Теперь напишем простую процедуру для сериализации приходного документа в XML через механизм XDTO.

    Сначала рассмотрим некоторые понятия, которые будут использоваться в процессе сериализации:

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

    Тип XDTO — это один из описанных типов в XDTO-пакетах. В нашем случае это будут типы: Документ, Состав и Строка.

    Объект XDTO — это программный объект, соответствующий одному из типов XDTO. В нашем случае это будут объекты Документ, Состав и Строка. У каждого объекта могут быть свойства, например для объекта Документ это будут свойства Тип и Состав, для объекта Строка — Номенклатура, Количество и Сумма и т.д.

    Алгоритм сериализации будет выглядеть следующим образом:

    Источник

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *