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

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

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

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

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

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

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

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

Visual Studio Code
Элемент

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

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

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

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

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

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

1С:Предприятие.Элемент
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 игруху в приложение на Элементе

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

Плюсы:

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

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

Минусы:

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

Примеры кода

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

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

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

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

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

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

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

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

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

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

Да, если:

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

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

Нет, если:

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

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

Вывод

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

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

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