1. Вступление
В этой статье расскажу, как мне помог Git в расширении моих знаний и умений в сфере 1С. Как с его помощью освоил новые инструменты.
Статья в первую очередь адресована тем, кто только входит в мир Git и хотел бы увидеть общую картинку крупными мазками.
В статье мой личный опыт, у коллег он может отличаться.
2. Новые инструменты — это здорово!
Традиционно командная разработка строилась на связке Конфигуратора и Хранилища конфигурации. Теперь, с появлением Git в мире 1С, стало возможно активное применение инструментов, обращение к которым прежде не имело такого успеха. В моей практике на базе Git гармонично слились такие инструменты как: EDT, Vanessa-Automation, Obsidian, OneScript.
Вообще я сторонник того, что локально ничего хранить не надо. Локальную машину можно быстро поменять и быстро развернуть свою привычную экосистему разработки. Теперь всё, что касается рабочей деятельности, предпочитаю хранить в Git .
3. Повышение компетенции — повышение стоимости
Всё чаще в требованиях к кандидатам указывается наличие опыта работы с Git и окружающими его инструментами. Будучи соискателем не раз сталкивался с ситуацией, когда потенциальный работодатель прицельно искал специалистов со знанием Git + EDT. Видно, что такая потребность растёт. А это мотивирует плотнее изучать данные инструменты.
Прокачивая свои технические навыки, можно претендовать на более высокую оплату труда. Рост потребности в том числе порождает более интересные предложения для соискателя.
Вся прелесть в том, что изучение подобных инструментов можно проводить самостоятельно. В сети достаточно много материалов на эту тему — далее по тексту будут ссылки на некоторые из них.
4. Git — центральный элемент в разработке
Так что же такое Git? Это распределённая система управления версиями. Одна из мощных его функций — хранение кодовой базы в удалённом репозитории, причём хранятся различные версии этой самой базы. Ранее, в классической схеме, разработчик 1С, используя Конфгуратор, монопольно захватывал из хранилища объект для редактирования — к примеру, общий модуль. В Git же каждый разработчик создаёт отдельную ветку для разработки (очень грубо копию конфигурации) и может внести изменения в любой объект, а после — поместить изменения в удалённый репозиторий. Обратной стороной такого подхода является возникновение конфликтов слияния, когда изменения объединяются с основной веткой (двое разработчиков внесли изменения в один объект). Это решается введением определённых правил. В своей практике предпочитаю, прежде чем делать запрос на слияние, подливать изменения из основной ветки в текущую и уже в этот момент ловить и исправлять конфликты.
Git хранит файлы всего проекта в удалённом репозитории, на специальном сервере.
Удобно иметь версионирование не только кода, но и документации по проекту, всевозможных схем, таблиц, а также часто выполняемых скриптов.
5. EDT — модно и молодёжно
1С:Enterprise Development Tools — это современная среда разработки. По сути, это тот же Конфигуратор, но на стероидах. Это несколько другой, более новый взгляд на процесс разработки прикладных решений системы «1С:Предприятие 8».
До выхода EDT некоторые команды уже пользовались Git. Для этого из Конфигуратора конфигурацию выгружали в файлы и уже они заливались в Git.
Это рабочий механизм и на текущий момент. Но всё же предпочитаю работать с EDT.
Основные плюсы, которые выделяю для себя:
1. Можно отредактировать любой объект независимо от других разработчиков;
2. В одном проекте можно редактировать не только конфигурацию и расширение, а в том числе и все внешние обработки. В проект можно собрать несколько конфигураций, и для этого будет достаточно одной сессии EDT, а не 5 Конфигураторов, запущенных одновременно;
3. Глобальный поиск в EDT работает быстрее на порядок, чем в Конфигураторе;
4. Автоподстановка. Это вообще песня. Объявил переменную, определил её тип, передал в другую функцию и можешь в ней через точку обратиться ко всем свойствам и методам этой переменной. Так же автоподстановка работает в запросах. Один словом — красота;
5. Хранилище конфигурации периодически ломается, приходится его чинить, восстанавливать из бэкапа. В моей практике это было вызвано нестабильной работой сети. В EDT налажена работа с Git: все изменения можно заливать в Git и получать из него изменения других разработчиков. Проблем, как с Хранилищем, не наблюдается;
6. Ранее упоминалось о работе с конфликтами. EDT, в отличие от Конфигуратора, часть конфликтов исправляет самостоятельно. К примеру, это видно при обновлении конфигурации на типовой релиз — если сравнивать количество «дважды изменённых», то в EDT их значительно меньше.
За эти плюсы приходится платить:
1. EDT более требовательна к «железу». В первую очередь это скорость носителей данных — нужны SSD;
2. Существует порог входа в эту среду разработки. Тут желательно иметь опытных коллег. Хотя в своё время учил этот продукт с нуля, на тот момент помог курс от Первого учебного центра 1С;
3. Не всё работает гладко. Бывают неочевидные проблемы. Но поддержка работает великолепно. Часто выходят новые релизы EDT.
Несколько лет назад, при разработке в EDT возник вопрос. Поискав, нашёл чат в Telegram — это официальный канал связи с разработчиками EDT. Задал вопрос и — мне ответили. Приготовьтесь: мне ответил разработчик EDT за полчаса. Через 40 минут было найдено решение и вопрос закрыт. Давеча снова возник вопрос. Ответ был дан с такой же скоростью. То есть коллеги уже на протяжении нескольких лет сохраняют этот темп, оперативно реагируя на вопросы. Кроме того, на базе чата появилось пользовательское сообщество и теперь можно получать ответы и от коллег по цеху.
Больше нет слов. Аплодисменты стоя.
6. Vanessa-Automation — удобный инструмент для функционального тестирования
Vanessa-Automation — это инструмент тестирования и автодокументирования прикладных решений на 1С. Функциональное тестирование — как правило, воспроизведение действий пользователя по определённому сценарию (юзер стори).
Типичная ситуация для разработчика: поправил в одном месте — сломалось в другом. Бывает, что выясняется это уже в процессе эксплуатации.
Выигрыш от написания функциональных тестов — в продакшн попадает работоспособный код. Для начала можно даже ничего не писать, а автоматически сгенерировать дымовые тесты. Они осуществляют примитивную проверку, такую как открытие и закрытие формы, проведение документа. Весьма полезно покрывать такими тестами обновление типового релиза. Это делается быстро: генерация таких тестов займёт минуты.
Кроме самих функциональных тестов, средствами Vanessa-Automation можно готовить пользовательские инструкции как в текстовом, так и в видео формате.
Можно встроить обработку в свою конфигурацию и запускать демонстрацию, где приятным женским голосом будет показана и рассказана работа определённого функционала.
Стали появляться вакансии для QA-инженеров в 1С — это ещё одна специализация, отдельные люди, которые занимаются тестированием.
Для ознакомления можно воспользоваться бесплатным мини-курсом от Виталия Оянова. За пару дней будет освоен типовой функционал.
Если хочется ознакомиться более глубоко, то можно взять платный курс от коллег из IRP Team.
7. Obsidian — удобная база знаний
Obsidian — это персональная база знаний, приложение для ведения заметок, работающее с файлами Markdown. Markdown — это достаточно простой язык разметки. Файлы markdown — обычные текстовые файлы, а значит, их с лёгкостью можно отправить в Git .
В моей практике было много различных баз знаний — как специализированный софт, так и база знаний, являющаяся модулем более общей системы. Это стандартный движок Википедии, Redmine, Confluence, 1С:Документооборот, Business Studio.
Основная трудность работы с базой знаний — это поддержка информации в актуальном состоянии. Через некоторое время статьи в базе знаний «прокисают», становятся неактуальными. В моей «картине мира»: обновляется кодовая база, обновляются тесты и за ними — техническая документация в базе знаний (пользовательскую можно реализовывать на Vanessa-Automation). Также инструкции должны быть максимально атомарными, небольшими: во-первых, их легче поддерживать, во-вторых — легче читать.
С недавних пор стал использовать Obsidian. И получилось так, что кроме некоторых рабочих проектов стал вести в этом инструменте все личные записи. В рабочих проектах для синхронизации используется Git, для личных данных — синхронизация смартфона с ноутбуком, проходящая с использованием Syncthing.
С Obsidian пришёл другой взгляд на организацию базы знаний — он стал проще. Теперь нет кучи вложенных друг в друга каталогов, в инструменте удобный поисковый механизм, да и сама платформа простая и в то же время функциональная.
Для знакомства с этим инструментом можно посмотреть плейлист Вовы Ломова.
8. CI/CD — забирает рутину на себя
CI/CD — технология автоматизации тестирования и доставки новых модулей разрабатываемого проекта. Настроив Pipeline можно решать большое количество разнообразных задач. Pipeline — это последовательность этапов (скриптов) в конвейере расположенных так, что конец предыдущего является началом следующего.
Особенно нравится, что после помещения изменений в удалённый репозиторий можно автоматически запустить функциональное тестирование. После того, как оно будет завершено, разработчик получит результаты — увидит, что он сломал.
9. Трекер задач — неотъемлемая часть разработки
Трекер задач — это софт для учёта списка дел. Когда задач становится много, формируется методология по работе с ними и выбирается софт.
Можно связать ветку в Git с задачей. К примеру, в названии ветки использовать номер задачи или в сообщении коммита указать номер задачи. При такой связке получаем:
1. Автоматические сообщения в задачу из контура CI/CD о прохождении функциональных тестов, статусов запросов на слияние и, в целом, выполнение задач по Pipeline.
2. Просмотр кода прямо из задачи.
10. SonarQube — проверка кода
SonarQube — это платформа для статического анализа программного кода. Если смотреть в сторону EDT, то SonarQube интегрируется как плагин EDT и проверка кода осуществляется на лету, то есть когда ты пишешь код. Также проверки SonarQube могут проходить как одна из задач в Pipeline контура CI/CD.
Сонар можно подключить ещё работая на Конфигураторе, но это требует определённой компетенции. Его значительно проще подключить как плагин в EDT.
11. OneScript — прост как 3 рубля
OneScript — это движок, который позволяет писать скрипты на языке 1С, а выполнять — вне рамок 1С.
OneScript может являться базовым инструментом для скриптов, которые выполняются в контуре CI/CD. Это удобно тем, что не нужно дополнительно учить ещё один язык. Разработчик 1С может быстро подготовить скрипт (допустим, на сборку конфигурации), передать его DevOps-инженеру, а тот уже внедрит его в контур CI/CD.
Однажды мне потребовалось мониторить одну интеграцию — нужно было быстро найти решение. В том момент вопрос стоял именно в скорости. Решение было найдено за 2 часа и реализовано ещё через 2 часа. Решение было простое, средствами OneScript проверялась сначала доступность базы, а после — запись в определённой таблице этой базы. Если запись не обновлялась более 15 минут, то в чат Telegram улетало сообщение. Вся кодовая обвязка была написана на стандартном языке 1С, и средствами стандартного планировщика задач Windows был реализован периодический запуск скрипта.
Так я познакомился с этим чудесным инструментом.
Скрипты — это обычные текстовые файлы, и поэтому они так же спокойно «уезжают» в Git. Как следствие — вся кодовая база в одно месте. Это действительно удобно.
12. Заключение
Git стал точкой роста для меня. Он обвязал все инструменты в единую экосистему, стал ядром, вокруг которого накапливаются новые знания. Процесс этот продолжается, и, по моим оценкам, всё происходит весьма гармонично.
Успехов!
Ссылки
- 1С:Enterprise Development Tools
https://edt.1c.ru/ - Курс «EDT - РАЗРАБОТКА В СИСТЕМЕ 1C:ENTERPRISE DEVELOPMENT TOOLS»
https://uc-1c.ru/course/edt-razrabotka-v-sisteme-1c-enterprise-development-tools/ - Телеграмм, официальная группа по 1С:Enterprise Development Tools
https://t.me/e1c_edt - Vanessa-Automation
https://github.com/Pr-Mex/vanessa-automation - Небольшой курс о тестировании в 1С:Предприятие с помощью инструмента Vanessa-Automation
https://www.youtube.com/playlist?list=PLLbbYbSDiWvfWjD9MdX8C235JvT_YcqoN - Курс Сценарное тестирование в 1С: настройка и практика использования
https://курсы-по-1с.рф/courses/1c-testing-qa-2022/ - Obsidian
https://obsidian.md/ - Плагин для EDT, SonarQube 1C (BSL) Community Plugin
https://1c-syntax.github.io/sonar-bsl-plugin-community/en/