# API Univer Docs

- Human documentation: [https://docs.univer.ai/ru-RU/guides/docs/features/core/docs-api](https://docs.univer.ai/ru-RU/guides/docs/features/core/docs-api)

- Agent Markdown: [https://docs.univer.ai/ru-RU/guides/docs/features/core/docs-api.md](https://docs.univer.ai/ru-RU/guides/docs/features/core/docs-api.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

- Source: [docs/features/core/docs-api.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/docs/features/core/docs-api.ru-RU.mdx)

---

Univer Docs предоставляет профессиональные средства вёрстки документов, концептуально близкие к Microsoft Word.

## Импорт

```typescript
import '@univerjs/docs/facade'
import '@univerjs/docs-ui/facade'
```

## Работа с документами

В документах `unitId` служит уникальным идентификатором. Идентификатора `subUnitId` у документов нет.

Текст документа хранится в строке `body.dataStream`, которая не содержит сведений о стилях.

Сведения о стилях хранятся отдельно, в другой структуре данных, и связываются с текстом с помощью индексов.

Для обозначения переносов строк, разрывов страниц, разделов, абзацев и таблиц в тексте используются специальные символы. При отрисовке они преобразуются в соответствующие элементы.

> [!NOTE]
> Подробнее об устройстве структур данных документа читайте в статьях [Univer Document Architecture and Module
> Design](/blog/univer-doc-architecture) и [An Initial Exploration of Univer Document Typesetting
> Design](/blog/doc-typesetting-design).

### Создание документа

Вызовите `univerAPI.createDocument(data)`, чтобы создать документ и получить его фасадную обёртку `FDocument`.

Необязательный параметр — объект с исходными данными документа. Если передать `{}`, будет создан пустой документ.

Если вместо Facade API вы работаете напрямую с базовым экземпляром `univer`, используйте `univer.createUnit(UniverInstanceType.UNIVER_DOC, data)`.

```typescript
// [!code word:data]
const doc = univerAPI.createDocument(data)
```

### Получение unitId документа

```typescript
const doc = univerAPI.getActiveDocument()
const unitId = doc?.getId()
```

### Получение данных документа

```typescript
const doc = univerAPI.getActiveDocument()
const saveData = doc.save()
```

### Удаление документа

Когда документ больше не нужен, вызовите метод `dispose` экземпляра Univer, чтобы уничтожить этот экземпляр.

```typescript
univer.dispose()
```

## Работа с текстом

Изменяйте текстовые элементы в области форматированного текста.

### Вставка текста

Добавьте указанный текст в конец этой области.

```typescript
const doc = univerAPI.getActiveDocument()
doc?.insertText(0, 'Univer')
```

### Удаление текста

Удалите текст по смещениям в документе.

```typescript
const doc = univerAPI.getActiveDocument()
doc?.deleteRange({ startOffset: 0, endOffset: 1 })
```

## Изменение стиля

Задайте стиль текста в абзаце.

```typescript
const doc = univerAPI.getActiveDocument()
const paragraph = doc?.getParagraphs()[0]

paragraph?.setStyle({
  textStyle: {
    cl: {
      rgb: '#FF0000',
    },
  },
})
```

## Вставка разрыва страницы

Символ `\f` обозначает разрыв страницы и позволяет вставить его в документ.

```typescript
const doc = univerAPI.getActiveDocument()
doc?.insertText(0, '\f')
```

## Статистика документа

Используйте базовую модель `DocumentDataModel`, чтобы подсчитать статистику всего документа или выбранных диапазонов.

```typescript
const doc = univerAPI.getActiveDocument()
if (!doc) throw new Error('No active document')

const statistics = await doc.getDocumentDataModel().getStatistics({
  locale: univerAPI.Enum.LocaleType.RU_RU,
})
console.log(statistics.words, statistics.charactersWithSpaces, statistics.paragraphs)
```

`getStatistics()` возвращает количество слов, символов и абзацев. Передайте `ranges`, чтобы считать только выделенный текст, и `signal`, чтобы отменить ставший ненужным расчёт.
