В современной разработке на платформе 1С:Предприятие язык JavaScript находит широкое применение. Разработчики используют его как для построения интерактивных интерфейсов, недоступных стандартным элементам формы, так и для фоновой обработки данных, рендеринга графиков или интеграции с внешними микросервисами. Разберем подробно, где именно в типовых конфигурациях применяется JavaScript, а также какие способы интеграции и взаимодействия между 1С и JS доступны разработчику.
Если мы обратимся к типовым конфигурациям на базе Библиотеки стандартных подсистем (БСП) — таким как 1С:ERP, 1С:Комплексная автоматизация, 1С:Управление торговлей, 1С:УНФ и 1С:Документооборот, мы обнаружим JavaScript в следующих механизмах:
ПолеHTMLДокумента отображаются интерактивные карты для построения маршрутов доставки, геозонирования и визуализации адресов клиентов.1С:Документооборот с помощью JS-библиотек строится интерактивная визуализация маршрутов согласования документов и организуется предпросмотр файлов.Основным механизмом внедрения JavaScript в пользовательский интерфейс 1С является элемент формы ПолеHTMLДокумента. Он позволяет подключать сторонние библиотеки (например, Chart.js для построения диаграмм или highlight.js для подсветки синтаксиса кода).
Рассмотрим, как организуется обмен данными между платформой 1С и скриптом на веб-странице:
defaultView (или parentWindow), передавая параметры, предварительно сериализованные в формат JSON.location.href = "v8action://myEvent?data=" + encodeURIComponent(data)). На стороне 1С этот переход отслеживается через обработчик события ПриНачалеНавигации элемента формы, где разработчик отменяет переход (устанавливая Отказ = Истина) и считывает переданные параметры.В среде Windows под 32-разрядными клиентами для быстрого вычисления JavaScript-выражений или разбора специфических форматов часто применялся системный COM-объект HTMLFile. Посмотрим на пример кода, позволяющего выполнить скрипт напрямую из встроенного языка 1С:
Функция ВыполнитьКодJavaScript(ТекстСкрипта)
ХТМЛ = Новый COMОбъект("HTMLFile");
ХТМЛ.Open("text/html");
ХТМЛ.Write("<script type=""text/javascript"">
|var ХТМЛ;
|" + ТекстСкрипта + "
|</script>");
Документ = ХТМЛ.documentElement.document;
Документ.script.ХТМЛ = ХТМЛ;
Возврат Документ.script;
КонецФункции
Важное ограничение: данный способ работает исключительно на платформе Windows и не функционирует на сервере 1С под управлением Linux, а также может вызывать сбои в 64-битных рабочих процессах.
Платформа 1С:Предприятие штатно поддерживает создание внешних компонент по технологии Native API непосредственно на языке JavaScript для работы в среде веб-клиента. Разработчик подготавливает архив с кодом компоненты и файлом манифеста manifest.xml, после чего подключает его штатным методом:
ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечати", "MyJSComponent", ТипВнешнейКомпоненты.Native);
Это открывает прямой доступ к браузерным интерфейсам, работе с веб-сокетами, криптографией и локальными устройствами без необходимости компиляции C++ библиотек.
Когда требуется выполнить ресурсоемкую обработку, манипуляции со сложными форматами файлов (например, прямая генерация Word/Excel без установленного MS Office) или использовать пакеты экосистемы npm на сервере, применяют среду выполнения Node.js.
Рассмотрим два подхода к интеграции:
КомандаСистемы("node.exe C:\Scripts\generator.js");
Такой вызов блокирует выполнение текущего потока до завершения процесса ОС и запускает виртуальную машину V8 заново на каждый вызов, что создает накладные расходы по времени.
Сервис на Node.js запускается как постоянный фоновый веб-сервис. Из кода 1С разработчик отправляет асинхронные или синхронные запросы с помощью встроенных объектов HTTPСоединение и HTTPЗапрос, передавая структурированные данные через JSON. Это обеспечивает максимальную производительность, масштабируемость и полную кроссплатформенность.
При проектировании решений с использованием JavaScript важно учитывать ограничения платформы:
ПолеHTMLДокумента в зависимости от операционной системы и типа клиента использует Chromium Embedded Framework (CEF) или WebKit. Необходимо тестировать используемый стандарт ECMAScript на всех клиентских рабочих станциях.