> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yume.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Настройки в админ-панели

> Админ-раздел настроек: список сохранённых значений с фильтром по компании, страница всех параметров одной компании с разбивкой на секции, подбор виджета по типу параметра, приведение введённого текста к нужному типу, отметка изменённых значений, сброс к значению по умолчанию и доступ только для суперпользователя платформы.

Полный перечень полей — в [глоссарии раздела](/ru/logic/settings/admin-glossary).

## Что это за раздел

Админ-раздел настроек компаний — это инструмент платформы, а не самой компании. Через него сотрудник платформы видит, какие параметры компания переопределила, и может править **любой** параметр реестра настроек — в том числе те, которых нет в наборе, который отдаётся компании через её собственный интерфейс.

В боковом меню панели раздел подписан «Конфигурация»; заголовки и хлебные крошки внутри самих экранов при этом показывают техническое английское название модели.

Раздел состоит из двух экранов:

| Экран                       | Что показывает                                                                                      | Когда нужен                                                             |
| --------------------------- | --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| Список сохранённых значений | Только те строки, которые реально записаны в базу: компания, ключ, значение                         | Быстро понять, что и у кого перенастроено                               |
| Страница настроек компании  | **Все** параметры реестра одной компании: и переопределённые, и работающие на значении по умолчанию | Настроить компанию целиком, точечно вернуть параметр к общему поведению |

<Note>
  Значение настройки компании хранится только тогда, когда оно отличается от общего. Параметр без сохранённой строки работает на значении по умолчанию из реестра настроек компании. Поэтому список сохранённых значений — это список отклонений, а не список параметров.
</Note>

## Кто имеет доступ

Изменение данных в разделе закрыто режимом «только суперпользователь», который включён по умолчанию и в конфигурации проекта не переопределён:

* **Добавление вручную запрещено всегда** — новые строки появляются только через страницу настроек компании (или через саму компанию). Кнопки «Добавить» в разделе нет ни у кого, включая суперпользователя.
* **Изменение и удаление** доступны только суперпользователю платформы. При выключенном режиме изменение возвращается к обычной проверке прав на модель, а удаление остаётся запрещённым для всех.
* **Просмотр списка** этим режимом не ограничен — он открывается по обычному праву на просмотр, как любой другой раздел панели.
* **Страница настроек компании** отдаёт «страница не найдена» всем, кроме суперпользователя.

<Warning>
  Страница настроек компании проверяет только признак суперпользователя. Если режим «только суперпользователь» отключить в конфигурации проекта, страница станет доступна любому сотруднику, у которого вообще есть вход в админ-панель, — прав на модель она не спрашивает.
</Warning>

## Список сохранённых значений

Колонки списка: компания, ключ настройки, сохранённое значение и ссылка «Редактировать», ведущая на страницу всех настроек этой компании.

* **Фильтры** — по компании (через поиск-автодополнение, чтобы не разворачивать список всех компаний) и по ключу параметра.
* **Поиск** — по названию компании и по ключу.
* **Только для чтения** — компания и ключ. В карточке отдельной записи меняется исключительно значение: перевесить сохранённое значение на другую компанию или переименовать ключ нельзя.

<Info>
  Компания, которая ни разу ничего не переопределяла, в списке не появится вовсе — у неё нет ни одной строки. Попасть на её страницу настроек можно только по прямому адресу с номером компании; ссылки «Редактировать» без строки в списке не существует.
</Info>

### Карточка отдельного значения

Стандартная карточка записи (переход по названию компании в списке) использует форму одиночной настройки. Она смотрит в реестр, берёт объявленный тип параметра и подставляет соответствующее поле ввода по карте типов: флажок для флага, узкое текстовое поле для чисел, текстовую область в три строки для строки и структуры, раздельные поля даты и времени, отдельные поля длительности, даты и времени суток. Для типа, которого в карте нет, берётся то же поле, что и для строки, — текстовая область в три строки. Ни палитры цвета, ни подсказки формата длительности в этой карточке нет.

<Warning>
  Карточка отдельного значения рассчитана на «правильно» описанный параметр: описание из трёх частей и простой тип. На параметрах, описанных в реестре двумя частями (сейчас таких четыре), и на параметрах со списочным типом (сейчас таких два) она открыться не сможет; так же она падает на строке, ключ которой из реестра уже исчез. Для повседневной работы используйте страницу настроек компании — там разбор описания устроен терпимее.
</Warning>

## Страница настроек компании

Это отдельная страница внутри раздела, адресуемая номером компании. Заголовок и хлебные крошки показывают название компании (а если названия нет — техническое имя её схемы либо её номер), из крошек можно вернуться в список.

### Как собирается таблица

При каждом открытии страница строится заново, ничего промежуточного в базе не сохраняется:

1. Одним запросом читаются все сохранённые значения этой компании.
2. Для каждого параметра реестра разбирается его описание: значение по умолчанию, технический код и тип. Если тип в описании не указан, он определяется по типу значения по умолчанию.
3. Ищется сохранённая строка компании (с учётом префикса хранения, который в текущей конфигурации пустой). Если строка есть — в поле показывается значение компании и параметр помечается как изменённый; если нет — показывается значение по умолчанию.
4. Значение приводится к виду, пригодному для поля ввода, и выбирается вид элемента управления.

Строка таблицы состоит из пяти колонок: **Название**, **Значение** (само поле ввода), **По умолчанию** (значение из реестра отдельной меткой, а при пустом значении — прочерк), **Код** (технический код параметра) и кнопка сброса.

<Info>
  Колонки «Название» и «Код» практически всегда показывают одно и то же: подпись параметра берётся из его технического кода, и только при пустом коде подставляется сам ключ. Человеческие названия по-русски заданы в реестре ровно у двух параметров — названия и адреса организации.
</Info>

### Секции

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

<Note>
  Сейчас секции не заданы, поэтому все 116 параметров реестра выводятся одним блоком с техническим английским заголовком. Порядок строк — порядок реестра: реквизиты компании, продукты, возможности и доставки, транзакции, цвета статусов, параметры аренды, штрафы, проценты менеджеров, метрики, бонусы, налог, формат телефона, дополнительные поля, параметры клиента, раскладка карточки аренды.
</Note>

### Виды полей ввода

Вид элемента управления выбирается по типу параметра, а цвет — дополнительно по внешнему виду значения по умолчанию. Сейчас в реестре 64 флага, 17 строк, 11 дробных чисел, 8 структур, 7 цветов, 5 целых чисел и 4 длительности.

| Тип параметра    | Элемент управления                      | Особенности                                                                                          |
| ---------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| Флаг             | Переключатель                           | Положение определяется самим текущим значением, а не его текстовым представлением                    |
| Целое число      | Числовое поле с шагом 1                 | —                                                                                                    |
| Дробное число    | Числовое поле с произвольным шагом      | Одинаково для точной и обычной дроби (проценты, лимиты)                                              |
| Длительность     | Текстовое поле с подсказкой формата     | Вводится как часы:минуты:секунды                                                                     |
| Дата и время     | Поле даты-времени браузера              | В текущем реестре таких параметров нет                                                               |
| Дата             | Поле даты браузера                      | В текущем реестре таких параметров нет                                                               |
| Структура (JSON) | Многострочное поле моноширинным шрифтом | Раскладка карточки аренды, наборы дополнительных полей, варианты штрафов, списки статусов для метрик |
| Цвет             | Палитра + текстовое поле с кодом цвета  | Оба поля синхронизированы в обе стороны: правка кода двигает палитру и наоборот                      |
| Строка           | Однострочное текстовое поле             | Значение по умолчанию для неизвестных типов                                                          |

<Tip>
  Цвет распознаётся не по типу, а по значению по умолчанию: строковый параметр получает палитру, только если его значение по умолчанию выглядит как код цвета — решётка и три или шесть символов после неё. Так палитру получают семь цветов статусов аренды.
</Tip>

### Как значение показывается в поле

Обратное преобразование хранимого значения в текст поля работает так:

* «не задано» — пустое поле;
* флаг — слово-обозначение истинности латиницей (в самой таблице он всё равно рисуется переключателем);
* длительность — часы:минуты:секунды с ведущими нулями, **без перевода в дни**: сутки показываются как 24:00:00, а трёхчасовой буфер — как 03:00:00;
* структура и список — JSON без экранирования кириллицы; значения, которые в JSON не укладываются (например, длительности внутри вариантов штрафов), превращаются в текст;
* всё остальное — обычное текстовое представление.

## Сохранение

Страница отправляется одной кнопкой «Сохранить» в закреплённой нижней панели — форма общая для всех секций. Обработка идёт по каждому параметру реестра:

1. **Флаг**: отмеченный переключатель означает «включено», отсутствие поля в отправке — «выключено». Это единственный вид параметра, который обрабатывается даже тогда, когда браузер ничего не прислал (невыставленный флажок не отправляется вовсе).
2. **Все остальные типы**: если поля нет в отправке, параметр пропускается — так страница не затирает значения, которых на ней не было.
3. Присланный текст сравнивается с текстовым представлением текущего значения (сохранённого, а при его отсутствии — значения по умолчанию). Совпало — параметр пропускается, строка в базу не пишется.
4. Иначе текст приводится к нужному типу и записывается: существующая строка компании обновляется, отсутствующая — создаётся.
5. В конце выводится сообщение с количеством сохранённых параметров и происходит возврат на ту же страницу — уже с обновлёнными отметками «изменено» и видимыми кнопками сброса.

<Warning>
  Сравнение «изменилось / не изменилось» для флагов не работает: переключатель присылает «включено» или пустоту, а текущее значение превращается в текстовое обозначение истинности, и эти строки никогда не совпадают. Практический итог: **любое сохранение страницы записывает собственные строки для всех 64 флагов реестра**, даже если вы не трогали ни один переключатель. Значения при этом остаются правильными, но компания перестаёт наследовать общие значения по умолчанию по всем флагам, счётчик в сообщении оказывается завышенным (и никогда не бывает нулевым), а кнопки сброса появляются у каждой строки-флага.
</Warning>

### Приведение введённого текста к типу

| Что введено           | Как сохраняется                                                                                      |
| --------------------- | ---------------------------------------------------------------------------------------------------- |
| Переключатель         | Включено / выключено                                                                                 |
| Пустое поле (не флаг) | «Не задано»                                                                                          |
| Целое, дробное        | Число соответствующего вида                                                                          |
| Длительность          | Разбор формата часы:минуты:секунды; если формат не распознан, целое число трактуется как **секунды** |
| Дата, дата и время    | Разбор стандартного формата                                                                          |
| Структура, список     | Разбор JSON                                                                                          |
| Прочее                | Текст как есть                                                                                       |

<Warning>
  Если текст не удалось разобрать — некорректный JSON, нечисловая строка в числовом поле, неразбираемая длительность — значение **сохраняется как введённый текст**, без ошибки и без предупреждения. Внешне сохранение выглядит успешным, а в параметре, от которого система ждёт число или структуру, оказывается строка. Проверяйте такие параметры после сохранения.
</Warning>

<Note>
  Очистить текстовый параметр «в пустоту» через эту страницу не получится: пустое поле сохраняется как «не задано», а при первом же обращении система подставит значение по умолчанию и запишет его обратно в базу. Параметр останется помеченным как изменённый, но со значением, равным значению по умолчанию. Чтобы вернуть параметр к общему поведению, пользуйтесь кнопкой сброса, а не очисткой поля.
</Note>

## Сброс к значению по умолчанию

Кнопка сброса стоит в конце строки и видна **только у изменённых параметров** — тех, у которых есть сохранённая строка. У остальных она скрыта и недоступна с клавиатуры, но остаётся в разметке страницы.

Нажатие отправляет ту же общую форму, но с действием «сбросить» и ключом сбрасываемого параметра; проверки полей браузером при этом пропускаются, так что незаполненное числовое поле в другой строке сбросу не помешает. Обработка простая: сохранённая строка этой компании по этому ключу удаляется, выводится сообщение об успехе, страница перезагружается — параметр снова показывает значение по умолчанию и теряет кнопку сброса.

<Warning>
  Кнопки сброса — первые кнопки отправки внутри формы, поэтому отправка формы клавишей ввода из поля ввода в большинстве браузеров сработает как сброс самого первого параметра таблицы, а не как сохранение. Нажимайте «Сохранить» мышью и проверяйте текст появившегося сообщения.
</Warning>

<Warning>
  Ключ сбрасываемого параметра подставляется в скрытое поле скриптом страницы в момент нажатия. Если скрипт не отработал, ключ остаётся пустым, и нажатие кнопки сброса выполняется как **обычное сохранение всей страницы** — со всеми последствиями массовой записи флагов. Убедитесь, что после нажатия появилось сообщение именно о сбросе.
</Warning>

<Info>
  Отметка «изменено» означает лишь наличие сохранённой строки, а не отличие от значения по умолчанию. Строка, в которой лежит ровно то же значение, что и по умолчанию, считается изменённой и показывает кнопку сброса — это корректно, потому что сброс убирает саму привязку, а не значение.
</Info>

## Побочные эффекты и кэш

Значения настроек агрессивно кэшируются: при первом обращении компании все её сохранённые значения разом загружаются в кэш на сутки, а значения, прочитанные поштучно мимо этой предзагрузки, живут в кэше считаные секунды. Админ-раздел с этим кэшем взаимодействует плохо.

| Действие в админке               | Что происходит с базой    | Что происходит с кэшем                                                                                             |
| -------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Изменение существующего значения | Строка обновляется        | Автоматический сброс кэша запускается, но адресуется пространству ключей текущего запроса (админки), а не компании |
| Первое сохранение параметра      | Строка создаётся          | Полный сброс кэша не выполняется вовсе                                                                             |
| Сброс параметра                  | Строка удаляется напрямую | Не затрагивается                                                                                                   |

<Warning>
  Практический итог: изменение существующего значения и сброс параметра компания может увидеть не сразу — старое значение живёт в её кэше, пока не истечёт срок суточной предзагрузки. Совпасть пространства ключей могут только в одном случае: если админ-панель открыта на домене той же компании. Параметр, у которого сохранённой строки раньше вообще не было, обычно подхватывается почти сразу — кэшировать было нечего. Сама админ-страница читает значения напрямую из базы, поэтому расхождения на ней не видно.
</Warning>

<Tip>
  Если изменение критично и должно примениться немедленно, надёжнее внести его из интерфейса самой компании — там сброс кэша выполняется в её собственном пространстве ключей. После правки из админки стоит проверить результат на стороне компании.
</Tip>

## Типовые сценарии

**Включить возможность для одной компании.** Открыть страницу настроек компании по ссылке «Редактировать» из списка (или по прямому адресу с номером компании, если у компании ещё ничего не сохранено), найти нужный параметр по подписи или коду, переключить, сохранить. Помнить, что этим же сохранением зафиксируются собственные значения всех флагов компании.

**Посмотреть, что у компании отличается от общего.** Открыть список сохранённых значений и отфильтровать по компании — останутся только отклонения. Второй способ — страница компании: отличающиеся параметры видны по наличию кнопки сброса.

**Вернуть параметр к общему поведению.** Кнопка сброса в строке параметра. После неё убедиться, что значение действительно применилось на стороне компании — из-за кэша это может произойти с большой задержкой.

**Массово перенастроить компанию под новый тип бизнеса.** Пройтись по странице сверху вниз: реквизиты и валюта, состав продуктов, возможности (инвентаризация, доставки, субаренда, бонусы, налог), цвета статусов, проценты менеджеров, раскладка карточки аренды. Структуры (раскладка, наборы дополнительных полей, варианты штрафов) редактируются как JSON — перед сохранением стоит проверить корректность, иначе они молча сохранятся строкой.

## Подводные камни

<Warning>
  **Сохранение страницы всегда пишет все флаги**

  * Любое сохранение страницы настроек компании записывает собственные значения для всех флагов реестра — сейчас это 64 параметра из 116 — даже если ни один переключатель не трогали. Проверка «не изменилось — пропустить» для флагов не срабатывает: то, что присылает форма, никогда не совпадает с текстовым представлением текущего значения.
  * После первого же сохранения компания перестаёт наследовать общие значения по умолчанию по всем флагам, счётчик в сообщении завышен, а кнопка сброса появляется у каждой строки-флага.
  * Сообщение о числе сохранённых параметров нулевым не бывает: счётчик начинается от количества флагов.
</Warning>

<Warning>
  **Изменения из админки могут долго не доходить до компании**

  * Сброс параметра удаляет сохранённую строку напрямую, минуя обработчик сохранения, поэтому кэш компании не очищается: старое значение читается, пока не истечёт суточный срок жизни массовой предзагрузки настроек.
  * Автоматическая очистка кэша при сохранении выполняется в пространстве ключей той компании, в контексте которой идёт запрос, а админ-панель обычно работает не в контексте редактируемой компании. Поэтому правка существующего значения из админки, как правило, не вытесняет закэшированное значение.
  * Вторая автоматическая реакция на сохранение кладёт новое значение в кэш компании под ключ без номера компании, тогда как чтение ищет ключ с номером, — на чтение эта запись не влияет и устаревшее значение не заменяет.
  * Полная очистка кэша выполняется только при изменении уже существующей строки; при создании новой строки она пропускается. Обычно это незаметно, но если строка раньше существовала и была удалена сбросом, старое значение может ещё жить в кэше.
</Warning>

<Warning>
  **Ошибочный ввод сохраняется молча**

  * Если введённый текст не разбирается — некорректная структура, нечисловая строка в числовом поле, неразбираемая длительность, — значение сохраняется как введённый текст без ошибки и без предупреждения. В параметре, от которого система ждёт число или структуру, окажется строка.
</Warning>

<Warning>
  **Карточка отдельного значения и проверка доступа**

  * Карточка отдельного сохранённого значения не открывается для параметров, описанных в реестре двумя частями (сейчас их четыре), для параметров со списочным типом (сейчас их два) и для строки, ключа которой в реестре уже нет. Длительности, объявленной строковым обозначением типа, она подставляет обычную текстовую область. Страница настроек компании все эти описания обрабатывает корректно.
  * Страница настроек компании проверяет только признак суперпользователя. Если режим «только суперпользователь» выключить, страница станет доступна любому сотруднику со входом в админ-панель — прав на модель она не спрашивает.
</Warning>

Мелкие особенности:

* Кнопки сброса строк стоят в форме раньше кнопки сохранения, поэтому отправка формы клавишей ввода из поля ввода в большинстве браузеров сработает как сброс самого первого параметра таблицы.
* Кнопка сброса подставляет ключ параметра скриптом страницы; если скрипт не отработал, ключ уходит пустым и нажатие выполняется как обычное сохранение всей страницы.
* Попытка сбросить ключ, которого нет в реестре настроек, молча игнорируется: строка не удаляется, сообщение не выводится, происходит обычный возврат на страницу.
* Компания без единого сохранённого значения не появляется в списке раздела, поэтому ссылки «Редактировать» на неё нет — попасть на её страницу настроек можно только по прямому адресу с номером компании.
* Отметка «изменено» означает наличие сохранённой строки, а не отличие от значения по умолчанию: строка со значением, равным значению по умолчанию, всё равно считается изменённой и показывает кнопку сброса.
* Очистка текстового поля не возвращает параметр к значению по умолчанию: сохраняется «не задано», а при первом чтении система подставит значение по умолчанию и запишет его обратно в базу, так что параметр останется помеченным как изменённый.
* Адрес раздела с номером перехвачен страницей настроек компании и перекрывает стандартный переход панели к записи с таким номером: номер здесь означает компанию, а не строку сохранённого значения.
* Поле даты-времени показывает сохранённое значение в формате, который браузерное поле не принимает: оно отобразится пустым и при следующем сохранении может быть стёрто в «не задано». У поля даты такой проблемы нет; в текущем реестре параметров обоих типов всё равно нет.
* Режимом «только суперпользователь» ограничены изменение, удаление и страница настроек компании; просмотр списка сохранённых значений им не ограничен и открывается по обычному праву на просмотр.

<Info>
  **Справочные детали**

  * Секции параметров не настроены, поэтому все 116 параметров выводятся одним блоком с техническим английским заголовком, в порядке реестра.
  * Колонки «Название» и «Код» почти всегда совпадают: подпись берётся из технического кода параметра, и только при пустом коде подставляется сам ключ. По-русски в реестре подписаны ровно два параметра — название и адрес организации, и значения по умолчанию у них — служебные заглушки латиницей, а не пустые строки.
  * Длительность показывается в часах и не переводится в дни: сутки отображаются как 24:00:00, трёхчасовой буфер — как 03:00:00; при вводе целое число без разделителей трактуется как количество секунд. Всего длительностей в реестре четыре.
  * Палитра цвета выдаётся не по типу параметра, а по внешнему виду значения по умолчанию (решётка и три или шесть символов после неё): так палитру получают семь цветов статусов аренды, а строковый параметр с другим значением по умолчанию получит обычное текстовое поле.
  * Значения, попавшие в кэш через массовую предзагрузку, живут сутки; значения, прочитанные поштучно мимо неё, кэшируются лишь на несколько секунд.
  * Девять параметров реестра не входят в набор, который отдаётся компании через её собственный интерфейс настроек, — поменять их можно только из админ-панели.
  * В боковом меню панели раздел подписан «Конфигурация», а заголовок и хлебные крошки страницы настроек компании используют техническое английское название модели.
  * Сквозные счётчики автонумерации фактически не зарегистрированы в админ-панели: строка их регистрации оформлена так, что ничего не регистрирует, и отдельного раздела для них нет.
</Info>

## Связанные страницы

<CardGroup cols={2}>
  <Card title="Глоссарий: Настройки в админ-панели" icon="book" href="/ru/logic/settings/admin-glossary">
    Полный перечень полей и элементов админ-раздела настроек.
  </Card>

  <Card title="Настройки компании" icon="sliders" href="/ru/logic/settings">
    Обзорная страница модуля настроек и всех его разделов.
  </Card>

  <Card title="Реестр настроек компании" icon="sliders" href="/ru/logic/settings/config">
    Полный перечень параметров компании: что можно включить или выключить, какие значения стоят по умолчанию и как настройки читаются и сохраняются.
  </Card>

  <Card title="Хранение и кэш настроек" icon="database" href="/ru/logic/settings/storage-cache">
    Как значение настройки попадает в базу, как оно кэшируется по компаниям и почему изменение настройки сбрасывает кэш целиком.
  </Card>

  <Card title="Дополнительные поля" icon="list-check" href="/ru/logic/settings/custom-fields">
    Собственные поля компании для клиентов, инвентаря, аренд и других справочников: типы, обязательность, отображение в таблице и фильтрах.
  </Card>

  <Card title="Переименование сущностей" icon="language" href="/ru/logic/settings/labels">
    Как компания меняет названия разделов и статусов под свою нишу, включая формы слова по падежам и числам.
  </Card>

  <Card title="Настройки таблиц" icon="table-columns" href="/ru/logic/settings/tables">
    Сохранённый состав, порядок и ширина колонок для таблиц интерфейса — отдельно по каждой таблице компании.
  </Card>

  <Card title="Промо-баннеры" icon="bullhorn" href="/ru/logic/settings/promo">
    Показ рекламных и информационных баннеров платформы внутри системы: частота показа, отметка о просмотре и исключение компаний.
  </Card>

  <Card title="Сквозная автонумерация" icon="hashtag" href="/ru/logic/settings/counters">
    Общий счётчик компании, из которого берутся номера клиентов, артикулы создаваемых единиц инвентаря и номера документов.
  </Card>
</CardGroup>
