Наша небольшая команда в качестве трекера для работы с клиентами использует бесплатный достаточно популярный трекер Redmine. Почему Redmine? — Потому что для нас проще было разместить трекер в сети, чем организовывать доступ к нашей инфраструктуре и использовать что-нибудь на основе 1с. Для синхронизации данных Redmine и 1с была написана эта обработка.
Все общение с Redmine идет через REST API, подробное описание которого можно найти по адресу http://www.redmine.org/projects/redmine/wiki/Rest_api. Общение идет через xml файлы. Разбор и формирование xml файлов реализовано с помощью XDTO пакетов. Пакет XDTO лежит в макете и при запуске обработки загружается, так что ничего добавлять в конфигурацию не придется. В архиве я прилагаю xsd схему, для тех, кому это будет интересно, и кто захочет внести в нее изменения. Я рекомендую для просмотра и редактирования xsd использовать Liquid XML Studio.
Работу с обработки можно описать следующей схемой:
В самой обработке есть управляемая форма где можно посмотреть примеры работы.
Подключение к Redmine
Для того чтобы подключится к Redmine, на необходимо включить использование Rest. Это можно сделать на закладке Администрирование — > Настройки — >закладка Аутентификация —> галочка веб сервис REST:
Затем получить ключ текущего пользователя, под которым вы зашли. Заходите в пункт «Моя учетная запись». В правой панели смотрите ваш API Ключ.
Данные о ключе и сервере прописываете в реквизиты обработки.
После инициализации этих переменных, можно делать запросы к Redmine.
Пример получения данных
Для примера получим описание задачи. В примере в форме обработки это делается кодом:
У меня в переменных формы НомерЗадачи, содержится «41», это идентификатор задачи в базе Redmine. В параметрах, я указал что хочу получать присоединенные файлы, по умолчанию они не выдаются. На выходе получаем структуру:
Как обрабатывать эту структуры мы решаем в зависимости от того что мы делаем в нашей 1с конфигурации.
Автор, мои вам респекты. Но такой вопрос — может быть, чисто случайно, вам встречались сведения по API для TFS? Всё хочу интегрироваться, а инфы мало… Если да, киньте, плз, в меня ссылкой.
(1) Yashazz, Смотрел выступление на infostart event на эту тему. Может поищите, есть наютуб канале Доржи Но там все сложно, через снегопад писали свои скрипты, и вспомогательный софт. Не мой уровень к сожалению.
Только задачи или и wiki тоже забираете?
(3) pumbaE,
Wiki не забираю. У всех объектов единообразный интерфейс, добавить нужное не сложно.
(4) уже давно сделал интеграцию с 1С, только я делал через внешние источники данных. В связи с развитием ВИД, можно с их помощью уже не только получать данные из Redmine в 1С, но и из 1С писать напрямую в Redmine.
(5) PrinzOfMunchen, Был в начале такой план, но у меня база лежит на внешнем хостинге.
Нет в планах использовать redmine_contacts? Интересно было бы связать через пользователей 1С
(7) omut, Есть в планах добавить пользователей и роли. чтобы с ними можно было работать.
нужно немного разгрести дела, сесть и сделать. может на выходных сделаю
(8) я использовал этот плагин. Логика работы была такая: пользователи 1С не являются пользователями редмайн, а являются контактами. Данные по контакту через апи добавлялись в редмайн (если такого контакта там еще не было) и автоматически привязывались к задачам. К сожалению, руки так же не дошли добить до конца интерфейс добавления задачи в 1С (
Спасибо, интересная разработка!
https://github.com/spree/spree ?
Подскажите может вы делали интеграцию со spree
(10) Нет интеграцию с этой системой не делал. Посмотрел, там идет взаимодействие через json , поэтому тот прием который я использовал, чтобы сократить код до минимума не подойдет.
Нашел: Преобразование 1С->JSON->1С для обменов, Web-сервисов
http://infostart.ru/public/308198/
но если совсем обнаглеть, то хотелось бы для 7.7 😉
(12) phsin, Про эту обработку знаю, хорошая вещь.
а вот с 7.7 точно не будет, там таких плюшек как XDTO нет, собственно за счет их использования все получилось просто.
да и я с 7.7 сейчас работаю преимущество только в проектах по переходу на 8. 🙂 какой то разработки на 7.7 уже года 3 не веду.
(9) omut, Посмотрел плагин. у него есть API так что прикрутить можно. Единственное не понял в чем преимущество его пользования?
(14) обратная связь от пользователей 1С без необходимости заводить их в качестве пользователей. Например, можно создавать новые задачи от пользователей, привязывать контакты к задаче. В этом случае будет видно, кто отправил условную заявку или создал обращение в ТП. Как показывает практика, клиентам, заказчикам и прочим пользователям 1С пользоваться багтрекингом затруднительно. А так они просто пишут прямо в 1С текст (или прикрепляют что-то, это уже как надо) и формируется задача с нужными настройками и информацией, кто ее отправил. Еще один плюс: пользователей 1С может быть много и всех их мы просто не знаем. Полезно прикрутить в качестве организации, например, подразделение. Так автоматически формируется структура организации клиента, привязываются сотрудники клиента и все это видно в выставленных задачах (обращениях). Ну и электронная почта, как еще один бонус для обратной связи. Адрес так же можно привязывать автоматом. Примерно такая схема.
(6) ну так у нас тоже. Для ВИД это не проблема. Ты можешь через них к любой базе цепануться.
Подскажите, как получить все задачи? Сейчас, даже при простом запросе вида: redmine/issues.xml?project_id=7 я получаю только открытые задачи.
(17) Смешной 1С,
Можно уточнить запрос добавив отбор по всем статусам. Получится следующее redmine/issues.xml?project_id=7&status_id=*
Коллеги, а у всех работает обновление проектов ? У меня хоть убиться не получается программно создавать/обновлять подчиненные проекты, т.е. те где указан parent_id. Может кто подскажет как решить проблему ?
Пардон, нашел у себя ошибку — для сведений, в поле parent_id надо класть не идентификатор проекта, а номер родительского проекта. Собственно нашел еще ошибку одну — не всегда Redmine возвращает в ответ файл и необходимо исправить текст некоторых методов чтобы проверять — получен ли файл с сервера или нет. Если нет — то не надо считывать xml.
(0) поразбирался с обработкой — обратил внимание что с custom fields до конца не разобрались ?
Показать
(21) lustin,
да они мне были не нужны. с загрузкой файлов тоже не все гладко вышло. в редмайн они грузятся а вот с задачей не связываются. не силен в руби поэтому не стал копать, что там к чему
(22)
по прикреплению файлов: у Вас ошибка в схеме в разделе группы файлов, не хватает аттрибута Type
Правильно будет
<objectType name=»TypeUploads»>
<property name=»type» type=»xs:string» lowerBound=»0″ form=»Attribute»/>
<property xmlns:d4p1=»rm@rm.rarus.ru» ref=»d4p1:upload»/>
</objectType>
и
текОбъект.type = «array»;
нужно заменить на
текОбъект.uploads.type = «array»;
У меня все заработало 🙂
2. По custom-fields:
это свойство в процедуре УдалитьПустыеПоля(ОбрабатываемаяСтруктура) просто удаляется, если не заполнено.
Как решение заменить в 405 строке
ЗаполнитьЗначенияСвойств(текОбъект,Параметры,,»custom_fields»);
на
ЗаполнитьЗначенияСвойств(текОбъект,Параметры,,?(Параметры.Свойство(«custom_fields»),»custom_fields»,»»));
PS: спасибо за обработку. Сэкономило день моего времени!
А есть создание задач?
(24) создание задач — есть
Скажите пожалуйста, почему может возникать ошибка (на следующем шаге от точки останова) :
{ВнешняяОбработка.RedmineAPI.МодульОбъекта(77)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,ТипДанныхXDTO);
по причине:
Ошибка разбора XML: — [1,50]
Фатальная ошибка:
Space required after the Public Identifier
Указанная ошибка возникает при нажатии » получить проект», «загрузить список проектов», «получить список задач», и т д
Все, спасибо, разобрался, это антивирус мешал!
При количестве задач больше 999 в связи с тем что 1с вставляет в число 1000 разделитель в виде непрерывного пробела вы получите список задач который будет повторяться каждую тысячу элементов
Поэтому в параметр offset надо писать строку а не число
(30) Спасибо, поправлю
Внедряю у себя эту обработку в экспериментальном проекте.
Пока что сделал рефакторинг и добавил реквизиты для опционального создания SSL-соединения. Создал новые ф-ии:
Показать
И использовал их:
Показать
Подскажите, как вы задавали отбор, если нужно было выбрать задачи по двум Трекерам ? Если можно примерчик строки запроса
И ещё, как отобрать задачи у которых не заполнен трекер или другое поле перечисления?
Поидее передавать пустую строку, это если по API Redmıne оринтироватся, но нужно проверять. У мяня в сценарии использования такой вариант не используется.
Добрый день! возможно ли получить все задачи из redmine разом, в один xml файл? Пока получается только по 100 задач вытащить за раз.
(30) в параметр offset пишу строку но все равно после 1000 загружаются не корректные записи. как быть?
(36) насколько я помню это ограничения самого API. В той версии котороую я использую больше 100 нельзя
При нажатии на создать задачу :
{ВнешняяОбработка.RedmineAPI.МодульОбъекта(404)}: Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
ЗаполнитьЗначенияСвойств(текОбъект,Параметры,,»custom_fields»);
по причине:
Недопустимое значение параметра (параметр номер ‘4’) (Поле ‘custom_fields’ объекта ‘Структура’ не обнаружено)
(34) Сам спросил, сам ответил. Вдруг кто-то будет искать. Нужно указать в фильтре, вместо идентификатора, символы «!*»
Например: …./redmine/issues.xml?key=d8f157…c8f0165851&&fixed_version_id=!*&&project_id=390