Переход с файловой базы 1С на клиент-серверный вариант с MS SQL или PostgreSQL

· 9 мин

Содержание

Чтобы перевести 1С на SQL, нужны три вещи: установленный сервер 1С:Предприятия, СУБД (MS SQL Server или PostgreSQL) и выгрузка файловой базы в .dt. Порядок такой: создаёте пустую базу в кластере серверов, в Конфигураторе файловой базы делаете Администрирование → Выгрузить информационную базу, а в Конфигураторе новой серверной базы — Администрирование → Загрузить информационную базу.

Сама конвертация базы занимает от 15 минут до пары часов, в зависимости от объёма. Больше времени уходит на подготовку: лицензии, порты, учётные записи. Ниже — порядок, при котором переход проходит за один вечер, а утром пользователи работают в серверной базе.

Подготовка к переводу 1С на SQL: сервер, СУБД и лицензии

Файловая база упирается в потолок примерно на 10–15 одновременных пользователях или при объёме файла 1Cv8.1CD в десятки гигабайт. Начинаются блокировки, долгое закрытие месяца , зависания при обмене. Клиент-серверный вариант снимает эти ограничения, но требует отдельной инфраструктуры.

Что нужно купить и установить

  • 🖥️ Сервер. Для офиса на 20–30 человек хватит 8 ядер, 32 ГБ памяти и SSD/NVMe-дисков. Сервер 1С и СУБД можно ставить на одну машину.
  • 🔑 Лицензия на сервер 1С:Предприятия. Отдельно от клиентских. Для обычного офиса достаточно редакции ПРОФ, КОРП нужна для расширенных функций кластера (например, отказоустойчивость и гибкое распределение нагрузки). Ориентировочно ПРОФ стоит около 100 тыс. ₽, КОРП — в 2–2,5 раза дороже.
  • 👥 Клиентские лицензии. Те же, что были у файловой базы. Их можно оставить на рабочих местах или перенести на сервер и выдавать сервером.
  • 🗄️ СУБД. MS SQL Server или PostgreSQL (сравнение ниже).

MS SQL или PostgreSQL

КритерийMS SQL ServerPostgreSQL
СтоимостьПлатные лицензии Standard; покупка в России сейчас затрудненаБесплатно (сборка, адаптированная для 1С)
Бесплатная редакцияExpress: до 10 ГБ на базу и ограничение по памяти и ядрамОграничений по объёму нет
НастройкаПривычный графический интерфейс, «из коробки» работает приличноНужна настройка параметров памяти в postgresql.conf
ОСWindows (есть и Linux-версия)Windows и Linux

Для PostgreSQL берите сборку, подготовленную под 1С, а не «ванильную» с официального сайта. В адаптированных сборках есть расширения и патчи, которые нужны платформе.

Проверьте версии заранее

Версия сервера 1С и версия клиента на рабочих местах должны совпадать до последней цифры (например, 8.3.24.1548 и там, и там). Перед переходом выберите одну версию платформы и поставьте её на сервер и на все компьютеры пользователей.

Установка сервера 1С и СУБД

Сервер 1С:Предприятия

  1. Запустите установщик платформы на сервере и отметьте компоненты «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия».
  2. Отметьте установку сервера как службы Windows. Установщик предложит создать пользователя USR1CV8 — от его имени будет работать служба агента сервера.
  3. После установки зарегистрируйте консоль администрирования. В меню «Пуск» есть ярлык «Регистрация утилиты администрирования серверов»; если его нет, выполните от администратора:
regsvr32 "C:\Program Files\1cv8\8.3.xx.xxxx\bin\radmin.dll"
  1. Откройте в брандмауэре порты: 1540 (агент сервера), 1541 (менеджер кластера) и диапазон 1560–1591 (рабочие процессы). Для СУБД — 1433 у MS SQL или 5432 у PostgreSQL, если она стоит на другой машине.

MS SQL Server

  • При установке выберите смешанную проверку подлинности (Windows и SQL Server) и задайте пароль для sa.
  • Параметры сортировки — Cyrillic_General_CI_AS.
  • Создайте отдельный логин для 1С (например, user1c) с ролью dbcreator или sysadmin, чтобы сервер 1С мог сам создать базу.
  • Ограничьте максимальную память SQL Server в свойствах экземпляра. Иначе он займёт почти всё ОЗУ, и рабочим процессам 1С (rphost) не хватит места.

PostgreSQL

  • При инициализации кластера задайте локаль ru_RU.UTF-8 (на Windows — Russian, Russia).
  • Пароль пользователя postgres запишите — он понадобится при создании базы в 1С.
  • Увеличьте shared_buffers (обычно около 25% ОЗУ) и work_mem, затем перезапустите службу PostgreSQL. На стандартных значениях база работает заметно медленнее файловой.

Создание пустой базы в кластере серверов 1С

Базу можно создать двумя способами: через консоль кластера или через окно запуска 1С. Результат одинаковый.

Через консоль администрирования серверов

  1. Откройте консоль, разверните Central 1C:Enterprise 8.3 servers → <имя сервера> → Кластеры → Локальный кластер.
  2. Правой кнопкой по ветке «Информационные базы» → Создать → Информационная база.
  3. Заполните поля:
    • Имя — короткое латиницей, например buh. По нему пользователи будут подключаться.
    • Тип СУБД — MS SQL Server или PostgreSQL.
    • Сервер баз данных — имя машины с СУБД (для MS SQL с именованным экземпляром — server\instance).
    • База данных — имя базы в СУБД, можно то же buh.
    • Пользователь и пароль — логин 1С в MS SQL или postgres.
    • Смещение дат — для MS SQL ставьте 2000, для PostgreSQL оставьте 0.
  4. Отметьте «Создать базу данных в случае её отсутствия».
  5. Отметьте «Блокировка регламентных заданий включена» — пока база не проверена, фоновые обмены и загрузки в ней не нужны.

Через окно запуска 1С

В окне запуска нажмите Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации, на следующем шаге выберите «На сервере 1С:Предприятия». Поля те же, что в консоли. Так удобнее, если консоль не установлена.

Базу создавайте пустой, без конфигурации. Если создать её из шаблона типовой конфигурации, загрузка .dt всё равно всё перезапишет, но вы потратите лишнее время.

Выгрузка файловой базы 1С в файл .dt

Файл .dt — это полная выгрузка: конфигурация, данные, пользователи и их пароли. Формат не зависит от варианта работы, поэтому именно через него идёт конвертация из файловой базы в SQL.

Подготовка файловой базы

  1. Предупредите пользователей и назначьте время перехода — обычно вечер пятницы.
  2. Сделайте копию каталога базы целиком (файл 1Cv8.1CD). Это ваш путь отката, если что-то пойдёт не так.
  3. Попросите всех выйти из базы. Работа в старой базе после выгрузки потеряется: изменения не попадут в серверную.
  4. Запустите Конфигуратор и выполните Администрирование → Тестирование и исправление с проверкой логической и ссылочной целостности. Ошибки, которые в файловой базе «молчали», при загрузке в SQL могут остановить процесс.

Выгрузка

В Конфигураторе: Администрирование → Выгрузить информационную базу, укажите путь и имя файла. Файл .dt обычно в несколько раз меньше 1Cv8.1CD.

Для больших баз удобнее выгрузка из командной строки — её можно запустить и уйти:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"пароль" /DumpIB "D:\Backup\buh.dt" /Out "D:\Backup\dump.log"

Результат и ошибки окажутся в dump.log.

Если файловая база падает при тестировании, сначала проверьте файл утилитой chkdbfl.exe из каталога bin платформы. Она работает с файлом 1Cv8.1CD напрямую, без запуска 1С.

Загрузка данных в серверную базу и первый запуск

  1. Добавьте серверную базу в список окна запуска: Добавить → Добавление в список существующей информационной базы → На сервере 1С:Предприятия. Строка подключения будет вида Srvr="srv1c";Ref="buh";.
  2. Откройте её в Конфигураторе. Пустая база пускает без пароля.
  3. Администрирование → Загрузить информационную базу, выберите файл .dt, подтвердите замену данных.
  4. Дождитесь окончания. Платформа сама перезапустит Конфигуратор и попросит пароль — теперь уже пользователя из загруженной базы.

То же из командной строки:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /S"srv1c\buh" /RestoreIB "D:\Backup\buh.dt" /Out "D:\Backup\restore.log"

Первый запуск в режиме 1С:Предприятие

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

Сразу после загрузки переименуйте файловую базу в списке (например, «Бухгалтерия — АРХИВ, не работать») или уберите её из списков пользователей. Иначе кто-нибудь по привычке откроет старую базу.

Права пользователей, регламентные задания и проверка скорости

Права и подключение пользователей

  • 👤 Пользователи 1С и их роли переносятся вместе с .dt, создавать их заново не нужно.
  • 💻 На рабочих местах добавьте серверную базу в список. Чтобы не ходить по компьютерам, раздайте список через общий файл .v8i или настройку списка общих баз в окне запуска.
  • 🔐 Доступ к самой СУБД оставьте только у логина, под которым подключается сервер 1С, и у администратора. Пользователям прямой доступ к SQL не нужен.
  • 📁 Пользователю службы USR1CV8 дайте права на каталоги, куда база пишет файлы (выгрузки обменов, вложения в томах).

Регламентные задания

Когда убедились, что данные на месте, снимите блокировку регламентных заданий в свойствах базы в консоли кластера. Затем зайдите в программу и проверьте, что обмены, загрузка курсов и классификаторов отрабатывают по расписанию.

Проверка работоспособности и производительности

Проверьте на реальных операциях то, что раньше тормозило:

Что проверитьКак
Данные перенесены полностьюСформируйте оборотно-сальдовую ведомость за год в обеих базах и сравните итоги
Скорость проведенияПерепроведите документы за неделю и засеките время
Тяжёлые отчётыЗапустите отчёт, который в файловой базе формировался дольше всего
Многопользовательская работаПосадите 5–10 человек работать одновременно

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

Обслуживание после перехода

Копировать файл базы больше нельзя — его нет. Резервные копии делает СУБД: в MS SQL — план обслуживания с полным бэкапом и перестроением индексов, в PostgreSQL — pg_dump по расписанию и работа autovacuum. Выгрузку в .dt оставьте как дополнительную копию раз в неделю, но не как основную.

Ошибки при переходе на SQL и способы их решения

Большинство сбоев при конвертации связано с сетью, правами и версиями. Выберите симптом:

Диагностика: выберите симптом

Перезапуск службы агента сервера 1С или СУБД обрывает сеансы всех пользователей. Делайте это вне рабочего времени или предупредив людей.

Если перейти не получается и на сервер нет бюджета, есть промежуточный вариант: опубликовать файловую базу на веб-сервере и подключать пользователей через тонкий клиент или браузер. Это не снимает ограничений файловой базы по нагрузке, но выигрывает время до покупки лицензий.

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

Можно ли вернуть базу из SQL обратно в файловый вариант?
Да. Выгрузите серверную базу в .dt и загрузите её в пустую файловую базу. Процедура зеркальная.
Нужно ли покупать новые клиентские лицензии при переходе на SQL?
Нет. Клиентские лицензии работают и с файловой, и с серверной базой. Дополнительно покупается только лицензия на сервер 1С.
Можно ли держать сервер 1С и СУБД на разных машинах?
Можно. Так делают при большой нагрузке. Нужна быстрая сеть между ними и открытый порт СУБД.
Сохранятся ли пароли пользователей после переноса?
Да. Список пользователей с паролями и ролями входит в файл .dt и переносится полностью.
Хватит ли бесплатной MS SQL Express?
Для небольшой базы — да, но у неё предел 10 ГБ на базу и ограничения по памяти. При росте базы придётся переходить на платную редакцию или PostgreSQL.