Обзор

Импорт в Discussions читает классический список Доска обсуждений (Discussion Board, шаблон 108 или базовый тип Discussion Board - в него входят и списки обсуждений сайтов сообщества) и записывает его содержимое в два списка сайта продукта - Темы обсуждений и Сообщения обсуждений. Эта статья - справочник к мастеру, описанному в статье KB10417. Как импортировать классическую доску обсуждений SharePoint в Discussions: какое классическое поле попадает в какой столбец Discussions, как реконструируется дерево ответов, что вычисляется, что не переносится и как импорт распознаёт свою работу при повторном запуске. Сами столбцы описаны в статье KB10426. Справочник списков и столбцов Discussions.

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

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

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

Темы

Каждое классическое обсуждение становится одним элементом списка Темы обсуждений:

Классическое обсуждениеСтолбец Темы обсужденийЗначение
ТемаНазваниеКопируется; обрезается до 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}
Кем создано, Кем изменено, Создан, ИзмененТе же системные столбцыВосстанавливаются с параметром Сохранить исходных авторов и даты
ВложенияВложения элементаКопируются с параметром Скопировать вложения

Ответы

Каждый классический ответ становится одним элементом списка Сообщения обсуждений:

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

Классическая цепочка и её импортированная копия

Классическая цепочка и её импортированная копия

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

  • Оценки (звёздные рейтинги) и список людей, которым понравился элемент. Число лайков копируется; столбец Кому понравилось остаётся пустым, поэтому каждый пользователь может ещё раз поставить лайк импортированному элементу.
  • Категории: у классических досок их нет, и импорт оставляет столбец Категория пустым. Назначьте категории после импорта, если доска их использует.
  • Число просмотров: начинается с 0.
  • Последний ответ: остаётся пустым; веб-часть показывает автора последнего ответа только для ответов, написанных после импорта.
  • Оповещения, классические представления и формы списка: они принадлежат классическому списку и не имеют эквивалента в Discussions. Подписки пользователи создают заново - см. KB10404. Подписка на доски и темы: подписки и частота сводок.
  • Закреплённые темы: у классических досок такого флага нет; закрепите нужные темы после импорта.

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

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

Вложенность требует корректных родительских ссылок в порядке создания и ограничивается длиной пути родителей в 255 символов. При повторном импорте текущая реализация считает ранее импортированных родителей элементами уровня 0 с путём /; новые ответы на них могут получить неверный уровень или путь. После дополнительного импорта проверьте вложенные ответы.

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

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

❗ Важно
Иерархию можно восстановить только по ссылкам, которые существуют в классическом списке на момент импорта. Если у вас ещё есть исходная доска - например, в SharePoint Server, - убедитесь, что инструмент миграции, которым вы переносите её в SharePoint Online, переносит столбец Родительский элемент.

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

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

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

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

Число ответов берётся из классического источника, включая ответы, которые не удалось импортировать. Если в отчёте есть ошибки, сравните счётчик с фактически перенесёнными ответами.

Авторы и даты

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

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

Импортированные темы с прежним идентификатором в списке Темы обсуждений

Импортированные темы с прежним идентификатором в списке Темы обсуждений

Вложения

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

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

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

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

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

Вопросы и ответы

Задайте вопрос по статье и получите официальный ответ нашей команды.

Вопросов пока нет. Задайте первый вопрос.

Рекомендуемые статьи

Почему сотрудника нет на организационной структуре?

Контрольный список для поиска причин, по которым сотрудник не отображается в Vitextra Organizational Chart: исключение по умолчанию учётных записей без лицензии и с пустой должностью, отключённые учётные записи, гостевые пользователи, незаполненный руководитель в Microsoft Entra ID, отфильтрованные руководители, свёрнутые уровни и 12-часовой кэш данных.

88 7 мин
Как добавить RSS Reader в Microsoft Teams

Пошаговое руководство по использованию Vitextra RSS Reader в Microsoft Teams: публикация приложения из каталога приложений SharePoint, добавление его как вкладки в канал Teams с собственными RSS-источниками, добавление как личного приложения, сохранение конфигурации по умолчанию, которую личное приложение использует для всех, закрепление с помощью политики настройки приложений и что проверить, если каналы не появляются.

47 5 мин
Employee Details: заполненность профиля и как достичь 100 %

Что учитывает карточка «Заполненность профиля» в Vitextra Employee Details, семь равнозначных критериев (фото, «Обо мне», три навыка, язык, аккаунт в соцсети, номер телефона, расположение офиса), как рассчитывается процент, кто видит карточку и как заполнить каждый пробел.

93 3 мин

Поделиться