Vanessa OpenSource
459 subscribers
11 photos
5 files
36 links
Инструменты для 1С, тестирования, CI/CD и т.д. - Vanessa-ADD, Vanessa-runner, etc - https://github.com/vanessa-opensource
Download Telegram
Forwarded from OneScriptBot
🔥 Artur Ayukhanov опубликовал версию пакета 1bdd 1.14.0
Проект: oscript-library/1bdd
Автор публикации: artbear
👍1🔥1
Forwarded from Artur
Вопрос разработчикам-пользователям vanessa-runner
Есть предложение по изменению кодов возврата, с уже готовым ПР, https://github.com/vanessa-opensource/vanessa-runner/issues/575
суть:
- ошибки выполнения от 1С останутся с кодом 1, что важно для тестирования или прогона фич
- а ошибки, выдаваемые сразу от ванесса-раннер, пусть будут 255


собственно, изменение небольшое, но все-таки влияющее на совместимость

что скажете? согласны, нет, напишите комментарии?
сделаю ниже опрос, если есть права
👍3
Периодически возникают вопросы, как запускать команды пакетного запуска Конфигуратора через vanessa-runner

ответ простой - используйте команду vrunner designer 🔥
справка - vrunner help designer

Вот боевой пример строки запуска для подключения расширения ИБ к хранилищу, у одного из пользователей
vrunner designer --ibconnection /Sсервер\база --db-user Логин --db-pwd Пароль --uccode 777 --storage-name http://сервер/repository/repository.1ccr/Complex_King --storage-user ЛогинХран --storage-pwd ПарольХран --additional "/ConfigurationRepositoryBindCfg -forceReplaceCfg -forceBindAlreadyBindedUser -Extension ИмяРасширения"
👍2🔥2
Недавно встретил вот такой код

Вопрос - сколько замечаний, недочетов есть у данного метода?

я лично насчитал более 5 замечаний

#Ревью
👏2
С добрым утром опенсорсника! 🎉 у меня сегодня первый день отпуска.
и в 9 утра я начал свой отдых - смержил полезный ПР https://github.com/vanessa-opensource/ibcmdrunner/pull/8 😃

сегодня, завтра буду потихоньку выпускать новогодние релизы всех продуктов, зависящих от меня
8🔥6👍2😱1
⚡️Выпущен🌲 предновогодний 🌲 релиз Vanessa-runner v2.5.0⚡️

🔥Огромное спасибо @Segate за подготовку новых фич релиза и переезд CI\CD на Github actions
🔥Больщущее спасибо @yukon39 за PR с поддержкой автономного сервера!
🔥Большое спасибо всем контрибьюторам за ваши доработки и участие в проекте!

## Приветствуем новых контрибьюторов
* atyz2013 (ник на Гитхабе) - 631

## Изменения
* Добавлен параметр ibsrv для запуска команд с использованием автономного сервера 645
* Использование ibcmd для серверных баз 639
* Переезд CI\CD на Github actions
* 635 636 646 648 649 650

* Исправление поведения команды init-dev с флагом --dt 625
* Флаг --dt в init-dev не работал, если в dt есть пользователи
* Убрано лишнее обновление, для случая, если после инициализации бд или загрузки dt больше действий не производилось.
* Вернул поведение при котором сначала грузилась база из dt, а потом на нее накатывались исходники. Можно опять использовать конструкции вида init-dev --dt ./xxx.dt --src ./src/cf При этом будет сначала загружен дамп, а потом будут загружены исходники - cf, src, хранилище

* Инкрементальная загрузка на основании расхождений не только с предыдущим коммитом, но и с текущей конфигурацией 637
* Добавлен генератор json-схемы и обновлена json-схема 644
* Добавлен параметр --lockend для указания времени завершения блокировки сеансов 631
* Если открытие конфигуратора происходит интерактивно и не требует ожидания - сообщение "Работа Конфигуратора завершена" не выводится 632

* Исправлены ошибки в примере example.env.json 608
* уточнены тесты и расчет покрытия
* Фича "Приоритеты настроек" и и новые переменные окружения 642
* Объединил бдд и юниты в один файл для корректного расчета покрытия 638
* Рефакторинг работы с настройками + дополненные тесты для настроек 643

Full Changelog: https://github.com/vanessa-opensource/vanessa-runner/compare/v2.2.22...v2.5.0


Ссылки на каждый PR есть в описании релиза
🔥102👍2🎉2
⚡️Хочу показать отличный инструмент для анализа кода 1С - меня впечатлило, как качественно бот создаёт комментарии к коду 🥳

Активно юзаю ИИ-бота https://chat.deepseek.com - он очень хорош, хотя ревью кода пока весьма слабовато 😇

Приведу пример

Практически все разработчики знают метод из БСП - ОбщегоНазначения.ЗначенияРеквизитовОбъекта
приведу его "родное" описание
// Возвращает структуру, содержащую значения реквизитов, прочитанные из информационной базы по ссылке на объект.
// Рекомендуется использовать вместо обращения к реквизитам объекта через точку от ссылки на объект
// для быстрого чтения отдельных реквизитов объекта из базы данных.
//
// Если необходимо зачитать реквизит независимо от прав текущего пользователя,
// то следует использовать предварительный переход в привилегированный режим.
//
// Параметры:
// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить.
// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить.
// Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате
// требований к свойствам структуры.
// Например, "Код, Наименование, Родитель".
// - Структура, ФиксированнаяСтруктура - в качестве ключа передается
// псевдоним поля для возвращаемой структуры с результатом, а в качестве
// значения (опционально) фактическое имя поля в таблице.
// Если ключ задан, а значение не определено, то имя поля берется из ключа.
// - Массив, ФиксированныйМассив - имена реквизитов в формате требований
// к свойствам структуры.
// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя;
// если есть ограничение на уровне записей, то все реквизиты вернутся со
// значением Неопределено; если нет прав для работы с таблицей, то возникнет исключение;
// если Ложь, то возникнет исключение при отсутствии прав на таблицу
// или любой из реквизитов.
//
// Возвращаемое значение:
// Структура - содержит имена (ключи) и значения затребованных реквизитов.
// - если в параметр Реквизиты передана пустая строка, то возвращается пустая структура.
// - если в параметр Ссылка передана пустая ссылка, то возвращается структура,
// соответствующая именам реквизитов со значениями Неопределено.
// - если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка),
// то все реквизиты вернутся со значением Неопределено.


видно, что авторы кода постарались описать довольно сложный метод
но все-таки есть вопросы, на которых нет ответа, и приходится дополнительно их выяснять
например:
- не очень понятно, в каких случаях метод возвращает результаты, а в каких может выбрасывать исключения
- не описаны результаты при передаче наименования предопределенного элемента
- нет примеров использования
Vanessa OpenSource
⚡️Хочу показать отличный инструмент для анализа кода 1С - меня впечатлило, как качественно бот создаёт комментарии к коду 🥳 Активно юзаю ИИ-бота https://chat.deepseek.com - он очень хорош, хотя ревью кода пока весьма слабовато 😇 Приведу пример Практически…
а теперь представлю результаты работы ИИ-бота
мой промпт очень прост - Заполни комментарии к коду процедуры на языке 1С
далее я вставил текст самого метода из общего модуля

и бот очень быстро создал замечательное описание
// Функция возвращает значения реквизитов объекта в виде структуры
//
// Параметры:
// Ссылка - Строка/Ссылка - Идентификатор объекта:
// * Строка - полное имя предопределенного элемента (Например: "Справочник.Товары.Товар1")
// * Ссылка - прямая ссылка на объект
// Реквизиты - Строка/Массив/Структура - Список получаемых реквизитов:
// * Строка - имена через запятую ("Код,Наименование,Владелец")
// * Массив - список полей для выборки
// * Структура - {Псевдоним: ИмяРеквизита} (Для формирования сложных имен)
// ВыбратьРазрешенные - Булево - Флаг проверки прав доступа к данным (по умолчанию Ложь)
//
// Алгоритм:
// 1. Идентификация объекта:
// - Для строкового параметра: парсинг полного имени предопределенного элемента
// - Проверка прав доступа к объекту, если элемент не найден в ИБ
// - Для ссылки: проверка валидности и получение метаданных
//
// 2. Обработка реквизитов:
// - Конвертация строки в массив (удаление пробелов, разделение по запятым)
// - Нормализация структуры полей {Псевдоним: ИмяРеквизита}
// - Проверка доступности реквизитов через метаданные
//
// 3. Формирование и выполнение запроса:
// - Динамическое построение текста запроса с учетом прав доступа
// - Подстановка параметров:
// * &ТекстЗапросаПолей - сформированные поля для выборки
// * &ПолноеИмяОбъектаМетаданных - идентификатор таблицы
// * &Ссылка - идентификатор объекта
//
// 4. Обработка результатов:
// - Заполнение структуры-результата данными из выборки
// - Возврат пустой структуры для неустановленных предопределенных элементов
//
// Особенности:
// - Автоматическая обработка предопределенных элементов по полному имени
// - Поддержка псевдонимов полей через структуру параметра Реквизиты
// - Двойная проверка доступности полей (на этапе компиляции и выполнения запроса)
// - Использование безопасного подхода:
// * Обработка исключений при разборе параметров
// * Детализированные сообщения об ошибках
//
// Ошибки:
// - Исключение при неверном формате Ссылки
// - Исключение при отсутствии прав доступа к объекту/реквизитам
// - Исключение при передаче несуществующих реквизитов
//
// Зависимости:
// - Метод ПредопределенныйЭлемент() - для работы с предопределенными элементами
// - Метод НайтиОшибкуДоступностиРеквизитовОбъекта() - для диагностики проблем доступа
// - Общий модуль СтроковыеФункцииКлиентСервер - форматирование сообщений
//
// Примеры использования:
// // Получение реквизитов по предопределенному элементу
// Реквизиты = ЗначенияРеквизитовОбъекта("Справочник.Номенклатура.Услуги", "Код,Наименование");
//
// // Получение реквизитов со своими псевдонимами
// Поля = Новый Структура("КодНоменклатуры, НаименованиеНоменклатуры", "Код", "Наименование");
// Данные = ЗначенияРеквизитовОбъекта(Ссылка, Поля);
//
// // Использование прав доступа
// Данные = ЗначенияРеквизитовОбъекта(Ссылка, "КонфиденциальныеДанные", Истина);


видны и примеры, и описания исключений, и алгоритм работы

В общем, всем советую этот замечательный инструмент

PS еще я в параллели пробую разные AI-IDE для работы с кодом 1С, OneScript, расскажу о результатах позже.
🔥11
⚡️Всем привет! Ищу активного мейнтейнера для развития и поддержки проекта Vanessa-ADD - фреймворк тестирования для 1С.

в связи с рождением сына, да, я теперь молодой папа, времени на поддержку проекта не хватает 😰
сыну уже несколько месяцев, но легче со временем не стало 😇

Предоставлю полные права к проекту и репозиторию на гитхабе. Помогу максимально.
Я сам проект бросать не планирую, хочу его и дальше развивать, но пока времени не хватает.
🔥12👏5👍3
⚡️Свежайший Gemini знает про инструмент Vanessa-ADD 🥳
👍12🍾5
В ванесса-раннер список расширений можно получить так
vrunner designer —additional "/DumpDBCfgList -AllExtensions"


благодарим пакетный режим конфигуратора

/DumpDBCfgList [-Extension <имя расширения>] [-AllExtensions]
— вывод расширений конфигурации. Если ни один параметр не задан, будет выдана ошибка. Доступные параметры:
Extension <Имя расширения> — выводит имя конфигурации-расширения. Если расширение не существует, будет выдана ошибка;
AllExtensions — выводит имена всех расширений.
Общение с ИИ-ревьювером кода 😂
Коллега доказывает CodeRabbit, что замечание учтено и ошибки точно нет.
😁14🔥3🤣2