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

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

См. также

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

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

2160 руб.

20.01.2022    9727    36    0    

18

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

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

3360 руб.

05.08.2024    2976    18    1    

12

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

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

вчера в 16:03    366    ovcharenko.di    3    

8

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Программист 1С v8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

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

1 стартмани

29.07.2025    1620    1    gorsheninsn    6    

20

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

Статья о практическом опыте внедрения unit-тестирования в legacy-конфигурацию 1С (УКФ) с использованием фреймворка YAxUnit. Автор делится возникшими техническими вызовами и организационными сложностями, а также их решениями, которые включают использование модулей-помощников, макетов и контекста. Приводятся реальные примеры тестирования HTTP-сервисов и событий документов.

25.07.2025    708    batsy66    5    

9

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

В статье расскажем, как Sentry помогает компании Magnit Tech эффективно решать задачи оперативного выявления и анализа ошибок. Поделимся практическим опытом внедрения Sentry и объясним, почему этот инструмент превосходит другие бесплатные аналоги по функционалу и удобству использования. Рассмотрим гибкий механизм настройки оповещений об ошибках журнала регистрации, который позволяет адаптировать уведомления под конкретные нужды проектов. Объясним, как Sentry используется для мониторинга производительности базы 1С, обеспечивая стабильность работы критически важных систем. Затронем тему интеграции Sentry с системами мониторинга инфраструктуры и CDN.

17.07.2025    906    daniloffartur    1    

6

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

YAxUnit – это сравнительно молодой, но амбициозный и быстро развивающийся инструмент из мира open-source. Расскажем о ключевых этапах развития инструмента и особенностях работы над open-source проектом.

17.07.2025    2174    Жолтокнижниг    1    

22

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

Цель статьи – показать, что DevOps можно внедрять в проектах любого масштаба, даже с ограниченными ресурсами. Автор делится личным опытом: рассказывает, как начиналось внедрение, какие ресурсы потребовались, какие задачи удалось решить и как организован текущий рабочий процесс. Вы узнаете, как DevOps-практики помогают участникам разработки и чем DevOps-инженеры полезны для всех, кто участвует в создании решений. В статье подробно разбираются преимущества, которые дал переход на EDT, его влияние на процессы сборки, а также анализируется опыт внедрения Kubernetes – что это уже принесло и что принесет в будущем.

11.07.2025    1034    ptica    0    

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