Где выполняется 1С: на клиенте или на сервере, и в каком режиме работает база

· 9 мин

Содержание

Быстрее всего определить, клиент-серверная база 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. Запустите ярлык 1С:Предприятия, откроется список информационных баз.
  2. Выделите нужную базу одним щелчком.
  3. Посмотрите на строку внизу окна под списком.

Варианты строки:

  • 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, только без расширения.

Как читать картину:

  1. На сервере есть ragent, rmngr, rphost — значит, установлен сервер 1С. Но работают ли через него именно ваши базы, видно только по строке соединения или в консоли.
  2. Пользователь жалуется на нагрузку, а rphost спокоен, зато 1cv8c.exe у него потребляет много памяти и процессора — скорее всего, база файловая, и вся работа идёт у него на компьютере.
  3. В файловой базе через веб-сервер серверная часть живёт внутри процесса веб-сервера: w3wp.exe для IIS или httpd.exe для Apache. Отдельных процессов 1С на сервере тогда нет.

Не завершайте rphost.exe или rmngr.exe из диспетчера задач ради проверки. У всех пользователей, чьи сеансы обслуживает процесс, оборвётся работа, а несохранённые документы пропадут. Если перезапуск действительно нужен — делайте его вне рабочего времени и после предупреждения.

Консоль кластера и утилита rac

Оснастка «Администрирование серверов 1С:Предприятия»

Это главный инструмент, когда нужно понять, кто и как подключён к серверной базе.

  1. Откройте оснастку «Администрирование серверов 1С:Предприятия» (ярлык ставится вместе с сервером).
  2. Добавьте центральный сервер, если его ещё нет в дереве: правой кнопкой по Central 1C:Enterprise 8.3 servers → Создать → Центральный сервер 1С:Предприятия, укажите имя компьютера.
  3. Раскройте Кластеры → <ваш кластер> → Информационные базы.
  4. Если базы в списке нет — она не зарегистрирована в этом кластере. Значит, пользователь работает либо с файловой копией, либо с другим сервером.
  5. Раскройте базу → Сеансы. В колонке «Приложение» видно тип клиента каждого пользователя, рядом — компьютер и время начала.

Если оснастка не открывается или пишет об ошибке компонента, обычно не зарегистрирована библиотека 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= с адресом публикации, а в списке сеансов у пользователя тип приложения указан как веб-клиент или тонкий клиент с подключением через веб-сервер.
Влияет ли тип клиента на лицензии?
Лицензию занимает сеанс пользователя, а не тип клиента: тонкий, толстый и веб-клиент расходуют клиентскую лицензию одинаково. Серверная лицензия нужна отдельно — для самого сервера 1С.
Как перевести файловую базу в клиент-серверную?
Выгрузите информационную базу в файл .dt из Конфигуратора, создайте новую базу в кластере и загрузите в неё этот файл. Перед этим договоритесь с пользователями: на время выгрузки и загрузки работать в базе нельзя.