Как увеличить длину наименования номенклатуры в 1С и обойти ограничение в 150 символов?

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

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

Причины платформенного ограничения длины наименования

В платформе «1С:Предприятие 8» для стандартного реквизита Наименование справочников установлено жесткое ограничение: его максимальная длина не может превышать 150 символов. Даже при снятии конфигурации с поддержки или включении возможности изменения задать число 255 или более в поле Длина на вкладке «Данные» невозможно.

Выясним причину такого поведения платформы. Стандартный реквизит Наименование автоматически включается в платформенные индексы таблиц СУБД для обеспечения быстрой сортировки, поиска по первым символам и автодополнения при вводе по строке. Ограничение длины предотвращает превышение предельного размера ключа индекса на уровне базы данных (MS SQL Server, PostgreSQL) и защищает систему от катастрофического падения производительности при операциях записи и обновления таблиц.

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

Решение 1. Использование реквизита «Полное наименование»

В типовых прикладных решениях (включая УТ 11, КА и ERP) справочник Номенклатура содержит дополнительный реквизит НаименованиеПолное (или «Полное наименование»). В отличие от рабочего наименования, этот реквизит имеет тип Строка неограниченной длины.

Проанализируем разделение ролей между этими реквизитами:

  1. Рабочее наименование (до 150 символов): используется для отображения в списках, формах выбора и рабочих журналах документов для быстрой визуальной идентификации пользователем.
  2. Полное наименование (неограниченно): хранит подробное техническое описание, артикулы поставщика, параметры и спецификации. Именно оно по умолчанию выводится в печатные формы (УПД, счета на оплату, товарные накладные ТОРГ-12).

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

Решение 2. Использование штатного механизма «Номенклатура поставщиков»

Если длинные наименования приходят от внешних контрагентов и уникальны для каждого поставщика, не следует перегружать основной каталог 1С. В «1С:Управление торговлей 11» предусмотрен встроенный справочник НоменклатураПоставщиков (или регистр сопоставления номенклатуры контрагентов).

Разберем порядок работы с этим механизмом:

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

Решение 3. Добавление собственного длинного реквизита через расширение

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

Разберем по шагам реализацию этой задачи:

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

Посмотрим на пример переопределения представления объекта в модуле менеджера через расширение:


&Вместо("ОбработкаПолученияПолейПредставления")
Процедура Расш1_ОбработкаПолученияПолейПредставления(Поля, Данные, Описание)
    Поля.Добавить("ДлинноеНаименованиеДляСайта");
    Поля.Добавить("Наименование");
КонецПроцедуры

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

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

← На главную