---
title: "Вложенные Mail Merge с регионами в Java"
---


В некоторых случаях вам может потребоваться использовать вложенные Mail Merge области. Вложенное слияние - это функция, которая позволяет объединять иерархические данные из вашего источника данных в шаблон слияния для упрощения заполнения вашего документа. По сути, иерархические данные представлены в виде набора элементов данных, а иерархические связи описывают, как элементы данных связаны друг с другом (один элемент данных является родительским для другого).

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

{{% alert color="primary" %}}

Вложенный Mail Merge имеет значение только при выполнении Mail Merge с регионами.

{{% /alert %}}

## Что такое вложенный Mail Merge

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

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

На рисунке ниже показаны две вложенные области, где область *Order* Mail Merge является родительской для области *Item* Mail Merge.

<img src="/words/java/nested-mail-merge-with-regions/nested-mail-merge-with-regions-1.png" alt="nested_mail_merge_with_regions_aspose_words_java" style="width:650px"/>

## Как обработать Mail Merge с вложенными областями

Данные, которые будут объединены в шаблон, могут быть получены из различных источников, в основном из реляционных баз данных или документов XML. В нашем примере мы собираемся использовать файл XML для хранения наших данных и загружать его непосредственно в **DataSet**.

Aspose.Words позволяет обрабатывать Mail Merge с вложенными областями, используя связи данных, указанные в **DataSet**. Когда объект **DataSet** загружает XML, он либо использует предоставленную схему, либо выводит ее из структуры самого XML для достижения этой цели. Используя эту структуру, он создает связи между таблицами там, где это необходимо.

На рисунке ниже показано, как данные из таблицы *Order*, переданные во вложенные области слияния, будут связаны с таблицей *Item*, а также выходные данные, сгенерированные во время операции слияния.

<img src="/words/java/nested-mail-merge-with-regions/nested-mail-merge-with-regions-2.png" alt="mail_merge_with_nested_regions_aspose_words_java" style="width:650px"/>

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

В следующем примере кода показано, как сгенерировать счет-фактуру, используя вложенные значения Mail Merge с регионами:

{{< gist "aspose-words-gists" "827e71ccc0b8516a3cfe247b86ce6d4e"  "Examples-src-main-java-com-aspose-words-examples-mail_merge-TypesofMailMergeOperations-NestedMailMerge.java" >}}

{{% alert color="primary" %}}

Вы можете скачать примерный файл этого примера с сайта [Aspose.Words GitHub](https://github.com/aspose-words/Aspose.Words-for-Java/blob/master/Examples/Data/Mail%20merge%20data%20-%20Customers.xml).

{{% /alert %}}

## Как настроить связи данных во вложенных Mail Merge с регионами

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

При извлечении данных для вложенного Mail Merge файла из XML с использованием метода **ReadXml** автоматически создаются связи в соответствии со структурой документа XML. Однако вам необходимо убедиться, что были созданы правильные связи.

Если Mail Merge работает не так, как ожидалось, то вам, возможно, потребуется реструктурировать ваш файл XML или явно создать отношения между объектами DataTable в DataSet.

Объект `DataSet`, содержащий связанные таблицы данных, будет использовать объект **DataRelation** для представления родительско-дочерних отношений между таблицами.

В следующем примере кода показано, как установить `DataRelation` между таблицей клиента и таблицей заказа с помощью объекта `DataRelation`:
{{< highlight java >}}
dataSet.getRelations().add(new DataRelation("OrderToItem", orderTable.getColumns().get("Order_Id"), itemTable.getColumns().get("Order_Id"), false));
{{< /highlight >}}
