Как перевести 1С:Бухгалтерию 3.0 на PostgreSQL и какую версию СУБД выбрать

Системный администратор 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Анализ ситуации и выбор серверной лицензии

Рассмотрим исходные данные: база 1С:Бухгалтерия 3.0 объемом 11 Гб и 5 активных пользователей. При таких параметрах файловый режим начинает терять стабильность, а риск повреждения данных при сбоях сети возрастает. Для перехода на SQL-версию нам потребуется серверная лицензия 1С.

Разберем, какой вариант лицензирования будет оптимальным:

  1. 1С:Предприятие 8.3. Лицензия на сервер (x86-64): Полноценная лицензия без ограничений по количеству сеансов. Это лучший выбор, если в будущем планируется расширение штата до 10 и более человек.
  2. 1С:Предприятие 8. Сервер МИНИ на 5 подключений: Если бюджет ограничен и вы уверены, что количество пользователей не превысит 5 человек, можно рассмотреть этот вариант. Однако помните о жестком ограничении: 6-й сеанс (даже если это конфигуратор или вторая база) открыт не будет.

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

Выбор версии PostgreSQL: Ванильная сборка 1С vs Postgres Pro

Проанализируем основные варианты СУБД, доступные для работы с 1С:

1. Бесплатная сборка PostgreSQL от 1С. Ее можно скачать на портале техподдержки (releases.1c.ru). Это стандартная СУБД с наложенными патчами от разработчиков 1С для корректной работы с метаданными платформы. Преимущества: Полностью бесплатна, официально поддерживается 1С. Недостатки: Отсутствуют продвинутые инструменты оптимизации, которые есть в коммерческих форках.

2. Postgres Pro Standard (для 1С). Это российская разработка, включенная в реестр отечественного ПО. Преимущества: Содержит расширения, такие как online_analyze и plantuner. Эти модули позволяют СУБД лучше справляться с временными таблицами 1С, актуализируя статистику «на лету». Недостатки: Высокая стоимость лицензии. На текущий момент цена может составлять значительную сумму (около 40-100 тыс. руб. и выше в зависимости от количества ядер или пользователей).

Для базы в 11 Гб и 5 пользователей бесплатной версии от 1С будет более чем достаточно при условии правильной настройки сервера.

Почему не подходит MS SQL Server Express?

Часто возникает вопрос об использовании бесплатной версии MS SQL Express. Выясним причину, почему в данном случае это невозможно: лимит объема базы данных в версии Express составляет 10 Гб. Поскольку база автора уже достигла 11 Гб, СУБД от Microsoft просто заблокирует запись новых данных. Поэтому PostgreSQL становится единственной бесплатной альтернативой полноценному SQL-серверу.

Настройка PostgreSQL для работы с 1С

Просто установить СУБД недостаточно. В отличие от MS SQL, PostgreSQL требует ручной корректировки конфигурационного файла postgresql.conf. Рассмотрим ключевые параметры, которые необходимо изменить сразу после установки:

Оптимизация производительности: проблема СрезаПоследних

Разберем одну из главных технических трудностей при работе 1С на PostgreSQL — медленную работу виртуальных таблиц, особенно СрезПоследних. Из-за особенностей планировщика PostgreSQL, сложные запросы с соединениями к этой таблице могут выполняться в десятки раз медленнее, чем на MS SQL.

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

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


// Шаг 1: Получаем срез последних во временную таблицу
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена
ПОМЕСТИТЬ ВТ_АктуальныеЦены
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних;

// Шаг 2: Соединяем временную таблицу с основной выборкой
ВЫБРАТЬ
    Товары.Ссылка,
    ВТ_АктуальныеЦены.Цена
ИЗ
    Справочник.Номенклатура КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_АктуальныеЦены КАК ВТ_АктуальныеЦены
    ПО Товары.Ссылка = ВТ_АктуальныеЦены.Номенклатура;

Такой подход заставляет СУБД сначала вычислить результаты среза, а потом эффективно выполнить соединение, что предотвращает деградацию производительности.

Рекомендации по обслуживанию базы

После переезда на PostgreSQL важно изменить регламент обслуживания базы данных. В файловой версии мы делали простое копирование файла 1Cv8.1CD. На SQL-сервере алгоритм иной:

  1. Настройка бэкапов: Используйте утилиту pg_dump для создания ежедневных копий.
  2. Обслуживание индексов и статистики: В PostgreSQL крайне важно регулярно выполнять команды ANALYZE и VACUUM. Без обновления статистики планировщик начнет строить неверные планы запросов, и база «затормозит» уже через пару недель активной работы.
  3. Очистка временных таблиц: Следите за ростом каталога pg_xlog (или pg_wal в новых версиях).

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

← На главную