Заметки из Зазеркалья

26.09.2021

Новая технология разработки приложений

Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.

В ближайшее время мы запланировали выпуск продуктов «1С:Кабинет сотрудника» и «1С:Шина» с возможностями кастомизации. Для кастомизации будет использоваться новая технология «1С:Предприятие.Элемент». Эта технология предназначена для того, чтобы расширить границы применения технологической платформы 1С:Предприятие. С её помощью, в частности, можно создавать:

  • Приложения, ориентированные на конечного пользователя – консьюмерские приложения, кабинеты, витрины и т.п.

  • Фронт-офисы, B2B и B2C кабинеты

  • Headless-сервисы

Многие из вас уже знакомы с языком, который использует новая технология – он используется в «1С:Исполнителе». Существуют также решения, уже использующие эту технологию:

Всего с продуктами, использующими новую технологию, работают на настоящий момент около 60 000 пользователей (большая часть из них работает с приложением «1С:Кабинет сотрудника»). Технология первоначально будет предлагаться как инструмент кастомизации продуктов «1С:Кабинет сотрудника» и «1С:Шина», в дальнейшем мы планируем её использование и для других задач.

В целом концепция новой технологии соответствует общей концепции платформы 1С:Предприятие. Подчеркнём основные моменты:

  • Новый пользовательский интерфейс, ориентированный в первую очередь на работу в веб

  • Динамично развивающийся встроенный язык

  • Поддержка модульности разработки

  • Среда разработки, развернутая в облаке и доступная через браузер

  • Ориентация на работу решений в облаке (но будет и поддержка варианта on-premise)

  • Мобильность: приложения, основанные на новой технологии, будут работать и на мобильных устройствах, и в мобильных браузерах

Далее – немного подробнее про основные моменты новой технологии.

Встроенный язык

Со встроенным языком, используемым в качестве языка разработки приложений, можно ознакомиться в продукте 1С:Исполнитель. Мы хотели (и хотим) создать новый, легкий в изучении и использовании язык разработки с современным синтаксисом, с возможностями, увеличивающими продуктивность разработчика.

В языке есть статическая типизация, что призвано повысить производительность разработчиков. Возможность использовать динамическую типизацию также есть, но это не является основным подходом к разработке.

метод СократитьДо(Строка: Строка, Длина: Число): Строка

    если Строка.Длина() > Длина

        возврат Строка.ПодстрокаСНачала(Длина - 3) + "..."

    ;

   

    возврат Строка

;

Разработчик может определять в языке свои типы (пока это перечисления, структуры и исключения).

В стандартной библиотеке доступны также прикладные объекты – справочники, HTTP-сервисы, независимые регистры сведений. Мы планируем добавить и другие объекты.

Немного о других возможностях языка и поставляемой с ним стандартной библиотеки:

  • Обобщенные (типизированные) коллекции

  • Отдельные типы для работы с датой, временем и сочетанием дата-время

  • Объекты для работы с JSON и XML

  • Объекты для работы с HTTP, SMTP и Системой Взаимодействия

  • Многострочные строковые литералы и литералы для коллекций

// Массив

конст МЕСЯЦЫ = [

    "Янв", "Фев", "Мар", "Апр", "Май", "Июн",

    "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"

]

Язык запросов в новом языке очень похож на язык запросов, используемый в платформе. Некоторые его особенности:

  • Поддерживаются временные таблицы, пакетные запросы и прочие привычные возможности

  • В качестве источника выборки возможно использовать коллекции в памяти (например, в запросе можно объединить таблицей в БД и массивом в памяти)

  • Поддерживаются комментарии внутри запроса

  • В настоящий момент язык запросов может работать с СУБД MS SQL и PostgreSQL, а также с файловой БД

Модульность

Вводя в новую технологию модульность, мы преследовали три основные цели:

  • Разделение крупных решений на части для повторного использования и удобной разработки

  • Развитие инструментов библиотечной разработки

  • Развитие механизма расширений

В новой технологии предполагается создавать проекты трёх видов:

  • Приложение – законченная функциональность для автоматизации бизнеса

  • Библиотека – способ разделения объектов для повторного использования

  • Расширение – способ добавить и/или переопределить функциональность приложения и/или библиотеки

Приложения и библиотеки могут использовать объекты из других библиотек. При этом объекты из других библиотек не встраиваются в использующий их проект. Вместо этого в проекте определяется зависимость от библиотеки определенной версии.

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

Пользовательский интерфейс

Основные черты пользовательского интерфейса, используемого в новой технологии:

  • Ориентирован на привычное использование в веб-среде и на мобильных устройствах

  • Легок в восприятии и прост в освоении

  • Использует современные UI/UX подходы интерфейсов приложений

  • Полная асинхронность, позволяющая получить максимальную «отзывчивость» интерфейса

Пример нового интерфейса:

img-00.png

Как уже сказано, интерфейс ориентирован на использование в веб-среде. В частности, реализована интеграция с адресной строкой браузера:

img-02.png

Есть набор стандартных элементов для разработки веб-приложений, например, для загрузки файлов:

img-03.png

При разработке интерфейса приложений используется компонентый подход:

  • Интерфейс строится из компонентов

  • Компонент – это переиспользуемый элемент интерфейса

  • Технология предоставляет стандартные компоненты

  • Разработчик приложения (или библиотеки) может создать свои компоненты

из стандартных и использовать их в разных частях приложения

Примеры прикладных компонентов:

  • Компонент ввода почтового адреса

  • Панель ссылок

  • Карточка товара в интернет-магазине

Высокая «динамичность» интерфейса достигается за счет вычисляемых свойств компонентов. Например, можно задать свойства компонентов в дизайн-тайме через любое выражение встроенного языка:

  • КнопкаЗаписать.Доступность: = Форма.ДанныеИзменены

  • Аватар.Видимость: =ПолучитьТекущегоПользователя() != Неопределено

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

«Облачность из коробки»

В новой технологии все инструменты для разработки приложений и для их администрирования доступны в облаке, а работать с ними можно прямо в браузере. Облако, в котором исполняются инструменты, развернуто на базе приложения-сервера, также являющегося составной частью новой технологии (сервер работает на мощностях 1С); сервер также доступен для развертывания on-premise. В обоих вариантах администрирование и разработка приложений производится через один и тот же интерфейс – Панель управления. Панель управления также разработана на новой технологии.

Основные функции Панели управления:

  • Управление приложениями

  • Управление пользователями

  • Запуск разработки в браузере

  • Многопользовательская работа с разделением доступа к приложениям и проектам

  • Групповое обновление приложений

Главная страница Панели управления:

img-04.png

Среда разработки

Среда разработки запускается в браузере, не требует установки и настройки и бесшовно интегрирована с Панелью управления. Среду разработки для выбранного приложения можно запустить прямо из Панели управления. Исходный код приложений хранится на сервере (в облаке или on-premise).

Вот как выглядит среда разработки в браузере:

img-05.png

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

Для выбранного в навигаторе объекта отображается палитра свойств:

img-06.png

Есть редактор компонентов пользовательского интерфейса с превью:

img-07.png

Доступна отладка приложений:

img-08.png

Работа на мобильных устройствах

Сразу «из коробки» поддерживается работа веб-клиента в мобильных браузерах. Также есть возможность собрать клиент в виде нативного мобильного приложения. Нативное мобильное приложение (в отличие от веб-клиента) может использовать специфические возможности мобильных устройств – работа со встроенной камерой, с модулем геопозиционирования, биометрией, уведомлениями и т.п. 

Рассказать друзьям: