Универсальный шаблонизатор HTML

19.09.16

Разработка - Инструментарий разработчика

Генерация HTML кода, на основе шаблонов в стиле шаблонизаторов AngularJS / Twig и подобных. Поддержка Windows / Linux

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Шаблонизатор HTML
.epf 9,90Kb ver:1.0.0
88
88 Скачать (1 SM) Купить за 1 850 руб.

Кто сталкивался с созданием HTML из 1С, знают, какая это боль. Но если обратиться к веб программированию, то там схожую проблему решили созданиям шаблонизаторов, которые с легкостью позволяют выдавать HTML код, на основе красивых, человекочитаемых шаблонов. Помимо 1С я очень много работаю с JS и в частности с фронтенд фреймворками (Angular например), после которых задача создания HTML в 1С заставила меня плакать от того, как здесь все плохо. Вдохновившись и погуглив я нашел решение //infostart.ru/public/352812/ , но все же это не то, что я хотел, и в итоге родилась эта обработка, которая с лекостью генерирует HTML, особо не заморачиваясь с созданием шаблонов для генерации.

Разработка пригодится тем, кто генерирует любой html из 1Ски, будь то красиво оформленные почтовые сообщения или вывод страницы через http сервис, границы применения ее очень широки. Ее же я использую для создания оформленных в корпоративном стиле pdf документов, т.е. сначала получаем html, а потом конвертируем в pdf и отправляем клиенту.

Вывод данных.

Для того, чтобы вывести значение переменной в HTML, достаточно написать примерно такой шаблон

<h1> Добрый день! Сегодня, {{ ТекущаяДата() }} <h1>

Что приведет к 

<h1> Добрый день! Сегодня, 19.08.2016 14:52:32 <h1>

Так можно выводить абсолютно любую информацию, любые глобальные переменные и тд, а для сосбтвенных переменных нужно в функцию - компилятор шаблона передать структуру параметров, например

Параметры = Новый Структура("МояПеременная", 1);

Теперь если создать шаблон

У меня {{ МояПеременная }} яблоко.

На выходе будет

У меня 1 яблоко.

Циклы

{% Для й = 0 ПО 2 Цикл %}

Итерация №{{й}}

{% КонецЦикла; %}

Выведет

Итерация №0

Итерация №1

Итерация №2

Условия

{% Если Истина Тогда %}

<h1> Истина </h1>

{% Иначе %}

<h1> Ложь</h1>

{% КонецЕсли; %}

Выведет

<h1> Истина </h1>

В целом, между тегами {% %} можно исполнять любой код будь-то присвоение переменной или еще что-нибуть, например

{% a = 1; %}

{{a}}

Выведет

1

Обработка HTML Шаблонизаторы

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159652    875    399    

862

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    7857    58    23    

69

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

9360 руб.

17.05.2024    23488    68    45    

117

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8500 руб.

10.11.2023    10460    36    25    

61

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15426    35    7    

70

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

4800 3120 руб.

14.01.2013    188042    1140    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17317    6    32    

42

Инструментарий разработчика Программист Платные (руб)

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

1800 руб.

21.02.2023    7716    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. json 3350 19.09.16 23:45 Сейчас в теме
Согласен, шаблонизаторы в вебе - штука крутая. Побольше бы таких статей с интересными практиками из других языков.
Я сталкивался с шаблонизатором Blade в Laravel. Тоже был впечатлен его возможностями. В этом, наверное, тоже есть еще много всего хорошего, типа вывода одного шаблона внутри другого и т.д.
Очень полезно было бы еще описать сферу применения этой технологии в 1С, т.к. не всем читателям она сразу понятна.
2. Fragster 1151 20.09.16 10:35 Сейчас в теме
Я сделал целиком на основе XML, чтобы уже на этапе сохранения можно было проверить структурную правильность http://infostart.ru/public/352812/ . Этот попроще для использования, и подходит не только для XML/HTML, а для любых строк. Но в данном случае получается смесь кода и данных, что не очень хорошо.
3. dj_serega 393 20.09.16 11:03 Сейчас в теме
(2) Fragster, Но никто не оценил :(
4. Fragster 1151 20.09.16 11:24 Сейчас в теме
(3) dj_serega, Ну почему, автор оценил (см. вступление). Наверное. Только среди скачавших его нет :)
5. ArchLord42 83 20.09.16 12:37 Сейчас в теме
(4) Fragster

"Но в данном случае получается смесь кода и данных, что не очень хорошо"

Почему это не хорошо?)
Бизнес логика туда не пихается, только код, отвечающий за вывод данных, можно считать, что это VIEW из паттерна MVC.

Ваша разработка очень напоминает шаблонизацию на основе XSLT, которую еще не так давно можно было часто встретить в мире веб программирования, но ее минус в том, что порог вхождения для написания шаблонов немного выше получается, а на больших объемов это превращается в очень нечитабельную структуру, конечно проверки и некоторая строгость это хорошо, но на практике не всем она нужна, в итоге появились Twig \ Blade и прочие, если говорить по PHP. А вообще это как форматы XML и JSON у каждого свое назначение.

Ну, а если вернуться к проверкам то их легко можно осуществить {{ ?(Пользователь = Неопределено, "Гость", Пользователь) }}

6. andy23 470 20.09.16 13:35 Сейчас в теме
Нужная штука! Только AngularJS это вроде как бы не шаблонизатор, фреймворк с MVC
7. ArchLord42 83 20.09.16 13:50 Сейчас в теме
(6) andy23, имеется ввиду, шаблонизация которая присутствует в ангуляре, собственного названия у нее нет.
8. vandalsvq 1587 21.09.16 14:06 Сейчас в теме
(7) обычно это называют просто биндинг данных., Строго говоря названия, другого кроме "связывания", и не выдумаешь.
Практического применения не так много, ну по крайней мере при одноразовом связывании. Неплохо было бы если бы шаблон работал действительно как ангулар, не перегружая страницу полностью. А отслеживая изменения и внося их точечно. Но увы, в 1С изменение переменной не отследить, если только не делать принудительную проверку (собственную функцию проверяющую изменения, вроде $apply в angular). Вот тогда применение можно сделать широким, вплоть до создания собственных html форм внутри 1С (а вот тут применение каждый сам пусть думает). Но это никак не побуждение к действию )))) это скорее размышления о возможности применения.
9. ArchLord42 83 21.09.16 19:58 Сейчас в теме
(8) vandalsvq, Вы не так поняли идею моей разработки :) В этом я виноват, что вообще упоминул ангуляр тут, потому, что кроме схожего синтаксиса тут с ним нет ничего общего

Биндингом это назвать нельзя, т.к. связываения тут попросту не происходит, бразуер \ поле HTML дока, попросту получает сразу же готовые данные, они без понятия что между тегами <h1> </h1> было какое то выражение типа {{userName}}. При использовании ангуляра же браузер получает <h1> {{userName }} </h1> и потом, после загрузки скриптов когда начинает работать JS он (JS) связывает userName с переменной, userName текущего скоупа или вышестоящего скоупа и рендерит значение этой переменной в браузер.

Моя разработка имеет общее с бекенд языками PHP \ Ruby \ Python , т.е. шаблонизаторами, реализованными их средставми, там нет понятия биндинг ибо его просто там нет, зато есть понятие рендер, вот оно подходит к данной теме.
RozalievAndrey; +1 Ответить
11. andy23 470 22.09.16 07:59 Сейчас в теме
(7) я понял, кстати если нужен не просто вывод, а интерактивная работа с html в 1С без слез, то это тоже можно организовать. Ангуляр не взлетит, а knockout.js взлетит. Вот например как здесь Получается эдакое одностраничное приложение внутри 1С, там есть и биндинг и др. полюшки.
10. Evil Beaver 8244 21.09.16 23:43 Сейчас в теме
Я вот тут как раз подбираю шаблонизатор для 1Script и тут вы, такой прямо в тему! :)

А как у него с производительностью?
12. ArchLord42 83 22.09.16 08:51 Сейчас в теме
(10) Evil Beaver, честно говоря не замерял, т.к. даже на больших тестовых шаблонах, "на глаз" задержки было не видать.

А так скорость зависит от производительности функций Найти()\СтрЗаменить()\Сред() , которые используются при парсинге.

Ну а рендер готового HTML по скорости должен быть близок к нативному коду, но сильно зависит от написанного шаблона, т.е.
такие конструкции примерно как :
{% Для СтрокаТЗ ИЗ ТЗ Цикл %}
{{ СтрокаТЗ.Заказ.Автор.Сотрудник.Контрагент.Наименование }}
{% КонецЦикла; %}
скорости работы явно не прибавят.
13. JohnyDeath 302 22.09.16 08:55 Сейчас в теме
(12) Evil Beaver намекает на то, чтобы перевезти этот проект на 1Script вот сюда: https://github.com/oscript-library (или сразу сюда: https://github.com/oscript-library)
;)
14. maxx 996 14.10.16 20:35 Сейчас в теме
(12) вопросы
1.) Как будет выглядеть конструкции для создания таблиц с определенным кол- вом колонок и строк
2.) Как весь этот подход вписать в страницы уже работающего сайта на CMS , т.е. чтобы стиль, шрифты и т.п. вписались нормально в дизайн
15. ArchLord42 83 15.10.16 08:22 Сейчас в теме
Простейший пример вывода таблицы
<div class="table">
  
  <div class="row header">
    <div class="col">Артикул</div>
    <div class="col">Наименование</div>
    <div class="col">Количество</div>
  </div>
  
  {% Для Каждого СтрокаТЗ ИЗ Таблица %}
  <div class="row">
    <div class="col">{{СтрокаТЗ.Артикул}}</div>
    <div class="col">{{СтрокаТЗ.Наименование}}</div>
    <div class="col">{{СтрокаТЗ.Количество}}</div>
  </div>
  {% КонецЦикла; %}
  
</div>
Показать


2). Подключить CSS с сайта и оформить таблицу в том виде, в котором это было предусмотрено на сайте.
16. vec435 17 26.10.16 11:26 Сейчас в теме
для неинтерактиной обработки - RegExp
17. fuxic 298 29.10.16 21:36 Сейчас в теме
велосипед красивый, но...
есть стандарт XSLT для HTML/XML)) зачем усложнять своим синтаксисом? шаблонизатор ангулара/кендо пихать в 1с? ножом по сердцу
более того есть стандартные библиотеки скриптов конверсии и красивые стили, которые потянет даже встроенный в 1с хтмлбраузер
18. ArchLord42 83 30.10.16 05:52 Сейчас в теме
(17) fuxic, комменты выше читали?
Я уже писал, что XSLT объективно не далеко самый удобный стандарт, генерация даже простого шаблона XSLT, потребует гораздо больше усилий, чем использования шаблонизаторов + плохая читабельность больших шаблонов.
Да и это не мой синтаксис, взят он, как вы уже заметили из веб ориентированных ЯП
XSLT кстати, если судить по вашему комментарию тоже велосипед и усложняет все своим синтаксисом, потому что пришел он от туда же, просто в данный момент поддерживается нативно 1Ской.
Несколько лет назад в вебе было модно юзать XSLT, но потом он умер(в году так 2010) из-за причин, которые я уже описал и начали появились велосипеды со своим синтаксисом, которые в итоге своего развития так усложняли все, что начинающему программисту было проще выучить 3 разных синтаксиса различных шаблонизаторов, чем XSLT.
А что вы думаете о JSON?) Придумали тут костыль, со своим синтаксисом, когда есть XML?)))
RozalievAndrey; chemezov; +2 Ответить
19. пользователь 23.12.17 15:55
Сообщение было скрыто модератором.
...
20. nbeliaev 835 29.10.20 09:38 Сейчас в теме
Автор, спасибо большое!
21. Dzenn 894 06.09.24 11:29 Сейчас в теме
Спасибо, приспособил твой шаблонизатор к своим нуждам буквально за 20 минут
Прикрепленные файлы:
Оставьте свое сообщение