Схемы таблиц
Компоненты платформы используют для отображения информации в табличном виде специальный компонент Таблица. Эта таблица, помимо стандартных возможностей ввода и редактирования данных, поддерживает поиск и сортировку, изменение ширины, заголовков, порядка расположения и видимости столбцов, и многое другое. Кроме того, поддерживается изменение оформления таблицы путем задания цвета текста и фона, жирности шрифта, выравнивания. Вы можете гибко настраивать внешний вид таблицы: использовать различные цвета для ячеек таблицы, задавать количество и изначальную видимость столбцов, разрешать или запрещать определенные действия с таблицей.
Рассмотрим основные принципы работы с настройками таблиц. Каждый компонент платформы содержит определенные типы таблиц: для плана аналитики это Таблица объектов, для журналов - Таблица операций и Подчиненная таблица. Для каждого типа таблицы можно задавать схемы оформления. Узел Схемы таблиц используется для хранения различных экземпляров схем, а в узле Схема, который присутствует в настройках отображения разных компонентов, задается ссылка на один из экземпляров. Одна и та же схема может одновременно использоваться несколькими таблицами одного типа. Схема используется для хранения всех текущих настроек таблицы. Например, пользователь может изменить оформление одного из столбцов таблицы (если ему разрешено это действие), и заданные настройки оформления будут сохранены в схеме.
Настройки схемы оформления включают в себя разрешения действий для всей таблицы и настройки отдельных столбцов. Разрешения действий определяют возможности изменения видимости и порядка, заголовков и оформления для всех столбцов таблицы, а также возможность автоматического изменения схемы в соответствии с изменением настроек компонента (последняя возможность будет рассмотрена ниже).
Настройки столбца включают в себя различные флаги (разрешения действий, автоматическая ширина, поиск, сортировка, и т.д.), имя, заголовок и ширину столбца, а также атрибуты оформления (цвета текста и фона, шрифт, выравнивание). Столбцы идентифицируются по именам. Заголовок столбца можно задать отдельно или использовать в качестве заголовка само имя. Для стандартных столбцов, жестко определенных типом таблицы, заголовок по умолчанию предоставляется платформой. В схему таблицы можно добавить любое количество столбцов. При этом добавление столбца в схему еще не означает его связи с какими-либо данными. Если Вы просто добавите столбец в схему - он будет отображаться в таблице, но ячейки столбца будут пустыми. Однако добавление, например, расчетного столбца с тем же именем позволяет заполнить столбец данными - а настройки столбца при этом берутся из схемы.
Помимо настроек столбцов, можно задавать атрибуты отдельных строк таблицы с помощью специального алгоритма. Атрибуты строки приоритетнее, чем атрибуты столбцов. Можно привести следующий пример использования: раскраска ячеек в основной таблице журнала определяется атрибутами столбцов, но выключенные операции требуется "покрасить" другим цветом. Следовательно, в алгоритме задания атрибутов строки необходимо указать настройки в зависимости от флага операции.
Существует еще один вид настроек таблицы - это теги форматирования, заданные для конкретных ячеек таблицы. Теги форматирования ячейки имеют наивысший приоритет.
Итак, перечислим приоритеты сложения настроек схемы таблицы (от высшего к низшему):
- Атрибут ячейки, заданный тегами форматирования
- Атрибут, возвращенный алгоритмом раскраски строки
- Атрибут, заданный для столбца
- Стандартный атрибут по умолчанию, заданный платформой
Автоматическое добавление новых столбцов и сброс настроек схемы
Как было сказано выше, схема хранит все текущие настройки таблицы. При этом, как Вы, вероятно, могли заметить, многие настройки, относящиеся к отображению таблицы, не обязательно должны задаваться в редакторе схемы. Например, с помощью менеджера настроек Вы можете создавать расчетные столбцы и задавать для них атрибуты отображения - эти столбцы будут отображаться с заданными атрибутами, даже если схема таблицы для данного компонента не задана вообще. Если впоследствии Вы создадите для этого компонента новую схему - этот столбец по умолчанию будет присутствовать в схеме с теми атрибутами, которые были для него заданы. Но если Вы измените атрибуты столбца в схеме - именно они будут использоваться для отображения столбца, даже если в настройках расчетного столбца заданы другие атрибуты. В контексте каждого состояния существуют настройки схемы таблицы по умолчанию. Набор столбцов при этом определяется соответствующими настройками компонента (например, для редактора плана аналитики в схему включаются стандартные столбцы "Код" и "Название", столбцы статических свойств и расчетные столбцы), атрибуты столбцов определяются платформой, а для расчетных столбцов - берутся индивидуальные атрибуты расчетного столбца, если они заданы.
Настройки схемы по умолчанию перекрываются настройками схемы, которые Вы задаете. Кнопка Сброс в редакторе схемы предназначена для возврата к настройкам схемы по умолчанию. Нажав эту кнопку, Вы сбросите все заданные Вами настройки, и настройки схемы будут определены платформой в разрезе состояния соответствующего компонента. При этом будут удалены все столбцы схемы, не связанные с данными, все заданные настройки оформления, все установленные разрешения действий. Настоятельно рекомендуем Вам учитывать тот факт, что сброс настроек - действие необратимое; Вы не сможете восстановить заданные ранее настройки после нажатия кнопки Сброс.
Добавление к компоненту каких-то данных, которые могут отображаться в качестве столбцов таблицы, по умолчанию находит отражение в схеме. Например, если Вы добавите к корневому объекту ветки плана аналитики новое свойство - в схеме таблицы для этой ветки появится соответствующий столбец. Аналогичным образом в схему добавляются расчетные столбцы. Если Вы не хотите, чтобы схема "реагировала" на изменение настроек компонента - в редакторе схемы отключите признак Автоматическое добавление новых столбцов. Если этот признак включен - при любом изменении в редакторе схемы происходит ее обновление в соответствии с текущим состоянием компонента, поэтому Вы не сможете, например, удалить из схемы расчетный столбец.