Redmine - библиотека для интеграции с 1с

13.11.14

Интеграция - Внешние источники данных

Библиотека, которая через REST API взаимодействует с Redmine. На текущий момент реализована работа проектами, задачами, учетом времени.

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

Наименование Файл Версия Размер
Архив с обработкой и xsd схеммой
.zip 16,58Kb
181
.zip 1.0 16,58Kb 181 Скачать

лого RedmineНаша небольшая команда в качестве трекера для работы с клиентами использует бесплатный достаточно популярный трекер 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:

 фрагмент настройки 1

Затем получить ключ текущего пользователя, под которым вы зашли. Заходите в пункт "Моя учетная запись". В правой панели смотрите ваш API Ключ.

 фрагмент настройки 2

Данные о ключе и сервере прописываете в реквизиты обработки.

 

пример кода 1

После инициализации этих переменных, можно делать запросы к Redmine.

 

Пример получения данных

 

Для примера получим описание задачи. В примере в форме обработки это делается кодом:

пример кода 2

У меня в переменных формы НомерЗадачи, содержится "41", это идентификатор задачи в базе Redmine. В параметрах, я указал что хочу получать присоединенные файлы, по умолчанию они не выдаются. На выходе получаем структуру:

 пример структуры

Как обрабатывать эту структуры мы решаем в зависимости от того что мы делаем в нашей 1с конфигурации.

 

Redmine

См. также

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22449    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9208    9    8    

10

Перенос данных из Парус 7.хх в ЗГУ ред.3

Внешние источники данных Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 7.хх учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

24000 руб.

24.04.2017    48704    97    163    

86

Перенос начальных остатков из Парус 7.71 в БГУ

Внешние источники данных Взаиморасчеты Учет ОС и НМА Логистика, склад и ТМЦ Бюджетный учет Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 2.0 1С:Бухгалтерия государственного учреждения Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Перенос словарей и начальных остатков из ПП Парус-Бухгалтерия Бюджет 7.71 в 1Сv8 БГУ2. Заполнение словарей и документов по вводу начальных остатков. Не требуется установка ПП Парус7. Возможна дозагрузка. Позволит автоматически и наиболее полно ввести данные в программу для начала работы. 

15600 руб.

08.12.2011    81568    128    123    

147

Перенос данных из Парус 10 (Торнадо) в ЗГУ ред.3 через Excel

Внешние источники данных Загрузка и выгрузка в Excel Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате из Парус 10(Торнадо) учреждений через файлы Excel в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ). В принципе, обработка может быть использована для загрузки из файлов Excel, полученных из любых информационных систем.

24000 руб.

16.11.2018    30002    20    31    

21

Загрузка спецификаций в УНФ из системы Базис-мебельщик

Производство готовой продукции (работ, услуг) Внешние источники данных Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

Обработка предназначена для загрузки файлов, выгруженных из системы Базис-мебельщик, в справочник "Спецификации" для последующих процессов учета и диспетчирования полуфабрикатов и изделий.

7200 руб.

24.06.2021    19127    52    50    

29
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4709 14.11.14 00:55 Сейчас в теме
Автор, мои вам респекты. Но такой вопрос - может быть, чисто случайно, вам встречались сведения по API для TFS? Всё хочу интегрироваться, а инфы мало... Если да, киньте, плз, в меня ссылкой.
2. stoptime 400 14.11.14 09:56 Сейчас в теме
(1) Yashazz, Смотрел выступление на infostart event на эту тему. Может поищите, есть на ютуб канале Доржи Но там все сложно, через снегопад писали свои скрипты, и вспомогательный софт. Не мой уровень к сожалению.
3. pumbaE 14.11.14 18:31 Сейчас в теме
Только задачи или и wiki тоже забираете?
4. stoptime 400 15.11.14 10:15 Сейчас в теме
(3) pumbaE,
Wiki не забираю. У всех объектов единообразный интерфейс, добавить нужное не сложно.
5. PrinzOfMunchen 83 19.11.14 12:12 Сейчас в теме
(4) уже давно сделал интеграцию с 1С, только я делал через внешние источники данных. В связи с развитием ВИД, можно с их помощью уже не только получать данные из Redmine в 1С, но и из 1С писать напрямую в Redmine.
6. stoptime 400 19.11.14 15:56 Сейчас в теме
(5) PrinzOfMunchen, Был в начале такой план, но у меня база лежит на внешнем хостинге.
16. PrinzOfMunchen 83 24.11.14 11:04 Сейчас в теме
(6) ну так у нас тоже. Для ВИД это не проблема. Ты можешь через них к любой базе цепануться.
7. omut 19.11.14 21:44 Сейчас в теме
Нет в планах использовать redmine_contacts? Интересно было бы связать через пользователей 1С
8. stoptime 400 19.11.14 22:05 Сейчас в теме
(7) omut, Есть в планах добавить пользователей и роли. чтобы с ними можно было работать.
нужно немного разгрести дела, сесть и сделать. может на выходных сделаю
9. omut 20.11.14 00:36 Сейчас в теме
(8) я использовал этот плагин. Логика работы была такая: пользователи 1С не являются пользователями редмайн, а являются контактами. Данные по контакту через апи добавлялись в редмайн (если такого контакта там еще не было) и автоматически привязывались к задачам. К сожалению, руки так же не дошли добить до конца интерфейс добавления задачи в 1С (
14. stoptime 400 20.11.14 14:55 Сейчас в теме
(9) omut, Посмотрел плагин. у него есть API так что прикрутить можно. Единственное не понял в чем преимущество его пользования?
15. omut 21.11.14 10:48 Сейчас в теме
(14) обратная связь от пользователей 1С без необходимости заводить их в качестве пользователей. Например, можно создавать новые задачи от пользователей, привязывать контакты к задаче. В этом случае будет видно, кто отправил условную заявку или создал обращение в ТП. Как показывает практика, клиентам, заказчикам и прочим пользователям 1С пользоваться багтрекингом затруднительно. А так они просто пишут прямо в 1С текст (или прикрепляют что-то, это уже как надо) и формируется задача с нужными настройками и информацией, кто ее отправил. Еще один плюс: пользователей 1С может быть много и всех их мы просто не знаем. Полезно прикрутить в качестве организации, например, подразделение. Так автоматически формируется структура организации клиента, привязываются сотрудники клиента и все это видно в выставленных задачах (обращениях). Ну и электронная почта, как еще один бонус для обратной связи. Адрес так же можно привязывать автоматом. Примерно такая схема.
10. phsin 181 20.11.14 06:37 Сейчас в теме
Спасибо, интересная разработка!
Подскажите может вы делали интеграцию со spree https://github.com/spree/spree ?
11. stoptime 400 20.11.14 10:15 Сейчас в теме
(10) Нет интеграцию с этой системой не делал. Посмотрел, там идет взаимодействие через json , поэтому тот прием который я использовал, чтобы сократить код до минимума не подойдет.
12. phsin 181 20.11.14 10:49 Сейчас в теме
Нашел: Преобразование 1С->JSON->1С для обменов, Web-сервисов
http://infostart.ru/public/308198/

но если совсем обнаглеть, то хотелось бы для 7.7 ;)
13. stoptime 400 20.11.14 12:02 Сейчас в теме
(12) phsin, Про эту обработку знаю, хорошая вещь.
а вот с 7.7 точно не будет, там таких плюшек как XDTO нет, собственно за счет их использования все получилось просто.
да и я с 7.7 сейчас работаю преимущество только в проектах по переходу на 8. :) какой то разработки на 7.7 уже года 3 не веду.
17. Смешной 1С 505 03.02.15 13:19 Сейчас в теме
Подскажите, как получить все задачи? Сейчас, даже при простом запросе вида: redmine/issues.xml?project_id=7 я получаю только открытые задачи.
18. stoptime 400 04.02.15 18:09 Сейчас в теме
(17) Смешной 1С,
Можно уточнить запрос добавив отбор по всем статусам. Получится следующее redmine/issues.xml?project_id=7&status_id=*
user886140; +1 Ответить
19. SerMaxim 24.05.15 14:17 Сейчас в теме
Коллеги, а у всех работает обновление проектов ? У меня хоть убиться не получается программно создавать/обновлять подчиненные проекты, т.е. те где указан parent_id. Может кто подскажет как решить проблему ?
20. SerMaxim 24.05.15 14:37 Сейчас в теме
Пардон, нашел у себя ошибку - для сведений, в поле parent_id надо класть не идентификатор проекта, а номер родительского проекта. Собственно нашел еще ошибку одну - не всегда Redmine возвращает в ответ файл и необходимо исправить текст некоторых методов чтобы проверять - получен ли файл с сервера или нет. Если нет - то не надо считывать xml.
21. lustin 27.06.15 21:25 Сейчас в теме
(0) поразбирался с обработкой - обратил внимание что с custom fields до конца не разобрались ?

//Описание:Создает задачу по заданным параметрам и возвращает структуру с ее данными.
//Параметры: Параметры - Структура - содержит параметры создаваемой задачи
//Возвращаемое значение:
//  Структура - созданная новая задача
Функция НоваяЗадача(Параметры = Неопределено) Экспорт
	... 
	ЗаполнитьЗначенияСвойств(текОбъект,Параметры,,"custom_fields");

Показать
22. stoptime 400 29.06.15 21:33 Сейчас в теме
(21) lustin,
да они мне были не нужны. с загрузкой файлов тоже не все гладко вышло. в редмайн они грузятся а вот с задачей не связываются. не силен в руби поэтому не стал копать, что там к чему
23. Wanderer.nk 18 20.08.15 09:25 Сейчас в теме
(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: спасибо за обработку. Сэкономило день моего времени!
stoptime; +1 Ответить
24. purgin 8 19.12.16 19:07 Сейчас в теме
А есть создание задач?
25. stoptime 400 23.12.16 11:44 Сейчас в теме
(24) создание задач - есть
26. zorin 01.02.17 20:36 Сейчас в теме
Скажите пожалуйста, почему может возникать ошибка (на следующем шаге от точки останова) :
{ВнешняяОбработка.RedmineAPI.МодульОбъекта(77)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,ТипДанныхXDTO);
по причине:
Ошибка разбора XML: - [1,50]
Фатальная ошибка:
Space required after the Public Identifier
Прикрепленные файлы:
27. zorin 01.02.17 21:32 Сейчас в теме
Указанная ошибка возникает при нажатии " получить проект", "загрузить список проектов", "получить список задач", и т д
28. zorin 01.02.17 23:09 Сейчас в теме
Все, спасибо, разобрался, это антивирус мешал!
29. redscrest 31.07.17 15:48 Сейчас в теме
При количестве задач больше 999 в связи с тем что 1с вставляет в число 1000 разделитель в виде непрерывного пробела вы получите список задач который будет повторяться каждую тысячу элементов
30. redscrest 31.07.17 15:49 Сейчас в теме
Поэтому в параметр offset надо писать строку а не число
user886140; stoptime; +2 Ответить
31. stoptime 400 09.08.17 15:02 Сейчас в теме
37. user886140 23.07.18 16:25 Сейчас в теме
(30) в параметр offset пишу строку но все равно после 1000 загружаются не корректные записи. как быть?
32. ImHunter 312 09.08.17 15:11 Сейчас в теме
Внедряю у себя эту обработку в экспериментальном проекте.
Пока что сделал рефакторинг и добавил реквизиты для опционального создания SSL-соединения. Создал новые ф-ии:
// Функция - Получить соединение
// 
// Возвращаемое значение:
//  HTTPСоединение - Соединение с сервером RM
//
Функция СоздатьОбъектHTTPСоединение()
	
	ЗащСоед = ?(SSLИспользовать, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
	Результат = Новый HTTPСоединение(
		РедмайнСервер, ?(РедмайнПорт<>0, РедмайнПорт, Неопределено), 
		?(Не ПустаяСтрока(SSLПользователь), SSLПользователь, Неопределено), 
		?(Не ПустаяСтрока(SSLПароль), SSLПароль, Неопределено), , 2, ЗащСоед, ИспользоватьАутентификациюОС
	);
		
	Возврат Результат;		
	
КонецФункции

Функция СоздатьОбъектHTTPЗапрос(Путь, Параметры = Неопределено, ИмяФайла=Неопределено, ДопЗаголовоки = Неопределено)
	
	СтрокаПараметров = "";

	Если Параметры<>Неопределено Тогда 
		Для каждого текПараметр из Параметры Цикл
			//не заполненные параметры игнорируются
			ТекЗнач = текПараметр.Значение;
			Если ПустаяСтрока(ТекЗнач) Тогда
				Продолжить;
			КонецЕсли;
			СтрокаПараметров = СтрокаПараметров + ?(ПустаяСтрока(СтрокаПараметров), "", "&") 
				+ текПараметр.Ключ + "=" + ?(ТипЗнч(ТекЗнач)=Тип("Число"), Формат(ТекЗнач, "ЧН=0; ЧГ="), ТекЗнач);
		КонецЦикла;
	КонецЕсли;
	СтрокаПараметров = ?(ПустаяСтрока(СтрокаПараметров), "", "?" + СтрокаПараметров);
	ТекстЗапроса = РедмайнПуть + "/" + Путь + ".xml" + СтрокаПараметров;
	//ЗАПРОС
	ЗапросКСайту = Новый HTTPЗапрос(ТекстЗапроса, ЗаголовокЗапроса(ДопЗаголовоки));
	
	Если Не ПустаяСтрока(ИмяФайла) Тогда
		ЗапросКСайту.УстановитьИмяФайлаТела(ИмяФайла);
	КонецЕсли;
	
	Возврат ЗапросКСайту;
	
КонецФункции
Показать

И использовал их:
Функция PostЗапрос(Путь, Параметры, ИмяФайла=Неопределено, ДопЗаголовоки = Неопределено)
	
	ЗапросКСайту = СоздатьОбъектHTTPЗапрос(Путь, Параметры, ИмяФайла, ДопЗаголовоки);
	РезультатИмяФайла = ПолучитьИмяВременногоФайла();//ПолучитьИмяТестовогоФайла();//
	Соединение = СоздатьОбъектHTTPСоединение();//Соединяем
	Соединение.ОтправитьДляОбработки(ЗапросКСайту, РезультатИмяФайла);
	Текст = Новый ЧтениеТекста(РезультатИмяФайла, КодировкаТекста.UTF8);
	Возврат Текст.Прочитать();	
	
КонецФункции
Показать
JohnyDeath; +1 Ответить
33. lastpioneer 231 20.04.18 13:47 Сейчас в теме
Подскажите, как вы задавали отбор, если нужно было выбрать задачи по двум Трекерам ? Если можно примерчик строки запроса
34. lastpioneer 231 23.04.18 12:30 Сейчас в теме
И ещё, как отобрать задачи у которых не заполнен трекер или другое поле перечисления?
40. lastpioneer 231 12.12.18 18:14 Сейчас в теме
(34) Сам спросил, сам ответил. Вдруг кто-то будет искать. Нужно указать в фильтре, вместо идентификатора, символы "!*"

Например: ..../redmine/issues.xml?key=d8f157...c8f0165851&&fixed_version_id=!*&&project_id=390
35. stoptime 400 23.04.18 17:23 Сейчас в теме
Поидее передавать пустую строку, это если по API Redmıne оринтироватся, но нужно проверять. У мяня в сценарии использования такой вариант не используется.
36. user886140 16.07.18 15:08 Сейчас в теме
Добрый день! возможно ли получить все задачи из redmine разом, в один xml файл? Пока получается только по 100 задач вытащить за раз.
38. stoptime 400 26.07.18 14:33 Сейчас в теме
(36) насколько я помню это ограничения самого API. В той версии котороую я использую больше 100 нельзя
39. r2d255 10.09.18 19:31 Сейчас в теме
При нажатии на создать задачу :

{ВнешняяОбработка.RedmineAPI.МодульОбъекта(404)}: Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
ЗаполнитьЗначенияСвойств(текОбъект,Параметры,,"custom_fields");
по причине:
Недопустимое значение параметра (параметр номер '4') (Поле 'custom_fields' объекта 'Структура' не обнаружено)
41. vic777tor 23.07.21 14:33 Сейчас в теме
Приветствую, коллеги.
Всё же никто не разбирался с "custom_fields"?
У мне необходимо заполнять эти поля при создании "issue", поскольку они являются обязательными и issue без них не создаётся.
Попытался сам разобраться, но пока, увы, результата нет.
Задачу создаю с использованием формата JSON, на мой взгляд это более удобно, чем XDTO.
Сами поля "custom_fields" в JSON задаю примерно так:

{
  "issue": {
    "project_id": 91,
    "tracker_id": 25,
    "status_id": 1,
    "priority_id": 2,
    "subject": "test test test",
    "description": "test test test",
    "custom_fields": {
      "type": "array",
      "custom_field": [
        {
          "id": 11,
          "name": "ФИО Англ",
          "value": "John Doe"
        },
        {
          "id": 12,
          "name": "ФИО Рус",
          "value": "Пилипенко Василь Васильович"
        },
        {
          "id": 30,
          "name": "Дата расторжения договора",
          "value": "2021-05-24"
        }
      ]
    },
    "author_id": 145
  }
}
Показать


Структуру данных пытался повторить по образцу такой же задачи.
Но при обработке такого запроса выдаёт ошибку, что данные поля не заполнены.
Если кто копал в эту сторону, большая просьба поделиться опытом.
Оставьте свое сообщение