Три звена вместо одного файла: как работает 1С:Предприятие на сервере

· 11 мин

Содержание

Клиент-серверный режим работы 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. В окне запуска нажмите Добавить… → Создание новой информационной базы (или добавление существующей, если база в кластере уже есть).
  2. Выберите вариант размещения На сервере 1С:Предприятия.
  3. Заполните поля: кластер серверов (имя сервера 1С), имя базы в кластере, тип СУБД, сервер баз данных, имя базы данных, пользователь и пароль СУБД.
  4. Для новой базы поставьте флажок создания базы данных в случае её отсутствия.
  5. Если базу разворачиваете из копии рабочей, включите блокировку регламентных заданий — иначе копия начнёт отправлять отчёты, загружать банк и обмениваться с другими базами.
  6. После создания загрузите конфигурацию или данные из .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С, в СУБД или в ожидании блокировки.

  1. Консоль кластера. Посмотрите список сеансов и их нагрузку, память процессов rphost, вкладку блокировок. Если один сеанс держит блокировку минутами, причина видна сразу.
  2. Счётчики сервера. Загрузка процессора, очередь к диску, свободная память на сервере 1С и на сервере СУБД. Нехватка памяти на СУБД — самая частая причина медленных отчётов.
  3. Технологический журнал. Включается файлом logcfg.xml в каталоге conf платформы. Для поиска долгих запросов и конфликтов блокировок пишут события DBMSSQL (или DBPOSTGRS), TLOCK, TTIMEOUT, TDEADLOCK, EXCP. Журнал быстро растёт, поэтому ставьте отбор по длительности и срок хранения.
  4. Свойства рабочего сервера и кластера. Там задают допустимый объём памяти рабочих процессов, интервал их перезапуска, число баз и соединений на процесс. Процесс, превысивший порог памяти, кластер перезапустит сам, без ручного вмешательства.
Диагностика: выберите симптом

Безопасность и регламентное обслуживание сервера 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=.
Нужен ли отдельный сервер под СУБД?
Нет, для 20–50 пользователей сервер 1С и СУБД часто ставят на одну машину. Разносят их, когда упираются в память или диск либо когда СУБД обслуживает и другие системы.
Можно ли работать с серверной базой через интернет?
Можно через веб-клиент или тонкий клиент по HTTP, опубликовав базу на веб-сервере (IIS или Apache). Порты кластера 1540–1591 в интернет напрямую не открывают.