reperr - автоматическая регистрация ошибок для 8.3.17+

Публикация № 1330825

Методология - Управление задачами

ошибки servicedesk onescript 1script oscript onescript.web reperr rabbitmq sentry jira redmine 8.3.17 8.3.18

Представляю вашему вниманию приложение для автоматической регистрации и обработки ошибок, которые возникают при работе в информационных базах на платформе 1С:Предприятие 8.3.17+

reperr - приложение на OneScript.Web, которое задействует механизмы платформы 1С 8.3.17+ по автоматической обработке ошибок. С его помощью можно прямо из окна 1С можно создать задачу в Jira или Redmine, а также отправить сообщение об ошибке в Sentry или RabbitMQ.

Название reperr образовалось от report и error, произносится как рэпер.

Проект живет на GitHub.

Какие задачи решает reperr?

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

Как пользоваться?

Рассмотрим один из вариантов: допустим, что в роли баг-трекера выступает Jira. Также имеется некая информационная база, ошибки в которой решено перехватывать и отправлять баг-трекер.

Для начала необходимо создать и настроить служебную учетную запись Jira, от имени который reperr будет регистрировать ошибки. Для этой учетной записи потребуется создать токен. Он требуется для доступа к Jira API. 

Токен генерируется тут:

 

В следующем окне нужно перейти в раздел "Безопасность":

 

 

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

Затем нужно скопировать исходники проекта на ту машину, на которой он будет работать. Можно клонировать репозиторий или скачать архив из релизов.

Следующий шаг: указать в файле `src/appsettings.json` реквизиты подключения к вашему экземпляру Jira и обязательные параметры, например, задачи какого типа и с каким приоритетом создавать.

 

 
 Как узнать идентификаторы типов задач / приоритетов / статусов в Jira ?

 

После установки параметров нужно запустить проект. Сделать это можно по-разному: в докере и неправильным способом напрямую на OneScript.Web.

Я настоятельно рекомендую запускать правильным способом. Для этого в каталоге проекта нужно выполнить команду:

docker-compose up

Само собой, движок docker и docker-compose должны быть установлены.

 

 

После запуска имеет смысл проверить, что веб-интерфейс открывается в обычном браузере.

 

 
 Почему такой скудный интерфейс? Где, собственно, дашборды?

 

Далее нужно указать в информационной базе ссылку на reperr, а также изменить другие параметры регистрации ошибок, если это требуется. Для применения настроек 1С попросит перезапустить текущий сеанс.

Окно с настройками открывается из меню "Функции для технического специалиста" -> "Стандартные" -> "Управления настройками обработки ошибок":

 

Можно считать, что первоначальная настройка выполнена. Чтобы проверить работоспособность того, что мы настроили, воспроизведем какую-нибудь ошибку. Самое простое - написать внешнюю обработку с обращением к чему-нибудь несуществующему.

Теперь при возникновении ошибки в системе отобразится кнопка "Отправить отчет", а при ее нажатии появится надпись "Отчет отправлен". Обратите внимание на то, что место отображения кнопки "Отправить отчет" зависит от настроек обработки ошибок.

 

 

После нажатия на кнопку "Отправить" система сообщает: "Отчет отправлен".

 

 

Что произойдет, если ошибка возникнет много раз и у нескольких пользователей? Неужели в трекере появится много одинаковых задач?

Это поведение будет зависеть от выбранной точки интеграции. Если точка интеграции - Jira или Redmine, то не появится. В RabbitMQ и Sentry отправляется каждый отчет.

 
 Почему так? Можно подробнее?

 

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

 

 

Проверим, как выглядит результат в Jira. На скриншоте ниже видно, что создана задача REP-53, со стеком и скриншотом. Если при отправке ошибки из 1С прикрепить произвольный файл, то и он отобразится во вложениях.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Опыт эксплуатации и особенности

Решение стабильно работает как в Windows, так и в Linux, дает минимальную нагрузку, работает без сбоев месяцами.

На какие особенности следует обратить внимание:

  • все настройки обработки ошибок кочуют вместе с копиями информационной базы. Это приводит к тому, что все копии одной ИБ будут стучаться по той ссылке, которая была указана в момент создания копии. Платформа 1С не передает в отчете по ошибке адрес информационной базы, поэтому reperr не сможет понять, откуда конкретно пришел запрос.
  • сейчас в платформе нет возможности переопределить надпись "Отчет отправлен". Это приводит к тому, что при отправке отчета о новой ошибке пользователь не сможет сразу увидеть, под каким номером она была зарегистрирована. Единственный способ - воспроизвести ошибку еще раз. Я уже направил пожелание на доработку веб-сервиса разработчикам платформы 1С.
  • веб-интерфейс reperr примитивен и не предоставляет практически никаких возможностей, кроме просмотра информации. Лично мне имеющихся возможностей пока хватает, но развиваться есть куда.

Решение будет полезным как службе поддержки, так и конечным пользователям. В контуре тестирования \ разработки оно тоже пригодится.

Всем, кто уже перешел на 8.3.17 или 8.3.18, можно смело пользоваться. Я буду очень благодарен за обратную связь, новые идеи, и, конечно, пул-реквесты.

 

Технические подробности

Этот раздел привожу для тех, кому интересны внутренности приложения.

reperr разработан на OneScript.Web. Почему именно так? Есть две причины, и главная из них - мне очень хотелось изучить движок и его возможности. Вторая причина - хотелось остаться внутри экосистемы 1С. Все-таки это продукт, который подразумевает тесное взаимодействие с платформой 1С и только с ней. Разрабатывать такой проект на Node.js было бы занимательно, но не логично.

reperr состоит из двух условных частей: ядра и слоя прикладной логики.

Ядро - это реализация веб-сервиса, спецификация которого опубликована в документации к платформе. Другие публикации (первая, вторая) на IS хорошо дополняют документацию, поэтому повторяться не буду.

Ядро reperr выполняет три функции:

  • получает информацию об ошибках, которые возникают в подключенных базах
  • запрашивает прикладную часть о необходимости регистрации ошибки
  • получает, распаковывает и сохраняет в локальном каталоге отчеты об ошибках (архивы с report.json, скриншотами и другими файлами, которые прикрепил пользователь)

"Прикладная" часть отвечает за:

  • отображение информации в веб-интерфейсе
  • сохранение информации о возникших ошибках и отчетов по этим ошибкам во внутреннем формате
  • вычисление "отпечатков" ошибок
  • принятие решения об отправке ошибки
  • отправку ошибок в точку интеграции

Архитектура проекта далека от идеальной, но уже сейчас позволяет относительно быстро реализовать свою точку интеграции. Для этого нужно:

  • создать свой класс и реализовать в нем методы программного интерфейса
  • добавить свой ключ в файл настроек appsettings.json
  • немного дополнить класс, который обрабатывает файл настроек.

Если тема окажется актуальной и интересной, я могу создать отдельную публикацию на тему подключения новых точек интеграции, на примере YouTrack или СППР. Какой issue наберет большее количество лайков, на том и сделаю.

PS: в недрах проекта спрятана пасхалка. Ее не так уж сложно найти, нужно совсем немного постараться. Поверьте, это стоит того)

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Senator_I 13 04.02.21 15:09 Сейчас в теме
Штука очень удобная, подтверждаю! Сразу регистрируется в баг- трекере и остается только назначить разработчику для исправления.
2. artbear 1304 04.02.21 18:00 Сейчас в теме
(0) А отправка в sentry со скриншотами или без?
3. ovcharenko.di 65 04.02.21 19:33 Сейчас в теме
4. itriot11 67 09.02.21 11:52 Сейчас в теме
Оставьте свое сообщение

См. также

Автоматическое сравнение-объединение баз данных с мини-конфигурацией

OneScript v8 Бесплатно (free)

Представляю вашему вниманию скрипт на OneScript для автоматического сравнения-объединения по правилам ("мержевания") конфигураций нескольких баз с мини-конфигурацией.

14.10.2019    3243    artkor    2    

АИТП. Подсистема взаимодействия с рабочими серверами OneScript

OneScript v8 Бесплатно (free)

В статье описан механизм взаимодействия конфигурации АИТП с рабочими серверами OneScript.

22.05.2019    5591    blackhole321    33    

1Script.Web. Интернет-приложения на языке 1С

WEB OneScript Инструментарий разработчика v8 Бесплатно (free)

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    21487    Evil Beaver    33    

Разворачиваем рабочий сервер OneScript для конфигурации АИТП

OneScript v8 Бесплатно (free)

В статье описана методика развертывания рабочего сервера OneScript для конфигурации АИТП, на ОС CentOS 7.

09.05.2019    6489    blackhole321    0    

Добавляем онлайн-чат в web-приложение OneScript

OneScript v8 Бесплатно (free)

В статье рассмотрено подключение онлайн-чата к web-приложению на основе http-сервисов OneScript

24.06.2018    7779    blackhole321    1    

Сказ про то, как я DevOps-ом занимался (OneScript, Deployka, Jenkins)

OneScript DevOps Jenkins v8 1cv8.cf ИТ-компания Бесплатно (free)

Решаем задачу: автоматизировать обновление тестовых баз 1С из хранилища конфигурации при появлении в нём новых изменений. Данная статья родилась в муках хождения по граблям и поиска безопасного форватора среди подводных камней. Изложение постарался представить в виде инструкции для новичка, в которой собрал всё, с чем пришлось столкнуться. Сам я не DevOps-ер, ни на что не претендую, просто делюсь опытом :)

17.06.2018    23700    stas_ganiev    36    

Макеты в http-сервисах OneScript

OneScript v8 Бесплатно (free)

В статье описана библиотека, реализующая механизм макетов в http-сервисах OneScript, аналогично платформе 1С:Предприятие.

03.06.2018    8605    blackhole321    1    

Перечисления в http-сервисах OneScript

OneScript v8 Бесплатно (free)

В статье описывается библиотека, реализующая механизм перечислений в http-сервиах OneScript, аналогичный механизму платформы 1С:Предприятие

03.06.2018    8111    blackhole321    13    

Сборка, тестирование, доставка приложения на onescript с помощью gitlab-ci

OneScript v8 1cv8.cf Бесплатно (free)

Сборка, тестирование, доставка приложения на onescript с помощью gitlab-ci на примере портирования на onescript функции daСклонение.

14.05.2018    13587    pallid    7    

TMSSQL - работа с базами данных MS SQL Server в скриптах на OneScript и из командной строки

OneScript v8 Бесплатно (free)

Представляю вашему вниманию библиотеку TMSQL для работы с базами данных на MS SQL Server. Библиотека подключается в качестве модуля или класса в скрипты, написанные на OneScript, а также может работать как независимое консольное приложение.

26.04.2018    15285    Tavalik    22    

Создаем свою библиотеку для OneScript

OneScript v8 Бесплатно (free)

Как упаковать свою библиотеку в пакет? Что такое загрузчик и зачем он нужен? Как вообще создать свою библиотеку? Разбираемся на примере.

06.03.2018    23154    nixel    36    

Обзор имеющихся библиотек OneScript

OneScript v8 Бесплатно (free)

Экосистема OneScript активно развивается. Количество пользователей данного интерпретатора и имеющихся библиотек неуклонно растет, количество решаемых проблем - тоже. Однако остро встает вопрос некоторой разобщенности и размазанности информации по имеющимся библиотекам, их функциональности и проблемам, которые они решают. Данная статья призвана навести порядок в этой теме.

14.11.2017    47489    nixel    87    

Вебинтерфейс для OneScript и 1С

OneScript v8 Россия Бесплатно (free)

Пример создания вебинтерфейса для OneScript с использованием библиотеки UfaScript.osb

30.06.2017    14095    andreosh    7    

OneScript и Ajax. POST-запрос и мои дальнейшие планы с фантазиями о будущем

OneScript v8 Россия Бесплатно (free)

Моя библиотека для OneScript (версия 3.0 от 09.06.2017 см.GitHab UfaScript) https://github.com/andreosh/UfaScript теперь позволяет посылать POST-запросы на сервер без использования сторонних библиотек типа jquery.

09.06.2017    18105    andreosh    3