Как выбрать и настроить PostgreSQL для 1С 8.3: отличия сборок, разрядность и решение типичных ошибок

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

При развертывании серверной версии 1С:Предприятие на базе СУБД PostgreSQL системные администраторы часто сталкиваются с выбором между различными дистрибутивами и нюансами их настройки. В этой статье мы подробно рассмотрим, какой вариант сборки предпочесть, как избежать проблем с кодировками и почему возникает популярная ошибка mvarchar does not exist.

Выбор дистрибутива: Официальная сборка 1С или Postgre Pro?

Рассмотрим два основных варианта, доступных на рынке: сборка непосредственно от компании 1С и версия от Postgre Pro (специализированная редакция для 1С). На первый взгляд они идентичны, так как обе содержат необходимые патчи для работы с метаданными 1С, но дьявол кроется в деталях.

Разберем основные отличия:

  1. Инсталлятор и удобство развертывания: Сборка от Postgre Pro отличается более продуманным установщиком. Рассмотрим пример: она позволяет указать каталог данных (Data Directory) непосредственно в процессе установки, что крайне удобно, если вы планируете хранить базы на отдельном быстром диске. Официальная сборка от 1С часто перегружена «непонятными галочками», которые могут запутать начинающего администратора.
  2. Оптимизации: Версия Postgre Pro для 1С включает в себя дополнительные улучшения планировщика запросов и механизмов работы с временными таблицами. Это критично для 1С, так как платформа генерирует огромное количество временных таблиц при сложных расчетах или построении отчетов.
  3. Стабильность под Windows: Как показывает практика (и сообщения пользователей), сборка от Postgre Pro зачастую «взлетает из коробки» там, где официальная сборка от 1С может выдавать труднообъяснимые ошибки при подключении базы.

Разрядность системы: x32 или x64?

Проанализируем ситуацию с оперативной памятью. Если ваш сервер обладает объемом RAM 32 Гб, выбор однозначно должен пасть на x64-разрядную версию. Рассмотрим причины этого выбора:

Ошибка «type mvarchar does not exist» и правильное создание базы данных

Выясним причину одной из самых распространенных ошибок при добавлении новой информационной базы. Часто администраторы сначала создают пустую базу данных средствами самого PostgreSQL (через pgAdmin или консоль psql), а затем пытаются подключить ее из диалога запуска 1С. В этот момент система выдает ошибку:

ERROR: type "mvarchar" does not exist LINE 1: create table Config (FileName mvarchar(128)...

Почему это происходит? Платформа 1С использует специфические типы данных mchar и mvarchar, которых нет в стандартном PostgreSQL. Эти типы добавляются специальным расширением (скриптом mchar.sql). Если база создана «вручную» в СУБД, этих типов в ней нет.

Правильное решение: Всегда создавайте информационную базу через консоль администрирования кластера 1С или через диалог запуска 1С (кнопка «Добавить» -> «Создание новой информационной базы»). В этом случае сервер 1С сам инициирует создание базы в СУБД и выполнит все необходимые скрипты для регистрации типов mvarchar и mchar.

Разбираемся с кодировками: UTF8 против WIN1251

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

Когда вы вводите команду \encoding в psql, она показывает кодировку клиента (самой консоли), а не базы данных. Чтобы увидеть реальную кодировку баз в кластере, необходимо использовать команду:

\l

Проанализируем типичный вывод этой команды:


Имя      | Владелец | Кодировка | LC_COLLATE           | LC_CTYPE
---------+----------+-----------+----------------------+----------------------
utdemo   | postgres | UTF8      | Russian_Russia.1251  | Russian_Russia.1251

Важный момент: Кодировка (Encoding) должна быть UTF8, а параметры локали (LC_COLLATE, LC_CTYPE) — Russian_Russia.1251. Это правильная конфигурация для корректной сортировки строк и работы полнотекстового поиска в 1С на Windows-серверах.

Оптимизация настроек postgresql.conf под 32 Гб RAM

После установки СУБД «из коробки» она настроена на минимальное потребление ресурсов. Для сервера с 32 Гб оперативной памяти необходимо выполнить тонкую настройку файла postgresql.conf. Рассмотрим основные параметры:

  1. shared_buffers: Установите значение в районе 8 Гб (25% от общего объема ОЗУ). Это память, выделяемая для совместного использования процессами СУБД.
  2. work_mem: Для 1С рекомендуется начинать с 32 Мб или 64 Мб. Этот параметр определяет объем памяти для операций сортировки внутри одного запроса. Будьте осторожны: если соединений много, общая нагрузка на память возрастет кратно.
  3. effective_cache_size: Установите около 24 Гб (75% от ОЗУ). Это подсказка планировщику о том, сколько памяти доступно для кэширования данных операционной системой.
  4. maintenance_work_mem: Для ускорения обслуживания индексов и выполнения команд VACUUM установите значение 1 Гб или 2 Гб.

Инструментарий: что использовать вместо стандартного pgAdmin?

Часто старые версии pgAdmin, идущие в комплекте с дистрибутивами, ругаются на несоответствие версий сервера. Рассмотрим альтернативы:

Особенности работы на Windows 10

Если в качестве сервера используется Windows 10 (а не серверная ОС), помните о двух важных аспектах:

Во-первых, ограничение на количество TCP-соединений. Десктопные версии Windows имеют лимиты на одновременные сетевые подключения, что может привести к отказам в доступе при росте числа пользователей 1С.

Во-вторых, влияние антивирусов. Проанализируем риски: антивирус может блокировать или замедлять запись в файлы базы данных. Обязательно добавьте папку Data и исполняемые файлы PostgreSQL в исключения антивируса. Это предотвратит возможную порчу данных и существенно повысит скорость работы системы.

Подводя итог, можно сказать, что для стабильной работы 1С 8.3 на PostgreSQL 9.6 оптимальным выбором является сборка от Postgre Pro x64, установленная с созданием баз через консоль кластера 1С и последующей ручной правкой конфигурационных файлов под объем имеющейся оперативной памяти.

← На главную