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

Виджет Таблица

В виджете Таблица можно выводить данные, получаемые из хранимых процедур SQL. Для выполнения действий над объектами в строках таблицы могут быть настроены смарт-кнопки (кнопки управления) — например, если в таблице отображается список задач, то с помощью кнопок можно менять их приоритет или переводить по маршруту, не заходя в карточку задачи.

Настройки таблицы доступны во вкладке Дополнительные настройки.

ℹ️ Все данные регистрозависимые! Например, использование taskId вместо taskID приведет к ошибке

В качестве источника табличных данных вы можете выбрать хранимую процедуру. Введите наименование процедуры в поле Хранимая процедура и нажмите кнопку Сохранить. После этого в таблице настроек отобразятся колонки отображаемой таблицы.

ℹ️ На MSSQL в качестве источника данных используются хранимые процедуры. На PostgreSQL — SQL-функции: хранимые процедуры как источник табличных данных на PG не поддерживаются.

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

Настройки виджета

Название

Описание

Хранимая процедура

Название хранимой процедуры (указывается только название процедуры, без схемы и квадратных скобок). Рядом с полем расположена кнопка перехода к редактированию SQL-запроса хранимой процедуры в модальном окне. Если название процедуры в поле не задано, кнопка неактивна (заблокирована).

ℹ️ На MSSQL в качестве источника данных используются хранимые процедуры. На PostgreSQL — SQL-функции: хранимые процедуры как источник табличных данных на PG не поддерживаются.

Особенности вызова SQL-функций в виджетах порталов на PostgreSQL

Для портальных виджетов на PostgreSQL в качестве источника данных используются не хранимые процедуры MSSQL, а SQL-функции PostgreSQL. При настройке источника данных учитывайте следующие особенности:

  • указывайте имя SQL-объекта без квадратных скобок MSSQL-формата;
  • если функция находится в стандартной схеме, используйте имя в формате dbo.my_function или только имя функции, если схема определяется платформой автоматически;
  • для PostgreSQL важно точное соответствие имён и типов параметров сигнатуре функции;
  • параметры типа xml должны быть объявлены в функции как xml, так как PostgreSQL различает типы text и xml и не выполняет такую подстановку так же свободно, как MSSQL;
  • имена выходных колонок и параметры следует задавать единообразно по регистру, чтобы избежать ошибок привязки в настройках виджета.

Рекомендуется при переносе портального SQL-источника с MSSQL на PostgreSQL использовать отдельную PG-функцию, специально адаптированную под вызов из портального виджета, и предварительно проверить её сигнатуру и возвращаемый набор колонок.

ℹ️ Обязательно ознакомьтесь с рекомендациями для работы с PostgreSQL при создании функций, таблиц и представлений

Примеры функций:

Пример 1:

CREATE OR REPLACE FUNCTION dbo.cm_portal_31_commercial_offers(
 xmlparam text,
 drilldownfield text,
 drilldownparams text,
 userid integer)
   RETURNS TABLE(tasktext character varying, billlink character varying, statename character varying, date character varying)
   LANGUAGE 'sql'
   COST 100
   VOLATILE PARALLEL UNSAFE
   ROWS 1000

AS $BODY$

select t.tasktext, 'spa/tasks/' || t.taskid::varchar, t.statename,
         to_char(t.extparam526nativevalue, 'dd.MM.yyyy') as date
from tasksinsubcat145denormalized t
where responsibleperformerid = userid or ownerid = userid
or userid in (select epu.userid
                    from tasksinsubcat42denormalized t42
                    join tasksinsubcat40denormalized t40 on t42.taskid = t40.extparam487nativevalue
                    join extparamselectusersvalues epu on t40.taskid = epu.taskid and epu.extparamid = 292
                    where t42.taskid = t.extparam487nativevalue)
$BODY$;

Пример 2:

call dbo.droproutineifexists('dbo', 'sp_plan_po_dogovoram');

create or replace function dbo.sp_plan_po_dogovoram
(
 _userid   int,
 _xmlparam   xml = NULL::xml,
 _drilldownfield   varchar = NULL::character varying,
 _drilldownparams   varchar = NULL::character varying
)
returns record
as
$routine_text$

DECLARE
   _StartDate date;
   _EndDate date;
   _Type varchar(1000);
   _Mode varchar(1000);
   _LanguageId integer;
 _year varchar(1000);
   _month varchar(1000);

BEGIN
CREATE TEMP TABLE temp_results (
   Period character varying,
   Type character varying,
   PlanValue numeric,
   FactValue NUMERIC,
   FontValue character varying
);

CREATE TEMP TABLE _Params (
       Name varchar(1000),
       "From" varchar(1000),
       "To" varchar(1000),
       Value varchar(1000)
   ) ON COMMIT DROP;

   CREATE TEMP TABLE _Types (
       K varchar(100),
       Val varchar(100),
       lang int
   ) ON COMMIT DROP;

   -- Вставка данных в временную таблицу _Types
   INSERT INTO _Types (K, Val, lang)
   VALUES
       ('Лицензии', 'Лицензии', 1),
       ('Услуги', 'Услуги', 1);
       -- Остальные записи...

   -- Присваивание значения переменной _LanguageId
    SELECT languageid INTO _LanguageId
   FROM Users
   WHERE UserID = _UserID;

   INSERT INTO _Params (Name, "From", "To", Value)
   SELECT * FROM  crm_repGetParams(_xmlparam);

   -- Подменяем значения начала и конца периода по выбранному месяцу и году
    -- Получение значений года и месяца
   SELECT
       COALESCE(CAST((SELECT Value FROM _Params WHERE Name = 'Year') AS varchar(1000)), CAST(EXTRACT(YEAR FROM CURRENT_DATE) AS varchar(1000))),
       COALESCE(CAST((SELECT Value FROM _Params WHERE Name = 'Month') AS varchar(1000)), CAST(EXTRACT(MONTH FROM CURRENT_DATE) AS varchar(1000)))
   INTO _year, _month;

   -- Присваивание дат начала и конца периода
   SELECT
       CAST(CONCAT(_year, '-', _month, '-01') AS date),
       LAST_DAY(CAST(CONCAT(_year, '-', _month, '-01') AS date))
   INTO _StartDate, _EndDate;

   SELECT INTO _Type NULLIF((SELECT Value FROM _Params WHERE Name = 'Type'), '');

   IF _DrillDownField IS NULL
   THEN
       INSERT INTO temp_results(
       SELECT
           t6457.ExtParam13495Value AS Period,
           COALESCE(t.Val, t6457.extparam1608value) AS Type,
           t6457.ExtParam2119NativeValue AS PlanValue,
           COALESCE(SUM(t1803.ExtParam1709NativeValue), CAST(0 AS money)) AS FactValue,
           '' AS FontValue
       FROM TasksInSubcat1724Denormalized AS t1724
       JOIN TasksInSubcat6457Denormalized AS t6457
           ON t1724.extparam1608value = t6457.extparam1608value
           AND CAST(t6457.ExtParam13495NativeValue AS date) BETWEEN _StartDate + INTERVAL '1 day' * (1 - EXTRACT(DAY FROM _StartDate)) AND _EndDate
       LEFT JOIN TasksInSubcat1803Denormalized AS t1803
           ON t1803.extparam1609nativevalue = t1724.taskid
           AND t1803.stateid <> 4
           AND COALESCE(t1803.extparam31121nativevalue, '0') IN ('0', 'false', 'False')
           AND t1803.extparam1615nativevalue BETWEEN
               CASE
                   WHEN CAST(t6457.ExtParam13495NativeValue AS date) < _StartDate THEN _StartDate
                   ELSE CAST(t6457.ExtParam13495NativeValue AS date)
               END
               AND
               CASE
                   WHEN (CAST(t6457.ExtParam13495NativeValue AS date) + INTERVAL '1 month' - INTERVAL '1 day') > _EndDate THEN _EndDate
                                 ELSE (CAST(t6457.ExtParam13495NativeValue AS date) + INTERVAL '1 month' - INTERVAL '1 day')

               END
       LEFT OUTER JOIN _Types t ON t6457.extparam1608value = t.K AND t.lang = _LanguageId
         GROUP BY
   t6457.ExtParam13495Value,
   t6457.ExtParam13495NativeValue,
   t6457.extparam1608value,
   t6457.ExtParam2119NativeValue,
   t.Val

UNION

SELECT
   '',
   CASE
       WHEN _LanguageId = 1 THEN 'Итого'
       WHEN _LanguageId = 3 THEN N'<b>总</b>'
       ELSE 'Total'
   END,
   SUM(PlanValue),
   SUM(FactValue),
   'TotalsRow'
FROM
(
           SELECT
               t6457.ExtParam13495Value AS Period,
               COALESCE(t.Val, t6457.extparam1608value) AS Type,
               t6457.ExtParam2119NativeValue AS PlanValue,
               COALESCE(SUM(t1803.ExtParam1709NativeValue), CAST(0 AS money)) AS FactValue,
               '' AS FontValue
           FROM TasksInSubcat1724Denormalized AS t1724
           JOIN TasksInSubcat6457Denormalized AS t6457
               ON t1724.extparam1608value = t6457.extparam1608value
               AND CAST(t6457.ExtParam13495NativeValue AS date) BETWEEN DATE_TRUNC('month', _StartDate) AND _EndDate
           LEFT JOIN TasksInSubcat1803Denormalized AS t1803
               ON t1803.extparam1609nativevalue = t1724.taskid
               AND t1803.stateid <> 4
               AND COALESCE(t1803.extparam31121nativevalue, '0') IN ('0', 'false', 'False')
               AND t1803.extparam1615nativevalue BETWEEN
                   CASE
                       WHEN CAST(t6457.ExtParam13495NativeValue AS date) < _StartDate THEN _StartDate
                       ELSE CAST(t6457.ExtParam13495NativeValue AS date)
                   END
                   AND
                   CASE
                       WHEN (CAST(t6457.ExtParam13495NativeValue AS date) + INTERVAL '1 month' - INTERVAL '1 day') > _EndDate THEN _EndDate
                                         ELSE (CAST(t6457.ExtParam13495NativeValue AS date) + INTERVAL '1 month' - INTERVAL '1 day')
                   END
           LEFT OUTER JOIN _Types t ON t6457.extparam1608value = t.K AND t.lang = _LanguageId
           GROUP BY
               t6457.ExtParam13495Value,
               t6457.ExtParam13495NativeValue,
               t6457.extparam1608value,
               t6457.ExtParam2119NativeValue,
               t.Val
       ) AS subquery);
RETURN QUERY SELECT * FROM temp_results;

   -- Очистка временной таблицы после использования
   DROP TABLE temp_results;

   ELSE
       -- Объявление временной таблицы
CREATE TEMP TABLE _DrillParams (
   Name varchar,
   "From" varchar,
   "To" varchar,
   Value varchar
);

-- Вставка результатов выполнения функции во временную таблицу
INSERT INTO _DrillParams (Name, "From", "To", Value)
SELECT * FROM crm_repGetParams('XML', DrillDownParams);

       SELECT _Type = NULLIF((SELECT Value FROM _DrillParams WHERE Name = 'Type'), '');

       INSERT INTO temp_results(
       SELECT
           t6457.ExtParam13495Value AS Period,
           t1724.ExtParam1567Value AS Company,
           t1724.TaskText AS Dogovor,
           CAST(CONVERT(date, t1803.ExtParam1615NativeValue, 101) AS varchar(12)) AS Data_oplaty,
           COALESCE(SUM(t1803.ExtParam1709NativeValue), CAST(0 AS money)) AS FactValue,
           '' AS FontValue
       FROM TasksInSubcat1724Denormalized AS t1724
       JOIN TasksInSubcat6457Denormalized AS t6457
           ON t1724.extparam1608value = t6457.extparam1608value
           AND CAST(t6457.ExtParam13495NativeValue AS date) BETWEEN (date_trunc('month', _StartDate)::date + INTERVAL '1 day' - INTERVAL '1 day') AND _EndDate
       JOIN TasksInSubcat1803Denormalized AS t1803
           ON t1803.extparam1609nativevalue = t1724.taskid
           AND t1803.extparam1615nativevalue BETWEEN
               CASE
                   WHEN CAST(t6457.ExtParam13495NativeValue AS date) < _StartDate THEN _StartDate
                   ELSE CAST(t6457.ExtParam13495NativeValue AS date)
               END
               AND
               CASE
                   WHEN (CAST(t6457.ExtParam13495NativeValue AS date) + INTERVAL '1 month' - INTERVAL '1 day') > _EndDate THEN _EndDate
                                 ELSE (CAST(t6457.ExtParam13495NativeValue AS date) + INTERVAL '1 month' - INTERVAL '1 day')
               END
       WHERE t6457.extparam1608value = _Type
           AND COALESCE(t1803.extparam31121nativevalue, '0') IN ('0', 'false', 'False')
           AND t1803.ExtParam1709NativeValue != 0
       GROUP BY
           t6457.ExtParam13495Value,
           t1724.ExtParam1567Value,
           t1724.TaskText,
           t1803.extparam1615nativevalue
       UNION ALL
       SELECT
           '',
           'Итого',
           '',
           '',
           SUM(FactValue),
           'TotalsRow'
       FROM (
           SELECT
               t6457.ExtParam13495Value AS Period,
               t1724.ExtParam1567Value AS Company,
               t1724.TaskText AS Dogovor,
               CAST(CONVERT(date, t1803.ExtParam1615NativeValue, 101) AS varchar(12)) AS Data_oplaty,
               COALESCE(SUM(t1803.ExtParam1709NativeValue), CAST(0 AS money)) AS FactValue,
               '' AS FontValue
           FROM TasksInSubcat1724Denormalized AS t1724
           JOIN TasksInSubcat6457Denormalized AS t6457
               ON t1724.extparam1608value = t6457.extparam1608value
               AND CAST(t6457.ExtParam13495NativeValue AS date) BETWEEN _StartDate + (1 - EXTRACT(DAY FROM _StartDate)) * INTERVAL '1 day' AND _EndDate
           JOIN TasksInSubcat1803Denormalized AS t1803
               ON t1803.extparam1609nativevalue = t1724.taskid
               AND t1803.extparam1615nativevalue BETWEEN
                   CASE
                       WHEN CAST(t6457.ExtParam13495NativeValue AS date) < _StartDate THEN _StartDate
                       ELSE CAST(t6457.ExtParam13495NativeValue AS date)
                   END
                   AND
                   CASE
                       WHEN (CAST(t6457.ExtParam13495NativeValue AS date) + INTERVAL '1 month' - INTERVAL '1 day') > _EndDate THEN _EndDate
                                         ELSE (CAST(t6457.ExtParam13495NativeValue AS date) + INTERVAL '1 month' - INTERVAL '1 day')
                   END
           WHERE t6457.extparam1608value = _Type
               AND COALESCE(t1803.extparam31121nativevalue, '0') IN ('0', 'false', 'False')
               AND t1803.ExtParam1709NativeValue != 0
           GROUP BY
               t6457.ExtParam13495Value,
               t1724.ExtParam1567Value,
               t1724.TaskText,
               t1803.extparam1615nativevalue
       ) AS subquery);
RETURN QUERY SELECT * FROM temp_results;

   -- Очистка временной таблицы после использования
   DROP TABLE temp_results;

   END IF;
END;

$routine_text$
language plpgsql;

Для PG процедура crm_repGetParams не используется. [Пример](../../ передачи параметра для PG.

DECLARE

d1 DATE := NULL;

d2 DATE := NULL;

BEGIN

SELECT a.from_val, a.to_val into d1, d2 FROM dbo.ssl_get_filter_param_by_name(xmlparam::xml, 'period') as a;

Автовысота строк

При включенной настройке автоматически будет установлена высота строк таблицы в соответствии с ее содержимым

Автовысота таблицы

Настройка автоматически регулирует общую высоту виджета в зависимости от количества отображаемых строк

Автовысота дриллдауна

Настройка управляет высотой всплывающего окна, которое появляется при детализации (дриллдауне) по строке или значению в таблице. Она не влияет на высоту основной таблицы

Количество строк итогов

ℹ️ Опция временно не работает, начиная с версии 2.256

Количество последних строк, которые будут идентифицироваться как итоговые

Брать стиль строки из

Название колонки, в которой хранится описание стиля (атрибуты форматирования) отображения для строк таблицы

Брать ссылку для строки из

Название колонки, в которой хранится ссылка отображения данных для строк таблицы

Счетчик значений

Отображение счетчика задач.

Доступны для выбора следующие варианты:

  • Выключено — Счетчик не отображается. Значение по умолчанию.

  • Количество строк — Отображается счетчик по общему количеству возвращаемых источником строк в таблицу.

  • Smart — Отображается счетчик по результату, вычисленному в смарт-выражении. В результате выполнения должно возвращаться скалярное числовое значение (int). В смарт-выражении вы можете обращаться к значениям фильтра и к ID виджета — они находятся в папке Параметры события "Показ формы". Значения параметров поля "Фильтр" передаются в параметре \@eventParam1 в формате JSON, а идентификатор виджета — в параметре \@eventParam2. В параметре \@eventParam1 дата передается как строка в формате \'30.11.2019\', а период — как JSON вида {"from":"01.11.2019","to":"30.11.2019 23:59"}.

При выборе значения Smart становится доступна опция Цвет счетчика.

Цвет счетчика

Цвет счетчика с количеством задач. Поле доступно, в опции Счетчик значений выбран вариант Smart.

Возможные значения:

  • info — синий
  • warning — оранжевый
  • default — серый
  • error — красный

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

Блок кнопок

В первой строке настроек таблицы настраивается вывод кнопок. Если для таблицы настроены кнопки, все они выводятся в одной, самой первой (левой) колонке. Для этой колонки можно только включить признак Отображать, указать имя и ширину. Сами кнопки настраиваются в блоке Кнопки управления

Отображать

Если параметр отключен, то колонка не будет отображаться (по умолчанию отображаются все колонки)

Столбец sql

Название колонки в SQL-процедуре

Имя

Название колонки, как оно должно отображаться в таблице

Ширина колонки

Ширина колонки в % от общей ширины таблицы

Колонка для функции DrillDown

Название колонки, по которой будет строиться детализация (DrillDown).

ℹ️ В строке может быть заполнена только одна из настроек: Брать ссылку из или Название колонки для функции DrillDown. Если одновременно заполнены обе настройки, то при сохранении настроек выдается предупреждение об ошибке!

Пример настройки детализации см. ниже

В SPA порталах данные в хранимую процедуру передаются со строчной первой буквой. К примеру: в aspx в хранимую процедуру придёт значение "TaskId", а в SPA — "taskId"

Хранимая процедура

Название хранимой процедуры для детализации данных. Если процедура задана, то клику на значение в ячейке отображается новый виджет "Таблица" с набором данных, сформированным указанной хранимой процедурой. По нажатию на иконку в колонке справа вызывается окно для настройки виджета с детализацией.

Параметры хранимой процедуры:

  • \@XmlParam xml (readonly) — параметр, в который передаются значения фильтра, привязанного к виджету,

  • \@DrillDownField varchar(max) = null — название столбца SQL, для которого настраивается детализация (т.е. параметр определяет колонку, по которой кликнул пользователь). \ Используется, если одна и та же хранимая процедура получает детальные данные по разным столбцам,

  • \@DrillDownParams varchar(max) = null — значение параметра для детализации (т.е. параметр определяет строку, по которой кликнул пользователь).\ Поскольку поддерживается вложенная детализация с неограниченным количеством уровней вложенности, то в параметре передается полная история значений, по которым последовательно кликал пользователь. Это дает возможность вернуться в детализацию предыдущего уровня кнопкой "Назад",

  • \@UserID int = null — пользователь, для которого формируются данные.

Пример настройки детализации см. ниже

ℹ️ На MSSQL детализация реализуется через отдельную хранимую процедуру. На PostgreSQL для этого используется SQL-функция с теми же входными параметрами.

Детализация

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

Пример настройки детализации см. ниже

Брать ссылку из

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

Если карточка задачи должна отображаться без рамки используйте формат ссылки: \~/spa/noframe/tasks/{TaskID}

Формат ссылок можно посмотреть здесь

Чтобы сбросить выбранное значение, выберите пункт "Очистить" в выпадающем списке.

ℹ️ Имя колонки в настройке Брать ссылку из сопоставляется без учёта регистра: url, URL и Url — равнозначны.

ℹ️ В строке может быть заполнена только одна из настроек: Брать ссылку из или Название колонки для функции DrillDown. Если одновременно заполнены обе настройки, то при сохранении настроек выдается предупреждение об ошибке!

Открывать в модальном окне

Если параметр включен, то ссылка, указанная в колонке "Брать ссылку из", будет открываться в модальном окне, а если не включен — в текущей вкладке

Другие настройки

По нажатию на значок открывается окно визуальных настроек и индикаторов

Другие настройки

Общие настройки

Выравнивание текста

Выберите один из доступных вариантов выравнивания текста в данной колонке (по левому краю, по центру, по правому краю). Заголовки выравниваются по той же стороне, что и текст в колонке

Название группы колонок

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

Брать стилизацию из колонки

Если в данной настройке есть значение, то текст в этой колонке будет выводиться с указанными атрибутами форматирования (вместо форматирования по умолчанию)

Брать класс из колонки

Поле, содержащее набор css-классов для форматирования значений в данной колонке

Режим фильтрации

Определяет возможность динамической фильтрации данных по данной колонке в пользовательском режиме.

Возможные значения:

  • Отсутствует (по умолчанию)

  • Обычный

  • Excel

Вывод информации

Можно отметить один или несколько из параметров:

  • Текст

  • Изображение

  • Индикатор

  • График

В зависимости от выбранного вывода информации, справа отображаются дополнительные настройки (см. ниже)

Текст

Выделять красным отрицательные числа

Если параметр включен, то отрицательные значения будут отображаться красным цветом

Отображать 0

Если параметр включен, то нулевые значения будут отображаться как 0.

Если параметр выключен, то вместо 0 будет отображаться пустая ячейка

Вырезать теги

Если параметр включен, то текст в колонке будет выводиться без учета html-тегов

Переносить текст на другую строку

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

Если параметр выключен и для колонки задана ширина, то не поместившийся текст обрезается (не отображается)

Формат вывода данных

Даты

Полная дата

DD.MM.YYYY

Полная дата и время

DD.MM.YYYY, HH:mm:ss.sss

Год

YYYY

Месяц

MMMM

Месяц и год

MMMM YYYY

День

DD

День недели

dddd

Пример: Отображаемое даты 20.04.2024 в зависимости от заданного формата.

  • DD.MM.YYYY — 20.04.2024

  • DD.MM.YYYY, HH:mm:ss.sss --- 20.04.2024, 12:30:00

  • YYYY — 2024

  • MMMM — апрель

  • MMMM YYYY — апрель 2024

  • DD — 04

  • dddd — суббота

Числа

Целое число

0

Число с разделителем разрядов

0,0

Число с дробной частью

0.0

Число с разделителем разрядов и дробной частью

0,0.0

Пример: Отображаемое значение числа 1,71 в зависимости от заданного формата.

  • 0 — 2

  • 0,0 — 2

  • 0,00 — 2

  • 0.0 — 1,7

  • 0.00 — 1,71

  • 0.000 — 1,710

Изображение

Колонка значения

Колонка из источника данных, которая содержит надпись, выводимую на индикатор (например, число)

Высота %, px

Высота изображения в пискелях или процентах

Ширина %, px

Ширина изображения в пискелях или процентах

Стиль

Дополнительные параметры вывода изображения — рамка, радиус закругления и пр.

Выравнивание

Определяет, будет ли индикатор отображаться слева или справа от значения в колонке

Индикатор

Тип индикатора

Возможные значения:

  • Текст (используется по умолчанию)

  • Иконка

Если выбрано значение Иконка, то ниже отображается поле для выбора набора иконок. Пока доступен только набор Material. Название иконки из набора должно возвращаться в колонке SQL-процедуры, указанной в настройке Колонка значения

Колонка цвета

Колонка из источника данных, которая определяет цвет фона индикатора. Значение должно быть в формате hex: #XXXXXX

Колонка значения

Колонка из источника данных, которая содержит надпись, выводимую на индикатор, если тип индикатора Текст, или название иконки из набора, если тип индикатора Иконка

Стиль

Дополнительные параметры отображения индикатора — рамка, радиус закругления и пр.

Выравнивание

Определяет, будет ли индикатор отображаться слева или справа от значения в колонке

График

Колонка значения

Колонка из источника данных, которая содержит конфигурацию графика в формате JSON:

  • Тип графика (линейный, столбчатый или круговая диаграмма)

  • Параметры стилизации графика

  • Данные

Примеры JSON, описывающих графики

Кнопки управления

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

Для добавления кнопки управления нажмите Создать в блоке Кнопки управления. В открывшемся окне заполните настройки копки. Для добавления кнопки обязательно должно быть указано одно из действий: JS функция или пакет смарт действий.

Текст, который будет отображаться на кнопке

Описание

Текст, который будет отображаться во всплывающей подсказке при наведении курсора мыши на кнопку

Иконка

Путь к иконке, которая будет отображаться на кнопке (если не указан, на кнопке будет только текст). Например:

../img/available_white1.gif

JavaScript выражение

Текст скрипта JS, который должен выполняться по нажатию кнопки. Событие нажатия на кнопку возвращает три параметра: object Row — строка, в которой была нажата кнопка, UserID — пользователь, нажавший кнопку, ID кнопки.

В JS-вставке доступна переменная event:

{\ originalEvent: MouseEvent; // стандартный объект \ data: any; // строка с данными, к которой относится кнопка\ block: {\ reload: () => void; // перезагрузить портальный блок\ freeze: () => void; // сделать все кнопки в портальном блоке недоступными для нажатия\ unfreeze: () => void; // сделать все кнопки в портальном блоке доступными для нажатия\ }\ }

Описание стандартного объекта можно посмотреть здесь.

С помощью объекта event.data можно обратиться к полям возвращаемого списка задач или других объектов.

Можно обращаться по названию столбца возвращаемого набора данных, названия столбцов отображаются в таблице настроек.

Например, event.data.isActive

ℹ️ В момент нажатия на любую из настроенных кнопок все кнопки управления автоматически становятся недоступными для нажатия. Чтобы снова сделать их доступными, нужно вызвать событие event.block.unfreeze(). Например, такое JS-выражение сделает их доступными через 1 секунду после нажатия:

setTimeout(function(){event.block.unfreeze()},1000) Описание вызова методов веб-сервисов из JS-вставок

ℹ️ Для каждой кнопки может быть задан либо JS-скрипт, либо смарт-пакет, которые будут выполняться по нажатию кнопки

Колонка идентификатора (int)

Колонка, возвращающая идентификатор объекта. Это значение будет доступно при редактировании смарта в дереве сущностей в параметре "Идентификатор объекта". С его помощью в смарт-действии можно будет указать, в какой именно задаче будут выполняться действия по нажатию кнопки.

Это поле должно быть названо так, как это оно названо в возвращаемом наборе данных (например, TaskID)

ℹ️ Поле регистрозависимо!

Пакеты действий

Смарт-пакет, который должен выполняться по нажатию кнопки.

В смарт-выражениях, используемых в данном пакете, доступны параметры события Нажатие на кнопку:

  • идентификатор объекта (значение из колонки идентификатора или ID строки),

  • строка с json-объектом,

  • ID кнопки,

а также параметры текущего пользователя.

ℹ️ Для каждой кнопки может быть задан либо JS-скрипт, либо смарт-пакет, которые будут выполняться по нажатию кнопки

URL

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

Адрес страницы может быть относительным или абсолютным, например:

/maintaskform.aspx?taskid=123 — относительный адрес,

https://ru.1forma.ru/maintaskform.aspx?taskid=123 — абсолютный адрес.

ℹ️ В абсолютной ссылке можно использовать только протокол https, а не http

Колонка видимости (bool)

Название колонки, возвращающей признак видимости кнопки для текущего пользователя.

Если значение не заполнено, то считается, что видимость включена всегда.

Колонка активности (bool)

Название колонки, возвращающей признак активности кнопки. Если значение не заполнено, то считается, что активность включена всегда.

Настройка детализации

В виджете может быть настроена детализация данных по определенным полям. В соответствующей строке настроек в поле Хранимая процедура указывается процедура, которая будет формировать данные для детализации. Если хранимая процедура для детализации не указана, то будет вызвана хранимая процедура для самой таблицы. Детализация строится по полю, указанному в поле Колонка для функции DrillDown. Вид таблицы детализации настраивается по клику на значок в колонке Детализация.

В примере на рисунке ниже в параметр \@DrillDownField будет передано название колонки \'fact\', а в параметр \@DrillDownParams — значение колонки fio, т.е фамилия менеджера.

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

Детализация колонки

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

Способ получения значений входящих параметров описан здесь.

Примеры хранимых процедур для виджетов можно посмотреть здесь.

Настройка стиля

Если предполагается форматировать выводимые в таблице данные, то в возвращаемых данных могут присутствовать поле с описанием стиля строки (указывается в поле Брать стиль строки из) и поле с описанием стиля столбца (указывается в колонке Брать стилизацию из колонки).

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

Для описания стилей могут использоваться следующие типовые значения:

Значение CSS стиль, который соответствует данному значению Default Нет стиля Success background-color:#dff0d8 (зеленый) Info background-color:#d9edf7 (голубой) Warning background-color:#fcf8e3 (желтый) Danger background-color:#f2dede (розовый) TotalsRow font-weight: bold BackRed background-color: pink BackGreen background-color: lightgreen BackBlue background-color: lightblue BackYellow background-color: gold TextRed color: red TextGreen color: green

ℹ️ Если необходимо задать несколько атрибутов, их надо перечислить через пробел.

Помимо типовых значений для задания стиля можно использовать любые значения цвета и фона в формате \'Color#ХХХХХХ\' для цвета текста и \'Background#ХХХХХХ\' для цвета фона (где ХХХХХХ — шестизначное обозначение цвета в формате HEX).

Аналогичным образом можно указывать значение высоты строки в формате \'HeightXXXpx\' (где ХXХ — количество px).

Если необходимо задать несколько значений, их можно перечислить через запятую. Например, \'Color#ff0000,Background#00ff00\' или \'Color#ff0000,Height40px\'

Примеры JSON, описывающих график

Линейный график:

{ "type":"polyline",
 "points":[
       { "x":1, "y":2,
         "color":"#DEDEDE"
       },
       { "x":2,
         "y":4,
         "color":"#DEDEDE"
       },
       { "x":3,
         "y":8,
         "color":"#DEDEDE"
       },
       { "x":4,
         "y":16,
         "color":"#DEDEDE"
       }
  ]
}

Столбчатый график:

{ "type":"bar",
 "points":[
       { "x":1,
         "y":2,
         "color":"#FF0000"
       },
       { "x":2,
         "y":4,
         "color":"#00FF00"
       },
       { "x":3,
         "y":8,
         "color":"#0000FF"
       },
       { "x":4,
         "y":16,
         "color":"#DEDEDE"
       }
  ]
}

Круговая диаграмма:

{ "type":"pie",
 "points":[
       { "x":1,
         "y":2,
         "color":"#FF0000"
       },
       { "x":2,
         "y":4,
         "color":"#00FF00"
       },
       { "x":3,
         "y":8,
         "color":"#0000FF"
       },
       { "x":4,
         "y":16,
         "color":"#DEDEDE"
       }
  ]
}

Пример хранимой процедуры с данными для графика:

CREATE or ALTER PROCEDURE [dbo].[sp_table]
(
  @XmlParam xml = null,
  @DrillDownField varchar(max) = null,
  @DrillDownParams varchar(max) = null,
  @UserID int
)
AS
BEGIN
SET NOCOUNT ON;

declare @points table ( x int, y int, color varchar ( 100 ) )
insert into @points 
select 1, 2, '#FF0000' union all
select 2, 4, '#00FF00' union all
select 3, 8, '#0000FF'


select 1 as Col1, ( select 'polyline' as [type], ( select x, y, color from @points for json path ) as points for json path, WITHOUT_ARRAY_WRAPPER ) as chartdata union all
select 2 as Col1, ( select 'bar' as [type], ( select x, y, color from @points for json path ) as points for json path, WITHOUT_ARRAY_WRAPPER ) union all
select 3 as Col1, ( select 'pie' as [type], ( select x, y, color from @points for json path ) as points for json path, WITHOUT_ARRAY_WRAPPER )

END
Пример стилизации виджета Таблица Настройка виджета

Описание виджета Таблица в прежнем интерфейсе администрирования Полезные ссылки

Настройка кнопок для виджета Таблица

Обращение к объектам из адресной строки браузера