Pull to refresh

Новый язык от 1С: Зачем? Кому? Стоит ли лезть?

Reading time5 min
Views35K

Привет, Хабр (и просто случайные читатели, зашедшие сюда в поисках истины или интересной статейки на пару минут)!

Так вышло, что последние полгода я провёл в тесных объятиях «Личного кабинета сотрудника» на Элементе — новом языке программирования от 1С. За это время я успел его изучить, полюбить, возненавидеть, снова полюбить и, наконец, написать эту статью, чтобы поделиться своими впечатлениями, страданиями и неожиданными открытиями.

1С:Предприятие.Элемент
1С:Предприятие.Элемент

Кто я такой и почему мне можно верить (хотя дело ваше)?

До этого я работал с Python и JavaScript, а тут вдруг жизнь меня привела в неизвестность, и я сел за Элемент, не зная даже базового 1С. Да, я тот самый смельчак, который сначала нажимает «Да, я уверен», а потом гуглит, что же это было.

Что такое Элемент?

Элемент — это новый продукт, разработанный компанией 1С для создания и разработки приложений, которыми смогут пользоваться не только бизнес-юзеры, бухгалтера, кадровики, финансисты, а и новый для 1С круг пользователей юзеры-клиенты.

Элемент это не язык программирования, а среда для разработки внутри которой лежит язык программирования Исполнитель, но обросший новыми приколами. Поэтому в статье я обобщу Элемент как язык программирования для простоты объяснений. В интерфейс среды разработки углубляться в этой статье не будем. Я лишь хочу, чтобы вы взглянули на среду разработки Элемент и на Visual Studio Code :-)

Visual Studio Code
Visual Studio Code
Элемент
Элемент

Кстати фишка элемента, что разработка ведётся на облаке либо на поднятой среде разработки на локальном сервере организации, локальной программы под комп нет. Из-за этого всплывает полным-полно трудностей с тем, что сервер падает, не работает поиск по проекту, или невозможно подключение к гиту. Например, у нас есть два сервера — Windows и Linux. На Linux поиск по проекту не работает, в то время как на Windows функционирует без нареканий.

Элемент позволяет создавать любое веб приложение путём написания кода и команд для серверной части приложения, а также и для части клиента (фронта), но используя помимо кода подход «Метаданные‑ориентированная разработка» или «Конфигурирование», кому как удобно. Но забегу вперёд и спойлерну: «Там ещё и можно костылить на JS, HTML и CSS».

Пример разрабатываемого веб приложения - CRM
Пример разрабатываемого веб приложения - CRM
Пример разрабатываемого веб приложения - Онлайн магазин

Сравнение с другими языками

1. Простота и удобство (на удивление)

Элемент имеет более простой и понятный синтаксис если, конечно, смириться с русскоязычной разработкой, хотя там можно поменять язык разработки (за это лайк), но на двух вариантах сразу писать нельзя, хотя кому-то проще так, а кому-то так, а проект общий. Язык хорошо ложится на понимания базы разработки. В отличие от JS, где нужно учитывать множество нюансов и особенностей, в Элементе всё более прямолинейно и логично, но на базовом уровне даже забавно насколько они похожи.

1С:Предприятие.Элемент
1С:Предприятие.Элемент
JavaScript
JavaScript

2. Интеграция с продуктами 1С

Если вы работаете в экосистеме 1С, то Элемент — ваш лучший друг. Он заточен под их продукты и позволяет быстро делать приложения, которые будут работать из коробки даже на мобильных устройствах.

3. Ограниченная сфера применения

В отличие от JS, который можно запихнуть хоть в тостер, Элемент пока заточен только под продукты 1С. Но, если вам нужно мобильное приложение без лишних телодвижений — он справится. (хотя бубен и костюм шамана в шкаф не прячьте - пригодится).

4. Проблема реализации любой задумки

Представьте, делаете вы проект на JS или Python, всё, что захотели вы или заказчик, в 99.9% случаев реализуемо, кайффффф. Хотите кнопку, которая меняет цвет в зависимости от фазы луны? Без проблем!

В Элементе же всё складывается из мелочей.

Хочешь перекрасить стандартную кнопку? Пожалуйста — на выбор три цвета. Приходится либо костылить через HTML, либо собирать кнопку из других компонентов, тратя на это кучу времени. Конечно, кто-то скажет: «Пользуйся стандартом, тут всё продумано и гармонично». Но в реальной разработке, а не в идеализированных примерах, ты делаешь не «как надо», а как хочет заказчик. Если ему нужна светло-сиреневая кнопка — значит, она будет.

Ещё пример: я хотел убрать название приложения из шапки, но оставить его в <title> страницы. Звучит просто, но стандартный функционал этого не позволяет. Пришлось писать JS-код, который искал нужный элемент в DOM-дереве внутри iframe и перезаписывал его.

И напоследок — самый болезненный кейс. При авторизации через форму в мобильном приложении пользователь не может исправить логин, если ошибся: кнопки «Назад» просто нет. Пришлось внедрять JS, который добавлял эту кнопку и возвращал пользователя на шаг назад.

Вывод:
Элемент — это как IKEA для разработчиков. Всё красиво и просто, пока не попробуешь собрать что-то не из инструкции.

Особенности Элемента

1. Настоящее ООП (а не «как бы ООП» из 1С)

Да-да, здесь есть нормальное объектно-ориентированное программирование! Можно писать классы, наследование, инкапсуляцию — всё как у взрослых.

Не закидывайте меня камнями, 1С имеет урезанную реализацию ООП.

2. Можно костылить JS (но стыдно)

Внедрил HTML игруху в приложение на Элементе
Внедрил HTML игруху в приложение на Элементе

Если что-то нельзя сделать стандартными средствами — добро пожаловать в мир JS-костылей!

Плюсы:

  • Можно реализовать любую безумную идею.

  • Никто не узнает… кроме коллег, которые потом будут это поддерживать.

Минусы:

Дока говорит «нельзя» → сообщество говорит «нельзя» → а ты всё равно делаешь, так как надо.

Примеры кода

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

Пример работы с массивами
Пример работы с массивами
Пример работы со структурами (на выходе можно пересобрать как JSON)
Пример работы со структурами (на выходе можно пересобрать как JSON)
Пример работы с датами
Пример работы с датами
Пример синтаксиса на Элементе
Пример синтаксиса на Элементе
Пример синтаксиса на JS
Пример синтаксиса на JS
Упрощенный пример кода из проекта
Упрощенный пример кода из проекта
Аналог примера на JS
Аналог примера на JS

То есть как вы можете увидеть синтаксис Элемента (Исполнителя), понятный, проглядываются сходства с JS, и это действительно можно назвать хорошим по синтаксису языком.

  • Минимум «шума» — нет лишних скобок {} или точек с запятой; (кроме завершения блоков).

  • Статическая типизация с лаконичностью. Явное указание типов (Строка, Число, Булево) помогает избежать ошибок. При этом синтаксис не перегружен (например, в отличие от TypeScript или C#).

  • Логичные операторы сравнения. Использование и/или вместо &&/|| делает код понятнее без знания спецсимволов.

  • Предсказуемость и безопасность. Статическая типизация предотвращает ошибки в рантайме (например, нельзя случайно сложить строку и число). Явное объявление переменных через пер (аналог let/var) снижает риск неожиданного поведения

  • Баланс между простотой и мощью. Единый синтаксис для методов (нет разделения на функции и процедуры как в старом 1С). Поддержка перегрузки методов, структур, исключений — как в современных языках.

А теперь докажите, что это уже не тот 1С с которым мы работали. Это действительно хороший продукт.

Стоит ли изучать Элемент?

Да, если:

  • Вы работаете с  и хотите выйти за рамки типовых конфигураций.

  • Если ты джун и не можешь отыскать работу, прыгай в этот язык, изучай его, а затем и вытекающие из него 1С:Аналитика и 1С:Шина и на рынке труда за тебя начнут драться. Но это по секрету. Тссссс…

Нет, если:

  • Вы не связаны с 1С и не планируете.

  • Хотите полную свободу без костылей.

Вывод

Элемент — это интересный эксперимент 1С, который пытается соединить конфигурирование и настоящую разработку. Я по-настоящему верю, что у этого продукта есть реальные шансы ворваться с двух ног в мир быстрой шаблонной разработкой не больших по сложности продуктов. И ещё стоит отметить современность данного продукта в отличии от основного 1С. Элемент показывает нам, что компания 1С не застряла в своём мире, а идёт в ногу со временем и создаёт что-то новое.

Если решитесь — готовьтесь к приключениям, костылям и неожиданным сюрпризам! 🚀

Компании 1С за Элемент ставлю Лайк.

Tags:
Hubs:
+49
Comments117

Articles