К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как определить веб-клиент 1С: практические способы проверки

Как определить веб-клиент 1С: программная проверка через ИнформацияОСистеме, различия тонкого, толстого и веб-клиента, признаки в URL и частые ошибки.

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

Главная сложность в том, что прямого свойства «это веб-клиент» в языке 1С нет. Тип клиента определяется косвенно — через системную информацию, анализ строки подключения, настройки публикации и поведение интерфейса. Каждый способ имеет свои ограничения, и надёжный результат обычно даёт комбинация проверок.

Ниже разобраны программные методы определения веб-клиента, визуальные признаки для пользователя и администратора, а также типичные ошибки, из-за которых проверка работает неправильно.

Чем веб-клиент отличается от тонкого и толстого

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

Веб-клиент не требует установки платформы вообще: вся логика интерфейса исполняется в браузере, а обмен с сервером идёт по HTTP/HTTPS через веб-сервер (IIS или Apache), на котором опубликована информационная база. Из-за этого у веб-клиента есть принципиальные ограничения: нет прямого доступа к файловой системе пользователя, COM-объектам и многим средствам работы с ОС.

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

Программное определение через ИнформацияОСистеме

Стандартный способ на стороне клиента — получить объект «ИнформацияОСистеме» и проанализировать его свойства. У этого объекта есть свойство «ТипПлатформы», которое возвращает значение системного перечисления. Для веб-клиента строковое представление содержит указание на веб-клиент, и надёжнее всего проверять именно через поиск подстроки, а не через жёсткое сравнение — представления различаются между версиями платформы и разрядностью.

Пример функции, определяющей веб-клиент:

Функция ЭтоВебКлиент() Экспорт

СистемнаяИнфо = Новый ИнформацияОСистеме;

СтрокаТипа = Строка(СистемнаяИнфо.ТипПлатформы);

Возврат Найти(СтрокаТипа, "WebClient") > 0;

КонецФункции

Обратите внимание: функция имеет смысл только в клиентском контексте. Если вызвать её на сервере, вы получите тип платформы сервера, а не клиента пользователя. Поэтому такую проверку размещают в общих модулях с признаком «Клиент (управляемое приложение)» либо вызывают из клиентских обработчиков.

1c
СистемнаяИнфо = Новый ИнформацияОСистеме;
Если Найти(Строка(СистемнаяИнфо.ТипПлатформы), "WebClient") > 0 Тогда
    // Логика для веб-клиента
КонецЕсли;

Определение типа клиента через директивы и контекст компиляции

Для кода, который должен компилироваться только в определённом клиенте, платформа предоставляет директивы препроцессора. Конструкция «#Если ВебКлиент Тогда» позволяет включить фрагмент кода только при работе в веб-клиенте. Это не проверка в рантайме, а условная компиляция: в остальных клиентах такой код физически отсутствует.

#Если ВебКлиент Тогда

// Код, доступный только в веб-клиенте

#ИначеЕсли ТонкийКлиент Тогда

// Код для тонкого клиента

#Иначе

// Толстый клиент или сервер

#КонецЕсли

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

Как определить веб-клиент без программирования

Администратору или пользователю определить веб-клиент проще всего по внешним признакам. Главный признак — работа идёт в окне браузера, а в адресной строке виден URL вида http://имя-сервера/имя-публикации. Тонкий и толстый клиенты запускаются как отдельные приложения (1cv8.exe, 1cv8c.exe) и не имеют адресной строки.

Дополнительные признаки веб-клиента: наличие кнопок навигации браузера, возможность открыть базу в новой вкладке, пункт меню браузера вместо системного меню Windows. Интерфейс веб-клиента визуально очень близок к тонкому, поэтому по одному внешнему виду форм их отличить невозможно — ориентируйтесь именно на окружение (браузер, URL).

На стороне сервера администратор может посмотреть список активных сеансов в консоли кластера серверов 1С. В свойствах сеанса указывается тип клиентского приложения — там будет явно указано «Веб-клиент», «Тонкий клиент» или «Толстый клиент». Это самый достоверный способ, когда нужно проверить, как подключён конкретный пользователь.

Контрольные точки

Как проверить тип подключения

Окно приложения
Норма

Работа идёт в браузере с адресной строкой и URL публикации

Тревожный признак

Отдельное окно приложения 1cv8 — это тонкий или толстый клиент, а не веб

Сеанс в консоли кластера
Норма

В свойствах сеанса указано приложение «Веб-клиент»

Тревожный признак

Указан тонкий или толстый клиент — пользователь подключён через платформу

URL подключения
Норма

Адрес вида http://сервер/публикация ведёт на опубликованную базу

Тревожный признак

Строка подключения вида Srvr=...;Ref=... — это клиент-серверное подключение платформой

Ограничения веб-клиента, которые помогают его распознать

Непрямой, но надёжный способ понять, что работа идёт в веб-клиенте, — столкнуться с его ограничениями. В веб-клиенте недоступны: прямая работа с файловой системой без диалогов выбора, COM-объекты, OLE, внешние компоненты без специальной установки расширения для браузера, некоторые методы работы с картинками и буфером обмена.

Если функция, работающая в тонком клиенте, внезапно выдаёт ошибку «Метод объекта не обнаружен» или «Операция не поддерживается», это почти верный признак веб-клиента. Разработчику стоит обрабатывать такие ситуации заранее: проверять тип клиента до вызова потенциально недоступного метода, а не перехватывать исключение.

Для работы с файлами в веб-клиенте используют асинхронные методы с префиксом «Начать»: НачатьПомещениеФайла, НачатьПолучениеФайлов и расширение для работы с файлами в браузере. Если в коде вы видите эти методы с обработчиками оповещений — конфигурация рассчитана в том числе на веб-клиент.

Типичные ошибки
01
Проверка типа клиента на сервере — ИнформацияОСистеме на сервере вернёт тип серверной платформы, и проверка всегда даст неверный результат
02
Жёсткое сравнение строки типа платформы вместо поиска подстроки — представление отличается в зависимости от разрядности и версии, сравнение ломается после обновления
03
Использование директивы #Если ВебКлиент для рантайм-логики в общем модуле — код просто не компилируется в других клиентах, и ветка не выполняется
04
Попытка вызвать работу с файлами или COM в веб-клиенте без предварительной проверки — пользователь получает ошибку вместо понятного сообщения

Настройка и проверка публикации веб-клиента

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

Если страница не открывается, проверьте: запущен ли веб-сервер (IIS или Apache), зарегистрированы ли модули расширения веб-сервера 1С, есть ли права у пользователя веб-сервера на каталог информационной базы и каталог публикации. Ошибка 403 обычно указывает на права, ошибка 404 — на неверный URL или отсутствие публикации, ошибка 500 — на проблемы с модулем расширения.

Порядок проверки публикации веб-клиента
  1. 1
    Убедитесь, что веб-сервер (IIS или Apache) установлен и запущен
  2. 2
    В конфигураторе выполните «Администрирование» → «Публикация на веб-сервере» и задайте имя публикации
  3. 3
    Откройте в браузере URL вида http://сервер/имя-публикации
  4. 4
    Проверьте, что отображается форма входа 1С и вход под тестовым пользователем проходит
  5. 5
    В консоли кластера убедитесь, что сеанс отображается с типом «Веб-клиент»

Частые вопросы

Можно ли запретить работу конфигурации в веб-клиенте?

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

Почему проверка через ИнформацияОСистеме возвращает не то, что ожидалось?

Чаще всего проверка выполняется на сервере, а не на клиенте — тогда возвращается тип серверной платформы. Перенесите проверку в клиентский модуль. Вторая причина — сравнение строки целиком вместо поиска подстроки «WebClient»: представление типа платформы включает разрядность и отличается между версиями.

Веб-клиент и тонкий клиент через веб-сервер — это одно и то же?

Нет. Тонкий клиент может подключаться к базе через веб-сервер по протоколу HTTP (ws-подключение), но остаётся установленным приложением. Веб-клиент работает полностью внутри браузера. В консоли кластера эти сеансы отображаются с разными типами приложений.

Какие браузеры подходят для веб-клиента 1С?

Веб-клиент работает в актуальных версиях основных браузеров: Chrome, Firefox, Edge, Safari. Конкретный перечень поддерживаемых версий зависит от версии платформы 1С и приводится в документации к ней. Устаревшие браузеры могут отображать интерфейс с ошибками или не поддерживать расширение для работы с файлами.

Как в веб-клиенте передать файл с компьютера пользователя?

Используются асинхронные методы: НачатьПомещениеФайла для загрузки на сервер и НачатьПолучениеФайлов для скачивания. Для полноценной файловой работы в браузере устанавливается расширение работы с файлами — платформа предложит это автоматически при первом обращении.

Можно ли отличить веб-клиент от мобильного клиента программно?

Да, тем же способом: строковое представление типа платформы у мобильного клиента отличается и не содержит подстроки «WebClient». Дополнительно мобильный клиент определяется через директиву препроцессора «МобильныйКлиент» и по специфичным свойствам системной информации.

Итог

Что важно запомнить

Веб-клиент 1С определяется программно через ИнформацияОСистеме с поиском подстроки «WebClient» в типе платформы — и только в клиентском контексте. Для условной компиляции кода используется директива #Если ВебКлиент. Визуально веб-клиент узнаётся по работе в браузере с URL публикации, а администратор подтверждает тип подключения в консоли кластера по типу сеанса.