Как программно исключить определенные картинки из обмена с 1С-Битрикс?

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

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

Этап 1: Анализ структуры модуля обмена

Для начала нам необходимо понять, как именно 1С собирает данные перед отправкой. Типовой обмен обычно работает через регламентное задание или интерактивный вызов обработки. Чтобы найти нужный участок кода, рекомендуем воспользоваться отладчиком.

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

Этап 2: Поиск процедур формирования пакетов

Проанализируем структуру модуля Б_ОбменССайтомСерверВыгрузкаДанных. Внутри него стоит обратить внимание на функцию СформироватьВременныеТаблицыПоИнформацииОТоварахПакета. Именно здесь происходит первичное накопление данных о номенклатуре, которые впоследствии попадут в XML-файл обмена.

Важным индикатором для поиска является параметр ВыгружатьКартинкиИФайлы. Вы можете использовать поиск по конфигурации (клавиши Ctrl+F), чтобы найти все вхождения этой переменной. В настройках узла обмена Номенклатура -> Товары также может быть предусмотрен флаг, регулирующий поведение обмена, который стоит проверить в первую очередь, прежде чем приступать к написанию кода.

Этап 3: Практические способы реализации фильтрации

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

Способ 1: Использование событий и расширений

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

Пример логики, которую можно реализовать в процедуре:


// Пример псевдокода для фильтрации в расширении
Процедура ПередВыгрузкойКартинки(Картинка, Отказ)
    Если Картинка.Размер > 1024 * 1024 Тогда // Пример условия: не выгружать тяжелые файлы
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

Способ 2: Модификация выборки из регистра сведений

Картинки в 1С чаще всего хранятся в регистре сведений, привязанном к номенклатуре. Если вы нашли запрос, который формирует выборку картинок для выгрузки, вы можете добавить в него условие ГДЕ. Это позволит исключить файлы на этапе сбора данных, что является наиболее производительным методом.

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

  1. Откройте отладчик и дойдите до функции, выполняющей запрос к списку файлов (присоединенных файлов).
  2. Добавьте в текст запроса условие фильтрации. Например, по реквизиту ПометкаНаУдаление или по вашему собственному признаку (например, НеВыгружатьНаСайт).
  3. Убедитесь, что после изменения кода вы не нарушили целостность XML-файла формата CommerceML.

Этап 4: Важные рекомендации по отладке

При отладке обмена всегда учитывайте, что он часто выполняется в фоновом режиме. Обычная точка остановки в конфигураторе может не сработать, если вы не включили настройку Отладка фоновых заданий в меню Отладка -> Подключение. Установите галочку напротив пункта Автоматически подключать фоновые задания.

Также помните о последствиях: если вы просто перестанете выгружать картинку, которая ранее уже была передана на сайт, модуль обмена может интерпретировать это как необходимость удаления данной картинки с сайта. Проверьте настройки модуля 1С-Битрикс: в нем есть опции, определяющие, что делать с данными, которые больше не попадают в текущую выгрузку. Будьте внимательны при тестировании, чтобы случайно не удалить все изображения из базы данных интернет-магазина.

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

← На главную