Как устроен клиент-серверный вариант 1С:Предприятия 8.3 и что в нём настраивают

· 11 мин

Содержание

В клиент-серверном варианте 1С база лежит в СУБД (MS SQL Server или PostgreSQL), а между пользователями и СУБД стоит сервер 1С:Предприятия. Клиент на рабочем месте только показывает формы и шлёт вызовы; запросы, проведение документов и запись данных выполняет сервер. Клиент к СУБД напрямую никогда не подключается.

Отсюда вся разница с файловым режимом, где в роли «сервера» выступает сам клиент, читающий файл 1Cv8.1CD по сети. Клиент-серверная архитектура 1С нужна, когда в базе работают десятки пользователей, база перевалила за несколько гигабайт или нужен доступ из филиалов.

Чем клиент 1С отличается от сервера и где выполняется код

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

Что делает каждая сторона:

  • 🖥️ Клиент — рисует интерфейс, хранит данные открытой формы, проверяет заполнение полей до записи, работает с локальными файлами и оборудованием (сканеры, принтеры чеков).
  • ⚙️ Сервер 1С — выполняет запросы, проводит документы, держит управляемые блокировки, считает итоги регистров, запускает регламентные и фоновые задания.
  • 🗄️ СУБД — хранит таблицы, выполняет SQL-запросы, которые сервер 1С строит из запросов на встроенном языке, ведёт журнал транзакций.
ПризнакФайловый вариантКлиент-серверный вариант
Где хранятся данныеФайл 1Cv8.1CD в папкеОтдельная база в СУБД
Кто выполняет запросыПроцесс клиента у каждого пользователяРабочий процесс rphost на сервере
БлокировкиНа уровне всей таблицыУправляемые, на уровне записей
Резервная копияКопия файла или выгрузка .dtСредства СУБД, без остановки работы
Комфортное число пользователейПримерно до 10–15Десятки и сотни
Регламентные заданияТолько пока открыт клиентВыполняет сервер, клиенты не нужны

Перевести базу из файлового режима в клиент-серверный можно без программиста: выгрузить .dt в Конфигураторе (Администрирование → Выгрузить информационную базу), создать базу в кластере и загрузить туда файл. Код конфигурации менять не нужно.

Какие бывают клиенты 1С и когда какой выбрать

Платформа 8.3 ставит на рабочее место несколько исполняемых файлов. Все они умеют работать с базой на сервере, но ведут себя по-разному.

КлиентФайл / способЧто умеетКогда выбирать
Толстый клиент1cv8.exeУправляемое и обычное приложение, КонфигураторСтарые конфигурации на обычных формах, работа программиста
Тонкий клиент1cv8c.exeТолько управляемое приложениеОсновной вариант для БП 3.0, ЗУП 3.1, УТ 11
Веб-клиентБраузерУправляемое приложение без установки платформыУдалённые сотрудники, редкий доступ
Мобильный клиентПриложение на телефонеУправляемые формы, адаптированные под экранРабота «в поле»

Толстый клиент

Толстый клиент содержит почти всю платформу. В режиме обычного приложения он исполняет на своей стороне объектную модель: объект справочника можно получить и прочитать прямо в клиентском коде, а платформа сама пересылает нужные обращения на сервер. Из-за этого толстый клиент гоняет по сети больше данных и плохо переносит медленные каналы.

Конфигуратор — это тоже режим толстого клиента: 1cv8.exe DESIGNER.

Тонкий клиент

Тонкий клиент не умеет исполнять серверный код вовсе. Он получает от сервера описание формы и данные, показывает их и отправляет назад действия пользователя. Дистрибутив меньше, трафика меньше, и он нормально работает даже через VPN с задержкой в десятки миллисекунд.

Веб-клиент

Веб-клиенту нужна публикация базы на веб-сервере (IIS или Apache) с модулем расширения веб-сервера 1С. Браузер общается с веб-сервером по HTTP(S), а тот — с кластером 1С. Функциональность почти как у тонкого клиента , но работа с локальными файлами и оборудованием ограничена возможностями браузера.

Версия клиента и сервера должна совпадать до последней цифры сборки. Тонкий клиент 8.3.24.1691 не подключится к серверу 8.3.24.1586. При обновлении сервера сначала решите, как обновятся рабочие места: автоматически при подключении или через общую папку дистрибутива.

Сервер 1С изнутри: агент, менеджер кластера и процессы rphost

Сервер 1С:Предприятия — не одна программа, а набор процессов. Их видно в диспетчере задач Windows или командой ps в Linux.

ПроцессПорт по умолчаниюРоль
ragent — агент сервера1540Точка входа: принимает первое подключение, хранит список кластеров, запускает остальные процессы
rmngr — менеджер кластера1541Хранит реестр баз и сеансов, распределяет клиентов по рабочим процессам, ведёт службы кластера
rphost — рабочий процесс1560–1591Выполняет код конфигурации и запросы, держит соединения с СУБД
ras — сервер администрирования1545Нужен для утилиты rac и сторонних консолей

Путь подключения клиента

  1. Клиент обращается к агенту сервера по порту 1540.
  2. Агент передаёт его менеджеру кластера (порт 1541).
  3. Менеджер выбирает рабочий процесс и сообщает клиенту его адрес и порт из диапазона.
  4. Дальше клиент общается напрямую с rphost.

Консоль администрирования тоже ходит через агент. Поэтому, когда «консоль видит сервер, а клиенты не подключаются», почти всегда закрыт диапазон портов рабочих процессов, а не 1540.

Кластер и рабочие серверы

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

Сколько процессов rphost поднимется, сервер решает сам, исходя из настроек рабочего сервера: числа баз и соединений на процесс. Один процесс обслуживает много сеансов, поэтому 50 пользователей не означают 50 процессов.

Служба и её параметры

Сервер ставится как служба Windows (1C:Enterprise 8.3 Server Agent с указанием разрядности) или как сервис systemd в Linux. Параметры запуска агента видны в свойствах службы в строке «Исполняемый файл»:

"C:\Program Files\1cv8\8.3.24.1691\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

Здесь -port — порт агента, -regport — порт главного менеджера кластера, -range — диапазон портов, -d — каталог srvinfo с реестром кластера и сеансовыми данными. Ключ -debug включает отладку на сервере; на боевом сервере без нужды его не держат.

Сервер 1С и СУБД: кто с кем разговаривает

Связь с базой данных держат только рабочие процессы. Когда пользователь проводит документ, rphost превращает запрос встроенного языка в SQL, открывает транзакцию в СУБД, пишет движения и фиксирует транзакцию. Клиенту СУБД не видна вовсе: на рабочем месте не нужны ни драйверы, ни логин к SQL Server.

Что поддерживает платформа 8.3:

  • 🟦 Microsoft SQL Server — привычный выбор под Windows;
  • 🐘 PostgreSQL — сборки с патчами для 1С (от фирмы 1С и от Postgres Professional);
  • 🟧 IBM Db2 и Oracle Database — встречаются редко, в крупных компаниях.

Как регистрируют базу в кластере

В консоли кластера на ветке Информационные базы создают новую базу. Указывают:

  1. имя базы в кластере — его потом вводят клиенты;
  2. тип СУБД и адрес сервера СУБД (localhost, если он на той же машине);
  3. имя базы в СУБД и пользователя СУБД с правом создавать базы;
  4. смещение дат (для MS SQL обычно 2000) и флажок создания базы, если её ещё нет.

Одна машина или две

Сервер 1С и СУБД можно ставить на одну машину или разнести. На одной машине нет сетевых задержек между rphost и СУБД: для MS SQL это особенно заметно на коротких запросах. Но тогда они делят память — и SQL Server по умолчанию стремится занять почти всю ОЗУ.

Ограничьте память СУБД вручную. В MS SQL это параметр «Максимальный объём памяти сервера» в свойствах экземпляра. Оставьте процессам rphost и системе запас: на машине с 64 ГБ под SQL Server обычно отдают 40–48 ГБ, остальное — серверу 1С и ОС.

Порты, файрвол и строка подключения

Минимальный набор портов на сервере 1С, которые нужно открыть для входящих подключений от клиентов:

ПортКому нужен
1540Агент сервера: клиенты и консоль
1541Менеджер кластера
1560–1591Рабочие процессы (или ваш диапазон из свойств рабочего сервера)
1545Только если используете ras/rac удалённо
1433 / 5432Порт MS SQL / PostgreSQL — только между сервером 1С и сервером СУБД, клиентам не нужен

Пример правил Windows Firewall из командной строки администратора:

netsh advfirewall firewall add rule name="1C agent and manager" dir=in action=allow protocol=TCP localport=1540-1541
netsh advfirewall firewall add rule name="1C rphost" dir=in action=allow protocol=TCP localport=1560-1591

Добавление базы на рабочем месте

В окне запуска нажмите «Добавить» → «Добавление в список существующей информационной базы» → вариант «На сервере 1С:Предприятия». Заполните два поля: кластер серверов (имя машины) и имя базы в кластере. В строке подключения это выглядит так:

Srvr="srv-1c";Ref="buh";

Если порт кластера изменён, его пишут через двоеточие: Srvr="srv-1c:1741"; — указывается порт менеджера кластера, а не агента.

Имя сервера должно резолвиться

Это главный приём, который спасает при «необъяснимых» отказах. Менеджер кластера сообщает клиенту адрес рабочего процесса по имени компьютера, а не по IP. Если клиент не может разрешить это имя (нет общего DNS, подключение через VPN, сервер в другом домене), соединение рвётся уже после ответа агента.

Решение — добавить строку в C:\Windows\System32\drivers\etc\hosts на рабочем месте:

10.0.5.20    srv-1c

Имя должно совпадать с тем, под которым рабочий сервер зарегистрирован в кластере, — его видно в консоли в ветке «Рабочие серверы».

Производительность клиент-серверной 1С: где теряется скорость

Тормоза в клиент-серверной базе почти всегда находятся в одном из трёх мест: сеть между клиентом и сервером, сервер 1С или СУБД. Сначала поймите, где именно, и только потом лечите.

  • 🌐 Сеть клиент — сервер. Много серверных вызовов на каждое действие. Каждый вызов через VPN с задержкой 40 мс съедает эти 40 мс. Форма, которая делает 15 вызовов при открытии, открывается больше полсекунды только из-за сети.
  • 🧠 Сервер 1С. Процессы rphost упираются в память или процессор, работают долгие фоновые задания, разрастаются сеансовые данные.
  • 🗄️ СУБД. Устаревшая статистика, фрагментированные индексы, ожидание блокировок, медленный диск под журналом транзакций.

Что делают в первую очередь

  1. Обслуживание СУБД. Для MS SQL — регулярное обновление статистики и перестроение индексов планом обслуживания (обычно ночью). Для PostgreSQL — проверка работы autovacuum и ANALYZE.
  2. Лимиты памяти рабочего сервера. В свойствах рабочего сервера задают максимальный объём памяти рабочих процессов и безопасный расход памяти за один вызов. Второй параметр не даёт одному тяжёлому отчёту «положить» весь процесс вместе с чужими сеансами.
  3. Технологический журнал. Файл logcfg.xml в каталоге conf платформы включает сбор событий: долгие запросы (DBMSSQL), ожидания на блокировках (TLOCK, TTIMEOUT), взаимоблокировки (TDEADLOCK). Без журнала поиск тормозов превращается в гадание.
  4. Сокращение серверных вызовов в доработках. Логику, которой не нужна форма, выносят в &НаСервереБезКонтекста: тогда на сервер не передаются данные формы.
Диагностика: выберите симптом

Типичные ошибки подключения к серверу 1С и их причины

Текст ошибкиЧастая причинаЧто проверить
Сервер 1С:Предприятия не обнаруженСлужба агента не запущена или закрыт порт 1540Статус службы, Test-NetConnection srv-1c -Port 1540
Не удается установить соединение, т.к. конечный компьютер отверг запрос на подключениеЗакрыт диапазон 1560–1591 или не резолвится имя сервераПравила файрвола, файл hosts
Информационная база не обнаруженаОпечатка в имени базы в кластереИмя в ветке «Информационные базы» консоли
Различаются версии клиента и сервераОбновили сервер, но не клиентовНомер сборки на рабочем месте и на сервере
Не найдена лицензияНет свободных клиентских лицензий на сервереЧисло сеансов и выданных лицензий: rac session list --licenses

Консоль кластера не открывается

Если оснастка «Администрирование серверов 1С Предприятия» пишет, что не может создать объект, после обновления платформы нужно перерегистрировать библиотеку консоли той же версии, что и сервер. Командная строка от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1691\bin\radmin.dll"

Очистка сеансовых данных кластера

При странных зависаниях сеансов практики очищают сеансовые данные в каталоге srvinfo: останавливают службу агента, удаляют папки snccntx* внутри каталога кластера и запускают службу снова. Файлы реестра кластера (1CV8Clst.lst, 1CV8Reg.lst) не трогают.

Остановка службы сервера 1С обрывает все сеансы пользователей и фоновые задания. Несохранённые данные пропадут. Делайте это вне рабочего времени, предупредив пользователей, и только после резервного копирования каталога srvinfo.

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

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