При попытке развернуть сервер СУБД PostgreSQL для платформы 1С:Предприятие 8.2 администраторы часто сталкиваются с официальным примечанием: для работы с версиями 1С ниже 8.3.10 необходимо использовать сборку PostgreSQL с установленным значением параметра integer_datetimes=off. Разберем подробнее, что означает этот параметр, почему он важен для платформы 8.2 и какими способами можно решить эту задачу в операционной системе Windows.
Параметр integer_datetimes определяет внутренний формат хранения дат и времени в базе данных PostgreSQL:
double precision).Сервер 1С:Предприятие 8.2 и ранние релизы платформы 8.3 (до версии 8.3.10) жестко рассчитаны на работу с датами во формате с плавающей точкой (integer_datetimes=off). Если подключить 1С 8.2 к СУБД, скомпилированной с integer_datetimes=on, платформа не сможет корректно считывать и записывать значения даты и времени, что приведет к сбоям и ошибкам выполнения SQL-запросов.
Важная особенность: этот параметр задается исключительно на этапе компиляции исходного кода PostgreSQL. Его невозможно изменить через настройки в файле postgresql.conf или с помощью SQL-команд во время работы сервера.
Термин «собрать» означает компиляцию бинарных исполняемых файлов СУБД из исходного кода. Для выполнения сборки под управлением Windows требуется развертывание специальной среды компиляции (Microsoft Visual Studio / MSVC, Perl, Flex, Bison) и передача флага --disable-integer-datetimes при конфигурации исходников.
Сборка PostgreSQL из исходников под Windows — трудоемкий процесс. Кроме того, начиная с версии PostgreSQL 10 возможность отключения integer_datetimes была полностью удалена из кода СУБД. Поэтому собрать современные версии PostgreSQL (10 и новее) с этим флагом технически невозможно.
Проанализируем практические способы запуска базы 1С 8.2 на PostgreSQL без необходимости ручной компиляции СУБД из исходного кода.
Самый простой и надежный путь — установить уже собранную и протестированную версию PostgreSQL, выложенную в разделе обновлений 1С или на специализированных ресурсах разработчиков (например, сборки Postgres Pro для 1С). Сборки дистрибутивов PostgreSQL версий 9.1.9, 9.2 и 9.3.17 заранее скомпилированы с нужным значением integer_datetimes=off и поставляются в виде стандартных инсталляторов под Windows.
Для платформы 1С 8.2.19 оптимальным решением является использование версии PostgreSQL 9.3.17 от 1С или Postgres Pro.
Если необходимо использовать более современные релизы PostgreSQL (например, 9.6 и новее), рекомендуется обновить сам сервер 1С:Предприятие:
integer_datetimes=on появилась именно начиная с этой версии.При использовании любой готовой совместимой версии PostgreSQL убедимся, что в файле конфигурации postgresql.conf внесены следующие ключевые настройки для работы с платформой 1С:
standard_conforming_strings = off — обеспечивает корректную обработку экранирования символов в строках.escape_string_warning = off — отключает предупреждения об экранировании.max_locks_per_transaction = 256 (или более) — необходимо из-за активного использования временных таблиц платформой 1С.