> For the complete documentation index, see [llms.txt](https://docs.geodin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.geodin.com/geodin-ground/ru/rabochie-processy-i-integracii/arcgis-integration/arcgis-pro-attach-reports.md).

# Прикрепление отчетов к аннотациям скважин

{% embed url="<https://www.youtube.com/watch?v=34Gydh4vkws>" %}

> **Главы видео:** 0:00 Как GeoDin организует папки отчетов по скважинам | 0:37 Поиск аннотаций документов | 1:14 Подготовка поля AttachKey | 1:53 Выбор скважин со связанными документами | 2:25 Вычисление значений AttachKey | 3:33 Включение и создание соответствий вложений | 4:35 Добавление вложений | 5:34 Проверка прикрепленных отчетов

Когда чертеж Civil 3D со скважинами GeoDin® Ground импортируется в ArcGIS Pro ([предыдущий урок](/geodin-ground/ru/rabochie-processy-i-integracii/arcgis-integration/arcgis-pro-ground-model.md)), экспортированные PDF-отчеты можно прикрепить к аннотации документа каждой скважины — чтобы нужный геотехнический отчет открывался для нужного объекта. В этом уроке создается ключ соответствия и запускаются два инструмента геообработки, которые привязывают PDF к аннотациям.

{% hint style="info" %}
Для того же рабочего процесса, начинающегося с экспортированных из GeoDin® точечных слоев (одна запись на скважину), см. [Прикрепление отчетов](https://docs.geodin.com/integrations-and-plug-ins/overview/attach-reports) в документации GeoDin®. Версия ниже работает с слоем аннотаций Civil 3D, где у каждой скважины **несколько** записей аннотаций.
{% endhint %}

## Шаг 1: Найдите отчеты и подтвердите аннотации

* При импорте GeoDin® Ground создает рядом с чертежом папку документов, структурированную по проекту, с одной подпапкой на каждую скважину, где хранится геотехнический отчет этой скважины.
* Скопируйте PDF-отчеты в одну рабочую папку, чтобы упростить сопоставление.

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-f97670b6dc77ca6f955145752b90e9197b870c91%2FAGP_Attach_01_Documents_Folder.png?alt=media" alt=""><figcaption><p>Экспортированная папка документов и PDF-файл Geotech Soil Log одной скважины</p></figcaption></figure>

* В таблице атрибутов слоя аннотаций подтвердите запись документа для скважины: ее **RefName** содержит «1 document(s)».

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-ad9f9aa5bfece6e01f0a151f1ecef21d604828f6%2FAGP_Attach_02_Attribute_Table.png?alt=media" alt=""><figcaption><p>Запись аннотации документа в таблице атрибутов</p></figcaption></figure>

## Шаг 2: Добавьте поле ключа

* Откройте представление полей класса объектов и добавьте новое поле с именем **AttachKey** с **Тип данных = Текст**. Сохраните изменения.

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-95c0981b3c737102f7b464f8130333a79ae14316%2FAGP_Attach_03_AttachKey_Field.png?alt=media" alt=""><figcaption><p>Поле AttachKey, добавленное как Text</p></figcaption></figure>

## Шаг 3: Выберите только аннотации документов

* Используйте **Выбор по атрибутам** с условием: **RefName содержит текст** `document`.
* Примените и проверьте количество выбранных объектов, прежде чем продолжить — ключ должен вычисляться только для этих записей.

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-e4a1416ea93fa76b16e16629b52c1159a4cb0dc2%2FAGP_Attach_04_Select_By_Attributes.png?alt=media" alt=""><figcaption><p>Выбор записей аннотации документа</p></figcaption></figure>

## Шаг 4: Вычислите ключ

* При активном выборе щелкните правой кнопкой мыши **AttachKey > Вычислить поле**, задайте **Тип выражения = Python**, выражение `extract_bh(!Layer!)`, и этот блок кода:

```python
def extract_bh(layer):
    layer = layer.upper()

    # Определите известные префикс и суффикс
    prefix = "LOC_BASE-"
    suffix = "-BASIC"

    if layer.startswith(prefix) and layer.endswith(suffix):
        return layer[len(prefix):-len(suffix)] + " -"

    return None
```

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-a58a2272e6e779184e61047469320cae1cea6440%2FArcGIS_Pro_Calculate_AttachKey.png?alt=media" alt=""><figcaption><p>Вычисление поля применено только к выбранным записям</p></figcaption></figure>

* Окончательный `" -"` знак сделан намеренно: он делает ключ достаточно специфичным, чтобы точно совпасть только с одним именем файла отчета по префиксу, поэтому скважины с похожими именами (BH1 и BH1A) не могут быть сопоставлены ошибочно.

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-b9285f876960edd93f67f31a5861ae7998991862%2FAGP_Attach_06_Key_Populated.png?alt=media" alt=""><figcaption><p>Заполненный ключ — имя скважины с конечным дефисом</p></figcaption></figure>

## Шаг 5: Включите вложения

* Откройте свойства **Свойства > Управление** и включите **Вложения** (вложения — это объект геобазы; слой аннотаций должен быть классом объектов геобазы, а не shapefile). Сохраните.

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-3b70fbcfa08089a8024a389d184172b77291638b%2FAGP_Attach_07_Enable_Attachments.png?alt=media" alt=""><figcaption><p>Вложения включены для класса объектов</p></figcaption></figure>

## Шаг 6: Создайте таблицу соответствий

* Запустите **Создать таблицу соответствий вложений** инструмент геообработки:
  * **Входной набор данных**: слой аннотаций (выбранные записи).
  * **Входная папка**: рабочая папка с PDF-файлами.
  * **Поле ключа**: `AttachKey` - **Входной фильтр данных**: `*.pdf` - **Шаблон сопоставления**: **Префикс**.

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-a42ca0a4e9253c39016cf0cdec89b69174169127%2FAGP_Attach_08_Match_Table.png?alt=media" alt=""><figcaption><p>Создать таблицу соответствий вложений с шаблоном сопоставления, установленным в значение Префикс</p></figcaption></figure>

## Шаг 7: Добавьте вложения

* Запустите **Добавить вложения** с тем же входным набором данных, **Входное поле соединения** `OBJECTID`, таблицей соответствий из шага 6 и **Поле соединения соответствия** `MatchID`.

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-4812b0a7d523737d75cd41f6a33369d06a8bfe72%2FAGP_Attach_09_Add_Attachments.png?alt=media" alt=""><figcaption><p>Добавить вложения, соединяя OBJECTID с MatchID</p></figcaption></figure>

## Шаг 8: Проверка

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

<figure><img src="https://864559467-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPq7NpdI8RP7yepuTnGLt%2Fuploads%2Fgit-blob-30e08c2a452c3e72eb5158903f72b300fd7af258%2FArcGIS_Pro_Attachment_Popup.png?alt=media" alt=""><figcaption><p>Отчет, прикрепленный к аннотации, подтвержденный во всплывающем окне</p></figcaption></figure>

## Дополнительные параметры

* **Область выбора** - вычисляйте ключ **только для выбранных записей документа**; вычисление по всем строкам создает некорректные совпадения.
* **Специфичность ключа** - если несколько отчетов имеют похожие имена, сделайте формат ключа более специфичным перед сопоставлением (конечный `" -"` существует именно для этого).

***

## Работа с сопоставлением вложений

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

***

**Следующий шаг:** [Опубликуйте и просмотрите модель как веб-сцену](/geodin-ground/ru/rabochie-processy-i-integracii/arcgis-integration/arcgis-web-scene.md) — прикрепленные отчеты остаются доступны во всплывающих окнах опубликованной сцены.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.geodin.com/geodin-ground/ru/rabochie-processy-i-integracii/arcgis-integration/arcgis-pro-attach-reports.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
