Задача [0475]: API для работы со справочниками

Формулировка проблемы: необходимо реализовать методы API для:

В частности, необходимо возвращать не только код справочника, но и его имя и комментарий. Аналогично для столбцов справочника: возвращать не только код столбца, но и его имя, комментарий и возможность перевода.

Решение:

Получение списка справочников

URL метода: rest/api/dictionaries.

Тип запроса: GET.

Метод принимает следующие входные параметры:

  • getHidden - возвращать ли скрытые справочники, true/false (не обяз., по умолчанию false);

  • locale (не обяз.) - код локали (при отсутствии параметра используется язык системы по умолчанию).

Пример передаваемых данных.

rest/api/dictionaries?getHidden=false

Метод должен возвращать массив только отображаемых справочников системы (для getHidden = false, скрытые сюда не попадают, как например справочник приоритетов) либо всех, включая скрытые, справочников (для getHidden = true). Каждый элемент массива характеризуется следующими параметрами:

  • id - идентификатор справочника;

  • code - код справочника;

  • name - имя справочника;

  • comment - комментарий к справочнику;

Пример возвращаемого массива.

[  
   {  
      "id": "eb77639e-60b8-4a50-8327-0482063e8935",
      "code": "resolution_work_types",
      "name": "Типы работ по резолюции",
      "comment": "Значения выпадающего списка типа работы при наложении резолюции"
   },
   {  
      "id": "467d3eac-252c-427e-bd27-ba8704587257",
      "code": "calendar_types",
      "name": "Назначения календаря",
      "comment": "Статусы сотрудников"
   },
   {  
      "id": "7b953be8-bddb-4ce4-bbfd-ae9548f69c7f",
      "code": "BookPointer",
      "name": "Уровень проведения тренингов",
      "comment": ""
   },
   {  
      "id": "a830ed90-1ef5-4829-b3a4-efa8d087ed6a",
      "code": "BookPointer2",
      "name": "Уровень корпоративного духа",
      "comment": ""
   },
   {  
      "id": "9b077c41-4efa-48ce-8ce9-af2fe6145e96",
      "code": "send_items",
      "name": "Пункты меню отправки",
      "comment": "Пункты меню отправки документа/работы"
   },
   {  
      "id": "f75e8f6a-7b5a-493b-946b-ac35a628624f",
      "code": "Vid_otpuska",
      "name": "Виды отпусков",
      "comment": ""
   },
   {  
      "id": "dfb986ca-6dd2-415f-9304-bfab19d6d4af",
      "code": "nazionalnost",
      "name": "Национальности",
      "comment": ""
   },
   {  
      "id": "a0b8ee66-2820-4fb7-991d-4723955ccef5",
      "code": "action_progress",
      "name": "Подписи прогресса поручений",
      "comment": "Подписи прогресса поручений"
   },
   {  
      "id": "2d7729d7-1230-4c1c-a952-ebb4cf65278a",
      "code": "resolution",
      "name": "Тексты резолюций",
      "comment": "Справочник стандартных текстов резолюций"
   },
   {  
      "id": "b08289f0-fd6b-4b3c-bc99-fae8d4296acb",
      "code": "obrazovanie",
      "name": "Образование",
      "comment": ""
   }
]
Получение описания и/или записей справочника

URL метода: rest/api/dictionaries/{code}, где code - это код справочника.

Тип запроса: GET.

Метод принимает следующие входные параметры:

  • getColumns - возвращать ли описание справочника, true/false (не обяз., по умолчанию true);

  • getItems - возвращать ли записи справочника, true/false (не обяз., по умолчанию true);

  • locale - код локали (при отсутствии параметра используется язык системы по умолчанию)..

Пример передаваемых данных.

rest/api/dictionaries/send_items?getColumns=true&getItems=true

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

  • id - идентификатор справочника;

  • code - код справочника;

  • name - имя справочника;

  • comment - комментарий к справочнику;

  • columns - список столбцов справочника (для getColumns = true);

  • items - список значений справочника (для getItems = true).

Для каждого столбца справочника (columns) передается:

  • id - идентификатор столбца;

  • code - код столбца;

  • name - имя столбца;

  • comment - комментарий столбца;

  • translate - переводить ли значение столбца, true/false.

Примечание.

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

Для каждой записи справочника (items) передаются значения кода столбца, а внутри каждого столбца - непосредственно значения записи:

  • id - идентификатор значения;

  • value - значение (только в локали С);

  • translation - перевод значения согласно параметру locale; при отсутствии параметра используется язык системы по умолчанию.

Примечание.

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

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

См. подробнее в примере ниже.

Пример возвращаемого массива.

{
  "id": "eb77639e-60b8-4a50-8327-0482063e8935",
  "code": "send_items",
  "name": "Пункты меню отправки",
  "comment": "Пункты меню отправки документа/работы",
  "columns": {
    "item_number": {
      "id": "e5d3ce83-25d1-46ae-94f9-c33930fc1565",
      "code": "item_number",
      "name": "Порядковый номер",
      "comment": "Используется для задания порядка пунктов меню отправки",
      "translate": false
    },
    "item_name": {
      "id": "03e23318-71ec-4ced-a54c-73affaf43079",
      "code": "item_name",
      "name": "Название пункта меню отправки",
      "comment": "Текст, который будет отображаться в соответствующем пункте меню",
      "translate": true
    },
    "item_process": {
      "id": "27f3090b-0a57-4c1f-8343-c56e8d39117d",
      "code": "item_process",
      "name": "Действие, которое осуществляет пункт",
      "comment": "",
      "translate": false
    }
  },
  "items": {
    "b7c8861f-37df-4fe4-9f67-4f1cb243b008": {
      "item_number": {
        "id": "b7c8861f-37df-4fe4-9f67-4f1cb243b008",
        "value": "3",
        "translation": null
      },
      "item_name": {
        "id": "b7c8861f-37df-4fe4-9f67-4f1cb243b008",
        "value": "Перепоручить",
        "translation": "Перепоручить"
      },
      "item_process": {
        "id": "b7c8861f-37df-4fe4-9f67-4f1cb243b008",
        "value": "assignment",
        "translation": null
      }
    },
    "80c92a72-988f-422a-92b9-70cd37f15dbc": {
      "item_number": {
        "id": "80c92a72-988f-422a-92b9-70cd37f15dbc",
        "value": "6",
        "translation": null
      },
      "item_name": {
        "id": "80c92a72-988f-422a-92b9-70cd37f15dbc",
        "value": "На утверждение",
        "translation": "На утверждение"
      },
      "item_process": {
        "id": "80c92a72-988f-422a-92b9-70cd37f15dbc",
        "value": "approval",
        "translation": null
      }
    }
  }
}

Альтернативный поток событий. Передан некорректный параметр code: справочника с таким кодом не существует. Сервер возвращает следующий ответ (с HTTP-кодом 200):

{
  "errorCode": "13",
  "errorMessage": "Справочник с кодом %значение% не найден"
}

действие не выполняется.