Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Создание задач в Redmine из 1С

Создание задач в Redmine из 1С
Я
   bUbA
 
10.05.18 - 09:06
Доброе утро!

При создании задач использую мануал http://www.redmine.org/projects/redmine/wiki/Rest_api

Вот пример кода, с помощью которого я пытаюсь создать задачу:
    
    HTTPЗапрос = Новый HTTPЗапрос;
    HTTPЗапрос.Заголовки.Вставить("Connection", "keep-alive");
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/octet-stream");
    HTTPЗапрос.АдресРесурса = "/uploads.json";
    //HTTPЗапрос.АдресРесурса = "/issues.json";

    
    Попытка
        Текст = Новый ТекстовыйДокумент;
        Текст.Прочитать(issue, "UTF-8");
        СтрокаЗапроса = Текст.ПолучитьТекст();
        HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаЗапроса, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
    Исключение
        HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(Новый ДвоичныеДанные(issue));
    КонецПопытки;
    
    Попытка
        Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки

issue - это путь к файлу формата json
Вот содержимое этого файла:

{
    "issue": {
        "id": 9792,
        "project": {
            "id": 94,
            "name": "Имя проекта"
        },
        "tracker": {
            "id": 14,
            "name": "Поддержка"
        },
        "status": {
            "id": 1,
            "name": "Новая"
        },
        "priority": {
            "id": 5,
            "name": "Высокий"
        },
        "author": {
            "id": 194,
            "name": "Автор задачи"
        },
        "fixed_version": {
            "id": 202,
            "name": "Поддержка"
        },
        "subject": "Тестовая тема",
        "description": "Тестовое описание",
        "start_date": "2018-05-08",
        "due_date": "2018-05-08",
        "done_ratio": 0,
        "spent_hours": 0,
        "total_spent_hours": 0,
        "custom_fields": [
            {
                "id": 14,
                "name": "",
                "multiple": true,
                "value": []
            },
            {
                "id": 16,
                "name": "",
                "value": "0"
            }
        ],
        "created_on": "2018-05-08T15:55:05Z",
        "updated_on": "2018-05-08T15:55:05Z"
    }
}

Файл отправляю на адрес ресурса /uploads.json, получаю код ответа 201 и токен.

После этого формирую второй файл, тоже формата json:

{
    "issue": {
        "project_id": 1,
        "subject": "Тестовая тема",
        "uploads": [
            {
                "token": "7973.a062c6e4722ed1d9d547a09e89d60320c536062b7ef2b7f105cdb1d32f15f1e7"
            }
        ]
    }
}

Второй файл отправляю на адрес ресурса /issues.json. В ответ получаю код ответа 422 Unprocessable Entity. И содержание ответа

{
  "errors": [
    "Тема не может быть пустым",
    "Проект не может быть пустым",
    "Трекер не может быть пустым",
    "Статус не может быть пустым"
  ]
}

Такой же ответ я получаю, если сразу же первый файл отправляю на ресурс /issues.json. Но ведь все необходимые поля заполнены.

Подскажите пожалуйста в чем ошибка и куда копать надо.
 
 
   triviumfan
 
1 - 10.05.18 - 09:08
Неверное тело запроса, структура некорректна => ИС сообщает о незаполненных полях.
   triviumfan
 
2 - 10.05.18 - 09:08
Строка запроса в студию!
   bUbA
 
3 - 10.05.18 - 09:12
(1) Такую структуру файла я взял путем отправки GET запроса
/issues/НомерЗадачи.json, и на основании полученного файла создал свой.

(2) Строка запроса - это содержимое первого файла
   ximik33rus
 
4 - 10.05.18 - 09:14
"project": {
            "id": 94,
            "name": "Имя проекта"
        },
        "tracker": {
            "id": 14,
            "name": "Поддержка"
        },
        "status": {
            "id": 1,
            "name": "Новая"
        },
        "priority": {
            "id": 5,
            "name": "Высокий"
        },
        "author": {
            "id": 194,
            "name": "Автор задачи"
        },
        "fixed_version": {
            "id": 202,
            "name": "Поддержка"


Может, для некоторых элементов типа status, tracker следует использовать не кириллицу а латинские ключи? или цифровые идентификаторы. На .NET к примеру подобные элементы определены типом данных "Перечисление" и там поиск и заполнение нужным значением производится именно идентификатором а не заголовком.
   bUbA
 
5 - 10.05.18 - 09:28
(4) Пробовал менять на латиницу, использовать идентификатор вместо имени, пробовал вот так

{
    "issue": {
        "id": 9789,
        "project": 94,
        "tracker": 14,
        "status": 1,
        "priority": {
            "id": 5,
            "name": "Высокий"
        },
        "author": {
            "id": 194,
            "name": "Автор"
        },
        "fixed_version": {
            "id": 202,
            "name": "Поддержка"
        },
        "subject": "1",

и вот так

{
    "issue": {
        "id": 9789,
        "project": "System",
        "tracker": "Podderzka",
        "status": "Novaya",
        "priority": {
            "id": 5,
            "name": "Высокий"
        },
        "author": {
            "id": 194,
            "name": "Анастасия Кузеванова"
        },
        "fixed_version": {
            "id": 202,
            "name": "Поддержка Дилеров"
        },
        "subject": 1,

Но ответ везде один и тот же
   ximik33rus
 
6 - 10.05.18 - 09:30
а совсем "name": исключить нельзя?
   Новиков
 
7 - 10.05.18 - 09:30
   Apokalipsec
 
8 - 10.05.18 - 09:31
   triviumfan
 
9 - 10.05.18 - 09:32
А ты вообще пробовал какие данные отправлять? Или сразу же напоролся на issues?
У меня тут недавно тоже был недавно пример... так оказалось, что в в тело запроса нужно было передавать "{ body: <твой json> }", хотя в документации этого не было)
   triviumfan
 
10 - 10.05.18 - 09:34
(9) yii фреймворк)
 
 Рекламное место пустует
   zippygrill
 
11 - 10.05.18 - 09:35
какой он ужасный этот ваш Редмайн
   g00d
 
12 - 10.05.18 - 09:37
(11) лучший из того что есть бесплатно
   bUbA
 
13 - 10.05.18 - 09:39
(7) В обработке используются только методы GET, мне же нужен POST
   bUbA
 
14 - 10.05.18 - 09:39
(8) subject есть, сейчас еще попробую формат поменять...
   bUbA
 
15 - 10.05.18 - 09:40
(9) Так мне только issue и надо
   triviumfan
 
16 - 10.05.18 - 09:45
   triviumfan
 
17 - 10.05.18 - 09:46
Странный у тебя Content-Type
   bUbA
 
18 - 10.05.18 - 09:56
Спасибо, ребята!!!

В итоге помогло переделывание текста запроса под формат из (8) и замена текста заголовка на "application/json"!

Буду дальше допиливать)
   zippygrill
 
19 - 10.05.18 - 13:27
(12) Как насчет Битрикса24?
   g00d
 
20 - 10.05.18 - 14:16
(19) прошлой осенью мели глупость перейти с редмайна на битрикс24. Так то красово конечно, но с отчетами по учету времени там беда, интерфейс тормозной.
В общем редмайн был быстрее, точнее и удобнее. Очень гибко кастомизируется.
   g00d
 
21 - 10.05.18 - 14:18
(19) прошлой осенью имели глупость перейти с редмайна на битрикс24. Так то красиво конечно, но с отчетами по учету времени там беда + интерфейс тормозной.
В общем редмайн был быстрее, точнее и удобнее. Очень гибко кастомизируется.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует