Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

42611 1С:Предприятие и СУБД

Ошибка PostgreSQL 42611: invalid_column_definition — определение колонок

Обновлено: 26.08.2026 · Официальная документация ↗
  • Ошибка DDL ERROR: invalid column definition: ... (SQLSTATE 42611) при создании или модификации таблицы.
  • Сбои при создании вычисляемых столбцов (GENERATED ALWAYS AS ... STORED).
  • Попытка совместить несовместимые атрибуты колонки (например, одновременное указание DEFAULT и GENERATED).
  • Отказ реструктуризации таблиц при обновлении конфигурации 1С:Предприятие.

1. Исправление конфликта DEFAULT и GENERATED колонок

Вычисляемые колонки не могут иметь значение по умолчанию (DEFAULT):

-- Ошибочное определение:
CREATE TABLE orders (
    price numeric,
    qty int,
    total numeric DEFAULT 0 GENERATED ALWAYS AS (price * qty) STORED -- Ошибка 42611
);

-- Исправленное определение:
CREATE TABLE orders (
    price numeric NOT NULL,
    qty int NOT NULL,
    total numeric GENERATED ALWAYS AS (price * qty) STORED
);

2. Проверка ограничений на функции в вычисляемых колонках

Выражение в GENERATED ALWAYS AS обязано быть строго IMMUTABLE (запрещено использовать now(), random(), подобычные подзапросы или внешние таблицы):

-- Неверно:
created_date date GENERATED ALWAYS AS (now()::date) STORED -- Ошибка 42611 / 42P17

-- Корректно:
created_date date DEFAULT CURRENT_DATE;

3. Модификация типа колонки в таблицах 1С через ALTER TABLE

ALTER TABLE _document123 ALTER COLUMN _number TYPE varchar(30);
💡 Практика специалистов: Если требуется динамическое автовычисление даты без использования STORED колонок, создавайте триггер BEFORE INSERT OR UPDATE FOR EACH ROW с процедурой на PL/pgSQL.

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

Поддерживает ли PostgreSQL виртуальные (VIRTUAL) вычисляемые колонки?

До версии PostgreSQL 16 включительно поддерживаются только материализованные вычисляемые колонки (STORED). Начиная с PostgreSQL 17, добавлена поддержка VIRTUAL колонок.

Можно ли создать первичный ключ (PRIMARY KEY) поверх вычисляемой колонки?

Да, если вычисляемая колонка объявлена со спецификатором STORED и детерминированным (IMMUTABLE) выражением.

Почему 1С не использует механизм GENERATED ALWAYS колонок?

Платформа 1С:Предприятие реализует расчет и валидацию реквизитов на уровне своего сервера приложений (rphost), сохраняя в СУБД уже готовые материализованные значения.

Можно ли ссылаться на другую вычисляемую колонку внутри выражения GENERATED?

Нет, стандарт PostgreSQL запрещает цепочки зависимостей между вычисляемыми колонками в рамках одной таблицы.

Полезные материалы
Рекомендуем