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

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

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

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

Ошибка PostgreSQL 22001 string_data_right_truncation: переполнение строки

Обновлено: 26.08.2026 · Официальная документация ↗

СУБД возвращает ошибку при попытке записать текстовые данные, длина которых превышает объявленную размерность поля таблицы:

ERROR: value too long for type character varying(50)
SQLSTATE: 22001

В платформе 1С:Предприятие сбой проявляется при проведении документов, загрузке данных через универсальный обмен XML/JSON или вызове методов Записать() справочников, когда длина реквизита в конфигурации меньше фактического размера строки.

1. Идентификация целевого поля и фактической длины

Определите таблицу и колонку, вызвавшую исключение, анализируя лог PostgreSQL (/var/log/postgresql/postgresql-*.log). Выполните проверку структуры таблицы:

SELECT table_name, column_name, character_maximum_length, udt_name
FROM information_schema.columns
WHERE table_name = 'target_table'
  AND column_name = 'target_column';

2. Корректировка длины поля на стороне PostgreSQL (для прямых баз)

-- Расширение длины строки без эксклюзивной блокировки всей таблицы (начиная с PostgreSQL 9.2+)
ALTER TABLE "target_table" ALTER COLUMN "target_column" TYPE varchar(255);

3. Исправление в среде 1С:Предприятие

  1. Откройте Конфигуратор 1С.
  2. Найдите объект метаданных (справочник, документ или регистр), на котором происходит сбой.
  3. Увеличьте свойство реквизита Длина до требуемого значения (либо переключите в режим «Неограниченная длина», что переведет поле в тип text в PostgreSQL).
  4. Выполните обновление конфигурации базы данных (F7).

4. Превентивная обрезка строк в коде 1С / SQL

Если расширение структуры невозможно, используйте функцию безопасного усечения:

-- SQL-запрос
INSERT INTO target_table (code, descr) 
VALUES ('001', LEFT('Слишком длинная строка ...', 50));
💡 Практика специалистов: Не делайте прямых изменений типов колонок через psql в рабочей базе 1С:Предприятие. Конфигуратор при следующей реструктуризации обнаружит расхождение между метаданными конфигурации и реальной схемой СУБД, что приведет к ошибке 'Таблица не соответствует описанию метаданных'.

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

Блокирует ли ALTER TABLE ... TYPE varchar(N) таблицу для читающих запросов?

В современных версиях PostgreSQL (9.2+) увеличение размера varchar(N) до большего значения или перевод в text не требует перезаписи таблицы (heap rewrite) и выполняется почти мгновенно, требуя лишь кратковременную блокировку AccessExclusiveLock для обновления метаданных.

Как переполнение строки обрабатывается в коде на платформе 1С?

Платформа 1С:Предприятие на уровне встроенного языка обычно автоматически обрезает строки до длины реквизита при присвоении. Ошибка 22001 возникает при прямых SQL-запросах, загрузке через внешние источники данных или сбоях сериализации платформы.

Почему ошибка 22001 может проявляться из-за многобайтовых символов UTF-8?

В PostgreSQL тип varchar(N) измеряется в символах, а не в байтах. Однако если сторонний драйвер или промежуточный шлюз транслирует данные с явным приведением к байтовым массивам, многобайтовые символы (кириллица, emoji) могут приводить к несовпадению расчетного размера буфера.

В чем отличие влияния varchar(N) и text на производительность в PostgreSQL?

В PostgreSQL под капотом типы varchar(N) и text используют одну и ту же внутреннюю структуру varlena. Ограничение длины N не дает выигрыша по памяти или скорости, а служит лишь проверочным ограничением целостности данных.

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