Автор, мои вам респекты. Но такой вопрос - может быть, чисто случайно, вам встречались сведения по API для TFS? Всё хочу интегрироваться, а инфы мало... Если да, киньте, плз, в меня ссылкой.
(1) Yashazz, Смотрел выступление на infostart event на эту тему. Может поищите, есть на ютуб канале Доржи Но там все сложно, через снегопад писали свои скрипты, и вспомогательный софт. Не мой уровень к сожалению.
(4) уже давно сделал интеграцию с 1С, только я делал через внешние источники данных. В связи с развитием ВИД, можно с их помощью уже не только получать данные из Redmine в 1С, но и из 1С писать напрямую в Redmine.
(7) omut, Есть в планах добавить пользователей и роли. чтобы с ними можно было работать.
нужно немного разгрести дела, сесть и сделать. может на выходных сделаю
(8) я использовал этот плагин. Логика работы была такая: пользователи 1С не являются пользователями редмайн, а являются контактами. Данные по контакту через апи добавлялись в редмайн (если такого контакта там еще не было) и автоматически привязывались к задачам. К сожалению, руки так же не дошли добить до конца интерфейс добавления задачи в 1С (
(14) обратная связь от пользователей 1С без необходимости заводить их в качестве пользователей. Например, можно создавать новые задачи от пользователей, привязывать контакты к задаче. В этом случае будет видно, кто отправил условную заявку или создал обращение в ТП. Как показывает практика, клиентам, заказчикам и прочим пользователям 1С пользоваться багтрекингом затруднительно. А так они просто пишут прямо в 1С текст (или прикрепляют что-то, это уже как надо) и формируется задача с нужными настройками и информацией, кто ее отправил. Еще один плюс: пользователей 1С может быть много и всех их мы просто не знаем. Полезно прикрутить в качестве организации, например, подразделение. Так автоматически формируется структура организации клиента, привязываются сотрудники клиента и все это видно в выставленных задачах (обращениях). Ну и электронная почта, как еще один бонус для обратной связи. Адрес так же можно привязывать автоматом. Примерно такая схема.
(10) Нет интеграцию с этой системой не делал. Посмотрел, там идет взаимодействие через json , поэтому тот прием который я использовал, чтобы сократить код до минимума не подойдет.
(12) phsin, Про эту обработку знаю, хорошая вещь.
а вот с 7.7 точно не будет, там таких плюшек как XDTO нет, собственно за счет их использования все получилось просто.
да и я с 7.7 сейчас работаю преимущество только в проектах по переходу на 8. :) какой то разработки на 7.7 уже года 3 не веду.
Коллеги, а у всех работает обновление проектов ? У меня хоть убиться не получается программно создавать/обновлять подчиненные проекты, т.е. те где указан parent_id. Может кто подскажет как решить проблему ?
Пардон, нашел у себя ошибку - для сведений, в поле parent_id надо класть не идентификатор проекта, а номер родительского проекта. Собственно нашел еще ошибку одну - не всегда Redmine возвращает в ответ файл и необходимо исправить текст некоторых методов чтобы проверять - получен ли файл с сервера или нет. Если нет - то не надо считывать xml.
(0) поразбирался с обработкой - обратил внимание что с custom fields до конца не разобрались ?
//Описание:Создает задачу по заданным параметрам и возвращает структуру с ее данными.
//Параметры: Параметры - Структура - содержит параметры создаваемой задачи
//Возвращаемое значение:
// Структура - созданная новая задача
Функция НоваяЗадача(Параметры = Неопределено) Экспорт
...
ЗаполнитьЗначенияСвойств(текОбъект,Параметры,,"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: спасибо за обработку. Сэкономило день моего времени!
Скажите пожалуйста, почему может возникать ошибка (на следующем шаге от точки останова) :
{ВнешняяОбработка.RedmineAPI.МодульОбъекта(77)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ОбъектXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,ТипДанныхXDTO);
по причине:
Ошибка разбора XML: - [1,50]
Фатальная ошибка:
Space required after the Public Identifier
При количестве задач больше 999 в связи с тем что 1с вставляет в число 1000 разделитель в виде непрерывного пробела вы получите список задач который будет повторяться каждую тысячу элементов
Внедряю у себя эту обработку в экспериментальном проекте.
Пока что сделал рефакторинг и добавил реквизиты для опционального создания SSL-соединения. Создал новые ф-ии:
// Функция - Получить соединение
//
// Возвращаемое значение:
// HTTPСоединение - Соединение с сервером RM
//
Функция СоздатьОбъектHTTPСоединение()
ЗащСоед = ?(SSLИспользовать, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено);
Результат = Новый HTTPСоединение(
РедмайнСервер, ?(РедмайнПорт<>0, РедмайнПорт, Неопределено),
?(Не ПустаяСтрока(SSLПользователь), SSLПользователь, Неопределено),
?(Не ПустаяСтрока(SSLПароль), SSLПароль, Неопределено), , 2, ЗащСоед, ИспользоватьАутентификациюОС
);
Возврат Результат;
КонецФункции
Функция СоздатьОбъектHTTPЗапрос(Путь, Параметры = Неопределено, ИмяФайла=Неопределено, ДопЗаголовоки = Неопределено)
СтрокаПараметров = "";
Если Параметры<>Неопределено Тогда
Для каждого текПараметр из Параметры Цикл
//не заполненные параметры игнорируются
ТекЗнач = текПараметр.Значение;
Если ПустаяСтрока(ТекЗнач) Тогда
Продолжить;
КонецЕсли;
СтрокаПараметров = СтрокаПараметров + ?(ПустаяСтрока(СтрокаПараметров), "", "&")
+ текПараметр.Ключ + "=" + ?(ТипЗнч(ТекЗнач)=Тип("Число"), Формат(ТекЗнач, "ЧН=0; ЧГ="), ТекЗнач);
КонецЦикла;
КонецЕсли;
СтрокаПараметров = ?(ПустаяСтрока(СтрокаПараметров), "", "?" + СтрокаПараметров);
ТекстЗапроса = РедмайнПуть + "/" + Путь + ".xml" + СтрокаПараметров;
//ЗАПРОС
ЗапросКСайту = Новый HTTPЗапрос(ТекстЗапроса, ЗаголовокЗапроса(ДопЗаголовоки));
Если Не ПустаяСтрока(ИмяФайла) Тогда
ЗапросКСайту.УстановитьИмяФайлаТела(ИмяФайла);
КонецЕсли;
Возврат ЗапросКСайту;
КонецФункции
Показать
И использовал их:
Функция PostЗапрос(Путь, Параметры, ИмяФайла=Неопределено, ДопЗаголовоки = Неопределено)
ЗапросКСайту = СоздатьОбъектHTTPЗапрос(Путь, Параметры, ИмяФайла, ДопЗаголовоки);
РезультатИмяФайла = ПолучитьИмяВременногоФайла();//ПолучитьИмяТестовогоФайла();//
Соединение = СоздатьОбъектHTTPСоединение();//Соединяем
Соединение.ОтправитьДляОбработки(ЗапросКСайту, РезультатИмяФайла);
Текст = Новый ЧтениеТекста(РезультатИмяФайла, КодировкаТекста.UTF8);
Возврат Текст.Прочитать();
КонецФункции
Поидее передавать пустую строку, это если по API Redmıne оринтироватся, но нужно проверять. У мяня в сценарии использования такой вариант не используется.
{ВнешняяОбработка.RedmineAPI.МодульОбъекта(404)}: Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
ЗаполнитьЗначенияСвойств(текОбъект,Параметры,,"custom_fields");
по причине:
Недопустимое значение параметра (параметр номер '4') (Поле 'custom_fields' объекта 'Структура' не обнаружено)