Где выполняется 1С: на клиенте или на сервере, и в каком режиме работает база
Содержание
Быстрее всего определить, клиент-серверная база
1С или файловая, по строке под списком баз в окне запуска: File="C:\..." — база файловая, Srvr="..."; Ref="..." — база на сервере 1С:Предприятия. Тип клиента (тонкий, толстый, веб) видно в окне «О программе», а в коде режим выясняют инструкциями препроцессора и функцией СтрокаСоединенияИнформационнойБазы().
Частая путаница: «тонкий клиент» считают признаком серверной базы. Это не так. Тонкий клиент спокойно работает с файловой базой, а толстый — с серверной. Вопрос «клиент или сервер» распадается на три разных вопроса, и на каждый свой способ ответа.
Три вопроса под одним «клиент или сервер»
Прежде чем что-то проверять, решите, что именно нужно узнать:
- 🗄️ Режим информационной базы — файловый (один файл
1Cv8.1CDв папке) или клиент-серверный (кластер серверов 1С + СУБД: MS SQL, PostgreSQL и другие). - 🖥️ Тип клиентского приложения — тонкий клиент, толстый клиент (управляемое или обычное приложение), веб-клиент в браузере, мобильный клиент.
- ⚙️ Контекст выполнения кода — исполняется ли конкретная процедура на клиенте или на сервере. Это вопрос разработчика.
Эти признаки независимы. Любой тип клиента можно соединить почти с любым режимом базы:
| Сочетание | Где реально исполняется серверный код |
|---|---|
| Тонкий клиент + файловая база | В процессе самого клиента на компьютере пользователя |
| Тонкий клиент + сервер 1С | В рабочих процессах rphost на сервере |
| Толстый клиент + файловая база | В процессе клиента |
| Толстый клиент + сервер 1С | В rphost, часть кода объектов — у клиента |
| Веб-клиент + файловая база через веб-сервер | В процессе веб-сервера (IIS или Apache) |
| Веб-клиент + сервер 1С | В rphost; веб-сервер только передаёт запросы |
Даже в файловом режиме код с директивой &НаСервере работает «как на сервере»: у него нет доступа к форме и клиентским объектам. Просто физически это тот же компьютер.
Схема клиент-серверного варианта такая. Клиент сначала обращается к агенту сервера (порт 1540), агент передаёт его менеджеру кластера (1541), а тот направляет соединение в рабочий процесс. Диапазон портов рабочих процессов (по умолчанию 1560–1591) задаётся в свойствах рабочего сервера. Консоль администрирования тоже подключается через агент.
Как узнать режим базы и тип клиента без программирования
Окно запуска 1С
- Запустите ярлык 1С:Предприятия, откроется список информационных баз.
- Выделите нужную базу одним щелчком.
- Посмотрите на строку внизу окна под списком.
Варианты строки:
File="D:\Bases\Buh";— файловая база, данные лежат в этой папке.Srvr="srv1c";Ref="buh_2024";— база на сервере 1С:Предприятияsrv1c, имя базы в кластереbuh_2024.ws="https://..."— подключение через веб-сервер. Что стоит за веб-сервером — файловая или серверная база, — отсюда не видно.
Если строки нет, нажмите Изменить и посмотрите тип расположения: «На данном компьютере или на компьютере в локальной сети» — файловая, «На сервере 1С:Предприятия» — серверная, «На веб-сервере» — через публикацию.
Окно «О программе»
Откройте базу и вызовите главное меню (кнопка с тремя полосками слева вверху или значок ? справа) → Справка → О программе. В окне указаны версия платформы, конфигурация, режим клиентского приложения и параметры подключения к базе.
Ссылка «Информация для технической поддержки» в этом же окне копирует полный отчёт: версию платформы, тип клиента, строку соединения, версию ОС. Его удобно вставить в письмо администратору.
Список активных пользователей
В Конфигураторе: Администрирование → Активные пользователи. В пользовательском режиме типовых конфигураций обработка «Активные пользователи» есть в разделе Администрирование, а также в Главное меню → Все функции → Обработки.
Колонка «Приложение» показывает, чем подключён каждый: «Тонкий клиент», «Веб-клиент», «Конфигуратор», «Фоновое задание», «COM-соединение». Это самый быстрый способ узнать тип клиента у чужого сеанса.
Как определить клиент или сервер программно
Директивы компиляции в модуле формы
В модулях управляемых форм контекст задаёт директива над процедурой:
| Директива | Где выполняется | Доступ к данным формы |
|---|---|---|
&НаКлиенте | На клиенте | Есть |
&НаСервере | На сервере | Есть (форма передаётся на сервер) |
&НаСервереБезКонтекста | На сервере | Нет |
&НаКлиентеНаСервереБезКонтекста | И там, и там | Нет |
Директива не «определяет» режим во время работы — она его задаёт. Если нужно узнать, где код оказался, используйте препроцессор.
Инструкции препроцессора
Препроцессор вырезает ветки кода ещё до выполнения, поэтому в клиентский код не попадёт ничего из ветки #Если Сервер. Пример для модуля формы:
&НаКлиенте
Процедура ПоказатьТипКлиента(Команда)
#Если ВебКлиент Тогда
Режим = "Веб-клиент";
#ИначеЕсли ТонкийКлиент Тогда
Режим = "Тонкий клиент";
#ИначеЕсли ТолстыйКлиентУправляемоеПриложение Тогда
Режим = "Толстый клиент, управляемое приложение";
#ИначеЕсли МобильныйКлиент Тогда
Режим = "Мобильный клиент";
#Иначе
Режим = "Другой вариант клиента";
#КонецЕсли
Сообщить("Запущено: " + Режим);
КонецПроцедуры
Ещё символы препроцессора, которые встречаются в типовом коде: Клиент, Сервер, ВнешнееСоединение, ТолстыйКлиентОбычноеПриложение.
Файловая или серверная база — в коде
Строка соединения на сервере всегда начинается с File= для файловой базы и содержит Srvr= для серверной:
&НаСервереБезКонтекста
Функция ЭтоФайловаяБаза()
СтрокаСоединения = ВРег(СтрокаСоединенияИнформационнойБазы());
Возврат СтрНайти(СтрокаСоединения, "FILE=") = 1;
КонецФункции
В конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11) свою функцию писать не нужно: в серверном общем модуле есть готовая ОбщегоНазначения.ИнформационнаяБазаФайловая().
Тип приложения текущего и чужих сеансов
С сервера можно узнать, каким приложением подключён текущий сеанс:
&НаСервереБезКонтекста
Функция ПриложениеТекущегоСеанса()
Сеанс = ПолучитьТекущийСеансИнформационнойБазы();
Возврат ПредставлениеПриложения(Сеанс.ИмяПриложения);
КонецФункции
Список всех соединений с базой и их приложений:
&НаСервереБезКонтекста
Процедура ПоказатьСоединения()
Для Каждого Соединение Из ПолучитьСоединенияИнформационнойБазы() Цикл
Сообщить(СтрШаблон("Соединение %1: %2, компьютер %3",
Формат(Соединение.НомерСоединения, "ЧГ=0"),
ПредставлениеПриложения(Соединение.ИмяПриложения),
Соединение.ИмяКомпьютера));
КонецЦикла;
КонецПроцедуры
Значения ИмяПриложения — служебные строки: 1CV8C (тонкий клиент), 1CV8 (толстый), WebClient, Designer, BackgroundJob, COMConnection. Функция ПредставлениеПриложения() переводит их в понятные названия.
Для веб-клиента полезен объект СистемнаяИнформация: его свойство ИнформацияПрограммыПросмотра возвращает строку браузера. Создаётся он так: Инфо = Новый СистемнаяИнформация;.
Процессы в диспетчере задач
Если доступ к коду и интерфейсу не нужен, а нужно понять, что запущено на компьютере, откройте диспетчер задач (Ctrl+Shift+Esc), вкладку «Подробности».
На компьютере пользователя:
- 🔹
1cv8c.exe— тонкий клиент; - 🔹
1cv8.exe— толстый клиент или Конфигуратор (оба запускаются одним файлом); - 🔹
1cv8s.exeи1cestart.exe— стартеры, которые показывают окно со списком баз и запускают нужный клиент.
На сервере 1С:Предприятия:
- 🔸
ragent.exe— агент сервера, он же служба «Агент сервера 1С:Предприятия 8.3»; - 🔸
rmngr.exe— менеджер кластера; - 🔸
rphost.exe— рабочие процессы, именно в них выполняется серверный код.
На Linux-сервере это те же ragent, rmngr, rphost, только без расширения.
Как читать картину:
- На сервере есть
ragent,rmngr,rphost— значит, установлен сервер 1С. Но работают ли через него именно ваши базы, видно только по строке соединения или в консоли. - Пользователь жалуется на нагрузку, а
rphostспокоен, зато1cv8c.exeу него потребляет много памяти и процессора — скорее всего, база файловая, и вся работа идёт у него на компьютере. - В файловой базе через веб-сервер серверная часть живёт внутри процесса веб-сервера:
w3wp.exeдля IIS илиhttpd.exeдля Apache. Отдельных процессов 1С на сервере тогда нет.
Не завершайте rphost.exe или rmngr.exe из диспетчера задач ради проверки. У всех пользователей, чьи сеансы обслуживает процесс, оборвётся работа, а несохранённые документы пропадут. Если перезапуск действительно нужен — делайте его вне рабочего времени и после предупреждения.
Консоль кластера и утилита rac
Оснастка «Администрирование серверов 1С:Предприятия»
Это главный инструмент, когда нужно понять, кто и как подключён к серверной базе.
- Откройте оснастку «Администрирование серверов 1С:Предприятия» (ярлык ставится вместе с сервером).
- Добавьте центральный сервер, если его ещё нет в дереве: правой кнопкой по
Central 1C:Enterprise 8.3 servers→Создать→Центральный сервер 1С:Предприятия, укажите имя компьютера. - Раскройте
Кластеры → <ваш кластер> → Информационные базы. - Если базы в списке нет — она не зарегистрирована в этом кластере. Значит, пользователь работает либо с файловой копией, либо с другим сервером.
- Раскройте базу →
Сеансы. В колонке «Приложение» видно тип клиента каждого пользователя, рядом — компьютер и время начала.
Если оснастка не открывается или пишет об ошибке компонента, обычно не зарегистрирована библиотека radmin.dll нужной версии. Её регистрируют от имени администратора командой regsvr32 "C:\Program Files\1cv8\<версия>\bin\radmin.dll", где <версия> — номер вашей платформы.
Командная строка: rac
Утилита rac работает через сервер администрирования ras (порт 1545 по умолчанию), поэтому служба ras должна быть запущена. Базовые команды:
rac cluster list
rac infobase summary list --cluster=<id кластера>
rac session list --cluster=<id кластера>
Первая выдаёт идентификаторы кластеров. Вторая — список баз кластера: если вашей базы здесь нет, она не серверная (по крайней мере, не на этом сервере). Третья показывает сеансы, тип клиента — в поле app-id: 1CV8C, WebClient, Designer и так далее.
Если на кластере заданы администраторы, добавьте параметры авторизации. Полный список — rac help session.
Где путаются при определении режима
- ❌ «Есть служба агента — значит, база серверная». Сервер 1С на машине может стоять, а бухгалтерия при этом открывает файловую копию из сетевой папки. Проверяйте строку соединения конкретной базы.
- ❌ «Тонкий клиент = клиент-сервер». Нет, тонкий клиент — просто тип клиентского приложения. С файловой базой он работает так же, только серверный код выполняется у него внутри.
- ❌ «Веб-клиент = база на сервере 1С». Веб-клиент подключается к публикации на веб-сервере, а та может смотреть и на файловую базу .
- ❌ Проверка
#Если Серверв толстом клиенте. В обычном приложении код модулей объектов может выполняться на стороне клиента. Поэтому в типовых конфигурациях встречается условие#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда— одногоСервертам недостаточно. - ❌ Определение по скорости. «Работает быстро — значит, сервер» не годится: маленькая файловая база на SSD у одного пользователя бывает быстрее серверной под нагрузкой.
- ❌ Две базы с одинаковым названием в списке. Название в окне запуска задаёт сам пользователь. Под одним именем «Бухгалтерия» у разных людей бывают разные базы — сверяйте строку внизу окна, а не название.
Отдельный случай — параметры командной строки ярлыка. Ключ /F после 1cv8.exe или 1cv8c.exe открывает файловую базу по пути, /S — серверную в формате сервер\имябазы, /WS — через веб-сервер. Если пользователь запускает 1С не из списка, а своим ярлыком, откройте его свойства и посмотрите эти ключи.
Частые вопросы
Можно ли из пользовательского режима узнать имя сервера 1С и имя базы в кластере?
Srvr= указан сервер, после Ref= — имя базы в кластере.Почему на сервере нет процесса rphost, хотя сервер 1С установлен?
Как понять, что база работает через веб-сервер, а не напрямую?
ws= с адресом публикации, а в списке сеансов у пользователя тип приложения указан как веб-клиент или тонкий клиент с подключением через веб-сервер.Влияет ли тип клиента на лицензии?
Как перевести файловую базу в клиент-серверную?
.dt из Конфигуратора, создайте новую базу в кластере и загрузите в неё этот файл. Перед этим договоритесь с пользователями: на время выгрузки и загрузки работать в базе нельзя.