Рендеринг нестандартных интерфейсов на стороне сервера: «Элемент» в качестве бекенда для HTMX

29.01.25

Разработка - Работа с интерфейсом

Как быстро реализовать на 1С:Элемент любой нестандартный интерфейс, используя инструмент HTMX и серверный рендеринг.

Рендеринг нестандартных интерфейсов на стороне сервера: «Элемент» в качестве бекенда для HTMX

 

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

 

Рисунок 1 – Пример интерфейса приложения на «1С:Элемент»

 

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

Забегая вперед, наиболее удачным для «мира 1С» оказалось совместное использования Элемента с JavaScript библиотекой HTMX. При наиболее используемом подходе к разработке веб-сайтов клиент получает данные в формате JSON и должен самостоятельно управлять их отображением на странице. После получения JSON контента разработчику нужно вручную преобразовать эти данные в конечный HTML. При всей гибкости и удобства современных инструментов фронтенд разработки, написания клиентского кода в таком случае потребует дополнительных затрат и, в большинстве случаев, разработка ведется на отличной от серверной части технологии.

 

Какой подход предлагает HTMX?

Вместо того чтобы получать данные в формате JSON и затем преобразовывать их в HTML, сервер возвращает уже готовые HTML-фрагменты.  За счет того, что возвращается не весь контент, а только отдельный компонент, получается привычное современным пользователям одностраничное приложение. На клиенте нужно только указать три свойства:

  1. При каком событии делать запрос
  2. По какому адресу обращаться за HTML фрагментом
  3. В каком месте DOM дерева разместить ответ

Эту задачу и решает HTMX, который с помощью лаконичного синтаксиса позволяет управлять этими свойствами напрямую из HTML разметки.

 

 

Рисунок 2 – Пример ответа сервера при работе с HTMX

 

HTMX – это современная легковесная JavaScript библиотека, которая позволяет управлять поведением AJAX через атрибуты у узлов HTML.

hx-get – Выполняет GET запрос по указанному адресу, по умолчанию заменяет телом ответа содержимое тега, из которого вызывался

hx-target – Назначает элемент, у которого произойдет замена, может быть как классом так и идентификатором

hx-swap – «Режим» замены, заменяет только содержимое тега или тег целиком

Только с помощью перечисленных атрибутов можно реализовать уже множество элементов для взаимодействия с веб-страницей. Использование такого подхода решает главную проблему SSR (Рендеринг на стороне сервера) приложений – малая динамичность и необходимость перерисовывать всё содержимое HTML при взаимодействии. Такие приложения могут быть более производительными, поскольку не требуют дополнительных вычислений на стороне клиента, и ощущаются отзывчивыми.

 

Рисунок 3 – Пример тега с атрибутом HTMX

 

 

Почему Элемент отлично сочетается с HTMX

 

Рисунок 4 – Пример формирования компонента интерфейса в «Элементе»

 

  1. Необходимые нам http методы поднимаются в «1 клик» средствами сервера Элемента
  2. Встроенные механизмы авторизации и аутентификации работают из коробки
  3. Синтаксис языка, в частности для работы со строками, очень удобен для работы с HTMX
  4. Возможность определения нескольких «интерфейсов» как объекта 1 проекта.

 

Рисунок 5 – Пример альтернативного интерфейс главного экрана, реализован с помощью HTMX

 

Рисунок 6 – Альтернативный интерфейс работы с табличной частью объекта «Заявка на мастер класс»

 

 

Триггеры запросов

Атрибут hx-trigger в HTMX позволяет разработчикам определять, какие события на стороне клиента будут инициировать ответы от сервера.

Помимо привычных событий, например, click или load, HTMX позволяет отправлять с сервера произвольные события.

Для того чтобы вызвать событие на клиенте, нужно при формировании ответа указать идентификатор события в заголовке «Hx-Trigger»

 

Рисунок 7 -Пример ответа от сервера с триггером «updateTable» в заголовке

 

Это означает что мы можем привязать любой запрос на наше событие «updateTable». Это позволяет создавать сложные взаимодействия между компонентами, где выполнение 1 действия влияет сразу на несколько компонентов.

Например, при выборе продукции, обновляется не только кнопка «добавить», но и актуализируется список выбранной продукции:

 

 

Рисунок 8 – Пример взаимодействия между разными частями DOM дерева

 

 

Минимальное взаимодействие с JavaScript

JavaScript это очень мощный инструмент, совместное использование которого с другими технологиями является частью множества успешных продуктов. Однако, если речь идёт о создании нового приложения, не всегда стоит расширять список используемых технологий только ради использования новых технологий – это может потребовать дополнительных компетенций внутри команды и, как следствие, затрат на реализацию приложения.

При подходе, который мы рассматриваем сегодня, прикладной разработчик продолжает писать весь код на встроенном языке «1С:Предприятие.Элемент». Мы любим синтаксис языка Элемента, поэтому если решаемая задача позволяет ограничиться только его использованием при прочих равных – HTMX позволит не прибегать к использованию JavaScript вовсе. Однако и не ограничивает проект технически – если специфический JavaScript код всё-таки понадобится, его можно также встроить в проект.

Это позволяет работать с интерфейсом, например, с помощью такого синтаксиса:

 

Рисунок 9 – Алгоритм маршрутизации на Элементе

 

Рисунок 10 – Метод обработки добавления продукции в заявку

 

Рисунок 11 – Метод отображения доступных желаемых дат

 

Взаимодействия пользователя со страницей на HTMX используют сервисы, которые предполагают тарификацию в облаке 1cmycloud, этот фактор стоит учитывать при использовании таких инструментов. Согласно предварительным условиям, тарификация сервиса будет начисляться по времени активного использования сервиса, что также можно учесть в архитектуре приложения чтобы сократить время выполнения http сервисов (Например, выполнять популярные и долгие операции с помощью механизма запланированных заданий заранее)

Мы получаем стек, который сочетает в себе всю мощь и скорость разработки от ORM модели «1С:Предприятие» (Справочники, Документы, Регистры, Запросы), удобный, современный язык «Элемента»: функциональные типы, контрактное программирование, гибкость современных веб приложений и, самое главное, свободу выбора: разработчик сможет сочетать формы с HTMX вместе с «родными» формами.

1C:Элемент Пользовательский интерфейс Личный кабинет

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55424    17    23    

43

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63819    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    19697    27    6    

43

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    21728    mrXoxot    44    

128

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    10877    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    17938    1225    elcoan    53    

125

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    12633    167    acces969    31    

126
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. NoRazum 29 30.01.25 09:05 Сейчас в теме
@ВПроекте

что это такое?

подход интересный
2. deplatoon 1 30.01.25 11:29 Сейчас в теме
(1) в языке Элемента есть модификаторы видимости, по умолчанию объект и методы не видны из других подсистем/модулей.

Такую аннотацию можно задать как объекту, так и каждому модулю - такой некий аналог "Экспорт" из платформы
@ВПодсистеме - метод видно за пределами объекта, но только в рамках подсистемы
@ВПроекте - метод видно из других подсистем
@Глобально - метод/объект видно везде, даже за пределами проекта. Зачем? Потому что в Элементе существуют библиотеки и межпроектное взаимодействие поэтому это вот туда
Оставьте свое сообщение