При работе с программными продуктами 1С на базе СУБД PostgreSQL пользователи и администраторы нередко сталкиваются с ситуацией, когда при попытке открыть конкретный справочник (часто это именно Кассы или КассыККМ) система выдает критическую ошибку. Ошибка часто сопровождается техническим сообщением, содержащим идентификаторы вида fid (например, fid20371). При этом в файловом режиме та же самая база данных работает абсолютно корректно.
В этой статье мы подробно разберем, почему возникает данная проблема, проанализируем механизмы взаимодействия платформы 1С с PostgreSQL и подготовим пошаговый план решения ситуации.
Прежде всего, давайте разберем, что означает ошибка с упоминанием fid. В архитектуре PostgreSQL Field ID (fid) — это внутренний идентификатор поля в системных таблицах. Когда платформа 1С обращается к базе данных, она генерирует сложные SQL-запросы. Если СУБД не может сопоставить внутренние метаданные запроса с реальной структурой таблиц или не понимает специфические расширения, которые ожидает платформа, происходит аварийное завершение операции.
Разберем основные причины, по которым стандартная (community) версия PostgreSQL выдает ошибку в справочнике Кассы:
rphost.optimizer (планировщик), чтобы он правильно оценивал стоимость выполнения таких запросов. Без этого СУБД может выбрать неверный план выполнения, что вызывает ошибку обращения к полям.Для того чтобы убедиться, что проблема кроется именно в настройках сервера СУБД, а не в повреждении данных, выполним следующие диагностические действия:
Рассмотрим тестирование в файловом режиме: Выгрузим информационную базу в файл .dt и развернем её локально в файловом варианте. Если справочник Кассы открывается без ошибок, значит, структура метаданных 1С исправна, и проблема локализована на уровне взаимодействия «Платформа — Server 1C — PostgreSQL».
Проанализируем версию платформы: Ошибки с fid часто фиксировались на релизах платформы 8.3.12.1469 и соседних версиях при работе с PostgreSQL 10.x. Проверим актуальность используемой платформы и наличие зарегистрированных багов для этого релиза.
Основное решение проблемы заключается в замене стандартного дистрибутива PostgreSQL на версию, адаптированную для работы с 1С. Рассмотрим, какие варианты у нас есть:
Разберем процесс миграции на корректную версию:
.dt или через pg_dump).Russian_Russia.1251. Неверная локаль (например, C или POSIX) часто является вторичной причиной ошибок в справочниках.Посмотрим на настройки, которые критичны для корректной работы справочников. В конфигурационном файле postgresql.conf или при создании базы через консоль администрирования серверов 1С, обратите внимание на следующие параметры:
lc_messages, lc_monetary, lc_numeric, lc_time — все они должны соответствовать региональным настройкам вашей ОС. Ошибка при открытии формы списка часто возникает из-за того, что СУБД пытается отсортировать данные по правилам, которые не понимает платформа 1С.
Проанализируем ситуацию с версией платформы. Если вы используете старые ветки (например, 8.3.12), крайне рекомендуется выполнить обновление до стабильных современных релизов (например, ветки 8.3.18, 8.3.22 и выше).
В новых версиях платформы механизмы генерации SQL-запросов для PostgreSQL были существенно переработаны и оптимизированы. Это минимизирует вероятность возникновения ошибок типа fid даже при некоторых отклонениях в настройках СУБД.
Если после установки правильной версии PostgreSQL ошибка сохраняется, выполним «Тестирование и исправление» (ТиИ) информационной базы в Конфигураторе. Разберем, какие опции нам необходимы:
Также стоит попробовать очистить кэш сервера 1С и кэш пользователя. Для этого нужно остановить службу 1C:Enterprise 8.3 Server Agent и удалить содержимое папки snaccxt в каталоге профиля пользователя, под которым запускается служба сервера.
Подводя итог, можно сказать, что ошибка открытия справочника Кассы на PostgreSQL — это классический симптом использования несовместимой сборки СУБД. Платформа 1С предъявляет специфические требования к ядру PostgreSQL, которые реализуются только в специализированных патчах.
Помните: Работа 1С на «чистом» PostgreSQL из официальных репозиториев Linux или с сайта сообщества не гарантирует стабильности. Единственный надежный способ избавиться от ошибок fid — использование дистрибутива PostgreSQL 1C Edition.