Repo auto make wiki page - ☆Wiki Sandbox - НТЦ 'Комплексные Системы'

Csit.Delta.ClientUtil.D8VqtTable

Строка определения столбца в D8VqtTable

Синтаксис строки описания столбца

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

              ┌                                              ┐
              │ ┌        ┐┌                  ┐┌             ┐│
┌ ┐┌         ┐│ │        ││┌                ┐││ ┌          ┐││
│-││DataAlias││.│Property│││PropertyIndex[?]│││:│FormatSpec│││
└ ┘└         ┘│ │        ││└                ┘││ └          ┘││
              │ └        ┘└                  ┘└             ┘│
              └                                              ┘                     

Хотя бы один из элементов DataAlias и Property должен быть указан.
Специальные варианты для задания пустого столбца: "null" или "."

Минус в начале означает, что столбец будет создан невидимым.

DataAlias - идентификатор массива данных в таблице. Он задается в процессе добавления данных (не столбцов, а данных) в таблицу.
Этот идентификатор не нужно указывать для некоторых значений элемента Poperty (например, ".RowNumber" или ".Empty").
Кроме того существуют специальные предопределенные идентификаторы:
  • T - для таблицы, сгруппированной по времени, означает массив данных, содержащий моменты времени, по которым сгруппированы данные (например "T.LocalMoment").
  • P - для таблицы, сгруппированной по параметру Дельта, означает массив данных, содержащий параметры Дельта, по которым сгруппированы данные (например, "P.ShortName").
  • R - означает массив данных, содержащий номера строк в таблице.

Poperty - название свойства данных. Это может быть название свойства описания параметра D8, название свойства значения параметра или другое свойства.
Если свойство не задано, то значением ячейки будет структура со значением параметра (ID8Vqt) или класс с описанием параметра (ID8ParamInfo).

PropertyIndex - опциональный индекс (число или строка без кавычек) внутри значения свойства данных. Индекс может быть указан для свойства Value, т.е. для значения параметра.

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

X.Value[0]:0.###
X.Value[5?]

Для значений табличных параметров индекс может быть как числовым (тогда это индекс поля в списке полей значения мета-типа) так и строковым (тогда это название поля мета-типа). Например:

X.Value[power]
X.Value[deleteDate?]:dd.MM.yy

После индекса может быть указан знак вопроса. Если он указан, то в случае если указанный индекс ссылается на объект, которого не существует (например, числовой индекс больше, чем количество элементов массиве или строковый индекс не соответствует ни одного из полей в записи), то значение ячейки таблицы будет null (пустое значение, а не строка "null").

FormatSpec задает строку форматирования значения объекта, заданного предшествующими элементами (DataAlias, Poperty, PropertyIndex), в текст. Строка форматирования указывается через двоеточие.

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

Если Property указано, то для форматирования объекта в текст используется стандартное форматирование VQT (см. "Форматирование VQT в D8ParamValueFormatter").

Если Poperty не указано, то для форматирования используется стандартное форматирование .NET.
В этом случае синтаксис строки форматирования определяется самим форматируемым объектом (в коде будет вызван метод IFormattable.Format(FormatSpec)). Например:

X.Timestamp:hh.mm dd.MM.yyyy

Если нужно внести в строку форматирования элементы, не поддерживаемые синтаксисом объекта, или объект нужно вывести в текст несколько раз, то нужно заключить сам объект в строке форматирования в фигурные скобки: {0:format}. Например:
X.Timestamp:TIME={0:hh:mm} DATE={0:dd.MM.yy}

Строка форматирования может быть дополнена указанием культуры (<LC:cultureString>) и часового пояса (<TZ:timezoneString>). Часовой пояс можно указывать только для данных типа даты/времени.

Варианты задания Property

Перечень во многом совпадает с названиями токенов строки форматирования в D8ParamValueFormatter.
Перечень определен в перечислении D8VqtTableDefProperty.

Свойства для полей данных (ID8Vqt)

  • UtcTimestamp - метка времени в UTC (DateTime)
  • UtcTimestampOA - метка времени в UTC, приведенная к формату времени OLE (double)
  • LocalTimestamp - метка времени в часовом поясе сессии (DateTime)
  • LocalTimestampOA - метка времени в часовом поясе сессии, приведенная к формату времени OLE (double)
  • UtcMoment - запрошенный момент времени в UTC (DateTime)
  • UtcMomentOA - запрошенный момент времени в UTC, приведенный к формату времени OLE (double)
  • LocalMoment - запрошенный момент времени в часовом поясе сессии (DateTime)
  • LocalMomentOA - запрошенный момент времени в часовом поясе сессии, приведенный к формату времени OLE (double)
  • Value - значение параметра D8 (тип объекта зависит от типа параметра), может быть дополнено индексом [PropertyIndex]
  • ValueXls - то же, что и Value, но для xls-отчета может быть использовано автоформатирование чисел в ячейки
  • FormattedValue - значение параметра D8, отформатированное в строку внутренними средствами инстанса
  • FormattedValueAndUnits - значение параметра D8 и единицы измерения, отформатированные в строку внутренними средствами инстанса
  • State - состояние (D8ParamValueState)
  • StateNumber - состояние (uint)
  • XState - расширенное состояние (int)
  • Quality - качество значения (float)

Свойства для полей НСИ (ID8ParamInfo и ID8ParamInfoBase)

  • LocalId - локальный илентификатор (int)
  • InstanceId - тдентификатор подсистемы (short)
  • GlobalId - глобальный идентификатор (long)
  • SID - строковый идентификатор
  • ParamType - тип параметра (D8ParamType)
  • Subtype - подтип параметра (D8ParamSubtype)
  • Name - имя
  • ShortName - краткое имя
  • AdditionalName - дополнительное имя
  • AKS - код
  • Interval - интервал значений (D8TimeInterval)
  • Step - шаг значений (D8TimeStep)
  • Options - флаги параметра (D8ParamOptions)
  • Units - единицы измерения
  • AggregatedUnits - единицы измерения после агрегирования
  • AggregationCoef - коэффициент агрегирования
  • ScaleName - название шкалы
  • Min - минимум шкалы (double)
  • Max - максиму шкалы (double)
  • ValidLow - низ достоверности (double)
  • ValidHigh - верх достоверности (double)
  • RangeUp1 - первая уставка вверх (double)
  • RangeUp2 - вторая уставка вверх (double)
  • RangeDown1 - первая уставка вниз (double)
  • RangeDown2 - вторая уставка вниз (double)
  • DeltaSave - апертура архивирования (double)
  • DeltaSend - апертура пересылки (double)
  • DeviceName - название прибора
  • DeviceId - идентификатор прибора (int)
  • GroupName - название группы
  • GroupId - идентификатор группы (int)

Специальные свойства

Для этих свойств DataAlias не указывается.

  • Empty - пустой столбец (null)
  • RowNumber - номер строки от единицы (int)

Символы подстановки

Чтобы добавить несколько столбцов за одну операцию можно использовать стандартные символы подстановки wildcards (символы * и ?) в элементе DataAlias. Например,

CHTEC?_ASKUT*.Value:0.###
G1_*.LocalTimestamp

Строка определения столбцов тогда принимает вид:

┌ ┐             ┌             ┐
│-│DataAliasMask│.DataItemSpec│
└ ┘             └             ┘   

Если используются wildcards, то будет выполнен поиск всех массивов данных таблицы, у которых идентификатор подходит под маску, заданную в DataAliasMask с использованием символов подстановки. Столбец будет создан для каждого найденного массива данных с идентификатором DataAliasN и с использованием строки определения "DataAliasN.DataItemSpec".

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

Дополнительно к маске DataAliasMask можно вместо одного DataItemSpec указать несколько вариантов через запятую:

┌ ┐             ┌              ┐┌               ┐
│-│DataAliasMask│.DataItemSpec1││,.DataItemSpec2│...
└ ┘             └              ┘└               ┘

Например с помощью строки определения
TEST_*.Value:0.###,.State

будут созданы столбцы
TEST_1.Value:0.###
TEST_1.State
TEST_2.Value:0.###
TEST_2.State
TEST_3.Value:0.###
TEST_3.State

И кроме того в DataItemSpec можно указать Value[*]. Это будет означать, что нужно сгенерировать по столбцу на каждое поле внутри значения параметра. Набор полей будет получен из мета-типа параметра. Это полезно для табличных параметров. Например, для табличного параметра с полями width, height и depth) строка определения

TBL_56.Value[*]:,.UtcTimestamp

будет развернута в
TBL_56.Value[width]:
TBL_56.Value[height]:
TBL_56.Value[depth]:
TBL_56.UtcTimestamp

Для не-табличных параметров Value[*] будет заменен на Value.

Особенности

Идентификатор массива данных DataAlias должен быть указан явно в момент добавления данных в таблицу. Дополнительно, если массив данных содержит информацию о параметре D8, в качестве DataAlias можно использовать SID параметра, в котором все точки заменены на подчеркивания.