Комментарии 117
Что-то густо пошло, каждый день одна-две статьи про 1С, знак свыше для свитчинга?:-)
похоже на йоптаскрипт, не удивлюсь если оттудаи черпали вдохновение авторы
😂😂😂
Похоже на обрезанный тайпскрипт. Кстати, рендерится это всё в реакте
Откуда инфа про реакт?
Ну ечди открыть интерфейс в браузере, то видно, что это реактовские компоненты, да и реакт девтулз начинает работать
я пробывал элемент - очень не плохо)
но сожалению вакансий по Элементу нет .. а действующие разработчики 1С говорят что элемент сыроват и до его внедрения еще очень много и долго )
и да среда разработки в облаке жгучая боль имхо )
Ну это реально, уровень, адекватный язык для людей с беграундом в международных языках. Сыроват это ещё слабо сказано. Но концепция и вектор движения классный
Не увидел ООП тут
Наследование и полиморфизм упомянуты, но не показаны. Инкапсуляция есть? А если найду?
Интерпретируемый со статической типизацией? Это не совместимо. Либо одно как python либо второе как typescript
Где в примерах передача параметров в функции и хоть какая-то изоляция (private...)? Примеры имеют очень плохой стиль.
По инкапсуляции. Объединение данных с методами есть, а вот защиты похоже нет

Защиты нет, но если так задуматься то и в python её нет без использования декораторов.
Есть, приватные переменные нпч начинающиеся с __
Нет, всё, что делает двойное подчёркивание - автоматически добавляет в начало имени члена имя класса. Это инструмент для избежания конфликтов имён между родителем и наследником, не более того.
Это понятно, но в целом, как раз позволяет дать понять, что из вне лучше переменную не дергать. А доступ protected - ну такое себе, поэтому хватает
позволяет дать понять
Вот именно, оно чисто рекомендательный характер носит, точно так же, как и одинарное подчёркивание. И даже по официальному гайду PEP 8 не полагается в __
никаких особых смыслов вкладывать (относительно _
), а использовать исключительно для символов, которые могут нежелательно в дочернем классе переопределиться.
а вот защиты похоже нет
Разработчикам 1С нечего скрывать!
Не со статической, а со строгой. Не путайте теплое с мягким.
Я не ошибся: в статье упомянута именно статическая типизация. И именно она не достижима в режиме интерпретации.
Прошу вести диспут в академическом стиле, корректно.
именно она не достижима в режиме интерпретации
Чей-та? Учитывая, что, как и у всех, под капотом "интерпретатора" там jit-компилятор с вероятностью овер 99%?
Типизация - это свойство языка, а не его транслятора.
Я не ошибся: в статье упомянута именно статическая типизация. И именно она не достижима в режиме интерпретации.
Хаскелевский интерпретатор ghci вышел из чата.
Скорее смотрит с недоумением на утверждение :)
Ладно, уговорили.
Вспомнился Rust, который компилится очень долго. Но это не из-за статической типизации.
Правильно, это не из-за статической типизации, а из-за её силы. Агда или идрис тоже компилится тайпчекается долго — там почти произвольно сильный язык на уровне типов.
В чём сила, брат?
Компиляция Раст долгая из-за проверки правил borrow checker. Agda, Idris ну тут да компилятор проверяет все комбинации на декартовом произведении возможных значений или подтипов. Так, наверное...
тут да компилятор проверяет все комбинации на декартовом произведении возможных значений или подтипов
Нет, зачем? Это ж не TLA+ какой-нибудь.
Ладно, спросил LLM
Ниже расшифровка пяти “доп-шагов”, которые компилятор зависимо-типового языка (Agda, Idris 2, Lean 4 и т.п.) обязан выполнить поверх обычного «parse → type-check → codegen».
────────────────────────────────
Нормализация термов внутри типов
«Тип содержит программу, программу надо исполнить».
• В зависимых языках значение может появляться внутри типа:
Vec A n — вектор длины n
Fin (n + m) — индекс в диапазоне 0 … n+m-1
• Чтобы понять, одинаковы ли два таких типа, нужно уметь n + 0 ⇒ n
2 * (1 + 2) ⇒ 6
То есть компилятор прямо во время проверки типов редуцирует λ-выражения, вызывает рекурсивные функции, упрощает арифметику — пока не получит β-η-нормальную форму.
Алгоритм по сути тот же, что «интерпретировать программу», только остановка гарантирована не всегда ⇒ вводят лимиты и кэш.
────────────────────────────────
Higher-order unification с бэктрекингом
«Мы выводим не только типы, но и сами программы».
Пример (Agda):
map : {A B : Set} → (A → B) → Vec A n → Vec B n map f [] = [] map f (x ∷ xs) = ?
В месте «?» компилятор создает metavariable ?p : Vec B n-1, а потом пытается угадать её с помощью unification:
?p ≡ map f xs
Так как неизвестная стоит на ФУНКЦИОНАЛЬНОМ уровне (может сама быть лямбдой), задача становится higher-order. Общий алгоритм — поиск подстановок, где каждая попытка может раскрывать ещё функции ⇒ дерево вариантов + бэктрекинг. В худшем случае — экспоненциально.
────────────────────────────────
Проверка тотальности / termination
«Каждая функция должна завершаться, иначе вся логика рушится».
Если разрешить бесконечную рекурсию внутри типов, можно вывести противоречие (false : ⊥). Поэтому компилятор:
• Строит граф вызовов (mutual recursion).
• Для каждой рекурсивной ветви проверяет «длина аргумента падает», «значение строго меньше», «co-recursive call под конструктором» (size-change analysis, guarded recursion).
• Если доказать не удаётся — ошибка: функция признана нетотальной.
────────────────────────────────
Позитивность, продуктивность, coverage
4а. Позитивность (inductive types).
data Bad : Set where BadF : Bad → Bad
— здесь Bad употребляется отрицательно (слева от стрелки), такой тип приводит к несогласованности.
Компилятор проверяет «только позитивные позиции».
4б. Продуктивность (co-inductive / stream).
coinductive Stream A where head : Stream A → A tail : Stream A → Stream A Определение бесконечного объекта должно «каждый тик» выдавать конструктор, иначе можно снова нарушить целостность теории.
4в. Coverage для pattern-matching.
f : Vec A n → …
f [] = …
-- забыли вариант (x ∷ xs) → … —> компилятор жалуется, причём должен учитывать, что n может быть только 0 в первом паттерне. Проверка строит дерево возможных значений и рекурсивно исключает покрытые ветви.
────────────────────────────────
Автоматический поиск доказательств
(holes, auto, rewrite, tactics)
• Hole ?_1 : P появляется каждый раз, когда вы пишете «?».
Компилятор пробует заполнить его: ищет в контексте терм, чья норма совпадает с P, либо перебирает простые тактики (apply, rewrite, refl).
• В Idris 2 auto запускает глубину-first-search до заданного лимита; в Agda есть auto, ring, linear и пользовательские тактики через reflection.
• Каждый такой поиск — ещё один уровень backtracking, который увеличивает время сборки, но экономит строчки кода.
──────────────────────────────── Итог
Эти пять стадий превращают «проверку типов» в мини-процесс автоматического доказательства теорем. Отсюда большая асимптота и минуты/часы на компиляцию по сравнению с Rust/Go, где всего этого нет (тип — это просто формула ранга 1, которую проверяют линейным алгоритмом).
Чтобы понять, одинаковы ли два таких типа, нужно уметь n + 0 ⇒ n
Компилятор агды не умеет такое делать для неизвестных n, там нужно ручками. В случае известных n может средуцировать, да.
Алгоритм по сути тот же, что «интерпретировать программу», только остановка гарантирована не всегда ⇒ вводят лимиты и кэш.
Гарантирована (если без агдовского unsafe), у вас же абзацом ниже про проверку тотальности идёт.
Непонятна мотивация, зачем создавать второй своеобычный язык. Уж если решились на такие изменения - почему не подобрать подходящий ЯП из существующих и более или менее распространённых?
Ради кириллицы в ключевых словах? Ну так если это настолько важно - сделали бы для любого ЯП перевод всех ключевых слов на русский и элементарную трансляцию 1:1 из кириллической версии в нормальную, зачем изобретать этот велосипед целиком?
Или это такая хитрая стратегия "запирать" разработчиков в рамках своего продукта, а то, не дай Бог, освоят ЯП общего назначения и начнут на нём писать что-нибудь стороннее? :)
Так они и сделали - это просто упрощенный аналог java
именно "запирание" - слышал на Западе в крупных банках тоже что-то подобное, например
Тот же пайтон форкнули бы, раз уж хочется своих фич.
Там у 1с есть попытка логичного объяснения почему они разрабатывают собственный язык. Но по факту разработка и отладка растянется на десятилетия и к концу устареет как сейчас устарел встроенный язык v8
После прочтения статьи всплыл один старый мем в голове. Скорее всего нейронку попросили писать на языке молодежи.

Что-то мне подсказывает, что в Элемент есть что-то большее, чем описано в статье. Потому что из статьи все выглядит просто как немного другой синтаксис JS. Не очень понятно, чем он лучше того же TypeScript.
Я вижу, что 1С продолжает изобретать велосипед вместо того, чтобы брать уже готовое. Вот что мешало просто сделать поддержку JS на клиенте, как сделано в том же lsFusion ?
https://docs.lsfusion.org/ru/How-to_Custom_components_properties/
https://docs.lsfusion.org/ru/How-to_Custom_components_objects/
На недавнем 1C DevCon были вопросы ЗАЧЕМ? Ответ примерно следующий - 1С Элемент нужен для создания веб приложений которые не укладываются в Web клиент 1С или Мобильный клиент 1С. Тот же веб клиент это автогенерация форм по метаданным конфигурации, поэтому она +- одинаково виглядет как в браузере и так и тонком клиенте 1С.
Элемент позволяет гибко создавать вебприложения "как хочешь", но это нужно только для определенных задач. Поэтому и язык по мотивам JS . Но если посмотрите видео презентации по 1С Элементу , там очень сильная интеграция с визуальной средой разработки именно это дает преимущества. Видимо просто визуальную среду для JS было бы сложнее написать , кроме того JS он полон рудиментов, старых конструкций . Я не очень понимаю почему его так любят - красивых архитектурных решений в нем нет
Если тебе нужно "веб приложение как хочешь", реакт в зубы и вперёд, 1с как бек ). Я так делаю и спина не болит
Тут же не в этом проблема. Проблема в том, что в мире есть миллион библиотек на все случаи жизни, написанные именно на JS (есть даже открытые библиотеки по распознаванию лица).
Простой пример, чтобы не говорить о сферическом коне в вакууме. Если зайти на демку MyCompany : https://demo.lsfusion.org/mycompany-ru , то первым открывается окно с канбаном задач. Чтобы перетягивать задачи просто используется внешняя открытая и бесплатная библиотека dragula.js : https://github.com/bevacqua/dragula
Соответственно, клиентский код, который непосредственно рисует канбан и отвечает за работу с бэкэндом просто использует эту библиотеку :
element.drake = dragula();
...
element.drake.on("drop", function(el, target, source, sibling) {
if (el.task.status !== target.status.id.toString())
controller.changeProperty("status", el.task, target.status.id);
taskKanbanReorder(controller, target.children);
});
А теперь внимание вопрос. Допустим "обертку" Вы напишите на Элементе. А можно ли там использовать сторонние JS библиотеки и тесно с ними работать (а именно, обращаться к функциям / объектом / методам, а также менять DOM) ? И как потом поддерживать эту кашу из кода, где половина написана на Элементе, а половина на JS.
В общем 1С, как всегда все делает по-своему, видя во всем фатальный недостаток. И непонятно зачем платформа 1С вообще нужна при разработке приложений с нуля, когда есть открытый и бесплатный lsFusion, который в разы лучше.
А можно ли там использовать сторонние JS библиотеки и тесно с ними работать (а именно, обращаться к функциям / объектом / методам, а также менять DOM) ?
Можно, но это лютые кастыли
А теперь внимание вопрос. Допустим "обертку" Вы напишите на Элементе. А можно ли там использовать сторонние JS библиотеки и тесно с ними работать (а именно, обращаться к функциям / объектом / методам, а также менять DOM) ? И как потом поддерживать эту кашу из кода, где половина написана на Элементе, а половина на JS.
1С как правило портирует библиотеке которые считает удобными в язык. Напр библиотеки для XML в 1С точно удобнее чем в Java . Откуда они их портировали не могу сказать.
В основной платформе есть механизм внешних компонент, если очень хочется портировать то что нет в 1С, но чтобы это было совместимо с фреймворком . В элементе как понимаю пока нет.
А по поводу JS библиотек. Ну да их куча, почему то никого не смущают что фронтендеры пихают JS во все места не обращая внимания на то что используется Java или Net и как то поддерживают "эту кашу" с отдельным подразделением DevOps
И непонятно зачем платформа 1С вообще нужна при разработке приложений с нуля, когда есть открытый и бесплатный lsFusion, который в разы лучше.
Потому что никто с нуля не разрабатывает (хотя на 1С это приятно, занимаешься только бизнес задачей а не стеком)
Как минимум используют библиотеку стандартных подсистем 1С . А это не просто библиотека кода это кирпичики решений с GUI форматам.
А обычно берут одну из множества типовых конфигураций (типа 1С Бухгалтерия, 1СУПП, 1С Erp и т.д.) и дописывают к ней подсистему.
Все эти личные кабинеты на Элементе, как правило пишут для типовых конфигураций.
Вот у Fusion есть функционал бухгалтерии для РФ со всем фаршем налоговой отчетности и работающее из коробки?
1С как правило портирует библиотеке которые считает удобными в язык. Напр библиотеки для XML в 1С точно удобнее чем в Java . Откуда они их портировали не могу сказать.
В каком смысле ? Перекодируют js в Элемент ? И как они потом новые версии поддерживают ? Давайте вот, например, zxing-js портирован ? Это одна из самых популярных библиотек по работе со штрих-кодами. А там над ней еще надстроек дофигища.
А по поводу JS библиотек. Ну да их куча, почему то никого не смущают что фронтендеры пихают JS во все места не обращая внимания на то что используется Java или Net и как то поддерживают "эту кашу" с отдельным подразделением DevOps
Эээ, Вы о чем ? Какой Java и Net в браузере ? Речь сейчас шла исключительно о GUI в браузере, чтобы, например, рисовать всякое специфическое. И тут важно, что есть куча бесплатных (и платных) JS библиотек именно под визуализацию. Например, нарисовать диаграмму Ганта, или какой-нибудь хитрый календарь.
Потому что никто с нуля не разрабатывает (хотя на 1С это приятно, занимаешься только бизнес задачей а не стеком)
Вообще никто ничего никогда с нуля не разрабатывает ? Интересная позиция...
А обычно берут одну из множества типовых конфигураций (типа 1С Бухгалтерия, 1СУПП, 1С Erp и т.д.) и дописывают к ней подсистему.
Как я понимаю, в Вашем мире есть один сплошной 1С. А как же живут другие программисты, которые не на 1С ? Наверное, сидят на работе и просто получают зарплату ни за что...
Вот у Fusion есть функционал бухгалтерии для РФ со всем фаршем налоговой отчетности и работающее из коробки?
Как я понимаю, в Вашем мире бухгалтерия и налоговая отчётность - это основа мироздания и всех систем в мире. И все задачи строятся только от них. А других задач у бизнеса не существует.
Есть, например, MyCompany, которую мы часто берем за основу для заказных разработок. И часто к ней проще что-то добавить, чем что-то вырезать из того же УТ (монстра спагетти-кода).
Только УТ все видели, на ней работает 100500 организаций. А фузиновская MyCompany - это что-то типа "неуловимого зверя Цыгея" - шкуру от него видели, а живьем никто не видел...
Да и зачем вырезать что-то из УТ? все ненужное отключается, и просто не видно в интерфейсах.
Только УТ все видели, на ней работает 100500 организаций. А фузиновская MyCompany - это что-то типа "неуловимого зверя Цыгея" - шкуру от него видели, а живьем никто не видел...
Ну от того, что Вы в своем пузыре не видели MyCompany, то это не значит, что никто не видел.
Да и зачем вырезать что-то из УТ? все ненужное отключается, и просто не видно в интерфейсах.
Просто часто, чтобы добавить то, что идет вразрез с логикой УТ, придется удалять что-то. И вот тогда, когда нужно будет как-то сделать, чтобы все старое не поломалось, приходит настоящая боль 1С.
В каком смысле ? Перекодируют js в Элемент ? И как они потом новые версии поддерживают ?
Как обычно делают обертку и встраивают в Gui фреймворк

Давайте вот, например, zxing-js портирован ? Это одна из самых популярных библиотек по работе со штрих-кодами. А там над ней еще надстроек дофигища.

Эээ, Вы о чем ? Какой Java и Net в браузере ? Речь сейчас шла исключительно о GUI в браузере, чтобы, например, рисовать всякое специфическое
Вы вот на чем свою isFusion пилите (бэкэнд, фронт)?
А в Java есть как минимум три варианта создания активных страниц
Servlet
Java server pages
Java server faces
Например последний генерит страницу на сервере и интерактивность обеспечивается именно серверным интерфейсом. Это совершенно другой подход чем JS
Как я понимаю, в Вашем мире есть один сплошной 1С. А как же живут другие программисты, которые не на 1С
Трудно живут. Каждый день приходится делать какой то велосипед. Поэтому постоянно клеют куски кода из разных мест, косты на разработку огромные. В той же Java нет единого маркетплейса по библиотекам. Все нужно искать по гуглам. Для Gui в Java несмотря на JavaFx и прочие улучшения , чтото красивое можно только на Java фрейморках типа этогого https://www.jmix.ru/
Но такой легкости как системах типа 1С там нет.
Скажу прями интерфейс ваших демок визуально не привлекателен. Понятно что для работы сойдет. Но если Вам бы просто было это создать , Вы бы сделали, но видно что нет. Я бы тоже хотел иметь удобный универсальный фрейворк на котором можно быстро создавать визуально красивые решения. Это сложная темпа поскольку дело даже не в бесплатных компонентах, а стилях интерфейса. Создать стиль сложнее, поскольку интерфейс в какой то степени определяет Бэкэнд. Это кстати хорошо видно по платформе 1С.
когда 1С выпустил 8.5 им для нового интерфейса пришлось поменять конфигурирование и еще обратную совместимость сделать
Я вижу много решений где бэкэнд проработан, а фронт это не отражает. Пример Calypso для ценных бумаг
Как обычно делают обертку и встраивают в Gui фреймворк
Вы представляете сколько всего JS библиотек в мире, и сколько оберток в 1С ? Если мне понадобится нарисовать календарик с каким-то функционалом, то я смогу выбирать из десятков платных и бесплатных JS-библиотек, которые его уже нарисовали. Сколько под них оберток есть в Элементе ?
Давайте вот, например, zxing-js портирован ? Это одна из самых популярных библиотек по работе со штрих-кодами. А там над ней еще надстроек дофигища.
По поводу скрина c 1C печать штрих-кодом, то zxing не только печатать умеет, он распознавать их из изображения умеет. Например, вот недавно использовал надстройку на ней, которая по активному видеопотоку умеет распозновать QR-кода на беджах (причем там есть несколько js-библиотек для этого). Это тоже встроено в Печать штрих-кодов в 1С ?
Servlet, Java server pages, Java server faces уже умерли очень давно и их практически никто в современной веб-разработке не использует. Тем более с полной перегрузкой страниц.
Трудно живут. Каждый день приходится делать какой то велосипед. Поэтому постоянно клеют куски кода из разных мест, косты на разработку огромные. В той же Java нет единого маркетплейса по библиотекам. Все нужно искать по гуглам.
Издеваетесь, да ? Про Maven ничего не слышали ? И вообще смешно сравнивать количество разных библиотек под все случаи жизни на Java с тем, что есть под 1С. Под Java есть практическ все и очень легко интегрируется в тот же lsFusion. А вот в 1С сбоку что-то вставить - это просто вынос мозга.
Для Gui в Java несмотря на JavaFx и прочие улучшения , чтото красивое можно только на Java фрейморках типа этогого https://www.jmix.ru/
Десктоп GUI умер тоже хз сколько лет назад. Непонятно зачем вспоминать всякие JavaFx. Сейчас только веб-интерфейс. А вот там такое раздолье, что 1Су даже не снилось.
Это кстати хорошо видно по платформе 1С
В 1С в разы интерфейс хуже, чем в бесплатном и открытом lsFusion. Там даже количество записей в таблице посчитать нельзя. Не говоря уже про сумму по колонке.
Про дизайн вообще молчу. В lsFusion используется Bootstrap - де-факто стандарт современной веб-разработки. А в 1С - привет 2000м. Только сейчас начали у lsFusion копировать, и сделали что-то поприличнее. И даже темную тему смогли.
В 1С в разы интерфейс хуже, чем в бесплатном и открытом lsFusion. Там даже количество записей в таблице посчитать нельзя. Не говоря уже про сумму по колонке.
Не надо врать, там все суммы можно вывести если нужно. В табличных частях строки по умолчанию нумеруются
Издеваетесь, да ? Про Maven ничего не слышали ? И вообще смешно сравнивать количество разных библиотек под все случаи жизни на Java с тем, что есть под 1С. Под Java есть практическ все и очень легко интегрируется в тот же lsFusion
Вы в Мавене gui библиотеки найдете с формочками и компонентами? Там максимум для бэкэнда можно набрать чегото более менее стандартного и общепринятого
И вообще смешно сравнивать количество разных библиотек под все случаи жизни на Java с тем, что есть под 1С. Под Java есть практическ все и очень легко интегрируется в тот же lsFusio
Смысл платформы быстрой разработки это иметь под рукой все что нужно для бизнес задач, а не навсе случае жизни. Поэтому финансовые приложения на 1с пишут , а почтовые клиенты нет.
Servlet, Java server pages, Java server faces уже умерли очень давно и их практически никто в современной веб-разработке не использует. Тем более с полной перегрузкой страниц.
Oracle об этом как понимаю не знает, и почему то поддерживает в стандартах как актуальные.
Если Вы считаете что Bootstrap это острие прогресса, почему тогда не Spring?
Не надо врать, там все суммы можно вывести если нужно. В табличных частях строки по умолчанию нумеруются
Что значит вывести, если нужно ? И причем здесь строки в табличных частях. Речь шла про ЛЮБУЮ таблицу на любой форме. lsFusion так умеет, а супер-пупер 1С так может ? Где там вот эти кнопки :

Вы в Мавене gui библиотеки найдете с формочками и компонентами? Там максимум для бэкэнда можно набрать чегото более менее стандартного и общепринятого
Maven - это для Java и бэкенда. Для JS есть npmjs, Github и куча всего другого. Просто набираете в гугл javascript library <что угодно> и находите библиотеку на любой случай жизни. 1Су только мечтать о таком количестве библиотек.
Oracle об этом как понимаю не знает, и почему то поддерживает в стандартах как актуальные.
Oracle поддерживает и не такое "говно мамонта". Собственно, как и 1С. Но это не значит, что сейчас это широкои используется.
Тут как с 1С. Да, многие продолжают по инерции писать на 1С. Но продвинутые разработчики давно перешли на lsFusion.
Где там вот эти кнопки?
А простите 450 это что за величина? Просто 450 штук чего угодно? А если там не только штуки, а короба, погонные метры и литры?
Там сумма считается по той колонке, на которой стоял, и исходя из всех примененных в данный момент фильтров. То есть, например, на форме с текущими остатками можно сделать любой отбор (например, по наименованию) и просуммировать по количеству. Можно туда вывести колонку с себестоимостью - тогда будет себестоимость и т.д.
Но суть в том, что в абсолютно любой таблице можно посчитать сумму по абсолютно любой колонке. Вне зависимости от того, сколько там записей. И это будет сделано через SELECT SUM WHERE, а не путём перегона через ORM всей таблицы и расчета на application server'e.
Это киллер фича что ли?
В 1С это делается так

там где нужно.
Просто нужно учитывать что списки по большим таблицам в 1С динамический (ленивое чтение) . Таблицы которые полностью подгружаются в память есть только как часть ссылочных метаданных (документ , справочник).
И если захотите произвольно суммировать по таблицы из миллиарда записей, это будет не очень user friendly
Тут как с 1С. Да, многие продолжают по инерции писать на 1С. Но продвинутые разработчики давно перешли на lsFusion
Расскажите про используемые продвинутые технологии. Может шардинг используете, а интерфейс чего такой скудный ? Бесплатных контролов не хватило?
Голанг для бедных?
Синтаксис - это пока. Скоро понадобятся генерики, композиция функций, конкурентность.
Если ты джун и не можешь отыскать работу, прыгай в этот язык, изучай его, а затем и вытекающие из него 1С:Аналитика и 1С:Шина и на рынке труда за тебя начнут драться. Но это по секрету. Тссссс…
1С:Аналитика и 1С:Шина и 1С: Личный кабинет сотрудника - это эволюционные ветки Элемента, но не 1С:Предприятие. Элемент (у всех разные версии внутри)
Не начнут, это по факту начало конца франчайзи и переход на SaaS модель самой 1С, так как насыщенность коробками уже дошла до предела и рыночек закончился. Немного помогло СВО, но ничего серьезно не поменяется. От технологии Элемента отворачивает только одно - модель поведения 1С со своим партнерами и клиентами. Ни внятных сроков, ни модели развития, за все плати, обучение и сертификация, какие-то уровни геймификации развития - все тайком только для посвященных, а то конкуренты прознают. Я знаком с 1С с 1994 года и 2025 станет для меня с 1С финальным. Этот продукт нужен был вместо 8.3 - сейчас уже поезд ушел.
1С-ников же разорвет, когда вместо любимого перекладывания коллекций в цикле
Функция ЭлементыКоллекции(ДанныеФормы, Строки) Экспорт
ВыделенныеЭлементы = Новый Массив;
Для Каждого ИдентификаторСтроки Из Строки Цикл
ЭлементКоллекции = ДанныеФормы.НайтиПоИдентификатору(ИдентификаторСтроки);
Если ЭлементКоллекции <> Неопределено Тогда
ВыделенныеЭлементы.Добавить(ЭлементКоллекции);
КонецЕсли;
КонецЦикла;
Возврат ВыделенныеЭлементы;
КонецФункции
будет написано такое:
метод ЭлементыКоллекции(ДанныеФормы:Коллекция<СтрокаТаблицы>, Строки:Массив<Идентификатор>): Коллекция<СтрокаТаблицы>
возврат Строки.Выбрать(Идентификатор -> ДанныеФормы.НайтиПоИдентификатору(Идентификатор)).Где(Элемент -> Элемент!=неопределено)
;
Они это не переживут и вымрут
JS куны не вымрут без типизации?
А... Коллекции...
Не завезли ещё? Лол
Меня уже рвет от бессмысленности первого бока кода и прибавившейся к ней нечитабельности второго...)))) Вымираю...
Посчитайте сколько раз нужно переключить раскладку стандартной клавиатуры, чтобы набрать пример на Элементе из второго листинга. Я насчитал минимум 5 раз, максимум 8. Очень удобно :(
1сники решают эту проблему спец. раскладкой, например. А теперь и вендор обратил внимание:
Теперь в средах разработки, использующих язык «Элемента», реализована возможность вводить символы из английской раскладки, не переключаясь на нее, – так называемый Alt-ввод.
Во всех случаях, где это возможно, используется одно и то же правило. Чтобы ввести английский символ, удерживайте клавишу Alt и нажмите ту клавишу, на которой находится нужный вам английский символ.
Никогда не писал на 1C, даже не задумался об этом, а как вообще 1с-ники пишут код? Постоянно переключают раскладку? А почему при создании языка об этом никто не задумался?
Там ровно три места с переключением раскладки и используются они не то, чтобы совсем уж часто: <>, [], "is null". Первое легко заменяется на "НЕ =", второе в большинстве случаев на ".Получить()". А третье придумал не очень умный человек, который действительно не задумался, потому что у меня нет ни единого другого объяснения, что же им помешало сделать конструкцию "ЕСТЬ НУЛЛ".
А вот Элемент - это уже чистейшая боль, я не знаю, как на таком писать.
За счет ALT-комбинаций решается очень просто. Я уже давно не переключаю раскладку для ввода [], {}, <> и прочая, для этого просто зажимаю ALT и набираю русские команды.
В среде есть помощник с раскладкой и всякими хот-кеями. Правда, там почему-то не нашел альтернативный ввод спец.символов.

Первое легко заменяется на "НЕ ="
Достаточно было бы использовать !=, как во многих C-подобных языках. Для него переключать раскладку и извращаться как то не нужно.
Никогда не писал на 1C, даже не задумался об этом, а как вообще 1с-ники пишут код? Постоянно переключают раскладку? А почему при создании языка об этом никто не задумался?
Время стучания по клавишам занимает от силы 20% от всего процесса разработки. Нажатие вышеуказанных символов занимает 0.1% от времени стучания по клавишам. Т.ч. время переключения раскладки, само по себе занимающее доли секунды - это исчезающе малая величина. В этой связи изучать alt-костыли даже не понятно ради чего, сэкономить пару секунд времени в день?
Хех, насколько помню != в 1c было <> всегда)) Я никогда этого не понимал когда на 1с код писал. != вводится без переключения раскладки, а <> с переключением (либо через кастомные раскладки).
Похоже на пранк..
Вывод:Элемент — это как IKEA для разработчиков. Всё красиво и просто, пока не попробуешь собрать что-то не из инструкции.
Боюсь, сейчас это больше похоже на Hoff или Столплит. Вроде бы и модульно, и похоже, но выбор меньше, а если захочешь сделать что-то своё, то возникают сложности. IKEA популярна во всём мире и существует уже много лет, поэтому можно найти проверенные советы и рекомендации. А не тратить время и силы на то, чтобы самостоятельно изобретать велосипед.
IKEA для разработчиков
Фреймворк называется. Вроде как все знакомы с этой концепцией, чтобы так некрасиво ее упрощать.
если, конечно, смириться с русскоязычной разработкой
Зачем смиряться? Абсолютно нормально в разработке продуктов преимущественно для русскоязычной аудитории, чтобы язык тех же строковых литералов, повсеместно встречающихся в коде, совпадал с языком самого кода, чтобы избежать лишних переключений раскладки.
Я лишь хочу, что бы вы взглянули на среду разработки Элемент и на Visual Studio Code.
И Theia, и VSCode используют редактор Monaco, хороший проверенный встраиваемый компонент для разных назначений, в том числе и облачных сред разработки. Переносимость опыта между стеками технологий и тем более инструментами вроде как хорошо?
Если ему нужна светло-сиреневая кнопка — значит, она будет.
В корпоративной среде я все-таки склоняюсь в сторону унификации. Максимум, какой-то урезанный функционал для брендирования на уровне темы в корпоративных цветах.
Более глобально тем более не вижу смысла лезть в JS и что-то костылить, так как Элемент - это технология для предметно-ориентированной разработки на фуллстеке, а не для дизайнерских изысков на фронтенде.
По этому в статье я обобщу Элемент как язык программирования для простоты объяснений.
Стоит ли изучать Элемент? Нет, если вы не связаны с 1С и не планируете.
Опять неверные выводы из-за путаницы в терминах и неуместного упрощения. У нового языка пока нет собственного названия. В документации, например, его называют языком Исполнителя или языком Элемента. Элемент - это не язык, это фреймворк, причем с учетом существования шины, в которой используется урезанный Элемент, - конструктор не только для прикладного разработчика, но и для разработчиков вендора, поставляющих разные продукты на его базе. Исполнитель - это тоже не язык, это интерпретатор языка.
Самое важное тут то, что интерпретатор бесплатен, есть и под линукс, и под виндовс, а сам язык бодро развивается и вполне может стать скриптовым языком общего назначения взамен того же onescript, только со статической типизацией и иерархией типов. Чистый код в отрыве от фреймворка, кстати, пишется в VS Code через плагин.
В итоге, все это нормально масштабируется вплоть до того, что, если вам не нравится именно Элемент и политика лицензирования вендора, вы можете написать свой опенсорс-фреймворк на уровне джанги, реакта и других продуктов, с которыми вы потенциально сравниваете Элемент.
Где можно скачать интерпретатор?
С корпоративной учеткой - на портале сопровождения:
1C:Исполнитель, версия 7.0.3.3
С коммьюнити учеткой - на портале разработчика:
1С:Исполнитель
Благодарю
Не, они точно никогда не научатся. Что среду разработки сделали странную для элемента этого, ни плагинов поставить, ни локально нормально поработать, что среду исполнения доступной только через регистрацию делать... Я наверно никогда не пойму их политики.
Раньше шутили что язык 1С - это Basic переведенный ПРОМТом, а теперь будет JS переведенный (всё тем же) ПРОМТом
Экскремент :((
А почему нельзя было прикрутить к нему какой-нибудь Lua/Python/JS и больше не морочить людям голову?

Вот эти скобочки <>[] которых нет в русской раскладке, на корню рубят основное преимущество русскоязычного ЯП: возможность писать программы с русскоязычными идентификаторами не переключая раскладки... А если уж раскладку надо переключать, то почему бы не воспользоваться любым другим языком программирования, ведь большинство из них уже давно поддерживают имена функций и переменных на любом языке.
Сниппеты в помощь
Always has been) автозамена для квадратных и угловых скобок - классика 1сников
Плагин для vs code позволяет вставлять эти символы сохраняя русскую раскладку при нажатии alt + б, alt + ю, alt + х и т.п.
Тут такой момент, не вижу меню установки плагинов в их версии vs code для этого элемента. Чую что-то вроде нового конфигуратора, который сам ну вот вообще не конфигурируемый никак. Даже банального vim mode там не было. Только какие-то сторонние решения вместо норм плагинов, которые через хаки и костыли работали, ибо вендором плагины не предусмотрены были, ни сторонние, ни от себя.
Вы говорите про их облачную среду разработки для фреймфорка Элемент. Но сам язык интерпретатора 1С:Испольнитель можно установить локально без данного фреймворка.
Инструкции по установке локально:
https://1cmycloud.com/console/help/executor/docs/topics/extension-installation/
https://developer.1c.ru/applications/Console?state=executordownload
Плагин для локального (не облачного) vs code:
https://1cmycloud.com/console/help/executor/docs/topics/extension-installation/
https://marketplace.visualstudio.com/items?itemName=1c-soft.1c-executor-plugin
Дока по языку:
https://1cmycloud.com/console/help/executor/docs/topics/built-in-script-language-overview/
Уже вовсю практикуем, правда там чёрт ногу сломит на всех этих шагах установки, но у меня получилось

Так а какой смысл его ставить без фреймворка этого? Если просто писать на статически-типизированном скриптовом языке - то я лучше python с тайп хинтами или ts возьму.
Я так понимаю тут и суть в этом элементе. А в среде разработки для него плагины недоступны.
Скоро 1С будет выпускать специализированные клавиатуры где можно не переключаться и они заменять обычные клавиатуры. Вот тогда будет проблема.
А вайб-кодинг для этого нового языка тоже уже появился? ))
Посмотрел на примеры кода в статье. Я правильно понимаю, что товарищи из 1С умудрились спроектировать язык, в котором одновременно:
обязательные отступы и ньюлайны,
обязательный end для каждой конструкции (причём в форме точки с запятой)?
Где-нибудь можно взглянуть на формальную грамматику этого ЯП?
Надо сказать, что обязательное жёстко заданное форматирование выглядит существенным преимуществом, учитывая медианный уровень писателей кода.
Будто бы в целях дисциплины хватило бы и одних отступов.
Как мне казалось, обычно язык программирования или «free-form» (с фигурными скобками или begin
/end
), или «significant indentation». А тут химера какая-то. Хочется понять, ради чего там эти одинокие точки с запятой, не просто ж так их добавили в язык.
Нет, инденты не имеют значимости как в питоне
Спасибо за статью! На мой взгляд, главная предпосылка появления Элемента сводится к очень простой мысли:
как правило, там, где платформа 1С уже дала очень сильные корни, всегда есть какие-то фронты, которые как-то заинтегрированы с бэками на 1С. Все эти фронты написаны, сопровождаются как правило не_1сниками, и как правило, вся эта история - крайне противоречива (для бизнеса, конечно же) особенно в финансовой части: грубо говоря стоимость кастомного фронта - это стоимость или аутсорса или штатного фота, занимающегося исключительно этим. Мы же помним, исторически на 1сников чуть ли прокладку сетки и телефонию не накидывали. Что тут предлагает Элемент? Текущий 1сник (или штат оных) осваивает на изи эту технологию, благо она для него, в принципе уже родная, и теперь самое главное - и может просто за свою зарплату писать и фронт для его бэка. Вин-вин! Фактически, весь кост для вышеописанного бизнеса, связанный с разработкой и поддержкой фронта - уходит, а остается "1Сник Сергей", который помимо прочего, теперь за его зарплату, будет писать еще и фронт на Элементе.
Что стоит, чтобы провернуть такой финт для бизнеса? Всего лишь, докинуть требований к описанию вакансий:
было, типа знание СКД, ERP 2.5, КД 3.x Enterprise Data, сервисы
станет: все то же самое + 1С Элемент.
Вспоминаем, что основная масса 1сников, чувствует себя "ущербными", "обделенными", т.к. у них "нет ООП, нет "MVC, MVP, MVI, VIPER, MVVM, TEA, LLM" и т.д. и у них принято по этому поводу просто изводить себя, страдать, постоянно думать о том, куда свичнуться (в Java, конечно же). И поэтому, как только бедолаге работодатель предложит "написать фронт", конечно, основная масса, чисто на психологии, увидит для себя такой джамп: аааа! Я теперь буду "КАК ОНИ". Понимаете? Поэтому, мне лично кажется, что этот фокус удался бы, но!
Вспомним, когда Элемент был явлен миру, у нас еще не было лайв-кодинга, друзья. Теперь же, из каждого утюга льется буквально то, что тот самый фронтэндер, из моего рассказа будет заменем какими-то умными лайф-промтами от мудрого, и безусловно, дешевого студента, который будет вести "эмоциональный" диалог с LLM, которая опять же на изи, выдаст ему киолотонну проверенного, безбажного кода уже не важно на каком языке. Бизнес уже мечтает, как возможно, он и от 1сников избавится, благо прям вот чуть-чуть уже подождать и 1сный копилот, который просто катком пройдется по 1с-ландшафту и уполовинит количество "бездельников-костов". Если тот же мудрый, худой, и очень очень очень дешевый студент, может формулировать эмейзинг-промты на создание фронта, почему ж он не может ровно так же, просто в параллельный чат выдавать такие же промты на создание 1с-кода? Да может конечно же! Может! Поэтому всё, как говорится - зе бигинг оф зе енд! Программисты, 1сники, да и вообще все - не нужны, дешевые студенты, или просто безработные маргиналы, освоившие "иксусство и магию" промтов вытеснят абсолютно всех кожаных кодо-генераторов. Бизнес зальется жиром, и все у него (не у нас же) будет хорошо!
Вот в такой концепции, я пока принимаю бизнесовые классные мечты и по поводу Элемента, и по поводу вайба. И сейчас тренд не "войти-в-айти" уже, т.к. сложно это, хоть и маркеты говорят, просто изяныч, а на искусство написания чувственно-прекрасного промта, который, как известно, освоит любой, кто освоил где находится кнопка включения на его смартфоне.
Поэтому, хотелось бы подвести итог все таки, моему, надеюсь не менее прекрасному, монологу: 1С Элемент, безусловно, найдет своего клиента. Писать на нем будут, однако я не уверен, что массово. Какие-то 1сники энтузиасты освоившие оный, будут поднимать свои зарплаты, указывая это в резюме и попадая в те места, где бизнес - и все выше по тексту.
Станет ли Элемент, таким же популярным, как сама Платформа, но только для фронта? Вопрос открытый.
Спасибо что прочитали маленький лонгрид-коммент, друзья! Хотел на радостях написать, подписывайся на мой телеграмм-канал, там я делюсь умными мыслями на тему и без, а на самом деле просто тупо фармлю подписоту, спитчу себя в надежде толкнуть подороже рекламу, но! Я же его не завел.
Спасибо, отличный комментарий
Вспоминаем, что основная масса 1сников, чувствует себя "ущербными", "обделенными", т.к. у них "нет ООП, нет "MVC, MVP, MVI, VIPER, MVVM, TEA, LLM" и т.д. и у них принято по этому поводу просто изводить себя, страдать, постоянно думать о том, куда свичнуться (в Java, конечно же).
Основная масса 1сников - это дяденьки и тётеньки за 35-40+, которые уже переболели всеми этими глупостями стремления к новомодности ради новомодности.
Новый язык от 1С: Зачем? Кому? Стоит ли лезть?