Сервер 1С и SQL вместо файла базы: как работает клиент-серверный режим
Содержание
Клиент-серверный вариант работы 1С — это режим, в котором данные хранятся не в файле 1Cv8.1CD, а в отдельной СУБД (PostgreSQL, Microsoft SQL Server, IBM Db2 или Oracle), а всю обработку запросов берёт на себя сервер 1С:Предприятия. Пользовательский компьютер только показывает формы и передаёт команды. Отсюда второе название — «SQL-версия 1С».
Частое заблуждение: «поставим SQL — и 1С сразу полетит». Сама по себе СУБД ничего не ускоряет. Выигрыш дают три вещи: блокировки на уровне записей вместо всей таблицы, обработка данных рядом с базой, а не по сети, и нормальные средства резервного копирования. Без настройки сервера и регламентов обслуживания SQL-база может работать даже медленнее хорошей файловой.
Три звена клиент-серверной архитектуры 1С
Классическая схема называется трёхзвенной. Каждое звено — отдельная программа, и их можно разнести по разным машинам.
| Звено | Что это | Что делает |
|---|---|---|
| Клиент | Тонкий клиент, веб-клиент или толстый клиент | Показывает формы, принимает ввод, отправляет вызовы на сервер |
| Сервер 1С:Предприятия | Служба агента сервера и рабочие процессы | Выполняет код конфигурации, запросы, проведение документов, регламентные задания |
| СУБД | PostgreSQL, MS SQL Server, Db2 или Oracle | Хранит таблицы базы, индексы, выполняет SQL-запросы, которые формирует сервер 1С |
Пользователь никогда не работает с СУБД напрямую. Платформа сама переводит запросы на языке 1С в SQL нужного диалекта. Поэтому одна и та же конфигурация работает на любой поддерживаемой СУБД без переделок.
Как клиент находит базу
Подключение идёт по цепочке портов (значения по умолчанию):
- 🔌 Клиент обращается к агенту сервера — порт
1540. - 🧭 Агент передаёт его менеджеру кластера — порт
1541. - ⚙️ Менеджер направляет соединение в рабочий процесс — порты из диапазона
1560–1591. Диапазон задают в свойствах рабочего сервера.
Строка подключения в списке баз выглядит так:
Srvr="srv-1c";Ref="buh_main";
Здесь srv-1c — имя сервера 1С, buh_main — имя информационной базы в кластере, а не имя базы в СУБД. Они могут не совпадать.
Если клиент стоит в другой подсети, на межсетевом экране открывают весь набор: 1540, 1541 и диапазон рабочих процессов. Открыть только 1540 — частая причина ошибки подключения «сервер недоступен», хотя агент пингуется.
Кластер, рабочие процессы и консоль
Сервер 1С организован в кластер. В нём может быть один рабочий сервер или несколько. На каждом рабочем сервере запускаются рабочие процессы rphost, менеджер кластера rmngr и агент ragent.
Управляют этим через консоль администрирования серверов 1С:Предприятия. Консоль подключается к агенту сервера. Параметры отказоустойчивости, требования назначения функциональности, ограничения на число баз и соединений на процесс задаются в свойствах рабочего сервера, а не кластера.
Чем SQL-база отличается от файловой
В файловом варианте каждый компьютер сам читает и пишет общий файл 1Cv8.1CD по сети. Сервера нет: «сервером» выступает обычная сетевая папка. Пока пользователей мало, это удобно. С ростом нагрузки начинаются ожидания на блокировках.
| Критерий | Файловый вариант | Клиент-серверный вариант |
|---|---|---|
| Где данные | Один файл 1Cv8.1CD | Таблицы в СУБД |
| Кто обрабатывает | Каждый клиент сам | Сервер 1С рядом с СУБД |
| Блокировки | Грубые, на таблицы | На уровне записей (управляемые блокировки) |
| Пользователей комфортно | Ориентир — до 5–10 | Десятки и сотни |
| Размер базы | Деградирует на десятках ГБ | Ограничен ресурсами СУБД |
| Резервное копирование | Копия файла или .dt, нужна остановка работы | Средства СУБД, без остановки пользователей |
| Лицензии | Только клиентские | Клиентские + лицензия на сервер 1С |
| Стоимость владения | Почти ноль | Сервер, лицензия сервера, администрирование |
Для бухгалтера разница видна в мелочах. В файловой базе закрытие месяца у одного пользователя «вешает» проведение у остальных. В серверной — коллеги продолжают работать, если не трогают те же записи.
Когда переходить на сервер
Признаки, что файловая база упёрлась в потолок:
- ⏳ регулярные ошибки «Конфликт блокировок при выполнении транзакции»;
- 🐢 закрытие месяца или перепроведение занимает часы, а остальные в это время ждут;
- 📦 файл базы перевалил за 10–20 ГБ и продолжает расти;
- 👥 одновременно работает больше 8–10 человек;
- 🌐 нужен доступ через веб-клиент или из филиалов с высокой нагрузкой.
Какую СУБД выбрать для сервера 1С
Платформа 8.3 поддерживает четыре СУБД. На практике выбирают между двумя.
| СУБД | Плюсы | Минусы | Кому подходит |
|---|---|---|---|
| PostgreSQL (сборка для 1С) | Бесплатна, работает на Windows и Linux | Нужна специальная сборка с патчами для 1С, требует настройки postgresql.conf | Малый и средний бизнес, серверы на Linux |
| Microsoft SQL Server | Зрелые инструменты, удобный бэкап, хорошо известен админам | Платная лицензия (кроме Express), сложности с покупкой новых лицензий в РФ | Компании, где MS SQL уже есть |
| IBM Db2, Oracle | Масштаб крупных предприятий | Дорого, мало специалистов | Редкие крупные внедрения |
Ключевое про PostgreSQL: обычный дистрибутив с сайта postgresql.org для 1С не подходит. Нужна сборка с патчами — её выпускает фирма 1С на своём сайте поддержки, и есть отечественные сборки Postgres Pro для 1С. Версию сборки подбирают под версию платформы: в описании релиза платформы указано, какие версии СУБД поддерживаются.
MS SQL Server Express бесплатен, но ограничен размером базы (10 ГБ на одну базу) и используемыми ресурсами. Для реальной работы он годится только как временное решение.
Установка сервера 1С и первая настройка
Порядок для Windows Server. На Linux логика та же, меняются пакеты и управление службами.
Шаг 1. Установить СУБД
Поставьте PostgreSQL для 1С или MS SQL Server. Запомните имя пользователя-администратора СУБД (postgres или sa) и пароль: они понадобятся при создании базы. Для MS SQL сразу выберите параметры сортировки, совместимые с 1С (Cyrillic_General_CI_AS).
Шаг 2. Установить сервер 1С:Предприятия
- Запустите установщик платформы (дистрибутив сервера x86-64).
- В списке компонентов отметьте Сервер 1С:Предприятия 8 и Администрирование сервера 1С:Предприятия.
- Оставьте галочку установки сервера как службы Windows. Установщик создаст пользователя
USR1CV8, от имени которого работает служба. - После установки проверьте в
services.msc, что служба агента сервера 1С:Предприятия запущена.
Шаг 3. Подключить консоль администрирования
Консоль часто открывается пустой или с ошибкой. Почти всегда помогает перерегистрация библиотеки — командная строка от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll"
Вместо 8.3.xx.xxxx подставьте номер установленной версии. Затем в консоли: правой кнопкой по «Центральные серверы 1С:Предприятия» → Создать → Центральный сервер 1С:Предприятия, укажите имя машины. Кластер с портом 1541 уже будет внутри.
Если версий платформы несколько, регистрируйте radmin.dll той же версии, что и запущенный сервер. Консоль одной версии с агентом другой версии работать не будет.
Шаг 4. Создать информационную базу
Проще всего — из окна запуска 1С: Добавить → Создание новой информационной базы → На сервере 1С:Предприятия. Заполните поля:
- Кластер серверов 1С:Предприятия — имя сервера 1С;
- Имя информационной базы в кластере — как её увидят пользователи;
- Тип СУБД — PostgreSQL или MS SQL Server;
- Сервер баз данных, Имя базы данных, пользователь и пароль СУБД;
- Смещение дат — для MS SQL ставьте
2000; - галочка Создать базу данных в случае её отсутствия;
- Разрешить выдачу лицензий сервером 1С:Предприятия — если используете серверные клиентские лицензии.
Если база уже есть в файловом варианте, перенос делается через выгрузку: в Конфигураторе файловой базы Администрирование → Выгрузить информационную базу в файл .dt, затем в пустой серверной базе — Администрирование → Загрузить информационную базу. Для загрузки нужен монопольный доступ.
Шаг 5. Лицензии
Для клиент-серверного варианта нужна лицензия на сервер 1С:Предприятия — отдельно от клиентских. Есть линейка: «МИНИ» для небольшого числа подключений, стандартная (на 64-битный сервер) и КОРП с расширенными функциями кластера. Без лицензии на сервер серверная база не запустится. Клиентские лицензии нужны в том же количестве, что и в файловом варианте.
Как сделать SQL-базу 1С быстрой
После переезда на сервер скорость не появляется сама. Вот что реально даёт прирост.
Железо. Для сервера 1С важна частота ядер: рабочий процесс выполняет один вызов в одном потоке. Для СУБД — объём памяти и быстрые диски (NVMe). Ориентир для 10–20 пользователей на одной машине: 4–8 ядер с высокой частотой, 32 ГБ памяти, SSD под базу и отдельный диск под копии.
Регламенты СУБД. Без них SQL-база постепенно тормозит:
- 🔄 обновление статистики — ежедневно;
- 🧹 для PostgreSQL —
VACUUMиANALYZE(автовакуум должен быть включён и настроен); - 🧱 для MS SQL — реиндексация или дефрагментация индексов раз в неделю;
- 🗑️ очистка процедурного кэша СУБД после обновления статистики.
Настройки PostgreSQL. Стандартный postgresql.conf рассчитан на слабые машины. Главные параметры, которые меняют под 1С: shared_buffers (примерно четверть памяти), effective_cache_size, work_mem, max_connections.
Режим блокировок конфигурации. Типовые конфигурации (БП 3.0, ЗУП 3.1, УТ 11) работают в управляемом режиме. Если у вас старая доработанная конфигурация в автоматическом режиме, на сервере она будет ловить конфликты блокировок так же, как файловая.
Поиск узких мест. Для разбора медленных операций включают технологический журнал (файл logcfg.xml в каталоге conf платформы) и смотрят события долгих запросов и ожиданий на блокировках. В консоли администрирования видно сеансы и соединения: кто сколько держит, какой процесс нагружен.
Перезапуск службы сервера 1С или завершение рабочего процесса обрывает сеансы всех пользователей с потерей несохранённых данных. Делайте это вне рабочего времени и предупреждайте людей заранее.
Защита данных и резервное копирование на сервере
Серверный вариант даёт больше возможностей для защиты — но и больше мест, где можно ошибиться.
Доступ
- 🔐 Задайте администратора кластера в консоли. Без него любой, кто дотянется до порта 1540, сможет управлять базами и удалить их из кластера.
- 👤 Пароль пользователя СУБД
saилиpostgresне раздавайте: для 1С можно завести отдельного пользователя с правами на свои базы. - 🧱 Порты сервера 1С и СУБД не публикуйте в интернет. Удалённых сотрудников подключают через VPN или веб-публикацию с HTTPS.
- 🗂️ Каталог службы
srvinfo(по умолчанию вC:\Program Files\1cv8\srvinfo) хранит реестр кластера. Его тоже включайте в копии.
Резервное копирование
Главное правило: ежедневная копия делается средствами СУБД, а не выгрузкой .dt. Бэкап СУБД снимается без остановки пользователей и восстанавливается быстрее.
| Способ | Как | Плюсы | Минусы |
|---|---|---|---|
| Бэкап MS SQL | Полная копия + разностные + журнал транзакций через план обслуживания | Восстановление на любой момент времени | Нужно настроить модель восстановления |
pg_dump для PostgreSQL | Ежедневный дамп по расписанию | Просто, без остановки | Восстановление большой базы небыстрое |
Выгрузка .dt | Конфигуратор → Администрирование → Выгрузить информационную базу | Переносима между СУБД и версиями | Долго на больших базах, не замена бэкапу СУБД |
Пример дампа PostgreSQL в сжатом формате:
pg_dump -U postgres -F c -f D:\backup\buh_main.backup buh_main
Храните копии не на том же диске, что и база, и хотя бы раз в квартал пробуйте восстановить копию в тестовую базу. Непроверенная копия часто оказывается пустой или битой.
Частые ошибки при переходе на клиент-серверный вариант
- Обычный PostgreSQL вместо сборки для 1С. База не создаётся или падает на первых запросах. Решение — поставить сборку с патчами под вашу версию платформы.
- Разные версии клиента и сервера. Клиент сообщает о несоответствии версий. На всех машинах должна стоять та же версия платформы, что и на сервере.
- Открыт только порт 1540. Клиент видит агента, но не может подключиться к рабочему процессу. Откройте 1541 и диапазон рабочих процессов.
- Сервер 1С и СУБД на слабой виртуалке с общими дисками. Переход ничего не ускорил. Проверьте нагрузку на диск в момент тормозов.
- Нет регламентов обслуживания СУБД. Через пару месяцев отчёты начинают формироваться медленнее, чем в файловой базе.
- Копия только через
.dtраз в неделю. При сбое теряется неделя работы. Настройте ежедневный бэкап средствами СУБД.
Частые вопросы
Можно ли держать сервер 1С и СУБД на одном компьютере?
Работает ли клиент-серверный вариант на Linux?
Нужно ли переписывать конфигурацию при переходе на SQL?
.dt. Доработки остаются, но код с автоматическими блокировками стоит перевести в управляемый режим.Можно ли вернуться обратно в файловую базу?
.dt и загрузите в новую файловую. Данные и конфигурация перенесутся полностью.