# Content Studio: от рубрики до публикации ← [К разделу «Как собирается сайт»](README.md) Content Studio — это общий рабочий процесс AVE.cms для проектирования контента, заполнения документов и подготовки публичных выборок. Это не отдельный модуль и не новая база данных. Он объединяет уже знакомые сущности: рубрики, поля, документы, запросы, шаблоны и модули. Эта глава рассчитана на человека, который впервые открыл панель и пока не знает, с чего начать. Сначала прочитайте общую модель, затем выполните учебный сценарий и только после этого переходите к расширенным настройкам. ## 1. Простая модель Представьте обычный новостной сайт: 1. **Рубрика** «Новости» определяет, какие данные есть у каждой новости. 2. **Поля** задают изображение, анонс, основной текст и источник. 3. **Документ** хранит конкретную новость и значения этих полей. 4. **Шаблон рубрики** превращает данные одной новости в HTML страницы. 5. **Запрос** получает несколько новостей для главной или архива. 6. **Шаблон запроса** превращает каждую найденную новость в карточку. 7. **Шаблон сайта** добавляет общую шапку, навигацию и подвал. Для статей, справочника сотрудников, каталога услуг или товаров принцип тот же. Отличаются только поля, правила и публичная разметка. ```text Рубрика -> определяет форму и правила -> документ хранит данные -> шаблон рубрики показывает одну страницу -> запрос получает список страниц -> шаблон запроса показывает карточки ``` ## 2. Что где настраивать | Задача | Раздел | | --- | --- | | Добавить новый тип материалов | Рубрики и поля | | Изменить состав или порядок полей | Конструктор формы рубрики | | Создать новость, страницу или товар | Документы | | Настроить URL всех материалов типа | Рубрика | | Изменить HTML одной страницы | Шаблон рубрики | | Получить список материалов | Запросы | | Изменить карточку в списке | Шаблон запроса или renderer модуля | | Добавить дерево разделов и фильтры | Каталог | | Подключить внешнее поведение | Модуль и hooks | Не добавляйте HTML всей страницы в поле документа. Поле хранит содержимое, а шаблон отвечает за разметку. Тогда дизайн можно заменить сразу для всех документов, не переписывая каждую запись. В списке рубрик колонка **Материалы** связывает структуру с реальной работой: - нажмите количество документов, чтобы открыть список уже созданных материалов только этой рубрики; - нажмите кнопку с листом и плюсом, чтобы сразу создать материал выбранного типа; - в колонке **Шаблон** показывается его название, а внутренний номер оставлен мелкой служебной подписью. Так не нужно запоминать ID рубрики или повторно выбирать её в разделе документов. Кнопки учитывают права пользователя: создание не показывается тому, кому разрешён только просмотр. ## 3. Первый тип контента Допустим, нужно создать раздел статей. 1. Откройте **Контент → Рубрики и поля**. 2. Создайте рубрику «Статьи». 3. Добавьте поля `lead`, `cover` и `content`. 4. Для `lead` выберите многострочный простой текст. 5. Для `cover` выберите одиночное изображение. 6. Для `content` выберите текстовый тип с rich-редактором. 7. Разместите поля в конструкторе формы. 8. Задайте ширину: изображение может занимать 4 колонки, а анонс — 8. 9. Настройте шаблон URL, например `articles/%Y/%m`. 10. Сохраните рубрику и проверьте её ревизию схемы. Системное название документа уже существует. Не создавайте второе поле `title`, если вам не нужен отдельный заголовок с другим смыслом. ### Переносимый набор полей Если похожая структура нужна в другом проекте или рубрике, не создавайте каждое поле повторно. Откройте **Поля рубрики** и используйте команды **Экспорт** и **Импорт** под списком готовых наборов. Экспорт создаёт небольшой JSON-файл. В него входят: - группы и их порядок; - названия, системные alias и типы полей; - ширина, размещение, префикс и суффикс; - значение по умолчанию, поиск и числовой индекс; - настройки и правила валидации конкретного типа поля. Если старое поле ещё не имеет системного alias, экспорт не меняет его в базе, а создаёт для переносимого файла имя вида `field_`. Предпросмотр отдельно показывает количество таких полей. В новой рубрике при необходимости замените технические alias на понятные до начала заполнения документов. В файл намеренно не входят документы и их значения, PHP-код рубрики, публичные шаблоны, права, URL и физические медиафайлы. Условия формы также не переносятся: они ссылаются на внутренние ID полей исходной рубрики и должны быть собраны уже после импорта по полям нового проекта. Перед применением выберите один из двух режимов: - **Копия** создаёт независимую схему. Последующие изменения исходного набора на неё не влияют. Это лучший вариант для разовой заготовки или переноса между проектами. - **Связанный** запоминает версию набора и соответствие его alias реальным полям рубрики. Такой вариант удобен, когда один стандарт полей используется в нескольких рубриках. Обычное применение или импорт выполняются так: 1. Выберите JSON или перетащите его в окно. 2. AVE.cms проверит формат, версию и доступность типов полей. 3. Предпросмотр покажет общее число полей, сколько будет создано, сколько уже существует и есть ли конфликты. 4. Поле с тем же alias и тем же типом повторно не создаётся и не изменяется. 5. Одинаковый alias с другим типом считается конфликтом и блокирует импорт. 6. После подтверждения создаются только отсутствующие группы и поля, а схема рубрики получает новую ревизию. У связанного набора в конструкторе показывается отдельная строка состояния. Обновление не применяется автоматически: сначала нажмите кнопку проверки и прочитайте сводку новых, изменяемых и снятых с формы полей. Чтобы выпустить новую версию импортированного набора, снова загрузите JSON с тем же кодом и выберите режим **Связанный**. Текущая рубрика сразу проходит безопасную синхронизацию, а в остальных связанных рубриках появляется состояние **Есть обновление**. Повторный импорт не помечает изменения применёнными, пока поля текущей рубрики действительно не обновлены. При синхронизации используется трёхстороннее сравнение: AVE.cms знает старую версию набора, новую версию и текущее поле рубрики. Неизменённая настройка получает новое значение набора, а локально исправленная подпись, ширина или настройка сохраняется. Если набор удалил поле, значение документов не удаляется: поле переходит в список доступных и перестаёт быть частью связи. Изменение типа заполненного поля блокируется и требует ручного решения. Команда удаления связи также не удаляет поля и данные. Она лишь превращает их в полностью независимые поля текущей рубрики. Между проверкой и подтверждением используется защитный fingerprint. Если другой администратор успел поменять состав полей, импорт остановится и попросит снова открыть предпросмотр. Существующие значения документов импорт никогда не перезаписывает. JSON имеет версионированный формат `ave.cms/field-set`, поэтому обычный JSON из другой программы нельзя случайно принять за схему рубрики. Максимальный размер файла — 256 КБ, один набор может содержать до 50 групп и 500 полей. ### Условия формы Условие формы управляет тем, когда конкретное поле или целая группа видны редактору документа и можно ли их изменять. Например, поле «Дата мероприятия» можно показывать только тогда, когда в поле «Тип материала» выбрано значение «Событие». #### Если совсем просто Рубрика — это заготовка формы, а её поля — вопросы, на которые отвечает редактор. Раньше форма всегда показывала все вопросы подряд. Теперь она может реагировать на уже выбранные ответы: - для новости не показывать характеристики товара; - для события открыть дату, место и форму регистрации; - после выбора «Самовывоз» оставить только подходящие пункты выдачи; - при переходе в статус «Готово» заполнить короткое служебное поле; - показать важное поле и запретить его случайное изменение. Это сделано не ради эффектов в интерфейсе. Короткая и уместная форма быстрее заполняется, а редактор реже сохраняет несовместимые данные. При этом AVE.cms не переписывает старые документы только из-за открытия формы. Скрытое или заблокированное значение остаётся в базе. Автоматически изменённое значение получает заметную подпись и кнопку отмены, поэтому редактор видит действие и может вернуть своё значение. Та же проверка выполняется на сервере. Нельзя обойти ограничение изменённой формой или прямым запросом к JSON API. Публичная страница от этих правил не меняется: условия управляют только заполнением документа в панели. Условие настраивается в правой колонке конструктора: 1. Выберите поле на холсте. 2. Включите блок **Условия формы**. 3. Выберите действие при совпадении: показать, скрыть или запретить изменение текущего поля. 4. При необходимости включите **Обязательно при показе**. 5. Для поля со списком можно включить **Ограничить варианты** и отметить значения, которые останутся доступными при совпадении условия. Сначала сохраните сам список в настройках типа поля, чтобы конструктор показал актуальные ключи. 6. Для простого поля можно выбрать **Изменить значение при совпадении**: установить указанное значение или очистить поле. Для списка и переключателя значение выбирается из готовых вариантов, для текста и числа вводится вручную. 7. В основной группе добавьте поле-источник, сравнение и ожидаемое значение. 8. Выберите **Все · И**, если должны совпасть все правила, или **Любое · ИЛИ**, если достаточно одного. 9. Кнопка со скобками добавляет вложенную группу. Она вычисляется отдельно и работает как скобки в обычном выражении. Для условия всей группы откройте редактирование группы кнопкой с карандашом и включите блок **Условие для всей группы**. Дерево правил и действия те же, но результат применяется сразу ко всем полям секции. Это удобно, например, когда весь блок «Данные мероприятия» нужен только для материала типа «Событие». Настройку не нужно повторять у каждого поля. Пример: ```text Тип материала = Событие И ( Формат = Онлайн ИЛИ Формат = Смешанный ) ``` Корневая группа использует **И**, вложенная — **ИЛИ**. Вложенность ограничена четырьмя уровнями, а одно поле может содержать не более 32 правил. Эти лимиты защищают форму от циклической и непонятной логики. Поле не может зависеть от самого себя. Если выбранное поле-источник удалено или принадлежит другой рубрике, сервер остановит сохранение и покажет ошибку. То, что правило выглядит корректно в браузере, не отменяет серверную проверку. Условия начинают влиять на редактор документов только после включения общего переключателя **Условия формы документа** для рубрики. Перед применением AVE.cms показывает, сколько существующих документов изменят видимость, доступность или обязательность полей. Для условия группы предпросмотр считает каждое поле секции, показывает документы, скрытые и заблокированные значения и только затем просит подтверждение. Действие **Запретить изменение** оставляет поле или группу видимыми и помечает их как доступные только для чтения. Сервер сохраняет прежнее значение, даже если кто-то попробует подменить отправляемую форму или JSON API. Значения скрытых полей и групп также не удаляются, а публичный шаблон и вывод документа не меняются. Ограничение вариантов также повторяется на сервере. Например, поле «Способ доставки» может показывать все варианты для обычного заказа, но при выборе «Самовывоз» оставить только конкретные пункты выдачи. Недоступные пункты нельзя подставить вручную через форму или API. Если документ уже содержит старое значение, редактор пометит его и попросит выбрать допустимый вариант вместо молчаливого удаления данных. Автоматическое значение срабатывает только в момент, когда условие стало выполненным. Например, было «Статус = Черновик», редактор выбрал «Опубликован» — поле «Готовность» получит заданное значение. Если документ уже открывается со статусом «Опубликован», простое открытие или повторное сохранение ничего не перезапишет. У изменённого поля появляется отметка **Установлено условием** или **Очищено условием** и кнопка отмены. После ручной правки отметка исчезает. Отмена и ручная правка передают серверу явный выбор редактора, поэтому значение не будет снова заменено тем же условием во время сохранения. Автодействия доступны только для простых безопасных значений: текста в одну строку, числа, даты, одиночного списка, одиночного выбора, переключателя и цвета. Они намеренно недоступны для rich/code-контента, медиа, связей, каталога и составных полей: такие данные нельзя надёжно заменить одним коротким значением. Adminx и JSON API повторяют правило на сервере, поэтому отправка изменённой формы вручную не обходит условие. Предпросмотр схемы показывает, в скольких формах действие потенциально активно, но не меняет сохранённые документы. Предпросмотр связан с текущей схемой и документами защитным fingerprint. Если между проверкой и подтверждением другой редактор изменил группу, поле или документ, AVE.cms отменит сохранение и пересчитает влияние заново. ### Ревизии схемы рубрики После изменения полей AVE.cms сохраняет снимок формы. Это история не текстов документов, а самой структуры: какие поля и группы были, где они стояли, какую ширину занимали, были ли обязательными и какие условия использовали. Перед восстановлением старого снимка панель сначала показывает сравнение: - какие поля вернутся; - какие поля изменятся и что именно станет другим; - какие более новые поля останутся на месте; - включатся или выключатся условия формы; - какие запросы, шаблоны, API-контракты и модули зависят от затронутых полей. Для изменённого поля значения показаны в виде **Было → Будет**. Например: `Ширина поля: 12 колонок → 6 колонок` или `Обязательное: Нет → Да`. Внутренний JSON для этого читать не нужно. Восстановление схемы не стирает значения документов. Поле, созданное после снимка, не удаляется, а остаётся доступным в библиотеке конструктора. Если схема изменилась после открытия предпросмотра, защита остановит операцию и попросит проверить сравнение ещё раз. ## 4. Создание документа и пресеты Перед открытием редактора AVE.cms предлагает выбрать **тип контента**. В существующей базе типом остаётся рубрика: «Новости», «Статьи», «Услуги» и другие. Система больше не предполагает, что новый документ обязательно является товаром. После выбора рубрики доступны два варианта: - **Пустой документ** — форма с обычными значениями по умолчанию из полей рубрики; - **Пресет заполнения** — та же форма, заранее заполненная сохранённой заготовкой. Пресет удобен для повторяющихся материалов. Например, еженедельная новость может сразу получить типовой анонс, источник, SEO-настройки и структуру основного текста. Это не копия документа: у нового материала всегда будут собственные название, URL, автор, даты и идентификаторы. Чтобы создать пресет: 1. Откройте уже сохранённый документ нужной рубрики. 2. В расширенном режиме выберите **Инструменты → Пресет создания**. 3. Укажите понятное название и назначение заготовки. 4. Выберите, нужно ли переносить анонс, SEO, поиск и значения полей. 5. Включайте медиа, связи и каталог только осознанно: новый документ будет ссылаться на те же файлы и связанные сущности. 6. Сохраните пресет. При следующем создании документа он появится у этой рубрики. Применение пресета только заполняет форму. База данных не меняется, пока редактор не проверит значения и не нажмёт **Сохранить**. Пресет можно удалить прямо в панели создания; уже созданные по нему документы при этом не изменятся. ## 5. Редактор документа Редактор разделён на смысловые области: - **Основное** — название, рубрика, URL, хлебная крошка и анонс; - **Поля документа** — содержимое, которое определила рубрика; - **Публикация** — статус, автор, родитель, шаблон и позиция; - **SEO и поиск** — keywords, description, robots, sitemap и теги; - **Даты** — начало и окончание публикации; - **Интеграция** — GUID и проектное свойство; - **Инструменты** — заметки, редиректы, ревизии и JSON-снимок. Название, URL и поля рубрики являются данными одного документа. Блоки интерфейса только помогают ориентироваться и не создают дополнительные сущности в БД. ## 6. Три режима редактора В правой части заголовка находятся три режима. Выбор сохраняется в браузере отдельно для пользователя и рубрики. ### Быстро Показывает основное и поля документа. Подходит, когда редактор регулярно меняет текст, изображение или характеристики и не должен отвлекаться на технические параметры. Скрытые настройки не очищаются. Они остаются в документе и снова появятся при переключении режима. ### Обычно Дополнительно показывает публикацию: статус, автора, родителя и шаблон. Это режим для повседневной работы контент-менеджера. ### Расширенно Показывает все области, включая SEO, даты, интеграцию, сводку и инструменты. Используйте его при первоначальной настройке, диагностике и сложном редактировании. Если ошибка находится в скрытом блоке, переход из сводки ошибок автоматически включит необходимый режим. ## 7. Сохранение Есть два обычных сценария: - **Сохранить** записывает документ и возвращает к списку; - **Сохранить и остаться** записывает документ и оставляет редактор открытым. `Ctrl+S` и `Cmd+S` выполняют «Сохранить и остаться». Перед отправкой система синхронизирует rich editor, CodeMirror, медиа-списки и составные поля. Сохранение выполняется транзакционно. Если код рубрики, валидация поля или БД вернули ошибку, незавершённые изменения не должны оставаться частично записанными. ## 8. Локальный черновик Пока форма изменена, AVE.cms сохраняет её состояние в хранилище текущего браузера. Это не публикация и не скрытая запись в базу. Локальный черновик помогает, если: - вкладка была случайно закрыта; - браузер перезагрузил страницу; - сеть исчезла во время работы; - сервер отклонил сохранение из-за более новой версии документа. При повторном открытии над формой появляется аккуратная панель. Она показывает время черновика и предлагает два действия: - **Восстановить** — вернуть значения в форму для проверки; - **Удалить** — оставить серверную версию и стереть локальную копию. После восстановления обязательно просмотрите документ и нажмите сохранение. Локальный черновик сам по себе не меняет БД и не виден другим сотрудникам. После успешного сохранения черновик удаляется автоматически. Содержимое файловых input не хранится из соображений безопасности браузера, но уже выбранные пути, описания и значения медиа-полей сохраняются. ## 9. Две вкладки и два редактора Каждый документ имеет внутренний номер версии. Он повышается при изменении через: - основной редактор документа или товара; - JSON API; - импорт документов; - CommerceML; - контент-пакет или демо-пакет; - операции с документами; - быстрое редактирование товара; - служебные операции каталога и SEO. Пример конфликта: 1. Анна и Борис открыли документ версии 7. 2. Анна сохранила изменения. Сервер создал версию 8. 3. Борис попытался сохранить старую форму версии 7. 4. Сервер вернул конфликт и не перезаписал работу Анны. 5. Браузер Бориса сохранил его форму локально. 6. После обновления Борис видит версию Анны и может аккуратно восстановить свой черновик, сравнить данные и сохранить объединённый результат. Защита проверяется повторно внутри транзакции с блокировкой строки. Поэтому одновременные запросы не проходят между предварительной проверкой и записью. ## 10. Сводка ошибок Если сохранение невозможно, над формой появляется общий список проблем. Для каждой ошибки показываются понятное название поля и сообщение сервера или браузера. Нажмите строку ошибки, чтобы: 1. открыть расширенный режим, если блок был скрыт; 2. переключиться на нужную группу полей; 3. прокрутить форму к проблемному элементу; 4. поставить курсор в доступный редактор. Красная сводка не означает, что данные потеряны. Исправьте значения и повторите сохранение. Если ошибка относится к коду рубрики или БД, передайте администратору текст сообщения и время возникновения. ## 11. Полные ревизии документа Новая ревизия хранит два слоя: 1. основные настройки документа; 2. все значения полей рубрики, включая медиа и связи в их штатном формате. В основные настройки входят название, URL, анонс, SEO, теги, публикация, даты, автор, родитель, шаблон, навигация, позиция, GUID и проектное свойство. Ревизия намеренно не хранит: - ID и рубрику документа; - счётчики просмотров и печати; - физические файлы; - строки внешних модульных таблиц; - пароли, токены и системные секреты. Перед восстановлением текущая версия автоматически сохраняется отдельным снимком. По умолчанию отмечены все основные настройки и поля, то есть кнопка работает как прежнее полное восстановление. Снимите флажки с того, что менять не нужно, или отключите сразу всю группу **Основные настройки** либо **Поля рубрики**. Тогда AVE.cms восстановит только отмеченные элементы. ID документа и его рубрика всегда остаются прежними. Старые ревизии не удаляются и отображаются с пометкой **Только поля**. Их можно просматривать и восстанавливать: в таком случае основные настройки останутся текущими. Новые записи помечаются как **Полный снимок**. Если поле после создания ревизии было удалено из рубрики, оно показывается в истории, но не создаётся заново при восстановлении. Кнопка **На сайте** открывает защищённый preview. Он не попадает в поисковую индексацию и публичный кеш. Для полного снимка preview использует исторические параметры документа и значения полей только в рамках текущего запроса. ## 12. JSON без сохранения Кнопка **Данные JSON** показывает нормализованные данные текущей формы, не записывая их в БД. Это полезно для проверки API, интеграций и сложных полей. Preview: - синхронизирует редакторы и динамические списки; - выполняет штатную валидацию; - показывает системные данные и поля; - не запускает код рубрики до и после сохранения; - не создаёт ревизию; - не меняет кеш и публичный snapshot. ## 13. Документы и товары Товар в AVE.cms остаётся документом товарной рубрики. Поэтому полный товарный редактор получает те же режимы, черновики, ошибки, версии и ревизии. Товарный модуль добавляет только свою предметную область: артикул, цены, характеристики, варианты, грузовые места, платёжные программы и карточки. Публичный каталог от внедрения Content Studio автоматически не переключается и не меняет HTML. Быстрый редактор товара повышает версию документа и сохраняет ревизию перед изменением. Модульные значения из отдельных таблиц могут иметь собственную историю; они не должны притворяться полями документа. ## 14. Импорты, API и модули Правильный модуль создаёт и изменяет документы через `App\Content\Documents\DocumentMutationService`. Этот сервис выполняет валидацию, hooks, код рубрики, запись полей, термины, ревизию, snapshot и инвалидацию кеша. Через общий сервис уже работают: - JSON API документов; - импорт документов; - CommerceML; - контент-пакеты и демо-пакеты. Если модуль обходит сервис и напрямую обновляет таблицу документов, он обязан как минимум повысить `document_version` и корректно инвалидировать производные данные. Для нового кода прямой SQL не является рекомендуемым контрактом. Проектный импорт цен не относится к универсальному Content Studio и обслуживается отдельно. Его нельзя использовать как образец нового импортера. ### Представления и контракт результата Запрос остаётся совместимым представлением AVE.cms. Дерево условий определяет, какие документы попадут в результат, а контракт перечисляет, какие свойства этих документов разрешено вернуть в структурированном виде. В редакторе запроса можно выбрать системные данные и поля рубрики, затем запустить AJAX-предпросмотр. Он не исполняет HTML/PHP шаблонов элементов и сравнивает старую выборку с параметризованным Native-планом. Существующие `main/item` шаблоны остаются Legacy renderer. Для подтверждённого запроса можно отдельно переключить только executor выборки; разметка публичного сайта от этого не меняется. Изменение условий снимает подтверждение Native. ### Связи между материалами Поля «Документ из рубрики», их множественные варианты, «Аналоги» и «Тизеры» исторически сохранялись по-разному: одним ID, JSON-массивом или старой serialize-строкой. Редактор продолжает читать все эти варианты и не требует массового пересохранения документов. В JSON-снимке одна и та же связь теперь всегда описана одинаково: ```json { "format": "ave.document-relation", "version": 1, "multiple": true, "items": [ {"document_id": 42, "position": 0} ] } ``` Система также ведёт служебный индекс исходящих и входящих связей. Благодаря ему модуль может быстро узнать не только «что выбрано в этом поле», но и «какие материалы ссылаются на документ». Индекс является производным: источником истины остаются значения полей документа. Реестр блоков подготавливает структурный контент для статей и страниц: текст, форматированный текст, изображение, цитату и связанные материалы. Модуль может добавить собственный тип блока декларативно. Само включение блокового редактора в рубрику будет отдельным явным действием, поэтому существующие rich text поля и их HTML не преобразуются автоматически. ## 15. Что не изменилось в паблике Новые возможности относятся к управлению и сохранению. Они не меняют: - существующие URL документов; - HTML шаблонов рубрик и запросов; - теги полей; - карточки каталога; - алгоритмы фильтров; - существующие значения БД; - исходное `value` поля, которое используют существующие публичные шаблоны. Внутренний JSON-snapshot получил дополнительный объект `relation` и новую версию схемы кеша. Старые snapshot автоматически перестраиваются при чтении; это не меняет HTML сайта. Публичный результат меняется только после того, как редактор сам изменил данные или шаблон и сохранил документ. ## 16. Учебный сценарий 1. Создайте тестовую рубрику с текстом и изображением. 2. Откройте новый документ этой рубрики. 3. В режиме **Быстро** заполните название и поля. 4. Переключитесь в **Обычно**, оставьте статус «Черновик». 5. Откройте **Расширенно**, заполните description и теги. 6. Нажмите **Данные JSON** и проверьте значения. 7. Сохраните и останьтесь. 8. Измените текст, подождите появления сообщения о локальном черновике и обновите страницу. 9. Восстановите черновик и сохраните. 10. Измените документ ещё раз, затем откройте ревизии. 11. Просмотрите полный снимок и восстановите предыдущую версию. 12. Откройте документ на сайте и проверьте публичную страницу. ## 17. Типичные ошибки ### Черновик не появился Проверьте, разрешено ли локальное хранилище браузера и не открыт ли сайт в режиме, который очищает данные после закрытия. Черновик создаётся только после реального изменения формы. ### После восстановления отсутствует выбранный файл Браузер запрещает программно восстанавливать локальный файл в ``. Выберите файл повторно. Уже загруженный путь в медиа-поле должен восстановиться. ### Система сообщает о более новой версии Не пытайтесь отправлять запрос повторно. Обновите страницу, восстановите локальный черновик, сравните данные и сохраните объединённый вариант. ### В ревизии нет основных настроек Это старая ревизия формата «Только поля». Она совместима, но была создана до введения полного снимка. ### Поле не видно Проверьте активную группу, условие видимости и режим редактора. Ошибка такого поля автоматически откроет нужную область. ## 18. Связанные руководства - [Документы](documents.md) - [Рубрики и поля](rubrics.md) - [Поля документов](../fields/README.md) - [Запросы](requests.md) - [Каталог](catalog.md) - [Модульная система](../modules/README.md) - [JSON API](../api/README.md) - [Хуки документов](../hooks/documents.md)