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

13.11.14

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Архив с обработкой и xsd схеммой
.zip 16,58Kb ver:1.0
187
187 Скачать (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

См. также

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

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

120000 руб.

19.08.2020    26672    26    1    

28

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1347    1    0    

3

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Бухгалтерский учет 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (базовая, ПРОФ, КОРП, ФРЕШ).

13200 руб.

19.12.2016    48788    99    106    

70

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

Представлена обработка для импорта документов из розничной программы учета товара в торговых точках и аптеках, необходимых для ведения бухгалтерского и налогового учёта, в Бухгалтерию 3.0. При загрузке данных в бухгалтерию переносятся документы поступлений, реализации, возвратов и перемещений в торговых точках и формируются все бухгалтерские и налоговые отчеты с учетом этих документов для любой системы налогообложения. Обработка позволяет загрузить данные из ПО ТрейдФарм. Имеются варианты для других розничных программ (ПО Manuscript Solution, Е-Фарма и S-Market).

18000 руб.

09.04.2020    18728    13    8    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4836 14.11.14 00:55 Сейчас в теме
Автор, мои вам респекты. Но такой вопрос - может быть, чисто случайно, вам встречались сведения по API для TFS? Всё хочу интегрироваться, а инфы мало... Если да, киньте, плз, в меня ссылкой.
2. stoptime 409 14.11.14 09:56 Сейчас в теме
(1) Yashazz, Смотрел выступление на infostart event на эту тему. Может поищите, есть на ютуб канале Доржи Но там все сложно, через снегопад писали свои скрипты, и вспомогательный софт. Не мой уровень к сожалению.
3. pumbaE 14.11.14 18:31 Сейчас в теме
Только задачи или и wiki тоже забираете?
4. stoptime 409 15.11.14 10:15 Сейчас в теме
(3) pumbaE,
Wiki не забираю. У всех объектов единообразный интерфейс, добавить нужное не сложно.
5. PrinzOfMunchen 84 19.11.14 12:12 Сейчас в теме
(4) уже давно сделал интеграцию с 1С, только я делал через внешние источники данных. В связи с развитием ВИД, можно с их помощью уже не только получать данные из Redmine в 1С, но и из 1С писать напрямую в Redmine.
6. stoptime 409 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 409 19.11.14 22:05 Сейчас в теме
(7) omut, Есть в планах добавить пользователей и роли. чтобы с ними можно было работать.
нужно немного разгрести дела, сесть и сделать. может на выходных сделаю
9. omut 20.11.14 00:36 Сейчас в теме
(8) я использовал этот плагин. Логика работы была такая: пользователи 1С не являются пользователями редмайн, а являются контактами. Данные по контакту через апи добавлялись в редмайн (если такого контакта там еще не было) и автоматически привязывались к задачам. К сожалению, руки так же не дошли добить до конца интерфейс добавления задачи в 1С (
14. stoptime 409 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 409 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 409 20.11.14 12:02 Сейчас в теме
(12) phsin, Про эту обработку знаю, хорошая вещь.
а вот с 7.7 точно не будет, там таких плюшек как XDTO нет, собственно за счет их использования все получилось просто.
да и я с 7.7 сейчас работаю преимущество только в проектах по переходу на 8. :) какой то разработки на 7.7 уже года 3 не веду.
17. Смешной 1С 535 03.02.15 13:19 Сейчас в теме
Подскажите, как получить все задачи? Сейчас, даже при простом запросе вида: redmine/issues.xml?project_id=7 я получаю только открытые задачи.
18. stoptime 409 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 409 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 409 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 409 09.08.17 15:02 Сейчас в теме
37. user886140 23.07.18 16:25 Сейчас в теме
(30) в параметр offset пишу строку но все равно после 1000 загружаются не корректные записи. как быть?
32. ImHunter 333 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 235 20.04.18 13:47 Сейчас в теме
Подскажите, как вы задавали отбор, если нужно было выбрать задачи по двум Трекерам ? Если можно примерчик строки запроса
34. lastpioneer 235 23.04.18 12:30 Сейчас в теме
И ещё, как отобрать задачи у которых не заполнен трекер или другое поле перечисления?
40. lastpioneer 235 12.12.18 18:14 Сейчас в теме
(34) Сам спросил, сам ответил. Вдруг кто-то будет искать. Нужно указать в фильтре, вместо идентификатора, символы "!*"

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


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