Клиент-серверная база 1С: как устроен сервер и чем он отличается от файловой
Содержание
Пометка «На сервере 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) | Хранит сами данные |
Путь запроса выглядит так:
- Клиент на рабочем месте обращается к агенту на порт 1540.
- Агент передаёт его менеджеру кластера на 1541.
- Менеджер назначает рабочий процесс из диапазона портов, заданного в свойствах рабочего сервера.
- Рабочий процесс выполняет код и обращается к СУБД.
- Клиент получает только результат — готовые данные формы или отчёта.
💡 Из-за этой схемы толстый запрос «на миллион строк» нагружает сервер, а не ноутбук бухгалтера. Клиенту по сети уходит то, что нужно показать на экране.
Кластер и рабочий сервер — в чём разница
Кластер — логическое объединение: в нём зарегистрированы базы и настроены общие правила (перезапуск процессов, допустимый объём памяти). Рабочий сервер — конкретный компьютер в кластере. На одном компьютере может быть несколько кластеров на разных портах, например 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С:Предприятия (64-bit) для Windows».
- В списке компонентов отметьте Сервер 1С:Предприятия 8 и Администрирование сервера 1С:Предприятия.
- Включите установку сервера как службы Windows. Установщик предложит создать пользователя
USR1CV8или выбрать существующего. - После установки проверьте в
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С:Предприятия.
- Заполните поля:
- Кластер серверов — имя или IP сервера 1С;
- Имя информационной базы в кластере — короткое латинское имя, например
buh; - Тип СУБД, Сервер баз данных, Имя базы данных, пользователь и пароль СУБД;
- для MS SQL — Смещение дат: 2000;
- флажок Создать базу данных в случае её отсутствия.
- Нажмите
Далее→Готово.
Тот же диалог есть в консоли администрирования: кластер → Информационные базы → Создать.
Шаг 6. Перенесите существующую файловую базу
- Откройте файловую базу в Конфигураторе.
Администрирование→Выгрузить информационную базу→ сохраните файл.dt.- Создайте пустую серверную базу (шаг 5).
- Откройте её в Конфигураторе:
Администрирование→Загрузить информационную базу→ выберите.dt.
Загрузка .dt полностью заменяет данные в базе-приёмнике и требует монопольного доступа. Убедитесь, что грузите в новую пустую базу, а не в рабочую.
Лицензии и ключи защиты для работы на сервере
Для клиент-серверной базы нужны два вида лицензий:
- 🖥 лицензия на сервер — разрешает запуск кластера. Бывает обычной и КОРП; есть версия для небольших компаний на ограниченное число пользователей;
- 👤 клиентские лицензии — по числу одновременных сеансов пользователей.
Клиентские лицензии можно активировать прямо на сервере. Тогда сервер сам выдаёт их всем подключившимся. Для этого в свойствах базы в консоли включите флажок Разрешить выдачу лицензий сервером 1С:Предприятия.
Носители бывают двух видов:
| Носитель | Где хранится | Особенности |
|---|---|---|
| Программная лицензия (пин-код) | Файл лицензии в каталоге платформы | Привязана к параметрам компьютера: замена диска или сетевой карты может потребовать повторной активации |
| Аппаратный ключ HASP | USB-ключ | Нужен драйвер и, для сетевого ключа, менеджер лицензий |
Проверить, какие лицензии сейчас заняты, можно через сеансы в консоли или командой утилиты 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С.
- В каталоге
srvinfo\reg_1541удалите только папкиsnccntx*. Файл1CV8Clst.lstне трогайте — это реестр кластера. - Запустите службу и проверьте вход в базу.
Резервное копирование серверной базы и восстановление
У серверной базы два способа сделать копию. Они не заменяют, а дополняют друг друга.
| Способ | Чем делается | Плюсы | Минусы |
|---|---|---|---|
| Бэкап СУБД | План обслуживания 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 и формат даты подставьте под свою систему.
Как восстановить базу из копии
- В консоли откройте свойства базы и включите Блокировку начала сеансов и Блокировку регламентных заданий.
- Дождитесь выхода пользователей.
- Восстановите копию средствами СУБД в ту же базу данных. Безопаснее — сначала в новую базу с другим именем, проверить её, а потом переключить.
- Снимите блокировки и проверьте вход.
Проверяйте копии восстановлением хотя бы раз в квартал. Бэкап, который ни разу не разворачивали, — это надежда, а не копия.
Частые вопросы
Можно ли перевести серверную базу обратно в файловую?
.dt из серверной базы в Конфигураторе, создайте пустую файловую базу и загрузите в неё этот файл.Можно ли поставить сервер 1С и СУБД на один компьютер?
Нужна ли отдельная лицензия на сервер, если пользователей всего пять?
Почему у меня в окне запуска две одинаковые базы — одна файловая, другая серверная?
Srvr=, у старой — File=.