Как упростить подготовку конфигурации для работы с Git и SonarQube

02.07.24

Разработка - Групповая разработка (Git, хранилище)

Скрипт для работы с SonarQube и локальным репозиторием Git.
Цель проекта – возможность выполнить быструю проверку качества кода перед тем, как помещать доработки в рабочее хранилище. В Sonar и Git выгружается не вся конфигурация, а только объекты из заданного списка.
https://github.com/vkrivov/go/

Про 1С, Git и SonarQube

Во-первых, по нынешним временам для работы с 1С используется не только 1С. Есть большое количество инструментов, которые применяются на всех стадиях разработки. В данном случае остановимся на Git и SonarQube.

Во-вторых, когда разработчик выполняет какую-то задачу – и даже неважно, типовая конфигурация или нет – он ведь не правит всю конфигурацию вообще. Модуль объекта, какая-то форма объекта. Или расширение. Или это могут быть вообще внешние обработки (отчёты).

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

 

Цель проекта

Имеется список объектов конфигурации. Данный список разработчик составляет вручную в соответствии с выполняемыми задачами. Список задаётся в текстовом формате в наглядной форме. Пример списка:

Каталог: Тестовая база УТ
Строка соединения: File="C:\Dev\UT"; Usr="Admin"; Pwd="Admin"
[
ОбщийМодуль.CRMЛокализация
Документ.АвансовыйОтчет
Документ.АвансовыйОтчет.Форма.ФормаДокумента
Справочник.Номенклатура
Справочник.Номенклатура.Форма.ФормаСписка
C:\Разработка\Печать реестра.epf
]

Далее вручную или по расписанию запускается скрипт, который на основании списка формирует командную строку запуска конфигуратора. Конфигуратор выгружает объекты из списка в файлы. Для этих файлов делается git add и commt и запускается sonar-scaner.

Итак, цель проекта – выполнить быструю проверку качества кода перед тем, как помещать доработки в хранилище. В этой связи используется только локальный репозиторий, push в публичный репозиторий не делается.

 

Теперь подробнее

Изначально проект состоит из четырёх файлов:

 

 

go.os – собственно скрипт;
init.os – скрипт, который подготавливает необходимую структуру каталогов и создаёт локальный репозиторий git;
настройки.ini – настройки системы (пути к 1С и Sonar, токен Sonar и т. п.);
список объектов.ini – список объектов, которые требуется выгрузить.

 

Установка

Страница проекта на GitHab
https://github.com/vkrivov/go/

Распаковать файлы в нужный каталог. Название и расположение каталога произвольные. После этого выполнить  в этом каталоге команду oscript init.os:

 

 

В результате каталог будет выглядеть следующим образом:

 

 

Назначение созданных каталогов:
git – здесь находится локальный репозиторий;
sonar – здесь (будут) находятся файлы, предназначенные для Sonar.

Файл sonar-project.properties не используется. Вместо этого все параметры передаются сканеру в командной строке.

 

Настройка

Настройки задаются в двух файлах: настройки.ini и список объектов.ini; в файле настройки.ini описаны свойства системы вообще. Пример:

# Исполняемый файл 1С:Предприятия
ПлатформаПолныйПуть: C:\Program Files (x86)\1cv8\8.3.15.1830\bin\1cv8.exe*

# SonarScanner - файл запуска сканера, "sonar-scanner" для Linux, "sonar-scanner.bat" для Windows
# Если путь к сканеру не указан в PATH, нужно указать полный путь к файлу
SonarScanner: C:\Sonar\sonar-scanner\bin\sonar-scanner.bat*
SonarProjectKey: xxx**
SonarSources: .
SonarHostURL: http://localhost:9000***
SonarToken: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx**

* – приводятся исключительно для примера, пути необходимо заменить на реальные
** – определяются при настройке SonarQube
*** – адрес сервера SonarQube, localhost говорит о том, что сервер и сканер установлены на одной машине

В файле список объектов.ini указывается список необходимых объектов для каждой конкретной базы. Пример:
Каталог: Тестовая база*
Строка соединения: File="C:\Dev\UT"; Usr="Admin"; Pwd="1"***
[**
ОбщийМодуль.CRMЛокализация
Документ.АвансовыйОтчет
Документ.АвансовыйОтчет.Форма.ФормаДокумента
Справочник.Номенклатура
Справочник.Номенклатура.Форма.ФормаСписка
C:\Разработка\Печать реестра.epf
]**

* – название каталога, в который будут выгружаться файлы конфигурации, поэтому оно должно быть корректным с точки зрения файловой системы
** – начало и конец блока, в котором перечислены объекты конфигурации
*** – по крайней мере на Linux пакетный режим работает плохо в том случае, если база файловая и в пути содержатся кириллические символы.

Количество баз в файле настроек неограниченно.

 

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

Нужно выполнить команду
oscript go.os "...Комментарий к коммиту…"
либо, если комментарий не нужен (nc – no comments)
oscript go.os -nc

 

Важно

Скрипт написан на OneScript, предполагается, что в системе уже установлены и настроены:
OneScript, https://oscript.io/
Git, https://git-scm.com/
Sonar, https://www.sonarsource.com/

 

На всякий случай

Sonar – штука, мягко говоря, непростая. Мощная, скурпулёзная, но непростая. Во всём. И в установке тоже. В частности, с офф. сайта иногда пропадают ссылки на сканеры. На момент написания статьи они появились, но осадок остался. Подсказка, как решить проблему, нашлась на Медиуме (Статья, кстати, не о совсем сканере, а о том, как установить Сонар из Докера. Полюбопытствуйте. Прикольно.):
https://medium.com/@ayoubchamchi/sonarqube-sonarscanner-8bec4711e482

Смысл в том, что, оказывается, у Сонара есть место, где лежит всё, что можно скачать:
https://binaries.sonarsource.com/

 

Скачать

Страница проекта на GitHab:
https://github.com/vkrivov/go/

Вступайте в нашу телеграмм-группу Инфостарт

Скрипт OneScript Git SonarQube

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    13284    104    0    

78

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.3 1С 8.5 Бесплатно (free)

В прошлой статье у ERP оставалось 89 отказов загрузки, у ЗУП — 19. Теперь обе конфигурации совпали с эталонами, а собранные файлы прошли круг через платформу. Развертка выделена в открытый репозиторий cf-unwrapper: библиотека на Rust и консольная утилита. Показываю результаты, объясняю границы «100%» и приглашаю к проверкам и развитию проекта.

02.11.2026    227    oyti    1    

1

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

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

02.11.2026    459    vanya_gonchar    2    

4

Файловый обмен (TXT, XML, DBF), FTP DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.5 Бесплатно (free)

В прошлой статье я выгрузил Бухгалтерию в XML байт в байт и спросил, на чем проверить дальше. Вы ответили: ERP, старые релизы, зарплата. Прогнал пять конфигураций, от клиента ЭДО до ERP на 120 тысяч файлов. Рассказываю, что сломалось после Бухгалтерии, почему эталону платформы нельзя верить на слово, как выгрузить одну конфигурацию в формат трех версий платформы - и почему cf-конвертер становится отдельным продуктом, Разверткой.

02.11.2026    308    oyti    2    

3

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С 8.5 Бесплатно (free)

Выгрузка типовой Бухгалтерии в XML через базу занимает больше четырёх минут. Я написал движок, который читает файл конфигурации напрямую и выгружает его за 35 секунд, совпадая с выгрузкой платформы байт в байт во всех 90 385 файлах. Загрузка обратно тоже работает: круг через платформу совпадает полностью. Рассказываю, как ускоряли, как проверяем и что при загрузке XML теряет сама платформа. А в конце спрашиваю, нужно ли это кому-то, кроме меня, и на какой конфигурации проверить следующей.

27.10.2026    876    oyti    20    

16

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Управление взаимоотношениями с клиентами (CRM) Разработчик Стажер 1С 8.3 Абонемент ($m)

На примере доработки отчёта в 1С показываю, как согласовать объём, оценку и приёмку. В архиве - автономный HTML-инструмент: расчёт трудозатрат, история договорённостей, изменения, критерии и статус заказчику; заполненный учебный разбор и исходники.

1 стартмани

12.10.2026    325    Ninel_S    0    

2

Рефакторинг и качество кода Групповая разработка (Git, хранилище) Нейросети Разработчик 1С 8.3 Абонемент ($m)

Для ревью изменений 1С я проверила граф вызовов бесплатной редакции Analyzer 1C (Community) и отдельно разобрала diff и blame в учебном Git-репозитории. На Analyzer 1C 2.7.65 граф и REST показали две процедуры, в которых вызывается СкрытьНастройкиАвторизации. В статье — первичные выводы и пределы проверки; в архиве — скрипты и чек-лист.

1 стартмани

12.10.2026    380    Ninel_S    0    

1

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Нейросети Разработчик 1С 8.3 Абонемент ($m)

Какие ветки нужны, если конфигурация 1С лежит в Git: feature, release и hotfix поверх master и develop. Как выпустить релиз и hotfix, где ломается слияние XML-метаданных и что выгружать перед коммитом. В архиве - скрипт проверки имён веток, пример списка и чек-лист перед слиянием в master.

1 стартмани

12.10.2026    452    Ninel_S    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SAShikutkin 17 03.07.24 09:51 Сейчас в теме
Так если это нужно разработчику, проще использовать феникс (https://github.com/otymko/phoenixbsl), и не нужно ждать пока Sonar обработает изменения. (P.S. да правил меньше, но 80% ошибок им перекрывается).
comptr; sleemp; +2 – Ответить
2. sleemp 94 05.07.24 12:47 Сейчас в теме
Не совсем понял профит от этого решения.

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

Как написали в (1), феникс решит задачу предварительного быстрого анализа. А раз уж мы развернули сонар, то проще отгружать в него всю конфигурацию целиком, а исключение объектов не затронутых разработчиком решить через отключение проверки объектов на поддержке и механизм сонара со сравнением с предыдущей версией кода (а тут уже широкий простор для настроек, можно через запросы на слияние пойти, можно предыдущий код в ветке отдельной сохранить, можно по количеству дней отсекать старый код)
comptr; nixel; +2 – Ответить
3. nixel 1474 05.07.24 16:46 Сейчас в теме
(2) как раз хотел написать, что при частичной выгрузке конфигурации у сонар-сканнера будет минимум контекста об окружении, и часть проверок, которые опираются на тип модуля или обращения к другим модулям работать не будут.

разве что нужно не забыть фениксу переодически новую версию бсл лс подкладывать.
4. Kyrales 147 06.07.24 13:28 Сейчас в теме
(3) новые версии BSL не работают на фениксе
5. nixel 1474 06.07.24 13:35 Сейчас в теме
(4) а можно подробности? Выдаётся какая-то ошибка или что? API сервера не менялся за эти годы.
7. Kyrales 147 10.07.24 16:15 Сейчас в теме
(5) на 0.20 BSL работает, а на 0.23 нет. Скриншот приложил
Прикрепленные файлы:
8. Kyrales 147 10.07.24 16:58 Сейчас в теме
(5)
(6)
(7)
Все вопрос снимаю. Разобрался. Скачивал только jar файл для замены. А надо было весь bsl-language-server_win.zip . Работает :)
6. sleemp 94 08.07.24 12:38 Сейчас в теме
(4) проверил. работает.
Прикрепленные файлы:
Для отправки сообщения требуется регистрация/авторизация