---
title: "Что копирует импорт и как он восстанавливает цепочки ответов"
description: "Справочник по импорту классической доски обсуждений в Vitextra Discussions: соответствие полей классических тем и ответов столбцам списков Discussions Topics и Discussions Posts, восстановление иерархии ответов по классическим ссылкам на родительский элемент, «сплющенные» доски и ответы-сироты, установка лучших ответов, числа лайков и последней активности, восстановление авторов и дат, копирование вложений, что не копируется и как столбец «Прежний идентификатор» делает повторный запуск безопасным."
url: https://vitextra.com/ru/support/kb/10418
language: ru
published: 2026-11-02
modified: 2026-11-01
products:
  - "Discussions"
author: "Lidija Reising"
tags: ["соответствие полей импорта Discussion Board", "восстановление иерархии ответов", "ParentItemID", "сплющенная доска обсуждений", "ответы-сироты", "столбец Прежний идентификатор", "VtxLegacyId", "импорт лучшего ответа", "Discussions Posts Path Depth", "Vitextra Discussions"]
---

# Что копирует импорт и как он восстанавливает цепочки ответов

Справочник по импорту классической доски обсуждений в Vitextra Discussions: соответствие полей классических тем и ответов столбцам списков Discussions Topics и Discussions Posts, восстановление иерархии ответов по классическим ссылкам на родительский элемент, «сплющенные» доски и ответы-сироты, установка лучших ответов, числа лайков и последней активности, восстановление авторов и дат, копирование вложений, что не копируется и как столбец «Прежний идентификатор» делает повторный запуск безопасным.

## Обзор

Импорт в [Discussions](https://vitextra.com/ru/products/discussions) читает классический список **Доска обсуждений** (Discussion Board, шаблон 108 или базовый тип Discussion Board — в него входят и списки обсуждений сайтов сообщества) и записывает его содержимое в два списка сайта продукта — **Discussions Topics** и **Discussions Posts**. Эта статья — справочник к мастеру, описанному в статье [KB10417. Как импортировать классическую доску обсуждений SharePoint в Discussions](https://vitextra.com/ru/support/kb/10417): какое классическое поле попадает в какой столбец Discussions, как реконструируется дерево ответов, что вычисляется, что остаётся позади и как импорт распознаёт свою работу при повторном запуске. Сами столбцы описаны в статье [KB10426. Справочник списков и столбцов Discussions](https://vitextra.com/ru/support/kb/10426).

## Как классическая доска хранит цепочку

Классическая доска обсуждений хранит каждое обсуждение как **папку** списка, а каждый ответ — как **элемент внутри этой папки**. Папка содержит тему, текст, флаг *Вопрос*, флаг *Рекомендуемое*, число лайков и идентификатор лучшего ответа; каждый ответ содержит собственный текст, число лайков и ссылку **Родительский элемент** (`ParentItemID`), указывающую либо на само обсуждение (ответ верхнего уровня), либо на другой ответ (вложенный). Импорт читает список страницами по 2 000 элементов, упорядоченными по идентификатору, и отличает папки от сообщений по типу элемента.

Discussions использует другую модель — один элемент на тему, один элемент на ответ, с подстановками на тему и на родительское сообщение, — поэтому импорт является переводом между двумя структурами, а не копией списка.

## Темы

Каждое классическое обсуждение становится одним элементом списка **Discussions Topics**:

| Классическое обсуждение | Столбец Discussions Topics | Значение |
|---|---|---|
| Тема | **Название** | Копируется; обрезается до 255 символов |
| Текст | **Содержимое** (`VtxBody`) | Копируется через HTML-санитайзер продукта: разрешённые теги и атрибуты остаются, скрипты, стили и небезопасные ссылки отбрасываются |
| — | **Доска** (`VtxBoard`) | Доска, выбранная в веб-части |
| Вопрос | **Тип** (`VtxTopicType`) | *Question* (вопрос), если флаг установлен, иначе *Discussion* (обсуждение) |
| — | **Статус** (`VtxStatus`) | *Open* (открыта); меняется на *Answered* (есть ответ), если найден лучший ответ (см. ниже) |
| Рекомендуемое | **Рекомендуемая** (`VtxIsFeatured`) | Копируется |
| Число лайков | **Лайки** (`VtxLikeCount`) | Копируется |
| Ответы в папке | **Ответы** (`VtxReplyCount`) | Подсчитывается импортом |
| — | **Просмотры** (`VtxViewCount`) | 0 |
| Дата создания последнего ответа или обсуждения | **Последняя активность** (`VtxLastActivity`) | Вычисляется импортом |
| Лучший ответ | **Принятый ответ** (`VtxAcceptedPostId`) | Идентификатор импортированного ответа |
| — | **Статус утверждения** (`VtxApprovalStatus`) | *Approved* (утверждено) |
| — | **Жалобы** (`VtxReportCount`) | 0 |
| Идентификатор списка и элемента | **Прежний идентификатор** (`VtxLegacyId`) | `{source list id}:{classic item id}` |
| Кем создано, Кем изменено, Создан, Изменен | Те же системные столбцы | Восстанавливаются с параметром **Сохранить исходных авторов и даты** |
| Вложения | Вложения элемента | Копируются с параметром **Скопировать вложения** |

## Ответы

Каждый классический ответ становится одним элементом списка **Discussions Posts**:

| Классический ответ | Столбец Discussions Posts | Значение |
|---|---|---|
| Тема | **Название** | Копируется; `Re:`, если пусто; обрезается до 255 символов |
| Текст | **Содержимое** (`VtxBody`) | Копируется через санитайзер |
| Папка ответа | **Тема** (`VtxTopic`) | Импортированная тема этой папки |
| Родительский элемент | **Родительское сообщение** (`VtxParentPost`) | Импортированный родительский ответ; пусто для ответа верхнего уровня |
| — | **Путь** (`VtxPath`) | `/` для ответа верхнего уровня; путь родителя плюс идентификатор родителя и `/` для вложенного, например `/341/356/` |
| — | **Уровень** (`VtxDepth`) | 0 для ответа верхнего уровня, иначе уровень родителя + 1 |
| Лучший ответ обсуждения | **Принятый ответ** (`VtxIsAccepted`) | *Да* для ответа, на который указывает обсуждение |
| Число лайков | **Лайки** (`VtxLikeCount`) | Копируется |
| — | **Статус утверждения**, **Жалобы** | *Approved*, 0 |
| Идентификатор списка и элемента | **Прежний идентификатор** (`VtxLegacyId`) | `{source list id}:{classic item id}` |
| Кем создано, Кем изменено, Создан, Изменен | Те же системные столбцы | Восстанавливаются с параметром **Сохранить исходных авторов и даты** |
| Вложения | Вложения элемента | Копируются с параметром **Скопировать вложения** |

![Классическая цепочка и её импортированная копия](https://static.vitextra.com/articles/10418/classic-vs-imported-ru.png)
*Классическая цепочка и её импортированная копия*

## Что не копируется

- **Оценки** (звёздные рейтинги) и список людей, которым понравился элемент. *Число* лайков копируется; столбец **Кому понравилось** остаётся пустым, поэтому каждый пользователь может ещё раз поставить лайк импортированному элементу.
- **Категории**: у классических досок их нет, и импорт оставляет столбец **Категория** пустым. Назначьте категории после импорта, если доска их использует.
- **Число просмотров**: начинается с 0.
- **Последний ответ**: остаётся пустым; веб-часть показывает автора последнего ответа только для ответов, написанных после импорта.
- **Оповещения**, классические **представления** и **формы списка**: они принадлежат классическому списку и не имеют эквивалента в Discussions. Подписки пользователи создают заново — см. [KB10404. Подписка на доски и темы: подписки и частота сводок](https://vitextra.com/ru/support/kb/10404).
- **Закреплённые** темы: у классических досок такого флага нет; закрепите нужные темы после импорта.

## Как восстанавливается дерево ответов

1. Ответы сортируются по классической дате **Создан**, от самых старых, чтобы родитель всегда создавался раньше потомков.
2. Для каждого ответа импорт находит его тему по **папке**, в которой лежит ответ. Ответ, папка которого не соответствует ни одной импортированной теме, пропускается с предупреждением *Ответ пропущен: его тема не импортирована*.
3. Классический **Родительский элемент** ищется среди ответов, импортированных в этом запуске или ранее. Если он указывает на ответ, новое сообщение получает этот ответ как **Родительское сообщение**, наследует его **Путь** и получает **Уровень** + 1. Если он указывает на само обсуждение, пуст или указывает на элемент, неизвестный импорту, сообщение становится **ответом верхнего уровня** темы с путём `/` и уровнем 0. Если родительский ответ есть в классическом списке, но создать его в этом запуске не удалось, сообщение тоже помещается на верхний уровень, а в отчёт добавляется предупреждение *Родительский ответ не импортирован; ответ помещён на верхний уровень: 419* (419 — классический идентификатор перенесённого ответа). Ответы, вложенные в такой ответ, прикрепляются к нему как обычно.

Вложенность не ограничена: классический ответ пятого уровня попадает на пятый уровень.

### «Сплющенные» доски и ответы-сироты

Некоторые инструменты миграции копируют элементы классической доски, но не ссылки **Родительский элемент** между ними; доска тогда выглядит как список обсуждений, все ответы которых лежат на одном уровне, или ссылки указывают на идентификаторы элементов, которых больше нет. Пробный прогон считает последние в строке **Ответы без известного родителя (станут верхнего уровня)** и показывает предупреждение *Часть ответов потеряла родителя (доска была «сплющена» миграцией).* Такие ответы прикрепляются непосредственно к своей теме в хронологическом порядке. Ответы с пустым полем **Родительский элемент** в этой строке не учитываются, но обрабатываются так же. Импорт не пытается угадать исходного родителя по времени или темам.

❗ **Важно**  
Иерархию можно восстановить только по ссылкам, которые существуют в классическом списке на момент импорта. Если у вас ещё есть исходная доска — например, в SharePoint Server, — убедитесь, что инструмент миграции, которым вы переносите её в SharePoint Online, переносит столбец **Родительский элемент**; см. [KB10419. Перенос досок обсуждений из SharePoint Server в SharePoint Online с помощью Discussions](https://vitextra.com/ru/support/kb/10419).

## Лучшие ответы, счётчики и последняя активность

После создания всех ответов импорт ещё раз проходит по темам (этап *Обновление счётчиков и ответов*) и записывает для каждой темы плана:

- **Ответы** — число классических ответов в папке темы;
- **Последняя активность** — дата **Создан** самого нового классического ответа или дата **Создан** обсуждения, если ответов нет;
- **Лайки** — число лайков обсуждения;
- **Принятый ответ** и **Статус = Answered** — если классический *Лучший ответ* указывает на импортированный ответ; сам ответ получает **Принятый ответ = Да**. Классический флаг *Есть ответ* без лучшего ответа игнорируется, и тема остаётся *Open*.

Эти значения записываются для каждой темы плана, включая темы, импортированные в предыдущем запуске, поэтому повторный запуск пересчитывает счётчики.

## Авторы и даты

Элементы списка, созданные через REST API, всегда имеют автором пользователя, который их создаёт. Если выбран параметр **Сохранить исходных авторов и даты**, импорт делает второй вызов на элемент, который записывает **Кем создано** (логин классического автора), **Кем изменено** (классический редактор или автор, если редактора нет), **Создан** и **Изменен**. SharePoint принимает эти значения только от учётных записей, которым разрешено задавать системные поля, — на практике от владельцев сайта с полным доступом. Если поле отклонено, отчёт содержит строку *Название темы: Поле — сообщение SharePoint*; если отклонён весь вызов — *Не удалось восстановить автора и даты*. Элемент всё равно импортируется с вами в качестве автора и временем импорта в качестве даты.

Логин автора должен разрешаться в учётную запись клиента. Удалённые учётные записи или локальные учётные записи, которые инструмент миграции не сопоставил, восстановить нельзя, и они дают то же предупреждение.

![Импортированные темы с прежним идентификатором в списке Discussions Topics](https://static.vitextra.com/articles/10418/legacy-id-column-ru.png)
*Импортированные темы с прежним идентификатором в списке Discussions Topics*

## Вложения

Если выбран параметр **Скопировать вложения**, импорт получает список файлов вложений каждой классической темы и ответа, скачивает каждый файл с исходного сайта и прикрепляет его к новому элементу под исходным именем. Символы, которые SharePoint не допускает в именах файлов (`\ / : * ? " < > | # % & { } ~`), заменяются подчёркиванием, а имена длиннее 120 символов сокращаются. Файл, который не удалось скопировать, даёт предупреждение *имя файла: сообщение SharePoint*, а остальные файлы всё равно обрабатываются. Встроенные изображения в тексте являются частью HTML и переносятся вместе с ним.

## Прежний идентификатор и повторный запуск импорта

Каждая импортированная тема и каждый ответ хранят `{source list id}:{classic item id}` в индексированном столбце **Прежний идентификатор** — например `3f2a9c1e-…:418`. Перед пробным прогоном и перед импортом мастер читает все прежние идентификаторы сайта, которые начинаются с идентификатора выбранного классического списка. Следствия:

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

📝 **Заметка**  
Прежний идентификатор включает **идентификатор классического списка**. Если классическую доску скопировать в новый список — например, повторным проходом миграции или копированием сайта, — у нового списка будет другой идентификатор, и импорт из него создаст второй набор тем. Всегда импортируйте из одного и того же списка или удалите первый набор перед импортом из копии.
