Администрирование · 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. Это коммерческие дистрибутивы с расширенными возможностями (улучшенное сжатие, мультимастер в отдельных редакциях, расширенный мониторинг) и официальной поддержкой. Для крупных внедрений с высокой нагрузкой такой вариант часто оправдан.
Третий путь — самостоятельная сборка из исходников с наложением патча. Он подходит опытным администраторам, которым нужна специфическая версия или нестандартная ОС, но требует компетенций в компиляции и ответственности за последующее сопровождение.
Сравнение вариантов
Бесплатна, протестирована с платформой. Ограничение: выбор версий ограничен публикуемыми релизами, поддержка не входит.
Коммерческая поддержка, дополнительные механизмы надёжности и производительности. Ограничение: платная лицензия.
Полный контроль над версией и параметрами. Ограничение: нужны навыки компиляции, ответственность за обновления и безопасность ложится на администратора.
Как установить пропатченный PostgreSQL под 1С
Общий порядок одинаков для большинства сборок: устанавливается СУБД, инициализируется кластер с правильной локалью, настраиваются параметры под нагрузку 1С, затем база создаётся через конфигуратор или консоль кластера серверов 1С. Ключевое отличие от обычной установки PostgreSQL — выбор локали при инициализации кластера: она должна соответствовать требованиям платформы (для русскоязычных баз обычно используется русская локаль с корректными правилами сортировки, которые предоставляет пропатченная сборка).
- 1Скачайте пропатченную сборку PostgreSQL с портала 1С или сайта Postgres Pro, сверив версию с требованиями вашей платформы.
- 2Установите СУБД и инициализируйте кластер с локалью, рекомендованной для 1С (например, ru_RU.UTF-8 — уточните в документации к сборке).
- 3Настройте postgresql.conf под нагрузку 1С: shared_buffers, work_mem, effective_cache_size, max_connections.
- 4Откройте конфигуратор, создайте информационную базу на сервере СУБД, указав параметры подключения.
- 5Загрузите данные из выгрузки .dt или начните работу с пустой базой и проверьте типовые операции.
Типичные параметры, на которые стоит обратить внимание в postgresql.conf: объём shared_buffers обычно задают в районе четверти оперативной памяти сервера, work_mem подбирают под характер запросов, а max_connections — под число рабочих процессов сервера 1С с запасом. Точные значения зависят от железа и нагрузки, универсальных цифр нет.
sudo -u postgres psql -c "SHOW server_version;" && sudo -u postgres psql -lКак проверить, что база работает корректно
После создания базы проверьте три вещи. Во-первых, версию и сборку СУБД — она должна соответствовать пропатченному дистрибутиву. Во-вторых, локаль базы: сравнение строк должно работать без учёта регистра, что легко проверить простым запросом. В-третьих, штатную работу типовых операций 1С: проведение документов, формирование отчётов, поиск по строковым полям.
Как проверить результат
База создаётся без ошибок, конфигуратор открывается
Ошибка создания базы или сообщение о несовместимой версии СУБД
Поиск находит записи независимо от регистра введённых букв
Записи не находятся при другом регистре — проблема с collation
Документы проводятся, отчёты формируются за приемлемое время
Ошибки SQL, падение запросов, аномально долгое выполнение
Дополнительный тест — сравнение строк в самой СУБД: запрос вида SELECT 'А' = 'а'; в пропатченной под 1С базе с корректной локалью должен возвращать результат, согласованный с ожиданиями платформы. Если поведение отличается, база инициализирована с неправильной локалью, и проще пересоздать кластер, чем исправлять.
Риски, ограничения и типичные ошибки
Главный риск — потеря данных при неправильной миграции. Перенос базы с одной сборки на другую выполняется только через выгрузку в .dt из конфигуратора или через pg_dump/pg_restore с последующей проверкой. Простое копирование каталога данных между разными сборками и версиями недопустимо: форматы хранения и локали могут не совпасть.
Ещё одно ограничение: патч привязан к конкретной мажорной версии PostgreSQL. При выходе новой версии платформы 1С может потребоваться новая версия СУБД, и обновление нужно планировать заранее, с тестированием на копии базы.
Когда патч не нужен: альтернативы
Если инфраструктура позволяет, альтернативой служит MS SQL Server — платформа 1С поддерживает его нативно, без патчей, но требуется платная лицензия. Для небольших баз до нескольких пользователей достаточно файлового режима работы 1С, где СУБД вообще не нужна. Для крупных внедрений существует также поддержка Oracle Database, но это нишевый и дорогой вариант.
Как выбрать действие
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 и всегда тестируйте обновления на копии базы.