Формулировка проблемы: для реализации метода создания документа по реестру необходим перечень полей РКК по типу документа данного реестра.
Решение: для этого необходимо реализовать следующие API методы:
Метод для получения списка типов документов
URL метода: rest/api/docflow/doctypes
Тип запроса: GET
Метод принимает следующие входные параметры:
registerID
- идентификатор журнала (необяз.).
При вводе данного параметра возвращаются те типы документов,
которые относятся к данному журналу;
description
- параметр (необяз., по умолчанию
short
), который принимает следующие значения:
full
- возвращается полное описание типа
документа
short
- возвращается только
идентификатор, код и название типа документа
recordsCount
- количество результатов,
которые необходимо вернуть (по умолчанию 30). Максимальное
значение параметра 100;
page
- номер страницы (по умолчанию 0);
locale
(не обяз.) - код локали (при
отсутствии параметра используется
язык
системы по умолчанию).
Данный метод возвращает список всех типов документов либо при указании идентификатора журнала список типов документов данного журнала с полным либо кратким описанием. Список типов документов возвращается с учетом прав пользователя, который вызывает API метод, на данные типы документов. Если у пользователя нет доступа к какому-либо типу документа, то данный тип не возвращается в списке.
Метод при условии description=short
возвращает массив JSON, состоящий из следующих полей:
typeID
- идентификатор типа документа
code
- код типа документа
name
- название типа документа
Метод при условии description=full
возвращает массив JSON, состоящий из следующих полей:
typeID
- идентификатор типа документа
code
- код типа документа
name
- название типа документа
calc_method_term
- способ расчета срока, один
из следующих вариантов:
WORKING_DAYS
- в рабочих днях
CALENDAR_DAYS
- в календарных днях
duration
- длительность по умолчанию (в днях)
input_method_term
- способ ввода срока, один
из следующих вариантов:
DURATION
- длительность
FINISH_DATE
- дата завершения
registerID
- идентификатор журнала
baseRegisterID
- идентификатор базового
журнала
formID
- идентификатор формы
form_type
- тип реализации формы, один из
следующих вариантов:
0 - форма на основе xform
1 - новая реализация форм
routes
- массив, который содержит названия
шаблонов маршрутов
checkDocCard
- валидация ркк перед отправкой,
один из следующих вариантов:
true
- проводится валидация РКК перед
отправкой документа
false
- валидация не проводится
demand_resuser
- требовать ввода исполнителя,
один из следующих вариантов:
true
- требуется ввод исполнителя перед
отправкой документа
false
- ввод исполнителя не требуется
demand_docfile
- требовать указания дела,
один из следующих вариантов:
true
- требуется указание дела перед
отправкой документа
false
- указание дела не требуется
demand_regcomment
- требовать ввода
комментария при регистрации. Один из следующих вариантов:
true
- требуется ввод комментария при
регистрации
false
- ввод комментария не требуется
reg_condition
- массив, который содержит
условия регистрации. В данном массиве возвращаются только те
условия, которые отмечены для проверки на наличие. Если ни одно
из условий не отмечено, то массив возвращается пустой. Условия
регистрации следующие:
- `demand_signature` - наличие подписи - `demand_approval` - наличие утверждения - `demand_resolution` - наличие резолюции
fields
- массив объектов со следующими
полями:
name
- название поля РКК, один из
следующих вариантов:
subject
- краткое содержание
doc_type
- тип документа
number
- номер
reg_date
- дата регистрации
duration
- длительность/завершение
correspondent_org
- корреспондент
(орг)
correspondent
- корреспондент
author
- автор
reg_user
- зарегистрировал
control
- является контрольным
base_number
- номер исх.
base_date
- дата исх.
doc_file
- дело
base
- основание
user
- исполнитель
number
- порядковый номер поля,
отсутствует только для поля user
.
В данном массиве объектов возвращаются только те поля, которые отмечены для отображения в карточке документа. Поля, которые не отображаются в карточке документа, в данном массиве объектов не возвращаются.
Примеры запроса:
/rest/api/docflow/doctypes?description=full
/rest/api/docflow/doctypes?registerID=8f85e270-ebf1-11e5-835c-525400bb7fc6&recordsCount=10
Пример возвращаемого массива при условии
description=full
:
[ { "typeID" : "f30f6b31-4cbe-12e31f70-8030-0012a4ee", "code" : "internal", "name" : "Внутренние документы", "calc_method_term" : "WORKING_DAYS", "duration" : 5, "input_method_term" : "DURATION", "registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6", "baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6", "formID" : "52sf2270-4cc0-11e6-8030-001ef892a4ee", "form_type" : 0, "routes" : [ "Шаблон приказов", "Шаблон заявлений" ], "checkDocCard" : false, "demand_resuser" : false, "demand_docfile" : false, "demand_regcomment" : false, "reg_condition" : [ "demand_signature", "demand_approval" ], "fields" : [ { "name" : "subject", "number" : 1 }, { "name" : "doc_type", "number" : 2 }, { "name" : "number", "number" : 3 }, { "name" : "reg_date", "number" : 4 }, { "name" : "correspondent_org", "number" : 5 }, { "name" : "correspondent", "number" : 6 }, { "name" : "author", "number" : 7 }, { "name" : "reg_user", "number" : 9 }, { "name" : "control", "number" : 10 }, { "name" : "doc_file", "number" : 13 }, { "name" : "base", "number" : 14 } ] }, { "typeID" : "0db3a170-4e38-11e6-8030-001ef892a4ee", "code" : "incoming", "name" : "Входящие документы", "calc_method_term" : "WORKING_DAYS", "duration" : 5, "input_method_term" : "DURATION", "registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6", "baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6", "formID" : "22s12270-4cc0-11e6-8030-001ef892a4ee", "form_type" : 0, "routes" : [ "Шаблон входящих писем", "Шаблон писем" ], "checkDocCard" : false, "demand_resuser" : false, "demand_docfile" : false, "demand_regcomment" : false, "reg_condition" : [ "demand_signature", "demand_approval" ], "fields" : [ { "name" : "subject", "number" : 1 }, { "name" : "doc_type", "number" : 2 }, { "name" : "number", "number" : 3 }, { "name" : "reg_date", "number" : 4 }, { "name" : "correspondent_org", "number" : 5 }, { "name" : "correspondent", "number" : 6 }, { "name" : "author", "number" : 7 }, { "name" : "reg_user", "number" : 9 }, { "name" : "control", "number" : 10 }, { "name" : "doc_file", "number" : 13 }, { "name" : "base", "number" : 14 } ] }, { "typeID" : "fd96dff0-4e37-11e6-8030-001ef892a4ee", "code" : "outgoing", "name" : "Исходящие документы", "calc_method_term" : "WORKING_DAYS", "duration" : 5, "input_method_term" : "DURATION", "registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6", "baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6", "formID" : "21df270-4cc0-11e6-8030-001ef892a4ee", "form_type" : 0, "routes" : [ "Шаблон заявок", "Шаблон заявок на закуп" ], "checkDocCard" : false, "demand_resuser" : false, "demand_docfile" : false, "demand_regcomment" : false, "reg_condition" : [ "demand_signature", "demand_approval" ], "fields" : [ { "name" : "subject", "number" : 1 }, { "name" : "doc_type", "number" : 2 }, { "name" : "number", "number" : 3 }, { "name" : "reg_date", "number" : 4 }, { "name" : "correspondent_org", "number" : 5 }, { "name" : "correspondent", "number" : 6 }, { "name" : "author", "number" : 7 }, { "name" : "reg_user", "number" : 9 }, { "name" : "control", "number" : 10 }, { "name" : "doc_file", "number" : 13 }, { "name" : "base", "number" : 14 } ] } ]
Метод для получения описания типа документа
URL метода:
rest/api/docflow/doctypes/{docTypeCode}
Тип запроса: GET
Метод принимает следующие входные параметры:
code
- код типа документа (необяз.);
locale
- идентификатор локали (необяз., по
умолчанию идентификатор локали с кодом ru
).
Метод возвращает полное описание типа документа по его коду, в том числе и перечень отображаемых в карточке документа полей с учетом прав пользователя, который вызывает API метод, на данный тип документа.
Метод возвращает объект JSON, состоящий из следующих полей:
typeID
- идентификатор типа документа
code
- код типа должности
name
- название типа документа
calc_method_term
- способ расчета срока, один
из следующих вариантов:
WORKING_DAYS
- в рабочих днях
CALENDAR_DAYS
- в календарных днях
duration
- длительность по умолчанию (в днях)
input_method_term
- способ ввода срока, один
из следующих вариантов:
DURATION
- длительность
FINISH_DATE
- дата завершения
registerID
- идентификатор журнала
baseRegisterID
- идентификатор базового
журнала
formID
- идентификатор формы
form_type
- тип реализации формы, один из
следующих вариантов:
0 - форма на основе xform
1 - новая реализация форм
routes
- массив, который содержит названия
шаблонов маршрутов
checkDocCard
- валидация ркк перед отправкой,
один из следующих вариантов:
true
- проводится валидация РКК перед
отправкой документа
false
- валидация не проводится
demand_resuser
- требовать ввода исполнителя,
один из следующих вариантов:
true
- требуется ввод исполнителя перед
отправкой документа
false
- ввод исполнителя не требуется
demand_docfile
- требовать указания дела,
один из следующих вариантов:
true
- требуется указание дела перед
отправкой документа
false
- ввод исполнителя не требуется
demand_regcomment
- требовать ввода
комментария при регистрации. Один из следующих вариантов:
true
- требуется ввод комментария при
регистрации
false
- ввод комментария не требуется
reg_condition
- массив, который содержит
условия регистрации. В данном массиве возвращаются только те
условия, которые отмечены для проверки на наличие. Если ни одно
из условий не отмечено, то массив возвращается пустой. Условия
регистрации следующие:
- `demand_signature` - наличие подписи - `demand_approval` - наличие утверждения - `demand_resolution` - наличие резолюции
fields
- массив объектов со следующими
полями:
name
- название поля РКК, один из
следующих вариантов:
subject
- краткое содержание
doc_type
- тип документа
number
- номер
reg_date
- дата регистрации
duration
- длительность/завершение
correspondent_org
- корреспондент
(орг)
correspondent
- корреспондент
author
- автор
reg_user
- зарегистрировал
control
- является контрольным
base_number
- номер исх.
base_date
- дата исх.
doc_file
- дело
base
- основание
user
- исполнитель
number
- порядковый номер поля,
отсутствует только для поля user
.
В данном массиве объектов возвращаются только те поля, которые отмечены для отображения в карточке документа. Поля, которые не отображаются в карточке документа, в данном массиве объектов не возвращаются.
Примеры запроса:
/rest/api/docflow/doctypes/outgoing
Пример возвращаемого объекта JSON при указании кода типа документа:
{ "typeID" : "fd96dff0-4e37-11e6-8030-001ef892a4ee", "code" : "outgoing", "name" : "Исходящие документы", "calc_method_term" : "WORKING_DAYS", "duration" : 5, "input_method_term" : "DURATION", "registerID" : "8f85e270-ebf1-11e5-835c-525400bb7fc6", "baseRegisterID" : "aa55e270-ebf1-11e5-835c-525400bb7fc6", "formID" : "66df2270-4cc0-11e6-8030-001ef892a4ee", "form_type" : 0, "routes" : [ "Шаблон заявок", "Шаблон заявок на закуп" ], "checkDocCard" : false, "demand_resuser" : false, "demand_docfile" : false, "demand_regcomment" : false, "reg_condition" : [ "demand_signature", "demand_approval" ], "fields" : [ { "name" : "subject", "number" : 1 }, { "name" : "doc_type", "number" : 2 }, { "name" : "number", "number" : 3 }, { "name" : "reg_date", "number" : 4 }, { "name" : "correspondent_org", "number" : 5 }, { "name" : "correspondent", "number" : 6 }, { "name" : "author", "number" : 7 }, { "name" : "reg_user", "number" : 9 }, { "name" : "control", "number" : 10 }, { "name" : "doc_file", "number" : 13 }, { "name" : "base", "number" : 14 } ] }
Альтернативные потоки событий
Метод для получения списка типов документов
Альтернативный поток №1. Передан некорректный
(несуществующий) параметр registerID
.
Сервер возвращает ошибку HTTP 400 с текстом:
{ "errorCode" : 3, "errorMessage" : "Передан некорректный параметр registerID" }
действие не выполняется.
Метод для получения описания типа документа
Альтернативный поток №1. Передан некорректный
(несуществующий) параметр code
. Сервер
возвращает ошибку HTTP 400 с текстом:
{ "errorCode" : 3, "errorMessage" : "Передан некорректный параметр code" }
действие не выполняется.
Альтернативный поток №2. У пользователя нет прав на данный тип документа. Сервер возвращает ошибку HTTP 403 с сообщением:
{ "errorCode" : 2, "errorMessage" : "У вас отсутствуют права на данный тип документа" }
действие не выполняется.