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

13.11.14

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Архив с обработкой и xsd схеммой
.zip 16,58Kb
185
185
1 SM
Скачать Купить за 1 850 руб.

лого 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

См. также

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

15.11.2022    16740    17    SQV0    48    

35

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

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

84000 руб.

19.08.2020    23328    21    1    

24

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

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

48000 руб.

16.11.2018    30316    21    31    

22

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

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

10200 руб.

24.06.2021    19840    53    53    

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

но если совсем обнаглеть, то хотелось бы для 7.7 ;)
13. stoptime 408 20.11.14 12:02 Сейчас в теме
(12) phsin, Про эту обработку знаю, хорошая вещь.
а вот с 7.7 точно не будет, там таких плюшек как XDTO нет, собственно за счет их использования все получилось просто.
да и я с 7.7 сейчас работаю преимущество только в проектах по переходу на 8. :) какой то разработки на 7.7 уже года 3 не веду.
17. Смешной 1С 522 03.02.15 13:19 Сейчас в теме
Подскажите, как получить все задачи? Сейчас, даже при простом запросе вида: redmine/issues.xml?project_id=7 я получаю только открытые задачи.
18. stoptime 408 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 408 29.06.15 21:33 Сейчас в теме
(21) lustin,
да они мне были не нужны. с загрузкой файлов тоже не все гладко вышло. в редмайн они грузятся а вот с задачей не связываются. не силен в руби поэтому не стал копать, что там к чему
23. Wanderer.nk 19 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 9 19.12.16 19:07 Сейчас в теме
А есть создание задач?
25. stoptime 408 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 408 09.08.17 15:02 Сейчас в теме
37. user886140 23.07.18 16:25 Сейчас в теме
(30) в параметр offset пишу строку но все равно после 1000 загружаются не корректные записи. как быть?
32. ImHunter 320 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 233 20.04.18 13:47 Сейчас в теме
Подскажите, как вы задавали отбор, если нужно было выбрать задачи по двум Трекерам ? Если можно примерчик строки запроса
34. lastpioneer 233 23.04.18 12:30 Сейчас в теме
И ещё, как отобрать задачи у которых не заполнен трекер или другое поле перечисления?
40. lastpioneer 233 12.12.18 18:14 Сейчас в теме
(34) Сам спросил, сам ответил. Вдруг кто-то будет искать. Нужно указать в фильтре, вместо идентификатора, символы "!*"

Например: ..../redmine/issues.xml?key=d8f157...c8f0165851&&fixed_version_id=!*&&project_id=390
35. stoptime 408 23.04.18 17:23 Сейчас в теме
Поидее передавать пустую строку, это если по API Redmıne оринтироватся, но нужно проверять. У мяня в сценарии использования такой вариант не используется.
36. user886140 16.07.18 15:08 Сейчас в теме
Добрый день! возможно ли получить все задачи из redmine разом, в один xml файл? Пока получается только по 100 задач вытащить за раз.
38. stoptime 408 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
  }
}
Показать


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