К статье
Практический материал

Администрирование · 10 мин

Патч PostgreSQL для 1С: зачем он нужен и как его применить

Зачем нужен патч PostgreSQL для 1С, чем отличается от ванильной сборки, как установить и проверить совместимость. Риски, ошибки и FAQ для администраторов.

Платформа 1С:Предприятие умеет работать с несколькими СУБД, и PostgreSQL — самый популярный бесплатный вариант. Но обычная («ванильная») сборка PostgreSQL с официального сайта проекта с 1С работает некорректно: база либо не создаётся, либо падает с ошибками при обращении к данным. Причина — особенности того, как платформа 1С формирует SQL-запросы и какие требования предъявляет к сортировке, регистру символов и обработке типов данных.

Чтобы закрыть эти расхождения, существуют специальные патчи — наборы изменений в исходном коде PostgreSQL. Пропатченная сборка учитывает требования 1С к collation, сравнению строк и ряду внутренних механизмов СУБД. Готовые пропатченные дистрибутивы выпускает сама фирма «1С» совместно с Postgres Professional, а также доступны сборки от Postgres Pro и патчи для самостоятельной компиляции.

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

Почему ванильный PostgreSQL не подходит для 1С

Платформа 1С при создании информационной базы формирует структуру таблиц и индексов по своим внутренним правилам. Критичный момент — правила сортировки и сравнения строк (collation). 1С ожидает, что строки будут сравниваться без учёта регистра и по правилам, близким к поведению MS SQL Server. Стандартный PostgreSQL такого поведения «из коробки» не даёт, из-за чего запросы с условиями по строковым полям возвращают неверные результаты или вызывают ошибки.

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

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

Что именно меняет патч

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

Дополнительно патч затрагивает обработку граничных значений дат и чисел, поведение при явных блокировках и некоторые детали планировщика запросов. Конкретный состав изменений зависит от версии: патчи для PostgreSQL 10, 12, 14 и новее отличаются, поэтому нельзя переносить патч с одной мажорной версии на другую.

  • регистронезависимое сравнение и сортировка строк по правилам 1С;
  • корректная работа со специальными значениями дат и типов платформы;
  • адаптация поведения оптимизатора под типовые запросы 1С;
  • совместимость процедуры создания информационной базы через конфигуратор.

Какие варианты пропатченных сборок существуют

Первый вариант — дистрибутивы с портала 1С: обновления программ (releases.1c.ru). Там публикуются сборки PostgreSQL, подготовленные совместно с Postgres Professional и рекомендованные для конкретных версий платформы. Это самый предсказуемый путь: сборка уже протестирована на совместимость.

Второй вариант — Postgres Pro Standard или Postgres Pro Certified от компании Postgres Professional. Это коммерческие дистрибутивы с расширенными возможностями (улучшенное сжатие, мультимастер в отдельных редакциях, расширенный мониторинг) и официальной поддержкой. Для крупных внедрений с высокой нагрузкой такой вариант часто оправдан.

Третий путь — самостоятельная сборка из исходников с наложением патча. Он подходит опытным администраторам, которым нужна специфическая версия или нестандартная ОС, но требует компетенций в компиляции и ответственности за последующее сопровождение.

Сравнение вариантов

Сборка с портала 1С

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

Postgres Pro

Коммерческая поддержка, дополнительные механизмы надёжности и производительности. Ограничение: платная лицензия.

Самостоятельная сборка с патчем

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

Как установить пропатченный PostgreSQL под 1С

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

Порядок установки
  1. 1
    Скачайте пропатченную сборку PostgreSQL с портала 1С или сайта Postgres Pro, сверив версию с требованиями вашей платформы.
  2. 2
    Установите СУБД и инициализируйте кластер с локалью, рекомендованной для 1С (например, ru_RU.UTF-8 — уточните в документации к сборке).
  3. 3
    Настройте postgresql.conf под нагрузку 1С: shared_buffers, work_mem, effective_cache_size, max_connections.
  4. 4
    Откройте конфигуратор, создайте информационную базу на сервере СУБД, указав параметры подключения.
  5. 5
    Загрузите данные из выгрузки .dt или начните работу с пустой базой и проверьте типовые операции.

Типичные параметры, на которые стоит обратить внимание в postgresql.conf: объём shared_buffers обычно задают в районе четверти оперативной памяти сервера, work_mem подбирают под характер запросов, а max_connections — под число рабочих процессов сервера 1С с запасом. Точные значения зависят от железа и нагрузки, универсальных цифр нет.

bash
sudo -u postgres psql -c "SHOW server_version;" && sudo -u postgres psql -l

Как проверить, что база работает корректно

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

Контрольные точки

Как проверить результат

Создание базы через конфигуратор
Норма

База создаётся без ошибок, конфигуратор открывается

Тревожный признак

Ошибка создания базы или сообщение о несовместимой версии СУБД

Поиск по строковому реквизиту
Норма

Поиск находит записи независимо от регистра введённых букв

Тревожный признак

Записи не находятся при другом регистре — проблема с collation

Проведение документов и отчёты
Норма

Документы проводятся, отчёты формируются за приемлемое время

Тревожный признак

Ошибки SQL, падение запросов, аномально долгое выполнение

Дополнительный тест — сравнение строк в самой СУБД: запрос вида SELECT 'А' = 'а'; в пропатченной под 1С базе с корректной локалью должен возвращать результат, согласованный с ожиданиями платформы. Если поведение отличается, база инициализирована с неправильной локалью, и проще пересоздать кластер, чем исправлять.

Риски, ограничения и типичные ошибки

Главный риск — потеря данных при неправильной миграции. Перенос базы с одной сборки на другую выполняется только через выгрузку в .dt из конфигуратора или через pg_dump/pg_restore с последующей проверкой. Простое копирование каталога данных между разными сборками и версиями недопустимо: форматы хранения и локали могут не совпасть.

Типичные ошибки
01
Установка ванильного PostgreSQL с официального сайта — база 1С не создаётся или работает с ошибками сортировки.
02
Неправильная локаль при initdb — поиск по строкам ломается, исправляется только пересозданием кластера.
03
Перенос каталога данных между версиями вместо выгрузки .dt — риск повреждения данных.
04
Игнорирование настройки postgresql.conf — СУБД работает на параметрах по умолчанию и тормозит под нагрузкой 1С.
05
Обновление СУБД без проверки совместимости с версией платформы 1С.

Ещё одно ограничение: патч привязан к конкретной мажорной версии PostgreSQL. При выходе новой версии платформы 1С может потребоваться новая версия СУБД, и обновление нужно планировать заранее, с тестированием на копии базы.

Когда патч не нужен: альтернативы

Если инфраструктура позволяет, альтернативой служит MS SQL Server — платформа 1С поддерживает его нативно, без патчей, но требуется платная лицензия. Для небольших баз до нескольких пользователей достаточно файлового режима работы 1С, где СУБД вообще не нужна. Для крупных внедрений существует также поддержка Oracle Database, но это нишевый и дорогой вариант.

Маршрут решения

Как выбрать действие

Нужна бесплатная серверная СУБД для 1СИспользуйте пропатченную сборку PostgreSQL с портала 1С
Требуется коммерческая поддержка и расширенные механизмы надёжностиРассмотрите Postgres Pro или MS SQL Server
Пользователей мало, нагрузка небольшаяОцените файловый режим работы без СУБД
База уже работает на ванильном PostgreSQL с ошибкамиВыгрузите данные в .dt и разверните базу на пропатченной сборке

FAQ

Можно ли использовать PostgreSQL с официального сайта postgresql.org для 1С?

Нет, ванильная сборка несовместима с платформой 1С из-за правил сортировки и сравнения строк. Нужна пропатченная сборка с портала 1С или дистрибутив Postgres Pro.

Как перенести базу 1С с одной сборки PostgreSQL на другую?

Через выгрузку информационной базы в файл .dt в конфигураторе и последующую загрузку на новом сервере. Копировать каталог данных СУБД между разными сборками и версиями нельзя.

Какая локаль нужна при инициализации кластера PostgreSQL для 1С?

Обычно русская локаль с UTF-8 (например, ru_RU.UTF-8), но точное требование зависит от сборки — сверяйтесь с документацией к конкретному дистрибутиву. Ошибка в локали исправляется только пересозданием кластера.

Платный ли патч PostgreSQL для 1С?

Сборки с портала 1С доступны бесплатно пользователям с действующей подпиской ИТС. Postgres Pro — коммерческий продукт с платной лицензией и поддержкой.

Нужно ли обновлять пропатченный PostgreSQL при обновлении платформы 1С?

Не всегда, но перед обновлением платформы проверьте системные требования нового релиза: иногда меняется список поддерживаемых версий СУБД, и тогда обновление PostgreSQL обязательно.

Что делать, если база не создаётся с ошибкой о версии СУБД?

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

Итог

Что важно запомнить

Патч PostgreSQL для 1С устраняет несовместимость платформы со стандартной сборкой СУБД — прежде всего в сортировке и сравнении строк. Используйте готовые сборки с портала 1С или Postgres Pro, инициализируйте кластер с правильной локалью, мигрируйте только через выгрузку .dt и всегда тестируйте обновления на копии базы.