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

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

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

Как увеличить длину строки в 1С: изменение реквизита в конфигураторе, неограниченная длина, ВЫРАЗИТЬ в запросах, риски потери данных и проверка результата.

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

Главный сценарий — изменение свойства «Длина» у реквизита типа «Строка» в конфигураторе с последующим обновлением конфигурации базы данных. Однако есть нюансы: при уменьшении длины данные могут быть усечены, неограниченная строка не всегда подходит, а в запросах и отчётах длина задаётся отдельно через конструкцию ВЫРАЗИТЬ.

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

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

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

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

Обрезается при вводе и сохраненииОграничение реквизита объекта

Откройте свойства реквизита в конфигураторе и проверьте «Длина»

В базе полное, в отчёте усеченоОграничение в запросе или СКД

Проверьте ВЫРАЗИТЬ и настройки полей схемы компоновки

Обрезается при обмене или загрузкеОграничение в коде обработки

Ищите Лев(), Сред() или фиксированные форматы в модуле обмена

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

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

Откройте конфигуратор, в дереве конфигурации найдите нужный объект, раскройте ветку «Реквизиты» (или «Измерения», «Ресурсы» для регистров), дважды щёлкните по реквизиту. В палитре свойств найдите поле «Длина» и укажите новое значение, например 150 вместо 50. Сохраните конфигурацию (Ctrl+S) и выполните обновление конфигурации базы данных через меню «Конфигурация — Обновить конфигурацию базы данных».

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

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

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

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

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

Увеличение длины строки в запросах через ВЫРАЗИТЬ

Когда строка усекается в отчёте или результате запроса, причина обычно в том, что платформа вычисляет длину итогового поля по выражению. Например, при объединении (ОБЪЕДИНИТЬ) двух полей разной длины или при использовании строкового литерала тип результата может оказаться короче данных. В этом случае длину задают явно через конструкцию ВЫРАЗИТЬ.

Синтаксис: ВЫРАЗИТЬ(Поле КАК Строка(200)). Такое выражение приводит значение к строке заданной длины, и итоговое поле не будет усечено до меньшего размера. Аналогично в СКД: в наборе данных на вкладке «Поля» или в выражении вычисляемого поля укажите приведение к нужной длине, либо задайте тип поля в настройках схемы.

bsl
ВЫБРАТЬ
	ВЫРАЗИТЬ(Товары.Наименование КАК Строка(150)) КАК Наименование
ИЗ
	Справочник.Товары КАК Товары

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

Программная работа со строками и типичные ограничения

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

Если нужно намеренно уместить значение в существующее поле, используйте Лев(Значение, N), но осознанно: обрезанные наименования могут нарушить обмены, печатные формы и поиск дублей. Более безопасный подход — расширить реквизит, а не подгонять данные под старое ограничение.

Типичные ошибки
01
Увеличили длину в конфигурации, но забыли обновить конфигурацию базы данных — в режиме Предприятия ничего не изменилось
02
Уменьшили длину реквизита с данными — при реструктуризации существующие значения будут усечены без возможности восстановления
03
Поставили неограниченную длину на измерение регистра — платформа откажет в обновлении или потеряется индекс
04
Исправили реквизит, но не поправили ВЫРАЗИТЬ в запросе отчёта — в отчёте строка по-прежнему усечена

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

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

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

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

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

Ввод длинного значения в форму
Норма

Значение сохраняется целиком после перезаписи объекта

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

Строка обрезается до старой длины — обновление конфигурации БД не выполнено

Отчёт с этим полем
Норма

Полное значение выводится без усечения

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

В отчёте обрезано — нужно поправить ВЫРАЗИТЬ или поле СКД

Обмен данными
Норма

Длинные значения передаются полностью

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

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

FAQ

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

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

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

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

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

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

Сколько символов можно задать в свойстве «Длина»?

Платформа позволяет задавать достаточно большие значения фиксированной длины, но разумный ориентир — реальные потребности: для наименований обычно хватает 100–150 символов, для адресов — 250–500. Если нужен произвольный текст, лучше использовать неограниченную длину, помня о её ограничениях для индексов и измерений.

Что делать, если реквизит типовой и конфигурация на поддержке?

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

Итог

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

Длина строки увеличивается в свойствах реквизита в конфигураторе с последующим обновлением конфигурации базы данных; в запросах и СКД — через ВЫРАЗИТЬ(Поле КАК Строка(N)). Увеличение безопасно для данных, уменьшение — нет. Неограниченную длину применяйте только для описательных текстов, не участвующих в индексах и измерениях, и всегда делайте резервную копию перед изменением структуры.