К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как увеличить длину поля в 1С

Как увеличить длину строкового поля в 1С через конфигуратор: изменение реквизита, обновление конфигурации БД, риски потери данных, типовые ошибки и FAQ.

Поля с ограниченной длиной встречаются почти в каждой типовой конфигурации 1С: комментарии, наименования, адреса, номера документов. Когда пользователь пытается ввести текст длиннее заданного лимита, программа либо обрезает строку, либо не даёт её записать. Решение — увеличить длину реквизита в конфигураторе, но сделать это нужно правильно, чтобы не потерять данные и не нарушить обмены.

В 1С длина строки хранится в свойстве реквизита объекта метаданных: справочника, документа, регистра сведений и т.д. Строка может быть фиксированной или переменной длины, а также неограниченной. Каждый вариант влияет на то, как база данных хранит значение и как быстро по нему работают запросы и индексы.

Перед изменением важно понять, где именно находится нужное поле: это может быть реквизит объекта, измерение регистра, поле формы без привязки к данным или даже строка в общем модуле обмена. От этого зависит порядок действий и объём рисков.

Где в 1С задаётся длина строки

Основное место — палитра свойств реквизита в конфигураторе. У строкового типа данных есть параметры: «Длина» (максимальное число символов) и флажок «Фиксированная длина». Если длина равна нулю, строка считается неограниченной и в базе данных хранится как текстовое поле без лимита.

Типовые значения в конфигурациях — 9, 11, 25, 50, 100, 150, 250 символов. Например, у наименования номенклатуры часто стоит 100 или 150 символов, у комментария документа — 250 или неограниченная строка. Точное значение смотрите в свойствах конкретного реквизита вашей конфигурации.

Отдельный случай — поля формы. Если поле на форме не связано с реквизитом данных, его ограничение задаётся в свойствах элемента формы («Кнопка списка выбора», «Многострочный режим» и др.), а не в метаданных. Такое поле не хранится в базе, и менять его длину через конфигуратор объектов бессмысленно.

Пошаговое изменение длины реквизита в конфигураторе

Стандартный сценарий подходит для файловых и клиент-серверных баз, где у вас есть права на изменение конфигурации. Перед началом сделайте резервную копию: для файловой базы — скопируйте файл 1Cv8.1CD, для серверной — выгрузите .dt через конфигуратор или средствами СУБД.

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

На шаге обновления конфигурации базы данных 1С выполнит реструктуризацию: перестроит таблицу в СУБД с новым размером поля. При увеличении длины данные не теряются — существующие значения просто остаются короче нового лимита. В больших таблицах реструктуризация может занять заметное время, поэтому на рабочих базах её выполняют в нерабочие часы.

Если конфигурация типовая и находится на полной поддержке, конфигуратор сначала потребует включить возможность изменения. Учтите: изменённый объект при следующем обновлении конфигурации может вызвать конфликт сравнения-объединения, и его придётся контролировать вручную.

Изменение длины через расширение конфигурации

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

Порядок такой: в конфигураторе откройте «Конфигурация → Расширения конфигурации», создайте новое расширение, добавьте в него заимствованный объект (например, справочник «Номенклатура») и измените длину нужного реквизита. Затем сохраните расширение и обновите конфигурацию базы данных.

Ограничение: не все свойства можно переопределять через расширение — набор возможностей зависит от версии платформы. Если нужное изменение недоступно, остаётся правка основной конфигурации. Также помните, что при отключении расширения с изменённой длиной поля данные, не помещающиеся в исходный размер, могут стать проблемой при записи.

Способы увеличить длину поля

Правка основной конфигурации

Подходит для собственных и доработанных конфигураций. Минус — усложняет обновление типовых решений.

Расширение конфигурации

Подходит для типовых конфигураций на поддержке. Ограничение — не все свойства доступны для переопределения.

Неограниченная строка

Подходит для комментариев и описаний. Не подходит для полей, участвующих в индексах, кодах и номерах.

Увеличение длины кода и номера: особые случаи

Код справочника и номер документа — особые реквизиты. Их длина влияет на нумерацию, обмены и префиксацию. Увеличить длину кода можно в свойствах объекта на вкладке «Нумерация» (для документов) или в палитре свойств (для справочников: «Длина кода»).

При увеличении длины кода справочника существующие коды не дополняются автоматически, но и не обрезаются. Однако если код числовой и используется автонумерация, проверьте, что механизм присвоения новых номеров работает корректно после изменения.

Для документов увеличение длины номера может потребовать пересмотра префиксов: префикс «съедает» часть длины. Если номер участвует в обмене с другими базами, длина должна совпадать во всех узлах обмена, иначе возможны конфликты при загрузке.

Риски, ограничения и проверка результата

Главный риск — не само увеличение длины, а смежные механизмы. Если поле участвует в обмене данными (РИБ, обмен с сайтом, интеграция с внешней системой), принимающая сторона может обрезать длинное значение. Проверьте форматы обмена: XDTO-пакеты, XML-схемы, настройки конвертации данных.

Второй риск — отчёты и печатные формы. Макет с фиксированной шириной ячейки может не вместить удлинённое значение, и текст обрежется визуально. Третий момент — запросы с операцией ВЫРАЗИТЬ: если в коде поле приводится к строке фиксированной длины, значение усечётся уже в запросе, независимо от метаданных.

Контрольные точки

Как проверить результат

Ввод длинного значения в пользовательском режиме
Норма

Текст вводится полностью и сохраняется без обрезки

Тревожный признак

Ввод останавливается на старом лимите — изменение не применено, обновите конфигурацию БД

Запрос к полю через консоль запросов
Норма

Возвращается полное значение

Тревожный признак

Значение усечено — ищите ВЫРАЗИТЬ с фиксированной длиной в коде

Обмен данными с другой базой
Норма

Длинное значение передаётся целиком

Тревожный признак

На приёмной стороне текст обрезан — нужно менять длину и там

Печатная форма
Норма

Текст помещается или переносится

Тревожный признак

Текст визуально обрезан — доработайте макет

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

Типичные ошибки при изменении длины поля

Типичные ошибки
01
Изменили поле формы вместо реквизита данных — ограничение в базе осталось прежним, значение обрезается при записи.
02
Не обновили конфигурацию базы данных (F7) — изменение сохранено только в конфигурации, таблицы СУБД не перестроены.
03
Сделали неограниченной строкой код справочника или номер документа — сломалась нумерация и индексация.
04
Забыли про вторую базу в обмене — длинные значения обрезаются при загрузке на другой стороне.
05
Уменьшили длину без анализа — часть существующих данных обрезана безвозвратно при реструктуризации.
06
Изменили типовую конфигурацию без расширения — при обновлении доработка потерялась или вызвала конфликт.

Ещё одна частая ситуация — пользователь жалуется на обрезку текста, а причина не в метаданных, а в функции Лев() в коде проведения или в обработчике заполнения. Перед изменением конфигурации поищите по модулю объекта обращения к этому реквизиту: возможно, достаточно поправить одну строку кода.

Перед изменением длины полезно выполнить запрос по максимальной фактической длине значений в поле. Если текущие данные не превышают, например, 60 символов при лимите 100, а нужно 120 — достаточно поднять длину до 150 вместо неограниченной строки: это сохранит возможность индексирования и сравнения.
ПЗ
Практическое замечание

FAQ: частые вопросы о длине полей в 1С

Можно ли увеличить длину поля без конфигуратора?

Нет. Длина строкового реквизита — свойство метаданных, оно меняется только в конфигураторе или через расширение конфигурации. В пользовательском режиме ограничение обойти нельзя: платформа сама контролирует максимальную длину при вводе и записи.

Потеряются ли данные при увеличении длины?

Нет. При увеличении длины реструктуризация сохраняет все существующие значения — они просто остаются короче нового лимита. Риск потери данных появляется только при уменьшении длины: значения длиннее нового предела будут обрезаны безвозвратно.

Что лучше — большая фиксированная длина или неограниченная строка?

Зависит от назначения поля. Для кодов, номеров, артикулов и полей, по которым ищут и сортируют, — ограниченная строка с разумным запасом. Для комментариев, описаний и произвольных текстов — неограниченная, так как по ней обычно не строят индексы и не сравнивают значения в запросах.

Почему после увеличения длины поле всё равно обрезает текст?

Чаще всего не выполнено обновление конфигурации базы данных (F7) — таблицы СУБД остались со старым размером. Другие причины: обрезка в коде через Лев() или ВЫРАЗИТЬ в запросе, ограничение на стороне приёмника в обмене данными или изменение поля формы вместо реквизита данных.

Как изменить длину поля в типовой конфигурации, чтобы не сломать обновления?

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

Влияет ли увеличение длины на производительность базы?

Умеренное увеличение (например, со 100 до 250 символов) практически незаметно. Существенное влияние оказывает переход на неограниченную строку: такое поле хранится иначе, по нему нельзя построить эффективный индекс, а сравнение в запросах требует приведения типов. Для полей, участвующих в поиске и соединениях, лучше оставаться в рамках ограниченной длины.

Итог

Что важно запомнить

Длина поля меняется в свойствах реквизита в конфигураторе с последующим обновлением конфигурации базы данных. Увеличение безопасно для данных, уменьшение — обрезает значения. Для типовых конфигураций предпочтительны расширения. После изменения проверьте ввод, запросы, обмены и печатные формы.