Skip to main content
Полный перечень полей — в глоссарии переименования. Раздел «Переименование сущностей» позволяет компании называть системные объекты своими словами: прокат самокатов может говорить «самокат» вместо «инвентарь», автопрокат — «автомобиль», а сервисный центр — «заказ-наряд» вместо «мастерская». Переименование задаётся не одной строкой, а полным набором форм — единственное и множественное число во всех шести падежах, — чтобы интерфейс мог корректно строить фразы вида «нет свободных самокатов» или «добавить к автомобилю».

Что можно переименовать

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

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

Одна запись наименования — это связка «ключ переименования + язык» и двенадцать форм слова: шесть падежей единственного числа и шесть падежей множественного.

Идентификация и область действия

Формы слова

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

Два уровня: глобальные наборы и наименования компании

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

Как формируется итоговый список

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

Сохранение: «создать или обновить»

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

Изменение и удаление одной записи

Отдельное наименование можно посмотреть, изменить и удалить по его идентификатору, но работает это только с записями текущей компании. Глобальные наборы через этот механизм недоступны: попытка обратиться к ним по идентификатору отвечает «не найдено», хотя в общем списке они видны.
При изменении отдельной записи смена ключа переименования или языка на пару, которая у этой компании уже занята, не отсекается заранее понятным сообщением — сохранение обрывается ошибкой на уровне базы. Безопаснее менять наименования через общий список, где работает режим «создать или обновить».
Удаление записи компании — это и есть «сброс к значению по умолчанию»: после удаления в общем списке снова появляется глобальный набор соответствующего типа компании (если он существует).
Отдельной кнопки «вернуть исходное название» в логике нет. Возврат к умолчанию — это именно удаление собственной записи.

Наименования по умолчанию

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

Права доступа

Управление со стороны платформы

В административной панели переименования разложены на два раздела, работающих поверх одних и тех же данных. Глобальные наименования — раздел платформы. В нём видны только записи без компании, поле компании в форме отсутствует и всегда остаётся пустым, зато можно выбрать типы компаний, которым набор предназначен, и увидеть их перечень в списке. Есть фильтр по ключу переименования. Формы слова сгруппированы в два блока — падежи единственного и множественного числа. Наименования компании — раздел для разбора конкретных ситуаций. В нём видны только записи с указанной компанией, компанию можно выбрать через поиск, а список фильтруется по компании (фильтра по ключу здесь нет). Набор полей тот же, что и в глобальном разделе.
Глобальный набор без указанных типов компаний не попадёт ни в один список компаний: отбор глобальных записей идёт строго по типу компании. Такая запись останется видимой только в административной панели.

Границы применения

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

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

Выдача значений по умолчанию фактически недоступна. Её адрес объявлен после адреса отдельного наименования и выглядит для системы как обращение к записи, у которой вместо номера стоит слово. Запрос уходит в обработчик одной записи и обрывается ошибкой, а не списком умолчаний, — строить на этой выдаче интерфейс нельзя.
Язык теряется при сборке списка.
  • Записи сворачиваются только по ключу переименования, без учёта языка, и выбрать язык при запросе нельзя.
  • Если по одному ключу заведены и русский, и английский наборы, в выдачу попадёт лишь один из них.
  • Собственная запись компании на одном языке перекроет глобальную запись на другом.
Правка отдельной записи может оборваться технической ошибкой. Смена ключа переименования или языка на пару, которая у компании уже занята, заранее не проверяется: вместо понятного сообщения о конфликте сохранение прерывается ошибкой базы. Через общий список, где работает режим «создать или обновить», такой ситуации не возникает.
Глобальную строку из списка нельзя изменить по её идентификатору. В общем списке видны идентификаторы глобальных наборов, но обращение к отдельному наименованию работает только с записями текущей компании — правка или удаление такой строки отвечает «не найдено». Чтобы перекрыть глобальное значение, нужно сохранить новую запись компании через общий список.
Менее критичные особенности:
  • Компания без указанного типа бизнеса не получает ни одного глобального набора: отбор умолчаний идёт строго по типу компании, поэтому в списке будут только те наименования, которые компания завела сама.
  • Ограничение уникальности «компания + язык + ключ» распространяется только на записи компании. Платформа может завести несколько глобальных записей на один ключ и язык, и тогда в списке компании победит непредсказуемая из них — порядок среди глобальных записей не задан.
  • Все падежные формы необязательны, включая базовую именительную: наименование можно сохранить с пустыми полями, и система не достроит недостающие формы и не предупредит об этом.
  • Глобальный набор, у которого не указаны типы компаний, не увидит ни одна компания — он останется доступен только в административной панели.
  • Список языков ограничен языками системы — русским и английским; завести наименование на другом языке нельзя.
  • В разделе наименований компании административной панели фильтр по ключу переименования объявлен, но перекрыт фильтром по компании, поэтому доступен только отбор по компании. В глобальном разделе фильтр по ключу работает.
Что полезно помнить о поведении раздела:
  • Сохранение через общий список всегда отвечает статусом «создано», даже когда фактически обновило уже существующую запись компании.
  • Возврат к названию по умолчанию выполняется удалением собственной записи компании: отдельного действия «сбросить» нет, а после удаления в списке снова появляется глобальный набор соответствующего типа компании.
  • Читать наименования могут сотрудники компании и субарендаторы, изменять — только пользователь с правами владельца компании. Выдача значений по умолчанию по правам открыта любому авторизованному пользователю, но её адрес недоступен из-за порядка объявления адресов.
  • Наименования не кэшируются: список каждый раз читается из базы, тогда как значения настроек компании обслуживаются кэшем со сбросом при изменении. Поэтому переименование видно сразу и не требует сброса кэша.
  • В разделе глобальных наборов административной панели поле компании в форму не выводится и остаётся пустым, поэтому создать через него переопределение для конкретной компании невозможно — для этого есть отдельный раздел наименований компании.
  • Серверная часть системы нигде не подставляет заданные наименования сама: данные о переименованиях читаются и пишутся только этим разделом настроек, а внутренние сущности и статусы аренды остаются прежними.
  • Список наименований и выдача значений по умолчанию отдаются целиком, без постраничной разбивки.

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

Глоссарий: Переименование сущностей

Полный перечень полей записи наименования, ключей переименования и падежных форм.

Настройки компании

Обзорная страница модуля: из чего складываются настройки компании и как они связаны между собой.

Реестр настроек компании

Полный перечень параметров компании: что можно включить или выключить, какие значения стоят по умолчанию и как настройки читаются и сохраняются.

Хранение и кэш настроек

Как значение настройки попадает в базу, как оно кэшируется по компаниям и почему изменение настройки сбрасывает кэш целиком.

Дополнительные поля

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

Настройки таблиц

Сохранённый состав, порядок и ширина колонок для таблиц интерфейса — отдельно по каждой таблице компании.

Промо-баннеры

Показ рекламных и информационных баннеров платформы внутри системы: частота показа, отметка о просмотре и исключение компаний.

Сквозная автонумерация

Общий счётчик компании, из которого берутся номера клиентов, артикулы создаваемых единиц инвентаря и номера документов.

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

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