# Headless и серверные вычисления

> Операции с содержимым в Node.js и предварительные расчёты в Rust для приложений и агентов.

- Human documentation: [https://docs.univer.ai/ru-RU/overview/features/shared/server-calculation](https://docs.univer.ai/ru-RU/overview/features/shared/server-calculation)

- Agent Markdown: [https://docs.univer.ai/ru-RU/overview/features/shared/server-calculation.md](https://docs.univer.ai/ru-RU/overview/features/shared/server-calculation.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.3.0`

- Source: [features/shared/server-calculation.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/docs/features/shared/server-calculation.ru-RU.mdx)

---

Univer разделяет модели содержимого, расчёты и интерфейс. Headless запускает среду содержимого в Node.js, а `univer-rs` выполняет тяжёлые вычисления и преобразование файлов на сервере. Приложения и агенты используют эти возможности с одними снимками Snapshot.

## Node.js без UI-плагинов

Зарегистрируйте необходимые плагины ядра, моделей, расчётов и Facade без меню, панелей и UI-плагинов, зависящих от DOM. Обрабатывайте Sheet, Doc, Slide, Relational Table, Canvases или PDF согласно конфигурации продукта. Для Sheets и Docs есть Node-пресеты; остальные продукты собираются из соответствующих плагинов.

| Возможность | Назначение |
| --- | --- |
| Загрузка и разбор | Загрузка снимков, чтение и проверка ячеек, абзацев, страниц, объектов, записей и структуры. |
| Расчёты | Формулы, массивы, обновление сводных таблиц и отображаемых числовых значений. |
| Изменения | Правка через Facade API, изменение структуры, сохранение снимков или отправка правок. |
| Файлы | Модули Server SDK для пакетного импорта, обработки и экспорта. |
| Визуальная проверка | Render Runtime для снимков экрана и проверки расположения элементов. |

Операции с содержимым выполняются непосредственно в Node.js. Для изображений и проверки расположения нужен отдельный runtime рендеринга; CLI может управлять headless-браузером и возвращать PNG и результаты проверки.

## Быстрый расчёт в браузере и серверный расчёт по ревизиям

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

- **При редактировании** браузер локально пересчитывает затронутые формулы и сразу показывает результаты; вычисления можно вынести в Worker. Совместное редактирование записывает и синхронизирует изменения содержимого.
- **При создании снимка** серверная политика запускает сохранение и фиксирует ревизию содержимого для этой операции. Затем `univer-rs` выполняет расчёты, а содержимое и результаты этой ревизии сохраняются вместе.
- **При повторном открытии** браузер использует актуальные результаты из снимка, применяет последующие изменения и продолжает вычисления, сокращая повторные полные пересчёты.

```mermaid
flowchart LR
    F["Правки в браузере<br/>Быстрый расчёт"]
    C["Синхронизация<br/>Подтверждённые правки"]
    R["Расчёт Rust<br/>Ревизия N"]
    S["Сохранение снимка<br/>saveSnapshot"]
    F <--> C
    C -->|"Создание снимка"| R
    R --> S
```

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

Настройте начальный расчёт с учётом сохранённых результатов:

- `WHEN_EMPTY`: использовать сохранённые значения формул и вычислять только отсутствующие результаты.
- `NO_CALCULATION`: пропустить начальный расчёт; результаты предоставляет приложение.
- `FORCED`: пересчитать все формулы для обновления сохранённых результатов.

Эти параметры управляют начальной загрузкой. Дальнейшие правки рассчитываются в браузере; сервер выполняет расчёт по необходимости при создании снимка ревизии или обработке файлов. См. [настройку формул](https://docs.univer.ai/ru-RU/guides/sheets/features/core/formula.md), [совместное редактирование](https://docs.univer.ai/ru-RU/server/collaboration/overview.md) и [преобразование файлов](https://docs.univer.ai/ru-RU/overview/features/shared/file-conversion.md).

### Производительность движка формул

[Измерения производительности движка формул Univer на Rust](/blog/rust-formula-performance) охватывают 10 книг: загрузку входа Rust, этапы, границы форматов и скачивание образцов.

## Формулы массивов и развёрнутые результаты

Для поддерживаемых функций и форматов Rust следует правилам Excel для формул массивов и развёртывания. Возвращаются якорь, диапазон и значения ячеек, включая динамические массивы и заданные области старых формул массивов.

Например, `=SEQUENCE(3,2)` в пустой `A1` даёт:

| A | B |
| --- | --- |
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |

Формула остаётся в `A1`, результаты занимают `A1:B3`. При уменьшении массива старые значения очищаются; блокировка области даёт `#SPILL!`. Браузер, агент и экспорт могут использовать рассчитанный снимок.

См. [поддержку формул](https://docs.univer.ai/ru-RU/guides/sheets/features/core/formula.md) и [правила массивов Excel](https://support.microsoft.com/en-us/excel/dynamic-array-formulas-and-spilled-array-behavior).

## Исполнение и проверка для агента

Сохраните модель, диалог и управление инструментами своего агента. AI SDK предоставляет ему операции Office:

1. Прочитать структуру и целевое содержимое.
2. Выполнить изменения Facade и расчёты в headless-среде.
3. Дождаться расчёта и подтверждения отправки, затем прочитать обновлённое состояние.
4. Проверить значения и структуру, при необходимости добавить визуальную проверку и расположение.

Объединяйте [операции с содержимым](https://docs.univer.ai/ru-RU/ai/content-operations.md) и [визуальную проверку](https://docs.univer.ai/ru-RU/ai/visual-inspection.md). Для проверки человеком используйте [Worktree](https://docs.univer.ai/ru-RU/ai/worktree.md), сравнение и слияние. [Univer CLI](https://docs.univer.ai/ru-RU/overview/examples/cli.md) показывает сборку приложения для агентов.

## Способы интеграции

| Возможность | Назначение |
| --- | --- |
| Среда содержимого Node.js | Начните с [headless Web SDK](https://docs.univer.ai/ru-RU/guides/sheets/getting-started/node.md) и нужных плагинов моделей и расчётов. |
| Фоновая обработка файлов | Сочетайте Rust с [преобразованием Node.js](https://docs.univer.ai/ru-RU/server/import-export/node.md), сохраняйте или возвращайте снимок. |
| Совместная работа и агенты | Подключите [совместное редактирование](https://docs.univer.ai/ru-RU/server/collaboration/quick-start.md) и [AI SDK](https://docs.univer.ai/ru-RU/ai/content-operations.md) для подтверждённого содержимого. |

[Все возможности](https://docs.univer.ai/ru-RU/overview/features.md)
