Клиент и сервер 1С: кто что делает и как они общаются

· 9 мин

Содержание

Частое заблуждение: «сервер 1С — это просто компьютер, где лежит база». На деле сервер 1С:Предприятия — отдельная программа, которая выполняет код конфигурации и сама ходит в СУБД. Клиент 1С — другая программа: она рисует окна, принимает ввод и просит сервер сделать работу.

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

Две роли в одной платформе

Платформа 1С 8.3 состоит из нескольких частей, и «клиент против сервера» — это разделение обязанностей между ними.

ЧастьЧто делаетГде живёт
Клиентское приложениеФормы, ввод, печать, локальные файлыКомпьютер пользователя или браузер
Сервер 1С:ПредприятияВыполняет серверный код, управляет сеансами и блокировкамиСерверная машина
СУБДХранит таблицы базыНа том же сервере или на отдельном

Есть и файловый режим: база лежит в файле 1Cv8.1CD в папке, а каждый клиент сам читает и пишет в неё. Сервера приложений тут нет, вся логика выполняется на компьютере пользователя. Для 2-3 человек это нормально, для десятка и больше уже тесно.

Файловый и клиент-серверный режим — это разные способы хранения и обработки, а не разные программы для пользователя. Интерфейс в обоих случаях один и тот же.

Что на самом деле делает сервер приложений

Сервер 1С — это не одна программа, а набор процессов, объединённых в кластер.

  • 🧠 Агент сервера (ragent) — служба, которая запускает и контролирует остальное. Порт по умолчанию — 1540.
  • 🧭 Менеджер кластера (rmngr) — раздаёт сеансы по рабочим процессам и держит служебную информацию кластера. Порт по умолчанию — 1541.
  • ⚙️ Рабочие процессы (rphost) — исполняют код конфигурации и обращаются к СУБД. Порты по умолчанию — из диапазона 1560-1591.

Основная нагрузка ложится на рабочие процессы. Именно они проводят документы, формируют отчёты и выполняют регламентные задания.

Что ещё берёт на себя сервер:

  1. Исполнение процедур с директивой &НаСервере и серверных общих модулей.
  2. Управляемые блокировки: пользователь не затирает чужие данные.
  3. Фоновые и регламентные задания: обмены, закрытие месяца по расписанию.
  4. Единое подключение к СУБД вместо сотни подключений от каждого клиента.
  5. Масштабирование: несколько рабочих процессов, а при необходимости несколько серверов в одном кластере.

Сама база при этом остаётся в СУБД: PostgreSQL, Microsoft SQL Server и других поддерживаемых. Сервер 1С — прослойка между пользователем и СУБД.

Клиентские приложения: толстый, тонкий, веб

Клиент — это не одно приложение, а три варианта запуска.

КлиентИсполняемый файлКогда выбирают
Тонкий1cv8cОсновной вариант для рабочих мест при клиент-серверной работе
Толстый1cv8Конфигуратор, работа с файловой базой, редкие задачи
Веб-клиентБраузерРабота без установки платформы, доступ из дома

Тонкий клиент подключается к серверу по сети и выполняет только клиентскую часть. Он легче и быстрее ставится, но работает с управляемыми формами и не открывает Конфигуратор.

Толстый клиент умеет больше: открывает файловые базы напрямую, работает с обычными формами и запускает Конфигуратор. Конфигуратор запускается через него. Нагрузка на машину пользователя выше.

Веб-клиент работает через опубликованную на веб-сервере базу. На компьютере нужен только браузер. Публикация делается на Apache или IIS, подробности — в разделе про администрирование.

Клиент всегда отвечает за:

  • отрисовку форм и обработку нажатий;
  • локальные операции: диалоги выбора файла, печать, работу с оборудованием;
  • вызовы сервера и показ его ответов.

Если пользователю нужен Конфигуратор, тонкий клиент не подойдёт. Режим «Конфигуратор» запускается из толстого клиента.

Как клиент и сервер обмениваются данными

Каждое обращение к серверу — это вызов по сети. Пользователь нажал кнопку, клиентская процедура отправила запрос, сервер выполнил код и вернул результат.

В управляемых формах код делится по контекстам:

  • &НаКлиенте — выполняется на машине пользователя;
  • &НаСервере — выполняется на сервере, контекст формы передаётся целиком;
  • &НаСервереБезКонтекста — выполняется на сервере, но без передачи данных формы.

Разница между последними двумя заметна по скорости. Вызов с контекстом тащит в запрос все реквизиты формы, а вызов без контекста передаёт только явные параметры.

Пример: нужно получить курс валюты на дату.

&НаКлиенте
Процедура ПолучитьКурс(Команда)
    Курс = ПолучитьКурсНаСервере(Объект.Валюта, Объект.Дата);
    Сообщить("Курс: " + Курс);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьКурсНаСервере(Валюта, Дата)
    Возврат РаботаСКурсамиВалют.ПолучитьКурсВалюты(Валюта, Дата).Курс;
КонецФункции

Что стоит помнить про передачу данных:

  • 📦 Через границу клиент-сервер проходят примитивные типы, ссылки, структуры, массивы и соответствия из них. Объекты базы целиком (например, ДокументОбъект) через эту границу не передаются.
  • 🐌 Каждый вызов сервера стоит времени сети. Сто вызовов в цикле заметно медленнее одного вызова с массивом.
  • 🔁 Лучше собрать данные на клиенте в структуру, одним вызовом отправить на сервер и там обработать.

Типичный признак плохой архитектуры — медленная форма списка, где при открытии строки по одной читаются данные с сервера. Решение: читать пачкой в одном серверном вызове.

Ресурсы: что нагружает клиента, а что сервер

Нагрузка делится по ролям, и это определяет, на чём экономить, а на чём нет.

ПараметрКлиентСервер приложений
ПамятьХватает умеренного объёма, нагрузка растёт с числом открытых оконОсновной расход: каждый сеанс держит данные в рабочем процессе
ПроцессорОтрисовка формИсполнение кода, проведение, отчёты
ДискКэш и временные файлыБыстрые диски нужны СУБД, а не самому серверу 1С
СетьЗадержка важнее пропускной способностиНужен быстрый канал до СУБД

Практические ориентиры, они приблизительные и зависят от конфигурации:

  • на рабочее место с тонким клиентом хватает обычного офисного компьютера;
  • для сервера ориентируйтесь на несколько сотен мегабайт памяти на активный сеанс плюс запас под СУБД;
  • сервер 1С и СУБД лучше развести по разным машинам, когда пользователей больше нескольких десятков;
  • главное для скорости работы — быстрая связь между сервером 1С и СУБД.

Если «тормозит» у одного пользователя, а у остальных нормально, смотрите на клиента и его сеть. Если медленно у всех одновременно — на сервер, СУБД и блокировки.

Установка: что ставить на клиент, а что на сервер

Платформа 1С ставится одним установщиком, но компоненты выбираются в окне установки.

На сервере ставят компонент «Сервер 1С:Предприятия». После установки появляется служба «Агент сервера 1С:Предприятия 8.3», которую нужно запустить. СУБД ставится отдельно.

На рабочем месте нужен клиент: тонкий или толстый, в зависимости от задач. Серверный компонент пользователю не нужен.

Порядок для нового сервера:

  1. Установите СУБД и убедитесь, что она принимает подключения.
  2. Установите на сервер платформу с серверным компонентом.
  3. Запустите службу агента сервера.
  4. Создайте кластер и информационную базу в консоли администрирования серверов.
  5. Подключите клиентов, указав имя сервера и имя базы.

Строка подключения тонкого клиента к серверной базе выглядит так: имя сервера, затем имя базы в кластере. Например, srv-1c и buh.

Клиент и сервер должны быть одной версии платформы по первым трём числам номера: у 8.3.24.1548 и 8.3.24.1700 это 8.3.24, они совместимы. Клиент с другой веткой, например 8.3.25, к такому серверу не подключится, и платформа предложит обновить клиентскую часть.

Администрирование: на что смотреть

Администрирование сервера и администрирование клиента — разные задачи.

На стороне сервера:

  • консоль кластера: сеансы, соединения, блокировки, рабочие серверы;
  • утилита rac и сервис ras для работы из командной строки (подробнее — rac help);
  • ограничения на память рабочих процессов;
  • резервное копирование через средства СУБД, а не копированием файлов;
  • права доступа к кластеру и базам.

На стороне клиента:

  • список баз в окне запуска;
  • очистка локального кэша при странном поведении форм (параметр командной строки /ClearCache);
  • настройки веб-публикации, если используется браузер.

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

Для веб-клиента на сервере публикации нужен веб-сервер (Apache или IIS). Публикацию выполняют из Конфигуратора через меню администрирования, там же выбирается папка и имя виртуального каталога.

Что выбрать: файловый режим или клиент-сервер

Подсказка по выбору:

Какой режим подойдёт вашей организации?

Мини-кейс: форма открывается 12 секунд

Бухгалтер жалуется, что список документов открывается долго. Администратор первым делом проверяет, где тратится время: на клиенте или на сервере.

Порядок диагностики:

  1. Откройте ту же форму под другим пользователем с другого компьютера. Если медленно только у одного, дело в его машине или сети.
  2. Проверьте, нет ли у пользователя огромного кэша и десятков открытых окон. Закройте лишние и перезапустите клиент.
  3. Если медленно у всех, посмотрите в консоли кластера, сколько сеансов висит на рабочем процессе и нет ли долгих блокировок.
  4. Проверьте задержку между сервером 1С и СУБД. Даже небольшая задержка на каждом из сотен мелких запросов складывается в секунды.
  5. Если форма читает данные построчно, ищите в коде вызовы сервера внутри цикла.

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

Где граница: что можно и нельзя переносить на сервер

Соблазн «выполнить всё на сервере» понятен, но у серверного кода есть ограничения.

  • 🚫 Сервер не показывает диалоги и не вызывает окна пользователю. Вопросы пользователю задаёт только клиентский код.
  • 🚫 Серверный код не работает с файлами на компьютере пользователя: путь C:\Users\... на сервере указывает на диск самого сервера.
  • 🚫 Оборудование (сканеры, фискальные регистраторы) подключено к рабочему месту, поэтому им управляет клиент.
  • ✅ Запросы к базе, проведение, расчёты, формирование отчётов, обмены — это работа сервера.

Если коротко: всё, что связано с экраном, клавиатурой и устройствами пользователя, — клиент. Всё, что работает с данными базы, — сервер.

Хорошее правило при разработке: клиентский код пишите как можно тоньше, а тяжёлую логику выносите в серверные процедуры и вызывайте их одним обращением.

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

Можно ли поставить сервер и клиент 1С на одну машину?
Да. Для небольших организаций это обычная схема: на сервере стоит платформа с серверным компонентом, а на нём же запускаются клиенты. Для нагруженных баз клиентов выносят на рабочие места.
Нужна ли отдельная лицензия на сервер?
Для клиент-серверного режима нужна серверная лицензия и клиентские лицензии на подключения. Условия зависят от поставки, уточняйте у партнёра 1С.
Почему тонкий клиент не открывает Конфигуратор?
Конфигуратор запускается через толстый клиент. Тонкий рассчитан только на работу пользователей.
Что быстрее: файловая или серверная база?
На маленьких объёмах разница небольшая. С ростом числа пользователей и размера базы клиент-серверный режим выигрывает за счёт серверной обработки и блокировок на уровне СУБД.
Можно ли держать сервер 1С и СУБД на разных машинах?
Да, это рекомендуемая схема для средних и крупных баз. Важно обеспечить быструю сеть между ними.
Клиент и сервер должны быть одной версии платформы?
Первые три числа номера платформы должны совпадать, поэтому после обновления сервера до новой ветки обновляют и клиентов.