---
title: "Отслеживание изменений в документе на C++"
---

Функция отслеживания изменений, также известная как проверка, позволяет отслеживать изменения в содержании и форматировании, внесенные вами или другими пользователями. Эта функция отслеживания изменений с помощью Aspose.Words поддерживает отслеживание изменений в Microsoft Word. С помощью этой функции вы можете получить доступ к отдельным редакциям вашего документа и применить к ним различные свойства.

Когда вы включите функцию отслеживания изменений, все вставленные, удаленные и измененные элементы документа будут визуально выделены с информацией о том, кем, когда и что было изменено. Объекты, которые содержат информацию о том, что было изменено, называются "отслеживаемыми изменениями". Например, предположим, что вы хотите просмотреть документ и внести в него важные изменения - это может означать, что вам необходимо внести правки. Кроме того, вам может потребоваться вставить комментарии для обсуждения некоторых изменений. Вот где пригодится отслеживание изменений в документах.

В этой статье объясняется, как управлять изменениями, внесенными многими рецензентами в один и тот же документ, и отслеживать их, а также свойства для отслеживания изменений.

```

Обратите внимание, что функция комментариев в Aspose.Words, так же как и в Microsoft Word, может быть связана с отслеживанием изменений. Однако помните, что комментарии полностью независимы от отслеживания изменений.

```

## Что такое Пересмотр

Прежде чем перейти к рассмотрению изменений, давайте объясним значение изменений. [revision](https://reference.aspose.com/words/cpp/aspose.words/revision/) - это изменение, которое происходит в одном узле документа, в то время как группа изменений, представленная классом [RevisionGroup](https://reference.aspose.com/words/cpp/aspose.words/revisiongroup/), представляет собой группу последовательных изменений, которые происходят во многих узлах документа. По сути, ревизия - это инструмент для отслеживания изменений.

Изменения используются в функции отслеживания изменений и в функции сравнения документов, где изменения отображаются в результате сравнения. Таким образом, изменения в функции отслеживания изменений показывают, кем и что было изменено.

```

Обратите внимание, что Microsoft Word не позволяет просматривать отдельные редакции, он позволяет просматривать только последовательные редакции как единое целое. Но Aspose.Words устраняет это ограничение с помощью класса **RevisionGroup**.

```

Aspose.Words поддерживает различные типы редакций, как и в Microsoft Word, такие как Вставка, удаление, изменение формата, изменение стиля и перемещение. Все типы редакций представлены перечислением [RevisionType](https://reference.aspose.com/words/cpp/aspose.words/revisiontype/).

```

Обратите внимание, что изменения приводят к результату, аналогичному Microsoft Word, но Aspose.Words не определяет форматирование при отслеживании изменений.

```

## Запуск и остановка отслеживания изменений

Редактирование документа обычно не считается доработкой, пока вы не начнете его отслеживать. Aspose.Words позволяет автоматически отслеживать все изменения в документе с помощью простых шагов. Вы можете легко запустить процесс отслеживания изменений, используя метод [StartTrackRevisions](https://reference.aspose.com/words/cpp/aspose.words/document/starttrackrevisions/). Если вам нужно остановить процесс отслеживания изменений, чтобы любые будущие правки не считались ревизиями, вам нужно будет использовать метод [StopTrackRevisions](https://reference.aspose.com/words/cpp/aspose.words/document/stoptrackrevisions/).

```

Обратите внимание, что метод `StartTrackingRevisions` не изменяет статус свойства [TrackRevisions](https://reference.aspose.com/words/cpp/aspose.words/document/set_trackrevisions/) и не использует его значение для отслеживания изменений. Кроме того, если узел был перемещен из одного местоположения в другое внутри отслеживаемого документа, то будут созданы изменения перемещения, включая диапазон перемещения от и до.

```

В конце процесса отслеживания изменений в вашем документе у вас будет возможность даже принять все изменения или отклонить их, чтобы вернуть документ к его первоначальному виду. Этого можно достичь, используя метод [AcceptAllRevisions](https://reference.aspose.com/words/cpp/aspose.words/document/acceptallrevisions/) или [RejectAll](https://reference.aspose.com/words/cpp/aspose.words/revisioncollection/rejectall/). Кроме того, вы можете принять или отклонить каждую редакцию отдельно, используя метод [Accept](https://reference.aspose.com/words/cpp/aspose.words/revision/accept/) или [Reject](https://reference.aspose.com/words/cpp/aspose.words/revision/reject/).

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

```

Обратите внимание, что метод `AcceptAllRevisions` аналогичен методу "Принять все изменения" в Microsoft Word.

```

В следующем примере кода показано, как работать с отслеживанием изменений:

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Document-WorkingWithRevisions-AcceptAllRevisions.cpp" >}}

В следующем примере кода показано, как генерируются изменения при перемещении узла в отслеживаемом документе:

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Document-WorkingWithRevisions-MoveNodeInTrackedDocument.cpp" >}}

## Управление изменениями и их хранение в виде ревизий

С помощью функции отслеживания предыдущих изменений вы можете понять, какие изменения были внесены в ваш документ и кто внес эти изменения. В то время как с помощью функции [TrackRevisions](https://reference.aspose.com/words/cpp/aspose.words/document/get_trackrevisions/) вы принудительно сохраняете любые изменения в вашем документе в виде ревизий.

Aspose.Words позволяет проверить, есть ли в документе редакция или нет, используя свойство [HasRevision](https://reference.aspose.com/words/cpp/aspose.words/document/get_hasrevisions/). Если вам не нужно автоматически отслеживать изменения в вашем документе с помощью методов StartTrackRevisions и StopTrackRevisions, вы можете использовать свойство `TrackRevisions`, чтобы проверить, отслеживаются ли изменения при редактировании документа в Microsoft Word и сохраняются ли они в виде изменений.

Функция `TrackRevisions` вносит правки вместо реальных изменений DOM. Но сами правки являются отдельными. Например, если вы удаляете какой-либо абзац, Aspose.Words внесите его в качестве правки, пометив как удаленный, вместо того, чтобы удалять его.

Кроме того, Aspose.Words позволяет проверить, был ли объект вставлен, удален или изменено форматирование, используя свойства [IsDeleteRevision](https://reference.aspose.com/words/cpp/aspose.words/inline/get_isdeleterevision/), [IsFormatRevision](https://reference.aspose.com/words/cpp/aspose.words/inline/get_isformatrevision/), [IsInsertRevision](https://reference.aspose.com/words/cpp/aspose.words/inline/get_isinsertrevision/), [IsMoveFromRevision](https://reference.aspose.com/words/cpp/aspose.words/inline/get_isformatrevision/), и [IsMoveToRevision](https://reference.aspose.com/words/cpp/aspose.words/inline/get_ismovetorevision/).

```

Обратите внимание, что между самими изменениями и свойством `TrackRevisions` нет никакой связи. Кроме того, вы можете принимать/отклонять изменения независимо от функции отслеживания изменений.

```

В следующем примере кода показано, как применять различные свойства с изменениями:

{{< gist "aspose-words-gists" "d55d8631947d283b1f0da99afa06c492" "cpp-Programming-Documents-Document-WorkingWithRevisions-ShapeRevision.cpp" >}}
