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

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

Полный перечень настроек ДП Таблица с указанием где хранится, что делает, ограничения

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

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

Настройка (UI) Поле БД Тип Что делает Ограничения
Ключевой столбец 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 Кнопка «+» скрыта; строки можно добавлять только через множественный выбор
Хранить html представление StoreHtmlPresentation bit Сохранение HTML-представления в GZip для отображения в гриде категории Без этого флага значение не пишется в ExtParamValues.ExtParamValueGZip. Ограничение размера: HTML-снимок ограничен 6900 байт; строки, не поместившиеся в лимит, тихо отбрасываются без предупреждения. Фактическое количество строк в снимке может быть меньше RowsToRender. Данные в таблице сохраняются полностью — ограничение касается только отображения в гриде и Excel-экспорта из грида. В карточке задачи все строки отображаются корректно.
Режим Excel IsExcelMode bit Функция в разработке
Столбец для множественного выбора MultiselectColumnId int FK → ExtParamTableSettings Ключевой Lookup-столбец для режима multiselect Тип столбца = Lookup

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

Тип (UI) 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)

Вкладка «Столбцы» в админке ДП.

Настройка (UI) Поле БД Тип Что делает
ID ID int PK Идентификатор столбца
Имя Name varchar Название столбца в UI
Порядок OrderID int Порядок расположения; 0 = по порядку создания
Тип Type tinyint Тип данных (см. таблицу выше)
Режим Mode (в DTO) / Locked + IsHidden (в БД) Необязательно / Обязательно / Только для чтения / Скрытая / Невидимая
Значение по умолчанию DefaultValue varchar Пустое / Фиксированное / Smart-выражение (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 (в DTO) / DefaultGroupingOrder (в БД) tinyint 0=нет, 1=по возрастанию, 2=по убыванию; только один столбец; пересортировка срабатывает автоматически после любого изменения значения в строке (ручное редактирование или смарт-кнопка)
Разрешить экспорт ExportEnabled bit Столбец участвует в экспорте; скрытые не экспортируются
Разрешить импорт ImportEnabled bit Столбец участвует в импорте; скрытые и readonly не импортируются
Перенос строк UseLineBreak (в DTO) bit Текст переносится по ширине вместо обрезки; для Users -- ограничение одним пользователем
Название секции SectionId int FK → ExtParamTableSections Принадлежность к секции
Видимость в закрытой секции IsVisibleInClosedSection (в DTO) bit Столбец виден когда секция свёрнута
Видимость в открытой секции IsVisibleInOpenSection (в DTO) bit Столбец виден когда секция развёрнута
Участвует в поиске IsUsedInSearch (в БД) bit Управляет двумя механизмами: (1) Поиск «в полях» — столбец включается в полнотекстовый поиск по задачам категории в режиме «в полях»; (2) Фильтр «Содержит» на колонке ДП Таблица в гриде категории — поиск ведётся только по строкам столбцов, у которых флаг включён. Если флаг отключён у всех столбцов, фильтр «Содержит» вернёт 0 задач. Фильтры «Нет значения» и «Есть значение» от этого флага не зависят. Troubleshooting: если фильтрация по содержимому ДП Таблица не работает / поиск «в полях» не находит значения из таблицы — первым делом проверить этот флаг. Также требуется настроенный шаблон (ItemTemplate) и StoreHtmlPresentation = true. См. docs/domains/grids/support-guide.md § 1.3.
Логировать действия с файлами IsLogFileReadsAction (в DTO) 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 (в DTO) 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
Превью (для файлового ДП) Высота/ширина превью, флаг отображения

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

Шаблонная

Mustache-подобный шаблон. Синтаксис: {{c123.stringValue}} где 123 = ID столбца. Регистрозависимо. Фильтрация по столбцу невозможна.

Блок кнопок

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

AccessType: чтение / запись.

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

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

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

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

Редактор правил встроен в страницу настроек ДП (AdministrationExtParamsSettings → AdminExtParamDetailSettings). Когда открыты настройки ДП с типом Таблица, в форме появляется компонент TableFormattingRulesEditorComponent (pages/admin/administration-ext-params-settings/.../table-formatting-rules-editor/). Он же используется как @ViewChild родительской формы — поэтому правила сохраняются вместе с остальными настройками ДП.

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

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

Поле Контрол Поведение
Колонка dropdown с поиском Список только тех колонок, чей тип распознан как форматируемый: Number / Money / NumericValue → числовая; Text → текстовая. Остальные типы колонок (Textarea, MaskedTextBox, Lookup, Date и т.д.) в дропдаун не попадают
Тип правила dropdown с поиском Состав зависит от типа выбранной колонки: для числовой — 11 опций (GreaterThan...Outside + Min/Max + Duplicates), для текстовой — 7 опций (Contains...TextNotEqual + Duplicates). При смене колонки текущий тип, если несовместим, сбрасывается на первый из доступных
Значение X число (для числовых) / текст (для текстовых) Скрыто для Min/Max/Duplicates. Обязательное для остальных
Значение Y число / текст Появляется только для Between/Outside. Обязательное. Доп. валидация: X < Y (иначе ошибка «X должен быть меньше Y» — xGreaterThanY). Заметим: фронт требует строгое X < Y, тогда как бэкенд validateValueRange нормализует через min/max — расхождение в строгости
Цвет dropdown 12 опций (Default, Primary, Red, …, Grey)
Тон dropdown 5 опций (None, White, Light, Normal, Dark)
Приоритет число, ≥0 Обязательное. При blur — автосортировка карточек по новому значению

Сохранение. При сохранении формы ДП компонент собирает текущее состояние правил и делает диффы относительно originalRules (загруженных при OnInit): - Правила без idPOST createRule - Правила с id, которых нет в форме → DELETE deleteRule - Правила с id, отличающиеся от оригинала по hasRuleChanged (сравнение по columnId/ruleType/valueX/valueY/color/colorTone/priority/isActive) → PUT updateRule - Операции выполняются последовательно (concatMap). При ошибке любой операции — показывает модальный диалог с сообщением.

HTTP-сервис фронта: TableFormattingRulesHttpService (data/http/table-formatting-rules/) — обёртка над четырьмя endpoint'ами контроллера.

Поля правила (EpTableColumnFormattingRuleDto)

Поле БД Тип Описание
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 — модификатор насыщенности.

В коде это общие enum-ы Color и Tones из пакета Valhalla.Integration.Enums.Portal.Widget — те же палитры, что используются в портальных тикерах. В БД оба поля хранятся как строковые имена enum-значений (Enum.ToString()), при чтении парсятся обратно через Enum.Parse. На фронте — EpTableFormattingColor / EpTableFormattingTone со значениями-строками. Конкретное представление цвета в CSS делает mapEpFormattingColorToCellStyle (SPA).

API endpoints

Метод Маршрут Назначение
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 колонки. ColumnId передаётся в теле DTO.

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

Сервис ExtParamFormattingAdminService проверяет:

Проверка Ошибка resx (AdminSection.*) Когда срабатывает
ДП с указанным tableId имеет тип Table ExtParamFormatting_NotTableType Передан ID не-таблицы
Колонка из dto.ColumnId принадлежит этой таблице ExtParamFormatting_ColumnNotInTable Попытка создать правило для чужой колонки
Тип правила совместим с типом колонки ExtParamFormatting_RuleTypeIncompatibleWithColumnType Например, Contains для колонки Число
RuleType — допустимое значение enum ExtParamFormatting_InvalidRuleType Передан неизвестный код правила
Color — допустимое значение enum ExtParamFormatting_InvalidColor
ColorTone — допустимое значение enum ExtParamFormatting_InvalidColorTone
ValueX указан для правил, требующих X ExtParamFormatting_ValueXRequired Пустой ValueX для GreaterThan и пр.
ValueY указан для Between/Outside ExtParamFormatting_ValueYRequired Пустой ValueY для Between/Outside
ValueX пустой для Min/Max/Duplicates ExtParamFormatting_ValueXMustBeEmpty Лишний ValueX
ValueY пустой для всех правил, кроме Between/Outside ExtParamFormatting_ValueYMustBeEmpty Лишний ValueY
Не более 50 правил на одну колонку (MaxRulesPerColumn) ExtParamFormatting_MaxRulesExceeded Попытка создать 51-е правило
При Update/Delete: правило принадлежит таблице из URL ExtParamFormatting_RuleNotBelongsToTable tableId в URL не совпадает с фактической таблицей правила

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

Применение правил в гриде (runtime)

SPA-логика — apps/spa/src/app/components/task/ui/ext-fields/ext-param-table/ext-param-grid/ext-param-grid-conditional-formatting.ts.

Алгоритм для каждой ячейки: 1. Из настроек колонки берётся массив formattingRules. 2. Отфильтровываются неактивные (IsActive=false). 3. Активные сортируются по Priority ASC (меньше — раньше). 4. Для каждого правила в этом порядке проверяется условие; выбирается первое подходящее — на основе его Color/ColorTone ставится cell-style. Если ни одно не подошло — ячейка без подсветки. Правила не комбинируются.

Агрегаты Min/Max/Duplicates. Вычисляются клиентом перед применением правил: buildFormattingAggregatesForColumn проходит api.forEachNode и считает по видимым строкам грида. Группы и строки итогов (isTotal=true) исключаются. Для Min/Max — численный минимум/максимум, для Duplicates — множество значений, встречающихся ≥ 2 раз. Из-за этого Min/Max-правило выделяет минимум именно среди видимых строк, не всех данных таблицы.

Получение числового значения ячейки: getNumericCellValue — приоритет источников newValue (несохранённое значение в режиме редактирования) → decimalValueintValue.

Особенности правил: - Between / Outside: клиент сам нормализует границы через Math.min / Math.max — порядок ValueX и ValueY на результат не влияет. - Contains / NotContains / StartsWith / EndsWith при пустом ValueX — не срабатывают (возвращают false). Бэкенд их и не даст сохранить (см. валидацию), но если правило с пустым X каким-то образом просочилось — оно молча игнорируется. - TextEqual / TextNotEqual — работают и с пустой строкой как с легитимным значением.

Аудит-лог

Любое изменение правила (Create / Update / Delete) пишется в журнал администрирования через AdminActionLogService с EntityType = ExtParamTableColumnFormattingRule. Имя сущности в логе — FormattingRule(columnId, ruleId). Для Update сохраняется состояние before/after.

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

Известные расхождения и ограничения

Между тремя слоями (бэкенд-валидация, фронтенд-UI, фронтенд-runtime) поддержка типов колонок различается:

Тип колонки Backend (CreateRule) Frontend UI (выбор колонки) Frontend runtime (apply rules)
Number
Money
NumericValue (legacy alias)
Text ✓ (как текстовая) ✓ (как текстовая)
Textarea (Большой текст без форматирования) ✓ (как текстовая)
MaskedTextBox (Текст с маской) ✓ (как текстовая)

Практические следствия: - На колонке Textarea правило можно создать только через API (UI её не предлагает), и оно не применится в гриде — ячейка останется без подсветки. Это сохраняется в БД, но эффекта не даёт. - На колонке MaskedTextBox правило нельзя создать через UI (её нет в дропдауне), но если создать через API — оно применится в гриде. - NumericValue в UI распознаётся как числовая, но в backend-валидации этого alias'а нет — попытка создать может упасть на проверке типа колонки.

Дополнительные ограничения: - Min/Max работают по видимым строкам грида, а не по всем данным таблицы. При фильтрации/группировке множество видимых строк меняется — Min/Max-подсветка пересчитывается соответственно. - Лимит 50 правил на колонку — жёсткий, на админ-API. При превышении — ошибка. - Дубликаты правил не запрещены: можно создать два правила с одинаковыми RuleType и ValueX/ValueY (различающихся только Priority/Color); сработает то, что выше по приоритету. - Строгость X<Y для Between/Outside различается: UI требует строгое X < Y (валидатор xGreaterThanY), backend нормализует через Math.min/Math.max (порядок не важен). Через API можно сохранить пару с X≥Y, но в редакторе UI она будет помечена как ошибочная.

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

Для отображения ДП Таблица в гриде категории.

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

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

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

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

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

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

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

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

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

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

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) для динамического вычисления.