Словарь
Словарь – это элемент системы, который хранит данные в формате "ключ – значение" или "ключ – массив значений". Ключ в словаре должен быть уникальным.
Словари могут использоваться для отображения данных в виджетах в более удобном виде, а также для хранения данных, которые могут быть использованы в уведомлениях, условиях перехода состояний и триггерах состояний.
NOTE
Также, в системе существует особый тип словарей – словари для мониторинга .
NOTE
Словари не предназначены для хранения больших данных. Рекомендованный размер словаря – не больше 1000 записей. При этом, в системе данное значение ничем не контролируется и ограничений по размеру словаря нет.
Настраивать словари можно на экране конфигурации, в разделе Словари.
Словари можно объединять в Группы словарей.
Именованные поля
Каждому значению словаря можно присвоить название. Например, словарь, который хранит список измерительных приборов, может выглядеть следующим образом:

Именованные поля можно использовать при подстановке значений свойств как переменных. Подробнее можно узнать в разделе Подстановка значений свойств как переменных.
Присвоить названия полям можно только при импорте словаря из таблицы Excel. В текущей версии пользовательского интерфейса системы SmartDCIM функционал переименования столбцов недоступен.
Для импорта именованных полей, таблица должна выглядеть следующим образом:
| Название | Серийный номер | Ввод в эксплуатацию |
|---|---|---|
| ПУЛЬСАР 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 (не зависит от регистра). Для изменения значений зашифрованных полей нужно ввести значение заново в соответствующее поле. Расшифровать и использовать данные можно только на стороне сервера.

В системе зашифрованные поля выглядят следующим образом:
json
{
"content": "{\"john.doe\":\"<<crypt:8D0E4E0C1EFC3D4533005804379270C8:96CB2385E0E693D391DD69A156088C46ACAEBEF2C7266993509723F7ECA7DE42>>\",\"jane.doe\":\"<<crypt:280B6896DECF67A730AC1AE011B254FF:0BF81AAF0B206712967008CA9BC9367C>>\"}",
}NOTE
Для шифрования полей необходимо включить шифрование в серверной конфигурации . Без этих предварительных настроек шифрование происходить не будет, а лишь будет скрываться значение в соответствующем поле в интерфейсе отображения справочника.
Адресация полей
К полям словаря можно обращаться как к элементам массива. Это используется при изменении отображения словарей в классах свойств и при подстановке значений словаря как переменных в шаблонах уведомлений, аргументах мониторинга, условиях перехода состояний и других местах системы.
Словари используют следующую адресацию:
| Индекс элемента | Значение |
|---|---|
| 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.
json
{
"name": "Door status",
"content": "{\"0\":\"Closed\",\"1\":\"Open\"}",
"description": "Transforms data from sensors in the human-readable form",
"contentType": "object",
"id": "66e40169029ed40f1105e599"
}Набор значений
Ниже представлен пример словаря, у которого к каждому ключу относится несколько значений. В этом словаре, у каждого сотрудника определено имя, адрес почты, а также зашифрованный пароль.
NOTE
Для создания зашифрованных полей, нужно задать нужному полю название, содержащее слово
passwordв полеcolumns. Регистр строки не важен. Также, для шифрования строк, необходимо включить шифрование в полеencryptсерверной конфигурации. Без этих настроек поля не будут шифроваться, система будет просто скрывать их значение в пользовательском интерфейсе отображения словаря.
json
{
"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"
},