Как запустить веб-клиент 1С в окне корпоративного сайта?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Использование iframe для встраивания веб-клиента

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

Настройка безопасности и заголовков (CSP)

Современные веб-браузеры активно защищают пользователей от атак типа кликджекинг (Clickjacking) и по умолчанию строго блокируют загрузку страниц во фреймах со сторонних доменов. Ранее разработчики использовали для обхода этого ограничения заголовок X-Frame-Options с параметром разрешенного сайта, однако сейчас этот метод устарел и часто игнорируется браузерами (Chrome, Edge, Safari).

Рассмотрим современный и надежный подход. На веб-сервере (например, IIS или Apache), где опубликована ваша база 1С, необходимо прописать правило Content-Security-Policy (CSP). Посмотрим на пример заголовка, который разрешит загрузку фрейма:

Content-Security-Policy: frame-ancestors 'self' адрес-вашего-сайта;

После добавления этого правила веб-сервер 1С сообщит браузеру, что загрузка интерфейса внутри iframe на указанном корпоративном домене является легитимной.

Организация бесшовной авторизации

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

  1. Использование протокола OpenID, если на вашем корпоративном сайте или портале уже настроен свой единый провайдер авторизации (SSO).
  2. Настройка сквозной Windows-аутентификации (Active Directory). Это идеальный вариант для закрытых внутрикорпоративных сетей.
  3. Передача учетных данных непосредственно в URL фрейма. Вы можете передать параметры N (имя пользователя) и P (пароль).

Посмотрим на пример формирования URL с явной передачей параметров для автоматического входа:

src="адрес_вашей_базы/ru_RU/?N=ИмяПользователя&P=Пароль"

Важно: Передача логина и пароля в открытом виде (даже внутри фрейма) считается менее безопасным методом, поэтому используйте его только при наличии защищенного HTTPS-соединения и во внутренних сетях.

Адаптация интерфейса 1С (режим EmbeddedWorkplace)

Если мы просто загрузим веб-клиент, он откроется со своими стандартными желтыми панелями, крупными заголовками, меню функций и панелью открытых окон. Это сразу разрушит иллюзию нативного сайта. Чтобы интерфейс выглядел гармонично, воспользуемся специальными параметрами запуска платформы.

Добавим в строку адреса параметр MainWindowsMode со значением EmbeddedWorkplace. Этот параметр дает платформе команду работать в режиме встроенного рабочего места, убирая все лишние навигационные элементы. Дополнительно разработчику 1С потребуется зайти в конфигуратор и адаптировать саму форму, убрав из нее стандартные командные панели, чтобы оставить только суть рабочего места.

Взаимодействие между сайтом и 1С (Embedded WebClient API)

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

Используя специальную библиотеку webclient1ce.js и объект WebClient1CE, веб-разработчик может отправлять команды внутрь платформы 1С с помощью стандартного JS-метода postMessage(). В свою очередь, внутри 1С мы можем перехватывать эти команды. Посмотрим, как в 1С подключить прослушивание сообщений от сайта:

ОкноВнешнегоСайта.ПодключитьОбработчикСообщений("ИмяМоейПроцедурыОбработчика");

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

Особенности лицензирования при работе во фрейме

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

  1. Если вы организуете взаимодействие с сайтом через HTTP-сервисы (нативные веб-технологии), то лицензии 1С расходуются исключительно пулом фоновых соединений сервера. Это максимально экономный подход.
  2. Если вы открываете полноценный веб-клиент 1С в окне сайта через iframe, то каждая открытая вкладка каждого пользователя забирает одну клиентскую лицензию 1С.

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

← На главную