Словарь

Словарь – это элемент системы, который хранит данные в формате "ключ – значение" или "ключ – массив значений". Ключ в словаре должен быть уникальным.

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

Также, в системе существует особый тип словарей – словари для мониторинга.
Словари не предназначены для хранения больших данных. Рекомендованный размер словаря – не больше 1000 записей. При этом, в системе данное значение ничем не контролируется и ограничений по размеру словаря нет.

Настраивать словари можно на экране конфигурации, в разделе Словари.

Словари можно объединять в Группы словарей.

Именованные поля

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

named fields
Пример словаря с именованными полями

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

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

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

Название

Серийный номер

Ввод в эксплуатацию

ПУЛЬСАР 1ш-1-5/60-0-1-0

MKL68JLASKH8

24.03.2021

Инкотекс Меркурий 236

GRY9RK635VQM

16.09.2023

Инкотекс Меркурий 201.7

AA8RQPVD3JL8

03.11.2024

Также, создать именованные поля можно через REST API при помощи запросов Создать словарь и Обновить словарь.

Зашифрованные поля

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

encrypted

В системе зашифрованные поля выглядят следующим образом:

{
    "content": "{\"john.doe\":\"<<crypt:8D0E4E0C1EFC3D4533005804379270C8:96CB2385E0E693D391DD69A156088C46ACAEBEF2C7266993509723F7ECA7DE42>>\",\"jane.doe\":\"<<crypt:280B6896DECF67A730AC1AE011B254FF:0BF81AAF0B206712967008CA9BC9367C>>\"}",
}
Для шифрования полей необходимо включить шифрование в серверной конфигурации. Без этих предварительных настроек шифрование происходить не будет, а лишь будет скрываться значение в соответствующем поле в интерфейсе отображения справочника.

Адресация полей

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

Словари используют следующую адресацию:

Индекс элемента Значение

0

Ключ

1 .. N

Значения словаря. N – количество полей в словаре.

N + 1, отрицательные значения

undefined.

Модель словаря

Поле Тип Описание

columns

Object

Названия столбцов (ключа и значений) словаря. Присутствует только словарях с именованными столбцами.

Определяется как объект JSON следующего вида:

"columns": {
    "0": {
        "name": "название ключа"
    },
    "1": {
        "name": "название первого значения"
    },
    "2": {
        "name": "название второго значения"
    },
    ...
},
Значения в объекте можно пропускать и оставлять столбцы неназванными.

content

String

Пары ключ-значение, где ключ – реальное значение метрики, а значение – отображаемое пользователю в виджетах.

contentType

String

Строка, которая содержит тип значения словаря. В текущей реализации, всегда содержит object.

comment

String

Пользовательский комментарий к словарю.

description

String

Описание словаря.

group

String

ID группы, к которой принадлежит словарь.

id

String

Идентификатор словаря.

key_auto_gen

Boolean

Включить автоматическую генерация ключей. Если true – система будет генерировать ключи в формате UUIDv4 для новых записей.

name

String

Название словаря.

Примеры

Одно значение

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

Датчик присылает значения 0 и 1, которые соответствуют закрытию и открытию двери соответственно. При использовании словаря в виджете будут отображаться значения Closed и Open.

Значения и их представления указываются в виде JSON-строки в поле content.

{
    "name": "Door status",
    "content": "{\"0\":\"Closed\",\"1\":\"Open\"}",
    "description": "Transforms data from sensors in the human-readable form",
    "contentType": "object",
    "id": "66e40169029ed40f1105e599"
}

Набор значений

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

Для создания зашифрованных полей, нужно задать нужному полю название, содержащее слово password в поле columns. Регистр строки не важен.

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

{
    "name": "Employees",
    "content": "{\"1\":[\"John Doe\",\"jdoe@example.com\",\"<<crypt:8E993700B6C8BE0CD3849016AF2EF808:0ECB4A66999D516BF80AF91042C7D577>>\"],\"2\":[\"Jane Doe\",\"jdoe@example.com\",\"<<crypt:704FBEF78BF89315840EAF72E9581508:9E984544669ACF7DBCD6C9455360CEB8>>\"]}",
    "description": "List of employees",
    "contentType": "object",
    "columns": {
        "0": {
            "name": "ID"
        },
        "1": {
            "name": "Name"
        },
        "2": {
            "name": "Email"
        },
        "0": {
            "name": "Password"
        }
    },
    "id": "66e411bf029ed40f1105e59a"
},