Клиент-серверная 1С на SQL: когда переходить с файловой базы и что для этого нужно
Содержание
«SQL версия 1С» — это разговорное название клиент-серверного варианта 1С:Предприятия 8.3. Данные лежат не в одном файле 1Cv8.1CD, а в базе СУБД (PostgreSQL или Microsoft SQL Server), а между пользователями и СУБД работает кластер серверов
1С. Отдельной «SQL-редакции» 1С не существует: та же платформа, та же конфигурация (Бухгалтерия, ЗУП, УТ), меняется только способ хранения и обработки данных.
Переходить на SQL версию имеет смысл, когда файловая база начинает тормозить из-за числа пользователей, объёма данных или частых блокировок. Для этого нужны лицензия на сервер 1С, сама СУБД и машина под сервер. Ниже по пунктам: как устроены оба варианта, чем отличаются, что выбрать и как запустить.
Как устроены файловая и клиент-серверная 1С
Файловый вариант
В файловом варианте вся информационная база — это один файл 1Cv8.1CD в папке базы. Каждый пользователь запускает 1С у себя, и его клиент сам читает и пишет этот файл по сети через общую папку. Сервера как программы нет — есть только сетевой диск.
Строка подключения выглядит так: File="D:\Bases\Buh";
Клиент-серверный вариант (SQL версия)
Здесь цепочка длиннее:
- 🖥️ Клиент 1С у пользователя не трогает данные напрямую. Он отправляет запросы серверу 1С.
- ⚙️ Агент сервера (
ragent, порт 1540) принимает подключение и передаёт его менеджеру кластера (rmngr, порт 1541). - 🔧 Рабочие процессы (
rphost) выполняют код конфигурации. Диапазон их портов (по умолчанию1560:1591) задаётся в свойствах рабочего сервера. - 🗄️ СУБД хранит таблицы. С ней общаются только рабочие процессы 1С, а не пользователи.
Строка подключения: Srvr="srv-1c";Ref="buh"; — имя сервера 1С и имя базы в кластере.
Сервер 1С и СУБД можно поставить на одну машину. Для небольшой фирмы на 10–30 пользователей так обычно и делают: меньше сетевых задержек и одна точка обслуживания.
Чем SQL версия 1С отличается от файловой
Главное отличие — кто обрабатывает данные. В файловой базе всю работу делает компьютер каждого пользователя, гоняя куски файла по сети. В клиент-серверной — сервер, а клиенту уходит только результат.
| Параметр | Файловая база | SQL версия (клиент-сервер) |
|---|---|---|
| Где хранятся данные | Файл 1Cv8.1CD | База PostgreSQL или MS SQL |
| Кто обрабатывает запросы | Компьютер пользователя | Рабочие процессы сервера 1С |
| Блокировки | Целиком на таблицу | На уровне записей (управляемые блокировки) |
| Рост числа пользователей | Ориентир — до 5–10 одновременных | Десятки и сотни |
| Резервное копирование | Копия файла или выгрузка .dt | Средствами СУБД, без остановки работы |
| Лицензии | Только клиентские | Клиентские + лицензия на сервер 1С (+ MS SQL, если выбран он) |
| Обслуживание | Почти не нужно | Нужен администратор |
| Стоимость старта | Ноль сверх клиентских лицензий | Ориентировочно от 100 тыс. руб. |
Что это даёт на практике
- 🔒 Меньше ожиданий на блокировках. Бухгалтер проводит реализацию, кладовщик в это же время оформляет поступление — в файловой базе один ждёт другого, в серверной они чаще всего работают параллельно.
- 📈 Стабильная скорость на большой базе. Файловая база в десятки гигабайт работает заметно медленнее. Для СУБД это обычный объём.
- 🛡️ Надёжность. Сбой сети или зависший компьютер пользователя в файловом режиме может повредить
1Cv8.1CD. В серверном варианте СУБД ведёт журнал транзакций и откатывает незавершённое. - 🔁 Фоновые и регламентные задания. В клиент-серверной базе они выполняются на сервере по расписанию сами. В файловой — только пока кто-то из пользователей открыл базу.
Минусы клиент-серверного варианта
- 💰 Нужно купить лицензию на сервер 1С. Цена зависит от редакции (ПРОФ или КОРП), ориентировочно ПРОФ — порядка 100 тыс. руб., КОРП — в несколько раз дороже.
- 👨💻 Нужен человек, который настроит сервер, обновления платформы, резервные копии и обслуживание СУБД.
- ⚡ На маленькой базе с 2–3 пользователями файловый режим бывает даже быстрее: в нём нет сетевого обмена между клиентом, сервером 1С и СУБД.
Когда пора переходить с файловой базы на SQL
Явных признаков несколько:
- Одновременно работают больше 5–10 человек, и ошибки вида
Конфликт блокировок при выполнении транзакциипоявляются каждый день. - Закрытие месяца или проведение документов задним числом занимает часы.
- База выросла до десятков гигабайт, а открытие списков документов тормозит у всех.
- Нужны регламентные задания без постоянно открытого сеанса: обмены, загрузка курсов, выгрузка в ЭДО по расписанию.
- Пользователи подключаются удалённо, и файловая база через VPN работает недопустимо медленно.
Если базу открывают 1–3 человека, а объём небольшой, переход ничего не даст, кроме расходов.
PostgreSQL или MS SQL Server для 1С
1С 8.3 работает с четырьмя СУБД: Microsoft SQL Server, PostgreSQL, IBM Db2 и Oracle Database. На практике в малом и среднем бизнесе выбирают из первых двух.
| Критерий | PostgreSQL | Microsoft SQL Server |
|---|---|---|
| Лицензия | Бесплатно | Платная (кроме Express) |
| Сборка | Нужна сборка с патчами для 1С (от 1С или Postgres Professional) | Обычная установка |
| ОС сервера | Windows и Linux | В основном Windows |
| Порог входа для администратора | Выше: настройка через конфигурационные файлы | Ниже: графический Management Studio |
| Скорость на типовых задачах | Сопоставима при грамотной настройке | Сопоставима, «из коробки» настроек меньше |
Когда выбирать PostgreSQL
- Не хотите платить за СУБД и планируете обходиться без зарубежного ПО.
- Сервер будет на Linux.
- Есть администратор, готовый настроить параметры памяти и обслуживание.
Обычный PostgreSQL из репозитория дистрибутива для 1С не подходит. Нужна сборка с патчами для 1С: в ней есть расширения (например, тип mchar), без которых база не создастся.
Когда выбирать MS SQL Server
- Уже есть лицензии Microsoft и администратор Windows.
- Нужен простой графический инструмент для копий и обслуживания.
Бесплатная редакция Express технически работает с 1С, но ограничивает размер одной базы 10 ГБ и использует малую часть памяти и ядер. Для старта и тестов подходит, для рабочей базы, которая растёт, — нет.
Требования к серверу и порядок установки 1С на SQL
Что нужно купить и подготовить
- 🔑 Лицензия на сервер 1С:Предприятия 8.3 (ПРОФ или КОРП, x86-64). Клиентские лицензии на пользователей нужны так же, как и в файловом режиме.
- 🗄️ СУБД: PostgreSQL в сборке для 1С или MS SQL Server с лицензией.
- 🖥️ Сервер. Ориентир для 10–20 пользователей Бухгалтерии или УТ: 4–8 ядер, 16–32 ГБ памяти, SSD под базы. Для одной небольшой базы хватит и меньшего, но экономить на диске не стоит — СУБД чувствительна к его скорости.
- 🌐 Сеть: открытые порты 1540, 1541 и диапазон рабочих процессов между клиентами и сервером 1С.
Порядок установки
- Установите СУБД. Для PostgreSQL задайте пароль роли
postgresили создайте отдельную роль для 1С. Для MS SQL создайте логин с правами на создание баз. - Запустите установщик платформы 1С на сервере и отметьте компонент Сервер 1С:Предприятия 8. Установите его как службу Windows — он будет работать без входа пользователя.
- Активируйте лицензию на сервер.
- Установите компонент Администрирование сервера 1С:Предприятия и откройте консоль кластера. Если консоль не открывается, зарегистрируйте
radmin.dllиз папкиbinнужной версии платформы черезregsvr32. - Создайте информационную базу: в окне запуска 1С нажмите Добавить → Создание новой информационной базы и выберите размещение На сервере 1С:Предприятия. Укажите кластер, имя базы, тип СУБД, сервер СУБД, имя базы данных и пользователя. Отметьте флажок создания базы данных, если её ещё нет.
- Если переносите существующую файловую базу
— выгрузите её в
.dt(Конфигуратор → Администрирование → Выгрузить информационную базу), а в новой серверной базе загрузите этот файл командойЗагрузить информационную базу. Загрузка требует монопольного доступа, пользователей в новой базе быть не должно.
Версия платформы на клиентах должна совпадать с версией сервера 1С с точностью до номера сборки. Обновили сервер — обновляйте и клиентов, иначе подключиться не получится.
Пример: база PostgreSQL для 1С вручную и через rac
Обычно 1С сама создаёт базу данных при добавлении информационной базы. Но иногда администратор СУБД хочет подготовить её заранее, с нужной кодировкой и владельцем.
Создание роли и базы в PostgreSQL
-- роль, от имени которой сервер 1С будет подключаться к СУБД
CREATE ROLE usr1c WITH LOGIN SUPERUSER PASSWORD 'СложныйПароль';
-- база в кодировке UTF8 с русской локалью
CREATE DATABASE buh
WITH OWNER = usr1c
ENCODING = 'UTF8'
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
TEMPLATE = template0;
Права суперпользователя роли дают потому, что при первом подключении 1С создаёт в базе свои расширения. На Windows имя локали может называться иначе (например, Russian_Russia.1251 в старых установках) — смотрите список доступных локалей в своей системе.
После этого в окне создания информационной базы укажите buh как имя базы данных и не ставьте флажок «создать базу данных
».
Создание информационной базы командой rac
Если на сервере запущен сервер администрирования ras (по умолчанию порт 1545), базу можно завести из командной строки:
rem список кластеров — нужен идентификатор
rac cluster list
rem создание информационной базы с созданием БД в PostgreSQL
rac infobase --cluster=<UUID_кластера> create --create-database ^
--name=buh --dbms=PostgreSQL --db-server=localhost ^
--db-name=buh --locale=ru --db-user=usr1c --db-pwd=СложныйПароль
Полный список параметров для вашей версии платформы покажет rac help infobase.
Скорость SQL версии 1С: что настроить
Сервер 1С на SQL сам по себе быстрее не станет. Без настройки СУБД клиент-серверная база может работать не лучше файловой.
PostgreSQL
shared_buffers— ориентир 25% оперативной памяти сервера.effective_cache_size— 50–75% памяти: подсказка планировщику, сколько данных закешировано системой.work_mem— память на сортировки в одном запросе; слишком большое значение при многих сеансах приведёт к нехватке памяти.- Регулярный
VACUUM ANALYZE(автовакуум должен быть включён) — иначе таблицы распухают, а статистика устаревает.
MS SQL Server
- Max server memory — ограничьте, оставив память системе и серверу 1С, если они на одной машине. Без ограничения SQL Server займёт всё.
- Max degree of parallelism = 1 — общепринятая настройка для баз 1С: параллельные планы на коротких запросах 1С чаще мешают.
- План обслуживания: обновление статистики ежедневно, перестроение индексов раз в неделю в нерабочее время.
На стороне 1С
- 🧩 Переведите конфигурацию в управляемый режим блокировок, если она ещё в автоматическом. Все актуальные типовые уже работают в управляемом.
- 🔍 Медленные операции ищите технологическим журналом или замером производительности, а не наугад.
- 🧹 Не держите тысячи записей в регистрах сведений, которые давно не нужны, и регулярно сворачивайте неактуальные данные по регламенту фирмы.
Перестроение индексов и большие операции обслуживания нагружают диск и могут блокировать таблицы. Запускайте их ночью или в выходные, предупредив пользователей.
Резервные копии SQL базы 1С
Главный плюс клиент-серверного режима здесь — копию можно снимать, не выгоняя пользователей.
Способы
| Способ | Когда использовать | Что учесть |
|---|---|---|
Средства СУБД (pg_dump, BACKUP DATABASE) | Ежедневные копии рабочей базы | Не останавливает работу, быстро |
| Журнал транзакций MS SQL (модель Full) | Нужна точка восстановления «на 15 минут назад» | Журнал надо регулярно копировать, иначе он растёт без конца |
Выгрузка .dt из Конфигуратора | Перенос базы, переход между СУБД | Нужен монопольный доступ, на большой базе долго |
Копия и восстановление в PostgreSQL
rem копия в сжатом формате
pg_dump -U postgres -Fc -f D:\Backup\buh.backup buh
rem восстановление в новую пустую базу
pg_restore -U postgres -d buh_test D:\Backup\buh.backup
Восстанавливайте копию в отдельную базу, а не поверх рабочей. Так вы проверите, что копия живая, и не потеряете текущие данные, если в файле что-то не так. Затем подключите восстановленную базу к кластеру 1С как новую информационную базу.
Раз в месяц проверяйте копию разворачиванием на тестовом сервере. Копия, которую ни разу не восстанавливали, — это надежда, а не копия.
Перед восстановлением поверх рабочей базы
Иногда без этого не обойтись. Тогда порядок такой: заблокируйте вход новых сеансов в консоли кластера, предупредите пользователей, завершите их сеансы — несохранённая работа будет потеряна. Только после этого восстанавливайте базу и снимайте блокировку.
Частые ошибки при переходе на SQL версию
- ❌ Ставят обычный PostgreSQL. База не создаётся с ошибкой о недостающих типах или расширениях. Нужна сборка для 1С.
- ❌ Разные версии платформы на сервере и клиентах. Пользователи получают сообщение о несоответствии версий. Решение — одна версия везде.
- ❌ Закрытые порты. Консоль кластера открывается на сервере, а с рабочих мест подключиться нельзя: файрвол пропустил 1540–1541, но не диапазон рабочих процессов.
- ❌ Не ограничили память MS SQL. Через сутки работы сервер 1С начинает падать от нехватки памяти — SQL Server забрал её всю.
- ❌ Делают копии только через
.dt. На базе в 50 ГБ выгрузка занимает часы и требует выгнать всех. Ежедневные копии — средствами СУБД.
Частые вопросы о SQL версии 1С
Можно ли поставить только SQL Server без сервера 1С?
Нужно ли менять конфигурацию при переходе на SQL?
.dt.Можно ли вернуться с SQL версии на файловую?
.dt и загрузите в новую файловую. Данные и настройки сохранятся.