Сервер 1С и SQL вместо файла базы: как работает клиент-серверный режим

· 10 мин

Содержание

Клиент-серверный вариант работы 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 нужного диалекта. Поэтому одна и та же конфигурация работает на любой поддерживаемой СУБД без переделок.

Как клиент находит базу

Подключение идёт по цепочке портов (значения по умолчанию):

  1. 🔌 Клиент обращается к агенту сервера — порт 1540.
  2. 🧭 Агент передаёт его менеджеру кластера — порт 1541.
  3. ⚙️ Менеджер направляет соединение в рабочий процесс — порты из диапазона 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С подойдёт вам?

Какую СУБД выбрать для сервера 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С:Предприятия

  1. Запустите установщик платформы (дистрибутив сервера x86-64).
  2. В списке компонентов отметьте Сервер 1С:Предприятия 8 и Администрирование сервера 1С:Предприятия.
  3. Оставьте галочку установки сервера как службы Windows. Установщик создаст пользователя USR1CV8, от имени которого работает служба.
  4. После установки проверьте в 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С и СУБД на одном компьютере?
Да, для небольших компаний это обычная схема. Сервер 1С и СУБД на одной машине обмениваются данными без сети, это даже быстрее. Разносят их, когда не хватает ресурсов одного сервера.
Работает ли клиент-серверный вариант на Linux?
Да. Сервер 1С выпускается для Linux, PostgreSQL — тоже. Клиенты при этом могут оставаться на Windows.
Нужно ли переписывать конфигурацию при переходе на SQL?
Нет. Платформа сама формирует SQL-запросы под выбранную СУБД. Базу переносят выгрузкой и загрузкой .dt. Доработки остаются, но код с автоматическими блокировками стоит перевести в управляемый режим.
Можно ли вернуться обратно в файловую базу?
Да. Выгрузите серверную базу в .dt и загрузите в новую файловую. Данные и конфигурация перенесутся полностью.
Что такое сервер 1С «МИНИ»?
Это лицензия на сервер 1С:Предприятия с ограничением числа одновременных подключений. Она дешевле стандартной и рассчитана на небольшие коллективы, которым нужен серверный режим.