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

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

Как увеличить количество символов в строке 1С

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

Ограничение длины строки в 1С — одна из самых частых причин, по которой данные «обрезаются»: наименование контрагента не помещается целиком, комментарий сохраняется частично, адрес теряет последние символы. Причина почти всегда одна — в свойствах реквизита задана фиксированная длина строки, и платформа просто отсекает всё, что выходит за её пределы.

Длина строки в 1С задаётся не в данных, а в метаданных — в свойствах объекта конфигурации. Поэтому увеличить количество символов можно только через конфигуратор (или расширение конфигурации), а не в режиме «Предприятие». Исключение — строки, формируемые программно в коде, где длину можно задать при создании описания типов.

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

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

Каждый строковый реквизит в 1С имеет квалификатор строки — набор свойств, определяющих максимальную длину и способ хранения. Квалификатор содержит два ключевых параметра: «Длина» (максимальное число символов) и «Допустимая длина» (фиксированная или переменная). Если реквизит имеет длину 50, а вы вводите 70 символов, лишние 20 будут без предупреждения отброшены при записи.

Длина настраивается для реквизитов справочников, документов, регистров сведений, планов счетов и других объектов. Стандартные реквизиты — наименование, код, описание — также имеют свои ограничения, которые можно изменить в свойствах объекта целиком (для справочника это делается на уровне объекта, а не отдельного реквизита).

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

Как увеличить длину реквизита в конфигураторе

Основной сценарий — изменение длины существующего реквизита. Например, нужно увеличить наименование номенклатуры со 100 до 150 символов. Порядок действий одинаков для большинства объектов конфигурации.

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

После изменения сохраните конфигурацию (Ctrl+S) и выполните обновление конфигурации базы данных (клавиша F7 или меню «Конфигурация — Обновить конфигурацию базы данных»). Платформа покажет список изменений — убедитесь, что там только ожидаемая реструктуризация, и подтвердите.

Порядок действий
  1. 1
    Сделайте резервную копию базы или убедитесь, что актуальная копия существует
  2. 2
    Откройте конфигуратор и найдите нужный объект конфигурации
  3. 3
    Откройте свойства реквизита и измените значение поля «Длина»
  4. 4
    Сохраните конфигурацию (Ctrl+S)
  5. 5
    Обновите конфигурацию базы данных (F7) и подтвердите реструктуризацию
  6. 6
    Проверьте в режиме «Предприятие», что длинное значение сохраняется полностью

Неограниченная длина строки: когда её использовать

В свойствах строкового реквизита есть флажок «Неограниченная длина». При его установке реквизит может хранить текст практически любого размера — подходит для комментариев, описаний, текстов писем, XML-данных. В базе данных такие поля обычно хранятся как текстовые поля неограниченной длины.

Однако у неограниченных строк есть существенные ограничения. По ним нельзя строить индексы, их нельзя использовать в отборах и сравнениях на равенство в запросах (доступно только сравнение через ПОДОБНО с приведением типов), они не выводятся в некоторых стандартных механизмах. Поэтому для наименований, кодов и других полей, участвующих в поиске, неограниченная длина — плохой выбор.

Практическое правило: если по полю нужно искать, сортировать или связывать данные — задавайте конкретную достаточную длину. Если это аналитический текст без поиска — неограниченная строка удобнее и избавляет от будущих переделок.

Сравнение вариантов

Фиксированная длина (например, 150)

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

Неограниченная длина

Подходит для комментариев и описаний. Ограничение — нельзя использовать в отборах, индексах и сравнениях на равенство в запросах.

Длина 0 через код (ОписаниеТипов)

Программный вариант для реквизитов форм, таблиц значений и полей СКД. Не меняет метаданные, действует только там, где создан объект.

Как задать длину строки программно в коде

Когда строка создаётся программно — например, колонка таблицы значений, реквизит формы или поле набора данных, — длина задаётся через объект «КвалификаторыСтроки». Конструктор принимает максимальную длину, допустимую длину (переменная или фиксированная) и признак неограниченности.

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

Квалификаторы = Новый КвалификаторыСтроки(500, ДопустимаяДлина.Переменная);

ОписаниеСтроки = Новый ОписаниеТипов("Строка", , Квалификаторы);

Таблица = Новый ТаблицаЗначений;

Таблица.Колонки.Добавить("Комментарий", ОписаниеСтроки);

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

bsl
Квалификаторы = Новый КвалификаторыСтроки(1024, ДопустимаяДлина.Переменная);
ОписаниеТиповСтрока = Новый ОписаниеТипов("Строка", , Квалификаторы);

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

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

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

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

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

Главный риск при увеличении длины — длительная реструктуризация на объёмных таблицах. Справочник с сотнями тысяч элементов может обновляться долго, и в этот момент пользователи не должны работать с базой. В файловых базах дополнительно убедитесь, что достаточно свободного места на диске — реструктуризация создаёт временные копии таблиц.

Второй риск — несогласованность длин в связанных объектах. Если вы увеличили наименование справочника, но где-то есть реквизит, куда это наименование копируется (например, строковое представление в регистре), обрезка продолжится уже там. Проверьте все места, куда значение передаётся.

После обновления обязательно проверьте результат практически: введите в изменённое поле строку заведомо длиннее старого лимита, сохраните, закройте и откройте объект заново. Значение должно сохраниться полностью, без усечения.

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

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

Сохранение длинного значения
Норма

Строка длиннее старого лимита сохраняется и отображается полностью после повторного открытия

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

Значение обрезано — реструктуризация не выполнена или изменён не тот реквизит

Работа связанных механизмов
Норма

Поиск, отборы и печатные формы работают с новым значением корректно

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

В отборах или печати значение усечено — есть промежуточный реквизит со старой длиной

Обновление конфигурации БД
Норма

Реструктуризация завершилась без ошибок, база открывается в режиме «Предприятие»

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

Ошибки реструктуризации — требуется анализ протокола и восстановление из копии при необходимости

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

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

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

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

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

Часто задаваемые вопросы

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

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

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

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

Что означает длина строки 0?

Нулевая длина в квалификаторе строки означает неограниченную длину. В конфигураторе этому соответствует установленный флажок «Неограниченная длина», при этом поле «Длина» становится равным нулю и недоступным для редактирования.

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

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

Чем неограниченная строка отличается от строки большой длины?

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

Как изменить длину наименования справочника?

Наименование — стандартный реквизит, его длина задаётся в свойствах самого справочника, а не в списке добавленных реквизитов. Откройте палитру свойств объекта, найдите поле «Длина наименования», укажите новое значение и обновите конфигурацию базы данных.

Итог

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

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