Сколько символов влезает в наименование справочника 1С и как поднять лимит

· 9 мин

Содержание

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

Ограничение касается не только справочников. То же свойство есть у планов видов характеристик, планов счетов, планов видов расчёта, планов обмена и задач. У документов наименования нет, у них только номер.

Что ограничивает длина наименования и где это видно

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

  • 📝 Поле ввода на форме. Пользователь просто не может набрать больше символов: курсор упирается в предел, лишнее не печатается.
  • 🗄️ Таблица базы данных. В СУБД под наименование создаётся строковое поле с заданной максимальной длиной. Длина считается в символах, а не в байтах, поэтому кириллица и латиница занимают одинаковое «место».
  • 🔍 Поиск и сортировка. Поле наименования индексируется, по нему работает быстрый подбор при вводе и упорядочивание списков.
  • 🧾 Представление ссылки. Если у объекта основное представление «В виде наименования», именно эта строка показывается в документах, отчётах и печатных формах, где нет отдельного поля для печати.

Отдельно стоит длина кода. Это соседнее свойство на той же закладке, со своим типом (строка или число) и своими правилами. Путать их нельзя: изменение длины кода затрагивает нумерацию и контроль уникальности, а длина наименования — только текст.

Если поставить длину наименования 0, у объекта не будет реквизита Наименование вообще. Так делают для служебных справочников, где элементы различают по коду или по другим реквизитам. Основное представление «В виде наименования» при этом выбрать уже нельзя.

Пределы длины наименования в разных версиях 1С

Цифры по платформам удобно свести в таблицу.

ПлатформаНаименование справочникаКомментарий
1С:Предприятие 8.3от 0 до 150 символовзначение задаётся целым числом в свойствах объекта
1С:Предприятие 8.2до 150 символовтот же механизм, обычные и управляемые формы
Реквизит «Строка» неограниченной длиныбез практического пределаподходит для длинных текстов, но с ограничениями в запросах

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

Отсюда практическое правило:

  • ✅ Короткое имя для выбора — в Наименование, обычно 50–150 символов.
  • ✅ Длинное официальное название — в отдельный реквизит, например НаименованиеПолное, тип «Строка», длина 0 (неограниченная).

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

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

Шаг 1. Подготовить базу

  1. Сделайте резервную копию: Администрирование → Выгрузить информационную базу в Конфигураторе или средствами СУБД для клиент-серверной базы.
  2. Попросите пользователей выйти из программы. Обновление структуры не начнётся, пока в базе есть сеансы.

Без свежей копии структуру базы не меняйте. Если обновление прервётся на середине, откатиться будет не к чему.

Шаг 2. Найти объект и поменять свойство

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

То же поле есть в палитре свойств (Alt+Enter на объекте), в группе «Данные».

Шаг 3. Применить изменения к базе

  1. Выполните Конфигурация → Обновить конфигурацию базы данных (клавиша F7).
  2. Платформа покажет список изменённых объектов. Подтвердите принятие изменений.
  3. Запустите базу в режиме 1С:Предприятие и проверьте: в карточку элемента должно помещаться больше символов.

Если конфигурация типовая и на поддержке

В типовой конфигурации объекты по умолчанию закрыты от изменения. Поле длины будет серым. Чтобы его поменять:

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

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

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

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

Самые частые ситуации удобно разобрать по симптомам.

Диагностика: выберите симптом

Уменьшение длины: отдельный риск

Сократить длину сложнее, чем увеличить. Перед этим найдите элементы, которые не поместятся. Короткая обработка или код в консоли:

МаксДлина = 80; // новое значение длины наименования
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
    Если СтрДлина(Выборка.Наименование) > МаксДлина Тогда
        Сообщить(Выборка.Код + ": " + Выборка.Наименование);
    КонецЕсли;
КонецЦикла;

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

Длина наименования в типовых конфигурациях

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

СправочникКороткое имяДлинное название
Номенклатура«Наименование» — для выбора в документах«Полное наименование» — для печатных форм
Контрагенты«Наименование» — рабочее имя для списков«Полное наименование» — официальное название из учредительных документов
Организации«Наименование» — краткоеотдельные реквизиты для полного и сокращённого наименования

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

Менять длину в типовой оправдано, только если короткое имя действительно не помещается для выбора. Например, когда номенклатура различается только хвостом длинного артикула и иначе элементы в списке выглядят одинаково.

Длина наименования в коде: чтение и массовое изменение

Узнать текущую длину программно

Метаданные во время работы доступны только для чтения. Поменять длину наименования из кода 1С:Предприятия нельзя, но прочитать её можно:

ДлинаНаим = Метаданные.Справочники.Номенклатура.ДлинаНаименования;
Сообщить("Длина наименования: " + Формат(ДлинаНаим, "ЧГ=0"));

Это значение пригодится при загрузке данных. Проверяйте длину строки до записи и решайте, что делать с хвостом: сократить, перенести в полное наименование или вывести предупреждение.

ДлинаНаим = Метаданные.Справочники.Номенклатура.ДлинаНаименования;
Если СтрДлина(НовоеИмя) > ДлинаНаим Тогда
    Элемент.НаименованиеПолное = НовоеИмя;
    Элемент.Наименование = Лев(НовоеИмя, ДлинаНаим);
Иначе
    Элемент.Наименование = НовоеИмя;
КонецЕсли;

Строка длиннее предела при присваивании реквизиту молча обрезается. Ошибки не будет, поэтому без такой проверки потерю символов легко не заметить.

Поменять длину сразу у многих объектов

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

  1. Выгрузите конфигурацию в XML: Конфигурация → Выгрузить конфигурацию в файлы или командой пакетного режима с параметром /DumpConfigToFiles.
  2. В XML-описании каждого справочника найдите свойство DescriptionLength и поменяйте значение.
  3. Загрузите файлы обратно: Конфигурация → Загрузить конфигурацию из файлов или параметром /LoadConfigFromFiles.
  4. Обновите конфигурацию базы данных (/UpdateDBCfg в пакетном режиме или F7).

Пример запуска выгрузки из командной строки:

"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F "D:\Bases\Test" /N "Администратор" /P "" /DumpConfigToFiles "D:\cfg_xml"

Номер платформы в пути подставьте свой. Сначала отработайте процедуру на копии базы.

Обмен данными и разная длина наименования

Обмены — главный источник проблем с длиной. Две базы могут быть настроены по-разному, и программа не предупредит об этом при синхронизации.

Что происходит, если у источника наименование длиннее, чем у приёмника:

  • ✂️ Обрезание. При загрузке строка укорачивается до предела приёмника.
  • 👯 Дубли. Если правила обмена ищут объект по наименованию, обрезанная строка не совпадёт с исходной. При следующей синхронизации обмен не найдёт элемент и создаст новый.

Как этого избежать:

  1. Перед настройкой обмена сравните длину наименования у связанных справочников в обеих базах.
  2. Ищите объекты по уникальному идентификатору или коду, а не по наименованию. В типовых обменах так и сделано, проблема чаще возникает в самописных правилах.
  3. Если увеличили длину в одной базе, увеличьте и в другой, иначе выигрыш съест обмен.
  4. Длинные тексты передавайте через реквизит неограниченной длины. Его обрезать нечем.

Та же логика работает при загрузке из Excel и при интеграции с интернет-магазином. Узнайте, сколько символов в названии товара на сайте, и сравните с длиной в 1С заранее.

Как выбрать длину наименования для нового справочника

Пара правил для тех, кто создаёт свой объект или дорабатывает чужой:

  • 📏 Берите с запасом, но не максимум бездумно. Для справочников-классификаторов (виды, статусы, категории) хватает 50 символов. Для номенклатуры и контрагентов — 100–150.
  • 🧩 Сразу разделяйте короткое и полное. Короткое имя для списков и выбора, полное — для печати и отчётности.
  • 🧪 Меняйте сначала на копии. Особенно в больших базах: перестроение таблицы с миллионом строк занимает заметное время.
  • 📋 Фиксируйте изменение. Запишите, у каких объектов и на сколько подняли длину. При следующем обновлении типовой это сэкономит время на объединении.
  • 🔗 Помните про связанные базы. Любое изменение длины проверяйте на обменах до того, как выкатывать в рабочую базу.

Мини-пример. В справочнике «Виды работ» длина наименования 25 символов, а новая услуга называется «Монтаж вентиляционного оборудования» — 35 символов. Поднимать лимит до 150 тут незачем: хватит 50, а полное название для актов лучше хранить отдельно. Так список останется компактным, а печатные формы получат полный текст.

Перед изменением длины наименования
Выполнено: 0 / 6

Частые вопросы о длине наименования

Можно ли сделать наименование справочника длиннее 150 символов?
Нет, 150 — верхний предел для стандартного реквизита. Для длинного текста создайте реквизит типа «Строка» с длиной 0, то есть неограниченной.
Нужно ли перезапускать сервер 1С после изменения длины?
Нет. Достаточно обновить конфигурацию базы данных и заново открыть сеансы пользователей: изменения подхватятся при следующем входе.
Влияет ли длина наименования на скорость работы?
На практике почти нет. Поле остаётся индексируемым, быстрый подбор при вводе работает так же. Скорость падает, если вместо наименования искать по реквизиту неограниченной длины.
Сбросится ли изменённая длина после обновления типовой?
Нет, если объект редактируется с сохранением поддержки. При объединении платформа покажет различие, и вы выберете, оставить своё значение или взять значение поставщика.
Где посмотреть длину наименования без Конфигуратора?
Через код: свойство ДлинаНаименования у объекта метаданных. Его можно вывести в консоли кода или во внешней обработке.