Клиент-серверная 1С изнутри: что делает сервер и когда на него переходить
Содержание
Сервер 1С нужен, чтобы база работала у многих пользователей одновременно и не «ложилась» от роста данных. Он берёт на себя выполнение кода и обмен с СУБД, а сами данные хранятся не в одном файле 1Cv8.1CD, а в полноценной базе данных: Microsoft SQL Server, PostgreSQL, IBM Db2 или Oracle.
В файловом варианте каждый компьютер сам читает и пишет общий файл по сети. В клиент-серверном клиент лишь отправляет запросы, а тяжёлую работу делает сервер. Отсюда главные отличия: скорость при 10+ пользователях, надёжность, тонкое управление правами и сеансами.
Как устроен клиент-серверный вариант 1С
Схема из трёх звеньев:
- 💻 Клиент — тонкий клиент, толстый клиент или браузер через веб-сервер.
- ⚙️ Кластер серверов 1С:Предприятия — один или несколько рабочих серверов, которые выполняют серверный код конфигурации.
- 🗄️ СУБД — хранит таблицы базы. Может стоять на той же машине, что и сервер 1С, или на отдельной.
Внутри сервера 1С работают три вида процессов:
| Процесс | Что делает | Порт по умолчанию |
|---|---|---|
ragent | агент сервера: первая точка входа клиента и консоли администрирования | 1540 |
rmngr | менеджер кластера: хранит реестр баз, распределяет сеансы | 1541 |
rphost | рабочие процессы: выполняют код, ходят в СУБД | диапазон 1560–1591 |
Подключение идёт по цепочке: клиент обращается к агенту на 1540, тот направляет его к менеджеру кластера на 1541, а затем клиент получает соединение с рабочим процессом из диапазона портов. Диапазон для rphost задаётся в свойствах рабочего сервера, а не кластера.
Если клиенты подключаются через межсетевой экран, открывать нужно все три зоны: 1540, 1541 и весь диапазон рабочих процессов. Открыли только 1540 — получите ошибку соединения после первого обращения.
Код конфигурации, помеченный директивой &НаСервере, в клиент-серверном варианте выполняется в rphost на сервере. В файловом варианте «сервер» эмулируется внутри процесса пользователя на его же компьютере. Поэтому одна и та же конфигурация работает в обоих режимах, но ведёт себя по-разному в мелочах (пути к файлам, права, COM-объекты — об этом ниже).
Чем серверная 1С отличается от файловой версии
Короткая сводка по пунктам, которые чаще всего решают выбор.
| Критерий | Файловая база | Клиент-серверная база |
|---|---|---|
| Где лежат данные | файл 1Cv8.1CD в сетевой папке | таблицы в СУБД |
| Кто выполняет серверный код | компьютер пользователя | рабочие процессы сервера |
| Комфортное число одновременных пользователей | ориентировочно до 5–10 | десятки и сотни |
| Размер базы | на больших объёмах заметно замедляется | ограничен в основном ресурсами СУБД и дисков |
| Блокировки | на уровне таблиц | на уровне записей (управляемые блокировки) |
| Резервное копирование | копия файла или выгрузка .dt | средства СУБД, в том числе без остановки работы |
| Администрирование сеансов | почти никакого | консоль кластера, rac, завершение сеансов |
| Стоимость | только клиентские лицензии | плюс лицензия сервера, СУБД (может быть бесплатной), железо |
Главная практическая разница — блокировки. В файловой базе при проведении документа блокируется таблица целиком, и коллеги ждут. В серверной блокируется только то, что действительно меняется, и десять кладовщиков проводят документы параллельно.
Вторая разница — устойчивость к сбоям. Обрыв сети при записи в файл 1Cv8.1CD может повредить базу. В серверном варианте транзакция в СУБД либо фиксируется, либо откатывается целиком.
Управление кластером серверов 1С
Основной инструмент — Консоль администрирования серверов 1С:Предприятия. Это оснастка MMC, она ставится вместе с сервером или отдельно на рабочее место администратора.
Что в ней делают:
- 📋 создают и удаляют информационные базы в кластере;
- 👥 смотрят активные сеансы и соединения, завершают зависшие;
- 🔒 включают блокировку начала сеансов и блокировку регламентных заданий перед обновлением;
- ⚙️ настраивают рабочие серверы, диапазоны портов, требования назначения функциональности;
- 🛡️ задают администраторов кластера и профили безопасности.
Если консоль не открывается или пишет об ошибке оснастки, частая причина — не зарегистрирована библиотека radmin.dll нужной версии платформы. Её регистрируют через regsvr32 из каталога bin установленной платформы, запустив командную строку от имени администратора. Версия консоли должна совпадать с версией сервера.
Для Linux и для скриптов есть связка ras + rac. Сервер администрирования ras поднимается рядом с агентом (по умолчанию слушает порт 1545), а утилита rac отправляет ему команды:
# список кластеров на сервере
rac localhost:1545 cluster list
# сеансы в кластере
rac localhost:1545 session list --cluster=<uuid-кластера>
# полный перечень команд и параметров
rac help
Завершение сеанса через консоль или rac обрывает работу пользователя без сохранения. Перед завершением сеансов и перезапуском службы предупредите людей и делайте это вне рабочего времени.
Сервер 1С: требования к железу и лицензиям
Оборудование
Точных цифр «на все случаи» нет, но для старта годятся такие ориентиры:
| Нагрузка | Процессор | Память | Диски |
|---|---|---|---|
| до 15 пользователей, СУБД на той же машине | 4 ядра | 16 ГБ | SSD под базу и журналы |
| 15–50 пользователей | 8 ядер | 32 ГБ | отдельные SSD/NVMe под данные СУБД и под временные файлы |
| 50+ пользователей | СУБД на отдельной машине | от 64 ГБ на сервер СУБД | NVMe, RAID 10 |
Серверу 1С важнее высокая частота ядра, чем их количество: один тяжёлый отчёт выполняется в основном в одном потоке. СУБД больше всего любит память и быстрые диски.
ОС для сервера — Windows Server 2016 и новее или поддерживаемые дистрибутивы Linux. Сервер 1С и PostgreSQL на Linux — рабочая и распространённая связка.
Лицензии
Для клиент-серверной работы нужны:
- Лицензия на сервер 1С:Предприятия — уровня ПРОФ или КОРП. КОРП добавляет возможности для крупных внедрений (масштабирование и отказоустойчивость кластера), для типичной компании хватает ПРОФ. Набор функций сверяйте с описанием лицензий у партнёра перед покупкой.
- Клиентские лицензии — по числу одновременных пользователей. В серверном варианте их удобно ставить на сервер: тогда пользователи берут лицензии из общего пула, где бы они ни работали.
- Лицензия СУБД — для Microsoft SQL Server она платная, сборки PostgreSQL для 1С распространяются бесплатно.
Одна лицензия сервера покрывает все базы на этом рабочем сервере. Ориентир по цене: лицензия сервера ПРОФ — порядка нескольких десятков тысяч рублей, КОРП — заметно дороже; актуальный прайс уточняйте у партнёра.
Без лицензии платформа базу не запустит — «демо-режима» у сервера нет. Исключение — учебная версия, но клиент-серверный вариант она не поддерживает.
Производительность серверной базы и её настройка
Сам по себе переход на сервер не гарантирует скорость. Медленная база на сервере почти всегда упирается в одно из четырёх мест:
- 🐢 Диски СУБД — HDD вместо SSD или общий диск с другими системами.
- 🧠 Память — СУБД не хватает памяти под кэш, она постоянно читает с диска.
- 🔐 Блокировки — конфигурация в автоматическом режиме блокировок или тяжёлые транзакции, которые держат данные долго.
- 🧹 Обслуживание СУБД — не обновляется статистика, не перестраиваются индексы.
Что настраивают в первую очередь:
- Регламентное обслуживание СУБД. Для MS SQL — планы обслуживания с обновлением статистики и перестроением индексов. Для PostgreSQL —
VACUUMиANALYZE(автоочистка должна быть включена). - Параметры рабочего сервера. В свойствах рабочего сервера в консоли задают количество информационных баз и соединений на один рабочий процесс, лимиты памяти рабочих процессов. Значения по умолчанию подходят для начала, менять их стоит по результатам замеров.
- Технологический журнал. Его включают файлом
logcfg.xmlв каталогеconfплатформы и смотрят события долгих запросов и ожиданий на блокировках. Это главный источник правды при разборе тормозов. - Режим блокировок конфигурации. Типовые конфигурации давно работают в управляемом режиме. Если у вас старая доработанная конфигурация на автоматических блокировках — серверный вариант раскроется только после её перевода.
Технологический журнал при подробных настройках быстро съедает диск. Задавайте срок хранения и включайте только нужные события.
Безопасность и права доступа в клиент-серверной 1С
Права в серверном варианте живут на трёх уровнях. Их часто путают.
| Уровень | Где настраивается | Что защищает |
|---|---|---|
| Администраторы кластера | консоль, раздел администраторов кластера | создание и удаление баз, управление сеансами |
| Пользователи СУБД | средства СУБД | доступ к таблицам напрямую, в обход 1С |
| Пользователи и роли 1С | внутри конфигурации | что человек видит и делает в программе |
Минимальный набор мер:
- 🔑 Задайте администратора кластера. Пока его нет, любой, кто дотянется до порта 1540 с консолью, может удалить базу из кластера.
- 🗄️ Отдельный пользователь СУБД для 1С вместо
saилиpostgres. Пароль к нему знает только администратор. - 🧑💻 Служба сервера 1С запускается от отдельной учётной записи ОС с минимальными правами (при стандартной установке на Windows это
USR1CV8). - 🧱 Сетевой доступ. Порты 1540, 1541 и диапазон рабочих процессов открыты только для пользовательской сети, порт СУБД — только для сервера 1С.
- 🛡️ Профили безопасности в кластере ограничивают внешние обработки и расширения: доступ к файловой системе, COM-объектам, интернет-ресурсам.
В свойствах информационной базы в кластере проверьте параметр выдачи лицензий сервером: если клиентские лицензии стоят на сервере, он должен быть включён. Там же хранятся имя и пароль пользователя СУБД — пользователям 1С их знать не нужно.
Перенос файловой базы на сервер 1С
Классический и самый надёжный способ — через файл выгрузки .dt.
Подготовка
- Убедитесь, что на сервере стоит та же версия платформы, что используется у пользователей, — или новее, если вы планируете обновить её всем.
- Установите и проверьте СУБД. Для PostgreSQL берите сборку, рекомендованную для вашей версии платформы.
- Сделайте копию файла
1Cv8.1CD— это ваш путь отката.
Перенос
- Откройте файловую базу
в Конфигураторе и выполните
Администрирование → Выгрузить информационную базу. Получите файл.dt. - В консоли кластера создайте новую информационную базу: укажите имя базы в кластере, тип СУБД, сервер СУБД, имя базы данных и пользователя СУБД. Можно отметить флажок создания базы данных, если её ещё нет.
- Добавьте эту базу в список у себя: в окне запуска выберите добавление существующей базы, вариант «На сервере 1С:Предприятия», укажите имя сервера и имя базы в кластере.
- Откройте новую базу в Конфигураторе и выполните
Администрирование → Загрузить информационную базу, выбрав файл.dt. Загрузка требует монопольного доступа и полностью заменяет содержимое базы. - Запустите базу в режиме 1С:Предприятие, проверьте остатки по ключевым счетам или регистрам и открытие пары документов.
- Разошлите пользователям новую строку подключения и уберите старую файловую базу из их списков, чтобы никто не продолжил работать в ней.
Файловую базу после переноса переведите в режим «только чтение» или переименуйте папку — иначе через неделю окажется, что половина отдела работает в старой базе.
Что ломается после переезда
Опытный администратор проверяет эти места до того, как пользователи начнут жаловаться:
- 📁 Пути к файлам. Серверный код ищет
C:\Обмен\уже на диске сервера, а не на компьютере пользователя. Пути к общим папкам обменов и загрузок нужно указывать в формате\\сервер\папка. - 👤 Права службы. Сетевые папки должны быть доступны учётной записи, от которой работает служба сервера 1С, а не только самим пользователям.
- 🧩 COM-объекты и внешние компоненты при серверном вызове создаются на сервере. Если Excel или драйвер оборудования стоял только на рабочих местах, серверная обработка не найдёт его.
- ⏰ Регламентные задания начинают выполняться сами по расписанию. Проверьте, что обмены и загрузки не запустятся дважды — в серверной и в ещё живой файловой копии.
- 🔐 Лицензии. Если клиентские лицензии были привязаны к рабочим местам, решите, оставляете их там или переносите на сервер.