Как выгрузить описание номенклатуры более 1024 символов из 1С:УТ 11.4 на сайт?

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

При работе с современными интернет-магазинами мы часто сталкиваемся с необходимостью передавать объемные описания товаров, включающие технические характеристики, маркетинговые тексты и инструкции. Однако стандартные механизмы 1С:Управление торговлей 11.4 (УТ 11.4) иногда накладывают досадное ограничение в 1024 символа. Разберем подробно, почему возникает эта проблема и как ее решить, используя штатные инструменты и минимальные программные доработки.

Выясним причину ограничения

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

  1. Тип данных дополнительного реквизита: Если описание создано как «Дополнительный реквизит» с типом Строка фиксированной длины, система сама обрежет текст.
  2. Протокол CommerceML: Стандарт обмена данными часто передает текстовые описания в блоке ЗначенияРеквизитов, где по умолчанию установлено ограничение на длину значения.
  3. Программная «очистка» в коде: В некоторых релизах конфигураций или модулей обмена (например, от Битрикс) встречается принудительное использование функции Лев(Текст, 1024) перед формированием XML-файла.

Решение 1: Использование штатного поля «Подробное описание»

Рассмотрим самый правильный и «чистый» способ. В 1С:УТ 11.4 карточка номенклатуры содержит специальный функционал для хранения описаний в формате HTML или простого текста. Эти данные хранятся в отдельной справочной таблице ПрисоединенныеФайлы и технически не имеют лимита в 1024 символа.

Разберем по шагам, как задействовать это поле:

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

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

Решение 2: Настройка модуля обмена «1С-Битрикс»

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

В настройках выгрузки товаров перейдем на вкладку «Настройка соответствия полей номенклатуры». Выясним, какое поле назначено источником для детального описания. Если там выбран Дополнительный реквизит, заменим его на Файл описания (хранилище). Это заставит систему обращаться к расширенному хранилищу данных НоменклатураПрисоединенныеФайлы, минуя строковые ограничения справочника.

Решение 3: Программное снятие ограничений в коде выгрузки

Бывают ситуации, когда текст обрезается самой обработкой выгрузки. Если мы видим, что в файле import.xml описание обрезано ровно на 1024 символе, значит, нам необходимо вмешаться в код. Посмотрим на пример того, как это может выглядеть в общем модуле или обработке ОбменССайтом.

Нам нужно найти участок кода, отвечающий за формирование тега Описание. Часто там встречается подобная конструкция:


// Опасный участок кода, обрезающий данные
ЗначениеОписания = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ОписаниеТовара, 1024)[0];
ЗаписатьXML(ЗаписьXML, "Описание", ЗначениеОписания);

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


&Вместо("СформироватьУзелОписание")
Процедура Ист_СформироватьУзелОписание(ТекстОписания, ЗаписьXML)
    // Убираем Лев(Текст, 1024) и передаем строку целиком
    Если ЗначениеЗаполнено(ТекстОписания) Тогда
        ЗаписатьXML(ЗаписьXML, "Описание", ТекстОписания);
    КонецЕсли;
КонецПроцедуры

Важно помнить, что при передаче слишком больших объемов текста размер XML-пакета может значительно вырасти. Проанализируем настройки сервера на стороне сайта: убедитесь, что параметры post_max_size и memory_limit в php.ini позволяют принимать файлы увеличенного размера.

Решение 4: Разделение на несколько дополнительных реквизитов (Костыль)

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

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

Подведем итоги

Мы выяснили, что ограничение в 1024 символа — это чаще всего вопрос настройки модуля обмена или выбора неверного поля в 1С. Для профессиональной работы с контентом следует использовать хранилище присоединенных файлов и передавать данные через тег Описание в формате HTML. Это гарантирует отсутствие потерь данных и корректное отображение товара в интернет-магазине.

← На главную