Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

Ошибка PostgreSQL 42704: undefined_object — диагностика объектов

Обновлено: 26.08.2026  ·  Официальная база знаний
  • Ошибка ERROR: collation / type / operator "..." does not exist (SQLSTATE 42704).
  • Платформа 1С:Предприятие выдает ошибку при реструктуризации: «Ошибка СУБД: правило сортировки (collation) не найдено».
  • Сбои выполнения скриптов миграции при удалении объектов через DROP ... без проверки существования.

1. Проверка отсутствующих правил сортировки (Collation) для 1С

Для корректной работы 1С требуются правила сортировки `"default"`, `"C"` или специализированные ICU collation:

SELECT collname, collnamespace, collencoding, collcollate 
FROM pg_collation 
WHERE collname LIKE '%ru%' OR collname = 'default';

Если правила сортировки отсутствуют после обновления ОС:

-- Обновление версий локалей ICU / glibc:
ALTER COLLATION "ru_RU" REFRESH VERSION;

-- Создание кастомного правила сортировки для 1С:
CREATE COLLATION "ru_RU.UTF-8" (LOCALE = 'ru_RU.UTF-8');

2. Проверка отсутствующих пользовательских типов данных

SELECT t.typname, n.nspname 
FROM pg_type t 
JOIN pg_namespace n ON n.oid = t.typnamespace 
WHERE t.typname = 'my_custom_type';

3. Использование безопасного синтаксиса IF EXISTS

-- Защита от ошибки 42704 при накатке миграций:
DROP TYPE IF EXISTS status_enum CASCADE;
DROP OPERATOR IF EXISTS === (text, text);

4. Проверка и установка недостающих расширений

CREATE EXTENSION IF NOT EXISTS mchar; -- Специализированное расширение для 1С
Практический опыт инженера: При переносе баз 1С между серверами с разными версиями Linux (например, CentOS -> Debian) всегда создавайте базу с явным указанием локали: LC_COLLATE='ru_RU.UTF-8' LC_CTYPE='ru_RU.UTF-8' TEMPLATE=template0.

Частые вопросы (FAQ)

Почему после обновления Ubuntu с 20.04 до 22.04 базы 1С выдают 42704 на collation?

В новых версиях glibc меняются контрольные суммы и версии локалей. PostgreSQL регистрирует несовместимость Collation Version Mismatch. Требуется выполнить REINDEX и команду ALTER COLLATION ... REFRESH VERSION.

Чем 42704 отличается от 42P01 (undefined_table)?

Код 42P01 относится исключительно к таблицам, представлениям и сиквенсам, тогда как 42704 покрывает все прочие метаобъекты: типы данных, правила сортировки, операторы, преобразования типов (casts) и расширения.

Что такое расширение mchar в сборках PostgreSQL для 1С?

mchar — это расширение, реализующее совместимый с 1С тип данных MCHAR и MVIO, обеспечивающий корректную работу с пробелами в конце строк в строковом типе фиксированной длины.

Как просмотреть список всех установленных операторов?

Выполните команду psql: \do или сделайте запрос к системному каталогу pg_operator.