Как увеличить длину наименования или кода через расширение конфигурации 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с типовыми конфигурациями «1С:Предприятие 8» разработчики часто сталкиваются с ситуацией, когда стандартной длины Наименования (обычно это 25, 50 или 100 символов) или Кода справочника недостаточно для нужд бизнеса. Изменять саму конфигурацию нежелательно, так как это усложняет последующее обновление. В этой статье мы подробно разберем, как решить эту задачу с помощью механизма расширений, выясним, почему изменения могут не применяться, и рассмотрим альтернативные варианты решения проблемы.

Главное условие: Режим совместимости

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

Проанализируем ключевые вехи развития платформы в этом вопросе:

  1. Если основная конфигурация находится в режиме совместимости 8.3.14 или ниже, платформа блокирует изменение длины стандартных реквизитов на уровне ядра. Даже если конфигуратор визуально позволяет изменить цифру в расширении, после применения настроек в пользовательском режиме длина останется прежней. Это характерно для старых версий 1С:Бухгалтерия 3.0 или сильно кастомизированных систем.
  2. Для успешного изменения длины стандартных полей (Наименование, Код) режим совместимости основной базы должен быть не ниже 8.3.15.
  3. В современных конфигурациях (например, Розница 3.0, УНФ 3.0, актуальные версии УТ 11.5), работающих на платформе 8.3.17 и выше без режима совместимости, расширения имеют максимальную свободу действий.

Важный момент: Чтобы проверить этот параметр, нужно в дереве конфигурации основной базы нажать правой кнопкой на корень (имя конфигурации), выбрать «Свойства» и найти пункт Режим совместимости.

Пошаговая инструкция по изменению длины в расширении

Рассмотрим алгоритм действий, который позволяет переопределить свойства реквизита в расширении. Выясним, как правильно управлять флажками свойств, чтобы платформа «увидела» изменения.

Шаг 1. Добавление объекта в расширение. Находим нужный справочник (например, Номенклатура) в основной конфигурации, нажимаем правую кнопку мыши и выбираем команду «Добавить в расширение».

Шаг 2. Настройка свойств. Открываем палитру свойств справочника уже внутри расширения. Нас интересуют поля Длина наименования или Длина кода.

Шаг 3. Управление состояниями флажка. В окне свойств расширения флажок рядом со свойством имеет три состояния. Разберем их подробнее:

Чтобы изменение «взлетело», попробуйте нажимать на флажок несколько раз, пока не добьетесь состояния, при котором значение длины становится доступным для редактирования и визуально помечается как измененное (обычно жирным шрифтом или специальной пиктограммой). После этого введите новое значение (например, увеличьте со 100 до 150).

Технические ограничения и правила безопасности

При работе с расширением структуры данных следует помнить о нескольких критических правилах:

1. Только увеличение. Платформа позволяет через расширение только увеличивать длину. Попытка уменьшить длину поля (например, с 50 до 30) будет проигнорирована или вызовет ошибку при попытке обновления конфигурации базы данных. Это сделано для защиты от случайной потери данных (обрезания строк).

2. Реструктуризация таблиц. Изменение длины стандартного поля — это не просто смена настройки, а полноценная операция ALTER TABLE на уровне SQL-сервера. Если в вашем справочнике Номенклатура миллионы записей, применение расширения может занять длительное время. В этот момент системе может потребоваться монопольный доступ к таблице.

3. Влияние на индексы и уникальность. Если вы увеличиваете Длину кода, помните, что это может затронуть механизмы автоматической нумерации и перестроение индексов, что также влияет на производительность при записи новых объектов.

Что делать, если расширение не работает (Обходной путь)

Если режим совместимости основной конфигурации не позволяет менять длину напрямую (например, база стоит на 8.3.12), или если стандартный механизм по каким-то причинам дает сбой, мы рекомендуем использовать проверенный метод «дополнительного реквизита».

Разберем этот метод по шагам:

  1. Создадим в расширении новый реквизит справочника, например, Доп_НаименованиеПолное с типом Строка и нужной нам длиной (допустим, 500 символов).
  2. Добавим этот реквизит на формы элемента, списка и выбора справочника. Стандартное поле Наименование можно скрыть или оставить только для системных нужд.
  3. Пропишем программную логику синхронизации. Нам нужно, чтобы при записи объекта первые 100 символов из нашего длинного поля попадали в стандартное Наименование. Это обеспечит корректную работу всех типовых отчетов и механизмов поиска.

Пример реализации в модуле объекта (через расширение):


&Перед("ПередЗаписью")
Процедура Расш1_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    // Синхронизируем длинное наименование со стандартным
    // Для совместимости обрезаем до максимально допустимой длины в основной базе
    ДлинаСтандартногоПоля = Метаданные().СтандартныеРеквизиты.Наименование.Тип.КвалификаторыСтроки.Длина;
    Наименование = Лев(Доп_НаименованиеПолное, ДлинаСтандартногоПоля);
КонецПроцедуры

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

Проверка результата

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

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

← На главную