Перейти к содержанию

ДП «Таблица» — справочник настроек

Полный перечень настроек ДП «Таблица»: где хранится каждая настройка, что она делает и какие есть ограничения.

Настройки таблицы (ExtParamTableCommonSettings)

Карточка ДП «Таблица» открывается на вкладке «Основные настройки» — общие поля параметра: имя, тип «Таблица», модуль, пример содержимого, регулярное выражение проверки и режим Excel. Опции, специфичные для таблицы, вынесены на вкладку «Дополнительные настройки».

Вкладка «Основные настройки» ДП «Таблица»: имя, тип, модуль, пример содержимого, регулярное выражение, режим Excel

Вкладка «Дополнительные настройки» в админке ДП.

Вкладка «Дополнительные настройки» ДП «Таблица»: ключевая колонка, режим отображения, экспорт/импорт, файловый провайдер, автосохранение, секции, ширина

Настройка Поле БД Тип Что делает Ограничения
Ключевой столбец KeyColumnId int FK → ExtParamTableSettings Столбец для сопоставления строк при импорте и для множественного выбора Допустимые типы: Текст, Число, Дата, Дата-время, Деньги, Телефон, Lookup, Выпадающий список, RowID. Без ключевого столбца импорт = полная перезапись
Использовать RowID как ключ UseRowIdAsKeyColumn bit При импорте строки сопоставляются по порядковому номеру
Отображать как DisplayMode int Режим: 0 = Таблица, 1 = Ссылка. Динамический набор полей — отдельный флаг DisplayAsDynamicSetOfFields (bit)
Максимальная высота (px) TableMaxHeight int Макс высота области строк; при превышении — вертикальный скролл. По умолчанию высота строк подстраивается автоматически под содержимое ячеек (учитываются переносы текста, превью изображений, кнопки управления). Минимальная высота строки — 150px. При большом числе строк включается постраничное отображение с серверной подгрузкой данных. Предусмотрена кнопка раскрытия таблицы в модальное окно.
Разрешить экспорт ExportEnabled bit Иконка экспорта в правом верхнем углу таблицы Экспортируются только столбцы с включённым ExportEnabled
Разрешить импорт ImportEnabled bit Иконка импорта в правом верхнем углу таблицы Импортируются только столбцы с включённым ImportEnabled; без ключевого столбца — полная перезапись
Загружать файлы в момент вкладывания UploadWhenFileAttach bit Файл загружается в БД сразу при выборе, а не при сохранении таблицы
Число параллельных загрузок NumberOfParallelDownloads int Количество одновременных загрузок файлов
Файловый провайдер FileProviderId int FK → FileProviders Провайдер хранения файлов для файловых колонок Учитывается только при ручном изменении, смарт-действии «Скачать файл» и Lua. Другие смарт-действия используют провайдер по умолчанию
Сохранять строку после редактирования (автосохранение) AutosaveEnabled bit После Add/Delete/Edit строка сохраняется автоматически; кнопка «Сохранить» скрыта Tab/Enter не сбрасывает выделение ячейки
Создавать строки в модальном окне AddNewRowModal bit При нажатии «+» открывается модальное окно для ввода значений
Включить секции столбцов IsSectionsEnabled bit Включает группировку колонок в секции Требует включённого автосохранения
Режим ширины по умолчанию TableWidthDefault int 0 = По умолчанию, 1 = По размеру экрана, 2 = По содержимому, 3 = По содержимому и заголовкам
Скрыть кнопку добавления строк HideAddRowsButton bit Кнопка «+» скрыта; строки можно добавлять только через множественный выбор
Табличный вид иерархии множественного выбора IsHierarchyMultiselect bit В окне множественного выбора показывает иерархическое дерево вместо плоского списка (если ключевой столбец ссылается на иерархический Lookup). Сортировка и группировка в режиме дерева недоступны, фильтрация работает. Дерево раскрывается до уже выбранных строк; если ничего не выбрано — открывается только корневой уровень Требует иерархического Lookup в ключевом столбце
Хранить html представление StoreHtmlPresentation bit Сохранение HTML-представления в GZip для отображения в списке задач категории Без этого флага значение не пишется в ExtParamValues.ExtParamValueGZip. Ограничение размера: HTML-снимок ограничен 6900 байт; строки, не поместившиеся в лимит, тихо отбрасываются без предупреждения. Фактическое количество строк в снимке может быть меньше RowsToRender. Данные в таблице сохраняются полностью — ограничение касается только отображения в списке задач категории и Excel-экспорта оттуда. В карточке задачи все строки отображаются корректно.
Режим Excel IsExcelMode bit Функция в разработке
Столбец для множественного выбора MultiselectColumnId int FK → ExtParamTableSettings Ключевой Lookup-столбец для режима множественного выбора Тип столбца = Lookup

При режиме «Отображать как» = динамический набор полей (DisplayAsDynamicSetOfFields) таблица показывается не сеткой, а набором полей: каждая строка выводится отдельным блоком со своими подписями столбцов, строки добавляются кнопкой «Добавить строку».

ДП «Таблица» в виде набора полей: каждая строка — блок с подписями столбцов и кнопкой «Добавить строку»

Типы столбцов (ExtParamTableSettings.Type)

Доступные типы столбцов таблицы и их особенности:

Тип Type (tinyint) Особенности
Текст 0 Маска, столбец шаблона значения
Большой текст без форматирования 1 Textarea, без маски
Выпадающий список 2 Опции в ExtParamTableOptions; или ссылка на ДП через ReferencedExtParamId
Текст с маской 3 Маска: Email, Phone, пользовательскые через спецсимволы (0 = цифра, a = буква, * = любой)
Деньги 4 Поддержка итогов (EnableTotal); диапазон ±922 337 203 685 476.99
Дата и время 5 Формат DD-MM-YYYY hh:mm для стандартного значения
Дата 6 Формат DD-MM-YYYY для стандартного значения
Телефон 7 Форматированное отображение
Lookup 8 Настройки через ReferencedExtParamId (→ ExtParams) и LookupParamSettingID (→ LookupParamSettings); поддержка смарт-фильтров, каскадных зависимостей
Чекбокс 9 bool
Число 10 Поддержка итогов (EnableTotal); диапазон ±99 999 999 999 999; настройки через ReferencedExtParamNumberSettings
Файл 11 Мультифайл, сканирование, превью, логирование действий; провайдер наследуется от таблицы
Виртуальная 12 Только для чтения; ссылка на Lookup-столбец + поле категории; наследует настройки Lookup (включая «Отображать как текст»); режим «Невидимая» не поддерживается
Шаблонная 13 Mustache-подобный шаблон: {{c123.stringValue}}; регистрозависимо; без фильтрации
Блок кнопок 14 JS-выражение или смарт-пакет; видимость/активность по колонкам или смарт-фильтру; без фильтрации
Выбор пользователей 15 Настройки через ReferencedExtParamId (→ ExtParams типа Users); перенос строк влияет на множественный выбор

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

Вкладка «Столбцы» в админке ДП — список всех столбцов таблицы с типом, порядком, сортировкой, маской, режимом и значением по умолчанию; кнопка «Создать» добавляет новый столбец.

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

Клик по столбцу открывает карточку с его полными настройками.

Карточка настройки столбца: имя, порядок, тип, секция, режим, ширина, прикрепление, экспорт

Настройка Поле БД Тип Что делает
ID ID int PK Идентификатор столбца
Имя Name varchar Название столбца в UI
Порядок OrderID int Порядок расположения; 0 = по порядку создания
Тип Type tinyint Тип данных (см. таблицу выше)
Режим Mode (в API) / Locked + IsHidden (в БД) Необязательно / Обязательно / Только для чтения / Скрытая / Невидимая
Значение по умолчанию DefaultValue varchar Пустое / Фиксированное / смарт-выражение (DefaultValueSmartExpressionId)
Смарт-выражение SmartExpressionId int FK Вычисление значения; вычисляется после сохранения «не-смарт» столбцов; порядок — по OrderID. При наличии смарт-выражения режим «Обязательно» для столбца недоступен
Маска Mask varchar Для текстовых столбцов; новая таблица: 0=цифра, a=буква, *=любой
Столбец шаблона значения TemplateColumnId (в ExtParamTableTextColumnSettings) int FK Ссылка на Lookup/Текст столбец с шаблоном RegEx; только для типа Текст
Ширина ColumnWidth int 0 = авто, 1/2/4/6 = диапазон растягивания, другие = px
Макс высота Устаревшее, не используется
Выравнивание Align tinyint 0=лево, 1=центр, 2=право, 3=ширина (не поддерж. в новой таблице)
Прикрепить слева Locked int Фиксация столбца при горизонтальной прокрутке
Итого EnableTotal bit Строка итогов под таблицей; только Число и Деньги
Сортировка по умолчанию DefaultSort int (enum SortTypeEnum) 0 = нет (None), 1 = по возрастанию (Ascending), −1 = по убыванию (Descending); только один столбец; пересортировка срабатывает автоматически после любого изменения значения в строке (ручное редактирование или смарт-кнопка)
Участвует в группировке, порядок DefaultGroupingOrder int NULL Номер позиции в группировке таблицы по умолчанию; пусто — столбец не участвует в группировке. Чем больше число, тем глубже уровень вложенности. Не применяется при включённом режиме секций — приоритет за секциями
Разрешить экспорт ExportEnabled bit Столбец участвует в экспорте; скрытые не экспортируются
Разрешить импорт ImportEnabled bit Столбец участвует в импорте; скрытые и только для чтения не импортируются
Перенос строк UseLineBreak (в API) bit Текст переносится по ширине вместо обрезки; для Users — ограничение одним пользователем
Название секции SectionId int FK → ExtParamTableSections Принадлежность к секции
Видимость в закрытой секции IsVisibleInClosedSection (в API) bit Столбец виден когда секция свёрнута
Видимость в открытой секции IsVisibleInOpenSection (в API) bit Столбец виден когда секция развёрнута
Участвует в поиске IsUsedInSearch (в БД) bit Управляет двумя механизмами: (1) Поиск «в полях» — столбец включается в полнотекстовый поиск по задачам категории в режиме «в полях»; (2) Фильтр «Содержит» на колонке ДП Таблица в списке задач категории — поиск ведётся только по строкам столбцов, у которых флаг включён. Если флаг отключён у всех столбцов, фильтр «Содержит» вернёт 0 задач. Фильтры «Нет значения» и «Есть значение» от этого флага не зависят. Диагностика: если фильтрация по содержимому ДП Таблица не работает / поиск «в полях» не находит значения из таблицы — первым делом проверить этот флаг. Также требуется настроенный шаблон (ItemTemplate) и StoreHtmlPresentation = true. См. Списки задач → Решение проблем (§ 1.3).
Логировать действия с файлами IsLogFileReadsAction (в API) bit Запись в журнал Диск; только для типа Файл
Локализованное название LocalizedNameId int FK → LocalizedBusinessObjects Перевод названия столбца
Ссылка на ДП ReferencedExtParamId int FK → ExtParams Для Lookup, Select, Users, Number — ДП-источник настроек
Виртуальная: Lookup-столбец VirtualColumnReferencedLookupColumnId int FK Lookup-столбец, из которого берётся ссылка на задачу
Виртуальная: ДП категории VirtualColumnReferencedExtParamId int FK → ExtParams Поле категории для отображения
Настройки Lookup LookupParamSettingID int FK → LookupParamSettings Полные настройки Lookup (фильтры, каскады, вид)
Источник данных DataSource, DataValueField, DataTextField varchar Для Выпадающего списка — SQL или набор опций
Set of elements as DataSource SetOfElementsAsDataSource (в API) bit Опции берутся из ExtParamTableOptions

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

Дополнительные настройки столбцов по типам

Lookup

Настраивается через создание/выбор ДП типа Lookup (ReferencedExtParamId). Наследует все настройки ДП Lookup: категория, смарт-фильтр, каскадные зависимости, вид.

Выбор пользователей

Настраивается через создание/выбор ДП типа Users (ReferencedExtParamId). Настройки: группы, фильтры пользователей.

Выпадающий список

Варианты: через ExtParamTableOptions (локальные опции) или через ReferencedExtParamId → ДП типа List.

Файл

Настройки файлового столбца:

Настройка Описание
Разрешить сканирование Иконка сканирования при добавлении строки
Создавать системные копии при акцепте подписи Системная копия файла при подписании
Отображать превью для картинок Превью с размерами; не работает для мультифайл
Мультифайл Несколько файлов в ячейке
Работа с Word Наследует настройки ДП «Файл» (блок «Работа с файлами Word»)

Число

Настраивается через ДП типа Число (ReferencedExtParamId). Диапазон: ±99 999 999 999 999.

Деньги

Настраивается через ДП типа Деньги (ReferencedExtParamId). Диапазон: ±922 337 203 685 476.99.

Виртуальная

Столбец только для чтения, отображающий поле из задачи, на которую ссылается Lookup-столбец:

Настройка Описание
Lookup-столбец Уже настроенный Lookup-столбец в этой таблице
ДП категории Параметр из категории, на которую смотрит Lookup
Превью (для файлового ДП) Высота/ширина превью, флаг отображения

Режим: только для чтения. Режим «Невидимая» не поддерживается.

Если виртуальная колонка отображает значение ДП из связанной задачи, то при изменении этого ДП значение в таблице обновляется в реальном времени у всех пользователей, у которых задача открыта сейчас или была открыта в течение последнего часа. Автообновление не работает для проектных ДП-Таблиц (настроенных через ProjectTableJSONExtParamID).

Шаблонная

Mustache-подобный шаблон для объединения в одном столбце данных из нескольких других столбцов таблицы. Синтаксис: текст1 {{c123.stringValue}} текст2 {{c456.stringValue}}, где 123 и 456 — ID столбцов. Запись регистрозависима (stringValue — верно, StringValue — нет). Принципы шаблонов — по документации Mustache. В пользовательском режиме фильтрация по шаблонному столбцу невозможна.

Блок кнопок

Столбец с кнопками действий (JS-выражение или смарт-пакет):

Настройка Описание
Имя Текст на кнопке (если нет иконки) или подсказка (если есть)
Описание Подсказка при отсутствии иконки
Иконка Из набора /spa/content-icons
JavaScript выражение JS-код; доступны event.originalEvent, event.data, event.block.reload/freeze/unfreeze. Через event.data доступны поля строки по названию столбца таблицы (например, event.data.isActive)
Колонка идентификатора (int) Столбец, возвращающий ID объекта; в смарт-пакете доступен как параметр «Идентификатор объекта». Имя столбца должно точно совпадать с именем поля в возвращаемом наборе данных (например, TaskID), регистрозависимо
Пакеты действий Смарт-пакет по нажатию; в его смарт-выражениях доступны параметры события: идентификатор объекта (из столбца идентификатора или ID строки), строка с JSON-объектом, ID кнопки, параметры текущего пользователя
URL Смарт-выражение → URL для модального окна после смарт-пакета. Адрес относительный (/spa/tasks/12345) или абсолютный (https://…/spa/tasks/12345); абсолютный — только по https
Колонка видимости (bool) Столбец, определяющий видимость кнопки
Колонка активности (bool) Столбец, определяющий активность кнопки
Сообщение при успехе Текст после успешного выполнения
Сообщение при ошибке Текст при ошибке
Информационное сообщение при нажатии Подтверждение перед выполнением
Режим видимости Смарт-фильтр: Блокировать (disabled) или Скрыть (hidden)

JS или смарт-пакет — взаимоисключающие. Фильтрация по столбцу невозможна. При нажатии все кнопки автоблокируются; разблокировка через event.block.unfreeze(). Вызов методов веб-сервисов из JS-выражений описан в отдельном разделе руководства администратора.

Секции столбцов (ExtParamTableSections)

Группировка столбцов в сворачиваемые секции:

Вкладка «Настройка секций колонок»: список секций с порядком и признаком «по умолчанию развёрнуто»

Настройка Поле БД Описание
Имя SectionName Название секции
Порядок SectionOrder Порядок расположения
По умолчанию развёрнуто IsDefaultExpanded Секция развёрнута или свёрнута

Требования: включён флаг IsSectionsEnabled и AutosaveEnabled в настройках таблицы.

Для каждого столбца: SectionId + IsVisibleInClosedSection + IsVisibleInOpenSection.

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

Таблица с секциями столбцов: колонки сгруппированы под общими заголовками секций

Множественный выбор (Multiselect)

Настройка: MultiselectColumnId → Lookup-столбец в таблице.

Вкладка «Настройки множественного выбора»: какие столбцы показывать при множественном выборе, их ширина и порядок

Во вкладке «Настройки множественного выбора»: для каждого столбца — флаг «Использовать в множественном выборе», ширина, порядок, прикрепление.

Параметры отдельного столбца в этом списке правятся в окне «Редактирование множественного выбора».

Окно «Редактирование множественного выбора»: имя столбца, флаг «Использовать в множественном выборе», ширина, порядок, прикрепление

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

Вкладка «Вид множественного выбора»: стиль, выравнивание, тип фильтра, доступность, видимость, порядок и закрепление столбцов

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

Кнопка «Множественный выбор» на панели инструментов таблицы

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

Окно множественного выбора: список значений с галочками и кнопка «Применить»

Кнопка множественного выбора не отображается в следующих случаях:

  • В задаче активны настройки «Ограничить добавление новых строк» или «Ограничить удаление строк» (из настроек ДП в подкатегории).
  • Таблица открыта в НТФ (форме постановки задачи) — кнопка не отображается до момента создания задачи. Это ожидаемое ограничение, не баг.

Большой объём значений. Если ключевой Lookup-столбец смотрит на большой справочник или категорию с множеством задач, окно множественного выбора станет неудобным. Ограничить набор отображаемых значений можно смарт-фильтром в настройках Lookup-столбца.

Права доступа к столбцам

По группам пользователей (ExtParamTableSettingsInSubcatGroupPermissions)

Настраивается для каждого столбца и подкатегории. Режим контроля: GroupAccessControlMode.

По статусам задачи (ExtParamTableSettingsInSubcatStatePermissions)

Настраивается для каждого столбца и подкатегории. Включается флагом StateAccessControlEnabled.

Тип доступа: чтение или запись.

Динамическая обязательность

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

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

Вкладка «Динамическая обязательность»: карточка правила (Активный, Целевая колонка, Логика условий), условия ещё не заданы

Кнопка «Добавить правило» создаёт новое правило; для одной таблицы можно создать несколько правил — они хранятся и применяются независимо. Поля правила:

Поле Описание
Активный Правило участвует в проверке. Со снятым флажком правило сохраняется, но не применяется
Целевая колонка Столбец, который становится обязательным при выполнении условий правила
Логика условий «И (все условия)» — правило срабатывает только при выполнении всех условий; «ИЛИ (любое условие)» — при выполнении хотя бы одного
Условия Список проверок (кнопка «Добавить условие»); пока их нет — «Нет условий»

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

Условие правила: столбец, оператор «= (равно)» и значение, кнопка × для удаления условия

Операторы сравнения: = (равно), (не равно), > (больше), < (меньше), (больше или равно), (меньше или равно), пусто, не пусто, содержит, не содержит.

Правило удаляется кнопкой «Удалить» в его карточке, отдельное условие — кнопкой × рядом с ним.

Хранение: правила — в ExtParamTableRequiredRules (TargetColumnId, LogicOperator, IsActive), условия — в ExtParamTableRequiredConditions (RuleId, ConditionColumnId, CompareOperator, CompareValue).

Условное форматирование колонок (ExtParamTableColumnFormattingRules)

Позволяет раскрашивать ячейки таблицы по условиям (по аналогии с Excel): «больше N — красным», «совпадает с X — зелёным», «в диапазоне A..B — жёлтым» и т.п. Правила задаются для каждой колонки ДП Таблица.

Где настраивается: в админке — на странице настроек ДП Таблица (см. ниже «Интерфейс настройки в админке»); программно — через Admin API (маршрут /api/admin/extparams/table/{tableId}/formatting-rules). Таблица БД: dbo.ExtParamTableColumnFormattingRules (FK → ExtParamTableSettings.Id).

Интерфейс настройки в админке

Редактор правил встроен в страницу настроек ДП: когда открыты настройки ДП с типом Таблица, появляется секция управления правилами форматирования. Правила сохраняются вместе с остальными настройками ДП.

Что видит администратор:

  • Кнопка «+ Добавить правило» в шапке секции.
  • Список карточек-правил (если правил нет — пустое состояние «Правил нет»). Карточки автоматически пересортированы по приоритету.
  • В каждой карточке: заголовок «Правило N», чекбокс «Активно» и кнопка «Удалить» (с подтверждением; удаляется сразу).

Поля карточки:

Поле Контрол Поведение
Колонка выпадающий список с поиском Список только форматируемых колонок: Число, Деньги (числовые) и Текст (текстовая). Остальные типы колонок в список не попадают
Тип правила выпадающий список с поиском Состав зависит от типа выбранной колонки: для числовой — 11 вариантов (больше/меньше/между/вне диапазона + минимум/максимум + дубликаты), для текстовой — 7 вариантов (содержит/начинается/… + дубликаты). При смене колонки несовместимый тип сбрасывается на первый доступный
Значение X число (для числовых) / текст (для текстовых) Скрыто для «Минимум»/«Максимум»/«Дубликаты». Обязательное для остальных
Значение Y число / текст Появляется только для «Между»/«Вне диапазона». Обязательное. Должно быть больше X (иначе ошибка «X должен быть меньше Y»)
Цвет выпадающий список 12 вариантов (Default, Primary, Red, …, Grey)
Тон выпадающий список 5 вариантов (None, White, Light, Normal, Dark)
Приоритет число, ≥0 Обязательное. При выходе из поля карточки пересортировываются по новому значению

Сохранение. Изменения правил применяются при сохранении формы ДП: новые правила создаются, удалённые — удаляются, изменённые — обновляются. При ошибке любой операции показывается сообщение.

Поля правила

Состав одного правила условного форматирования (хранится в ExtParamTableColumnFormattingRules):

Поле БД Тип Описание
Id int identity PK
ColumnId int NOT NULL, FK → ExtParamTableSettings.Id На какую колонку правило
RuleType tinyint, enum EpTableFormattingRuleType Тип правила — см. ниже
ValueX nvarchar(500) NULL Первое значение условия (число/текст); для Min/Max/Duplicates — не используется
ValueY nvarchar(500) NULL Второе значение условия (для Between/Outside — верхняя граница); иначе не используется
Color nvarchar(50) NOT NULL Цвет — см. ниже
ColorTone nvarchar(50) NOT NULL Тон цвета — см. ниже
Priority int NOT NULL Приоритет: при пересечении условий первым применяется правило с меньшим значением
IsActive bit DEFAULT 1 Активность правила

Типы правил (RuleType)

Числовые — применимы только к колонкам типа Число и Деньги:

Значение Описание Что требуется
GreaterThan (0) Значение > X ValueX
LessThan (1) Значение < X ValueX
GreaterOrEqual (2) Значение ≥ X ValueX
LessOrEqual (3) Значение ≤ X ValueX
Equal (4) Значение = X ValueX
NotEqual (5) Значение ≠ X ValueX
Between (6) X ≤ Значение ≤ Y ValueX + ValueY
Outside (7) Значение < X или > Y ValueX + ValueY
Min (20) Минимум в колонке
Max (21) Максимум в колонке

Текстовые — применимы только к колонкам типа Текст, Большой текст без форматирования, Текст с маской:

Значение Описание Что требуется
Contains (10) Содержит подстроку ValueX
NotContains (11) Не содержит ValueX
StartsWith (12) Начинается с ValueX
EndsWith (13) Заканчивается на ValueX
TextEqual (14) Точное равенство (строка) ValueX
TextNotEqual (15) Точное неравенство (строка) ValueX

Универсальные — любой тип колонки:

Значение Описание Что требуется
Duplicates (22) Подсветить дубликаты в колонке

Цвет (Color) и тон (ColorTone)

Color: Default, Primary, Red, Pink, Purple, Green, Yellow, Orange, Blue, Cyan, Brown, Grey — 12 значений.

ColorTone: None, White, Light, Normal, Dark — модификатор насыщенности.

Это те же палитры, что используются в портальных виджетах. В БД оба поля хранятся как строковые имена значений (Color, ColorTone).

Методы API

Управление правилами форматирования через Admin API:

Метод Маршрут Назначение
GET /api/admin/extparams/table/{tableId}/formatting-rules Все правила для ДП Таблица (включая неактивные)
POST /api/admin/extparams/table/{tableId}/formatting-rules Создать правило
PUT /api/admin/extparams/table/{tableId}/formatting-rules/{ruleId} Обновить
DELETE /api/admin/extparams/table/{tableId}/formatting-rules/{ruleId} Удалить

tableId — ID самого ДП Таблица (ExtParams.Id), а не ID колонки. ID колонки передаётся в теле запроса.

Валидация при сохранении

При сохранении правила проверяется:

Проверка Когда срабатывает
ДП с указанным tableId имеет тип «Таблица» Передан ID не-таблицы
Колонка принадлежит этой таблице Попытка создать правило для чужой колонки
Тип правила совместим с типом колонки Например, «Содержит» для колонки Число
Тип правила — допустимое значение Передан неизвестный код правила
Цвет и тон — допустимые значения Передан неизвестный цвет/тон
ValueX указан для правил, требующих X Пустой ValueX для «Больше» и пр.
ValueY указан для «Между»/«Вне диапазона» Пустой ValueY
ValueX пустой для «Минимум»/«Максимум»/«Дубликаты» Лишний ValueX
ValueY пустой для всех правил, кроме «Между»/«Вне диапазона» Лишний ValueY
Не более 50 правил на одну колонку Попытка создать 51-е правило
При изменении/удалении: правило принадлежит таблице из запроса tableId не совпадает с фактической таблицей правила

При нарушении правило не сохраняется, API возвращает ошибку с локализованным сообщением (ru/en).

Применение правил в таблице

Алгоритм для каждой ячейки:

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

Агрегаты «Минимум»/«Максимум»/«Дубликаты» считаются по видимым строкам таблицы; группы и строки итогов исключаются. Поэтому при фильтрации или группировке набор видимых строк меняется и подсветка минимума/максимума пересчитывается.

Особенности правил:

  • «Между»/«Вне диапазона»: порядок ValueX и ValueY на результат не влияет.
  • «Содержит»/«Не содержит»/«Начинается с»/«Заканчивается на» при пустом значении не срабатывают (и через интерфейс сохранить такое правило нельзя).
  • «Точное равенство»/«Точное неравенство» работают и с пустой строкой как с допустимым значением.

Журнал изменений

Любое изменение правила (создание, изменение, удаление) записывается в журнал администрирования. Журнал доступен через интерфейс «Журнал администрирования» или таблицу AdminActionLog.

Ограничения

Что нужно учитывать при настройке условного форматирования:

  • Форматирование поддерживается только для колонок Число, Деньги и Текст. Для остальных типов колонок (Большой текст без форматирования, Текст с маской, Lookup, MultiLookup, Дата и т.д.) правила в интерфейсе создать нельзя. У столбцов Lookup и MultiLookup цвет берётся из связанной задачи или справочника по прежней логике, а не из этой вкладки.
  • «Минимум»/«Максимум»/«Дубликаты» считаются по видимым строкам, а не по всем данным таблицы. При фильтрации или группировке набор видимых строк меняется — подсветка пересчитывается.
  • Лимит 50 правил на одну колонку. При попытке создать 51-е правило — ошибка.
  • Дубликаты правил не запрещены: можно создать два правила с одинаковым условием, различающихся только приоритетом и цветом; сработает то, что выше по приоритету. При одинаковом приоритете применяется первое совпавшее правило (в порядке создания).
  • Для правил «Между»/«Вне диапазона» значение Y должно быть строго больше X.

Шаблон в табличных представлениях (ExtParamTableTemplate)

Для отображения ДП Таблица в списке задач категории. Настраивается на вкладке «Шаблон в табличных представлениях»: флаги «Использовать шаблон», «Отображать кол-во строк», «Хранить html представление», число отображаемых строк и заголовок.

Вкладка «Шаблон в табличных представлениях»: флаги использования шаблона и хранения HTML, число строк, заголовок

Настройка Поле БД Описание
Использовать шаблон Enabled Активация шаблона
Отображать количество строк RenderTotalRows Показ общего числа строк
Количество отображаемых строк RowsToRender Сколько первых строк выводить; 0 = пустой объект, без HTML. При 0 изменения значений ДП также не порождают UPDATE-запросов к ExtParamValues (экономия БД при больших таблицах без шаблона)
Заголовок HeaderTemplate HTML в начале
Шаблон строки ItemTemplate HTML с тегами <cell columnid="..."> для каждой строки
Разделитель SeparatorTemplate HTML между строками
Футер FooterTemplate HTML в конце
Хранить html представление StoreHtmlPresentation в CommonSettings GZip-хранение в ExtParamValues.ExtParamValueGZip
Синхронизировать существующие задачи Пересчёт HTML для существующих задач при изменении шаблона

Шаблон строки собирается из тегов <cell columnid="..."> подстановкой названий столбцов; ниже задаются разделитель между строками и футер.

Шаблон строки таблицы из тегов <cell columnid> с подстановкой столбцов, разделитель и футер

HTML-представление хранится в ExtParamValues.ExtParamValueGZip. При денормализации → ExtParamNativeValue. Фоновое задание TableExtParamValuesGZipCompressJob каждые 3 минуты сжимает по 10000 строк.

Значение ДП Таблица не хранится в ExtParamValues.ExtParamValue и TasksInSubcatXXXDenormalized.ExtParamXXXValue. Наличие в ExtParamXXXNativeValue зависит от флага «Хранить html представление».

Импорт/экспорт Excel

Экспорт: выгрузка в XLS. Первая строка — названия столбцов. Lookup — текст задачи. Файл — ссылка на файл.

Импорт: XLS/XLSX, одна страница.

Режим Описание
С заголовками (опция включена) Сопоставление по названиям столбцов
Без заголовков (опция выключена) Сопоставление по порядку столбцов

Важно:

  • Без ключевого столбца: полная перезапись (все строки удаляются, загружаются новые)
  • С ключевым столбцом: строки матчатся по ключу (обновление + добавление новых)
  • Файловые столбцы при импорте игнорируются
  • Lookup при импорте: можно использовать текст задачи или ID задачи
  • Скрытые и только для чтения столбцы не импортируются
  • Имена столбцов не должны содержать лишних пробелов

Поведение при сбое импорта

Если при импорте Excel возникает исключение на уровне БД (например, на PostgreSQL — Npgsql.PostgresException), запрос завершается с HTTP 200, в ImportResultDto.Errors возвращается сообщение «Ошибка импорта.», и существующий диалог результатов импорта показывает его поверх МТФ. Технические детали (код, inner exception, стек) попадают только в журнал приложения. Данные таблицы при этом не меняются — транзакция не коммитится. Ранее (до 2.268.x) такие исключения уходили как HTTP 500 и порождали вторичный ObjectDisposedException из-за разрушения DI-scope.

Значение по умолчанию — два уровня

Для ДП «Таблица» есть два независимых механизма задания дефолтных значений.

1. Предзаполненные строки при создании задачи (уровень ДП в категории)

Настраивается в AdminSPA на странице настроек ДП категории → поле «Значение по умолчанию». При создании задачи (НТФ) таблица будет открыта с уже заполненными строками.

Формат: JSON-строка вида {"rows":[{"c{ID}":"значение",...},...]}, где ID — числовой идентификатор столбца (ExtParamTableSettings.ID).

Узнать ID столбца: в AdminSPA → настройки ДП → вкладка «Столбцы» → навести на название столбца или открыть инструменты разработчика браузера (Network → запрос настроек ДП, поле id в объекте столбца).

Примеры:

// Одна предзаполненная строка, столбцы 123 и 456
{"rows":[{"c123":"Текст по умолчанию","c456":"42"}]}

// Две строки
{"rows":[{"c123":"Строка 1"},{"c123":"Строка 2"}]}

Форматы для конкретных типов столбцов:

  • Текст, Большой текст — строка: "Привет"
  • Число, Деньги — строка с числом: "42" или "3.14"
  • Дата — "DD-MM-YYYY", например "01-01-2026"
  • Дата и время — "DD-MM-YYYY hh:mm", например "01-01-2026 09:00"
  • Чекбокс — "true" / "false"
  • Lookup — ID задачи: "12345"
  • Выпадающий список — значение опции: "Опция 1"

Этот JSON перекрывает глобальный DefaultValue самого ДП. Если таблица находится в категории с настроенным JSON — используется он; глобальный дефолт ДП игнорируется.

2. Значение по умолчанию при добавлении строки пользователем (уровень столбца)

Настраивается на вкладке «Столбцы» → поле «Значение по умолчанию» конкретного столбца (ExtParamTableSettings.DefaultValue или DefaultValueSmartExpressionId). Применяется каждый раз, когда пользователь добавляет новую строку в таблицу — уже существующие строки не затрагиваются.

Поддерживает смарт-выражение (FK DefaultValueSmartExpressionId) для динамического вычисления.

Варианты значения: «Оставить пустым» (только для новой таблицы, формат 2.256+), фиксированное значение или смарт-выражение. Фиксированное значение задаётся в особом формате, отличном от смарт-выражений:

  • Дата — DD-MM-YYYY;
  • Дата и время — DD-MM-YYYY hh:mm;
  • Lookup — {"ID задачи":"Текст"} (например {"123":"Продажа"});
  • Выпадающий список — {"Значение":"Текст"} (например {"2":"Встреча"}).