Стальной Глеб | Руководитель офиса БИТ:ERP | Первый БИТ

«Как запустить 1С:ERP 2 на тысячу пользователей и не написать ни одной страницы ТЗ?»

В рамках доклада расскажу о процессе и результатах перехода 3 scrum-команд на использование современных инженерных практик (разработка через поведение, ночные сборки, непрерывный анализ качества кода) на проектах 1С. - Почему мы всегда готовим EPC-диаграммы, и как они помогают нам проектировать не только систему, но и все интеграции (да, мы на проектах, как правило, используем RabbitMQ); - Как мы разрабатываем фичи (BDD), как структурируем, чтобы сохранить читаемость на больших проектах (когда BDD-сценарии занимают 10 тысяч строк) и как мы смогли отказаться от постановок задач в других форматах (кроме задач по обмену, там xsd); - Зачем гит консультанту; Рассмотрю полный цикл работ на примерах конкретных проектов. Также покажу какие инструменты и как мы используем (Slack, Zoom, Jira, Confluence, JSD, Bitbucket, Vanessa Behavior, Jenkins, SonarQube, Allure и т.п.)

Интеграция между Atlassian Jira и 1С:Предприятие 8.3 используя Jira REST API (выборка, создание и изменение запросов, чтение, создание и удаление записей о работах, чтение комментариев и другие возможности)

Обмен - Обмен с другими системами

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с Atlassian Jira используя Jira REST API. Ключевые функции: выборка запросов с использованием JQL; добавление и изменение запросов; добавление, изменение и удаление записей о работах; чтение комментариев к запросам; сохранение всех ключевых параметров между сеансами работы. Тестирование проводилось на платформе 1С (8.3.11.2954) совместно с JIRA Server platform (7.3.7)

Функции

Ключевые функции

  1. Получение для проекта Jira всех типов запросов (issue type)  и связанных с ними статусов (status) запросов.
  2. Выборка измененных запросов из Jira с отбором по проекту, периоду, с ограничением на кол-во отбираемых записей и используя шаблон JQL запроса.
  3. Получение списка пользователей Jira исходя из полей запроса (assignee, reporter, creator), полей worklog-а (autor, update autor) и полей комментариев (autor, update autor) и отображение имени пользователя и представления пользователя при выборе пользователя при редактировании полей запроса и полей записи о работе.
  4. Чтение и запись ключевых полей запроса (issue) Jira: Наименование (summary), Описание (description), Тип запроса (issue type), Родитель подзадачи (parent), Ссылка на epic (epic link), Приоритет (priority), Исполнитель (assignee), Автор (reporter), Создатель (creator), Срок исполнения (due date), Дата создания (created), Дата обновления (updated), Компоненты проекта Jira (components), Метки (labels), Первоначальная оценка (original estimate), Оставшееся время (remaining estimate), Всего затраты (time spent).
  5. Чтение и установка нового статуса запроса (status). Получение допустимых транзакции (transitions) Jira для перехода к новому статусу и осуществление перехода используя подходящую транзакцию.
  6. Чтение записей о работах (worklog) для запроса Jira. Добавление, Изменение и Удаление записей о работе.
  7. Чтение комментариев к запросу Jira. Формирование ссылки для перехода в Jira непосредственно к выбранному комментарию.

Дополнительные возможности

  1. В случае ошибки в момент выполнения http запроса к Jira, программа выдает диагностическое сообщение с кодом состояния и открывает для просмотра в виде текста файл с ответом от Jira.
  2. Программа отдельно контролирует список изменившихся полей запроса и при записи запроса передает в  Jira только изменения.
  3. Основные значения сохраняются между сеансами работы с обработкой (параметры подключения к Jira, типы и статусы запросов, настройки отбора выборки запросов, список пользователей, последние выбранные значения полей запроса).
  4. Реквизиты и элементы формы для сохраняемых полей создаются программно.

Источники и ссылки

  1. Спецификация по работе с JIRA с использованием REST: http://docs.atlassian.com/jira/REST/latest/
  2. Спецификация REST API для JIRA SERVER: https://docs.atlassian.com/jira/REST/server/
  3. Примеры REST запросов к JIRA: https://developer.atlassian.com/server/jira/platform/jira-rest-api-examples/
  4. Продвинутый поиск в Jira используя Jira Query Language (JQL): https://confluence.atlassian.com/jirasoftwareserver073/advanced-searching-861256227.html
  5. Онлайн просмотр .json: jsonviewer.stack.hu

Особенности и ограничения

  1. Данная обработка предназначена для работы с серверной версией Jira.
  2. Для подключения к Jira используется обычная проверка подлинности (Basic authentication).
  3. При изменении статуса запроса (status) выполняется дополнительный запрос для определения подходящей транзакций перехода от текущего к выбранному статусу. В определенных случаях (например для "подзадачи") переход к выбранному статусу может оказаться невозможным. В таком случае программа выдаст диагностическое сообщение "Не удалось определить ""ID транзакции"" для статуса ...".
  4. При создании в Jira записи о работах (work log) в качестве автора запись всегда устанавливается пользователи под которым выполнено подключение к Jira (указать другого автора нельзя).
  5. При определенных настройках Jira, в момент перехода к новому статусу, также может изменится исполнитель (assignee) на пользователя от имени которого выполнено подключение к Jira.
  6. Используя REST невозможно изменить тип запроса "подзадача" на другой тип запроса. При попытке выполнить такое изменение Jira вернет код ошибки и описание ошибки в файле с ответом.
  7. Для комментариев к запросу реализовано только чтения списка комментариев и непосредственный переход к комментарию в браузере. Создание, изменение и удаление комментариев не поддерживается (при необходимости может быть легко реализовано по аналогии как это сделано для  записей о работах (worklog).

Варианты использования

Короткий ролик с демонстрацией основных возможностей обработки (~ 7 мин, только текстовые комментарии, без голосового сопровождения)

Подключение к серверу Jira

На закладке "Параметры" указываются параметры для подключения к Jira:

  1. Адрес сервера для подключения.
  2. Ссылка по которой доступен REST API.
  3. Ключ проекта Jira который будет использоваться.
  4. Пользователь и пароль для подключения к Jira. Подключение к Jira выполняется используя простой (незащищённый) способ аутентификации (подробнее по ссылке: Basic authentication).
 
Снимок экрана: Параметры подключения к Jira

Получение Типов и статусов запросов для проекта Jira

  1. На закладке "Параметры" по кнопке "Заполнить типы и статусы из Jira" выполняется запрос к Jira, который возвращает .json файл с информацией о типах и статусах запросов используемых для указанного проекта. (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/project-getAllStatuses)
  2. Данные из таблицы используются в дальнейшем для заполнения списков выбора полей "Типа запроса" и "Статус запроса" в карточке запроса на закладке "Запрос". 
  3. Информация из таблицы используется для определения "подзадач" и "id" типа запроса. Эти данные требуется для обращения к Jira при редактирования и создания запросов.
  4. Список типов и статусов автоматически сохраняется между сеансами работы в данных формы.
 
 Снимок экрана: Типы и статусы запросов в Jira

Выборка запросов используя JQL запрос к Jira

  1. На закладке "Выборка запросов" по команде "Прочитать из Jira" выполняется запрос к Jira по результатам которого заполняется список запросов (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/search-searchUsingSearchRequest)
  2. Запросы из Jira отбираются согласно JQL запроса.
  3. Итоговый JQL запрос формируется путем подстановки параметров в строку "Шаблон запрос JQL для выборки данных".
  4. Данные выбираются в количестве не более "Всего выбрать" заданными порциями.
  5. Из списка запросов по ссылке "Browse link" можно перейти к запросу в браузере.
  6. Из списка запросов по кнопкам "Добавить", "Изменить" можно перейти к созданию или редактированию запроса. При этом будет активирована закладка "Запрос" (в случае операции "Изменить" будет выполнено обращение к Jira и заполнены все предусмотренные для редактирования поля, а также получены все комментарии и записи о работах для выбранного запроса).
 
 Снимок экрана: Выборка запросов из Jira

Список пользователей Jira для выбора

  1. Список на закладке "Пользователи" является основой для содержимого списков выбора при выборе участников запроса.
  2. Пользователи в список добавляются автоматически при "Выборке запросов" или при чтения данных конкретного запроса (с учетом записей о работах и комментариев).
  3. При необходимости пользователей в список можно добавить "вручную".
  4. Список пользователей автоматически сохраняется между сеансами работы в данных формы.
 
 Снимок экрана: Список пользователей Jira

Чтение запроса из Jira

  1. На закладке "Запрос" выполняются основные операции по просмотру и редактированию полей запроса.
  2. Если выбрана операция "Изменить запрос" и заполнен "Ключ запроса" (Key) доступна команда "Прочитать из Jira".
  3. При нажатии "Прочитать из Jira" выполняется запрос к Jira и заполняются поля запроса, записи о работах и комментарии.
  4. Если заполнен "Ключ запроса" тогда отображается "ссылка для перехода к запросу в браузере".
  5. По ссылке "JSON" выполняется переход в браузере к файлу .json с данными запроса.
  6. Для чтения значений полей выполняется запрос к Jira (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-getIssue).
  7. В случае успешной операции чтения из Jira, все поля запроса отмечаются как "не изменявшиеся".
  8. Значения полей, количество записей о работах и количество комментариев (кроме самих записей о работах и комментариев) сохраняются между сеансами работы в данных формы.
 
 Снимок экрана: Чтение запроса из Jira

Изменение полей запроса и запись в Jira

  1. Программа отдельно хранит все предыдущие значения полей запроса.
  2. Каждый раз при чтении запроса из Jira текущие и предыдущие значения полей синхронизируются.
  3. При изменение какого-либо из полей запроса, сравнивается новое значение и предыдущее.
  4. Если новое значение отличается от предыдущего, поле отмечается как "измененное" и выделяется на форме с помощью фона и цвета текста заголовка.
  5. При записи в Jira передаются только измененные поля (для которых новое значение отличается от предыдущего).
  6. Для записи выполняется запрос к Jira (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-editIssue)
  7. Предыдущие значения реквизитов сохраняются между сеансами работы в данных формы.
  8. Для "обнуления" измененных реквизитов можно либо "Прочитать из Jira" или "Записать в Jira" (после успешной записи автоматически выполняется "Прочитать из Jira".
 
 Снимок экрана: Изменение полей запроса

Создание нового запроса в Jira

  1. Для создания нового запроса на закладке "Запрос" необходимо выбрать операцию "Создать запрос".
  2. Пока запрос не создан, недоступны ссылки для перехода к запросу, комментариям и списку записей о работах.
  3. Для создания запроса выполняется запрос к Jira (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-createIssue)
  4. После создания запроса в Jira, автоматически выполняется чтение запроса и активация операции "Изменить запрос".
 
 Снимок экрана: Создание нового запроса

Изменение статуса запроса в Jira

  1. Если изменяется статус запроса, программа показывает информационную надпись вида "При записи статус изменится с "В работе" -> "Выполнен".
  2. Изменение статуса происходит при нажатии "Записать в Jira".
  3. Сначала выполняется запрос по записи измененных полей запроса, а затем изменяется статус запроса.
  4. Изменение статуса запроса происходит в несколько этапов:
    1. Сначала выполняется дополнительный запрос для получения списка всех допустимых транзакция для текущего запроса (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-getTransitions)
    2. Из списка допустимых транзакция определяется подходящая транзакция, для которой конечный статус равен выбранному в запросе.
    3. Выполняется отдельный запрос для выполнения транзакции перехода (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-doTransition)
  5. После изменения статуса запроса, автоматически выполняется чтение запроса из Jira.
 
 Снимок экрана: Изменение статуса запроса

Чтение, Добавление и Удаление записей о работах в Jira

  1. В карточке запроса на закладке "Записи о работах" отображается список записей о работах запроса.
  2. По кнопке "Прочитать work log" выполняется запрос к Jira и заполняется список записей о работах для запроса (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-getIssueWorklog).
  3. По кнопке "Добавить" появляется форма для создания новой записи о работе. По кнопке "Сохранить запись" выполняется запрос к Jira для добавления новой записи о работе (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-addWorklog).
  4. По кнопке "Изменить" появляется форма для редактирования выбранной записи о работе. По кнопке "Записать изменения" выполняется запрос к Jira для обновления данных существующей записи о работе (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-updateWorklog).
  5. По кнопке "Удалить запись" выполняется запрос к Jira для удаления записи о работах (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-deleteWorklog)
 
 Снимок экрана: Список "Записи о работах"

 
Снимок экрана: Добавление записи о работе
 
Снимок экрана: Изменить запись о работе
 
Снимок экрана: Удалить запись о работе

Чтение комментариев и переход по ссылке к конкретному комментарию в Jira 

  1. В карточке запроса на закладке "Комментарии" отображается список всех комментариев для запроса.
  2. По кнопке "Прочитать комментарии" выполняется запрос к Jira и заполняется список комментариев для запроса (см. https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/#api/2/issue-getComments).
  3. По ссылке "Ссылка на комментарий" можно непосредственно перейти к комментарию в Jira.
 
 Снимок экрана: Список комментариев 

Скачать файлы

Наименование Файл Версия Размер
Jira и 1C обмен через REST 1C 8.3
.epf 58,22Kb
23.04.18
28
.epf 1.0.2 58,22Kb 28 Скачать

См. также

Комментарии
Сортировка: Древо
1. Steelvan 24.04.18 10:06 Сейчас в теме
Вы используете Jira как веб-морду, общедоступную для всех ?
А 1С как учетную систему для расчета зарплаты и прочих расчетов ?
2. Ko1t 142 24.04.18 13:27 Сейчас в теме
(1) Да, именно так.
Jira + Confluence - снаружи для клиентов и внешних подрядчиков.
1С - внутри, для аналитики, документооборота, расчетов и учета.
nordcomp; +1 Ответить
4. o.nikolaev 228 25.04.18 09:53 Сейчас в теме
Отлично просто. Сам собирался, но, руки так и не дошли.
5. Ko1t 142 25.04.18 09:58 Сейчас в теме
(4) пользуйтесь, "на здоровье" )
nordcomp; Mi4man; TreeDogNight; +3 Ответить
6. TreeDogNight 17 25.04.18 10:28 Сейчас в теме
Спасибо за отличную разработку, очень нуждался в таком инструменте!
При попытке изменить задачу выходит следующая ошибка:

Ссылка на полноразмерный скриншот

В чем может быть проблема?
7. Ko1t 142 25.04.18 10:34 Сейчас в теме
(6) Возможно вы не заполнили на закладке "Параметры" таблицу "Типы и статусы запросов". Если причина не в этом, готов к вам подключится по teamviewer и удаленно разобраться с проблемой. Напишите мне в личку... я буду на связи ~ после 15.00
nordcomp; TreeDogNight; +2 Ответить
8. TreeDogNight 17 25.04.18 10:46 Сейчас в теме
(7) "Типы и статусы запросов" я заполнил, нужно что-нибудь в ней менять вручную?

Ссылка на полноразмерный скриншот
9. Ko1t 142 25.04.18 17:35 Сейчас в теме
(8) При моих настройках 1С и Jira ошибку не удается воспроизвести... но я попробовал предположить в чём может быть проблема в вашем случае. детали на картинке:
https://ibb.co/bXo2eH
nordcomp; +1 Ответить
12. nordcomp 27.04.18 17:23 Сейчас в теме
Жаль что только управляемые формы. Обработка конечно очень хороша. Все действия пишет. Все ошибки четко выводит. Но вот код читать немного трудно без многих комментов.
Если не полениться то можно подстроить под любую систему. Жаль нельзя добавить +10
13. Ko1t 142 27.04.18 18:11 Сейчас в теме
(12) Спасибо за оценку :). Про комментарии кода - согласен... по хорошему надо было бы... но уже и так все свои временные лимиты израсходовал на обработку + публикацию :). Потому как в пришлось все свои наработки по интеграции достать из рабочей конфигурации и много чего написать нового и переписать по другому под формат внешней обработки.
14. user992401 07.06.18 15:57 Сейчас в теме
Спасибо за отличную разработку
15. Ko1t 142 07.06.18 21:43 Сейчас в теме
(14) пожалуйста, рад что понравилось :)
16. wowan ht 5 26.06.18 11:39 Сейчас в теме
Добрый день. Jira Server развернут в демо-версии на локальной машине, созданы 2 пользователя: админ и обычный пользователь
Из обработки не могу подключиться, выдает ошибку аутентификации 401.
Подскажите, пожалуйста, в чем может быть дело.
Спасибо.
Прикрепленные файлы:
17. Ko1t 142 26.06.18 14:42 Сейчас в теме
(16) Добрый день. Что вижу на картинке, и с чем приходилось иногда сталкиваться... Jira иногда не работает корректно с кириллическими именами пользователей. Попробуйте создать пользователей, указав имя пользователя латиницей (на английском), Например не "Владимир", а "wowan_ht"
18. wowan ht 5 26.06.18 15:34 Сейчас в теме
(17) Спасибо большое, все получилось
19. Ko1t 142 26.06.18 23:27 Сейчас в теме
(18) Пожалуйста, рад что смог помочь )
Оставьте свое сообщение