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

В этой статье мы подробно разберем все этапы создания серверной базы — от выбора между Microsoft SQL Server, PostgreSQL и файловой структурой до тонкостей настройки кластера 1С:Предприятия. Особое внимание уделим типовым ошибкам, которые возникают при миграции с файлового варианта, и способам их устранения. Материал будет полезен как начинающим администраторам, так и опытным специалистам, планирующим оптимизировать существующую инфраструктуру.

1. Выбор типа серверной базы: SQL vs файловый вариант

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

Основные варианты:

  • 🔹 Клиент-серверный вариант с Microsoft SQL Server — классическое решение для средних и крупных предприятий. Поддерживает до 1000+ пользователей, обеспечивает высокую скорость обработки данных и гибкие возможности резервного копирования. Требует покупки лицензии на SQL Server (Standard или Enterprise).
  • 🔹 Клиент-серверный вариант с PostgreSQL — бесплатная альтернатива от , доступная начиная с платформы 8.3.10. Подходит для организаций, желающих сократить затраты на лицензирование. Имеет ограничения по производительности при работе с большими объемами данных (100+ ГБ).
  • 🔹 Файловый вариант на сервере — промежуточное решение для малых предприятий (до 10-15 пользователей). База хранится в виде файлов .1CD на сетевом ресурсе. Не требует СУБД, но имеет ограничения по скорости и надежности.

Для большинства организаций оптимальным выбором остается Microsoft SQL Server Standard — он обеспечивает баланс между стоимостью и производительностью. Исключение составляют случаи, когда объем базы превышает 500 ГБ — здесь требуется SQL Server Enterprise для поддержки табличного разделения (partitioning).

📊 Какую СУБД вы используете для 1С?
Microsoft SQL Server
PostgreSQL
Файловый вариант
Другая СУБД
⚠️ Внимание: При выборе PostgreSQL учитывайте, что некоторые отраслевые конфигурации (например, 1С:ERP или 1С:Управление холдингом) могут требовать доработок для корректной работы с этой СУБД. Перед миграцией проверьте совместимость в документации к вашей конфигурации.

2. Требования к серверному оборудованию

Производительность серверной базы напрямую зависит от характеристик оборудования. Недостаточные ресурсы приводят к "подвисаниям" интерфейса, длительным ожиданиям при формировании отчетов и ошибкам блокировок.

Минимальные и рекомендуемые требования к серверу:

Компонент Минимально (до 10 пользователей) Рекомендуемо (10-50 пользователей) Для крупных баз (50+ пользователей)
Процессор (CPU) 2 ядра × 2.0 ГГц (Intel Xeon или AMD EPYC) 4 ядра × 2.5 ГГц 8+ ядер × 3.0 ГГц (с поддержкой Hyper-Threading)
Оперативная память (RAM) 8 ГБ 16-32 ГБ 64+ ГБ (с учетом кэша СУБД)
Хранилище (Disk) SSD 256 ГБ (SATA) SSD 512 ГБ+ (NVMe) RAID 10 на NVMe или SAS SSD
Сетевой интерфейс 1 Гбит/с 1 Гбит/с (с резервированием) 10 Гбит/с (с балансировкой нагрузки)

Критическим параметром является дисковая подсистема. Для баз объемом свыше 100 ГБ рекомендуется использовать RAID 10 на базе NVMe-накопителей — это обеспечивает высокую скорость чтения/записи (1000+ IOPS) и отказоустойчивость. Для SQL Server важно выделить отдельные физические диски под:

  • 📁 Файлы базы данных (.mdf)
  • 📁 Журналы транзакций (.ldf)
  • 📁 TempDB
  • 📁 Резервные копии
💡

Для виртуальных сред (VMware, Hyper-V) выделяйте серверу 1С отдельные физические ядра процессора (CPU Pinning) и настраивайте резервирование ресурсов (Resource Reservation) на уровне гипервизора. Это предотвратит "кражу" ресурсов другими виртуальными машинами в пиковые нагрузки.

3. Установка и настройка СУБД

Процесс установки СУБД зависит от выбранного варианта. Рассмотрим оба популярных сценария: Microsoft SQL Server и PostgreSQL.

3.1. Развертывание Microsoft SQL Server

Для работы с подходит SQL Server 2016 и выше (рекомендуется 2019 или 2022). Установку выполняйте с учетом следующих нюансов:

  1. Скачайте дистрибутив с официального сайта Microsoft (выберите редакцию Standard или Enterprise).
  2. При установке выберите компоненты:
    • 🔧 Database Engine Services (основной компонент)
    • 🔧 Management Tools (для администрирования через SSMS)
    • 🔧 Client Tools Connectivity (для подключения 1С)
  • На этапе настройки экземпляра укажите Mixed Mode Authentication и задайте пароль для пользователя sa.
  • В разделе Data Directories укажите пути к дискам, выделенным под базу и журналы (см. таблицу выше).
  • После установки необходимо выполнить пост-настройку:

    -- Включение протокола TCP/IP (через SQL Server Configuration Manager)
    

    -- Настройка порта по умолчанию (1433)

    -- Отключение протокола Named Pipes (не используется 1С)

    -- Установка максимального размера памяти (оставить 2-4 ГБ для ОС)

    3.2. Развертывание PostgreSQL для 1С

    Для работы с PostgreSQL требуется версия 9.6.3 или выше (рекомендуется 12-15). Процесс установки:

    1. Скачайте дистрибутив с сайта postgresql.org или используйте готовый пакет от (входит в комплект поставки платформы).
    2. При установке выберите кодировку UTF-8 и локаль Russian_Russia.
    3. В файле конфигурации postgresql.conf установите параметры:
      max_connections = 200
      

      shared_buffers = 4GB # 25% от общей RAM

      work_mem = 16MB

      maintenance_work_mem = 512MB

      effective_cache_size = 12GB

    4. В файле pg_hba.conf добавьте строку для подключения 1С:
      host    all             all             192.168.1.0/24          md5

      (замените 192.168.1.0/24 на вашу подсеть).

    5. ⚠️ Внимание: При использовании PostgreSQL в 1С:ЗУП или 1С:ERP могут возникать ошибки при работе с большими регистрами накопления (свыше 10 млн записей). Перед переходом протестируйте производительность на тестовом стенде с реальными данными.

      4. Установка и настройка кластера 1С:Предприятия

      Кластер серверов 1С:Предприятия отвечает за распределение нагрузки между рабочими процессами (ragent) и управление соединениями с базами данных. Его настройка включает несколько критичных этапов.

      4.1. Установка платформы 1С на сервер

      Используйте дистрибутив платформы 1С:Предприятие 8.3 (версия не ниже 8.3.20). При установке выберите компоненты:

      • 🖥️ Сервер 1С:Предприятия (основной компонент)
      • 🖥️ Администрирование сервера 1С:Предприятия (утилиты управления)
      • 🖥️ Консоль кластера (для мониторинга)

      После установки запустите Консоль кластера (rac.exe) и создайте новый центральный сервер:

      rac cluster create --name=MainCluster --port=1540 --range=1560:1591 --daemon-port=1545

      4.2. Настройка рабочих процессов (ragent)

      Количество рабочих процессов (ragent) определяет, сколько пользовательских сессий может обрабатываться параллельно. Рекомендации:

      • 📊 Для 10-20 пользователей: 4-8 процессов
      • 📊 Для 20-50 пользователей: 10-16 процессов
      • 📊 Для 50+ пользователей: 20+ процессов (с распределением по нескольким серверам)

    Настройка выполняется через консоль или файл конфигурации srvinfo.conf:

    [MainCluster]
    

    IsCluster=Yes

    Port=1540

    [WorkingProcesses]

    Count=12

    MemoryLimit=2048 # Лимит памяти на процесс, МБ

    MaxMemoryLimit=4096

    Установлены все обновления платформы 1С|Порты 1540-1591 открыты в брандмауэре|Пользователь службы 1С имеет права на папку с базами|В SQL Server созданы логины для 1С|Настроено резервное копирование конфигураций-->

    4.3. Публикация базы данных в кластере

    Чтобы сделать базу доступной для пользователей, ее необходимо опубликовать в кластере. Это можно сделать:

    • 🔧 Через Консоль кластера (графический интерфейс)
    • 🔧 Через команду rac:
      rac infobase create --name=Accounting --db-ms=SQL --db-server=SQLSERVER\SQLEXPRESS --db-name=AccountingDB --db-user=sa --db-pwd=password --locale=ru
    • После публикации проверьте подключение через 1С:Предприятие в режиме конфигуратора. В списке баз должна появиться новая строка с указанием сервера кластера.

      5. Миграция с файлового варианта на серверный

      Перенос базы с файлового варианта на серверный — ответственная операция, требующая подготовки. Основные этапы:

      1. Резервное копирование: Создайте архивную копию файлов .1CD и .cf (конфигурации).
      2. Проверка целостности: Запустите тестирование и исправление через конфигуратор (Администрирование → Тестирование и исправление).
      3. Выгрузка данных: Используйте утилиту chdbfl.exe для выгрузки в формат .dt:
        chdbfl.exe /F "C:\Bases\Accounting.1CD" /DumpIB "C:\Backup\Accounting.dt"
      4. Создание пустой базы на SQL: Через SQL Server Management Studio или pgAdmin.
      5. Загрузка данных: Используйте ту же утилиту для загрузки в серверную базу:
        chdbfl.exe /F "C:\Backup\Accounting.dt" /LoadIB /S "SQLSERVER\SQLEXPRESS" /N "AccountingDB" /U sa /P password

    После миграции обязательно выполните:

    • 🔍 Проверку связей объектов (Администрирование → Проверка логической целостности)
    • 🔍 Обновление статистики в СУБД (для SQL Server:
      EXEC sp_updatestats
    • 🔍 Тестовое подключение 2-3 пользователей для проверки производительности
    ⚠️ Внимание: При миграции баз объемом свыше 50 ГБ используйте утилиту 1cv8.exe в режиме конфигуратора с ключом /LoadDBCfg. Это ускорит процесс за счет параллельной загрузки данных и конфигурации:
    1cv8.exe DESIGNER /S "SQLSERVER\SQLEXPRESS" /N "AccountingDB" /U sa /P password /LoadDBCfg "C:\Backup\Accounting.dt"
    Что делать если миграция прервалась?

    Если процесс прервался на этапе загрузки данных, не пытайтесь повторно запускать chdbfl — это может привести к дублированию записей. Вместо этого:

    1. Удалите созданную базу на SQL.

    2. Создайте ее заново с тем же именем.

    3. Повторите загрузку с чистого листа.

    Если ошибка повторяется, проверьте права пользователя SQL на создание объектов и наличие свободного места на диске.

    6. Оптимизация производительности серверной базы

    Даже правильно развернутая база со временем может начать тормозить. Основные направления оптимизации:

    6.1. Настройка SQL Server для 1С

    Ключевые параметры для tuning:

    • 🛠 Max Degree of Parallelism (MAXDOP) — ограничьте до 4-8 (даже на многоядерных серверах).
    • 🛠 Cost Threshold for Parallelism — установите значение 50 (чтобы простые запросы не выполнялись параллельно).
    • 🛠 Optimize for Ad hoc Workloads — включите (1), чтобы уменьшить расход памяти на одноразовые планы.

    Пример скрипта для применения настроек:

    EXEC sp_configure 'show advanced options', 1;
    

    RECONFIGURE;

    EXEC sp_configure 'max degree of parallelism', 4;

    EXEC sp_configure 'cost threshold for parallelism', 50;

    EXEC sp_configure 'optimize for ad hoc workloads', 1;

    RECONFIGURE;

    6.2. Оптимизация запросов в 1С

    Типовые проблемы и их решения:

    • 🐢 Долгие отчеты: Используйте механизм Кэширование временных таблиц в настройках отчета.
    • 🐢 Блокировки при проведении: Разбейте большие документы на партии (например, по 100 строк) с помощью ОбменДанными.ЗагрузитьДанные().
    • 🐢 Медленная работа форм: Отключите ненужные реквизиты в динамических списках (ДинамическийСписок.Отбор.Добавить()).

    Для анализа медленных запросов используйте:

    • 🔍 Журнал регистрации 1С (настройте запись событий длительностью >1 сек)
    • 🔍 SQL Server Profiler (фильтруйте по ApplicationName = "1Cv8")
    • 🔍 План выполнения запросаSSMS нажмите Ctrl+M перед выполнением)
    💡

    Регулярно обновляйте статистику в SQL Server — это позволяет оптимизатору запросов строить эффективные планы выполнения. Для 1С актуально выполнять обновление статистики не реже 1 раза в неделю (или после массовых загрузок данных).

    7. Организация резервного копирования

    Потеря данных в 1С может парализовать работу компании на дни. Грамотная стратегия резервирования включает:

    7.1. Резервирование на уровне СУБД

    Для SQL Server настройте план обслуживания (Maintenance Plan) с следующими задачами:

    • 💾 Полное резервное копирование (FULL BACKUP) — ежедневно в нерабочее время.
    • 💾 Дифференциальное копирование (DIFFERENTIAL BACKUP) — каждые 4-6 часов.
    • 💾 Копирование журналов транзакций (TRANSACTION LOG BACKUP) — каждые 15-30 минут.

    Пример скрипта для создания резервной копии:

    BACKUP DATABASE [AccountingDB]
    

    TO DISK = 'D:\Backups\AccountingDB_FULL.bak'

    WITH COMPRESSION, STATS = 10, INIT;

    7.2. Резервирование конфигурации и внешних файлов

    Помимо данных, необходимо сохранять:

    • 📄 Файлы конфигурации (.cf, .cfu)
    • 📄 Внешние обработки и отчеты (.epf, .erf)
    • 📄 Настройки кластера (srvinfo.conf, nethasp.ini)
    • Автоматизируйте процесс с помощью Планировщика заданий Windows или скрипта PowerShell:

      $source = "C:\Program Files\1cv8\conf"
      

      $dest = "D:\Backups\1C_Config\"

      $date = Get-Date -Format "yyyyMMdd"

      Copy-Item -Path "$source\*" -Destination "$dest$date\" -Recurse -Force

      7.3. Проверка резервных копий

      По статистике, 30% компаний не могут восстановить данные из резервных копий из-за ошибок в процедурах резервирования. Регулярно тестируйте восстановление:

      1. Разверните тестовый экземпляр SQL Server.
      2. Восстановите последнюю резервную копию.
      3. Проверьте целостность данных через DBCC CHECKDB.
      ⚠️ Внимание: При использовании PostgreSQL для резервного копирования используйте утилиту pg_dump с ключом --format=custom для создания сжатых дампов. Для больших баз (>100 ГБ) настройте WAL-архивирование для возможности точечного восстановления.

      8. Типовые ошибки и их устранение

      При работе с серверными базами 1С администраторы чаще всего сталкиваются со следующими проблемами:

      Ошибка Причина Решение
      Не удалось подключиться к информационной базе Не запущен кластер 1С или закрыт порт 1540 Проверьте статус службы 1C:Enterprise 8.3 Server Agent и настройки брандмауэра
      Ошибка блокировки при записи объекта Долгие транзакции или неоптимальные запросы Настройте таймаут блокировки в кластере (DeadlockTimeout=1000) и оптимизируйте запросы
      Недостаточно памяти для выполнения операции Лимит памяти рабочего процесса (ragent) превышен Увеличьте параметр MemoryLimit в srvinfo.conf или разбейте операцию на части
      Ошибка при чтении данных (файл поврежден) Проблемы с дисковой подсистемой или прерванная транзакция Выполните DBCC CHECKDB с параметром REPAIR_ALLOW_DATA_LOSS (только в крайнем случае!)

      Для диагностики ошибок используйте:

      • 🔧 Журналы кластера 1С (C:\Program Files\1cv8\srvinfo\logs\)
      • 🔧 Журналы SQL Server (SQL Server Error Log)
      • 🔧 Трассировку 1С (включается через 1cv8.exe /TraceFile)

      Если ошибка связана с блокировками, выполните запрос для анализа активных транзакций:

      SELECT
      

      t.session_id,

      s.login_name,

      t.transaction_id,

      t.name AS transaction_name,

      t.transaction_begin_time,

      t.transaction_type

      FROM sys.dm_tran_active_transactions t

      JOIN sys.dm_tran_session_transactions st ON t.transaction_id = st.transaction_id

      JOIN sys.dm_exec_sessions s ON st.session_id = s.session_id

      WHERE s.is_user_process = 1;

      💡

      Для устранения блокировок в 1С используйте обработку "Управление блокировками данных" (входит в комплект поставки платформы). Она позволяет увидеть, какие пользователи блокируют объекты и сколько времени длится блокировка.

      FAQ: Частые вопросы по серверным базам 1С

      Можно ли использовать бесплатную версию SQL Server Express для 1С?

      SQL Server Express имеет ограничение на размер базы (10 ГБ) и количество ядер (4), что делает его непригодным для большинства организаций. Исключение — тестовые стенды или малые базы с архивными данными. Для рабочих систем требуется Standard или Enterprise редакция.

      Как перенести базу с одного SQL-сервера на другой?

      Используйте стандартные средства SQL Server:

      1. Создайте резервную копию базы на исходном сервере.
      2. Восстановите ее на целевом сервере с тем же именем.
      3. Обновите настройки подключения в кластере 1С (rac infobase update).

      Для минимального простоя используйте Always On Availability Groups (требуется SQL Server Enterprise).

      Почему после миграции на SQL база работает медленнее, чем в файловом варианте?

      Типовые причины:

      • Не обновлена статистика в SQL (выполните EXEC sp_updatestats).
      • Недостаточные ресурсы сервера (проверьте загрузку CPU и RAM).
      • Отсутствие индексов на часто используемых полях (анализируйте планы запросов).
      • Неоптимальные настройки кластера 1С (увеличьте количество рабочих процессов).

      Для диагностики включите SQL Server Profiler и отфильтруйте запросы от 1С по длительности.

      Как организовать доступ к базе 1С из интернета?

      Для удаленного доступа:

      1. Настройте VPN или RD Gateway для безопасного подключения.
      2. Откройте порты 1540-1541 (кластер 1С) и 1433 (SQL Server) только для доверенных IP.
      3. Используйте веб-клиент 1С или тонкий клиент с шифрованием трафика.

      Важно: Никогда не открывайте порты 1С напрямую в интернет без VPN — это создает риск утечки данных!

      Как уменьшить размер базы 1С на SQL?

      Способы сокращения размера:

      • Выполните сжатие базы (DBCC SHRINKDATABASE).
      • Очистите исторические данные (архивируйте документы старше 3-5 лет).
      • Пересоздайте индексы с высокой фрагментацией:
        ALTER INDEX ALL ON [AccountingDB] REORGANIZE;
      • Удалите неиспользуемые объекты конфигурации.

      Для баз >100 ГБ рассмотрите возможность partitioning (разделение таблиц по периодам).