Добавляем http-ссылки на самописную систему учета задач

09.02.17

Разработка - Инструментарий разработчика

Захотелось мне, чтобы в удаленном git репозитории можно было указывать ссылки на задачи и переходить по ним. Но не очень хотелось тратить на это много времени.

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

Наименование Файл Версия Размер
Конфигурация пример
.cf 28,32Kb
7
.cf 28,32Kb 7 Скачать

Вступление

Наша команда начала использовать выгрузку в GIT. Мы используем Гиттер ( оригинал и моя доработка ). Так же можно использовать GitSync на OneScript ( раз и два и три). Я выбрал Гиттер, т.к. он полностью на 1С, в которой я отлично разбираюсь и без проблем смог расковырять, посмотреть, доработать и отладить работу с gitом.

В качестве удаленного репозитория мы используем bitbucket.org . Он позволяет делать бесплатные приватные репозитории на команду до 5 человек и размером до 2гиг. Наша вхламинушку переписанная УПП и ее 300 коммитов сейчас занимает 340мб. Но пришлось настроить .gitignore на многие файлы, и поэтому обратно конфу собрать нельзя.

Так же на БитБакете есть возможность обсуждения кода (для проведения код-ревью), что стало главным огромным плюсом, ради чего и был переход на Git.

На GitHub приватные репозитории за небесплатно, но там и возможностей больше. Вроде. Я не смотрел особо. Есть еще GitLab и возможность поднять локальный сервер для удаленного репо, и там даже есть подсветка синтаксиса 1С, но я его даже не смотрел еще.

!!!Не выкладывайте в публичные репозитарии код типовых. Лицензионная политика 1С по отношению к коду БСП и типовых еще не утверждена и неизвестна. Так что это может быть противозаконно!!!

В работе мы используем простенький самописный таскменеджер. Переходить на что-то другое не хочеться, а видеть ссылки на задачи хочеться. Как это я разрешил и является темой статьи.

Статья состоит из 3х частей: настройка на стороне БитБакета, создание http-сервиса и его публикация. Если у вас уже есть http-сервис, то можно прочитать только первую часть.

Настройка на стороне БитБакета

Идем в нужный репозиторий на БитБакете, в настройки и там в ссылки. Там можно настроить ссылки на существующие сервисы, если они у вас есть, а можно добавить ссылку на свой.

Определяемся с ссылкой, по которой будем переходить и с форматом сообщения, которое должно будет распарситься. В качестве формата я выберу fix-123 и task-123 для багов и задач соответственно. А ссылки должны формироваться по правилам 1С, пусть будут localhost/Tracker/hs/Bags/123 и localhost/Tracker/hs/Tasks/123 . Мне достаточно пофик, что это все будет работать только в локалке, работаю то я в основном в ней, а когда не работаю, то и задачи мне без интереса. Опять же сюда можете подставить свои адреса от существующих трекеров не на 1С.

Для формата есть ряд ограничений. Формат #123 зарезервирован под внутренний трекер задач (кстати, можно использовать и его), формат BB-123 зарезервирован под Jira, может еще какие-нибудь тоже заняты.

Теперь указываем это в настройках. Жмем добавить произвольную ссылку (Add a custom link) и заполняем поля.

Формат задается в поле Link key и является регулярным выражением. Результат разбора подставляется в Link url вместо \1, \2 итп. Для ссылок на задач добавим еще одну ссылку.

Проверим работу. Закоммитим что-нить и посмотрим как это выглядит.

fix и task превратились в ссылки, bag нет, т.к. для него мы не добавили ссылки. При нажатии переходит по нужному адресу. Правда по этому адресу ничего нет, но это я решу в следующей части.

Создание http-сервиса

Я бы не стал с ними заморачиваться, если б уже не натренеровался их делать: HTTP-сервис: отчеты [Расширение]

Весь сервис состоит из 4х частей:

  1. настройка сервиса (имя, параметры, шаблон),
  2. парсер входящих параметров,
  3. получение контента по параметрам,
  4.  возврат результата.

Настройка сервиса

Создаем 2 http-сервиса: Tasks и Bags. Они идентичны кроме идентификаторов. В первом случае будет Tasks и получать данные будет из справочника Задачи, второй Bags и даные будет брать из справочника Ошибки. В остальном они идентичны, поэтому рассказывать буду только про Tasks. Кстати, во вложении конфигурация, где весь код есть.

Так вот. Добавляем новый сервис

Добавляем новый шаблон URL

И новый метод Get

В итоге

Парсер входящих параметров

Тут все просто, берем параметр URL, по нему ищем задачу, по ней формируем html и возвращаем

Функция ПолучитьЗадачуGET(Запрос)
	
	номерЗадачи = Запрос.ПараметрыURL["string"];
	
	Если номерЗадачи = "Ping" Тогда
		Ответ = Новый HTTPСервисОтвет(200);
		Ответ.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
		Ответ.УстановитьТелоИзСтроки( НСтр( "ru='Поздравляем!!! Подключение выполнено успешно!'" ) );
		Возврат Ответ;
	КонецЕсли;
	
	Попытка
		
		найденнаяЗадача = Справочники._Задачи.НайтиПоКоду( Число( номерЗадачи ) );
		
		Если ЗначениеЗаполнено( найденнаяЗадача ) Тогда
			
			Ответ = Ответ_Задача( найденнаяЗадача );
			
		Иначе
			
			Ответ = Ответ_ЗадачаНеНайдена();
			
		КонецЕсли;
		
	Исключение
		
		Ответ = Ответ_ОшибкаВыполнения();
		
	КонецПопытки;
	
	Возврат Ответ;
	
КонецФункции

Получение контента по параметрам

Мне было очень лень делать красивую html страничку под задачу, поэтому я создал в конструкторе печатную форму, а потом этот табличный документ превращал в html. 

Но потом захотелось иметь ссылку, чтобы можно было перейти прям в 1Ску. Сделал так:

текстHTML = ПолучитьТекстHTMLПоТабличномуДокументу(таблДок);

СсылкаНаЗадачу = "<a href=" + Константы._АдресПубликацииИнформационнойБазы.Получить() + "#" + ПолучитьНавигационнуюСсылку(пОшибка) + ">Перейти в 1С</a>";

текстHTML = стрЗаменить( текстHTML, "</body></html>", СсылкаНаЗадачу + "</body></html>" );

где константу заполняю обработкой, запущенной в тонком клиенте, вот так

&НаСервере
Процедура ПриОткрытииНаСервере(адрес)
	
	Константы._АдресПубликацииИнформационнойБазы.Установить( адрес );
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	адрес = ПолучитьНавигационнуюСсылкуИнформационнойБазы();
	
	ПриОткрытииНаСервере(адрес);
	
КонецПроцедуры

 Возврат результата

Тут самое простое, устанавливаем ответ 200, заголовок, что это html, собственно тело и все

Функция Ответ_Задача( Знач пЗадача )
	
	Попытка
		
		таблДок = Новый ТабличныйДокумент;
		Справочники._Задачи.Печать( таблДок, пЗадача );
		
	Исключение
		
		Возврат Ответ_НеверныйЗапрос( ИнформацияОбОшибке() );
		
	КонецПопытки;
	
	текстHTML = ПолучитьТекстHTMLПоТабличномуДокументу(таблДок);
	
	СсылкаНаЗадачу = "<a href=" + Константы._АдресПубликацииИнформационнойБазы.Получить() + "#" + ПолучитьНавигационнуюСсылку(пЗадача) + ">Перейти в 1С</a>";
	
	текстHTML = стрЗаменить( текстHTML, "</body></html>", СсылкаНаЗадачу + "</body></html>" );
	
	Ответ = Новый HTTPСервисОтвет(200);
	Ответ.Заголовки.Вставить("Content-Type","text/html; charset=utf-8");
	Ответ.УстановитьТелоИзСтроки( текстHTML );
	
	Возврат Ответ;
	
КонецФункции

Публикация http-сервиса

Как настраивать апач, включать отладку, пробрасывать в интернет итп я рассказывать не буду. У меня как то уже все работает, а статей по этой теме уже много. Так что все просто, идем в публикацию, публикуем только эти сервисы, ребутаем апач и проверяем. Главное, чтобы имена совпадали у публикации и у адреса, что мы уже в БитБакете ввели (можно конечно в БитБакете заменить ссылку). 

Всю радость от заработавшего http-сервиса портит тот момент, что приходится вводить параметры аутентификации

Тут я так же поступил по ленивому и радикально. Идем в папку с публикацией, у меня это c:\WWW\Tracker\ , я ее еще стрелочкой выше отметил. Открываем единственный там файл default.vrd в блокноте, добавляем в строчку ib= логин и пароль пользователя, под которым будем открывать задачи. Например, я добавил пользователя WEB с паролем WEB и эта строчка стала выглядеть вот так

ib="File=&quot;G:\Bases\TasksInfostart&quot;;usr=&quot;WEB&quot;;pwd=&quot;WEB8&quot;"

На всякий ребутнем апач.

Внимание! Если использовать этот способ, то вся публикация будет открываться под этим пользователем. То есть если еще опубликован веб-интерфейс, то он так же молча будет открываться под WEB. Для более тонкой настройки можно этот финт сделать отдельно для точки подключения, приводить этот способ здесь я конечно не буду.

ИТОГ

После всех доработок результат выглядит так:

PS Если у вас не заработал переход в 1С прям с сайта, то нужно применить еще чуть-чуть магии. Создаем новый текстовый документ, вставляем туда

REGEDIT4

[HKEY_CLASSES_ROOT\e1c]
@="URL:e1c Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\e1c\DefaultIcon]
@="\"C:\\Program Files (x86)\\1cv8\\common\\1cestart.exe\""

[HKEY_CLASSES_ROOT\e1c\shell]

[HKEY_CLASSES_ROOT\e1c\shell\open]

[HKEY_CLASSES_ROOT\e1c\shell\open\command]
@="\"C:\\Program Files (x86)\\1cv8\\common\\1cestart.exe\" /url \"%1\""

Сохраняем как "e1creg.reg" и запускаем под админом.

PPS Эта конфигурация так же доступна на https://github.com/Stepa86/1C-Tasks-for-web

Git http bitbucket задачи таскменеджер таск-менеджер тасктрекер таск-трекер багтрекер баг-трекер

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122211    673    389    

715

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 15300 руб.

06.10.2023    7307    22    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3552    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177764    1074    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99355    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18122    6    8    

40

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28113    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23605    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Fragster 1138 09.02.17 11:31 Сейчас в теме
Сумки вместо багов :)
GreenDragon; CyberCerber; Stepa86; +3 Ответить
2. Stepa86 1521 09.02.17 11:35 Сейчас в теме
(1) Знал бы английский, не занимался бы 1Сом. Читать как "Мешочек багов"
KapasMordorov; TreeDogNight; madonov; CyberCerber; Soloist; pallid; Fragster; +7 Ответить
6. Fragster 1138 09.02.17 15:54 Сейчас в теме
(2) Это заблуждение. Хорошо там, где нас нет.
grumagargler; +1 Ответить
9. Stepa86 1521 09.02.17 16:51 Сейчас в теме
(6) Когда я был студентом я пошел устраиваться программистов на плюсах и завалил собеседование из-за английского, а потом пошел на собеседование во франч, куда меня и взяли
10. Fragster 1138 09.02.17 16:54 Сейчас в теме
(9) я студентом вообще сторожем работал.
3. pallid 270 09.02.17 11:47 Сейчас в теме
!!!Не выкладывайте в публичные репозитарии код типовых. Лицензионная политика 1С по отношению к коду БСП и типовых еще не утверждена и неизвестна. Так что это может быть противозаконно!!!

В работе мы используем простенький самописный таскменеджер. Переходить на что-то другое не хочеться, а видеть ссылки на задачи хочеться. Как это я разрешил и является темой статьи.


Так может выложить свою на гитхаб или бакет
4. Stepa86 1521 09.02.17 13:02 Сейчас в теме
5. speshuric 1326 09.02.17 14:22 Сейчас в теме
Решение интересное, но не проще ли было поднять свой гитлаб? Бесплатно. Нет ограничений на размер и количество пользователей. Захостить можно почти где угодно. Ставится за несколько минут. API, трекер, CI (правда очень "самобытный"), wiki, интеграция с LDAP.
7. Stepa86 1521 09.02.17 16:13 Сейчас в теме
(5) У меня есть репо на битбакете и у меня есть система учета задач на 1Ске, я предложил их немного сынтегрировать, причем публикация полезна как для пользователей битбакета, так и для тех, кто хочет светить из 1Ски что-то небольшое. А вы мне предлагаете тупо поставить гитлаб?
8. Stepa86 1521 09.02.17 16:33 Сейчас в теме
(5) гитлаб может и крутая штука, собственно одна из причин написания мной статей - узнать, а как на самом деле нужно было делать, но 1) я не очень умею разворачивать различные серверные штуки, особенно которые под юникс должны идти, особенно не имея компов под никсами и даже хоть какого то опыта работы с ними 2) Как все уже заметили, я не очень в английский, поэтому доки почитать не справляюсь 3) трекер (уже есть), CI (еще эксперементирую с применимостью и нанесением пользы), wiki (уже есть) и LDAP (что это???) новые как то и не особо нужны. Вот сервис по кодревью нужен, а я его у гитлаба не увидел.

Если у вас есть материалы и ссылки по гитлабу в связке с 1С или хотя бы на русском - сообщество вам только спасибо скажет.
11. speshuric 1326 09.02.17 21:34 Сейчас в теме
(8) Ни в коем случае не подумайте, что мне что-то в вашем решении не понравилось. Нормальное решение, хорошо оформленная статья.
Просто немного удивило, что с вашими требованиями (закрытые бесплатные репозитарии, хотите больших объёмов) вы остановились BB.

Лично мне gitlab нравится гораздо больше.
1. Устанавливается реально просто.
2. Активно развивается (как обратная сторона - есть куда развиваться). За прошедший год авторы столько всего сделали, что я даже удивляюсь.
3. LDAP - это в первую очередь возможность подтянуть пользователей из active directory.
4. Сервис по code review - это же обычные мерж реквесты. Они там примерно аналог PR в bitbucket и github.
5. С продуктами atlassian интеграция, конечно, хуже чем в BB, но уж ссылки на тикеты подсвечивает.
6. Главное преимущество в том, что из альтернатив - единственный продукт, который можно установить локально абсолютно бесплатно и без ограничения по пользователям и с достаточным для комфортной работы функционалом. На моей нынешней работе есть куча ограничений по доступу к BB, потому что не куплено достаточно лицензий (аналитикам и другим "неразработчикам" не дают доступ).

На самом деле между gitlab/bitbucket/github примерный паритет по фичам и они очень похожи. У каждого из них есть свои фишки, но в целом для разработчика на 90% всё равно каким из них пользоваться. Чуть-чуть в стороне стоит upsource - он не выигрывает и не проигрывает, но заметно другой.
troubleshooter; JohnyDeath; Stepa86; +3 Ответить
12. pumbaE 09.02.17 23:38 Сейчас в теме
(11) к слову, адинєсники у себя внутри вроде stash используют.
13. speshuric 1326 10.02.17 10:04 Сейчас в теме
(12) Каждый из перечисленных чем-то хорош. BB очень даже интересен, когда есть hg-шники или когда весь остальной стек atlassian куплен (какими же дешёвыми кажутся лицензии 1С по сравнению с набором jira+conf+bitbucket, с учетом того что каждый год надо платить по половине начальной стоимости!).
Более того, git вполне позволяет в одной организации держать несколько разных source control серверов. Просто те, кого не устраивает общий продукт, настраивают зеркальный push со своей песочницы - так как минимум история коммитов сохраняется.
20. troubleshooter 27 18.04.17 10:00 Сейчас в теме
(11) Подняли сервер gitlab (community edition - бесплатный). Не найду как добавить ссылки в задачи способом, аналогичным описанному в текущей публикации.
У нас похожая ситуация: есть самописная система учета задач и в комментарии коммита в gitlab нужно видеть ссылку на задачу из нашей системы формата https://host/tasks/152187, где 152187 номер задачи. Сейчас мы можем при помещении изменений в хранилище указывать номер задачи из нашей системы в соответствии с некой маской, по которой потом будет происходить привязка ссылок (а точнее мы уже несколько лет указывали эти номера задач для всех помещений в хранилище, когда у нас еще не было git и соответственно мы и не думали сделать кликабельные ссылки).
Не найдя в gitlab настройки ссылок аналгичной bitbucket.org, решил при выгрузке истории хранилища в git добавлять в комментарий полную ссылку на задачу из нашей системы (доработав Гиттер - спасибо автору за полезную разработку). Но тогда адрес системы учета задач будет прописан в явном виде в каждом комментарии коммита и будет проблематично изменить адрес хоста при переносе системы учета задач на другой сервер.
Нагуглить решение данной проблемы средствами gitlab не получилось.
Может кто подскажет, умеет ли gitlab делать подобные ссылки?
21. Stepa86 1521 18.04.17 10:15 Сейчас в теме
(20) Проект -> Настройки -> Интеграция. Там внизу искать сервис "custom issue tracker". В ней заполняем примерно так, как приложено в файле. И ставим галку "Active". После этого все указания ссылок типа #123 будут заменены ссылкой https://localhost/Tracker/hs/Tasks/123 . Как подменять произвольный шаблон на ссылку - не нашел.
Прикрепленные файлы:
troubleshooter; +1 Ответить
18. sashocq 193 06.04.17 12:30 Сейчас в теме
(8) Я тоже начинал с bitbucket, но очень напрягало отсутствие подсветки синтаксиса 1С. Как увидел gitlab - перескочил на него. Собственно, на gitlab.com бесплатно работает с приватными репозиториями и ограничение по размеру там, вроде как, больше. Сейчас все задачи веду в нём.

я не очень умею разворачивать различные серверные штуки, особенно которые под юникс
я тоже, поэтому сейчас прохожу разработку по пром стандартам 2, там как раз это всё разжёвывается. Ещё можете успеть на текущий поезд.
19. Stepa86 1521 06.04.17 13:00 Сейчас в теме
(18) Я уже полностью перешел на гитлаб, там ограничение на репо 10гиг и нет ограничений на команду. Курсы мне не интересны.
14. yur4ik9408 34 16.02.17 10:50 Сейчас в теме
По поводу бесплатных альтернатив, которые можно развернуть локально, советую попробовать https://gogs.io/
Мы у себя пытались работать с гитлаб, но, с учетом его нехилых минимальных системных требований и скорости работы, как-то не пошло.
Потом, чисто случайно, наткнулись на вот эту радость. В связке с Redmine работает на ура.
22. paybaseme 14 05.12.18 13:01 Сейчас в теме
(14)
Еще используете? Как отзывы - не поменялись?
15. rus128 2 22.02.17 11:59 Сейчас в теме
Все хорошо и красиво.
Смущают только опечатки ("хочетЬся" - 2 раза, и "натренЕровался") :-)
16. grumagargler 723 05.04.17 21:21 Сейчас в теме
Вопрос немного в сторону. Поделитесь вашим опытом, насколько в итоге эффективно и всерьёз стало проводить код-ревью в условиях, когда не видно сопутствующих изменений, в частности, форм, планов-обмена прав и прочего? Тут я хотел акцентировать внимание не на самой необходимости анализа кода, а на том, насколько это удобно и эффективно делать при помощи гитов в связке с моделью приложения платформы 1С.
17. Stepa86 1521 06.04.17 08:52 Сейчас в теме
(16) Удобнее и эффективнее стало раз в 100. Если раньше нужно было специально разворачивать сравнение версий или садится читать отдельный блок с выпиской в отдельное место комментариев с какой нить хитрой привязкой к строчкам кода, то теперь это делается легко и удобно из интерфейса битбакета, гитлаба или гитхаба. И это мы еще на пул и мерджреквесты не перешли.
Оставьте свое сообщение