Перейти к содержимому
FastOffice

Сеанс и соглашения A4

Что важно знать до первого вызова: корреляция запросов, порядок команд, обязательные поля правки, признак несохранённых изменений, завершение сеанса и отсутствие таймаутов.

Как пишутся имена. В A4 три разных соглашения, и путать их нельзя. Имена команд — через дефис или одним словом: save-checkpoint, print-window, model, mutate; подчёркивания в именах команд нет ни одного. Имена полей — наоборот, через подчёркивание: document_id, paragraph_index, operation_kind, expected_revision. А значения полей, которые выбираются из списка, снова идут через дефис: insert-text, delete-line-break, merge-with-next. Ошибка в написании возвращает отказ, который читается как «команда не поддержана», хотя дело в одном знаке.

Для сравнения: в F1 поля пишутся слитно — subsetId, sheetKey, — и подчёркивания там не будет. Встраивая оба продукта, имя из одного в другом не ищите.

В чём измеряются размеры. Единицы две, и по имени поля видно, какая. Поля, кончающиеся на _twips, — в твипах: это единица разметки Word, одна тысяча четыреста сороковая доля дюйма. Дюйм — 1440 твипов, сантиметр — примерно 567, стандартное поле страницы в 2,54 см как раз и есть 1440. Поля, кончающиеся на _milli_px, — в тысячных долях пикселя: 96000 значит 96 px, а не девяносто шесть тысяч. Первое досталось от формата документа, второе — от экрана, и смешивать их нельзя.

Корреляция. Поле id необязательно и принимает любое значение JSON — строку или число. Ядро возвращает его без изменений, поэтому по нему ответ сопоставляется с запросом; в ответе поле есть всегда и равно null, если запрос его не нёс.

Порядок. Сессия хранит состояние между командами. Команда, которой нужен открытый документ, до open отказывает с текстом no document is open in this session.

Правка. Для mutate обязательны operation_kind и paragraph_index — у остальных полей есть значения по умолчанию. Нумерация абзацев с нуля. Виды правки перечислены в Объектах запросов и ответов.

Несохранённые изменения. Признак dirty означает, что текущая модель отличается от последнего сохранённого состояния, а не что документ испорчен.

Завершение. Ответ на shutdown содержит shutdown: true и не содержит ни cmd, ни elapsed_ms, ни result.

Время ответа. Таймаута в сеансе нет: ответ приходит, когда команда обработана. Ограничение по времени задаёт клиент. Единственный таймаут на стороне A4 — пять секунд на чтение HTTP-запроса в Surface Host.

Сохранение. Файл публикуется атомарно: запись идёт во временный файл рядом с целевым, содержимое доводится до диска, и только потом он заменяет цель. Оборванная запись не оставляет половинчатый DOCX — см. Жизненный цикл документа. Команда save-checkpoint вдобавок сверяет файл с тем состоянием, которое передали в expected_hash, и отказывает, если его изменили снаружи.

Формат сообщений и коды отказов — в Транспорте, перечень команд — в Session Protocol.

Ассистент документации

Ответ собран из документации и может быть неточным — сверяйтесь с источниками.