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

Что такое одна настройка таблицы

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

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

Описание одной колонки

Если в описании колонки прислать что-то сверх этих трёх полей, лишнее молча отбрасывается: сохранится и вернётся только ключ, ширина и активность. То же самое с лишними полями верхнего уровня — например, попытка передать компанию просто игнорируется.

Значения по умолчанию при чтении

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

Название таблицы: и адрес, и ограничение

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

Кто и что может делать

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

Жизненный цикл раскладки

Создание

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

Чтение

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

Изменение

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

Удаление

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

Что система не проверяет

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

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

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

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

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

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

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

Полный перечень полей раскладки таблицы и описания колонки.

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

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

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

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

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

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

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

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

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

Как компания меняет названия разделов и статусов под свою нишу, включая формы слова по падежам и числам.

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

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

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

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

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

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