Как передать параметры с внешнего сайта в веб-клиент 1С:Предприятие 8.3?

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

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

Разберем подробно, как устроен этот механизм в платформе «1С:Предприятие 8.3», какие существуют стандартные возможности передачи параметров через URL, как правильно обработать полученные данные в конфигурации и какие архитектурные нюансы следует учитывать при реализации таких переходов.

Способ 1. Использование параметра запуска C в командной строке URL

Платформа 1С поддерживает передачу произвольных строковых данных в сеанс с помощью параметра запуска /C (в строке URL веб-клиента он передается как GET-параметр C). Это штатный способ передачи пользовательских параметров при старте приложения.

Разберем структуру формирования адреса на стороне сайта:

  1. Базовый URL опубликованной базы данных 1С (например, http://myserver/mybase/).
  2. Параметр запуска ?C=ЗначениеПараметра.

Если требуется передать сложную структуру данных (например, ID пользователя и код карточки услуги), упакуем значения в строку с разделителями или в формат JSON, после чего обязательно выполним URL-кодирование (процентное кодирование специальных символов):

Пример URL: http://myserver/mybase/?C=UserID%3D12345%26ServiceID%3D98765

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

Посмотрим на пример кода в модуле управляемого приложения:


&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
	
	Если Не ПустаяСтрока(ПараметрЗапуска) Тогда
		ОбработатьВходныеПараметры(ПараметрЗапуска);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьВходныеПараметры(Знач СтрокаПараметров)
	
	// Предположим, параметры переданы в формате "Ключ1=Значение1;Ключ2=Значение2"
	МассивПар = СтрРазделить(СтрокаПараметров, ";");
	СтруктураПараметров = Новый Структура;
	
	Для Каждого Пара Из МассивПар Цикл
		ПозицияРазделителя = СтрНайти(Пара, "=");
		Если ПозицияРазделителя > 0 Тогда
			ИмяПараметра = Лев(Пара, ПозицияРазделителя - 1);
			ЗначениеПараметра = Сред(Пара, ПозицияРазделителя + 1);
			СтруктураПараметров.Вставить(ИмяПараметра, ЗначениеПараметра);
		КонецЕсли;
	КонецЦикла;
	
	// Выполняем логирование и открытие целевой формы
	Если СтруктураПараметров.Свойство("UserID") Тогда
		ЗафиксироватьВходПользователя(СтруктураПараметров.UserID);
	КонецЕсли;
	
	Если СтруктураПараметров.Свойство("ServiceID") Тогда
		ПараметрыОткрытия = Новый Структура("Ключ", ПолучитьСсылкуНаУслугу(СтруктураПараметров.ServiceID));
		ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", ПараметрыОткрытия);
	КонецЕсли;

КонецПроцедуры

Способ 2. Открытие конкретного объекта через навигационную ссылку (e1cib)

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

Рассмотрим, как формируется навигационная ссылка для веб-клиента:

  1. Для элемента справочника по его уникальному идентификатору (GUID):
    http://myserver/mybase/#e1cib/data/Справочник.Номенклатура?ref=8a1b2c3d4e5f...
  2. Для открытия формы специализированной обработки с параметрами:
    http://myserver/mybase/#e1cib/app/Обработка.КарточкаУслуги?ID=12345

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

Способ 3. Двухэтапная безопасная схема с одноразовыми токенами

Проанализируем риски прямой передачи данных в URL. Параметры, переданные открытым текстом в строке браузера, сохраняются в истории переходов, логах веб-серверов (IIS, Apache, Nginx) и могут быть перехвачены или подменены пользователем вручную. Если необходимо передавать чувствительные сведения или параметры авторизации, рекомендуется использовать связку HTTP-сервиса и одноразовых токенов.

Разберем по шагам алгоритм работы такой схемы:

  1. Сайт отправляет защищенный фоновый запрос к HTTP-сервису 1С, передавая все необходимые параметры (ID пользователя, данные сессии сайта, целевое действие).
  2. HTTP-сервис 1С генерирует уникальный ключ (GUID), сохраняет параметры во временный регистр сведений или кэш со сроком жизни в 1–2 минуты и возвращает этот ключ сайту.
  3. Сайт формирует ссылку на веб-клиент с полученным токеном: http://myserver/mybase/?C=ТОКЕН_GUID и открывает новое окно браузера.
  4. В процедуре ПриНачалеРаботыСистемы 1С считывает переданный токен, получает из регистра соответствующие данные, удаляет использованный токен (исключая повторный вход по этой же ссылке) и выполняет открытие целевого интерфейса.

Посмотрим на пример обработки одноразового токена при запуске сеанса:


&НаКлиенте
Процедура ПриНачалеРаботыСистемы()

	Если Не ПустаяСтрока(ПараметрЗапуска) Тогда
		ДанныеСеанса = ПолучитьДанныеПоТокенуНаСервере(ПараметрЗапуска);
		Если ДанныеСеанса <> Неопределено Тогда
			ОткрытьФорму(ДанныеСеанса.ИмяФормы, ДанныеСеанса.ПараметрыФормы);
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры

Важные технические особенности работы веб-клиента

При реализации открытия 1С с внешних веб-ресурсов необходимо учитывать следующие факторы:

  1. Расход пользовательских лицензий: Каждое открытие веб-клиента в новой вкладке или окне браузера может инициировать новый сеанс и занимать отдельную лицензию «1С:Предприятие», если не настроено повторное использование сеансов в рамках одного пула соединений.
  2. Аутентификация: Если в системе не настроена прозрачная доменная авторизация (OpenID, SSO или Windows-аутентификация), при переходе по ссылке пользователю сначала будет показано стандартное окно авторизации 1С, и только после успешного входа система обработает переданные параметры запуска.
  3. Кодирование символов: Значения, передаваемые в ?C=, должны быть приведены к стандарту URL-encoding, иначе спецсимволы (пробелы, амперсанды, кириллица) могут некорректно прочитаться платформой.
← На главную