Преобразования

Шаг преобразования в Схемах обработки представлен для конвертации формата представления данных, входит в состав бизнес-процесса. Функция пригодится, когда в бизнес-процессе на входе один формат, а на выходе необходим другой.

../../../_images/converting1.png

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

После заполнения шага преобразования Сохранить изменения, Применить конфигурацию

Шаг конвертации JSON <-> XML

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

Пример XML:

<Structure xmlns="http://v8.1c.ru/8.1/data/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Property name="уид">
                <Value xsi:type="xs:string">db496164-c41b-43ed-8402-330889815d9f</Value>
        </Property>
        <Property name="филиал">
                <Value xsi:type="xs:string">83023fb0-02e3-11ef-b03a-047c16b5640c</Value>
        </Property>
        <Property name="датаВыгрузки">
                <Value xsi:type="xs:dateTime">2024-12-19T14:47:19</Value>
        </Property>
        <Property name="номер">
                <Value xsi:type="xs:string">ПИНФ-КК-000000001668</Value>
        </Property>
        <Property name="дата">
                <Value xsi:type="xs:dateTime">2024-04-21T23:00:00</Value>
        </Property>
        <Property name="производство">
                <Value xsi:type="Array">
                        <Value xsi:type="Structure">
                                <Property name="номерСтроки">

На выходе JSON

{
"уид": "db496164-c41b-43ed-8402-330889815d9f",
"филиал": "83023fb0-02e3-11ef-b03a-047c16b5640c",
"номер": "ПИНФ-КК-000000001668",
"дата": "2024-04-21T23:00:00",
"оплаты":[{"номерСтроки":1, "видОплаты":"БанковскаяКарта", "сумма":380}]
}

Настройка шага:

  1. Описание - короткое описание шага преобразования, отображается на самом шаге

../../../_images/jsonxml11.png
  1. Комментарий - комментарий к шагу преобразования;

  2. xml->json, json->xml - выбор схемы преобразования (выбирается формат, который будет на входе и на выходе);

  3. Входящие данные - выбор из переменных процесса, тип переменной: сообщение или строка. Если ничего не выбрано, то InitMessage;

  4. Записывать сконвертированное значение во входящий объект - записывает созданный объект во входящую переменную;

  5. Исходящие данные - выбор из переменных процесса, тип переменной: сообщение или строка. Запись созданного объекта в выбранную переменную. Настройка активна в случае, если флаг Записывать сконвертированное значение во входящий объект не активен.

Примечание

Если в поле Исходящие данные выбран объект с типом Сообщение, то в переменной исходящих данных результат будет в его теле (Body).

Внимание

Тип переменных - важный параметр. Если конвертация из xml, то на вход должна быть строка или сообщение, содержащее xml, на выход - сообщение.

Правила преобразования:

  1. Исключать / Добавлять корневой элемент - убирает корневой элемент из JSON.

Xml документ должен содержать один корневой элемент. Если он явно не задан, то добавляется корневой элемент <Structure> по умолчанию, а так же добавляются пространства имен:

XNamespace coreNs = «http://v8.1c.ru/8.1/data/core»;

XNamespace xs = «http://www.w3.org/2001/XMLSchema»;

XNamespace xsi = «http://www.w3.org/2001/XMLSchema-instance»;

  1. Имя корневого элемента - указывается имя для конвертации json -> xml, настройка доступна при активном флаге Добавлять корневой элемент

  2. Имя поля содержится в имени xml-атрибута - при установке флага используется имя атрибута в качестве имени поля.

  3. Имя поля содержится в значении xml-атрибута - при установке флага используется значение атрибута как имя поля.

Внимание

Может быть установлен только 1 флаг - или Имя поля содержится в имени xml-атрибута, или Имя поля содержится в значении xml-атрибута, совместное использование недопустимо.

  1. Имя xml-элемента, содержащий имя поля - имя XML-элемента, внутри которого находятся пары ключ–значение. Из примера - Property, каждый Property — это отдельное поле. Если имя поля и имя элемента совпадают, настройка не заполняется.

  2. Имя xml-атрибута, содержащий имя поля - указывает, из какого атрибута брать название поля. Из примера - name

  3. Имя xml-элемента, содержащий значение поля - элемент, в котором содержится значение этого поля. Из примера структуры - Value

  4. Имя xml-атрибута, содержащий значение поля - указывается, если значение поля в XML представлено в виде атрибута элемента, а не содержится в теле элемента. Если значение содержится внутри элемента, а не в атрибуте (как в примере), то поле оставляется пустым.

  5. Имя xml-элемента, содержащий описание типа поля - информация о типе данных — строка, дата, число и т.д..

  6. Имя xml-атрибута, содержащий описание типа поля - указывается, если тип данных значения (например, строка, число, дата) задан в виде атрибута XML.

../../../_images/jsonxml22.png

Шаг конвертации JSON <-> CSV

Настройка шага:

  1. Описание - короткое описание шага преобразования, отображается на самом шаге

../../../_images/jsoncsv1.png
  1. Комментарий - комментарий к шагу преобразования;

  2. json->csv, csv->json - выбор схемы преобразования (выбирается формат, который будет на входе и на выходе);

  3. Входящие данные - выбор из переменных процесса, тип переменной: сообщение или строка. Если ничего не выбрано, то InitMessage;

  4. Записывать сконвертированное значение во входящий объект - записывает созданный объект во входящую переменную.

  5. Исходящие данные - выбор из переменных процесса, тип переменной: сообщение или строка. Запись созданного объекта в выбранную переменную. Настройка активна в случае, если флаг Записывать сконвертированное значение во входящий объект не активен.

Примечание

Если в разделе Исходящие данные выбран объект с типом Сообщение, то в сгенерированном коде создаётся переменная заданного типа данных (Тип данных), а затем для данного сообщения вызывается метод с созданным объектом в качестве аргумента.

Правила преобразования:

  1. Разделитель колонок - указывается разделитель знаком (например, ,), если не установлен разделитель, то по умолчанию точка с запятой (;)

В примерах ниже разделитель - запятая.

  1. Первая строка содержит заголовки колонок - при установке флага в первую строку CSV записываются заголовки из первой строки, если флаг не установлен, имена берутся из Заголовки колонок через разделитель.

Пример файла, где есть заголовки:

EntityId,FolderId,Name,Description,Comment,Email,IsEnabled,IsDeleted,DeleteTs
11111111-2222-3333-0000-000000000000,11111111-0000-0000-0000-000000000000,Администратор,Администратор,NULL,NULL,1,0,NULL
44444444-2222-3333-0000-000000000000,11111111-0000-0000-0000-000000000000,Система,Система,NULL,NULL,1,0,NULL
57E5E8C9-3DED-4F73-926A-3D612DC6D835,11111111-0000-0000-0000-000000000000,Ttt22,ttt22,,,1,0,NULL
837F86D4-6915-4C0A-A4BD-6AC4FDC02FBD,11111111-0000-0000-0000-000000000000,Еее,еее,,,1,0,NULL
CE15D0FC-1011-47D9-8D3E-F0E53366FBA1,11111111-0000-0000-0000-000000000000,Tt,tt,,,1,0,NULL
  1. Заголовки колонок через разделитель - для конвертации csv -> json настройка активна, если флаг Первая строка содержит заголовки колонок не установлен (то есть при установленном флаге настройка недоступна), для конвертации json -> csv настройка активна.

Заголовки колонок через разделитель:

EntityId,FolderId,Name,Description,Comment,Email,IsEnabled,IsDeleted,DeleteTs

Пример без заголовков (без указания заголовка / установки флага):

11111111-2222-3333-0000-000000000000,11111111-0000-0000-0000-000000000000,Администратор,Администратор,NULL,NULL,1,0,NULL
44444444-2222-3333-0000-000000000000,11111111-0000-0000-0000-000000000000,Система,Система,NULL,NULL,1,0,NULL
57E5E8C9-3DED-4F73-926A-3D612DC6D835,11111111-0000-0000-0000-000000000000,Ttt22,ttt22,,,1,0,NULL
837F86D4-6915-4C0A-A4BD-6AC4FDC02FBD,11111111-0000-0000-0000-000000000000,Еее,еее,,,1,0,NULL
CE15D0FC-1011-47D9-8D3E-F0E53366FBA1,11111111-0000-0000-0000-000000000000,Tt,tt,,,1,0,NULL
  1. Записывать в Json null значения явно - для конвертации json -> csv настройка активна, если флаг Первая строка содержит заголовки колонок не установлен (то есть при установленном флаге настройка недоступна), для конвертации csv -> json настройка активна.

../../../_images/jsoncsv2.png

Особенности преобразования json -> csv

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

  • если на верхнем уровне массив, то каждый элемент массива - строка;

  • если на верхнем уровне не массив, то в csv только одна строка.

Например:

[
        {
                "Поле1": "1",
                "ВложеннаяСтруктура": {"f1":11}
                "Поле2": true
        },
        {
                "Поле1": "Значение1",
                "Поле3": 88
        }
]

CSV

Поле1, Поле2, Поле3
1, true
Значение1,, 88

Пример:

[
        {
                "Поле1": "1",
                "ВложеннаяСтруктура":
        {
                "f1": 11
        },
                "Поле2": true
        }
]

CSV

Поле1, Поле2
1, true

Особенности преобразования csv -> json

  1. если количество полей в заголовке не совпадает с количеством колонок, то не считается ошибкой. Итоговое количество колонок берётся из заголовка.

Например:

  • если в заголовке «Поле1, Поле2»

  • в данных «Значение1, Значение2, Значение3», то “Значение3” не учитывается.

[
        {
                "Поле1": "Значение1",
                "Поле2": "Значение2"
        }
]
  1. заменяются запрощенные символов в именах полей:

  • все символы, отличные от букв (латиница, кирилица) и цифр, заменяются на знак подчеркивания (_);

  • если имя поля начинается с цифры, то добавляется знак подчеркивания (_);

При преобразовании csv -> json -> -csv сформируется результат, отличный от исходного csv.

Например:

1Поле 1!, Поле2
Значение1, значение2, Значение3
[
        {
                "_1Поле_1_": "Значение1",
                "Поле2": "Значение2"
        }
]
  1. при преобразовании json формируется всегда массив, внутри массива структура

[
        {
                "_1Поле_1_": "Значение1 из первой строки",
                "Поле2": "Значение2 из первой строки"
        },
        {
                "_1Поле_1_": "Значение1 из второй строки",
                "Поле2": "Значение2 из второй строки"
        }
]

Шаг конвертации XML <-> CSV

Требования к структуре входящего документа XML:

  1. XML-документ должен начинаться с единственного корневого элемента (например, <Root>), который содержит:

  • несколько вложенных элементов с одинаковым именем (например, <Row>). Эти вложенные элементы представляют собой логически повторяющуюся структуру — аналог массива или списка. <Row> — это основной контейнер всех строк, которые будут превращены в строки CSV;

  • один элемент <items xsi:type=»Array»>. Элемент <items xsi:type=»Array»> представляет собой массив данных, внутри которого должны находиться один или несколько элементов с одинаковым именем (например, <Row>, <item>, <Value> и т.п.).

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

  1. Каждый <Row> может содержать один или несколько элементов <Property> — содержит названия заголовка и отдельное значение в строке (ячейке) CSV.

  2. Каждый <Property> должен содержать:

  • Атрибут name — он указывает имя столбца в CSV.

  • Вложенный элемент <Value> с атрибутом xsi:type и текстовым значением — он указывает тип и значение поля.

  1. Пользовательские XML-пространства имён (xmlns) и их префиксы (например, ns1:, abc:) не поддерживаются. Все элементы и атрибуты должны быть без префиксов.

Пример допустимого входа:

<Root xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://v8.1c.ru/8.1/data/core"">
<Row>
        <Property name=""Имя"">
        <Value xsi:type=""xs:string"">Иван</Value>
        </Property>
        <Property name=""Возраст"">
        <Value xsi:type=""xs:int"">30</Value>
        </Property>
</Row>
<Row>
        <Property name=""Имя"">
        <Value xsi:type=""xs:string"">Марина</Value>
        </Property>
        <Property name=""Возраст"">
        <Value xsi:type=""xs:int"">36</Value>
        </Property>
</Row>
</Root>"

Внимание

Если XML не соответствует ожидаемой структуре, результат будет непредсказуемым.

Поддерживаемые типы данных значений полей при преобразовании CSV -> XML:

  • bool (логический тип)

Допустимые значения в CSV: true, false (без кавычек, регистр важен).

В XML представляется:

<Value xsi:type=»xs:boolean»>true</Value>

  • decimal (десятичное число)

Примеры значений в CSV: 1, 99, 3.14

В XML представляется:

<Value xsi:type=»xs:decimal»>99</Value>

  • string (строка)

Любое текстовое значение, включая пустые строки.

В XML представляется:

<Value xsi:type=»xs:string»>Значение</Value>

Пустая строка:

<Value xsi:type=»xs:string»></Value>

  • DateTime (дата и время)

Формат в CSV: yyyy-MM-ddTHH:mm:ss (например, 2025-07-15T10:30:00)

В XML представляется:

<Value xsi:type=»xs:dateTime»>2025-07-15T10:30:00</Value>

Пустые ячейки в CSV всегда интерпретируются как xs:string с пустым содержимым.

Правила преобразования:

  1. Каждый <item> содержит набор полей в виде вложенных XML-элементов. Каждый <item> соответствует одной строке в CSV документе.

  2. Имена заголовков CSV берутся из имен XML-элементов (например, Поле1, Поле2, Поле3).

  3. Значения полей — текстовое содержимое соответствующих элементов.

  4. Все поля из всех элементов <item> собираются в единую таблицу.

  5. Пропущенные или пустые значения остаются пустыми в результирующем CSV.

Настройка шага:

  1. Описание - короткое описание шага преобразования, отображается на самом шаге

../../../_images/xmlcsv1.png
  1. Комментарий - комментарий к шагу преобразования;

  2. xml->csv, csv->xml - выбор схемы преобразования (выбирается формат, который будет на входе и на выходе);

  3. Входящие данные - выбор из переменных процесса. Если ничего не выбрано, то InitMessage;

  4. Записывать сконвертированное значение во входящий объект - записывает созданный объект во входящую переменную, например, в InitMessage.

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

Примечание

Если в разделе Исходящие данные выбран объект с типом Сообщение, то в сгенерированном коде создаётся переменная заданного типа данных (Тип данных), а затем для данного сообщения вызывается метод с созданным объектом в качестве аргумента.

Правила преобразования:

  1. Исключать / Добавлять корневой элемент - убирает корневой элемент из JSON, влияет только на JSON, на CSV не влияет напрямую

<Root><Row>...</Row></Root>  [{"Имя":...}]

Xml документ должен содержать один корневой элемент. Если он явно не задан, то добавляется корневой элемент <Structure> по умолчанию, а так же добавляются пространства имен:

XNamespace coreNs = «http://v8.1c.ru/8.1/data/core»;

XNamespace xs = «http://www.w3.org/2001/XMLSchema»;

XNamespace xsi = «http://www.w3.org/2001/XMLSchema-instance»;

Для преобразования xml->csv флаг Исключать корневой элемент по умолчанию установлен без возможности изменения (всегда исключается корень, используется массив элементов).

../../../_images/xmlcsv2.png
  1. Имя корневого элемента - указывается имя для конвертации csv->xml, настройка появляется при установленном флаге Добавить корневой элемент.

Если выбрано Добавить корневой элемент (флаг активен), но не задано Имя корневого элемента, то значение по умолчанию «root» (из примера).

  1. Имя поля содержится в имени xml-атрибута - при установке флага используется имя атрибута в качестве имени поля.

Например: <Property name=»Имя»> → name

В CSV будет name вместо Имя.

  1. Имя поля содержится в значении xml-атрибута - при установке флага используется значение атрибута как имя поля.

Например: <Property name=»Имя»> → Имя

В CSV будет Имя.

Внимание

Может быть установлен только 1 флаг - или Имя поля содержится в имени xml-атрибута, или Имя поля содержится в значении xml-атрибута, совместное использование недопустимо.

Примечание

При преобразовании xml->csv, если флаги не активны в Имя поля содержится в имени xml-атрибута и Имя поля содержится в значении xml-атрибута и заполнено Имя xml-атрибута, содержащего имя поля, то берётся данное имя.

../../../_images/xmlcsv3.png
  1. Имя xml-элемента, содержащий имя поля - имя XML-элемента, в атрибуте которого хранится название поля (заголовка) CSV-документа (какие XML-элементы будут строками CSV).

Например, если ElementNameWithFieldName = «Property», это значит, что элемент <Property> содержит атрибут name, значение которого и есть имя поля CSV.

Если значение не задано, то по умолчанию берется значение «item».

Пример XML:

<Property name="Поле1">
<Value xsi:type="xs:decimal">1</Value>
</Property>

Имя поля — это значение атрибута name у элемента <Property>.

  1. Имя xml-атрибута, содержащий имя поля - имя xml атрибута, содержащего имя заголовка (header) csv документа (имя столбца CSV).

Например, AttibuteNameWithFieldName = «name»

  1. Имя xml-элемента, содержащий значение поля - имя XML-элемента, который содержит значение поля (значение ячейки CSV).

Например, если ElementNameWithValue = «Value», это значит, что элемент <Value> содержит текстовое или числовое значение, соответствующее данному полю.

Пример XML:

xmlCopyEdit<Property name="Поле1">
<Value xsi:type="xs:decimal">1</Value>
</Property>

В примере значение поля — это текст внутри элемента <Value> (в данном случае «1»).

Если имя не указано, берётся атрибут из поля Имя xml-атрибута, содержащий значение поля.

  1. Имя xml-атрибута, содержащий значение поля - имя атрибута, содержащего значение поля.

Например, <Property value=»Иван»/>

Если не указано Имя xml-элемента, содержащий значение поля, берётся атрибут.

  1. Имя xml-элемента, содержащий описание типа поля - название вложенного элемента, содержащего тип.

Например, <Type>xs:decimal</Type>

Если имя не задано, значения элементов берутся как string.

  1. Имя xml-атрибута, содержащий описание типа поля - имя атрибута, содержащего тип значения.

Например, в XML - xsi:type=»xs:int». Преобразуется тип данных (int, decimal, date и т.д.).

Если имя не задано, значения элементов берутся как string.

  1. Разделитель колонок - указывается значение разделения (например, ,). Если не задано, используется по умолчанию “;”.

  2. Первая строка содержит заголовки колонок - установка флага, при установке флага в первую строку CSV записываются заголовки.

  3. Заголовки колонок через разделитель - указываются разделители для заголовков. При конвертации csv->xml поле активно в случае, если не установлен флаг Первая строка содержит заголовки колонок, для xml->csv поле активно при любой установке флага.

Внимание

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

Если указана настройка, а данных в XML нет, ошибку не выдаст, поведение по умолчанию безопасное.

Если в XML нет элемента или атрибута, указанного в настройке:

  • поле пропускается;

  • в CSV будет пустая ячейка или не будет столбца, если это вся строка.

Если настройки не заданы или выбрано пустое значение у параметров:

  • Имя поля содержится в имени xml-атрибута

  • Имя поля содержится в значении xml-атрибута

  • Имя xml элемента, содержащего имя поля

  • Имя xml атрибута, содержащего имя поля

  • Имя xml элемента, содержащий значение поля

  • Имя xml элемента, содержащего значение тип поля

  • Имя xml атрибута, содержащего значение тип поля

То ожидаемый формат входного XML документа.

<Structure xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://v8.1c.ru/8.1/data/core"">
<item>
        <Поле1>1</Поле1>
        <Поле2>true</Поле2>
        <Поле3></Поле3>
</item>
<item>
        <Поле1>Значение1</Поле1>
        <Поле2></Поле2>
        <Поле3>88</Поле3>
</item>
<item>
        <Поле1>Значение1</Поле1>
        <Поле2>false</Поле2>
        <Поле3>99</Поле3>
</item>
</Structure>

В результате CSV будет:

Поле1;Поле2;Поле3
1;true;
Значение1;;88
Значение1;false;99
../../../_images/xmlcsv4.png

Шаг конвертации XML <-> object

Шаг «xml -> object» предназначен для создания объекта (с заданным типом данных) из XML документа.

Требования к структуре входящего документа:

  1. на входе в шаг может быть только один XML документ, массив документов не поддерживается;

Если необходимо конвертировать несколько XML документов, то создаётся соответствующее количество шагов (то есть шагов столько, сколько документов).

  1. шаг «xml -> object» поддерживает следующую структуру XML документа:

Пример структуры XML:

<root>
<dt>
<f1>dddd</f1>
<f2>fff</f2>
</dt>
<dt>
<f1>uuuu</f1>
<f2>ooo</f2>
</dt>
</root>

<root>
<dt>
<f nn=”а1”>dddd</f>
<f nn=”а2”>ввв</f>
</dt>
<dt>
<f nn=”а1”>ппп</f>
<f nn=”а2”>оо</f>
</dt>
</root>

<root>
<f nn=”а1” zn=”22”></f>
<f nn=”а2” zn=”gg”></f>
</root>

Пример XML:

<Structure xmlns="http://v8.1c.ru/8.1/data/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Property name="уид">
                <Value xsi:type="xs:string">efc5dc45-e60a-4c05-8ed0-8efb71241809</Value>
        </Property>
        <Property name="филиал">
                <Value xsi:type="xs:string">f3ec836b-02e2-11ef-b03a-047c16b5640c</Value>
        </Property>
        <Property name="датаВыгрузки">
                <Value xsi:type="xs:dateTime">2025-01-22T14:04:48</Value>
        </Property>
        <Property name="номер">
                <Value xsi:type="xs:string">ПИНФ-КК-000000002788</Value>
        </Property>
        <Property name="дата">
                <Value xsi:type="xs:dateTime">2024-06-11T23:00:00</Value>
        </Property>
        <Property name="производство">
                <Value xsi:type="Array">
                        <Value xsi:type="Structure">
                                <Property name="номерСтроки">
                                        <Value xsi:type="xs:decimal">1</Value>
                                </Property>
                                <Property name="номенклатура">
                                        <Value xsi:type="xs:string">3c83ff0d-ec10-11ee-bbe0-ac1f6bd14df5</Value>
                                </Property>
                                <Property name="количество">
                                        <Value xsi:type="xs:decimal">2</Value>
                                </Property>
                                <Property name="сумма">
                                        <Value xsi:type="xs:decimal">0.01</Value>
                                </Property>
                        </Value>
                </Value>
        </Property>
        <Property name="запасы">
                <Value xsi:type="Array">
                        <Value xsi:type="Structure">
                                <Property name="номерСтроки">
                                        <Value xsi:type="xs:decimal">1</Value>
                                </Property>
                                <Property name="номенклатура">
                                        <Value xsi:type="xs:string">b8f0ca69-ec05-11ee-bbe0-ac1f6bd14df5</Value>
                                </Property>
                                <Property name="количество">
                                        <Value xsi:type="xs:decimal">0.08</Value>
                                </Property>
                        </Value>
                        <Value xsi:type="Structure">
                                <Property name="номерСтроки">
                                        <Value xsi:type="xs:decimal">2</Value>
                                </Property>
                                <Property name="номенклатура">
                                        <Value xsi:type="xs:string">dd865d64-ec0b-11ee-bbe0-ac1f6bd14df5</Value>
                                </Property>
                                <Property name="количество">
                                        <Value xsi:type="xs:decimal">0.04</Value>
                                </Property>
                        </Value>
                </Value>
        </Property>
        <Property name="оплаты">
                <Value xsi:type="Array"/>
        </Property>
</Structure>

Настройка шага:

  1. Описание - короткое описание шага преобразования, отображается на самом шаге

../../../_images/xmlobject1.png
  1. Комментарий - комментарий к шагу преобразования;

  2. xml->object, object->xml - выбор схемы преобразования (выбирается формат, который будет на входе и на выходе);

  3. Тип данных - выбор типа данных, на основании которого будет создан и инициализирован объект;

  4. Входящие данные - выбор из переменных процесса. Если ничего не выбрано, то InitMessage;

  5. Записывать сконвертированное значение во входящий объект - записывает созданный объект во входящую переменную.

  6. Исходящие данные - выбор из переменных процесса. Запись созданного объекта в выбранную переменную. Настройка активна в случае, если флаг Записывать сконвертированное значение во входящий объект не активен.

Примечание

Если в разделе Исходящие данные выбран объект с типом Сообщение, то в сгенерированном коде создаётся переменная заданного типа данных (Тип данных), а затем для данного сообщения вызывается метод с созданным объектом в качестве аргумента.

Внимание

Тип переменных - важный параметр. Если конвертация из xml, то на вход должна быть строка или сообщение, содержащее xml, на выход - сообщение или переменная с соответствующим типом.

Правила преобразования:

  1. Исключать / Добавлять корневой элемент - убирает корневой элемент.

Xml документ должен содержать один корневой элемент. Если он явно не задан, то добавляется корневой элемент <Structure> по умолчанию, а так же добавляются пространства имен:

XNamespace coreNs = «http://v8.1c.ru/8.1/data/core»;

XNamespace xs = «http://www.w3.org/2001/XMLSchema»;

XNamespace xsi = «http://www.w3.org/2001/XMLSchema-instance»;

  1. Имя корневого элемента - указывается имя для конвертации object -> xml, настройка доступна при активном флаге Добавлять корневой элемент

  2. Имя поля содержится в имени xml-атрибута - при установке флага используется имя атрибута в качестве имени поля.

  3. Имя поля содержится в значении xml-атрибута - при установке флага используется значение атрибута как имя поля.

Внимание

Может быть установлен только 1 флаг - или Имя поля содержится в имени xml-атрибута, или Имя поля содержится в значении xml-атрибута, совместное использование недопустимо.

  1. Имя xml-элемента, содержащий имя поля - имя XML-элемента, внутри которого находятся пары ключ–значение. Из примера - Property, каждый Property — это отдельное поле. Если имя поля и имя элемента совпадают, настройка не заполняется.

  2. Имя xml-атрибута, содержащий имя поля - указывает, из какого атрибута брать название поля. Из примера - name

  3. Имя xml-элемента, содержащий значение поля - элемент, в котором содержится значение этого поля. Из примера структуры - Value

  4. Имя xml-атрибута, содержащий значение поля - указывается, если значение поля в XML представлено в виде атрибута элемента, а не содержится в теле элемента. Если значение содержится внутри элемента, а не в атрибуте (как в примере), то поле оставляется пустым.

  5. Имя xml-элемента, содержащий описание типа поля - информация о типе данных — строка, дата, число и т.д.. Из примера - xsi:type

  6. Имя xml-атрибута, содержащий описание типа поля - указывается, если тип данных значения (например, строка, число, дата) задан в виде атрибута XML.

../../../_images/xmlobject2.png

Шаг конвертации Упаковка <-> Распаковка

Шаг может пригодиться, когда необходимо распаковать или упаковать данные в архив, то есть работа ведётся с архивом, а не одним файлом. Поддерживается только ZIP-формат.

Настройка шага:

  1. Описание - короткое описание шага преобразования, отображается на самом шаге

../../../_images/archive_packaging1.png
  1. Комментарий - комментарий к шагу преобразования;

  2. Упаковка / Распаковка - выбор схемы преобразования (выбирается формат, который будет на входе);

  3. Входящие данные - выбор из переменных процесса, тип переменной: сообщение (не массив). Если ничего не выбрано, то InitMessage;

  4. Записывать сконвертированное значение во входящий объект - записывает созданный объект во входящую переменную.

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

Примечание

Если в разделе Исходящие данные выбран объект с типом Сообщение, то в сгенерированном коде создаётся переменная заданного типа данных (Тип данных), а затем для данного сообщения вызывается метод созданным объектом в качестве аргумента.

../../../_images/archive_packaging2.png