Skip to content

Перевел миграции секций инфоблока на XML#188

Open
temi4 wants to merge 1 commit into
andreyryabin:masterfrom
temi4:feature/iblock-section-xml-exchange
Open

Перевел миграции секций инфоблока на XML#188
temi4 wants to merge 1 commit into
andreyryabin:masterfrom
temi4:feature/iblock-section-xml-exchange

Conversation

@temi4

@temi4 temi4 commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Что сделано

Переведено создание миграций для секций инфоблока на XML exchange-формат по аналогии с элементами инфоблока.

Добавлен отдельный IblockSectionExchangeHelper, который:

  • экспортирует секции в iblock_sections.xml;
  • импортирует секции через IblockSectionsImport();
  • конвертирует XML-записи в формат публичного helper-а;
  • сохраняет секции через Iblock()->saveSectionRecord().

Как работает

Новые миграции секций больше не пишут дерево секций inline-массивом в PHP-файл. Вместо этого данные секций сохраняются в exchange XML, а миграция вызывает:

$this->getExchangeManager()
     ->IblockSectionsImport()
     ->setLimit(20)
     ->execute(function ($item) {
         $this->getHelperManager()
              ->Iblock()
              ->saveSectionRecord(
                  $item['iblock_id'],
                  $item['fields']
              );
     });

Секции обновляются и создаются по XML_ID.

Если у секции не заполнен XML_ID, он будет сгенерирован перед экспортом. Родительская секция переносится не по локальному ID, а по section_xml_id.

## Дополнительно

Поддержан перенос пользовательских полей секций:

- обычные значения;
- файлы;
- списки;
- привязка к элементам инфоблока;
- привязка к секциям инфоблока;
- привязка к HL-блокам.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant