При ведении учета номенклатуры часто возникает необходимость хранить дополнительные текстовые данные большой длины — например, прямые URL-ссылки на товары на внешних сайтах или развернутые описания. Пользователи и разработчики сталкиваются с ситуацией, когда стандартный механизм дополнительных реквизитов и свойств обрезает вводимый текст или не дает сохранить строку длиннее 50–150 символов. Разберем архитектурные причины этого поведения платформы «1С:Предприятие» и подробно рассмотрим практические способы решения задачи.
Проанализируем структуру хранения дополнительных свойств в типовых конфигурациях. Ограничения накладываются на нескольких уровнях метаданных:
ЗначенияСвойствОбъектов, введенное значение сохраняется в стандартный реквизит Наименование. В платформе 1С для любого ссылочного объекта установлено системное ограничение: длина реквизита Наименование не может превышать 150 символов. Задать большее число в конфигураторе технически невозможно.СвойстваОбъектов или ДополнительныеРеквизитыИСведения). По умолчанию квалификатор строки там нередко ограничен значением 50 символов.ПОДСТРОКА, а также может снижать скорость построения динамических списков.Выясним, какие варианты настройки и доработки позволяют корректно сохранять длинные строки в информационной базе.
Рассмотрим прямое решение задачи без создания новых таблиц, если конфигурация доступна для редактирования.
Разберем процесс настройки по шагам:
СвойстваОбъектов (или аналогичный, используемый в конфигурации).ЗначенияСвойствОбъектов.После этой настройки в карточке номенклатуры значение свойства будет вводиться напрямую как текст необходимой длины, минуя справочник со строгим лимитом в 150 символов.
Если требуется сохранить ссылочную структуру хранения (например, выбирать одинаковые ссылки или тексты из выпадающего списка), применим подход с созданием отдельного справочника.
Разберем реализацию этого решения:
СсылкиНаСайты.СсылкаНаСайт (или Описание) с типом Строка нужной длины (1000 символов или неограниченной длины).СвойстваОбъектов откроем состав типов и включим наш новый справочник СправочникСсылка.СсылкиНаСайты в состав доступных типов значений характеристик.Посмотрим на пример программного получения значения длинной строки при обращении к свойствам номенклатуры в запросе:
ВЫБРАТЬ
Номенклатура.Ссылка КАК Товар,
ЗначенияСвойств.Значение КАК СсылкаНаЭлемент,
ВЫРАЗИТЬ(ЗначенияСвойств.Значение КАК Справочник.СсылкиНаСайты).СсылкаНаСайт КАК ТекстСсылки
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойств
ПО ЗначенияСвойств.Объект = Номенклатура.Ссылка
Если конфигурация находится на официальной поддержке и ее снятие с замка нежелательно, наилучшим решением будет использование механизма расширений.
Разберем процедуру подключения:
Номенклатура.АдресНаСайте с типом Строка и длиной, например, 1000 символов.Данный вариант полностью исключает проблемы с типовыми обновлениями и снимает любые ограничения встроенной подсистемы дополнительных реквизитов.
Проанализируем типовую функциональность конфигураций на базе БСП (Библиотеки Стандартных Подсистем). Если справочник Номенклатура включен в состав подсистемы КонтактнаяИнформация, для него можно создать предопределенный вид контактной информации.
Таким образом, для хранения длинных текстовых данных следует избегать стандартного реквизита Наименование справочника ЗначенияСвойствОбъектов и использовать либо примитивный тип строки с расширенным квалификатором, либо собственный реквизит объекта.