Переводить ли базу 1С на SQL и что изменится на практике

· 9 мин

Содержание

SQL-сервер даёт 1С три вещи: базе не мешает одновременная работа 10–100 пользователей, данные лучше защищены от сбоев, а мощность наращивается без смены архитектуры. Цена — лицензия на сервер 1С, отдельный сервер или виртуальная машина и человек, который будет его обслуживать.

Если в базе работают 3–5 человек и всё летает, переход ничего не даст. Если в 10 утра бухгалтерия ждёт, пока кто-то проведёт документ, а закрытие месяца идёт полдня, SQL-сервер для 1С окупится быстро.

Чем файловая база отличается от клиент-серверной

В файловом режиме вся база — один файл 1Cv8.1CD в общей папке. Каждый клиент сам читает и пишет этот файл по сети. Встроенная файловая СУБД работает внутри процесса клиента: никакого центрального «диспетчера» нет.

В клиент-серверном режиме появляются два звена:

  • 🖥 Кластер серверов 1С — службы агента (ragent, порт 1540), менеджера кластера (rmngr, 1541) и рабочих процессов (rphost, диапазон портов задаётся в свойствах рабочего сервера, по умолчанию 1560–1591). Здесь выполняется код конфигурации, запросы, фоновые задания.
  • 🗄 СУБД — Microsoft SQL Server, PostgreSQL, IBM Db2 или Oracle Database. Здесь хранятся таблицы.

Клиент больше не трогает данные напрямую. Он передаёт команду серверу 1С, тот формирует запрос к СУБД и возвращает клиенту только результат.

ПараметрФайловый режимКлиент-серверный режим
Где хранятся данныеФайл 1Cv8.1CD в папкеТаблицы в СУБД
Кто выполняет запросыКомпьютер пользователяСервер 1С и СУБД
Что идёт по сетиСтраницы файла базыКоманды и готовые результаты
Блокировки при записиНа уровне таблицНа уровне записей
Фоновые и регламентные заданияТолько пока открыт сеанс клиентаВыполняет сервер круглосуточно
Доступ пользователя к файлам базыНужны права на чтение и запись папкиНе нужен

Последняя строка часто недооценена. В файловом варианте любой сотрудник с доступом к папке может скопировать базу целиком на флешку. В клиент-серверном у него нет доступа ни к файлам СУБД, ни к серверу.

Что даёт SQL-сервер для 1С при многопользовательской работе

Главный выигрыш — в блокировках. Файловая СУБД при записи блокирует таблицу целиком. Пока один бухгалтер проводит большую реализацию, другой, проводящий поступление, может ждать: обе операции пишут в одни и те же регистры.

На SQL-сервере в управляемом режиме блокировок 1С блокирует только нужные записи. Если продавцы работают с разными складами или разными организациями, их документы не мешают друг другу.

Где разница видна сразу:

  • 📈 Пиковые часы. 15–20 человек одновременно проводят документы — в файловом режиме очередь, в клиент-серверном работа идёт параллельно.
  • 📊 Тяжёлые отчёты. Оборотно-сальдовая ведомость за год считается на сервере, а не перекачивается по сети на ноутбук.
  • 🔁 Закрытие месяца и перепроведение. Сервер берёт эту нагрузку на свои ядра и память, пользовательский компьютер не «висит».
  • 🌐 Удалённая работа. Тонкий клиент через интернет или веб-клиент работает заметно лучше: по каналу идут результаты, а не куски файла базы.
  • ⏰ Регламентные задания. Обмены, загрузка курсов, ЭДО, полнотекстовый индекс работают по расписанию, даже если все ушли домой.

На 1–3 пользователях файловая база часто отвечает быстрее клиент-серверной на одиночных операциях. У неё нет сетевого «прыжка» между сервером 1С и СУБД. Переход на SQL ради скорости при одном-двух пользователях — пустая трата денег.

Ориентир по числу пользователей:

Одновременно работаютРекомендация
1–5Файловый режим, база на быстром диске
5–10Зависит от нагрузки: при частых ожиданиях блокировок — переходить
10 и большеКлиент-серверный режим
База больше 10–15 ГБ или тяжёлые обменыКлиент-серверный режим, даже при малом числе пользователей

Надёжность хранения и восстановление после сбоя

Файл 1Cv8.1CD уязвим. Отключили свет во время записи, оборвалась сеть у одного клиента — файл может повредиться. Тогда начинается тестирование и исправление, иногда с потерей данных.

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

Что появляется в плане резервного копирования (на примере MS SQL):

  1. Полная копия по расписанию — ночью, без выгона пользователей.
  2. Разностная копия — изменения с последней полной, например каждые 4 часа.
  3. Копия журнала транзакций при полной модели восстановления — каждые 15–30 минут.
  4. Восстановление на момент времени. Удалили в 14:37 документы по ошибке — базу можно восстановить в копию на 14:36 и перенести оттуда данные.

В файловом режиме полная резервная копия — это либо выгрузка .dt (требует монопольного доступа), либо копирование файла при выгнанных пользователях. Копия файла «на ходу» может оказаться нерабочей.

Модель восстановления «Полная» без регулярных копий журнала приводит к бесконечному росту файла журнала и переполнению диска. Если копии журнала не настроены, ставьте модель «Простая».

Масштабируемость: как расти без смены архитектуры

Файловую базу можно ускорить только одним способом — поставить более быстрый диск и сеть. Дальше потолок.

Клиент-серверная схема растёт по шагам:

  • 🧠 Добавить памяти серверу СУБД — больше данных лежит в кэше, меньше чтений с диска.
  • ⚙️ Разнести сервер 1С и СУБД на разные машины, когда им тесно вместе.
  • 👥 Увеличить число рабочих процессов в кластере для большего числа сеансов.
  • 🏢 Добавить второй рабочий сервер в кластер и настроить отказоустойчивость — это возможности лицензии КОРП.
  • 🗂 Держать на одном кластере десятки баз: бухгалтерию, ЗУП, торговлю, копии для тестов.

Отдельный плюс — копия базы для разработки и тестов создаётся за минуты: восстановить бэкап SQL под другим именем и зарегистрировать новую базу в кластере.

Администрирование и тонкая настройка

Вместе с SQL появляются инструменты, которых у файловой базы нет.

Со стороны 1С:

  • Консоль администрирования серверов 1С (оснастка MMC или утилита rac через сервер администрирования ras) — список сеансов, соединений, блокировок, завершение зависших сеансов.
  • Технологический журнал — запись длительных запросов, ожиданий на блокировках и взаимоблокировок в файлы логов.
  • Установка блокировки начала сеансов и регламентных заданий на время обновления.

Со стороны MS SQL (в SQL Server Management Studio):

  • Планы обслуживания: перестроение индексов, обновление статистики, проверка целостности DBCC CHECKDB.
  • Ограничение памяти max server memory, чтобы SQL не забрал всё и оставил место серверу 1С и ОС.
  • Параметр max degree of parallelism: для баз 1С обычно ставят 1.

Пример настройки этих двух параметров (значение памяти — для сервера с 32 ГБ, где на той же машине работает сервер 1С):

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 20480;
EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;

Перестроение индексов на большой базе нагружает диск и может замедлить работу пользователей. Ставьте его на ночь или выходные. Завершение рабочего процесса или перезапуск службы сервера 1С обрывает все сеансы — делайте это вне рабочего времени и после предупреждения пользователей.

Для PostgreSQL логика та же: регулярный VACUUM ANALYZE, настройка shared_buffers и work_mem под объём памяти. Для 1С ставят сборку PostgreSQL с доработками под платформу — её выпускают фирма 1С и Postgres Professional.

Нужен ли вашей базе SQL-сервер?

Железо и лицензии для работы 1С на SQL

Оборудование. Ориентиры для одной машины, где стоят и сервер 1С, и СУБД:

ПользователейЯдра CPUПамятьДиски
10–204–616–32 ГБSSD/NVMe, 2 раздела: данные и журналы
20–508–1232–64 ГБNVMe, отдельно данные, журналы, tempdb
50–100Сервер 1С и СУБД раздельно, по 8–16 ядер64–128 ГБ на СУБДNVMe в RAID 10

Решающие факторы — частота ядра (код 1С в основном однопоточный) и скорость диска. Двадцать медленных ядер на HDD проиграют восьми быстрым на NVMe.

Лицензии 1С. Клиентские лицензии остаются прежними — меняется только то, что к ним добавляется лицензия на сервер 1С:Предприятия:

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

Ориентировочно лицензия сервера ПРОФ стоит порядка 100 тыс. рублей, КОРП — в несколько раз дороже. Точную цену называет партнёр 1С на дату покупки.

Лицензии СУБД:

СУБДСтоимостьОграничения
PostgreSQL (сборка для 1С)БесплатноНужен администратор, знакомый с PostgreSQL
MS SQL Server ExpressБесплатноДо 10 ГБ на базу, жёсткий лимит памяти и ядер, нет SQL Server Agent для заданий по расписанию
MS SQL Server StandardПлатно, по ядрам или по серверу + CALПодходит для большинства внедрений

Express подойдёт для пробы и небольших баз. Задания резервного копирования без SQL Server Agent придётся запускать через планировщик Windows и sqlcmd.

Как перенести файловую базу на SQL-сервер

Перенос идёт через выгрузку и загрузку .dt. Порядок такой:

  1. Выгоните пользователей и откройте файловую базу в Конфигураторе.
  2. Выполните Администрирование → Выгрузить информационную базу… и сохраните файл .dt.
  3. Создайте новую базу на сервере: в окне запуска 1С Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации, вариант расположения — на сервере 1С:Предприятия. Укажите кластер, имя базы, тип СУБД, сервер СУБД и учётную запись.
  4. Откройте новую базу в Конфигураторе и выполните Администрирование → Загрузить информационную базу…, выбрав сохранённый .dt.
  5. Проверьте вход пользователей, обмены, регламентные задания и печатные формы.
  6. Настройте резервное копирование на стороне СУБД до того, как пустить в базу людей.

После загрузки в серверную базу регламентные задания начнут работать по расписанию сразу, в том числе обмены. Если старая файловая база ещё жива и тоже обменивается, данные могут задвоиться. Отключите обмены в одной из баз до окончательного переключения.

Типичные ошибки при переходе:

  • ❌ SQL и сервер 1С на одной машине без ограничения max server memory — СУБД забирает всю память, сервер 1С начинает тормозить.
  • ❌ Базы и журналы СУБД на одном медленном диске.
  • ❌ Полная модель восстановления без копий журнала — диск заканчивается через пару месяцев.
  • ❌ Ожидание, что тормоза из-за тяжёлого кода доработок исчезнут сами. Плохой запрос на SQL тоже будет медленным — его нужно найти технологическим журналом и переписать.

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

Что лучше для 1С — MS SQL или PostgreSQL?
Обе СУБД работают надёжно. MS SQL проще в администрировании для Windows-инфраструктуры, PostgreSQL бесплатен и хорошо работает на Linux. Выбор обычно определяет, какой специалист будет сопровождать сервер.
Можно ли вернуть базу обратно в файловый режим?
Да. Выгрузите .dt из серверной базы и загрузите его в новую пустую файловую базу. Формат выгрузки одинаковый для обоих режимов.
Нужно ли покупать дополнительные клиентские лицензии 1С?
Нет, клиентские лицензии используются те же. Дополнительно нужна только лицензия на сервер 1С:Предприятия и, при необходимости, лицензия СУБД.
Можно ли поставить SQL-сервер на обычный офисный компьютер?
Для теста можно. Для рабочей базы нужна машина с бесперебойным питанием, SSD и регулярным резервным копированием, иначе надёжность хуже, чем у файлового режима на сетевом хранилище.
Ускорит ли переход на SQL одну медленную обработку?
Не всегда. Если она медленная из-за неоптимального запроса или цикла в коде, на сервере она будет так же медленной. Переход ускоряет параллельную работу многих пользователей, а не плохой код.