Обзор 1C:Enterprise Development Tools. Профессиональная IDE для 1С-разработчика
Рубрика: 1С:Предприятие -> Программирование -> Статьи
Метки: 1С:Предприятие | EDT | инструменты | программирование | системный администратор
Просмотров: 19727
Возможности платформы “1С:Предприятие” с точки зрения удобства разработки были всегда, мягко говоря, бедными. Конфигуратор сильно уступал профессиональным IDE, а компания 1С не спешила с обновлениями. Лишь спустя 13 лет, она решилась на глобальный пересмотр основного инструмента прикладного программиста.
Немного истории
Компания 1С выбрала конкурентоспособную нишу и попыталась одним выстрелом убить несколько зайцев: создать лучшую программу для ведения бухгалтерского учета и платформу, позволяющую создавать различные приложения (конфигурации).
Первым 100% попаданием стал выпуск платформы 7.х. Только представьте, решения, созданные на ее базе моментально распространились по всей стране, а вместе с ними появилась новая отрасль разработки - разработка под платформу 1С:Предприятие. Тогда новоиспеченные разработчики стали появляться как грибы после дождичка в четверг, а на рынке образовался новый вид ИТ услуг - сопровождение и внедрение 1С.
Все видели перспективы продаж и сопровождения продуктов на базе 1С, поэтому в “программирование” хлынули все. Настоящих программистов, мигрирующих со “взрослых” языков программирования, было мало, поэтому никаких серьезных требований и претензий к культуре разработки не было. Возможно поэтому, компания 1С особо не пыталась развивать главный инструмент разработчика (конфигуратор). Нет спроса - нет предложений.
Котел с “1С:Предприятие 7” кипел несколько лет пока окончательно не начал разваливаться. Чудовищные ограничения платформы, проблемы с производительностью и масштабированием намекали на переосмысления общей концепции разработки и архитектуры.
Особо креативные и смышленые энтузиасты даже пытались сделать подобную среду разработки, ориентированную на ведение бухгалтерского учета. Проект назывался “Ананас”, но ничего серьезного из него так не вышло. Тем временем, 1С приступила к планомерному апгрейду своей платформы и в итоге представила абсолютно новое решение - “1С:Предприятие 8”.
Восьмерка (как ее принято сейчас называть) стала настоящим прорывом. Принцип разработки сопровождения претерпел значительные изменения. Среда разработки была на несколько голов выше предшественницы и уже больше походила на серьезный инструмент. Новый язык запросов (в стиле SQL), пересмотр синтаксиса и кирпичиков для строительства приложений - стали новыми козырями технологии быстрой разработки решений для бизнеса.
Триумфальный релиз не ударил по тормозам, а наоборот задал новый ритм развития функциональных возможностей платформы. Новые релизы стали выходить постоянно и каждый из них привносил что-нибудь новое в платформу (а заодно что-нибудь и ломал).
Ядро и прикладные технологии активно совершенствовались, а вот про самый главный компонент, “Конфигуратор”, видимо позабыли. По сравнению с 7-й веткой он стал значительно лучше, но все равно проигрывал профессиональным IDE.
Вопросы по совершенствованию конфигуратора стали все чаще возникать на профильных конференциях, но трансформироваться в конкретные ответы они смогли совсем недавно.
В конце апреля, компания 1С представила тестовую версию абсолютно нового инструмента для разработки решений на базе восьмой версии платформы - 1C:Enterprise Development Tools. Инструмент абсолютно новый (это не очередная версия привычного конфигуратора) и именно он должен открыть новую главу в разработке новых бизнес-решений.
Профессиональная IDE для 1С
1С-разработчики привыкли к мысли неотчуждаемости конфигуратора от информационной базы. Конфигуратор идет в комплекте с платформой, в нем мы пишем код и из него этот код попадает в базу данных. Подход выдержан временем и имеет как преимущества, так и недостатки. Последних разумеется больше. Первый из них - хранение исходников конфигурации во внутреннем формате.
Разрабатываемая конфигурация хранится в информационной базе и взаимодействовать с ней возможно только из конфигуратора. Других средств для работы с кодом/объектами вне конфигуратора попросту нет. Точней один вариант есть, но пользоваться им затруднительно. Да и официальная методология обходит его стороной.
Второй главный минус - несоответствие времени. В отличии от внутреннего функционала, конфигуратор развивается крайне медленно. Из-за этого подавляющее число разработчиков вынуждены самостоятельно решать задачи, которые в продвинутых IDE уже давно решены.
Взять хотя бы простой пример - покрытие кода тестами. Идея классная, но вменяемой реализации в 1С ее нет и быть не может. Есть велосипеды, но это все же не то. Более того, функционал конфигураторов отличается от версии к версии и при поддержке конфигураций, требующих более старую версию платформы, приходиться терпеть ограничения старых версий конфигураторов.
1C:EDT признан решить перечисленные и многие другие проблемы. Для этого компания 1С даже отважилась на смену методологии разработки прикладных решений. В будущем привычный конфигуратор отойдет на второй план, а главенствующую роль возьмет на себя отдельный инструмент в лице EDT.
1С:EDT - попытка сделать полноценную IDE для разработки решений под платформу 1С:Предприятие. Компания не стала ставить эксперименты и пытаться прокачать “конфигуратор”, а воспользовалась богатым опытом OpenSource IDE - Eclipse. Проект Eclipse разрабатывается уже много лет и прекрасно зарекомендовал себя в виде универсальной среды разработки.
Архитектура Eclipse позволяет безболезненно расширять функционал и подстраиваться под любую технологию. Благодаря этому, Eclipse одинаково хорошо работает с различными языками программирования.
Если в начале своего пути он был ориентирован в первую очередь на Java разработчиков, то сегодня никаких границ не существует вовсе. За счет плагинов, отдельных сборок, Eclipse сыскал популярность у C++, PHP, JavaScript, Python и других языках программирования.
Новый подход к разработке
Первое на что сразу стоит обратить внимание - для разработки больше не требуется подключение к информационной базе. ИБ необходима для тестирования и отладки создаваемого решения. В связи с этим, конфигурация переехала в файловую систему и располагается там в виде множества отдельных файлов (описание форм, модулей и т.д.). Непосредственно в ИБ она будет попадать во время сборки проекта.
Небольшое архитектурное изменение в виде смены формата хранения конфигурации сразу же решило несколько глобальных проблем. Самая важная из них - теперь нет преград для использования внешних инструментов для работы с исходным кодом. Весь код решения лежит в файловой системе и мы можем с ним делать все что угодно: модифицировать другими программами; создавать собственные сценарии для проверки; защищать исходный код; и многое другое.
Само собой, переезд в файловую систему и Eclipse в частности, положительно сказался на применение систем контроля версий. Да, никаких проблем с использованием GIT’а больше нет. Скажу даже больше, теперь не имеет значения какую систему контроля версий использовать. Требование по факту одно - выбранную технологию должен поддерживать Eclipse или вы должны обладать знаниями как их подружить. Про использование GIT мы поговорим отдельно.
Переход на Eclipse расширил границы поддерживаемых для разработки под “1С:Предприятие” операционных систем. В первую очередь должны обрадоваться любители OS X. Версия EDT для мака также была представлена и создать простенькую конфигурацию в окружении OS X, можно попробовать прямо сейчас.
Безусловно, пока говорить о полноценной поддержки OS X не приходится. Создать конфигурацию стало возможным, но протестировать решение на данном этапе не получится по причине отсутствия версии платформы “1С:Предприятие” для OS X (уже есть тестовая версия). Это вопрос времени и наверняка он будет решен к моменту релиза первой стабильной версии.
Резюмируя выше сказанное получаем, что теперь процесс разработки будет таким: пишем конфигурацию -> пушим код в определенную ИБ (или несколько) -> тестируем/исполняем.
Самые интересные возможности EDT
Делать обзор всего функционала EDT я не стану. У Eclipse слишком много функций из коробки и многие из них применимы к разработке под 1С:Предприятие. Мы посмотрим на наиболее интересные из них, которые прямо сейчас могут помочь 1С-разработчикам.
GIT/SVN вместо хранилище конфигурации
1С-разработчики с самого начала были обделены возможностью применения профессиональных систем контроля версий. Из-за особенностей хранения исходных кодов конфигурации, программистам были всегда недоступны такие популярные инструменты как: GIT, SVN и т.д. Вместо этого, компания «1С» пыталась продвигать собственную разработку под названием «Хранилище конфигурации».
У 1С-разработчиков появилась, пускай бедная, но все же возможность командной работы. Мучительные вещи вроде объединения конфигурации перед релизом, а заодно и случайные затирания чужих изменений остались в прошлом. Правда применение хранилища конфигураций добавило новые трудности. Оно периодически сыпалось, на больших конфигурациях жутко тормозила, а при активной командной разработке и вовсе превращалось в стопорный механизм.
В EDT эта проблема решена на уровне самой среды. Хранилище оставили в там, где оно и было, а вместо него добавили поддержку GIT/SVN. Последний сегодня применяется крайне редко, а вот GIT стал настоящим стандартом.
Работа с GIT стала возможной благодаря пересмотру алгоритма хранения кода конфигурации. Разработчики из коробки получают все плюшки GIT, а заодно возможность воспользоваться услугами многочисленных облачных git-хостингов (GitHub, BitBucket и т.д.). Тут даже неважно GIT вы предпочитаете, SVN, или что-то еще. Интегрироваться вполне реально с любой системой контроля версий.
Взаимодействие с GIT выполняется с помощью простых мастеров. Давайте попробуем создать в EDT новый проект и импортировать в него конфигурацию из репозитория, подготовленного компанией 1С.
Переходим в «Навигатор 1С:Предприятие» и в контекстном меню дерева конфигурации выбираем пункт «Импортировать». Мастер импорта предложит различные источники, но нас будет интересовать непосредственно Git. Выбираем “Project from Git”.
Далее нам будет предложено выбрать репозиторий: локальный или удаленный. Поскольку мы хотим клонировать существующий репозиторий, то выбираем «Clone URI». На следующем шаге указываем источник - https://github.com/1C-Company/dt-demo-configuration.git. Дальше остается только выбрать ветку, которую мы собираемся клонировать (мастер) и запустить процесс. Результат клонирования - проект из 490 файлов.
Одна IDE - разные платформы исполнения
Как раньше происходил процесс разработки нескольких конфигураций? На машине разработчика поднимались все необходимые версии платформы “1С:Предприятие” и приходилось между ними переключаться. В EDT процесс полностью был пересмотрен.
Пока наличие установленных платформ необходимо (для исполнения, отладки разрабатываемого решения), но сама разработка будет вестись в одной среде. Таким образом, программист может одновременно работать над несколькими проектами - разрабатываемые конфигурации одновременно отображаются в “Навигаторе 1С предприятия”.
Для удобства отладки/запуска можно сразу выбрать платформу и определенную ИБ. Причем создаваемую конфигурацию можно таргетировать сразу на несколько информационных баз.
Расширение функционала IDE
К каждой версии платформы 1С:Предприятия, сторонние разработчики старались создать дополнительные инструменты. В 1С:Предприятие 7.7 был TurboConf/1C++, а в восьмерке - Снегопат (https://snegopat.ru). Каждый из этих инструментов привносил в конфигуратор дополнительный функционал, которого так не хватало разработчикам.
Перечисленные инструменты решали множество проблем, но не один из них не был нацелен на создание простого интерфейса для возможности самостоятельного расширения функционала конфигуратора.
С переходом на EDT проблема должна полностью разрешиться. Eclipse прекрасно расширяется за счет плагинов, поэтому возможность написать собственную надстройку доступна прямо из коробки. Плагинов для Eclipse уже не мало, поэтому многие вещи переносить попросту не придется.
Продвинутый редактор кода
Большую часть времени разработки, программист проводит в редакторе кода. Хорошо, когда редактор умный и ориентирован на упрощение труда разработчика. В стандартном конфигураторе есть ряд «фишек», но “большим” IDE он все же проигрывает.
Вот именно в этом месте, EDT делает значительный шаг вперед. Eclipse развивается не первый год и за это время его снабдили самыми разнообразными и полезными функциями, существенно упрощающие взаимодействие с кодом. Уже сейчас к услугам 1С-разработчика готовы:
- Шаблоны для автоматической генерации кода;
- Проверка конфигурации на лету. Ошибки находятся автоматически и среда предлагает решения для их исправления;
- Поддержка тегов в коде (TODO, FIXME и т.д.)
- Формирование схем модулей;
- Валидация запросов. Ошибки в синтаксисе, отсутствие полей - информация об ошибке становится доступной до исполнения кода платформой 1С:Предприятие;
- Продвинутые инструменты рефакторинга, которые можно расширить своими паттернами;
- Конструктор запроса;
- Конструктор СКД;
- Расширенная контекстная подсказка для методов/свойств объектов прямо в редакторе кода.
- и т.д.
В целом работать с новым редактором кода приятно. Пока до конца не проработана подсветка кода, то наличие новых функций от Eclipse и доступность стандартных для каждого 1С’ка инструментов вроде “Конструктор запроса” и “Конструктор СКД” позволяют быстро адаптироваться к новой среде.
Обновленный отладчик
Механизм отладки в EDT был существенно пересмотрен. В первую очередь это отразилось на внутренних механизмах. Что это означает? Первое и самое важное - создана обертка, позволяющая использовать возможности отладки Eclipse, которые несомненно шире, чем у встроенного в конфигуратор. Например, теперь в процессе отладки можно изменять значения переменных.
Однако, изменение отразились на совместимости. Пока отладка приложений доступна только при использовании версии платформы, входящий в поставку EDT (8.3.6). В состав этой версии входит сервер отладки (dbgs.exe), позволяющий выполнять отладку конфигурации по протоколу HTTP.
Сервер является координатором процесса отладки. Во-первых, он хранит списки предметов отладки, а во-вторых является посредником между EDT и исполняемым решением.
Не бывает плюсов без минусов
Прочитав обзор функциональных возможностей, и мои прогнозы на светлое будущее, сильно радоваться не стоит. “Как?!” - возмутятся 1С-разработчики. Разве не об этом мы так долго мечтали? Не хочется принимать не свойственную мне роль пессимиста, но на данном этапе релиза, отчетливо прослеживается ряд проблем.
Начнем с самого главного - фундамента. Eclipse - проверенный временем инструмент со своими особенностями. Развивается достаточно давно и его успела полюбить целая армия разработчиков. Среда универсальная и одинаково полезна для разработки на различных языках программирования: Java, C++, PHP, JavaScript и т.д. Более того, Eclipse - это в первую очередь открытая платформа, на основе которой реально построить и другие приложения (не IDE). Не буду вдаваться в подробности. Их вы сможете прочитать на сайте проекта или в wikipedia.
Мощь и универсальность Eclipse оспорить сложно. Но также сложно не признать его существенный недостаток - прожорливость к ресурсам. Не буду приводить тестов, а ограничусь собственным опытом. Этой средой я начал пользоваться еще в начале 2008 года. Тогда Eclipse выделялся на фоне конкурентов и стал для меня лучшей IDE. Функционал из коробки, кросс-платформенность, сторонние плагины срезали шероховатости и убеждали терпеть постоянные тормоза.
Eclipse требователен к объему оперативной памяти, а ее много не бывает. Тогда у меня было 4 гигабайта, но даже они не позволяли долго и комфортно работать с Eclipse. Периодически возникали тормоза и ошибки вроде Out of Memory.
Я использовал Eclipse сугубо для разработки на PHP, а это просто работа с текстом. В мире 1С все несколько иначе. Разработчику приходится работать с конфигурацией, а они бывают очень большими. Что говорить, если даже последние версии топовых решений притормаживают в стоковом конфигураторе.
В “1C:Enterprise Development Tools” я попробовал поработать одновременно с несколькими проектами (это одна из долгожданных для меня функций). Конфигурации обоих решений содержали слишком много объектов (УТ11, БП 3) и пока шел импорт, EDT успел съесть почти 4 гигабайта оперативной памяти. Объем не маленький, учитывая, что я толком ничего не делал. При тестировании и публикации конфигураций эта цифра будет значительно больше, а следовательно появится новые требования к железу.
Справедливо заметить, что перед нами пока тестовая версия продукта и вроде как обижаться на производительность не стоит. Однако, мне, как любителю Eclipse в прошлом, пока слабо вериться, что 1С сможет подтянуть его производительность до приемлемого уровня. Возможно, ставка делается на время. EDT будут “пилить” не один год, а за это время уровень железа существенно подрастет. Но это опять же в теории. С 2008 года я пережил 3 апгрейда своей рабочей машины, но Eclipse у меня все равно тормозит.
Тут можно долго рассуждать, но пока ваш покорный слуга видит большие проблемы с быстродействием. Чем больше в Eclipse напичкают “примочек”, тем сильней возрастут требования к железу.
На мой взгляд, компания 1С выбрала не самую удачную основу для этого проекта. Тем более на рынке профессиональных IDE уже давно лидирует JetBrains. У них прекрасно получаются IDE и возможно имело смысл воспользоваться их опытом. Опять же, это всего лишь мои домыслы. Возможно, команда разработчиков EDT видят пути оптимизации выбранной технологии.
Вместо заключения
Релиз EDT - прекрасный шаг вперед и очередное испытание для мира разработки прикладных решений под платформу 1С:Предприятие. Если компании 1С хватит ресурсов и терпения для развития нового продукта, то в будущем это несомненно принесет свои плоды в виде более квалифицированных разработчиков, соответствия современным реалиям разработки программного обеспечения, и возможно расширению своей аудитории.
1С:Предприятие давно позволяет создавать самые разнообразные решения (в том числе и для мобильных платформы), но пока их главные потребители - российский компании. Переход на профессиональный инструмент вроде Eclipse запросто может подогреть интерес со стороны западных разработчиков, а именно это сегодня необходимо компании 1С. Российский рынок завоеван, пришло время новых побед.
Ограничиваем потребление памяти
Eclipse - требовательная к ресурсам IDE и чтобы не ловить спонтанные ошибки типа Out of Memory, сразу после установки EDT рекомендуется задать в конфигурационном файле (dt.ini) допустимый объем памяти для Java. Объем памяти задается параметром “Xmx3072m”. Например, если мы хотим установить разрешение на использование 8 гигабайт оперативной памяти, то указываем: Xmx8192.
Эти объекты метаданных пока не поддерживаются
- Критерии отбора;
- Подписки на события;
- Функциональные опции и их параметры;
- Определяемые типы;
- Хранилища настроек;
- XDTO-пакеты;
- Создание в конфигурации интернет-сервисов;
- Размещение в конфигурации WS-ссылок;
- Элементы стиля;
- Планы видов характеристик;
- Планы счетов;
- Планы видов расчетов;
- Регистры бухгалтерии;
- Регистры расчета;
- Бизнес-процессы и задачи;
- Внешние источники данных;
- Макеты:
- Текстовый документ;
- Active document;
- HTML-документ;
- Географическая схема;
- Графическая схема;
- Макет оформления компоновки данных
Статья опубликована в журнале "Системный администратор" (http://samag.ru/). Июнь 2015 г.
Ссылка на журнал: http://goo.gl/EMkblG