При развертывании серверной версии 1С:Предприятие на базе СУБД PostgreSQL системные администраторы часто сталкиваются с выбором между различными дистрибутивами и нюансами их настройки. В этой статье мы подробно рассмотрим, какой вариант сборки предпочесть, как избежать проблем с кодировками и почему возникает популярная ошибка mvarchar does not exist.
Рассмотрим два основных варианта, доступных на рынке: сборка непосредственно от компании 1С и версия от Postgre Pro (специализированная редакция для 1С). На первый взгляд они идентичны, так как обе содержат необходимые патчи для работы с метаданными 1С, но дьявол кроется в деталях.
Разберем основные отличия:
Проанализируем ситуацию с оперативной памятью. Если ваш сервер обладает объемом RAM 32 Гб, выбор однозначно должен пасть на x64-разрядную версию. Рассмотрим причины этого выбора:
shared_buffers, что значительно ускоряет выполнение тяжелых запросов в 1С.Выясним причину одной из самых распространенных ошибок при добавлении новой информационной базы. Часто администраторы сначала создают пустую базу данных средствами самого 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.
Посмотрим на ситуацию, которая часто вводит в заблуждение: администратор проверяет кодировку базы через консоль и видит 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-серверах.
После установки СУБД «из коробки» она настроена на минимальное потребление ресурсов. Для сервера с 32 Гб оперативной памяти необходимо выполнить тонкую настройку файла postgresql.conf. Рассмотрим основные параметры:
VACUUM установите значение 1 Гб или 2 Гб.Часто старые версии pgAdmin, идущие в комплекте с дистрибутивами, ругаются на несоответствие версий сервера. Рассмотрим альтернативы:
Если в качестве сервера используется Windows 10 (а не серверная ОС), помните о двух важных аспектах:
Во-первых, ограничение на количество TCP-соединений. Десктопные версии Windows имеют лимиты на одновременные сетевые подключения, что может привести к отказам в доступе при росте числа пользователей 1С.
Во-вторых, влияние антивирусов. Проанализируем риски: антивирус может блокировать или замедлять запись в файлы базы данных. Обязательно добавьте папку Data и исполняемые файлы PostgreSQL в исключения антивируса. Это предотвратит возможную порчу данных и существенно повысит скорость работы системы.
Подводя итог, можно сказать, что для стабильной работы 1С 8.3 на PostgreSQL 9.6 оптимальным выбором является сборка от Postgre Pro x64, установленная с созданием баз через консоль кластера 1С и последующей ручной правкой конфигурационных файлов под объем имеющейся оперативной памяти.