Автоматическое формирование отчета по качеству кода, используя конфигурацию "Автоматизированная проверка конфигураций"

06.02.17

Разработка - DevOps и автоматизация разработки

Обработка позволяет создавать отчет по качеству кода в автоматическом режиме на сервере сборок Jenkins, используя конфигурацию "Автоматизированная проверка конфигураций"

Файлы

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

Наименование Скачано Купить файл
RunnerAcc.epf
.epf 19,29Kb
7 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Обработка работает в конфигурации "Автоматизированная проверка конфигураций " версия  1.1.12.26 (c более ранними работать не будет).

Как пользоваться конфигурацией читайте здесь. В публикации будут описана только работа с обработкой.

Подготовительный этап:

  • В регистре "Особенности" в измерении "Объект" хранится путь до проверяемого объекта, если в конфигурации есть форма с именем "ПоддержкаИОбслуживание" и команда с таким же именем, особенности формы игнорируются. Для исправления нужно изменить процедуру " АктуализироватьОсобенности" в модуле документа " ПроверкаВерсии " (1С обещала исправить в следующем релизе). Код приведен в конце статьи.

Инструкция по работе с обработкой:

Параметры обработки (англоязычный вариант используется в пакетном запуске):

  • "Путь к базе / Base" (обязательный) - путь к файловой базе 1с, которую хотите проверить,
  • "Путь к словарю / Vocabulary" - путь к словарю, где хранится слова-исключения для проверки орфографических ошибок (формат файла совпадает с форматом, который использует конфигурация при выгрузке регистра "ВерныеСлова"),
  • "Путь к особенностям / Specificity" - путь к файлу с особенностями (формат отличается от принятого в конфигурации из-за ошибки с сохранением поля "Уточнение" и для уменьшения размера),
  • "Путь к требованиям / Requirements" и "Путь к требованиям исключениям / IgnoreRequirements" -  путь к файлам с описанием требований, которые хотим чтобы проверялись.  Формат файла - текстовый файл, кодировка UTF8 с наименованием требования, разделитель перевод строки. Сначала программа пытается прочитать требования, если их нет, то читает все требования за исключением требований-исключений и требований, в которых есть этап "ВыполнитьПлатформеннуюПроверкуКонфигурации",
  • "Путь к платформе / Path" -  путь к папке, где лежит 1cv8.exe, если не указывать, то использует версию платформы, в которой запущена конфигурации "Автоматизированная проверка конфигураций".
  • "Путь к объектам / Object" - путь к файлу с указанием объектов, которые нужно проверять. Формат файла - текстовый файл, кодировка UTF8, разделитель перевод строки, нужно писать строки следующего вида "cf/DataProcessors/ЖурналРегистрации", программа берет только имя объекта, т.е. ЖурналРегистрации.
  • "Путь к объектам исключениям / IgnoreObject" -  путь к файлу с указанием объектов, которые проверять не надо. Формат файла - текстовый файл, кодировка ANSI, разделитель перевод строки, писать нужно имя объекта как оно выводится при платформенной проверки конфигурации, например "Обработка.Запросник2_0".
  • Report - путь до отчета, который получается после проверки. В интерактивном режиме параметр отсутствует.

Для создания файла с особенностями нужно заполнить регистр "Особенности" как с помощью средств конфигурации так и с помощью кнопки "Добавить особенность" на закладке "Добавление особенностей". После заполнения нужно нажать кнопку "Сохранить особенности в файл"

Для пакетного запуска нужно в командной строке указать запуск 1с в режиме предприятия в толстом клиенте с открытием обработки RunnerAcc.epf и с передачей параметров запуска (формат: имя параметра = значение, разделитель точка с запятой), например: "C:\Program Files (x86)\1cv8\8.3.8.2137\bin\1cv8.exe" ENTERPRISE /IBConnectionString File=ACC /RunModeOrdinaryApplication /Execute "RunnerAcc.epf" /C "Base=base;Report=Report.html"

Для вывода отчета в Jenkins используется плагин HTML Publisher plugin, в резульатет получится отчет в html .

P.S. Публикация получилось немного скомканной, поэтому пишите в комментариях не очевидные вещи. Обработка писалась для себя, поэтому если будет интерес и потребуется доработка, готов поправить.

P.P.S. Патч процедуры в тексте статьи не хотел приводить, но Инфостарт запрещает делать файлы бесплатными для скачивания, поэтому пришлось добавить.

Процедура АктуализироватьОсобенности(НайденныеОшибки)
	
	ЗапросПоОсобенностям = Новый Запрос;
	ЗапросПоОсобенностям.Текст = "
	|ВЫБРАТЬ
	|	Особенности.*
	|ИЗ
	|	РегистрСведений.Особенности КАК Особенности
	|ГДЕ
	|	Особенности.Конфигурация = &Конфигурация";
	ЗапросПоОсобенностям.УстановитьПараметр("Конфигурация", Конфигурация);
	
	ТаблицаОсобенностей = ЗапросПоОсобенностям.Выполнить().Выгрузить();
	
	КоличествоОсобенностей = ТаблицаОсобенностей.Количество();
	Если КоличествоОсобенностей = 0 Тогда
		Возврат;
	КонецЕсли;
	
	МассивНеактуальныхОсобенностей = Новый Массив;
	
	ЗапросПоОбъектам = Новый Запрос;
	ЗапросПоОбъектам.Текст = "
	|ВЫБРАТЬ
	|	СтруктураКонфигурации.Ссылка КАК Ссылка,
	|	СтруктураКонфигурации.Путь КАК Путь
	|ИЗ
	|	Справочник.СтруктураКонфигурации КАК СтруктураКонфигурации
	|ГДЕ
	|	СтруктураКонфигурации.Владелец = &Владелец
	|	И СтруктураКонфигурации.Путь В(&Путь)";
	
	ЗапросПоОбъектам.УстановитьПараметр("Владелец", Версия);
	ЗапросПоОбъектам.УстановитьПараметр("Путь", ТаблицаОсобенностей.ВыгрузитьКолонку("Объект"));
	ТаблицаОбъектов = ЗапросПоОбъектам.Выполнить().Выгрузить();
	
	ТаблицаОбъектов.Индексы.Добавить("Путь");
	
	СтруктураОтбораПоПути = Новый Структура("Путь");
	
	Для Каждого Особенность Из ТаблицаОсобенностей Цикл
		
		#Если Клиент Тогда
		ОбработкаПрерыванияПользователя();
		#КонецЕсли
		
		Ошибка = Особенность.Ошибка;
		
		// Проверяем, что ошибка особенности есть в выбранных требованиях, если нет, то оставляем особенность.
		Если НЕ МассивСодержитЗаписьОшибки(ОбнаруживаемыеОшибки, Ошибка) Тогда
			Продолжить;
		КонецЕсли;
		
		// Если данные о платформенной проверке не собраны, то оставляем особенность по платформенной проверке.
		Если МассивСодержитЗаписьОшибки(ОшибкиПлатформеннойПроверки, Ошибка) Тогда
			Продолжить;
		КонецЕсли;
		
		Уточнение = Особенность.Уточнение;
		
		ОсобенностьАктуальна = Ложь;
		
		// Ищем все объекты в таблице по одному пути, т.к. путь может совпадать, например, для формы и команды.
		СтруктураОтбораПоПути.Вставить("Путь", Особенность.Объект);
		МассивОбъектов = ТаблицаОбъектов.НайтиСтроки(СтруктураОтбораПоПути);
		Для Каждого ЭлементОбъекта Из МассивОбъектов Цикл
			
			Отбор = Новый Структура;
			Отбор.Вставить("Ошибка", Ошибка);
			Отбор.Вставить("Объект", ЭлементОбъекта.Ссылка);
			Отбор.Вставить("Уточнение", Уточнение);
			
			ОшибкиСОбщимиОсобенностями = НайденныеОшибки.НайтиСтроки(Отбор);
			Если ОшибкиСОбщимиОсобенностями.Количество() > 0 Тогда
				ОсобенностьАктуальна = Истина;
				Прервать;
			КонецЕсли;
			
			// Уточнение в найденных ошибках может быть сокращено, повторяем поиск.
			Отбор.Вставить("Уточнение", СокрЛП(Уточнение));
			ОшибкиСОбщимиОсобенностями = НайденныеОшибки.НайтиСтроки(Отбор);
			Если ОшибкиСОбщимиОсобенностями.Количество() > 0 Тогда
				ОсобенностьАктуальна = Истина;
				Прервать;
			КонецЕсли;
			
		КонецЦикла;
		
		// Если особенность не актуальна, то добавим ее в массив для удаления особенностей.
		Если НЕ ОсобенностьАктуальна Тогда
			МассивНеактуальныхОсобенностей.Добавить(Особенность);
		КонецЕсли;
		
	КонецЦикла;
	
	// Если нет неактуальных особенностей, то выходим.
	Если МассивНеактуальныхОсобенностей.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Для Каждого Особенность Из МассивНеактуальныхОсобенностей Цикл
		ТаблицаОсобенностей.Удалить(Особенность);
	КонецЦикла;
	
	НаборЗаписейОсобенностей = РегистрыСведений.Особенности.СоздатьНаборЗаписей();
	НаборЗаписейОсобенностей.Отбор.Конфигурация.Установить(Конфигурация);
	НаборЗаписейОсобенностей.Загрузить(ТаблицаОсобенностей);
	
	НаборЗаписейОсобенностей.Записать();
	
КонецПроцедуры

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

Обработка Автоматизированная проверка конфигураций Jenkins

См. также

DevOps и автоматизация разработки Тестирование QA Программист Пользователь 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Зарплата и Управление Персоналом 3 и версии КОРП: 3.1.35.48.

3600 руб.

05.08.2024    4067    22    1    

16

Тестирование QA DevOps и автоматизация разработки Программист 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.17.168.

2400 руб.

04.07.2022    11196    44    1    

35

HighLoad оптимизация DevOps и автоматизация разработки Бесплатно (free)

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

08.10.2025    1467    komil4    11    

10

Тестирование QA Программист Бесплатно (free)

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

30.09.2025    1109    kraynev-navi    0    

6

DevOps и автоматизация разработки Бесплатно (free)

Вы собрали свой первый пайплайн на базе Gitlab CI? Поздравляю, вы молодец! Но что делать, когда количество проектов начинает расти? Как быть с проблемами окружения, долгим выполнением сборки и дополнительными трудозатратами по поддержке скриптов? Расскажем о подготовке образов для запуска заданий в контейнерах, оптимальных настройках gitlab-раннеров, приемах повышения скорости выполнения заданий при работе с EDT, использовании CI/CD components для дедупликации кода пайплайна и выпуске артефактов релизов, используя Gitlab Package Registry и Releases.

19.09.2025    1550    DAAbramov    5    

10

Тестирование QA 1С v8.3 Бесплатно (free)

Этот текст о том, без чего не обходится работа тестировщика. Статья будет полезна начинающим тестировщикам и всем, кто работает с 1С и хочет понять, как тестирование помогает ловить ошибки и делать систему удобнее.

01.09.2025    4858    Oksana_Makr    2    

16

Тестирование QA Программист Бесплатно (free)

Много раз наблюдал ситуацию: команда узнает, что можно писать тесты в 1С – и пишут как попало. Потом тесты или блокируют друг друга, или проверяют не все. Доверие к тестам падает, и их перестают писать от разочарования, что время потрачено, а пользы нет. Расскажем о том, какие базовые техники помогут сократить количество непродуктивных тестов и обеспечить при этом достаточное покрытие.

29.08.2025    2086    Scorpion4eg    0    

11

DevOps и автоматизация разработки Программист Бесплатно (free)

Облачные технологии и DevOps кардинально меняют подход к разработке на платформе 1С:Предприятие. Делимся реальным опытом построения CI/CD-конвейера в GitLab: от сборки и тестирования с YAxUnit и Vanessa Automation до интеграции с SonarQube и безопасного развертывания в продакшен. Вы узнаете, как с помощью Docker и автоматизации превратить рутину в предсказуемый и надежный процесс, сократив риски и освободив время для решений, которые действительно требуют вашего профессионализма.

18.08.2025    2599    ComboBoy    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Stepa86 1535 06.02.17 15:19 Сейчас в теме
1) Путь собственно к базе АПК указывается в строке подключения?
2) Почему все задается параметрами? Нельзя передавать только ИД конфигурации, которая сохранена и настроена в АПК?
3) Можешь что нибудь посоветовать для тех, кто в Дженкинсе разбирается примерно так же, как в китайском языке?
2. aleksey_vk 7 06.02.17 15:47 Сейчас в теме
1 и 2. Обработка позволяет получить отчет ничего не настраивая в конфигурации "Автоматизированная проверка конфигураций". Создали базу. Запустили 1с с нужными параметрами и получили отчет.
3. Цель публикации как раз в получении отчета в формате html, что бы его можно было прикрепить к результату сборки на jenkins.
Для отправки сообщения требуется регистрация/авторизация