Задача [API81]: Поддержка кодов форм в API

Формулировка проблемы: в имеющихся методах API указание на формы производится по их идентификаторам, однако при экспорте/импорте форм между различными экземплярами Synergy идентификатор одной и той же формы изменяется, а код - нет (если этого не сделали специально вручную). Таким образом, для написания портабельных внешних модулей требуется обращаться к формам по их кодам.

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

Важное замечание

Для всех перечисленных методов API по умолчанию справедливо следующее: если одновременно указан и код формы, и её идентификатор, обращение к форме производится по её коду. Если требуется иное поведение, оно особо оговаривается.

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

Получение описания формы (альтернативный метод)

URL метода: rest/api/asforms/form_ext

Необходимо добавить входной параметр formCode - код формы.

Поиск данных по форме или записям реестра

URL метода: rest/api/asforms/search

Необходимо добавить входной параметр formCode - код формы, может быть передано несколько значений, также разрешается указывать в названии порядковые номера, аналогично formUUID (см. документацию).

Допускается смешивать в одном запросе указание и formUUID, и formCode - поиск при этом должен осуществляться по всем указанным формам, как определённым по formUUID, так и по formCode.

Расширенный поиск данных по форме или записям реестра

URL метода: rest/api/asforms/search/advanced.

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

Сохранение данных по форме

URL метода: rest/api/asforms/data/save.

Необходимо добавить необязательный входной параметр formCode - код формы.

Получение данных файла по форме по умолчанию

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

Необходимо добавить входной параметр formCode - код формы.

Получение данных об объекте из адресной книги по id

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

Необходимо добавить выходной параметр formCode - код формы:

{
   "type": "person",
   "lastName": "Иванов",
   "firstName": "Иван",
   "patronymic": "Иванович",
   "birthDate": "1993-10-12",
   "isPublic": "false",
   "photoUrl": "contact_photo?itemID=6de27bc6-1da0-4fec-b03f-5d917c3f3413",
   "note": "Пример примечания",
   "tags": "Ключевое слово1, Ключевое слово2",
   "formUUID": "null",
   "formCode": ""
   "phone": [
      "230101"
   ],
   "im": [
      "i.ivanov@jabber.arta.kz"
   ],
   "mail": [
      "ivanov_ivan@ivan.ru"
   ],
   "mobile": [
      "87022301010",
      "87012301010"
   ],
   "url": [
      "http://ww.kz"
   ]
} 
Список дополнительных карточек для данного подразделения

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

В каждый возвращаемый объект с информацией о карточке пользователя необходимо добавить поле formCode - код формы.

Поиск подразделения по значению поля дополнительной карточки

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

Необходимо добавить входной параметр formCode - код формы карточки, по которой осуществляется поиск.

Полная информация о документе

URL метода: rest/api/docflow/doc/document_info.

В каждый возвращаемый объект с информацией о документе нужно добавить поле formCode - код формы реестра, к которому принадлежит документ. Если документ не принадлежит ни к какому реестру, поле не добавляется.

Получение информации о личных карточках пользователя

URL метода rest/api/personalrecord/forms/{userID}.

В каждый возвращаемый объект с информацией о личной карточке пользователя нужно добавить поле formCode - код формы.

Получение информации о должностях департамента с карточками

URL метода: /rest/api/positions/getPositionsWithCards

Необходимо добавить входной параметр positionFormCode - код формы, может быть передано несколько значений, также разрешается указывать в названии порядковые номера, аналогично positionFormID (см. документацию).

Допускается смешивать в одном запросе указание и positionFormUUID, и positionFormCode (с разными порядковыми номерами). Если positionFormUUID и positionFormCode указаны с одним порядковым номером, то поиск осуществляется по positionFormCode.

Кроме этого, в каждый возвращаемый объект с информацией о должности нужно добавить поле formCode - код формы.

Для данного метода необходимо обновить альтернативный поток №2(0414):

Альтернативный поток №2. Параметру cmpIsNeeded присвоено значение true, не переданы параметры positionFormID, positionFormCode, cmpID. Сервер возвращает ошибку HTTP 400 с сообщением:


{
    "errorCode": 13,
    "errorMessage": 
    "Не переданы параметры positionFormID|positionFormCode, cmpID"
}

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

Получение списка дополнительных карточек для данной должности

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

В каждый возвращаемый объект с информацией о карточке должности нужно добавить поле formCode - код формы карточки.

Получение должности по значению поля дополнительной карточки

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

Необходимо добавить входной параметр formCode - код формы.

Поиск пользователей по значению поля дополнительной карточки

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

Необходимо добавить входной параметр formCode - код формы.

Создание файла по форме для результата по форме завершения "форма"

URL метода: rest/api/workflow/work/get_form_for_result.

Необходимо добавить входной параметр formCode - код формы.