Разработка и Конфигурация · 11 мин
Как увеличить количество символов в строке 1С
Как увеличить длину строкового реквизита в 1С: настройка квалификатора строки, неограниченная длина, изменение длины в коде и риски сокращения данных.
Ограничение длины строки в 1С — одна из самых частых причин, по которой данные «обрезаются»: наименование контрагента не помещается целиком, комментарий сохраняется частично, адрес теряет последние символы. Причина почти всегда одна — в свойствах реквизита задана фиксированная длина строки, и платформа просто отсекает всё, что выходит за её пределы.
Длина строки в 1С задаётся не в данных, а в метаданных — в свойствах объекта конфигурации. Поэтому увеличить количество символов можно только через конфигуратор (или расширение конфигурации), а не в режиме «Предприятие». Исключение — строки, формируемые программно в коде, где длину можно задать при создании описания типов.
Статья разбирает все практические сценарии: изменение длины реквизита в конфигураторе, неограниченные строки и их ограничения, работа с квалификаторами строки в коде, а также риски, которые возникают при изменении структуры базы данных.
Где задаётся длина строки в 1С
Каждый строковый реквизит в 1С имеет квалификатор строки — набор свойств, определяющих максимальную длину и способ хранения. Квалификатор содержит два ключевых параметра: «Длина» (максимальное число символов) и «Допустимая длина» (фиксированная или переменная). Если реквизит имеет длину 50, а вы вводите 70 символов, лишние 20 будут без предупреждения отброшены при записи.
Длина настраивается для реквизитов справочников, документов, регистров сведений, планов счетов и других объектов. Стандартные реквизиты — наименование, код, описание — также имеют свои ограничения, которые можно изменить в свойствах объекта целиком (для справочника это делается на уровне объекта, а не отдельного реквизита).
Важно понимать: изменение длины — это изменение структуры метаданных, а значит, и структуры таблиц базы данных. Платформа выполнит реструктуризацию при обновлении конфигурации БД, и на больших таблицах это может занять заметное время.
Как увеличить длину реквизита в конфигураторе
Основной сценарий — изменение длины существующего реквизита. Например, нужно увеличить наименование номенклатуры со 100 до 150 символов. Порядок действий одинаков для большинства объектов конфигурации.
Откройте конфигуратор, найдите нужный объект (справочник, документ, регистр) и перейдите к реквизиту. В палитре свойств найдите поле «Длина» и укажите новое значение. Если речь идёт о стандартном реквизите «Наименование», его длина меняется в свойствах самого объекта, а не в списке реквизитов.
После изменения сохраните конфигурацию (Ctrl+S) и выполните обновление конфигурации базы данных (клавиша F7 или меню «Конфигурация — Обновить конфигурацию базы данных»). Платформа покажет список изменений — убедитесь, что там только ожидаемая реструктуризация, и подтвердите.
- 1Сделайте резервную копию базы или убедитесь, что актуальная копия существует
- 2Откройте конфигуратор и найдите нужный объект конфигурации
- 3Откройте свойства реквизита и измените значение поля «Длина»
- 4Сохраните конфигурацию (Ctrl+S)
- 5Обновите конфигурацию базы данных (F7) и подтвердите реструктуризацию
- 6Проверьте в режиме «Предприятие», что длинное значение сохраняется полностью
Неограниченная длина строки: когда её использовать
В свойствах строкового реквизита есть флажок «Неограниченная длина». При его установке реквизит может хранить текст практически любого размера — подходит для комментариев, описаний, текстов писем, XML-данных. В базе данных такие поля обычно хранятся как текстовые поля неограниченной длины.
Однако у неограниченных строк есть существенные ограничения. По ним нельзя строить индексы, их нельзя использовать в отборах и сравнениях на равенство в запросах (доступно только сравнение через ПОДОБНО с приведением типов), они не выводятся в некоторых стандартных механизмах. Поэтому для наименований, кодов и других полей, участвующих в поиске, неограниченная длина — плохой выбор.
Практическое правило: если по полю нужно искать, сортировать или связывать данные — задавайте конкретную достаточную длину. Если это аналитический текст без поиска — неограниченная строка удобнее и избавляет от будущих переделок.
Сравнение вариантов
Подходит для полей поиска и отборов: наименования, коды, артикулы. Ограничение — при превышении длины данные обрезаются, придётся снова менять конфигурацию.
Подходит для комментариев и описаний. Ограничение — нельзя использовать в отборах, индексах и сравнениях на равенство в запросах.
Программный вариант для реквизитов форм, таблиц значений и полей СКД. Не меняет метаданные, действует только там, где создан объект.
Как задать длину строки программно в коде
Когда строка создаётся программно — например, колонка таблицы значений, реквизит формы или поле набора данных, — длина задаётся через объект «КвалификаторыСтроки». Конструктор принимает максимальную длину, допустимую длину (переменная или фиксированная) и признак неограниченности.
Типичный пример: создаётся таблица значений, и её строковая колонка по умолчанию получила бы длину, недостаточную для данных. Решение — явно указать квалификатор при формировании описания типов.
Квалификаторы = Новый КвалификаторыСтроки(500, ДопустимаяДлина.Переменная);
ОписаниеСтроки = Новый ОписаниеТипов("Строка", , Квалификаторы);
Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("Комментарий", ОписаниеСтроки);
Если передать в конструктор квалификатора длину 0, строка будет считаться неограниченной. Это удобно для временных структур, но помните: при выгрузке такой таблицы в реквизит с ограниченной длиной данные снова будут обрезаны.
Квалификаторы = Новый КвалификаторыСтроки(1024, ДопустимаяДлина.Переменная);
ОписаниеТиповСтрока = Новый ОписаниеТипов("Строка", , Квалификаторы);Увеличение длины через расширение конфигурации
Если конфигурация типовая и находится на поддержке, прямое изменение реквизита снимет объект с поддержки и усложнит обновления. Альтернатива — расширение конфигурации: в нём можно заимствовать реквизит и изменить его длину, не трогая основную конфигурацию.
Создайте расширение (меню «Конфигурация — Расширения конфигурации»), добавьте в него нужный объект, заимствуйте реквизит и в его свойствах укажите новую длину. После сохранения расширения платформа выполнит реструктуризацию так же, как при обычном изменении.
Учтите ограничение: при обновлении типовой конфигурации поставщик может изменить тот же реквизит, и тогда расширение потребует проверки на совместимость. Кроме того, изменение длины через расширение всё равно приводит к реструктуризации таблиц — на больших базах планируйте это на нерабочее время.
Риски и проверка результата
Главный риск при увеличении длины — длительная реструктуризация на объёмных таблицах. Справочник с сотнями тысяч элементов может обновляться долго, и в этот момент пользователи не должны работать с базой. В файловых базах дополнительно убедитесь, что достаточно свободного места на диске — реструктуризация создаёт временные копии таблиц.
Второй риск — несогласованность длин в связанных объектах. Если вы увеличили наименование справочника, но где-то есть реквизит, куда это наименование копируется (например, строковое представление в регистре), обрезка продолжится уже там. Проверьте все места, куда значение передаётся.
После обновления обязательно проверьте результат практически: введите в изменённое поле строку заведомо длиннее старого лимита, сохраните, закройте и откройте объект заново. Значение должно сохраниться полностью, без усечения.
Как проверить результат
Строка длиннее старого лимита сохраняется и отображается полностью после повторного открытия
Значение обрезано — реструктуризация не выполнена или изменён не тот реквизит
Поиск, отборы и печатные формы работают с новым значением корректно
В отборах или печати значение усечено — есть промежуточный реквизит со старой длиной
Реструктуризация завершилась без ошибок, база открывается в режиме «Предприятие»
Ошибки реструктуризации — требуется анализ протокола и восстановление из копии при необходимости
Типичные ошибки при изменении длины строки
Самая распространённая ошибка — изменение длины без обновления конфигурации базы данных. Конфигурация сохранена, но структура базы не изменилась, и данные продолжают обрезаться. Пользователь видит старое поведение и считает, что изменение «не сработало».
Вторая ошибка — попытка решить проблему в режиме «Предприятие». Никакие настройки интерфейса, прав доступа или пользовательские параметры не меняют длину строки: это свойство метаданных, и оно редактируется только в конфигураторе или расширении.
Третья группа ошибок связана с неограниченными строками: их назначают полям, по которым потом требуется отбор или соединение в запросе, и запрос перестаёт работать. Либо, наоборот, для длинных текстов оставляют длину 255, и важная информация молча теряется при сохранении.
Часто задаваемые вопросы
Можно ли увеличить длину строки без конфигуратора?
Нет. Длина строки — свойство метаданных, оно изменяется только в конфигураторе или через расширение конфигурации. В режиме «Предприятие» это сделать невозможно, какие бы права ни были у пользователя.
Потеряются ли данные при увеличении длины строки?
Нет, увеличение длины — безопасная операция: существующие значения не изменяются, просто появляется возможность хранить более длинные строки. Потеря данных возможна только при уменьшении длины — тогда лишние символы обрезаются безвозвратно.
Что означает длина строки 0?
Нулевая длина в квалификаторе строки означает неограниченную длину. В конфигураторе этому соответствует установленный флажок «Неограниченная длина», при этом поле «Длина» становится равным нулю и недоступным для редактирования.
Почему после увеличения длины данные всё равно обрезаются?
Чаще всего не выполнено обновление конфигурации базы данных — изменения сохранены в конфигурации, но структура таблиц не изменилась. Другая причина: значение обрезает промежуточный реквизит или переменная с собственным ограничением длины, через которые проходит данное.
Чем неограниченная строка отличается от строки большой длины?
Строка фиксированной длины может участвовать в индексах, отборах, сравнениях на равенство и соединениях в запросах. Неограниченная строка этих возможностей лишена — её можно выводить и читать, но нельзя использовать в условиях запросов напрямую. Поэтому для полей поиска лучше задавать достаточную, но конкретную длину.
Как изменить длину наименования справочника?
Наименование — стандартный реквизит, его длина задаётся в свойствах самого справочника, а не в списке добавленных реквизитов. Откройте палитру свойств объекта, найдите поле «Длина наименования», укажите новое значение и обновите конфигурацию базы данных.
Что важно запомнить
Длина строки в 1С задаётся квалификатором строки в конфигураторе или через КвалификаторыСтроки в коде. Увеличение длины безопасно для данных и требует обновления конфигурации БД; уменьшение — обрезает значения безвозвратно. Неограниченные строки не подходят для отборов и соединений. Для типовых конфигураций предпочтительно изменение через расширение, а результат всегда проверяется сохранением тестового длинного значения.