Три звена вместо одного файла: как работает 1С:Предприятие на сервере
Содержание
Клиент-серверный режим работы 1С — это вариант, при котором данные лежат не в одном файле 1Cv8.1CD, а в промышленной СУБД (MS SQL Server, PostgreSQL, IBM Db2 или Oracle Database). Между пользователями и СУБД стоит сервер 1С:Предприятия: он выполняет запросы, держит сеансы и блокировки. Клиент на рабочем месте только показывает формы и передаёт команды.
На такой вариант переходят, когда файловая база перестаёт справляться: пользователей больше 10–15, документы проводятся с ожиданием блокировок, база растёт за десятки гигабайт. Платформа одна и та же, конфигурация та же. Меняется место хранения данных и то, кто выполняет код.
Как устроены три звена клиент-серверной 1С
Схему называют трёхзвенной: клиент → сервер 1С:Предприятия → сервер СУБД. Каждое звено можно поставить на отдельный компьютер, а в небольших компаниях сервер 1С и СУБД часто живут на одной машине.
| Звено | Что это | Что делает |
|---|---|---|
| Клиент | Тонкий клиент, толстый клиент, веб-клиент через браузер | Отрисовывает формы, отправляет вызовы на сервер, хранит локальный кэш конфигурации |
| Сервер 1С:Предприятия | Служба агента и процессы кластера | Выполняет серверный код конфигурации, запросы, проведение, регламентные и фоновые задания |
| СУБД | MS SQL Server, PostgreSQL, Db2, Oracle | Хранит таблицы базы, выполняет SQL-запросы, ведёт журнал транзакций |
Пользователь никогда не подключается к СУБД напрямую. Сервер 1С переводит запросы на встроенном языке в SQL нужной СУБД сам. Поэтому одна и та же конфигурация работает и на MS SQL, и на PostgreSQL без переделки.
💡 Тонкий клиент передаёт по сети только данные форм и вызовы. Это позволяет работать из удалённого филиала по обычному каналу, где файловая база по сетевой папке была бы неработоспособной.
Чем клиент-серверный режим отличается от файлового варианта
В файловом варианте каждый клиент сам читает и пишет файл базы по сети. Сервера как такового нет: роль «сервера» выполняет сетевая папка. Отсюда и ограничения.
| Параметр | Файловый вариант | Клиент-серверный вариант |
|---|---|---|
| Где данные | Один файл 1Cv8.1CD в каталоге базы | Таблицы в базе данных СУБД |
| Кто выполняет серверный код | Процесс клиента на каждом компьютере | Рабочие процессы сервера 1С |
| Блокировки | Блокируется таблица целиком | Управляемые блокировки на уровне записей |
| Регламентные задания | Выполняются, только пока открыт хотя бы один сеанс клиента | Выполняет сервер, независимо от пользователей |
| Резервное копирование | Копия файла или выгрузка .dt | Средства СУБД, без остановки работы |
| Масштабирование | Упирается в диск и сеть | Можно добавить рабочие серверы в кластер |
| Лицензии | Только клиентские | Клиентские плюс лицензия на сервер 1С |
| Стоимость владения | Минимальная | Лицензия сервера, возможно лицензия СУБД, выделенное железо |
Главное практическое отличие — блокировки. В файловой базе пока один бухгалтер проводит документ, второй ждёт, даже если работает с другим контрагентом. В клиент-серверной базе с управляемыми блокировками ждут только те, кто пишет те же самые записи регистров.
⚠️ Файловый вариант остаётся нормальным выбором для 3–5 пользователей и базы на несколько гигабайт. Переходить на сервер «на вырост» без реальных проблем имеет смысл, только если впереди рост штата или подключение филиалов.
Кластер серверов 1С: агент, менеджер и рабочие процессы
Сервер 1С:Предприятия — это не одна программа, а набор процессов. Вместе они образуют кластер серверов .
- 🧭 ragent — агент сервера. Работает как служба Windows «Агент сервера 1С:Предприятия 8.3» или демон в Linux. Слушает порт
1540, принимает первое обращение клиента и подключение консоли администрирования. - 🗂 rmngr — менеджер кластера. Порт
1541. Хранит реестр кластера: список баз, рабочих серверов, администраторов, распределяет сеансы. - ⚙️ rphost — рабочие процессы. Выполняют код конфигурации и запросы к СУБД. Берут порты из диапазона, по умолчанию
1560–1591.
Клиент сначала обращается к агенту на 1540, тот передаёт его менеджеру кластера на 1541, а менеджер назначает рабочий процесс. Дальше обмен идёт с рабочим процессом на одном из портов диапазона. Диапазон задаётся в свойствах рабочего сервера.
Если на файрволе открыт только порт 1540, клиент «видит» сервер, но не может подключиться к базе: закрыты 1541 и порты рабочих процессов.
Параметры службы видны в строке её запуска:
"C:\Program Files\1cv8\8.3.25.1374\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Здесь -port — порт агента, -regport — порт менеджера кластера, -range — диапазон рабочих процессов, -d — каталог служебных файлов srvinfo. Номер версии в пути у вас будет свой.
Две версии сервера на одной машине
Частый приём при обновлении платформы: поставить вторую версию сервера рядом, со своей службой и сдвинутыми портами (например, 2540, 2541, диапазон 2560:2591) и отдельным каталогом srvinfo. Тогда тестовые базы переводят на новую версию, а рабочие продолжают жить на старой. В строке подключения такого сервера порт указывают через двоеточие: server1c:2541.
Консоль администрирования и rac
Управляют кластером через оснастку «Администрирование серверов 1С Предприятия» (MMC в Windows). Если оснастка открывается с ошибкой или пустая после обновления платформы, перерегистрируйте библиотеку консоли от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"
Версия radmin.dll должна совпадать с версией сервера, к которому подключаетесь.
Вторая возможность — консольная утилита rac через сервер администрирования ras (по умолчанию порт 1545). Это удобно для скриптов и Linux:
ras cluster --daemon
rac cluster list
rac session list --cluster=<UUID_кластера>
Остальные параметры смотрите в справке rac help.
Как подключить базу к серверу 1С:Предприятия
Перед созданием базы на сервере должны работать служба агента и СУБД, а у пользователя СУБД — права на создание баз. Дальше всё делается из обычного окна запуска 1С.
- В окне запуска нажмите
Добавить…→Создание новой информационной базы(или добавление существующей, если база в кластере уже есть). - Выберите вариант размещения
На сервере 1С:Предприятия. - Заполните поля: кластер серверов (имя сервера 1С), имя базы в кластере, тип СУБД, сервер баз данных, имя базы данных, пользователь и пароль СУБД.
- Для новой базы поставьте флажок создания базы данных в случае её отсутствия.
- Если базу разворачиваете из копии рабочей, включите блокировку регламентных заданий — иначе копия начнёт отправлять отчёты, загружать банк и обмениваться с другими базами.
- После создания загрузите конфигурацию или данные из
.dtчерез Конфигуратор.
Строка подключения клиент-серверной базы выглядит так:
Srvr="server1c";Ref="buh_main";
Srvr — имя сервера 1С (не СУБД!), Ref — имя базы в кластере. Имя базы в кластере и имя базы данных в СУБД могут различаться, но удобнее держать их одинаковыми.
Версия платформы на клиенте должна совпадать с версией сервера 1С до последней цифры. Иначе подключение не установится, а клиент предложит скачать нужную версию, если это настроено.
Какую СУБД выбрать для сервера 1С и как её настроить
Выбор обычно сводится к двум вариантам: MS SQL Server или PostgreSQL. Db2 и Oracle встречаются в крупных компаниях, где эта СУБД уже есть.
| СУБД | Когда выбирают | На что смотреть |
|---|---|---|
| MS SQL Server | Инфраструктура на Windows, есть администратор SQL | Лицензия SQL Server; редакция Express ограничена по размеру базы и ресурсам, для рабочей базы не подходит |
| PostgreSQL | Нужна бесплатная СУБД, сервер на Linux или Windows | Нужна сборка с доработками под 1С (от фирмы 1С или Postgres Pro), обычная сборка из репозитория не подойдёт |
| IBM Db2 / Oracle Database | Корпоративный стандарт компании | Редко встречаются специалисты, сложнее найти помощь |
Настройки MS SQL Server, без которых будет медленно
- 🧠 Ограничение памяти. Задайте
max server memory, иначе SQL Server займёт почти всю память и оставит рабочие процессы 1С без неё. Ориентир на совмещённом сервере — оставить 1С и системе не меньше трети памяти. - 📒 Модель восстановления. При модели
Fullжурнал транзакций растёт до бесконечности без регулярного бэкапа журнала. Если копии журнала не делаете — ставьтеSimple. - 🗃 tempdb — на быстрый диск, несколько файлов данных одинакового размера.
- 🔤 Сортировку при создании базы задаёт сам сервер 1С. Создавать базу вручную в SQL Server с другой сортировкой не нужно.
Настройки PostgreSQL
После установки сборки для 1С поднимите shared_buffers, effective_cache_size, work_mem под объём памяти сервера: значения по умолчанию рассчитаны на очень слабую машину. Настройте регулярный VACUUM ANALYZE — автоочистка работает, но на крупных базах после массовых операций её лучше дополнять плановым запуском.
Диагностика производительности клиент-серверной 1С
Тормоза в клиент-серверной базе ищут по звеньям, а не «вообще». Сначала понять, где тратится время: на клиенте, в рабочем процессе 1С, в СУБД или в ожидании блокировки.
- Консоль кластера. Посмотрите список сеансов и их нагрузку, память процессов
rphost, вкладку блокировок. Если один сеанс держит блокировку минутами, причина видна сразу. - Счётчики сервера. Загрузка процессора, очередь к диску, свободная память на сервере 1С и на сервере СУБД. Нехватка памяти на СУБД — самая частая причина медленных отчётов.
- Технологический журнал. Включается файлом
logcfg.xmlв каталогеconfплатформы. Для поиска долгих запросов и конфликтов блокировок пишут событияDBMSSQL(илиDBPOSTGRS),TLOCK,TTIMEOUT,TDEADLOCK,EXCP. Журнал быстро растёт, поэтому ставьте отбор по длительности и срок хранения. - Свойства рабочего сервера и кластера. Там задают допустимый объём памяти рабочих процессов, интервал их перезапуска, число баз и соединений на процесс. Процесс, превысивший порог памяти, кластер перезапустит сам, без ручного вмешательства.
Безопасность и регламентное обслуживание сервера 1С
Сервер 1С по умолчанию открыт: любой, кто дошёл до порта 1540, может открыть консоль кластера и посмотреть или удалить базы. Закрыть это нужно сразу после установки.
Что настроить по безопасности
- 🔐 Администратор центрального сервера и администратор кластера. Пока их нет, управлять кластером может кто угодно с доступом по сети. Заведите обоих, пароли храните отдельно от сервера.
- 👤 Пользователь службы. Служба агента запускается от отдельной учётной записи (по умолчанию
USR1CV8) без прав администратора Windows. Запуск отLocalSystemили доменного админа — лишний риск. - 🧱 Файрвол. Открывайте порты 1540, 1541 и диапазон процессов только для подсетей пользователей, а порт СУБД — только для сервера 1С.
- 🗝 Пользователь СУБД для 1С — отдельный, а не
saилиpostgres, с паролем, которого не знают пользователи. - 🛡 Профили безопасности кластера ограничивают внешние обработки и доступ кода к файлам и сети. Полезны, когда в базе работают сторонние доработки.
Регламент обслуживания
- 💾 Резервные копии средствами СУБД по расписанию: полная ежедневно, для MS SQL в модели
Full— ещё и копии журнала. Выгрузка.dt— дополнение, а не замена: на большой базе она идёт долго и требует отключения пользователей. - 🧹 Обслуживание индексов и статистики раз в неделю для MS SQL (перестроение или реорганизация индексов, обновление статистики), для PostgreSQL —
VACUUM ANALYZE. - ♻️ Проверка восстановления. Раз в квартал восстанавливайте копию в тестовую базу. Копия, которую ни разу не разворачивали, — это надежда, а не копия.
- 🔄 Обновление платформы — сначала на тестовой копии, потом на рабочем сервере, вместе с клиентами.
Для технических работ используйте блокировку начала сеансов в свойствах базы в консоли кластера. Можно указать время, сообщение для пользователей и код разрешения, по которому администратор войдёт несмотря на блокировку.
Частые ошибки при переходе на клиент-серверный вариант
- ❌ Перенос базы «как есть» без теста. Выгрузите
.dtиз файловой базы, загрузите в серверную копию и проверьте обмены, печать и внешние обработки. Часть старых обработок пишет в файлы на «своём» компьютере, а на сервере такого пути нет. - ❌ Пути к файлам на клиенте. Серверный код выполняется на сервере 1С. Путь
C:\Обмен\в регламентном задании ищется на сервере, а не на компьютере бухгалтера. Используйте сетевые папки с правами для пользователя службы. - ❌ Совмещённый слабый сервер. 1С и СУБД на одной машине с 8 ГБ памяти работают медленнее хорошей файловой базы на SSD. Памяти должно хватать обоим.
- ❌ Забытая лицензия на сервер. Клиентских лицензий для работы с сервером недостаточно: нужна лицензия на сам сервер 1С:Предприятия. Без неё пользователи не смогут подключиться к серверной базе.
- ❌ Копия рабочей базы с включёнными заданиями. Тестовая копия отправляет документы контрагентам по ЭДО и забирает выписки из банка. Ставьте блокировку регламентных заданий при каждом создании копии.
Частые вопросы о клиент-серверном режиме 1С
Можно ли перевести файловую базу на сервер без потери данных?
.dt через Конфигуратор, создайте пустую базу на сервере 1С и загрузите туда файл. Данные, пользователи и конфигурация переносятся полностью.Сколько пользователей выдерживает клиент-серверная база?
Как понять, в каком режиме открыта база?
File=, клиент-серверная — с Srvr=.