Словарь
Словарь – это элемент системы, который хранит данные в формате "ключ – значение" или "ключ – массив значений". Ключ в словаре должен быть уникальным.
Словари могут использоваться для отображения данных в виджетах в более удобном виде, а также для хранения данных, которые могут быть использованы в уведомлениях, условиях перехода состояний и триггерах состояний.
| Также, в системе существует особый тип словарей – словари для мониторинга. |
| Словари не предназначены для хранения больших данных. Рекомендованный размер словаря – не больше 1000 записей. При этом, в системе данное значение ничем не контролируется и ограничений по размеру словаря нет. |
Настраивать словари можно на экране конфигурации, в разделе Словари.
Словари можно объединять в Группы словарей.
Именованные поля
Каждому значению словаря можно присвоить название. Например, словарь, который хранит список измерительных приборов, может выглядеть следующим образом:
Именованные поля можно использовать при подстановке значений свойств как переменных. Подробнее можно узнать в разделе Подстановка значений свойств как переменных.
Присвоить названия полям можно только при импорте словаря из таблицы 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 (не зависит от регистра). Для изменения значений зашифрованных полей нужно ввести значение заново в соответствующее поле. Расшифровать и использовать данные можно только на стороне сервера.
В системе зашифрованные поля выглядят следующим образом:
{
"content": "{\"john.doe\":\"<<crypt:8D0E4E0C1EFC3D4533005804379270C8:96CB2385E0E693D391DD69A156088C46ACAEBEF2C7266993509723F7ECA7DE42>>\",\"jane.doe\":\"<<crypt:280B6896DECF67A730AC1AE011B254FF:0BF81AAF0B206712967008CA9BC9367C>>\"}",
}
| Для шифрования полей необходимо включить шифрование в серверной конфигурации. Без этих предварительных настроек шифрование происходить не будет, а лишь будет скрываться значение в соответствующем поле в интерфейсе отображения справочника. |
Адресация полей
К полям словаря можно обращаться как к элементам массива. Это используется при изменении отображения словарей в классах свойств и при подстановке значений словаря как переменных в шаблонах уведомлений, аргументах мониторинга, условиях перехода состояний и других местах системы.
Словари используют следующую адресацию:
| Индекс элемента | Значение |
|---|---|
0 |
Ключ |
1 .. N |
Значения словаря. N – количество полей в словаре. |
N + 1, отрицательные значения |
|
Модель словаря
| Поле | Тип | Описание | ||
|---|---|---|---|---|
columns |
Object |
Названия столбцов (ключа и значений) словаря. Присутствует только словарях с именованными столбцами. Определяется как объект JSON следующего вида:
|
||
content |
String |
Пары |
||
contentType |
String |
Строка, которая содержит тип значения словаря. В текущей реализации, всегда содержит |
||
comment |
String |
Пользовательский комментарий к словарю. |
||
description |
String |
Описание словаря. |
||
group |
String |
ID группы, к которой принадлежит словарь. |
||
id |
String |
Идентификатор словаря. |
||
key_auto_gen |
Boolean |
Включить автоматическую генерация ключей. Если |
||
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"
}
Набор значений
Ниже представлен пример словаря, у которого к каждому ключу относится несколько значений. В этом словаре, у каждого сотрудника определено имя, адрес почты, а также зашифрованный пароль.
|
Для создания зашифрованных полей, нужно задать нужному полю название, содержащее слово Также, для шифрования строк, необходимо включить шифрование в поле |
{
"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"
},