1С с {{усами}}

21.02.22

Интеграция - WEB-интеграция

Не так давно товарищ спросил, а можно ли придумать что-то, чтобы не писать одинаковые названия и описания товаров, а просто «р-р-раз!» и всё готово: чтобы из свойств товара и чего-то там ещё всё само скомпоновалось. Сразу на ум пришло слово «шаблонизатор» из мира web. Далее, что из этого получилось.

Файлы

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

Наименование Скачано Купить файл
1С с {{усами}}:
.epf 7,03Kb
0 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

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

Оформить подписку и скачать решение со скидкой

Так как с самого начала хотел реализовать всё локально, то искал что-то на JavaScript, чтобы прикрутить к «ПолеHTMLДокумента». После недолгих раздумий и короткого теста в блокноте выбор пал на «Mustache». Один файл JS — для первых проб годится.

Сохранил скрипт в текстовый макет, динамически формируем html-документ и отдаём его на съедение в ПолеHTMLДокумента, всё работает, всё отображается, но как-то это всё скучно. И тут я вспомнил про облачные функции Яндекс!

Всё настроил, далее короткая инструкция, исходя из того, что регистрация выполнена и мы находимся в «Cloud Functions»:

  1. Создаём новую функцию, даём имя и выбираем среду «node.js».
  2. Из редактора всё удаляем и копируем туда исходник нашего шаблонизатора, удаляем последнюю строчку «export default mustache;».
  3. Далее пишем вызов нашей функции:
module.exports.handler = async function (event, context) {
    return {
        statusCode: 200,
        body: mustache.render(event.template, event.param),
    };
};
  1. Нажимаем «Создать версию». Готово, идём тестировать!
  2. На закладке «Тестирование» пишем:
{
    "template": "{{name}} eat {{fruit}}",
    "param": {"name": "John", "fruit": "apple"}
}
  1. Видим, что всё работает внутри Яндекса.
  2. Делаем функцию публичной, чтобы на время теста было проще обращаться.

На этом настройка облачной функции закончена и начнём пользоваться ей из 1С.

  1. На форме нам необходимо: команда («Шаблонизировать»), строка для вставки шаблона («Шаблон») и таблица значений («ПараметрыШаблона») для указания параметров шаблона. Колонка «Значение» имеет составной тип (Строка, Число, Булево).
  2. Вызываем функцию с передачей в неё шаблона и параметров, упакованных в строку JSON.
  3. Получаем ответ и наслаждаемся результатом) 

Вот весь код обработки:

&НаКлиенте
Процедура Шаблонизировать(Команда)
	
    // Необходимо указать идентификатор своей функции
    ИдентификаторФункции = "";

    Соединение = Новый HTTPСоединение("functions.yandexcloud.net",,,,,,Новый ЗащищенноеСоединениеOpenSSL());        
    Запрос = Новый HTTPЗапрос("/" + ИдентификаторФункции + "?integration=raw");
    Запрос.УстановитьТелоИзСтроки(СформироватьJSON());
    Результат = Соединение.ОтправитьДляОбработки(Запрос);
    ВыводРезультата = Результат.ПолучитьТелоКакСтроку();
	
КонецПроцедуры

&НаКлиенте
Функция СформироватьJSON()
	
	Данные = Новый Структура();
	Данные.Вставить("template", Шаблон);
	Данные.Вставить("view", ПолучитьСтруктуру());
	
	ЗаписьJSON = Новый ЗаписьJSON;			
	ЗаписьJSON.УстановитьСтроку();
	ЗаписатьJSON(ЗаписьJSON, Данные);
	
	Возврат ЗаписьJSON.Закрыть();
	
КонецФункции

&НаСервере
Функция ПолучитьСтруктуру()
	
	НоваяТаблица = ПараметрыШаблона.Выгрузить();
	ВыходнаяСтруктура = Новый Структура;
	Для Каждого СтрокаТЗ Из НоваяТаблица Цикл
		ВыходнаяСтруктура.Вставить(СтрокаТЗ.Имя, СтрокаТЗ.Значение);
	КонецЦикла;
	
	Возврат ВыходнаяСтруктура; 
	
КонецФункции

Остаётся добавить ссылки на источники:

1. Serverless (Faas) в 1С — большая статья про serverless от Яндекс и источник кода вызова облачной функции. Спасибо автору!

2. Mustache на GitHub — исходник брать здесь.

Протестировано на версии платформы 8.3.17.1549.

P.S.

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    6421    4    3    

7

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    21512    30    24    

24

SALE! 15%

WEB-интеграция Программист Бизнес-аналитик 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

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

17280 14688 руб.

20.12.2024    3735    18    2    

20

WEB-интеграция 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Оптовая торговля, дистрибуция, логистика Россия Платные (руб)

В расширении реализован механизм интеграции между системой поставщика и Личным кабинетом СДТ. Реализован обмен заказами и реализациями (накладными), предусмотрено отслеживание статусов документов. Расширение предназначено для 1С:УТ 11.4.

35856 руб.

27.11.2024    2013    1    0    

1

Оптовая торговля WEB-интеграция Бюджетный учет Обмен с ГосИС Бухгалтер Пользователь 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Государственные, бюджетные структуры Россия Бухгалтерский учет Управленческий учет Платные (руб)

Обмен данными с "Порталом поставщиков" zakupki.mos.ru Москвы и Московской области с целью создания оферт для закупок государственными учреждениями. Модуль устраняет рутину, минимизирует ошибки и помогает выигрывать больше закупок. Работает строго по требованиям 44-ФЗ.

14400 руб.

13.12.2016    41127    54    39    

37
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TMV 3 21.02.22 17:55 Сейчас в теме
Кажется, в УТ11 и так отличный конструктор наименований товаров.
Для отправки сообщения требуется регистрация/авторизация