Найти тему
БИТ:ERP

Технология разработки при внедрении 1C:ERP

Оглавление

В этой статье расскажу о нашей текущей технологии разработки, которую мы применяем на проектах внедрения 1C:ERP.

Домашний ПК или виртуальная машина?

Для каждого разработчика и консультанта предусмотрена отдельная виртуальная машина. Доступ к машине осуществляется через удаленный рабочий стол. Использование виртуальных машин позволяет:

  • Отделить домашние дела от рабочих, что особенно важно при удаленной работе.
  • Использовать пайплайны для типовых операций - развертки баз, установки ПО, запуска сборок, тестирования и т.д.
  • Повысить стабильность инфраструктуры - разработчику достаточно подключиться к рабочей машине, настройка ПО выполняется централизовано.

В настоящий момент рабочие машины переводятся на ОС Linux. Соответственно, сама разработка ведется либо в конфигураторе, либо в EDT под Linux.

По моим наблюдениям EDT под ОС Linux работает стабильнее. О выявленных ошибках мы оперативно информируем фирму 1С.

Хранилище или Git?

Для версионирования кода на всех проектах используется Git. Разработка по задачам выполняется в отдельных ветках, а помещение в мастер через пул-реквесты. Для помещения изменений в мастер ветку требуется:

  • Code review от другого разработчика.
  • "Зеленый" сонар, проверка автоматически запускается при создании пул-реквеста.
  • "Зеленые" автотесты, тесты запускаются на ветке, в которой велась разработка.

После каждого пройденного пул-реквеста автоматически выполняется сборка, в результате создаются соответствующие cf и cfe файлы.

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

Конфигуратор или EDT?

В настоящий момент один проект полностью переведен на EDT, на остальных проектах используется конфигуратор. Поскольку EDT сама по себе является GIT клиентом, порядок работы при использовании конфигуратора и EDT различается.

При использовании конфигуратора:

  • При старте работы над новой задачей требуется запустить скрипт создания базы разработки на основании текущей конфигурации мастера.
  • При окончании разработки требуется запустить скрипт для помещения конфигурации в новую (или существующую) ветку.
  • В Git анализируются изменения, проводится code review, запускаются тесты.
  • При наличии замечаний ревьювера или Сонара код может быть изменен в конфигураторе, изменения снова помещаются в ветку скриптом.
  • При обнаружении изменений кода в мастере (дважды измененные объекты) требуется скачать файлы из последней сборки и перенести изменения в свою ветку, после этого снова запустить скрипт помещения изменений в ветку.

При использовании EDT:

  • Средствами EDT создается новая ветка.
  • В новой ветке ведется разработка.
  • При необходимости можно обновить свою ветку разработки до состояния мастера.
  • На отдельной ветке так же выполняется сode review, проверки Сонаром.
  • Ветка помещается в мастер через пул-реквест.
  • После каждого пул-реквеста автоматически запускается сборка.

Обновление рабочих баз выполняется с помощью cf и cfe файлов вручную.

Здесь следует отметить, что на момент написания данной статьи конфигуратор под ОС Linux работает крайне не стабильно: система внезапно зависает или сильно тормозит. Таким образом, сейчас связка конфигуратор + Linux вызывает массу неудобств. По нашим обращениям зарегистрированы ошибки:
https://bugboard.v8.1c.ru/error/000135195
https://bugboard.v8.1c.ru/error/000131177

Расширение или изменение конфигурации?

Все доработки типовой конфигурации выполняются в отдельном расширении. Это позволяет локализовать все доработки, сохранить типовую конфигурацию без изменений и увеличивает скорость сборки.

При этом, добавление новых ссылочных объектов в расширение имеет ряд ограничений (например, объект из расширения нельзя добавить в определяемый тип). Поэтому ссылочные объекты мы сначала добавляем в основную конфигурацию, а реквизиты, табличные части и обработчики к этому объекту добавляются в расширение.

Заключение

Мы считаем перспективным использование EDT и GIT вместо конфигуратора и хранилища поскольку это позволяет реализовать современные подходы для разработки на 1С:

  • code review и анализаторы кода на отдельных ветках до помещения в мастер,
  • прослеживаемость изменения кода от задачи до коммитов и обратно,
  • автоматическое тестирование и автосборки.

Переход на Linux - это скорее вынужденная мера, однако в связке с EDT это работает с приемлемым качеством.

Материал подготовил:
Алексей Тачеев, Product Owner, БИТ:ERP.

Поддержите нас лайками, если материал статьи оказался полезным для вас. Все новости и материалы в нашем телеграмм-канале https://t.me/bit_erp.