Как увеличить допустимую длину строки для дополнительных свойств номенклатуры в 1С?

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

При ведении учета номенклатуры часто возникает необходимость хранить дополнительные текстовые данные большой длины — например, прямые URL-ссылки на товары на внешних сайтах или развернутые описания. Пользователи и разработчики сталкиваются с ситуацией, когда стандартный механизм дополнительных реквизитов и свойств обрезает вводимый текст или не дает сохранить строку длиннее 50–150 символов. Разберем архитектурные причины этого поведения платформы «1С:Предприятие» и подробно рассмотрим практические способы решения задачи.

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

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

  1. Ограничение стандартного реквизита «Наименование»: если свойство настроено со значением из справочника ЗначенияСвойствОбъектов, введенное значение сохраняется в стандартный реквизит Наименование. В платформе 1С для любого ссылочного объекта установлено системное ограничение: длина реквизита Наименование не может превышать 150 символов. Задать большее число в конфигураторе технически невозможно.
  2. Ограничение квалификатора примитивного типа «Строка»: если мы выбираем для свойства примитивный тип строки, его предельная длина берется из настроек плана видов характеристик (например, СвойстваОбъектов или ДополнительныеРеквизитыИСведения). По умолчанию квалификатор строки там нередко ограничен значением 50 символов.
  3. Ограничения СУБД для строк неограниченной длины: попытка сделать поле неограниченным влечет за собой невозможность использовать его в индексах, операциях объединения таблиц и группировках запросов без вызова функции ПОДСТРОКА, а также может снижать скорость построения динамических списков.

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

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

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

Разберем процесс настройки по шагам:

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

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

Способ 2. Создание собственного справочника с реквизитом неограниченной длины

Если требуется сохранить ссылочную структуру хранения (например, выбирать одинаковые ссылки или тексты из выпадающего списка), применим подход с созданием отдельного справочника.

Разберем реализацию этого решения:

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

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


ВЫБРАТЬ
    Номенклатура.Ссылка КАК Товар,
    ЗначенияСвойств.Значение КАК СсылкаНаЭлемент,
    ВЫРАЗИТЬ(ЗначенияСвойств.Значение КАК Справочник.СсылкиНаСайты).СсылкаНаСайт КАК ТекстСсылки
ИЗ
    Справочник.Номенклатура КАК Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойств
        ПО ЗначенияСвойств.Объект = Номенклатура.Ссылка

Способ 3. Добавление реквизита через расширение конфигурации

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

Разберем процедуру подключения:

  1. Создадим новое расширение конфигурации в дереве метаданных.
  2. Добавим в расширение справочник Номенклатура.
  3. Создадим в заимствованном объекте собственный реквизит АдресНаСайте с типом Строка и длиной, например, 1000 символов.
  4. Добавим в расширение форму элемента номенклатуры и вынесем новое поле ввода на форму.

Данный вариант полностью исключает проблемы с типовыми обновлениями и снимает любые ограничения встроенной подсистемы дополнительных реквизитов.

Способ 4. Использование механизма контактной информации

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

  1. Перейдем в раздел администрирования или общих настроек и найдем справочник Виды контактной информации.
  2. В группе для номенклатуры добавим новую запись с типом Веб-страница.
  3. В карточке номенклатуры появится штатное поле для ввода веб-адреса, поддерживающее кликабельные гиперссылки и длинные пути URL.

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

← На главную