Как я сломала мини-конфигурацию, починила её и заставила JUnit говорить правду
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
vrunner validate syntax-check вместо syntax-check, файл настроек autumn-properties.json вместо vrunner.json, повтор ключа --mode для нескольких значений.КонецЕсли в общем модуле ПродажиСервер - код 1 и замечание на строке 16. Четыре рисунка собраны из журналов.15.1-companion.zip (33,0 КБ): make_demo_src.py, run_check.ps1, nano_ut_check.ps1, nano-ut/src, autumn-properties.json, gitlab-ci.example.yml, evidence/, README.mdpowershell -File nano_ut_check.ps1 -Work <каталог> и пара make_demo_src.py + run_check.ps1 из распакованного архива; run_check.ps1 на XML-выгрузке копии демобазы УТ 11.5.22.77Разработчикам и тимлидам 1С: какие команды схемы проверок 2021 года изменились в vanessa-runner 3.0 и что показывает синтаксическая проверка на платформе 8.3.27 по коду возврата и отчёту JUnit.
- Команды переименованы:
vrunner validate syntax-check,vrunner infobase update,vrunner test xunit; старые плоские примеры из статьи 2021 года не запускаются. - Для CI важны код возврата и JUnit: 1 при замечаниях и 0 без них, один failure на найденное замечание.
- Ошибки открываются по очереди: первая ошибка разбора скрыла вторую, после правки нужен новый запуск.
- Старый файл настроек игнорируется молча:
vrunner.jsonне применился, vrunner создал временную базу, и проверка прошла «без замечаний» по пустой базе.
Проверку синтаксиса можно подключить к коммиту одной командой, но шаг должен читать код возврата и использовать актуальный файл настроек. Тесты, GitSync, статический анализ и ИИ-ревью нужно проверять на своей базе.
Для кого: разработчики и тимлиды 1С, которые хотят проверять конфигурацию по каждому коммиту без ручного запуска Конфигуратора.
Ключевые технологии: vanessa-runner 3.0.2, OneScript 2.0.0, платформа 1С:Предприятие 8.3.27, отчёт JUnit, opm, Нано-УТ.
Эта статья обновляет схему 2021 года по тому, что я проверила на своём компьютере. Сначала установила пакеты через opm, затем запустила проверку синтаксиса на мини-конфигурации с ошибкой и без неё, а потом на демо-конфигурации Нано-УТ. Всё, что запустить не получилось, вынесено в отдельный раздел «Что не проверено».
- Параметры тестового стенда
| Компонент | Значение |
|---|---|
| Процессор и память | Intel Core i5-2400 (3,1 ГГц), 7,9 ГБ ОЗУ, SATA SSD |
| Операционная система | Windows 11 Pro |
| Платформа 1С:Предприятие | 8.3.27.2130 (x86), файловая база |
| OneScript | 2.0.0 |
| vanessa-runner | 3.0.2 |
| add (Vanessa-ADD) | 6.8.0 |
| gitsync | 3.9.1 |
| Git | 2.56.0 |
Версии пакетов взяты из вывода opm list (файл evidence/versions.txt в архиве). Linux не проверялся. Сервер СУБД не использовался: база файловая.
- Что изменилось в командах
Установка пакетов одной командой на пакет:
В справке vanessa-runner 3.0.2 команды сгруппированы. Вызов vrunner без аргументов выводит список: validate, test, repo, infobase, epf, cluster, cfe, cf, run. Дальше два раздела, которые нужны для проверок:
Рис. 1. vrunner 3.0.2 без аргументов: группы команд validate, test, repo, infobase, epf, cluster, cfe, cf, run.
vrunner validate syntax-checkпроверяет синтаксис конфигурации; рядом лежитvrunner validate edtдля проекта EDT;vrunner test xunit,vrunner test vanessa,vrunner test yaxunitзапускают тесты.
В README пакета есть таблица миграции с 2.x: vrunner syntax-check теперь vrunner validate syntax-check, vrunner updatedb теперь vrunner infobase update, файл настроек vrunner.json заменён на autumn-properties.json с вложенной иерархией команд и ключами без --. Переменные окружения RUNNER_* стали VRUNNER_*. Старые примеры из статьи 2021 года с плоскими командами без группы теперь не работают.
Ключи с несколькими значениями задаются повторением: --mode ThinClient --mode Server. Запись --mode ThinClient Server справка vrunner разбирает как лишний аргумент, и команда завершается ошибкой чтения параметров.
- Прогон 1: база с ошибкой
Чтобы не проверять пустую конфигурацию, я собрала мини-конфигурацию с общим модулем ДемоМодуль (скрипт make_demo_src.py в архиве). В процедуре Сломано нет КонецЕсли и вызывается несуществующая функция. База создаётся из исходников одной командой:
Проверка синтаксиса с отчётом JUnit:
Вывод (фрагмент журнала evidence/run-broken.log):
ИНФОРМАЦИЯ - Проверка: основная конфигурация
ОШИБКА - Получен ненулевой код возврата 101
ПРЕДУПРЕЖДЕНИЕ - Проверка конфигурации завершена с ошибками
ПРЕДУПРЕЖДЕНИЕ - Замечания синтаксической проверки:
ПРЕДУПРЕЖДЕНИЕ - {ОбщийМодуль.ДемоМодуль.Модуль(9,1)}: Ожидается ключевое слово 'КонецЕсли' ('EndIf') #> <<?>>КонецПроцедуры (Проверка: Сервер)
Код возврата vrunner равен 1, в отчёте JUnit один failure. Именно по этому коду CI-сервер понимает, что шаг не прошёл. Проверка заняла около 9 секунд на базе с одним модулем. На типовой конфигурации времена будут иные: замера на такой базе у меня нет.
- Прогон 2: ошибки открываются по очереди
Я добавила пропущенный КонецЕсли (ключ --fixed скрипта) и запустила проверку заново. Платформа показала следующее замечание:
ПРЕДУПРЕЖДЕНИЕ - {ОбщийМодуль.ДемоМодуль.Модуль(7,18)}: Процедура или функция с указанным именем не определена (НесуществующаяФункция) Необъявленная = <<?>>НесуществующаяФункция(1); (Проверка: Сервер)
Первая ошибка разбора скрывала вторую. Для CI это значит, что одна красная проверка не означает один дефект: после правки нужен новый запуск.
- Прогон 3: чистая конфигурация
После исправления обеих ошибок (--fixed2):
ИНФОРМАЦИЯ - Проверка конфигурации завершена за 8с
ИНФОРМАЦИЯ - Результат синтакс-контроля: Ошибок не обнаружено
ИНФОРМАЦИЯ - Отчёт JUnit сохранён: C:\nopik-demo-clean\report\syntax.xml
Код возврата 0, в отчёте failures="0". Все три журнала и отчёты JUnit лежат в архиве в каталоге evidence/.
- Прогон на «Нано-УТ»
Те же команды я запустила на Нано-УТ, демо-конфигурации из репозитория 1c-ai-workbench (лицензия MIT): три общих модуля (ПродажиСервер, СкладСервер, ЦеныСервер), справочники Контрагенты и Номенклатура, документ ЗаказКлиента, всего 6 файлов BSL. Исходники лежат в архиве в каталоге nano-ut/src, оба прогона повторяет скрипт nano_ut_check.ps1.
Для прогона с ошибкой я взяла копию выгрузки и удалила КонецЕсли в функции ЗарезервироватьТовар общего модуля ПродажиСервер. Остальные файлы не менялись.
Рис. 2. Нано-УТ с удалённым КонецЕсли: замечание в ПродажиСервер.Модуль(16,1), код возврата 1.
Платформа указала на строку 16, где вместо недостающего КонецЕсли стоит КонецФункции. Код возврата 1 пришёл от vrunner, а в отчёте появился один failure.
Рис. 3. Нано-УТ без правок: ошибок не обнаружено, код возврата 0.
Рис. 4. Отчёты JUnit двух прогонов Нано-УТ: failures=1 и failures=0.
Сравнение двух прогонов на одном стенде:
| Показатель | Нано-УТ без правок | Нано-УТ без КонецЕсли |
|---|---|---|
| Код возврата vrunner | 0 | 1 |
| Замечаний синтаксической проверки | 0 | 1 |
Отчёт JUnit, failures |
0 | 1 |
| Проверка по журналу платформы | 8 с | 8 с |
| Создание файловой базы из исходников | около 21 с | около 21 с |
| Проверка целиком, по часам | около 16 с | около 16 с |
Времена получены на стенде i5-2400 при нескольких запусках; разброс на этих двух конфигурациях составил несколько секунд. Проверка синтаксическая: логику методов, запросы и права она не оценивает. Нано-УТ мала, поэтому времена не переносятся на рабочую конфигурацию.
- Файл настроек вместо длинной командной строки
Файл autumn-properties.json в рабочем каталоге подхватывается без дополнительных ключей. Этот файл я проверила на базе с ошибкой: ключи без -- и иерархия по именам команд дали тот же результат, что и командная строка.
Старое имя vrunner.json с ключами вида --ibconnection я тоже пробовала: ключи не применились, и vrunner создал временную базу вместо моей. Ошибки при этом не было, проверка прошла «без замечаний» по пустой базе. В CI такой тихий пропуск опаснее красного шага.
- GitSync и тесты: что показала справка
gitsync sync в версии 3.9.1 принимает обязательный аргумент PATH, путь к хранилищу конфигурации, и необязательный WORKDIR. Параметры подключения (--ibconnection, --db-user) вынесены в общие опции перед командой, а логин хранилища по умолчанию «Администратор». Запускать gitsync sync мне было не на чем: хранилища конфигурации на стенде нет.
vrunner test xunit требует путь к тестам (аргумент TESTSPATH) и обработку xddTestRunner.epf из пакета add. Отчёт задаётся ключами --report-format и --report-path. Прогон тестов я не делала: набора тестов под демо-конфигурацию нет.
- Что не проверено
Следующие части схемы 2021 года и моих допущений я не запускала, и числа или результаты по ним в статье не приводятся:
- на Нано-УТ выполнена только синтаксическая проверка: тесты, GitSync и анализ кода по ней не запускались;
- BSL Language Server и SonarQube (нет Java на стенде);
- генерация отчёта Allure и просмотр результатов;
vrunner test xunit,vrunner test vanessaиgitsync syncв рабочем виде;- шаблон
gitlab-ci.example.ymlиз архива: раннер GitLab не поднимался, в шаблоне проверена только командаvrunner; - ИИ-ревью изменений и разбор падений: на моём стенде это не пробовалось, поэтому рекомендаций по нему здесь нет;
- оценки экономии из статьи 2021 года (160 часов в месяц на 15 человек): они зависят от команды, я их не пересчитывала.
- Источники
- Документация vanessa-runner - актуальный справочник команд и миграции с 2.x на 3.0.
- Справка
vrunner,vrunner validate syntax-check --help,gitsync sync --helpи README пакета - версии 3.0.2 и 3.9.1, как их показываетopm list. - Артур Аюханов. Как быстро развернуть автоматическую линию проверки своего решения на 1С (2021): основа схемы, которую эта публикация сверяет с версиями 2026 года.
- 1c-ai-workbench - репозиторий автора с демо-конфигурацией Нано-УТ (лицензия MIT).
- Файл к статье
В архиве 15.1-companion.zip лежат: make_demo_src.py (сборка конфигурации с двумя ошибками), run_check.ps1 (создание базы и проверка с кодом возврата), nano_ut_check.ps1 (два прогона на Нано-УТ), nano-ut/src (исходники Нано-УТ), autumn-properties.json (пример настроек), gitlab-ci.example.yml (не запускался) и каталог evidence/ с журналами и отчётами JUnit обоих опытов и версиями пакетов.
Чтобы повторить, установите OneScript 2.0.0 и opm install vanessa-runner, затем выполните шаги из README в архиве. Скрипты проверены на платформе 8.3.27.2130 x86. Путь к 1cv8.exe для сборки демо-исходников задаётся ключом --exe скрипта make_demo_src.py. В run_check.ps1 и nano_ut_check.ps1 vrunner находит установленную платформу сам; с другой версией платформы я их не запускала.
run_check.ps1 подходит и для своей конфигурации: положите её XML-выгрузку в <Work>\src. На копии демобазы УТ 11.5.22.77 (12 290 модулей BSL) скрипт без правок дал код 0 и отчёт JUnit с failures="0". На стенде i5-2400 весь прогон занял около 55 минут, из них проверка 460 с, так что для такой конфигурации это ночной прогон. Перед повторным запуском удалите <Work>\ib, иначе скрипт проверит старую базу. Порядок и журнал прогона - в README и evidence/ut-11.5/ архива.
- Итог
Схема проверок из 2021 года жива, но её команды изменились: vrunner validate syntax-check, vrunner test xunit, файл autumn-properties.json. Я подтвердила проверку синтаксиса на платформе 8.3.27.2130 в трёх прогонах: с ошибкой, со второй ошибкой после первой правки и без ошибок. Код возврата 1 или 0 и отчёт JUnit дают CI то, что ему нужно. Тесты, GitSync, статический анализ и ИИ-ревью остаются за вашей проверкой на собственной базе. На Нано-УТ та же проверка дала код 0 без правок и код 1 после удаления КонецЕсли.
Вступайте в нашу телеграмм-группу Инфостарт