Интеграция учетных систем с внешними веб-ресурсами становится все более востребованной задачей. Платформа 1С:Предприятие, начиная с версии 8.3.16, предоставляет штатный механизм для бесшовного встраивания веб-клиента в интерфейс любого сайта. Однако при реализации этой задачи разработчики часто сталкиваются с тем, что не могут найти ключевой компонент интеграции — файл webclient1ce.js. Разберем подробно, как работает этот механизм, где физически (или виртуально) находится файл и как настроить взаимодействие между сайтом и 1С.
Рассмотрим ситуацию: вы прочитали документацию, узнали о существовании Embedded WebClient API, но при попытке найти файл webclient1ce.js в папке установленной платформы или в каталоге публикации базы на веб-сервере терпите неудачу. Проанализируем причину этого явления.
Важно понимать, что webclient1ce.js не является статическим файлом, который копируется на диск при установке. Этот скрипт генерируется динамически модулем расширения веб-сервера 1С (для IIS или Apache) в момент обращения к нему. Чтобы получить доступ к этому файлу, необходимо выполнить следующие условия:
Путь к файлу всегда формируется по следующему шаблону: http://имя_сервера/имя_базы/scripts/webclient1ce.js. Если вы перейдете по этой ссылке в браузере после публикации, система отдаст вам сформированный JavaScript-код. Если же вы попытаетесь найти этот файл через проводник Windows в папке wwwroot, вы его там не увидите.
Выясним, как правильно подключить этот механизм к вашему веб-сайту. Для начала в HTML-коде страницы, где предполагается отображение 1С, необходимо создать контейнер (обычно это элемент div) и подключить сам скрипт. Рассмотрим пример кода:
<!-- Контейнер для веб-клиента -->
<div id="1c-web-client-container" style="width: 100%; height: 600px;"></div>
<!-- Подключение динамического скрипта из вашей публикации -->
<script src="https://myserver.com/mybase/scripts/webclient1ce.js"></script>
После загрузки данного скрипта в глобальной области видимости браузера (объект window) становится доступен специальный объект WebClient1CE. Именно он является "мостом" между сайтом и платформой.
Проанализируем процесс инициализации объекта. Нам необходимо указать, в какой элемент встроить 1С и какие параметры использовать. Разберем по шагам типичный сценарий инициализации в JavaScript:
var webClient = new WebClient1CE();
// Параметры инициализации
var connectionOptions = {
container: document.getElementById("1c-web-client-container"),
webClientURL: "https://myserver.com/mybase/?MainWindowsMode=EmbeddedWorkplace",
onStart: function() {
console.log("Веб-клиент 1С успешно загружен и готов к работе");
},
onMessage: function(message) {
console.log("Получено сообщение от 1С: " + message);
alert("1С передала данные: " + message);
},
onEnd: function() {
console.log("Сеанс 1С завершен");
}
};
// Запуск встраивания
webClient.initialize(connectionOptions);
Обратим внимание на параметр MainWindowsMode=EmbeddedWorkplace в URL. Это критически важная настройка. Если ее не указать, 1С откроется внутри вашего сайта со всеми стандартными панелями (панель разделов, заголовок, системные команды), что будет выглядеть громоздко. Режим EmbeddedWorkplace (Встроенное рабочее место) убирает все лишние элементы интерфейса, оставляя только рабочую область формы, что позволяет органично вписать 1С в дизайн вашего сайта.
Рассмотрим, как организовать двусторонний обмен данными. Это самая полезная функция WebClient1CE.
1. Отправка данных из 1С на сайт:
В конфигурации 1С (в управляемых формах) используется объект ОкноВнешнегоСайта. Перед отправкой сообщения рекомендуется проверить, встроено ли приложение в сайт в данный момент. Посмотрим на пример кода на встроенном языке:
& Если Найти(СтрокаСоединенияИнформационнойБазы(), "WebClient") > 0 Тогда
Если ДоступноОкноВнешнегоСайта() Тогда
ОкноВнешнегоСайта.ОтправитьСообщение("ORDER_CREATED_ID_12345");
КонецЕсли;
& КонецЕсли;
Это сообщение будет перехвачено функцией обратного вызова onMessage, которую мы определили при инициализации в JavaScript на стороне сайта.
2. Отправка данных с сайта в 1С:
Для передачи данных внутрь 1С используется метод postMessage объекта WebClient1CE:
// Пример вызова из JS на сайте
webClient.postMessage("REFRESH_DATA");
Чтобы принять это сообщение в 1С, необходимо в модуле управляемого приложения или в модуле конкретной формы настроить обработчик ожидания или использовать специализированные события формы, предусмотренные платформой для интеграции.
Выясним причину, по которой интеграция может не работать, даже если скрипт webclient1ce.js загрузился. Основная проблема — политики безопасности современных браузеров.
Если ваш сайт находится на домене mysite.com, а 1С опубликована на 1c.server.local, браузер заблокирует взаимодействие между iframe и основной страницей из-за политики Same-Origin Policy. Для решения этой проблемы необходимо:
Access-Control-Allow-Origin с адресом вашего сайта.iframe, необходимо в файле default.vrd (в каталоге публикации 1С) настроить параметры сессии.Разберем пример правки файла default.vrd для обеспечения работы в современных браузерах (Chrome, Safari):
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/mybase"
ib="Srvr=Server1C;Ref=mybase;">
<webClient cookieSameSite="None" secureConnection="true" />
</point>
Важно: Установка cookieSameSite="None" требует обязательного использования протокола HTTPS. На обычном HTTP такая связка работать в современных браузерах не будет.
Мы проанализировали механизм работы Embedded WebClient API. Помните, что файл webclient1ce.js — это динамический ресурс. Не пытайтесь найти его в дистрибутивах, просто обращайтесь к нему по адресу вашей публикации. Правильное использование объекта WebClient1CE вместе с настройкой default.vrd и режима EmbeddedWorkplace позволяет создавать мощные гибридные приложения, где учетная логика 1С бесшовно интегрирована в современный веб-интерфейс.