Разработка и Конфигурация · 10 мин
Как увеличить длину поля в 1С
Как увеличить длину строкового поля в 1С через конфигуратор: изменение реквизита, обновление конфигурации БД, риски потери данных, типовые ошибки и FAQ.
Поля с ограниченной длиной встречаются почти в каждой типовой конфигурации 1С: комментарии, наименования, адреса, номера документов. Когда пользователь пытается ввести текст длиннее заданного лимита, программа либо обрезает строку, либо не даёт её записать. Решение — увеличить длину реквизита в конфигураторе, но сделать это нужно правильно, чтобы не потерять данные и не нарушить обмены.
В 1С длина строки хранится в свойстве реквизита объекта метаданных: справочника, документа, регистра сведений и т.д. Строка может быть фиксированной или переменной длины, а также неограниченной. Каждый вариант влияет на то, как база данных хранит значение и как быстро по нему работают запросы и индексы.
Перед изменением важно понять, где именно находится нужное поле: это может быть реквизит объекта, измерение регистра, поле формы без привязки к данным или даже строка в общем модуле обмена. От этого зависит порядок действий и объём рисков.
Где в 1С задаётся длина строки
Основное место — палитра свойств реквизита в конфигураторе. У строкового типа данных есть параметры: «Длина» (максимальное число символов) и флажок «Фиксированная длина». Если длина равна нулю, строка считается неограниченной и в базе данных хранится как текстовое поле без лимита.
Типовые значения в конфигурациях — 9, 11, 25, 50, 100, 150, 250 символов. Например, у наименования номенклатуры часто стоит 100 или 150 символов, у комментария документа — 250 или неограниченная строка. Точное значение смотрите в свойствах конкретного реквизита вашей конфигурации.
Отдельный случай — поля формы. Если поле на форме не связано с реквизитом данных, его ограничение задаётся в свойствах элемента формы («Кнопка списка выбора», «Многострочный режим» и др.), а не в метаданных. Такое поле не хранится в базе, и менять его длину через конфигуратор объектов бессмысленно.
Пошаговое изменение длины реквизита в конфигураторе
Стандартный сценарий подходит для файловых и клиент-серверных баз, где у вас есть права на изменение конфигурации. Перед началом сделайте резервную копию: для файловой базы — скопируйте файл 1Cv8.1CD, для серверной — выгрузите .dt через конфигуратор или средствами СУБД.
- 1Откройте базу в конфигураторе и снимите объект с поддержки, если конфигурация типовая (Конфигурация → Поддержка → Настройка поддержки).
- 2Найдите нужный объект: справочник, документ или регистр — и откройте его реквизиты.
- 3Выделите реквизит, откройте палитру свойств (правый клик → Свойства).
- 4Увеличьте значение «Длина» или поставьте 0 для неограниченной строки.
- 5Сохраните конфигурацию и нажмите F7 — «Обновить конфигурацию базы данных».
- 6Проверьте ввод длинного значения в пользовательском режиме.
На шаге обновления конфигурации базы данных 1С выполнит реструктуризацию: перестроит таблицу в СУБД с новым размером поля. При увеличении длины данные не теряются — существующие значения просто остаются короче нового лимита. В больших таблицах реструктуризация может занять заметное время, поэтому на рабочих базах её выполняют в нерабочие часы.
Если конфигурация типовая и находится на полной поддержке, конфигуратор сначала потребует включить возможность изменения. Учтите: изменённый объект при следующем обновлении конфигурации может вызвать конфликт сравнения-объединения, и его придётся контролировать вручную.
Изменение длины через расширение конфигурации
Если конфигурация типовая и трогать поддержку нежелательно, используйте расширение. Расширения позволяют заимствовать объекты и менять ряд свойств без снятия конфигурации с поддержки. Это предпочтительный путь для баз, которые регулярно обновляются.
Порядок такой: в конфигураторе откройте «Конфигурация → Расширения конфигурации», создайте новое расширение, добавьте в него заимствованный объект (например, справочник «Номенклатура») и измените длину нужного реквизита. Затем сохраните расширение и обновите конфигурацию базы данных.
Ограничение: не все свойства можно переопределять через расширение — набор возможностей зависит от версии платформы. Если нужное изменение недоступно, остаётся правка основной конфигурации. Также помните, что при отключении расширения с изменённой длиной поля данные, не помещающиеся в исходный размер, могут стать проблемой при записи.
Способы увеличить длину поля
Подходит для собственных и доработанных конфигураций. Минус — усложняет обновление типовых решений.
Подходит для типовых конфигураций на поддержке. Ограничение — не все свойства доступны для переопределения.
Подходит для комментариев и описаний. Не подходит для полей, участвующих в индексах, кодах и номерах.
Увеличение длины кода и номера: особые случаи
Код справочника и номер документа — особые реквизиты. Их длина влияет на нумерацию, обмены и префиксацию. Увеличить длину кода можно в свойствах объекта на вкладке «Нумерация» (для документов) или в палитре свойств (для справочников: «Длина кода»).
При увеличении длины кода справочника существующие коды не дополняются автоматически, но и не обрезаются. Однако если код числовой и используется автонумерация, проверьте, что механизм присвоения новых номеров работает корректно после изменения.
Для документов увеличение длины номера может потребовать пересмотра префиксов: префикс «съедает» часть длины. Если номер участвует в обмене с другими базами, длина должна совпадать во всех узлах обмена, иначе возможны конфликты при загрузке.
Риски, ограничения и проверка результата
Главный риск — не само увеличение длины, а смежные механизмы. Если поле участвует в обмене данными (РИБ, обмен с сайтом, интеграция с внешней системой), принимающая сторона может обрезать длинное значение. Проверьте форматы обмена: XDTO-пакеты, XML-схемы, настройки конвертации данных.
Второй риск — отчёты и печатные формы. Макет с фиксированной шириной ячейки может не вместить удлинённое значение, и текст обрежется визуально. Третий момент — запросы с операцией ВЫРАЗИТЬ: если в коде поле приводится к строке фиксированной длины, значение усечётся уже в запросе, независимо от метаданных.
Как проверить результат
Текст вводится полностью и сохраняется без обрезки
Ввод останавливается на старом лимите — изменение не применено, обновите конфигурацию БД
Возвращается полное значение
Значение усечено — ищите ВЫРАЗИТЬ с фиксированной длиной в коде
Длинное значение передаётся целиком
На приёмной стороне текст обрезан — нужно менять длину и там
Текст помещается или переносится
Текст визуально обрезан — доработайте макет
Для измерений регистров сведений и накопления будьте особенно осторожны: изменение длины измерения затрагивает уникальность записей. Если в измерении появятся значения, которые раньше различались только за пределами старой длины, конфликтов не будет при увеличении, но при обратном уменьшении возможны дубли ключей и отказ реструктуризации.
Типичные ошибки при изменении длины поля
Ещё одна частая ситуация — пользователь жалуется на обрезку текста, а причина не в метаданных, а в функции Лев() в коде проведения или в обработчике заполнения. Перед изменением конфигурации поищите по модулю объекта обращения к этому реквизиту: возможно, достаточно поправить одну строку кода.
Перед изменением длины полезно выполнить запрос по максимальной фактической длине значений в поле. Если текущие данные не превышают, например, 60 символов при лимите 100, а нужно 120 — достаточно поднять длину до 150 вместо неограниченной строки: это сохранит возможность индексирования и сравнения.
FAQ: частые вопросы о длине полей в 1С
Можно ли увеличить длину поля без конфигуратора?
Нет. Длина строкового реквизита — свойство метаданных, оно меняется только в конфигураторе или через расширение конфигурации. В пользовательском режиме ограничение обойти нельзя: платформа сама контролирует максимальную длину при вводе и записи.
Потеряются ли данные при увеличении длины?
Нет. При увеличении длины реструктуризация сохраняет все существующие значения — они просто остаются короче нового лимита. Риск потери данных появляется только при уменьшении длины: значения длиннее нового предела будут обрезаны безвозвратно.
Что лучше — большая фиксированная длина или неограниченная строка?
Зависит от назначения поля. Для кодов, номеров, артикулов и полей, по которым ищут и сортируют, — ограниченная строка с разумным запасом. Для комментариев, описаний и произвольных текстов — неограниченная, так как по ней обычно не строят индексы и не сравнивают значения в запросах.
Почему после увеличения длины поле всё равно обрезает текст?
Чаще всего не выполнено обновление конфигурации базы данных (F7) — таблицы СУБД остались со старым размером. Другие причины: обрезка в коде через Лев() или ВЫРАЗИТЬ в запросе, ограничение на стороне приёмника в обмене данными или изменение поля формы вместо реквизита данных.
Как изменить длину поля в типовой конфигурации, чтобы не сломать обновления?
Используйте расширение конфигурации: заимствуйте объект и переопределите длину реквизита в расширении. Типовая конфигурация останется на поддержке, а обновления будут устанавливаться штатно. Если нужное свойство недоступно для переопределения в вашей версии платформы, придётся править основную конфигурацию и контролировать изменённый объект при каждом обновлении.
Влияет ли увеличение длины на производительность базы?
Умеренное увеличение (например, со 100 до 250 символов) практически незаметно. Существенное влияние оказывает переход на неограниченную строку: такое поле хранится иначе, по нему нельзя построить эффективный индекс, а сравнение в запросах требует приведения типов. Для полей, участвующих в поиске и соединениях, лучше оставаться в рамках ограниченной длины.
Что важно запомнить
Длина поля меняется в свойствах реквизита в конфигураторе с последующим обновлением конфигурации базы данных. Увеличение безопасно для данных, уменьшение — обрезает значения. Для типовых конфигураций предпочтительны расширения. После изменения проверьте ввод, запросы, обмены и печатные формы.