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

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

При разработке и адаптации типовых конфигураций, таких как 1С:Бухгалтерия предприятия 3.0, разработчики часто сталкиваются с ситуацией, когда стандартной длины поля Наименование (обычно это 25, 50, 100 или 150 символов) недостаточно для бизнес-задач пользователя. Естественным желанием является использование механизма расширений, чтобы сохранить конфигурацию на поддержке. Однако здесь мы сталкиваемся с фундаментальными ограничениями платформы.

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

Почему нельзя изменить длину наименования в расширении

Выясним причину этого ограничения. Платформа 1С:Предприятие 8.3 разделяет свойства метаданных на логические и структурные. Свойства Длина наименования и Длина кода являются структурными. Это означает, что они напрямую определяют физическую структуру таблиц в базе данных (СУБД).

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

Способ 1. Использование стандартного реквизита «НаименованиеПолное»

Прежде чем приступать к программным доработкам, проанализируем структуру справочника. Во многих типовых конфигурациях (БП, УТ, ERP) для таких справочников, как Номенклатура или Контрагенты, уже существует стандартный реквизит НаименованиеПолное. Его длина обычно составляет 1000 символов или вовсе не ограничена (тип «ХранилищеЗначения» или неограниченная строка).

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

Способ 2. Добавление собственного реквизита в расширении

Если стандартного полного наименования нет или его длины тоже не хватает, мы можем пойти путем создания альтернативного поля. Разберем этот процесс по шагам:

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

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


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

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

Способ 3. Использование механизма дополнительных реквизитов (БСП)

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

Этот способ хорош тем, что:

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

Способ 4. Изменение основной конфигурации

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

Для этого необходимо:

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

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

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

← На главную