Клиент-серверная база 1С: как устроен сервер и чем он отличается от файловой

· 9 мин

Содержание

Пометка «На сервере 1С:Предприятия» значит, что база работает в клиент-серверном режиме. Данные лежат не в файле 1Cv8.1CD, а в СУБД (MS SQL Server, PostgreSQL, IBM Db2 или Oracle), а запросы пользователей обрабатывает отдельная служба — сервер 1С:Предприятия. Строка подключения у такой базы выглядит как Srvr="srv1c";Ref="buh";, у файловой — File="D:\Bases\buh";.

Обычная ситуация: бухгалтер открывает свойства базы в окне запуска, видит этот вариант и не понимает, можно ли скопировать базу на флешку. Нельзя — папки с базой на его компьютере нет. Её хранит сервер, и работать с ней нужно иначе: через консоль администрирования и средства СУБД.

Как устроен сервер 1С:Предприятия: агент, кластер и рабочие процессы

Сервер 1С — не одна программа, а набор процессов. Каждый отвечает за свою часть работы.

ПроцессПорт по умолчаниюЧто делает
ragent — агент сервера1540Принимает первое обращение клиента и консоли, управляет кластерами на этом компьютере
rmngr — менеджер кластера1541Хранит реестр кластера: список баз, рабочих серверов, сеансов, блокировок
rphost — рабочие процессы1560–1591Выполняют код конфигурации, запросы к СУБД, проведение документов
СУБД1433 (MS SQL), 5432 (PostgreSQL)Хранит сами данные

Путь запроса выглядит так:

  1. Клиент на рабочем месте обращается к агенту на порт 1540.
  2. Агент передаёт его менеджеру кластера на 1541.
  3. Менеджер назначает рабочий процесс из диапазона портов, заданного в свойствах рабочего сервера.
  4. Рабочий процесс выполняет код и обращается к СУБД.
  5. Клиент получает только результат — готовые данные формы или отчёта.

💡 Из-за этой схемы толстый запрос «на миллион строк» нагружает сервер, а не ноутбук бухгалтера. Клиенту по сети уходит то, что нужно показать на экране.

Кластер и рабочий сервер — в чём разница

Кластер — логическое объединение: в нём зарегистрированы базы и настроены общие правила (перезапуск процессов, допустимый объём памяти). Рабочий сервер — конкретный компьютер в кластере. На одном компьютере может быть несколько кластеров на разных портах, например 1541 и 1641. Тогда в строке подключения порт указывают через двоеточие: Srvr="srv1c:1641".

Служебные данные кластера лежат в каталоге srvinfo. В Windows это обычно C:\Program Files\1cv8\srvinfo. Там же находится реестр кластера 1CV8Clst.lst в папке reg_1541 и кэш сеансов.

Файловый и клиент-серверный режим: чем отличаются на практике

Платформа одна и та же, конфигурация тоже. Различается то, где хранятся данные и кто выполняет код.

КритерийФайловая базаНа сервере 1С:Предприятия
Где данныеФайл 1Cv8.1CD в папкеТаблицы в СУБД
Кто выполняет кодКаждый клиент самРабочие процессы rphost
Число пользователейКомфортно до 5–10 одновременноДесятки и сотни
БлокировкиТаблица целикомУправляемые, на уровне записей
Резервная копияСкопировать папку или выгрузить .dtСредства СУБД + выгрузка .dt
Нужна серверная лицензияНетДа
АдминистрированиеПочти не нужноКонсоль кластера, СУБД, мониторинг
Чувствительность к сетиВысокая: файл гоняется по сетиНиже: по сети идут результаты

👉 Когда пора переходить на сервер:

  • 📈 одновременно работают больше 7–10 человек, и при проведении все ждут друг друга;
  • 🔒 часто видите Конфликт блокировок при выполнении транзакции;
  • 🗂 размер файла 1Cv8.1CD перевалил за десятки гигабайт, а закрытие месяца идёт часами;
  • 🌐 нужны веб-клиент, обмены и регламентные задания, которые работают круглосуточно.

Переход на сервер не лечит медленный код доработок. Если отчёт тормозит из-за запроса в цикле, на сервере он тоже будет тормозить, просто нагрузка переедет в другое место.

Как установить сервер 1С:Предприятия и создать базу

Ниже — порядок для Windows Server 2016 и новее. На Linux логика та же: агент, кластер, СУБД, — меняется только установка пакетов и служб.

Шаг 1. Установите серверные компоненты платформы

  1. Запустите установщик дистрибутива «Технологическая платформа 1С:Предприятия (64-bit) для Windows».
  2. В списке компонентов отметьте Сервер 1С:Предприятия 8 и Администрирование сервера 1С:Предприятия.
  3. Включите установку сервера как службы Windows. Установщик предложит создать пользователя USR1CV8 или выбрать существующего.
  4. После установки проверьте в services.msc службу «Агент сервера 1С:Предприятия 8.3 (x86-64)» — она должна быть в состоянии «Выполняется».

Шаг 2. Подготовьте СУБД

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

Шаг 3. Откройте порты

На сервере и межсетевом экране разрешите входящие соединения:

1540        — агент сервера
1541        — менеджер кластера
1560-1591   — рабочие процессы

Шаг 4. Зарегистрируйте консоль администрирования

Консоль — это оснастка MMC. Если она открывается с ошибкой или не видит сервер, зарегистрируйте библиотеку той же версии, что и сервер, от имени администратора:

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

Номер версии в пути подставьте свой. Версия консоли и версия сервера должны совпадать до последней цифры, иначе консоль не подключится.

Шаг 5. Создайте базу

Проще всего — из окна запуска на рабочем месте:

  1. Добавить → Создание новой информационной базы → выберите конфигурацию или пустую базу.
  2. Вариант расположения — На сервере 1С:Предприятия.
  3. Заполните поля:
    • Кластер серверов — имя или IP сервера 1С;
    • Имя информационной базы в кластере — короткое латинское имя, например buh;
    • Тип СУБД, Сервер баз данных, Имя базы данных, пользователь и пароль СУБД;
    • для MS SQL — Смещение дат: 2000;
    • флажок Создать базу данных в случае её отсутствия.
  4. Нажмите Далее → Готово.

Тот же диалог есть в консоли администрирования: кластер → Информационные базы → Создать.

Шаг 6. Перенесите существующую файловую базу

  1. Откройте файловую базу в Конфигураторе.
  2. Администрирование → Выгрузить информационную базу → сохраните файл .dt.
  3. Создайте пустую серверную базу (шаг 5).
  4. Откройте её в Конфигураторе: Администрирование → Загрузить информационную базу → выберите .dt.

Загрузка .dt полностью заменяет данные в базе-приёмнике и требует монопольного доступа. Убедитесь, что грузите в новую пустую базу, а не в рабочую.

Лицензии и ключи защиты для работы на сервере

Для клиент-серверной базы нужны два вида лицензий:

  • 🖥 лицензия на сервер — разрешает запуск кластера. Бывает обычной и КОРП; есть версия для небольших компаний на ограниченное число пользователей;
  • 👤 клиентские лицензии — по числу одновременных сеансов пользователей.

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

Носители бывают двух видов:

НосительГде хранитсяОсобенности
Программная лицензия (пин-код)Файл лицензии в каталоге платформыПривязана к параметрам компьютера: замена диска или сетевой карты может потребовать повторной активации
Аппаратный ключ HASPUSB-ключНужен драйвер и, для сетевого ключа, менеджер лицензий

Проверить, какие лицензии сейчас заняты, можно через сеансы в консоли или командой утилиты rac (нужна запущенная служба ras):

rac session list --cluster=<id кластера> --licenses

Идентификатор кластера покажет rac cluster list. Полный перечень параметров — в rac help.

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

Диагностика: когда сервер 1С не отвечает или тормозит

Сначала определите, на каком звене цепочки «клиент → агент → кластер → рабочий процесс → СУБД» обрыв.

Диагностика: выберите симптом

Где искать причину торможения

  • 🔎 Сеансы и соединения в консоли: сколько людей работает, нет ли зависших сеансов с огромным временем вызова.
  • 🔒 Блокировки в консоли: кто кого держит при проведении.
  • 💾 Память rphost в диспетчере задач: если процесс растёт до десятков гигабайт, настройте в свойствах кластера Допустимый объём памяти и Интервал превышения допустимого объёма памяти — тогда платформа сама перезапустит раздувшийся процесс.
  • 📜 Технологический журнал — подробный лог сервера. Его включают файлом logcfg.xml в каталоге conf платформы. Пишите только нужные события (EXCP, TLOCK, DBMSSQL с отбором по длительности), иначе журнал за час займёт весь диск.
  • 🗄 Сама СУБД: устаревшая статистика и фрагментированные индексы дают больше тормозов, чем любая настройка 1С. Для MS SQL настройте план обслуживания с обновлением статистики, для PostgreSQL — VACUUM ANALYZE.

Если не помогло: очистка кэша сеансов

При странных ошибках после обновления платформы или аварийного выключения помогает очистка серверного кэша.

Процедура обрывает работу всех пользователей на сервере, поэтому делайте её вне рабочего времени:

  1. Предупредите пользователей и дождитесь выхода.
  2. Остановите службу агента сервера 1С.
  3. В каталоге srvinfo\reg_1541 удалите только папки snccntx*. Файл 1CV8Clst.lst не трогайте — это реестр кластера.
  4. Запустите службу и проверьте вход в базу.

Резервное копирование серверной базы и восстановление

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

СпособЧем делаетсяПлюсыМинусы
Бэкап СУБДПлан обслуживания MS SQL, pg_dump для PostgreSQLМожно по расписанию, без остановки работы, быстро на больших базахВосстанавливается только на ту же СУБД
Выгрузка .dtКонфигуратор: Администрирование → Выгрузить информационную базуПереносится на любую СУБД и в файловый режимДолго на больших базах, неудобно автоматизировать

Рабочая схема для небольшой компании:

  • 🌙 ежедневный полный бэкап средствами СУБД ночью;
  • ⏱ для MS SQL при модели восстановления Full — копии журнала транзакций каждые 1–2 часа;
  • 📦 раз в неделю — выгрузка .dt как страховка «на любую платформу»;
  • 💽 копии хранятся не на том же диске, что и база, а на другом сервере или в облаке.

Пример ночного бэкапа PostgreSQL:

"C:\Program Files\PostgreSQL\15\bin\pg_dump.exe" -U postgres -F c -f "E:\Backup\buh_%DATE:~-4%%DATE:~3,2%%DATE:~0,2%.backup" buh

Путь к pg_dump и формат даты подставьте под свою систему.

Как восстановить базу из копии

  1. В консоли откройте свойства базы и включите Блокировку начала сеансов и Блокировку регламентных заданий.
  2. Дождитесь выхода пользователей.
  3. Восстановите копию средствами СУБД в ту же базу данных. Безопаснее — сначала в новую базу с другим именем, проверить её, а потом переключить.
  4. Снимите блокировки и проверьте вход.

Проверяйте копии восстановлением хотя бы раз в квартал. Бэкап, который ни разу не разворачивали, — это надежда, а не копия.

Серверная база готова к работе
Выполнено: 0 / 8

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

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