Как скопировать инфоблок в 1с битрикс

Обновлено: 04.07.2024

Универсальная галерея - модуль для битрикс

Интерфейс экспорта-импорта инфоблоков посредством XML в продуктах 1С-Битрикс выглядит очень просто. Достаточно выбрать инфоблок, файл для загрузки-выгрузки, несколько дополнительных параметров, и казалось бы, дело сделано. Но на деле эта простота является немного обманчивой, и последствия от незнания некоторых аспектов, такие, как, например, загрузка данных не в тот инфоблок при импорте, создание дополнительных свойств вместо загрузки данных в существующие, могут выбить из колеи даже достаточно опытного пользователя или программиста, и заставить его на долгое время забыть об использовании этого мощного инструмента. Я постараюсь рассказать вам об этих аспектах.
[spoiler]
Внешний код

Главная хитрость: идентификация инфоблоков, свойств, разделов, элементов и пр. осуществляется по внешнему коду (XML_ID или EXTERNAL_ID). Внешний код - это код, используемый для синхронизации данных с внешними источниками. По умолчанию, возможность его отображения и редактирования через административный интерфейс выключена. Чтобы включить ее, нужно перейти в настройки модуля "Информационные блоки" (Настройки - Настройки продукта - Настройки модулей) и установить галочку "Показывать код загрузки из внешних источников".


При создании разделов и элементов инфоблоков, если внешний код не указан - он заполняется автоматически значением ID элемента или раздела. Но с инфоблоками и свойствами дело обстоит не так - по умолчанию внешний код пустой, но он создается при первом XML импорте аналогичным способом - заполняется значением ID инфоблока или свойства.

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

В данном примере значение "12" - и есть внешний код инфоблока.

Внешние коды свойств также должны соответствовать инфоблоку-источнику, в противном случае будут созданы новые свойства.

Свойства привязки к элементам и разделам

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

При экспорте файлы, привязанные к элементам инфоблоков, сохраняются в специальной папке с именем, соответствующим имени xml-файла с добавлением "_files".

Если файлов много, то копировать их с одного хостинга на другой при помощи ftp может быть неудобно, к тому же на linux-хостингев одной папке могут находится больше одного файла с одинаковым именем, но отличающимся регистром символов, и при копировании таких файлов в Windows или Mac OS X, могут возникнуть проблемы (мне приходилось не раз сталкиваться с этим).

В таких случаях лучше воспользоваться доступом к командной строке (ssh) для упаковки файлов в архив, например, команда

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

распакует архив в целевой папке.

Для навигации по файловой системе с помощью командной строки используются команды ls - просмотр содержимого текущей папки, и cd folder - вход в папку folder.

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

Читайте также: