> ## 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/config-glossary).

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

Реестр настроек — это единый список из 116 параметров, заданный в коде и одинаковый для всех компаний. Каждый параметр описан двумя или тремя элементами:

| Элемент описания      | Обязателен | Что означает                                                                                                                                                                          |
| --------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Значение по умолчанию | да         | Действует до тех пор, пока компания не сохранила своё значение                                                                                                                        |
| Подпись ключа         | да         | Служебное человекочитаемое название параметра (у всех ключей, кроме названия и адреса организации, это просто повтор имени параметра)                                                 |
| Тип значения          | нет        | Текст, флаг, целое, дробное, список, словарь, длительность. Нужен только платформенной админке, чтобы подобрать поле ввода; если тип не указан, он выводится из значения по умолчанию |

Для конкретной компании в базе хранятся **только изменённые** значения. Всё остальное берётся из реестра. Поэтому «настройки компании» — это всегда наложение: реестр снизу, сохранённые значения компании сверху.

<Info>
  Набор параметров реестра можно переопределить на уровне платформы целиком, но в текущей конфигурации никаких переопределений нет — работает список, описанный ниже.
</Info>

## Модель данных

Сохранённое значение — это отдельная запись «компания + ключ + значение».

| Поле           | Тип                   | Назначение                                                                                                                         |
| -------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Идентификатор  | число                 | Первичный ключ строки                                                                                                              |
| Компания       | связь                 | Владелец значения; строки всех компаний лежат в одной общей таблице                                                                |
| Ключ настройки | текст                 | Имя параметра из реестра                                                                                                           |
| Значение       | произвольное значение | Хранится в сериализованном виде, поэтому поддерживает не только строки и числа, но и списки, словари, длительности и дробные числа |

Пара «компания + ключ» уникальна: у одной компании не может быть двух значений одного параметра. Ключи, по которым записи нет, работают на значении по умолчанию. Пустое значение в записи равносильно её отсутствию — при чтении оно снова подменяется значением по умолчанию.

## Состав реестра

Ниже — полный состав реестра по смысловым группам. Группировка нужна для чтения: в самом реестре это один плоский список.

<Note>
  Больше половины параметров сервер только хранит и отдаёт наружу — проверяет их интерфейс. Ниже в колонке «Назначение» отдельно отмечено там, где серверная логика параметр действительно читает, и там, где не читает вовсе.
</Note>

### Реквизиты и валюта

| Настройка            | Тип   | По умолчанию       | Назначение                                                                                                                                                                                                                     |
| -------------------- | ----- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Название организации | текст | латинская заглушка | Подставляется в документы и печатные формы; при создании компании перезаписывается реальным названием                                                                                                                          |
| Адрес организации    | текст | латинская заглушка | Юридический или фактический адрес                                                                                                                                                                                              |
| Валюта               | текст | ₸                  | Валюта компании. Хранится либо символом, либо трёхбуквенным кодом: по умолчанию это символ, а при создании компании записывается код. При выводе сумм прописью значение нормализуется к коду, для этого есть таблица синонимов |
| Валюта перед суммой  | флаг  | выключено          | Ставить символ слева от суммы, а не справа. Интерфейсный признак                                                                                                                                                               |
| Язык компании        | текст | русский            | Язык интерфейса и документов; при создании компании ставится английский для ОАЭ и русский для остальных стран                                                                                                                  |
| ИИН компании         | текст | пусто              | Индивидуальный идентификационный номер                                                                                                                                                                                         |
| БИН компании         | текст | пусто              | Бизнес-идентификационный номер юридического лица                                                                                                                                                                               |
| Банк                 | текст | пусто              | Название обслуживающего банка                                                                                                                                                                                                  |
| IBAN                 | текст | пусто              | Международный номер банковского счёта                                                                                                                                                                                          |
| БИК                  | текст | пусто              | Банковский идентификационный код                                                                                                                                                                                               |
| Номер счёта          | текст | пусто              | Расчётный счёт компании                                                                                                                                                                                                        |

Название, адрес, валюта и язык — единственные настройки, которые заполняются автоматически при создании компании. Подробнее: [«Создание компании и её адрес»](/ru/logic/company-billing/setup).

### Признаки доступных сущностей

| Настройка                   | Тип            | По умолчанию | Назначение                                                                                                             |
| --------------------------- | -------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------- |
| Подготовка на точке проката | флаг           | выключено    | Хранится и отдаётся в API; серверная логика его не читает                                                              |
| Продукты                    | флаг           | выключено    | Работа с продуктами (группами инвентаря). Интерфейсный признак                                                         |
| Доступность продуктов       | флаг           | выключено    | Читается сервером: в справочнике продуктов остаются только те, за которыми числятся единицы                            |
| Комплекты                   | флаг           | выключено    | Работа с комплектами. Интерфейсный признак                                                                             |
| Альтернативные комплекты    | флаг           | выключено    | Подбор замен внутри комплекта. Интерфейсный признак                                                                    |
| Услуги                      | флаг           | выключено    | Продажа и добавление услуг. Интерфейсный признак                                                                       |
| Единицы инвентаря           | флаг           | выключено    | Поштучный учёт единиц. Интерфейсный признак                                                                            |
| Автомобильный инвентарь     | флаг           | выключено    | Читается сервером: добавляет автомобильные поля и в поиск, и в выдачу инвентаря, аренд, задач мастерской               |
| Буфер между арендами        | число (минуты) | 0            | Читается сервером при проверке занятости: единица остаётся занятой ещё столько минут после окончания предыдущей аренды |
| Уникальный номер единицы    | флаг           | выключено    | Читается сервером: требует собственный уникальный номер у единицы и продукта                                           |

Все признаки выключены по умолчанию. Включаются они не вручную, а подключением платного модуля или интеграции: у каждого модуля есть свой список ключей реестра, и подключение выставляет их компании во «включено». При регистрации компании подключается стартовый набор модулей, и признаки выставляются тем же механизмом. Подробнее: [«Создание компании и её адрес»](/ru/logic/company-billing/setup).

### Инвентаризация

| Настройка                        | Тип         | По умолчанию | Назначение                                                              |
| -------------------------------- | ----------- | ------------ | ----------------------------------------------------------------------- |
| Периодичность инвентаризации     | число (дни) | 7            | Читается сервером: осмотр старше этого срока перестаёт считаться свежим |
| Инвентаризация перед выдачей     | флаг        | выключено    | Требовать осмотр до выдачи. Интерфейсный признак                        |
| Инвентаризация при приёме        | флаг        | **включено** | Требовать осмотр при возврате. Интерфейсный признак                     |
| Фото и видео при осмотре         | флаг        | выключено    | Обязательные вложения при инвентаризации. Интерфейсный признак          |
| Медиа при осмотре на компьютере  | флаг        | **включено** | Разрешает прикреплять медиа из десктопной версии. Интерфейсный признак  |
| Инвентаризация в карточке аренды | флаг        | выключено    | Проводить осмотр прямо из аренды. Интерфейсный признак                  |

### Доставки и интеграции

| Настройка                | Тип  | По умолчанию | Назначение                                                                                                                                                           |
| ------------------------ | ---- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Субаренда                | флаг | выключено    | Работа с чужим инвентарём и расчёты с субарендодателями. Интерфейсный признак                                                                                        |
| Подтверждение доставки   | флаг | **включено** | Читается сервером: при выезде получателю отправляется одноразовый код по SMS, и без него доставку нельзя закрыть. Когда признак выключен, доставка закрывается сразу |
| Доставка стартует аренду | флаг | выключено    | Завершение доставки переводит аренду в прокат. Интерфейсный признак                                                                                                  |
| Забор завершает аренду   | флаг | выключено    | Завершение забора закрывает аренду. Интерфейсный признак                                                                                                             |
| Интеграция с автобазой   | флаг | выключено    | Проверка автомобилей по госномеру. Интерфейсный признак                                                                                                              |
| Карты Wallet             | флаг | выключено    | Выдача клиентских карт Apple/Google Wallet. Интерфейсный признак                                                                                                     |
| Интеграция WhatsApp      | флаг | выключено    | Читается при рассылке уведомлений об автоштрафах — компании с выключенным признаком пропускаются                                                                     |

Поведение подтверждения доставки описано отдельно: [«Услуги и доставка»](/ru/logic/rent/services-delivery).

В реестре также сохранились два устаревших ключа доставки (уведомление по SMS и уведомление через сторонний мессенджер) — они не читаются ни одним участком системы и наружу не отдаются.

### Транзакции

| Настройка                      | Тип  | По умолчанию | Назначение                                                                          |
| ------------------------------ | ---- | ------------ | ----------------------------------------------------------------------------------- |
| Своя дата операции             | флаг | выключено    | Разрешает указывать дату платежа вручную. Интерфейсный признак                      |
| Переплата                      | флаг | выключено    | Читается сервером при проведении платежа: разрешает принять сумму больше долга      |
| График платежей                | флаг | выключено    | Читается сервером: включает расчёт аренды по графику вместо расчёта по длительности |
| Первоначальный взнос в графике | флаг | выключено    | Читается сервером при построении графика                                            |
| Чеки по аренде                 | флаг | выключено    | Формирование фискального чека по аренде. Интерфейсный признак                       |

### Цвета статусов аренды

Все семь параметров — это HEX-коды подсветки статуса в интерфейсе; сервер их не читает.

| Настройка                 | По умолчанию |
| ------------------------- | ------------ |
| Цвет статуса «Запрос»     | #c2c2c2      |
| Цвет статуса «Бронь»      | #0056d6      |
| Цвет статуса «Должник»    | #ff4015      |
| Цвет статуса «В прокате»  | #ffab01      |
| Цвет статуса «Отменена»   | #474747      |
| Цвет статуса «Завершена»  | #669d34      |
| Цвет статуса «Просрочена» | #d357fe      |

### Поведение аренды

| Настройка                     | Тип          | По умолчанию   | Назначение                                                                                                  |
| ----------------------------- | ------------ | -------------- | ----------------------------------------------------------------------------------------------------------- |
| Черновики аренд               | флаг         | **включено**   | Читается сервером: определяет начальный статус новой аренды                                                 |
| Бронирование                  | флаг         | **включено**   | Читается сервером: определяет начальный статус и допустимые переходы                                        |
| Этап сбора                    | флаг         | выключено      | Отдельный этап сбора инвентаря. Интерфейсный признак                                                        |
| Развёрнутая таблица аренд     | флаг         | выключено      | Показывать позиции аренды прямо в списке. Интерфейсный признак                                              |
| Агенты в аренде               | флаг         | выключено      | Читается сервером: подгружает блок агента в списке аренд                                                    |
| Процент агента                | число        | 10             | Процент вознаграждения агента по умолчанию. Интерфейсный признак                                            |
| Гибкая аренда                 | флаг         | выключено      | Разные сроки у позиций одной аренды. Интерфейсный признак                                                   |
| Клиент в аренде               | флаг         | **включено**   | Требовать указание клиента. Интерфейсный признак                                                            |
| Отметки клиента для фильтра   | список       | пусто          | Набор отметок клиента для фильтра аренд. Интерфейсный признак                                               |
| Единицы в аренде              | флаг         | выключено      | Разрешает добавлять конкретные единицы. Интерфейсный признак                                                |
| Продукты в аренде             | флаг         | выключено      | Разрешает добавлять продукты без выбора единицы. Интерфейсный признак                                       |
| Услуги в аренде               | флаг         | выключено      | Читается сервером: подгружает блок услуг в списке аренд                                                     |
| Тип фильтрации по датам       | текст        | комбинированно | Читается сервером: по какой границе периода фильтруются аренды — по началу, по окончанию или комбинированно |
| Округление штрафа             | число        | 1              | Читается сервером: шаг округления рассчитанного штрафа                                                      |
| Льготный период до штрафа     | длительность | 1 час          | Читается сервером: опоздание в пределах этого времени не штрафуется                                         |
| Залоги                        | флаг         | **включено**   | Читается сервером: подгружает блок залога в списке аренд и в расписании                                     |
| Пауза аренды                  | флаг         | **включено**   | Приостановка начисления по аренде. Интерфейсный признак                                                     |
| Детализация по позициям       | флаг         | **включено**   | Расчёт по каждой позиции аренды. Интерфейсный признак                                                       |
| Контроль занятости            | флаг         | **включено**   | Запрещать пересечение аренд по одной единице. Интерфейсный признак                                          |
| Скидка по позиции             | флаг         | **включено**   | Скидка на отдельную позицию. Интерфейсный признак                                                           |
| Срок аренды по умолчанию      | длительность | 1 сутки        | Читается сервером: предзаполняемая продолжительность и потолок шага автопродления                           |
| Автоархивация броней          | флаг         | выключено      | Фоновая архивация броней, до начала которых уже почти не осталось времени                                   |
| Отсрочка автоархивации        | длительность | 3 часа         | За сколько времени до начала брони она попадает под архивацию                                               |
| Фильтр аренд по умолчанию     | текст        | пусто          | Предустановленный фильтр списка аренд. Интерфейсный признак                                                 |
| Точка выдачи                  | флаг         | **включено**   | Указывать точку проката, откуда выдают инвентарь. Интерфейсный признак                                      |
| Точка возврата                | флаг         | выключено      | Читается сервером при приёме: разрешает вернуть инвентарь на другую точку                                   |
| Автоучёт дней недели          | флаг         | выключено      | Читается сервером: включает пересчёт расписания аренды по рабочим дням                                      |
| Периоды аренды                | флаг         | **включено**   | Работа с периодами внутри аренды. Интерфейсный признак                                                      |
| Объединять прокат и просрочку | флаг         | выключено      | Читается сервером: считать просроченные аренды вместе с активными в счётчиках                               |
| Одна единица на аренду        | флаг         | выключено      | Ограничивает аренду одной единицей. Интерфейсный признак                                                    |
| Автопродление аренды          | флаг         | выключено      | Читается сервером: новая аренда создаётся с автопродлением                                                  |

Как эти настройки влияют на жизненный цикл, описано в [«Аренда и статусы»](/ru/logic/rent/lifecycle). Работа автоархива броней разобрана в [«Онбординг, новости и статистика»](/ru/logic/company-billing/onboarding-news-stats).

### Штрафы, выдача и смены

| Настройка                       | Тип          | По умолчанию                                           | Назначение                                                                      |
| ------------------------------- | ------------ | ------------------------------------------------------ | ------------------------------------------------------------------------------- |
| Штрафы                          | флаг         | выключено                                              | Читается сервером: общий выключатель начисления штрафов                         |
| Способ начисления штрафа        | текст        | от момента просрочки                                   | Хранится и отдаётся в API; серверная логика его не читает                       |
| Начатый интервал считать полным | флаг         | выключено                                              | Читается сервером: количество штрафных интервалов округляется вверх, а не вниз  |
| Доступ менеджера к штрафам      | флаг         | **включено**                                           | Читается сервером: разрешает менеджеру менять штраф                             |
| Штрафной интервал по умолчанию  | длительность | 1 час                                                  | Читается сервером: базовый шаг начисления, переносится в аренду при её создании |
| Варианты штрафов                | список       | «Посменный штраф» — 1 сутки, «Почасовой штраф» — 1 час | Готовые пресеты: название плюс интервал. Интерфейсный признак                   |
| Единая выдача                   | флаг         | выключено                                              | Читается сервером: выдать всю аренду одним действием                            |
| Единый приём                    | флаг         | выключено                                              | Читается сервером: принять всю аренду одним действием                           |
| Рабочие смены                   | флаг         | выключено                                              | Учёт смен сотрудников. Интерфейсный признак                                     |
| Приоритет подбора инвентаря     | текст        | свой инвентарь компании                                | Читается сервером при автоматическом подборе единиц                             |

<Warning>
  «Способ начисления штрафа» здесь — отдельный параметр реестра, который сейчас ни на что не влияет. Не путайте его с одноимённым признаком у самого штрафа (автоматический или ручной), который живёт в карточке штрафа и описан на странице [«Депозиты и штрафы»](/ru/logic/rent/deposits-penalties).
</Warning>

Формула расчёта штрафа, роль льготного периода, шага начисления и округления суммы разобраны с числовым примером в [«Депозиты и штрафы»](/ru/logic/rent/deposits-penalties). Поведение единой выдачи и единого приёма — в [«Выдача и приёмка»](/ru/logic/rent/actions).

Приоритет подбора сравнивается с точным написанием варианта заглавными буквами, поэтому любое незнакомое значение равносильно случайному порядку подбора. Само же направление сортировки обратно названиям вариантов — см. раздел с подводными камнями.

### Проценты менеджеров

| Настройка           | Тип             | По умолчанию | Назначение                         |
| ------------------- | --------------- | ------------ | ---------------------------------- |
| Процент за создание | число (2 знака) | 0            | Вознаграждение за создание аренды  |
| Процент за сбор     | число (2 знака) | 0            | Вознаграждение за этап сбора       |
| Процент за бронь    | число (2 знака) | 4            | Вознаграждение за оформление брони |
| Процент за выдачу   | число (2 знака) | 3            | Вознаграждение за выдачу           |
| Процент за приём    | число (2 знака) | 3            | Вознаграждение за приём            |
| Процент за доставку | число (2 знака) | 10           | Вознаграждение курьеру за доставку |

При создании заявки с первых пяти значений снимается снимок в собственный набор процентов заявки; общие настройки затем работают как запасной вариант при расчёте начислений. Подробнее: [«Зарплаты и субаренда сотрудников»](/ru/logic/metrics/salaries-sublease).

### Метрики

| Настройка                 | Тип    | По умолчанию               | Назначение                                                                              |
| ------------------------- | ------ | -------------------------- | --------------------------------------------------------------------------------------- |
| Статусы аренд для метрик  | список | только «завершена»         | Читается сервером: какие статусы аренды учитываются в отчётах по активности сотрудников |
| Статусы оплаты для метрик | список | только «оплачено»          | Читается сервером вместе с предыдущим параметром                                        |
| Типы позиций для выручки  | список | продукты, продажи, единицы | Хранится и отдаётся в API; серверная логика его не читает                               |

### Бонусы и налог

| Настройка                        | Тип             | По умолчанию | Назначение                                                                                                              |
| -------------------------------- | --------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------- |
| Бонусы                           | флаг            | выключено    | Хранится и отдаётся в API; серверная логика его не читает — начисление зависит только от значений ниже                  |
| Процент начисления бонусов       | число (2 знака) | 0            | Читается сервером: доля суммы завершённой оплаченной аренды, начисляемая бонусами, если у клиента нет уровня лояльности |
| Фиксированное начисление бонусов | число (2 знака) | 0            | Читается сервером: приветственное начисление при заведении бонусного счёта клиента                                      |
| Лимит списания бонусов           | число (2 знака) | 100          | Читается сервером: какую долю суммы аренды можно закрыть бонусами                                                       |
| Налог                            | флаг            | выключено    | Хранится и отдаётся в API; серверная логика его не читает                                                               |
| Ставка налога                    | число (2 знака) | 0            | Читается сервером: переносится в аренду при её создании                                                                 |
| Налог включён в цену             | флаг            | **включено** | Читается сервером: переносится в аренду вместе со ставкой                                                               |

Как бонусы применяются на практике — в [«Бонусы»](/ru/logic/clients-loyalty/bonuses).

### Клиенты и документы

| Настройка                          | Тип             | По умолчанию                 | Назначение                                                                                           |
| ---------------------------------- | --------------- | ---------------------------- | ---------------------------------------------------------------------------------------------------- |
| Формат телефона                    | текст           | +9-999-999-9999              | Маска ввода номера. Сервер её не читает                                                              |
| Паспорт клиента                    | флаг            | **включено**                 | Требование интерфейса к карточке клиента; сервер его не проверяет                                    |
| Скан паспорта                      | флаг            | выключено                    | Требование интерфейса; сервер его не проверяет                                                       |
| Длина ИИН                          | число           | 12                           | Ожидаемое число символов в ИИН клиента; сервер его не проверяет                                      |
| Лимит долга клиента                | число (2 знака) | 9 999 999                    | Порог задолженности для интерфейса; сервер его не проверяет                                          |
| Баланс Kaspi у клиента             | флаг            | выключено                    | Читается сервером: включает работу с платёжным балансом клиента при автосписании                     |
| Режим тарификации документов       | текст           | за сообщение                 | Только чтение: назначается платформой, читается при списании квоты подписи                           |
| Дополнительные поля справочников   | словарь         | пустые наборы по 12 разделам | Кастомные поля справочников                                                                          |
| Секрет банковского разбора выписок | текст           | пусто                        | Служебный ключ разбора банковских выписок; читается фоновой задачей напрямую по всем компаниям сразу |

Режим тарификации документов — единственное поле набора, которое компания видит, но не может изменить. Подробнее: [«Пакеты, баланс и квоты подписи»](/ru/logic/documents/packages).

### Раскладка карточки аренды

| Настройка                      | Тип     | По умолчанию                                                                                                                                     | Назначение                      |
| ------------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------- |
| Левая колонка карточки аренды  | словарь | ширина 700, порядок блоков «информация → позиции»; внутри информации «клиент, агент, даты»; внутри позиций «единицы, комплекты, услуги, продажи» | Ширина колонки и порядок блоков |
| Правая колонка карточки аренды | список  | документы, комментарии, залог, штраф, агент, медиа, доставки                                                                                     | Порядок блоков правой колонки   |

## Доступ к значениям

Вся система обращается к настройкам через один ленивый объект: он создаётся при первом обращении, поэтому импорт модулей на старте приложения не лезет в базу.

### Чтение настройки

1. Ключ проверяется по реестру. Неизвестный ключ или испорченное описание — сразу ошибка, «тихого» пустого ответа не бывает.
2. Хранилище отдаёт сохранённое значение компании.
3. Если сохранённого значения нет, берётся значение по умолчанию **и тут же записывается компании как её собственное**.

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

### Запись и массовое обновление

* Запись одного значения: ключ обязан быть в реестре, иначе ошибка. Значение уходит в базу и сразу кладётся в кэш.
* Массовое обновление: сначала проверяются **все** переданные ключи, и только потом идёт запись пачкой. Если хотя бы один ключ незнаком, не сохраняется ничего.
* Перечень ключей: объект умеет отдать список всех известных настроек — на этом построены и админка, и прогрев кэша.

### Вне контекста компании

Настройки читаются в контексте конкретной компании. Если контекст не установлен, то:

* чтение возвращает значение по умолчанию из реестра;
* запись молча ничего не делает — ошибки не будет.

<Warning>
  Обычное переключение схемы компании, которым пользуются фоновые задачи и служебные команды, контекст компании для настроек **не** устанавливает: слой настроек в этот момент считает, что компании нет, и отдаёт значения по умолчанию. Именно на этом спотыкается фоновая архивация броней — она читает оба своих параметра из реестра, видит выключенный признак и завершается на первой же компании, так что признак, включённый компанией, до неё не доходит. Это же — самый частый источник жалоб «настройка не применилась».
</Warning>

## Хранение и кэш

Читать настройки приходится буквально на каждом шаге бизнес-логики, поэтому хранилище агрессивно кэширует.

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

Ключевые следствия:

* Прогретая пачка живёт **сутки**; значения, записанные поштучно, ложатся в кэш с общим коротким сроком жизни (15 секунд), после чего перечитываются из базы.
* Создание новой записи настройки кэш не сбрасывает (при создании кэш и так уже содержит актуальное значение) — сбрасывает только изменение существующей.
* Удаление записи кэш не сбрасывает вообще.
* Массовое сохранение делает ровно один сброс на всю пачку, а не по сбросу на каждый ключ.
* Кэш разложен по компаниям и по схемам: значения одной компании невозможно прочитать в контексте другой, но и вычистить их можно только из той же схемы, в которой они были записаны.

## Единая точка API

Чтение и обновление всего набора настроек идёт через одну точку.

### Что отдаётся

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

Схема ответа повторяет реестр **за вычетом девяти служебных ключей**, которые наружу не выходят и меняются только платформой:

* буфер между арендами;
* периодичность инвентаризации;
* первоначальный взнос в графике;
* тип фильтрации по датам;
* автоучёт дней недели;
* процент за сбор;
* секрет банковского разбора выписок;
* два устаревших ключа доставки.

<Note>
  Эти параметры продолжают работать: система читает их из реестра или из значений, выставленных платформой. Просто изменить их из интерфейса компании нельзя.
</Note>

Только для чтения отдаются:

* дополнительные поля справочников — меняются отдельной точкой;
* режим тарификации документов — назначается платформой.

### Кто что может

| Роль                                         | Чтение | Изменение |
| -------------------------------------------- | ------ | --------- |
| Владелец компании                            | да     | да        |
| Сотрудник компании                           | да     | нет       |
| Субарендодатель                              | да     | нет       |
| Прочие аутентифицированные (например клиент) | нет    | нет       |

Изменение требует роли владельца компании, чтение — роли сотрудника или субарендодателя. Владелец читает набор потому, что при создании компании получает обе роли сразу; отдельно выданная роль владельца без роли сотрудника права на чтение не даёт.

### Что происходит при сохранении

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

<Warning>
  При сохранении каждое «пустое» значение записывается как пустая строка, а не как ложь, ноль или пустой список. Выключенный флаг, нулевой процент, нулевая длительность и пустой список в базе выглядят одинаково — как пустое значение.

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

Частичное сохранение меняет только переданные параметры. Полное сохранение подставляет в непереданные поля значения по умолчанию **из схемы API**, а у семи полей они отличаются от реестра — см. раздел с подводными камнями.

## Как это используется

Реестр — не справочный список, а рабочая развилка для значительной части бизнес-логики. Примеры прямых потребителей:

* **Подбор инвентаря.** Приоритет подбора определяет порядок выборки единиц при автоматическом наполнении аренды и при добавлении продукта или комплекта.
* **Проверка занятости.** Буфер между арендами продлевает занятость единицы после окончания предыдущей аренды на заданное число минут; на границе «конец новой аренды — начало следующей» буфер не применяется.
* **Просроченная инвентаризация.** Периодичность инвентаризации задаёт, через сколько дней осмотр считается устаревшим (при пустом значении используется 7 дней).
* **Фильтрация списка аренд.** Тип фильтрации по датам решает, по какой границе периода — начало, окончание или комбинированно — отбираются аренды; любое незнакомое значение отключает фильтр по датам целиком.
* **Начисления сотрудникам.** Проценты подставляются как запасное значение, когда у заявки нет собственного снимка процентов.
* **Расчёт срока.** Автоучёт дней недели включает пересчёт расписания аренды по рабочим дням.
* **Бонусы.** Фиксированное начисление создаёт приветственную бонусную операцию при заведении бонусного счёта, процент начисления работает, если у клиента нет уровня лояльности, а лимит списания ограничивает долю аренды, оплачиваемую бонусами.

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

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

<Warning>
  **Значения и умолчания**

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

<Warning>
  **Настройки, которые не срабатывают**

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

<Warning>
  **Приоритет подбора инвентаря**

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

<Warning>
  **Кэш и платформенная админка**

  * Сброс параметра к значению по умолчанию из платформенной админки удаляет строку настройки, но автоматический сброс кэша повешен только на сохранение, а не на удаление: старое значение может жить в кэше до суток.
  * Ключи кэша разложены по схеме той компании, в контексте которой выполнялся запрос, поэтому правка настроек из платформенной админки (она работает на общей схеме) не вычищает кэш самой компании — изменение может проявиться не сразу.
</Warning>

### Менее заметные особенности

* Признаки, которые включаются подключением платного модуля или интеграции, при отключении модуля обратно не выключаются: остаётся только сброс кэшей, а сами значения остаются включёнными.
* Буфер между арендами односторонний: он продлевает занятость только после окончания предыдущей аренды, а на границе «конец проверяемого периода — начало следующей аренды» не применяется.
* Проверка на отрицательную длительность штрафного интервала привязана к имени поля, которого в схеме нет, поэтому фактически не выполняется: отрицательный штрафной интервал сохранится (в отличие от срока аренды, где проверка работает).
* Очистка текстового параметра в платформенной админке сохраняет «пусто» как отсутствие значения, а не как пустую строку, поэтому при следующем чтении вместо пустого значения возвращается и снова записывается значение по умолчанию — очистить название или адрес «в ноль» таким способом не получится.
* Форма редактирования одной строки настройки в админке ожидает описание ключа ровно из трёх элементов и ломается на четырёх ключах, где тип не указан: штрафной интервал по умолчанию, оба набора статусов для метрик и типы позиций для выручки. Она же падает на строке, ключа которой нет в реестре. Постраничная форма настроек компании такие описания обрабатывает корректно и посторонние ключи просто не показывает.
* После массового сохранения кэш сначала полностью прогревается на сутки, а затем только что сохранённые значения перезаписываются в кэш с общим коротким сроком жизни (15 секунд), поэтому именно изменённые ключи вскоре начинают перечитываться из базы, пока не истечёт суточная метка прогрева.
* И массовое сохранение, и автоматическая реакция на сохранение одной строки дополнительно кладут копии значений в кэш под ключами без номера компании; эти записи никем не читаются и не удаляются при сбросе, а просто истекают сами.
* Право на чтение набора настроек требует роли сотрудника или субарендодателя именно в текущей компании: аутентифицированный пользователь без такой роли (например клиент) получает отказ, а не пустой ответ. Владелец компании читает набор только потому, что при создании компании ему выдаются обе роли сразу.
* Дополнительные поля справочников присутствуют в общем ответе только на чтение и намеренно исключаются из сохранения — попытка изменить их через общий набор настроек ничего не даст, для этого есть отдельная точка.
* Часть параметров, которые звучат как серверные правила, сервер не читает вовсе: лимит долга клиента, требование паспорта и его скана, длина ИИН, маска телефона, типы позиций для выручки, признак налога, признак бонусов и подготовка на точке проката. Бонусы, в частности, начисляются исходя из процента и фиксированной суммы независимо от общего признака бонусов.

### Уточнения

* Незнакомое значение типа фильтрации по датам не просто игнорируется — оно полностью отключает отбор аренд по границам периода.
* Название и адрес организации по умолчанию — латинские заглушки, а не пустые строки; отдельные участки системы специально проверяют заглушку названия, чтобы не подставить её в сообщения клиентам.
* Валюта хранится либо символом, либо трёхбуквенным кодом: значение по умолчанию — символ, а при создании компании записывается код. При выводе сумм прописью значение приводится к коду через таблицу синонимов, потому что компании реально хранят там и то и другое.
* Признак «начатый интервал считать полным» управляет только направлением округления количества штрафных интервалов (вверх вместо вниз) — к моменту фактического приёма инвентаря он отношения не имеет.
* Фоновая архивация касается не завершённых аренд, а броней: в архив уходят брони, до начала которых осталось меньше заданной отсрочки, и все уже просроченные.
* Бонусные значения по умолчанию именно в реестре — нулевой процент начисления, нулевое фиксированное начисление и лимит списания 100 %; другие цифры, которые встречаются в описании бонусной программы, приходят не из реестра, а из уровня лояльности клиента.
* Дробный процент начисления бонусов из настроек компании обрезается до целого числа, поэтому значение вроде 2,5 % работает как 2 %; процент из уровня лояльности используется как есть.
* Ответ единой точки собирается напрямую из базы, минуя кэш, поэтому страница настроек может показывать значение, которое остальные процессы ещё не подхватили.
* Текстовые параметры реестра помечены не типом «текст», а вспомогательной функцией форматирования из стандартной библиотеки; распознавание типа в админке выживает только за счёт запасной ветки, а цветовые параметры распознаются по виду значения по умолчанию (решётка и 4 или 7 символов), а не по типу.

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

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

  <Card title="Настройки компании" icon="sliders" href="/ru/logic/settings">
    Обзорная страница модуля: из чего складываются настройки компании.
  </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>

  <Card title="Настройки в админ-панели" icon="screwdriver-wrench" href="/ru/logic/settings/admin">
    Служебный экран платформы для правки настроек компании и сброса значений к умолчанию.
  </Card>
</CardGroup>
