Разработка и Конфигурация · 10 мин
Как определить веб-клиент 1С: практические способы проверки
Как определить веб-клиент 1С: программная проверка через ИнформацияОСистеме, различия тонкого, толстого и веб-клиента, признаки в URL и частые ошибки.
Веб-клиент 1С — это режим работы, при котором пользователь подключается к информационной базе через браузер, без установки платформы на компьютер. Определить, что сеанс запущен именно в веб-клиенте, бывает нужно в двух ситуациях: при разработке, когда логика должна ветвиться в зависимости от типа клиента, и при администрировании, когда нужно понять, как именно пользователь подключён к базе.
Главная сложность в том, что прямого свойства «это веб-клиент» в языке 1С нет. Тип клиента определяется косвенно — через системную информацию, анализ строки подключения, настройки публикации и поведение интерфейса. Каждый способ имеет свои ограничения, и надёжный результат обычно даёт комбинация проверок.
Ниже разобраны программные методы определения веб-клиента, визуальные признаки для пользователя и администратора, а также типичные ошибки, из-за которых проверка работает неправильно.
Чем веб-клиент отличается от тонкого и толстого
Прежде чем определять тип клиента, важно понимать, что именно различаем. 1С поддерживает три основных клиентских приложения. Толстый клиент — полноценное приложение, установленное на компьютере, поддерживает обычные формы и режим отладки конфигуратора. Тонкий клиент — тоже устанавливаемое приложение, но с ограниченной функциональностью: только управляемые формы, вычисления переносятся на сервер.
Веб-клиент не требует установки платформы вообще: вся логика интерфейса исполняется в браузере, а обмен с сервером идёт по HTTP/HTTPS через веб-сервер (IIS или Apache), на котором опубликована информационная база. Из-за этого у веб-клиента есть принципиальные ограничения: нет прямого доступа к файловой системе пользователя, COM-объектам и многим средствам работы с ОС.
Именно эти ограничения — частая причина, почему разработчику нужно определить тип клиента: код, который работает в тонком клиенте (например, запись файла на диск или обращение к COM), в веб-клиенте вызовет ошибку, если не предусмотреть ветвление.
Программное определение через ИнформацияОСистеме
Стандартный способ на стороне клиента — получить объект «ИнформацияОСистеме» и проанализировать его свойства. У этого объекта есть свойство «ТипПлатформы», которое возвращает значение системного перечисления. Для веб-клиента строковое представление содержит указание на веб-клиент, и надёжнее всего проверять именно через поиск подстроки, а не через жёсткое сравнение — представления различаются между версиями платформы и разрядностью.
Пример функции, определяющей веб-клиент:
Функция ЭтоВебКлиент() Экспорт
СистемнаяИнфо = Новый ИнформацияОСистеме;
СтрокаТипа = Строка(СистемнаяИнфо.ТипПлатформы);
Возврат Найти(СтрокаТипа, "WebClient") > 0;
КонецФункции
Обратите внимание: функция имеет смысл только в клиентском контексте. Если вызвать её на сервере, вы получите тип платформы сервера, а не клиента пользователя. Поэтому такую проверку размещают в общих модулях с признаком «Клиент (управляемое приложение)» либо вызывают из клиентских обработчиков.
СистемнаяИнфо = Новый ИнформацияОСистеме;
Если Найти(Строка(СистемнаяИнфо.ТипПлатформы), "WebClient") > 0 Тогда
// Логика для веб-клиента
КонецЕсли;Определение типа клиента через директивы и контекст компиляции
Для кода, который должен компилироваться только в определённом клиенте, платформа предоставляет директивы препроцессора. Конструкция «#Если ВебКлиент Тогда» позволяет включить фрагмент кода только при работе в веб-клиенте. Это не проверка в рантайме, а условная компиляция: в остальных клиентах такой код физически отсутствует.
#Если ВебКлиент Тогда
// Код, доступный только в веб-клиенте
#ИначеЕсли ТонкийКлиент Тогда
// Код для тонкого клиента
#Иначе
// Толстый клиент или сервер
#КонецЕсли
Практическая разница между двумя подходами: директивы препроцессора применяют, когда код в принципе не скомпилируется в другом клиенте (например, использует методы, недоступные в веб-клиенте). Проверку через ИнформацияОСистеме используют, когда код компилируется везде, но логика должна различаться — например, разные тексты предупреждений или разные способы передачи файла.
Как определить веб-клиент без программирования
Администратору или пользователю определить веб-клиент проще всего по внешним признакам. Главный признак — работа идёт в окне браузера, а в адресной строке виден URL вида http://имя-сервера/имя-публикации. Тонкий и толстый клиенты запускаются как отдельные приложения (1cv8.exe, 1cv8c.exe) и не имеют адресной строки.
Дополнительные признаки веб-клиента: наличие кнопок навигации браузера, возможность открыть базу в новой вкладке, пункт меню браузера вместо системного меню Windows. Интерфейс веб-клиента визуально очень близок к тонкому, поэтому по одному внешнему виду форм их отличить невозможно — ориентируйтесь именно на окружение (браузер, URL).
На стороне сервера администратор может посмотреть список активных сеансов в консоли кластера серверов 1С. В свойствах сеанса указывается тип клиентского приложения — там будет явно указано «Веб-клиент», «Тонкий клиент» или «Толстый клиент». Это самый достоверный способ, когда нужно проверить, как подключён конкретный пользователь.
Как проверить тип подключения
Работа идёт в браузере с адресной строкой и URL публикации
Отдельное окно приложения 1cv8 — это тонкий или толстый клиент, а не веб
В свойствах сеанса указано приложение «Веб-клиент»
Указан тонкий или толстый клиент — пользователь подключён через платформу
Адрес вида http://сервер/публикация ведёт на опубликованную базу
Строка подключения вида Srvr=...;Ref=... — это клиент-серверное подключение платформой
Ограничения веб-клиента, которые помогают его распознать
Непрямой, но надёжный способ понять, что работа идёт в веб-клиенте, — столкнуться с его ограничениями. В веб-клиенте недоступны: прямая работа с файловой системой без диалогов выбора, COM-объекты, OLE, внешние компоненты без специальной установки расширения для браузера, некоторые методы работы с картинками и буфером обмена.
Если функция, работающая в тонком клиенте, внезапно выдаёт ошибку «Метод объекта не обнаружен» или «Операция не поддерживается», это почти верный признак веб-клиента. Разработчику стоит обрабатывать такие ситуации заранее: проверять тип клиента до вызова потенциально недоступного метода, а не перехватывать исключение.
Для работы с файлами в веб-клиенте используют асинхронные методы с префиксом «Начать»: НачатьПомещениеФайла, НачатьПолучениеФайлов и расширение для работы с файлами в браузере. Если в коде вы видите эти методы с обработчиками оповещений — конфигурация рассчитана в том числе на веб-клиент.
Настройка и проверка публикации веб-клиента
Чтобы пользователи могли работать через веб-клиент, базу публикуют на веб-сервере. Публикация выполняется из конфигуратора: меню «Администрирование» — «Публикация на веб-сервере», где указывается имя публикации, каталог и тип веб-сервера. После публикации проверьте доступность базы, открыв URL в браузере — должна отобразиться страница входа 1С с полями авторизации.
Если страница не открывается, проверьте: запущен ли веб-сервер (IIS или Apache), зарегистрированы ли модули расширения веб-сервера 1С, есть ли права у пользователя веб-сервера на каталог информационной базы и каталог публикации. Ошибка 403 обычно указывает на права, ошибка 404 — на неверный URL или отсутствие публикации, ошибка 500 — на проблемы с модулем расширения.
- 1Убедитесь, что веб-сервер (IIS или Apache) установлен и запущен
- 2В конфигураторе выполните «Администрирование» → «Публикация на веб-сервере» и задайте имя публикации
- 3Откройте в браузере URL вида http://сервер/имя-публикации
- 4Проверьте, что отображается форма входа 1С и вход под тестовым пользователем проходит
- 5В консоли кластера убедитесь, что сеанс отображается с типом «Веб-клиент»
Частые вопросы
Можно ли запретить работу конфигурации в веб-клиенте?
Да. В свойствах конфигурации в конфигураторе есть настройки режима использования: можно ограничить поддерживаемые клиентские приложения. Если веб-клиент не поддерживается, пользователь при входе через браузер получит сообщение о невозможности запуска. Это оправдано, если конфигурация активно использует COM или файловые операции.
Почему проверка через ИнформацияОСистеме возвращает не то, что ожидалось?
Чаще всего проверка выполняется на сервере, а не на клиенте — тогда возвращается тип серверной платформы. Перенесите проверку в клиентский модуль. Вторая причина — сравнение строки целиком вместо поиска подстроки «WebClient»: представление типа платформы включает разрядность и отличается между версиями.
Веб-клиент и тонкий клиент через веб-сервер — это одно и то же?
Нет. Тонкий клиент может подключаться к базе через веб-сервер по протоколу HTTP (ws-подключение), но остаётся установленным приложением. Веб-клиент работает полностью внутри браузера. В консоли кластера эти сеансы отображаются с разными типами приложений.
Какие браузеры подходят для веб-клиента 1С?
Веб-клиент работает в актуальных версиях основных браузеров: Chrome, Firefox, Edge, Safari. Конкретный перечень поддерживаемых версий зависит от версии платформы 1С и приводится в документации к ней. Устаревшие браузеры могут отображать интерфейс с ошибками или не поддерживать расширение для работы с файлами.
Как в веб-клиенте передать файл с компьютера пользователя?
Используются асинхронные методы: НачатьПомещениеФайла для загрузки на сервер и НачатьПолучениеФайлов для скачивания. Для полноценной файловой работы в браузере устанавливается расширение работы с файлами — платформа предложит это автоматически при первом обращении.
Можно ли отличить веб-клиент от мобильного клиента программно?
Да, тем же способом: строковое представление типа платформы у мобильного клиента отличается и не содержит подстроки «WebClient». Дополнительно мобильный клиент определяется через директиву препроцессора «МобильныйКлиент» и по специфичным свойствам системной информации.
Что важно запомнить
Веб-клиент 1С определяется программно через ИнформацияОСистеме с поиском подстроки «WebClient» в типе платформы — и только в клиентском контексте. Для условной компиляции кода используется директива #Если ВебКлиент. Визуально веб-клиент узнаётся по работе в браузере с URL публикации, а администратор подтверждает тип подключения в консоли кластера по типу сеанса.